<?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>43779</bug_id>
          
          <creation_ts>2010-08-10 02:50:30 -0700</creation_ts>
          <short_desc>RenderImage::imageChanged invalidates wrong area</short_desc>
          <delta_ts>2017-08-07 12:31:20 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43789</dependson>
          <blocked>47430</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>manian</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262581</commentid>
    <comment_count>0</comment_count>
      <attachid>63994</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-10 02:50:30 -0700</bug_when>
    <thetext>Created attachment 63994
testcase

When you change the url of an SVG image a wrong area will be invalidated:

When you open the attached testcase you see an red rect on position 100,100 with the size 50,50. This is an image. When you click on it, it will change the url of the image. Now the area at 100,100 with the size 50,50 changed. You get the correct invalidate rect at ChromeClient::invalidateContentsAndWindow, but addional the rect(0,0,50,50). This requests an unneeded area for repaint.

The wrong rect is generated at http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderImage.cpp?rev=64272#L179.
Is it correct that this code is called for SVG?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262610</commentid>
    <comment_count>1</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-10 03:57:14 -0700</bug_when>
    <thetext>Good catch, as RenderSVGImage::imageChanged(), repaints on its own, I think it&apos;s not needed.
Note, this bug also affects mac, when using &quot;Quartz Debug&quot; it&apos;s clearly visible.

The real problem is that RenderSVGImage inherits from RenderImage, instead it should be a RenderSVGModelObject (like RenderSVGContainer, RenderPath, etc..) to integrate better with SVGs render tree. The current design is ineffecient.

It&apos;s straightforward to fix, Patrick, do you have interesst to fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262611</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-10 04:04:48 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Note, this bug also affects mac, when using &quot;Quartz Debug&quot; it&apos;s clearly visible.
I had the problem on WinCE where it caused big performance problems. :-/

&gt; It&apos;s straightforward to fix, Patrick, do you have interesst to fix this?
Of course. I didn&apos;t know the correct fix.

I&apos;ll try to fix it and post a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262618</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-10 04:20:01 -0700</bug_when>
    <thetext>(In reply to comment #2) 
&gt; I&apos;ll try to fix it and post a patch.

Excellent. I&apos;d try to mimic RenderImage as much as possible.
You have to manage loading of the actual image on your own

If you grep for &quot;m_cachedImage&quot; in RenderImage, you see what you have to add to RenderSVGImage, besides letting it inherit from RenderSVGModelObject.

A general advice is to compare against already &quot;correct&quot; SVG renderers like RenderSVGContainer, RenderPath, how they handle layout/paint. What functions you have to implement etc..

If you run in trouble, just ask and/or post patches for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262735</commentid>
    <comment_count>4</comment_count>
      <attachid>64021</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-10 10:05:15 -0700</bug_when>
    <thetext>Created attachment 64021
Possible Patch (not working)

With this patch I don&apos;t get any updates on the screan. Only the inital state is drawn. Can you give me a hint about what is missing? THX!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263226</commentid>
    <comment_count>5</comment_count>
      <attachid>64021</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-11 06:54:47 -0700</bug_when>
    <thetext>Comment on attachment 64021
Possible Patch (not working)

Good first start, before I comment on your question, some issues:
Following RenderSVGImage methods can be removed now:
clippedOverflowRectForRepaint, it&apos;s already implemented by RenderSVGModelObject
computeRectForRepaint (ditto)
mapLocalToContainer (ditto)
absoluteRects (ditto)
absoluteQuads (ditto)
destroy (ditto)
styleDidChange (ditto)
updateFromElement (ditto)
nodeAtPoint (ditto)

This will make the code more readable :-)

Regarding your question, what do you mean exactly? Can you elaborate more? Images get drawn? Moving/animating/... images don&apos;t repaint correctly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263237</commentid>
    <comment_count>6</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-11 07:15:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 64021 [details])
&gt; Following RenderSVGImage methods can be removed now:
&gt; styleDidChange (ditto)
&gt; updateFromElement (ditto)
They don&apos;t exist.
I think we can remove addFocusRingRects and nodeAtFloatPoint too.

&gt; Regarding your question, what do you mean exactly?
The clickevent in the attached testcase does not work.

&gt; Images get drawn?
The inital state of the image is drawn correctly. 

&gt;Moving/animating/... images don&apos;t repaint correctly?
I didn&apos;t try, but I think so. I can try later...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263274</commentid>
    <comment_count>7</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-11 09:15:40 -0700</bug_when>
    <thetext>I found the problem in the meantime:
ImageLoader checks for isImage(): http://trac.webkit.org/browser/trunk/WebCore/loader/ImageLoader.cpp?rev=62664#L229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263461</commentid>
    <comment_count>8</comment_count>
      <attachid>64162</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-11 14:45:11 -0700</bug_when>
    <thetext>Created attachment 64162
Patch #1 (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263463</commentid>
    <comment_count>9</comment_count>
      <attachid>64163</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-11 14:46:16 -0700</bug_when>
    <thetext>Created attachment 64163
Patch #2 (remove Remove RenderImage inheritance)

depends on Patch #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263464</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 14:50:35 -0700</bug_when>
    <thetext>Attachment 64162 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderImageResource.h:54:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 1 in 14 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>263475</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 15:13:59 -0700</bug_when>
    <thetext>Attachment 64163 did not build on gtk:
Build output: http://queues.webkit.org/results/3735078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263478</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-11 15:18:50 -0700</bug_when>
    <thetext>Attachment 64163 did not build on qt:
Build output: http://queues.webkit.org/results/3736070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263506</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 16:09:24 -0700</bug_when>
    <thetext>Attachment 64163 did not build on chromium:
Build output: http://queues.webkit.org/results/3749061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263616</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 23:20:17 -0700</bug_when>
    <thetext>Attachment 64163 did not build on win:
Build output: http://queues.webkit.org/results/3762073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263624</commentid>
    <comment_count>15</comment_count>
      <attachid>64162</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-11 23:59:21 -0700</bug_when>
    <thetext>Comment on attachment 64162
Patch #1 (add RenderImageResource)

Excellent idea.

r-, because of following issues:
WebCore/ChangeLog:8
 +          Move the CachedImage from RenderImage into a separate class.
The ChangeLog should contain more information, especially the why of this change.
You should also explicitely name RenderImageResource here, so it&apos;s clear where the code moved.

WebCore/loader/ImageLoader.cpp:229
 +      if (RenderObject* renderer = m_element-&gt;renderer()) {
Change to early return style. if renderrer is not existant, just return 0.

WebCore/loader/ImageLoader.cpp:247
 +      if (RenderImageResource* imageResource = renderImageResource()) {
Same here.

WebCore/rendering/RenderImage.cpp:61
 +      m_cachedImage = RenderImageResource::create(this);
No need to move this into the constructor body.

WebCore/rendering/RenderImage.cpp:70
 +      m_cachedImage.clear();
This is automatically done IIRC. Please double check, but I think it can be removed.

WebCore/rendering/RenderImage.h:46
 +      void setCachedImage(CachedImage* image) { m_cachedImage-&gt;setCachedImage(image); }
Who calls these methods? It seems to me, all callers of these functions could now operate on RenderImageResource. Please check twice.

WebCore/rendering/RenderImage.h:47
 +      CachedImage* cachedImage() { return m_cachedImage-&gt;cachedImage(); }
Ditto.

WebCore/rendering/RenderImage.h:49
 +      virtual bool hasImage() const { return m_cachedImage-&gt;hasImage(); }
Ditto.

WebCore/rendering/RenderImage.h:54
 +      virtual Image* image(int /* width */ = 0, int /* height */ = 0) { return m_cachedImage-&gt;image(); }
Ditto.

WebCore/rendering/RenderImage.h:55
 +      virtual bool errorOccurred() const { return m_cachedImage-&gt;errorOccurred(); }
Ditto.

It should be possible to move all these virtual methods away from RenderObject now, no?WebCore/rendering/RenderImage.h:86
 +      virtual bool usesImageContainerSize() const { return m_cachedImage-&gt;usesImageContainerSize(); }
Same for the bunch of methods in the next lines.

WebCore/rendering/RenderImageResource.cpp:35
 +  PassOwnPtr&lt;RenderImageResource&gt; RenderImageResource::create(RenderObject* render)
You can move this inline into the header.

WebCore/rendering/RenderImageResource.cpp:41
 +      : m_render(render)
I&apos;d prefer &quot;m_renderer&quot; here.

WebCore/rendering/RenderImageResource.cpp:61
 +      if (m_cachedImage) {
You can early return here, if m_cachedImage is 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263627</commentid>
    <comment_count>16</comment_count>
      <attachid>64163</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 00:03:26 -0700</bug_when>
    <thetext>Comment on attachment 64163
Patch #2 (remove Remove RenderImage inheritance)

Also some comments:
WebCore/rendering/RenderSVGImage.cpp:51
 +      m_cachedImage = RenderImageResource::create(this);
Can be moved in the initialization list.

WebCore/rendering/RenderSVGImage.cpp:56
 +      m_cachedImage.clear();
Not needed IIRC.

WebCore/rendering/RenderSVGImage.cpp:104
 +                  if (svgStyle-&gt;shapeRendering() == SR_CRISPEDGES)
Is that necessary for images? I don&apos;t think so.

WebCore/rendering/RenderSVGImage.cpp:169
 +      // This empty image may be cached by SVG filter effects which must be invalidated.
That change is not correct, you basically reverted to an older version of the imageChanged version.
The SVGResourcesCache::... call is correct.

WebCore/svg/SVGImageElement.cpp:174
 +      if (RenderSVGImage* imageObj = toRenderSVGImage(renderer())) {
Change to early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263635</commentid>
    <comment_count>17</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 00:27:07 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 64162 [details])
&gt; WebCore/rendering/RenderImage.cpp:61
&gt;  +      m_cachedImage = RenderImageResource::create(this);
&gt; No need to move this into the constructor body.
Is it safe to use this in initialization list? Some compiler throw warnings?

&gt; WebCore/rendering/RenderImage.h:46
&gt;  +      void setCachedImage(CachedImage* image) { m_cachedImage-&gt;setCachedImage(image); }
&gt; Who calls these methods? It seems to me, all callers of these functions could now operate on RenderImageResource. Please check twice.
They are called on all other places where images are used (e.g. Pasteboard, DragDrop, ...)
If you prefere it that way, I&apos;ll change it.

(In reply to comment #16)
&gt; (From update of attachment 64163 [details])
&gt; Also some comments:
&gt; WebCore/rendering/RenderSVGImage.cpp:51
&gt;  +      m_cachedImage = RenderImageResource::create(this);
&gt; Can be moved in the initialization list.
Same as in RenderImage.

&gt; WebCore/rendering/RenderSVGImage.cpp:104
&gt;  +                  if (svgStyle-&gt;shapeRendering() == SR_CRISPEDGES)
&gt; Is that necessary for images? I don&apos;t think so.
I copied fomr RenderPath. I&apos;ll remove it.

&gt; WebCore/rendering/RenderSVGImage.cpp:169
&gt;  +      // This empty image may be cached by SVG filter effects which must be invalidated.
&gt; That change is not correct, you basically reverted to an older version of the imageChanged version.
&gt; The SVGResourcesCache::... call is correct.
I think that happened when I rebased to head. I&apos;ll check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263637</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 00:31:50 -0700</bug_when>
    <thetext>The RenderImageResource is missing in the xcode project files. Is there a way to add them without having a mac? I din&apos;t find something. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263640</commentid>
    <comment_count>19</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 00:58:41 -0700</bug_when>
    <thetext>Are you on IRC in the next hours? If yes, I can modify the Xcode proj, and send the difffs to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263648</commentid>
    <comment_count>20</comment_count>
      <attachid>64192</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 01:20:58 -0700</bug_when>
    <thetext>Created attachment 64192
Xcode changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263706</commentid>
    <comment_count>21</comment_count>
      <attachid>64206</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 04:15:43 -0700</bug_when>
    <thetext>Created attachment 64206
Patch #1b (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263721</commentid>
    <comment_count>22</comment_count>
      <attachid>64206</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 04:50:50 -0700</bug_when>
    <thetext>Comment on attachment 64206
Patch #1b (add RenderImageResource)

r-, some comments:

WebCore/ChangeLog:8
 +          At the moment RenderSVGImage inherit from RenderImage, which causes wrong repainting.
At the moment RenderSVGImage inherits from RenderImage, which makes non-SVG compatible assumptions about repainting, and thus has to be fixed to inherit from RenderSVGModelObject.

WebCore/ChangeLog:10
 +          This patch move the CachedImage from RenderImage into a separate class.
s/move/moves/

WebCore/rendering/HitTestResult.cpp:250
 +          if (renderImageResource-&gt;cachedImage() &amp;&amp; !renderImageResource-&gt;cachedImage()-&gt;errorOccurred())
Please cache the result of renderImageResource-&gt;cachedImage() in a local variable, to avoid calling it three times.

WebCore/rendering/RenderImage.cpp:60
 +      , m_cachedImage(RenderImageResource::create(this))
How about renaming m_cachedImage to m_imageResource to clarify.

WebCore/rendering/RenderImage.cpp:214
 +          Image *image = m_cachedImage-&gt;image();
Image*.

WebCore/rendering/RenderImage.cpp:231
 +              if (m_cachedImage-&gt;errorOccurred() &amp;&amp; !image-&gt;isNull() &amp;&amp; (usableWidth &gt;= image-&gt;width()) &amp;&amp; (usableHeight &gt;= image-&gt;height())) {
Superfluous braces (usableWidth... and (usableHeight.

WebCore/rendering/RenderImage.cpp: 
 +          Image* img = image(cWidth, cHeight);
This doesn&apos;t look right. RenderImage::image() doesn&apos;t use the passed width/height parameters, but RenderImageGeneratedContent does (which inherits from RenderImage). I bet this change will break tests.

WebCore/rendering/RenderImage.cpp: 
 +      Image* img = image(rect.width(), rect.height());
Ditto.

WebCore/rendering/RenderImage.cpp: 
 +      context-&gt;drawImage(image(rect.width(), rect.height()), style()-&gt;colorSpace(), rect, compositeOperator, useLowQualityScaling);
Ditto.

WebCore/rendering/RenderImageResource.h:54
 +      void setImageContainerSize(const IntSize&amp; size) const { if (m_cachedImage) m_cachedImage-&gt;setImageContainerSize(size); }
This needs to go in two lines, otherwhise it will raise a style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263776</commentid>
    <comment_count>23</comment_count>
      <attachid>64217</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 06:33:43 -0700</bug_when>
    <thetext>Created attachment 64217
Xcode changes - part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263894</commentid>
    <comment_count>24</comment_count>
      <attachid>64241</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 11:31:00 -0700</bug_when>
    <thetext>Created attachment 64241
Patch #1c (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263930</commentid>
    <comment_count>25</comment_count>
      <attachid>64249</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 13:14:29 -0700</bug_when>
    <thetext>Created attachment 64249
Patch #1d (add RenderImageResource)

Rebased to head</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263935</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-12 13:21:19 -0700</bug_when>
    <thetext>Attachment 64249 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderImageResource.cpp:91:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 32 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>263940</commentid>
    <comment_count>27</comment_count>
      <attachid>64254</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 13:27:24 -0700</bug_when>
    <thetext>Created attachment 64254
Patch #1e (add RenderImageResource)

fixed wrong include</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263943</commentid>
    <comment_count>28</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 13:30:09 -0700</bug_when>
    <thetext>Attachment 64249 did not build on qt:
Build output: http://queues.webkit.org/results/3730114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263955</commentid>
    <comment_count>29</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 13:54:38 -0700</bug_when>
    <thetext>Attachment 64254 did not build on qt:
Build output: http://queues.webkit.org/results/3765098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263966</commentid>
    <comment_count>30</comment_count>
      <attachid>64259</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 14:12:03 -0700</bug_when>
    <thetext>Created attachment 64259
Patch #1f (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263969</commentid>
    <comment_count>31</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 14:19:23 -0700</bug_when>
    <thetext>Attachment 64259 did not build on qt:
Build output: http://queues.webkit.org/results/3710112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263990</commentid>
    <comment_count>32</comment_count>
      <attachid>64265</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 14:38:48 -0700</bug_when>
    <thetext>Created attachment 64265
Patch #1g (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263993</commentid>
    <comment_count>33</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 14:48:29 -0700</bug_when>
    <thetext>Attachment 64265 did not build on qt:
Build output: http://queues.webkit.org/results/3726100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264023</commentid>
    <comment_count>34</comment_count>
      <attachid>64272</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-12 15:16:49 -0700</bug_when>
    <thetext>Created attachment 64272
Patch #1h (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264124</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-12 19:08:56 -0700</bug_when>
    <thetext>Attachment 64272 did not build on gtk:
Build output: http://queues.webkit.org/results/3724115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264210</commentid>
    <comment_count>36</comment_count>
      <attachid>64272</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-12 23:58:14 -0700</bug_when>
    <thetext>Comment on attachment 64272
Patch #1h (add RenderImageResource)

Interessting, didn&apos;t think about the possibility to remove RenderImageGeneratedContent, with that removal your two new RenderImageResources classes make a lot more sense.
Though I still have a suggestion. I&apos;d love to have an abstract RenderImageResource (renamed to RenderImageSource) class, and two other classes inheriting from it.

RenderImageSource (contains pure-virtual image/errorOccurred, etc.. functions)
RenderCachedImageSource (inherits from RenderImageSource)
RenderStyleImageSource (ditto)

The problem is that you&apos;re still storing the CachedResourceHandle&lt;CachedImage&gt; for RenderImageResourceStyleImage through inheritance, which wastes memory, as it&apos;s unused.
Your approach is fine in general, I&apos;m just asking for one more class, to save memory, and some renames.

Do you agree with the idea?
I have another idea to avoid the toRenderFoo(renderer())-&gt;imageResource() dance, and would like to discuss that on IRC.

P.S. ClipboardGtk has problems, see gtk build output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264215</commentid>
    <comment_count>37</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-13 00:17:40 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 64272 [details])
&gt; Interessting, didn&apos;t think about the possibility to remove RenderImageGeneratedContent, with that removal your two new RenderImageResources classes make a lot more sense.
:-)

&gt; The problem is that you&apos;re still storing the CachedResourceHandle&lt;CachedImage&gt; for RenderImageResourceStyleImage through inheritance, which wastes memory, as it&apos;s unused.
I&apos;m not sure if it&apos;s realy unused: RenderImageResourceStyleImage will call setCachedImage only if StyleImage::isCachedImage() is true. Otherwise the default CachedImage will be used.
I don&apos;t know the code exactly to say if that&apos;s correct. I only moved it from RenderImageGeneratedContent. ;-)

&gt; Do you agree with the idea?
No problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264216</commentid>
    <comment_count>38</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-13 00:20:44 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; (From update of attachment 64272 [details] [details])
&gt; &gt; Interessting, didn&apos;t think about the possibility to remove RenderImageGeneratedContent, with that removal your two new RenderImageResources classes make a lot more sense.
&gt; :-)
&gt; 
&gt; &gt; The problem is that you&apos;re still storing the CachedResourceHandle&lt;CachedImage&gt; for RenderImageResourceStyleImage through inheritance, which wastes memory, as it&apos;s unused.
&gt; I&apos;m not sure if it&apos;s realy unused: RenderImageResourceStyleImage will call setCachedImage only if StyleImage::isCachedImage() is true. Otherwise the default CachedImage will be used.
&gt; I don&apos;t know the code exactly to say if that&apos;s correct. I only moved it from RenderImageGeneratedContent. ;-)

Hah, that&apos;s just true, I overlooked that fact, so it&apos;s fine as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264260</commentid>
    <comment_count>39</comment_count>
      <attachid>64315</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-13 02:42:42 -0700</bug_when>
    <thetext>Created attachment 64315
Patch #1i (add RenderImageResource)

Added missing gtk change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264297</commentid>
    <comment_count>40</comment_count>
      <attachid>64322</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-13 05:16:17 -0700</bug_when>
    <thetext>Created attachment 64322
Patch #2b (remove Remove RenderImage inheritance)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268891</commentid>
    <comment_count>41</comment_count>
      <attachid>65341</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-24 16:34:15 -0700</bug_when>
    <thetext>Created attachment 65341
Patch #1j (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269178</commentid>
    <comment_count>42</comment_count>
      <attachid>65341</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-25 05:31:04 -0700</bug_when>
    <thetext>Comment on attachment 65341
Patch #1j (add RenderImageResource)

Hi Patrick,

unfortunately there are still some issues, that I missed before:

WebCore/rendering/RenderImageResource.cpp:36
 +  PassOwnPtr&lt;RenderImageResource&gt; RenderImageResource::create(RenderObject* renderer, StyleImage* styleImage)
This solution is not a good idea, the RenderImageResource::create method, should only ever created a RenderImageResource object, not a RenderImageResourceStyleImage.
Otherwhise the design is pretty confusing. That in turn also means RenderImage shouldn&apos;t receive the new StyleImage* constructor parameter, I think its better if it would take a PassOwnPtr&lt;RenderImageResource&gt; that can be stored as m_imageResource member variable.

The idea would look like this:

WebCore/rendering/RenderObject.cpp:110
 +          RenderImage* image = new (arena) RenderImage(node, contentData-&gt;image());
RenderImage* image = new (arena) RenderImage(node, RenderImageResourceStyleImage::create(contentData-&gt;image())

WebCore/rendering/RenderObjectChildList.cpp:433
 +                  renderer = new (owner-&gt;renderArena()) RenderImage(owner-&gt;document(), content-&gt;image()); // anonymous object
renderer  = new (owner-&gt;renderArena()) RenderImage(owner-&gt;document(), RenderImageResourceStyleImage::create(content-&gt;image()));

You&apos;d also have to change the callsites that create a regular RenderImage object:
html/HTMLEmbedElement.cpp:        return new (arena) RenderImage(this);
html/HTMLImageElement.cpp:     return new (arena) RenderImage(this);
html/HTMLInputElement.cpp:        return new (arena) RenderImage(this);
html/HTMLObjectElement.cpp:        return new (arena) RenderImage(this);
wml/WMLImageElement.cpp:    return new (arena) RenderImage(this);

adding a RenderImageResource::create() argument.

I think this solution would be cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269189</commentid>
    <comment_count>43</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-25 05:52:33 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 65341 [details])
&gt; Hi Patrick,
&gt; 
&gt; unfortunately there are still some issues, that I missed before:
&gt; 
&gt; WebCore/rendering/RenderImageResource.cpp:36
&gt;  +  PassOwnPtr&lt;RenderImageResource&gt; RenderImageResource::create(RenderObject* renderer, StyleImage* styleImage)
&gt; This solution is not a good idea, the RenderImageResource::create method, should only ever created a RenderImageResource object, not a RenderImageResourceStyleImage.
&gt; Otherwhise the design is pretty confusing. That in turn also means RenderImage shouldn&apos;t receive the new StyleImage* constructor parameter, I think its better if it would take a PassOwnPtr&lt;RenderImageResource&gt; that can be stored as m_imageResource member variable.

RenderImageResource::create needs a RenderObject* as a first parameter! Where should I get it from, when I use it in the constructor of RenderImage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269205</commentid>
    <comment_count>44</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-25 06:20:07 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; (From update of attachment 65341 [details] [details])
&gt; &gt; Hi Patrick,
&gt; &gt; 
&gt; &gt; unfortunately there are still some issues, that I missed before:
&gt; &gt; 
&gt; &gt; WebCore/rendering/RenderImageResource.cpp:36
&gt; &gt;  +  PassOwnPtr&lt;RenderImageResource&gt; RenderImageResource::create(RenderObject* renderer, StyleImage* styleImage)
&gt; &gt; This solution is not a good idea, the RenderImageResource::create method, should only ever created a RenderImageResource object, not a RenderImageResourceStyleImage.
&gt; &gt; Otherwhise the design is pretty confusing. That in turn also means RenderImage shouldn&apos;t receive the new StyleImage* constructor parameter, I think its better if it would take a PassOwnPtr&lt;RenderImageResource&gt; that can be stored as m_imageResource member variable.
&gt; 
&gt; RenderImageResource::create needs a RenderObject* as a first parameter! Where should I get it from, when I use it in the constructor of RenderImage?

Remove the RenderObject* paramater from the constructor, and add an initialize(RenderObject*) method, that can be called from the RenderImage constructor, passing &quot;this&quot; to the RenderImageResource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269266</commentid>
    <comment_count>45</comment_count>
      <attachid>65423</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-25 08:52:47 -0700</bug_when>
    <thetext>Created attachment 65423
Patch #1k (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269268</commentid>
    <comment_count>46</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-25 09:02:02 -0700</bug_when>
    <thetext>Attachment 65423 did not build on qt:
Build output: http://queues.webkit.org/results/3806073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269275</commentid>
    <comment_count>47</comment_count>
      <attachid>65425</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-25 09:10:33 -0700</bug_when>
    <thetext>Created attachment 65425
Patch #1l (add RenderImageResource)

(In reply to comment #46)
&gt; Attachment 65423 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/3806073

Ooops, missed a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269772</commentid>
    <comment_count>48</comment_count>
      <attachid>65425</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-26 01:31:19 -0700</bug_when>
    <thetext>Comment on attachment 65425
Patch #1l (add RenderImageResource)

Almost there, some comments left:

WebCore/rendering/RenderImageResource.cpp:40
 +      ASSERT(m_render);
The assertion is now wrong and has to be removed (also it should have said m_renderer :-)

WebCore/rendering/RenderImageResource.h:31
 +  #include &quot;Noncopyable.h&quot;
It&apos;s include &lt;wtf/Noncopyable.h&gt; - this one won&apos;t compile on mac.

WebCore/rendering/RenderImageResource.h:43
 +      static PassOwnPtr&lt;RenderImageResource&gt; create() { return adoptPtr(new RenderImageResource()); }
The WebKit style would be to make multiple lines here:
static PassOwnPtr&lt;RenderImageResource&gt; create()
{
    return adoptPtr(new RenderImageResource);
}

You should also omit the () braces.

WebCore/rendering/RenderImageResourceStyleImage.h:40
 +      static PassOwnPtr&lt;RenderImageResource&gt; create(StyleImage* styleImage) { return adoptPtr(new RenderImageResourceStyleImage(styleImage)); }
Same as the other create function, please use multiple lines, and also add a newline between the virtual dtor and the create function.

WebCore/rendering/RenderImageResourceStyleImage.h:52
 +      virtual WrappedImagePtr imagePtr() const { return m_styleImage ? m_styleImage-&gt;data() : 0; }
Why are you checking m_styleImage here? The constructor already ASSERTS the object is available.

WebCore/rendering/RenderImageResourceStyleImage.cpp:43
 +      m_styleImage-&gt;addClient(renderer());
This is not going to work. renderer() is 0 at this point, initialize has to be called first.
So you also need an initialize function here, a virtual one, that executes this code.

If you have further problems, let&apos;s discuss on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269822</commentid>
    <comment_count>49</comment_count>
      <attachid>65547</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-26 04:48:16 -0700</bug_when>
    <thetext>Created attachment 65547
Patch #1m (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269824</commentid>
    <comment_count>50</comment_count>
      <attachid>65547</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-26 04:58:38 -0700</bug_when>
    <thetext>Comment on attachment 65547
Patch #1m (add RenderImageResource)

WebCore/rendering/RenderImageResource.cpp:31
 +  #include &quot;RenderImageResourceStyleImage.h&quot;
This include is unncessary.

WebCore/rendering/RenderImageResource.cpp:44
 +      if (m_cachedImage)
You should also ASSERT(m_renderer) here.

WebCore/rendering/RenderImageResource.cpp:87
 +      if (!m_cachedImage)
And here (before the if).

WebCore/rendering/RenderImageResource.h:31
 +  #include &quot;StyleImage.h&quot;
Superfluous.

WebCore/rendering/RenderImageResource.h:37
 +  class StyleImage;
Superflous.


WebCore/rendering/RenderImageResource.h:69
 +      RenderObject* renderer() { return m_renderer; }
I&apos;d remove these accesor, and rather make m_renderer protected.

WebCore/rendering/RenderImageResourceStyleImage.cpp:47
 +      m_styleImage-&gt;removeClient(renderer());
Just use m_renderer here, once it&apos;s protected.

WebCore/rendering/RenderImageResourceStyleImage.cpp:53
 +      m_styleImage-&gt;addClient(renderer());
Just use the passed newRenderer here.

It&apos;s a pity you can&apos;t land on your own yet, otherwhise I&apos;d give r+.
Please fix and upload a new version again, that I can r+/cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269829</commentid>
    <comment_count>51</comment_count>
      <attachid>65549</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-26 05:18:17 -0700</bug_when>
    <thetext>Created attachment 65549
Patch #1n (add RenderImageResource)

(In reply to comment #50)
&gt; WebCore/rendering/RenderImageResource.h:31
&gt;  +  #include &quot;StyleImage.h&quot;
&gt; Superfluous.
No, WrappedImagePtr is defined at StyleImage.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269840</commentid>
    <comment_count>52</comment_count>
      <attachid>65549</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-26 05:59:10 -0700</bug_when>
    <thetext>Comment on attachment 65549
Patch #1n (add RenderImageResource)

Looks good to me. Let&apos;s see if cq likes it too :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269849</commentid>
    <comment_count>53</comment_count>
      <attachid>65549</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-26 06:27:35 -0700</bug_when>
    <thetext>Comment on attachment 65549
Patch #1n (add RenderImageResource)

Rejecting patch 65549 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
ld/Debug/WebKit.build/Objects-normal/i386/WebNSPasteboardExtras.o /Users/eseidel/Projects/CommitQueue/WebKit/mac/Misc/WebNSPasteboardExtras.mm normal i386 objective-c++ com.apple.compilers.gcc.4_2
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebKit.build/Debug/WebKit.build/Objects-normal/i386/WebNSAttributedStringExtras.o /Users/eseidel/Projects/CommitQueue/WebKit/mac/Misc/WebNSAttributedStringExtras.mm normal i386 objective-c++ com.apple.compilers.gcc.4_2
(2 failures)


Full output: http://queues.webkit.org/results/3710725</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269886</commentid>
    <comment_count>54</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-26 08:09:01 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 65549 [details])
&gt; Rejecting patch 65549 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; ld/Debug/WebKit.build/Objects-normal/i386/WebNSPasteboardExtras.o /Users/eseidel/Projects/CommitQueue/WebKit/mac/Misc/WebNSPasteboardExtras.mm normal i386 objective-c++ com.apple.compilers.gcc.4_2
&gt;     Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebKit.build/Debug/WebKit.build/Objects-normal/i386/WebNSAttributedStringExtras.o /Users/eseidel/Projects/CommitQueue/WebKit/mac/Misc/WebNSAttributedStringExtras.mm normal i386 objective-c++ com.apple.compilers.gcc.4_2
&gt; (2 failures)
&gt; 
Ouch, RenderImageResource needs to be marked &quot;PRIVATE&quot; in the Xcode project file.
I guess you don&apos;t have a mac around to do that, Patrick?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269888</commentid>
    <comment_count>55</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-26 08:10:25 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; Ouch, RenderImageResource needs to be marked &quot;PRIVATE&quot; in the Xcode project file.
&gt; I guess you don&apos;t have a mac around to do that, Patrick?
no, sorry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270490</commentid>
    <comment_count>56</comment_count>
      <attachid>65714</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-27 07:33:05 -0700</bug_when>
    <thetext>Created attachment 65714
Patch #1o (add RenderImageResource)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270491</commentid>
    <comment_count>57</comment_count>
      <attachid>65714</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-27 07:37:03 -0700</bug_when>
    <thetext>Comment on attachment 65714
Patch #1o (add RenderImageResource)

As discussed on IRC, this approach is fine. The only drawback is the addition of one additional pointer, compared to the old solution -- but I think it&apos;s acceptable, given the higher level of abstraction it gives us.
Note: I ran all tests on Leopard locally, and it works just fine.

Landing for paroga.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270509</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 08:27:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66223 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270600</commentid>
    <comment_count>59</comment_count>
      <attachid>65735</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-27 11:12:56 -0700</bug_when>
    <thetext>Created attachment 65735
Patch #2c (remove Remove RenderImage inheritance)

rebased to head</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270604</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 11:15:26 -0700</bug_when>
    <thetext>Attachment 65735 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderSVGImage.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 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>270609</commentid>
    <comment_count>61</comment_count>
      <attachid>65739</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-27 11:18:44 -0700</bug_when>
    <thetext>Created attachment 65739
Patch #2d (remove Remove RenderImage inheritance)

fixed include order</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271901</commentid>
    <comment_count>62</comment_count>
      <attachid>66010</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-30 21:02:26 -0700</bug_when>
    <thetext>Created attachment 66010
Patch #2e (remove Remove RenderImage inheritance)

rebased to head</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272786</commentid>
    <comment_count>63</comment_count>
      <attachid>66208</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-01 06:55:40 -0700</bug_when>
    <thetext>Created attachment 66208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272787</commentid>
    <comment_count>64</comment_count>
      <attachid>66208</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-09-01 06:58:53 -0700</bug_when>
    <thetext>Comment on attachment 66208
Patch

Niko also fixed some suggestion, like better name for imageElt. So r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272788</commentid>
    <comment_count>65</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-01 07:02:16 -0700</bug_when>
    <thetext>Landed in r66599.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282342</commentid>
    <comment_count>66</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-21 09:08:07 -0700</bug_when>
    <thetext>We&apos;ve had two null m_imageResource crashes since this landed (bug 46140, bug 46120). How many more are lurking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282797</commentid>
    <comment_count>67</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-22 00:20:35 -0700</bug_when>
    <thetext>(In reply to comment #66)
&gt; We&apos;ve had two null m_imageResource crashes since this landed (bug 46140, bug 46120). How many more are lurking?

Sorry, but we obviously had no tests covering this, yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291196</commentid>
    <comment_count>68</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-07 12:48:13 -0700</bug_when>
    <thetext>We ran into another null imageResource crash involving the CSS content when the image is cached. Filing a new bug about it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291483</commentid>
    <comment_count>69</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-08 00:33:09 -0700</bug_when>
    <thetext>(In reply to comment #68)
&gt; We ran into another null imageResource crash involving the CSS content when the image is cached. Filing a new bug about it soon.

Ouch, I&apos;m happy to help with it, unless you already have a solution.
The only benefit is that we&apos;ll have better test coverage for these things soon, so they never come back...

Still I&apos;m sorry, about the impact of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291860</commentid>
    <comment_count>70</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-10-08 14:27:34 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=47430 to track the crash Darin mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336085</commentid>
    <comment_count>71</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-07 12:31:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/33758917&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63994</attachid>
            <date>2010-08-10 02:50:30 -0700</date>
            <delta_ts>2010-09-01 06:55:40 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>image.svg</filename>
            <type>image/svg+xml</type>
            <size>3105</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgb25sb2Fk
PSJzZXQoKSI+Cgk8aW1hZ2Ugd2lkdGg9IjUwIiB4PSIxMDAiIHk9IjEwMCIgaGVpZ2h0PSI1MCIg
eGxpbms6aHJlZj0ibGltZS5wbmciIGlkPSJlMCIgb25jbGljaz0ic2V0KCkiLz4KCTxzY3JpcHQg
dHlwZT0idGV4dC9lY21hc2NyaXB0Ij48IVtDREFUQVsKdmFyIHZhbHVlID0gZmFsc2U7CmZ1bmN0
aW9uIHNldCgpIHsKCXZhbHVlID0gIXZhbHVlOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImUw
Iikuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCAiaHJlZiIs
IHZhbHVlID8KCQkiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFBRUFBQUFCQ0FNQUFBQW95elM3QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4
WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHdu
THBSUEFBQUF3QlFURlJGJTJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBRjRtWlZRQUFBQWx3U0ZsekFBQU93d0FBRHNNQngyJTJCb1pBQUFBQmww
UlZoMFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMalV1TlVtSyUyRk9BQUFBQUtTVVJCVkJo
WFkyQUFBQUFDQUFHajJqMlVBQUFBQUVsRlRrU3VRbUNDIiA6CgkJImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBTUFBQUFveXpTN0FBQUFBWE5T
UjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZB
QUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBd0JRVEZSRlRQOEFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJcTRra1FBQUFBbHdTRmx6
QUFBT3d3QUFEc01CeDIlMkJvWkFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBVUdGcGJuUXVUa1ZVSUhZ
ekxqVXVOVW1LJTJGT0FBQUFBS1NVUkJWQmhYWTJBQUFBQUNBQUdqMmoyVUFBQUFBRWxGVGtTdVFt
Q0MiKTsKfQpdXT48L3NjcmlwdD4KPC9zdmc+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64021</attachid>
            <date>2010-08-10 10:05:15 -0700</date>
            <delta_ts>2010-08-11 14:45:11 -0700</delta_ts>
            <desc>Possible Patch (not working)</desc>
            <filename>test.diff</filename>
            <type>text/plain</type>
            <size>5873</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA0NGI2OGIxLi4wZTBjZTkzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC01LDYgKzUsNyBAQAogICAgIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAg
IENvcHlyaWdodCAoQykgMjAwOSwgR29vZ2xlLCBJbmMuCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5
IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAxMCBQ
YXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTQyLDEyICs0MywzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0lt
YWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQqIGltcGwpCi0gICAgOiBSZW5kZXJJ
bWFnZShpbXBsKQorUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVu
dCogbm9kZSkKKyAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KG5vZGUpCiAgICAgLCBtX25lZWRz
VHJhbnNmb3JtVXBkYXRlKHRydWUpCisgICAgLCBtX2NhY2hlZEltYWdlKDApCiB7CiB9CiAKK1Jl
bmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UoKQoreworICAgIGlmIChtX2NhY2hlZEltYWdl
KQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sK
KyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgbV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOworICAgIGlmIChtX2NhY2hlZElt
YWdlKSB7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAg
aWYgKG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGltYWdlQ2hh
bmdlZChtX2NhY2hlZEltYWdlLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwpAQCAtNjAsMTIgKzgy
LDYgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKICAgICAgICAgbV9uZWVkc1RyYW5z
Zm9ybVVwZGF0ZSA9IGZhbHNlOwogICAgIH0KIAotICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0gICAg
c2V0SGVpZ2h0KGVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDAp
OwotCi0gICAgY2FsY1dpZHRoKCk7Ci0gICAgY2FsY0hlaWdodCgpOwotCiAgICAgLy8gRklYTUU6
IE9wdGltaXplIGNhY2hpbmcgdGhlIHJlcGFpbnQgcmVjdHMuCiAgICAgbV9sb2NhbEJvdW5kcyA9
IEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKGltYWdlKSwgaW1hZ2UtPnkoKS52YWx1ZShpbWFn
ZSksIGltYWdlLT53aWR0aCgpLnZhbHVlKGltYWdlKSwgaW1hZ2UtPmhlaWdodCgpLnZhbHVlKGlt
YWdlKSk7CiAgICAgbV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0ID0gRmxvYXRSZWN0KCk7CkBAIC0x
MDMsNyArMTE5LDggQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCwgaW50KQogICAgIH0KIAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxp
bmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWludE91dGxpbmUocGFp
bnRJbmZvLmNvbnRleHQsIDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICAgICAgcGFpbnRP
dXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBzdGF0aWNfY2FzdDxpbnQ+KG1fbG9jYWxCb3VuZHMu
eCgpKSwgc3RhdGljX2Nhc3Q8aW50PihtX2xvY2FsQm91bmRzLnkoKSksCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KG1fbG9jYWxCb3VuZHMud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4o
bV9sb2NhbEJvdW5kcy5oZWlnaHQoKSkpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3Rv
cmUoKTsKIH0KQEAgLTExMSw3ICsxMjgsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpkZXN0
cm95KCkKIHsKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZUFsbFJlc291cmNlc09m
UmVuZGVyZXIodGhpcyk7Ci0gICAgUmVuZGVySW1hZ2U6OmRlc3Ryb3koKTsKKyAgICBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6ZGVzdHJveSgpOwogfQogCiBib29sIFJlbmRlclNWR0ltYWdlOjpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24g
aGl0VGVzdEFjdGlvbikKQEAgLTE1OSw3ICsxNzYsNiBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHSW1h
Z2U6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QKIAogdm9pZCBSZW5kZXJT
VkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVj
dCogcmVjdCkKIHsKLSAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKGltYWdlLCByZWN0KTsK
ICNpZiBFTkFCTEUoRklMVEVSUykKICAgICAvLyBUaGUgaW1hZ2UgcmVzb3VyY2UgZGVmYXVsdHMg
dG8gbnVsbEltYWdlIHVudGlsIHRoZSByZXNvdXJjZSBhcnJpdmVzLgogICAgIC8vIFRoaXMgZW1w
dHkgaW1hZ2UgbWF5IGJlIGNhY2hlZCBieSBTVkcgZmlsdGVyIGVmZmVjdHMgd2hpY2ggbXVzdCBi
ZSBpbnZhbGlkYXRlZC4KQEAgLTIwMyw2ICsyMTksMTEgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCiAgICAgcXVhZHMuYXBwZW5k
KGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSkpOwogfQogCitJbWFnZSog
UmVuZGVyU1ZHSW1hZ2U6Om51bGxJbWFnZSgpCit7CisgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IGM1NGEzMTAuLmE4NjE5YzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtMyw2ICszLDcgQEAKICAgICBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENv
cHlyaWdodCAoQykgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUsIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5z
dGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw3ICsy
Nyw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUg
IlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKIApAQCAtMzQsMTYgKzM1LDI1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHSW1hZ2VFbGVtZW50OwogCi1jbGFzcyBS
ZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CitjbGFzcyBSZW5kZXJTVkdJbWFn
ZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyU1ZH
SW1hZ2UoU1ZHSW1hZ2VFbGVtZW50Kik7CisgICAgflJlbmRlclNWR0ltYWdlKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgPSB0cnVlOyB9CiAKKyAgICB2b2lkIHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7
CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZS5nZXQoKTsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRJbWFnZTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbWFnZSI7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1
YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAw
KSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJ
bWFnZSgpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQorCiAg
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKICAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxCb3VuZHM7IH0K
QEAgLTYwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7Ci0g
ICAgCisKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAKQEAgLTc3LDYgKzg3LDkg
QEAgcHJpdmF0ZToKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBG
bG9hdFJlY3QgbV9sb2NhbEJvdW5kczsKICAgICBtdXRhYmxlIEZsb2F0UmVjdCBtX2NhY2hlZExv
Y2FsUmVwYWludFJlY3Q7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1f
Y2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOwogfTsKIAogaW5s
aW5lIFJlbmRlclNWR0ltYWdlKiB0b1JlbmRlclNWR0ltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0
KQo=
</data>
<flag name="commit-queue"
          id="52481"
          type_id="3"
          status="-"
          setter="paroga"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64162</attachid>
            <date>2010-08-11 14:45:11 -0700</date>
            <delta_ts>2010-08-12 04:15:43 -0700</delta_ts>
            <desc>Patch #1 (add RenderImageResource)</desc>
            <filename>0001-Patch-1.patch</filename>
            <type>text/plain</type>
            <size>23306</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAzMTZlZDJhLi5lOThhYzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTQsNiArNjE0LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwIFwKKwlyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1MzMyYjRlLi44
ZDBiNzg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTEzNzAsNiArMTM3MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorICAg
IHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJ
bmRpY2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDYzMGVlYjAuLjg5N2ExOWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTAt
MDgtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuZGVySW1hZ2U6OmltYWdl
Q2hhbmdlZCBpbnZhbGlkYXRlcyB3cm9uZyBhcmVhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc3OQorCisgICAgICAgIE1vdmUgdGhlIENhY2hlZElt
YWdlIGZyb20gUmVuZGVySW1hZ2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorCisgICAgICAgICog
QW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAg
KiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjp+UmVuZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldENhY2hlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6aGFzSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6cmVuZGVyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6aXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aXNSZW5k
ZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6dXNlc0ltYWdlQ29udGFp
bmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2V0SW1hZ2VDb250YWlu
ZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUhhc1JlbGF0aXZl
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlSGFzUmVsYXRpdmVI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
dG9SZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQ6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6On5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50OjpzZXRTdHlsZUlt
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRlckltYWdlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6bnVsbEltYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUmVjdCk6CisKIDIw
MTAtMDgtMTEgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAg
ICAgICAgW3d4LCBXZWJET01dIEJ1aWxkIGZpeC4gRml4IGNhbGxiYWNrIHBhcmFtcyBhbmQgV2Vi
Q29yZTo6U3RyaW5nIC0+IFdURjo6U3RyaW5nIGZpeGVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggN2ExNGNiMS4uNWUx
NTFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0yMjU0LDYgKzIyNTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5o
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGEyZmFmNTMuLjIwZjJmNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMjczLDYgKzMyNzMsOCBA
QAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oJywKKyAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJ
bmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwJywKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGJjODdlMjUu
LjJmNTk0NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMTAwMyw2ICsxMDAzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKKyAgICByZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODE1LDYgKzE4MTYsNyBAQCBIRUFERVJTICs9IFwK
ICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBc
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDQ2M2Y1ZDkuLmJjYWM0YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMjkxNjUsNiArMjkxNjUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbmRpY2F0
b3IuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBk
MTY5ZDNlLi5iZjAxOWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMSw2ICszMSwxMyBA
QAogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKKyNlbmRp
ZgorI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2VuZGlmCisK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFyZSBhbGxvY2F0
ZWQgYXMgbWVtYmVycyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50ZXIgY2hlY2sg
d291bGQgYWx3YXlzIGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEzMCwxMSArMTM3LDggQEAg
dm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQogICAgICAg
ICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAo
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2Uo
KSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtMTk1LDExICsxOTksOCBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlz
SW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5k
ZXJlciktPnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291
cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFn
ZVJlc291cmNlLT5yZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpCkBAIC0yMjMsMTkgKzIyNCwzMyBA
QCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiAgICAg
bG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CiB9CiAKLXZvaWQgSW1h
Z2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKCkKK1JlbmRlckltYWdlUmVzb3VyY2UqIEltYWdlTG9h
ZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKIHsKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5p
c0ltYWdlKCkgJiYgIXJlbmRlcmVyLT5pc1ZpZGVvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIFJlbmRlckltYWdlKiBpbWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJl
cik7Ci0gICAgICAgIAorICAgICAgICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworI2lm
IEVOQUJMRShTVkcpCisgICAgICAgIGlmIChyZW5kZXJlci0+aXNTVkdJbWFnZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7
CisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIGlmIChyZW5kZXJlci0+aXNWaWRl
bygpKQorICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJl
c291cmNlKCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBJbWFn
ZUxvYWRlcjo6dXBkYXRlUmVuZGVyZXIoKQoreworICAgIGlmIChSZW5kZXJJbWFnZVJlc291cmNl
KiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKSB7CiAgICAgICAgIC8vIE9u
bHkgdXBkYXRlIHRoZSByZW5kZXJlciBpZiBpdCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYg
d2hhdCB3ZSBoYXZlCiAgICAgICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZl
bnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCiAgICAgICAgIC8vIGNo
YW5nZSBpcyBoYXBwZW5pbmcgYmV0d2VlbiB0d28gaW1hZ2VzLgotICAgICAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpOwog
ICAgICAgICBpZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8
ICFjYWNoZWRJbWFnZSkpCi0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRDYWNoZWRJbWFn
ZShtX2ltYWdlLmdldCgpKTsKKyAgICAgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZElt
YWdlKG1faW1hZ2UuZ2V0KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJk
ZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2Vu
ZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3Vy
Y2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAK
ICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXgg
MjA3MzQ3OS4uNTRlZDEyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTcsOCAr
NTcsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJJbWFnZTo6UmVuZGVy
SW1hZ2UoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUoMCwg
MCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCiB7CisgICAgbV9jYWNoZWRJbWFnZSA9IFJlbmRl
ckltYWdlUmVzb3VyY2U6OmNyZWF0ZSh0aGlzKTsKKwogICAgIHVwZGF0ZUFsdFRleHQoKTsKIAog
ICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwpAQCAtNjYs
MjIgKzY3LDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCiAKIFJlbmRl
ckltYWdlOjp+UmVuZGVySW1hZ2UoKQogewotICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAg
ICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci19Ci0KLXZvaWQgUmVuZGVySW1h
Z2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKLXsKLSAgICBpZiAobV9j
YWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2NhY2hl
ZEltYWdlKQotICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAg
bV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOwotICAgIGlmIChtX2NhY2hlZEltYWdlKSB7Ci0gICAg
ICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKLSAgICAgICAgaWYgKG1fY2FjaGVk
SW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGltYWdlQ2hhbmdlZChtX2NhY2hl
ZEltYWdlLmdldCgpKTsKLSAgICB9CisgICAgbV9jYWNoZWRJbWFnZS5jbGVhcigpOwogfQogCiAv
LyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRk
IHNvbWUgcGFkZGluZy4KQEAgLTEzNSw3ICsxMjEsNyBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFn
ZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQog
CiAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgfHwgaGFzTWFzaygpKQogICAgICAgICBSZW5k
ZXJSZXBsYWNlZDo6aW1hZ2VDaGFuZ2VkKG5ld0ltYWdlLCByZWN0KTsKLSAgICAKKwogICAgIGlm
IChuZXdJbWFnZSAhPSBpbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNDMsOCArMTI5LDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIC8vIFNldCBp
bWFnZSBkaW1lbnNpb25zLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzaXplIG9mIHRoZSBhbHQg
dGV4dC4KICAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBpbWFnZVNpemVDaGFuZ2Vk
ID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChtX2NhY2hlZEltYWdlLmdldCgpKTsKLSAgICAKKyAg
ICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQoY2FjaGVkSW1h
Z2UoKSk7CisKICAgICBib29sIHNob3VsZFJlcGFpbnQgPSB0cnVlOwogCiAgICAgLy8gSW1hZ2Ug
ZGltZW5zaW9ucyBoYXZlIGJlZW4gY2hhbmdlZCwgc2VlIHdoYXQgbmVlZHMgdG8gYmUgZG9uZQpA
QCAtMjAzLDcgKzE4OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICgobmV3SW1hZ2UgPT0gbV9jYWNoZWRJbWFnZSkgJiYg
aGFzTGF5ZXIoKSkgeworICAgIGlmIChuZXdJbWFnZSA9PSBjYWNoZWRJbWFnZSgpICYmIGhhc0xh
eWVyKCkpIHsKICAgICAgICAgLy8gdGVsbCBhbnkgcG90ZW50aWFsIGNvbXBvc2l0aW5nIGxheWVy
cwogICAgICAgICAvLyB0aGF0IHRoZSBpbWFnZSBpcyBkb25lIGFuZCB0aGV5IGNhbiByZWZlcmVu
Y2UgaXQgZGlyZWN0bHkuCiAgICAgICAgIGxheWVyKCktPnJlbmRlcmVyQ29udGVudENoYW5nZWQo
KTsKQEAgLTIxMiwxNSArMTk4LDYgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgIFVOVVNFRF9QQVJBTShuZXdJbWFnZSk7CiAj
ZW5kaWYKIH0KLSAgICAKLXZvaWQgUmVuZGVySW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKLXsKLSAg
ICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigp
OwotICAgICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICByZXBhaW50KCk7Ci0g
ICAgfQotfQogCiB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKQEAgLTUyOSw5ICs1MDYsNCBAQCB2b2lkIFJlbmRl
ckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsK
IH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFn
ZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjM4YTc0OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRl
ckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwyMCArNDEsMTgg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKLSAgICB2b2lkIHNldENh
Y2hlZEltYWdlKENhY2hlZEltYWdlKik7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgSFRNTE1hcEVsZW1l
bnQqIGltYWdlTWFwKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9
CisgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UpIHsgbV9jYWNoZWRJ
bWFnZS0+c2V0Q2FjaGVkSW1hZ2UoaW1hZ2UpOyB9CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsgfQorICAgIFJlbmRl
ckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdl
dCgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRJbWFnZS0+aGFzSW1hZ2UoKTsgfQogCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1l
ckZpcmVkKFRpbWVyPFJlbmRlckltYWdlPiopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBJ
bWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9IDApIHsg
cmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdl
KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisgICAgdmly
dHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9
IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UtPmltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJy
ZWQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gMCk7CiAKQEAgLTg0LDM3ICs4MywzMiBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGNhbGNQcmVmV2lkdGhzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3Qg
eyBpZiAobV9jYWNoZWRJbWFnZSkgbV9jYWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXpl
KHNpemUpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VT
aXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KLSAgICB2aXJ0
dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QgeyBtX2NhY2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2Ut
PmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNp
emUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS0+aW1hZ2VT
aXplKG11bHRpcGxpZXIpOyB9CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLT5jYWNoZWRJbWFnZSgpOyB9CiAKICAgICBp
bnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlv
SGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2UgYXJlIHJl
bmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJ
bWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBhcyB0aGUg
aW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgT3duUHRy
PFJlbmRlckltYWdlUmVzb3VyY2U+IG1fY2FjaGVkSW1hZ2U7CiAKLSAgICBzdGF0aWMgSW1hZ2Uq
IG51bGxJbWFnZSgpOwotICAgIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2Jz
ZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5k
ZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihvYmplY3Qp
OwogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVySW1h
Z2UqPihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudC5jcHAKaW5kZXggMjlkMDUwOC4uYzkyMGNhMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCkBAIC0zMywxOSAr
MzMsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50OjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSogbikKLTogUmVuZGVySW1hZ2Uo
bikKLXt9CisgICAgOiBSZW5kZXJJbWFnZShuKQoreworfQogCiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQ6On5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKQogewotICAgIG1fY2FjaGVk
SW1hZ2UgPSAwOwogICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCiB2
b2lkIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6c2V0U3R5bGVJbWFnZShTdHlsZUltYWdl
KiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgbV9j
YWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihpbWFnZSktPmNhY2hl
ZEltYWdlKCk7CisgICAgICAgIHNldENhY2hlZEltYWdlKHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVk
SW1hZ2UqPihpbWFnZSktPmNhY2hlZEltYWdlKCkpOwogICAgIG1fc3R5bGVJbWFnZSA9IGltYWdl
OwogICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43MzlmNmEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDAwIERp
cmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFu
IFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8
cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBSZW5kZXJJ
bWFnZVJlc291cmNlOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXIpCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlKHJlbmRlcikpOworfQorCitSZW5kZXJJ
bWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVyKQor
ICAgIDogbV9yZW5kZXIocmVuZGVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQoreworICAgIEFT
U0VSVChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJl
c291cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFn
ZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNl
OjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCit7CisgICAgaWYgKG1fY2Fj
aGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NhY2hl
ZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5kZXIpOwor
ICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkgewor
ICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9yZW5kZXIpOworICAgICAgICBpZiAo
bV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgbV9yZW5kZXItPmlt
YWdlQ2hhbmdlZChtX2NhY2hlZEltYWdlLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVy
SW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQoreworICAgIGlmICghbV9jYWNoZWRJbWFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKKwor
ICAgIGlmICghbV9yZW5kZXItPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIG1fcmVuZGVyLT5yZXBh
aW50KCk7Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQorewor
ICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41MTFiZjczCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAg
ICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAg
ICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNv
dXJjZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VfaAorCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIk5v
bmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZSA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgflJlbmRlckltYWdlUmVzb3VyY2Uo
KTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKKworICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsK
KyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZElt
YWdlLmdldCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgSW1h
Z2UqIGltYWdlKCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
KCkgOiBudWxsSW1hZ2UoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVk
KCk7IH0KKworICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
OiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUm
IHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdl
Q29udGFpbmVyU2l6ZShzaXplKTsgfQorICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KKyAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KKworICAgIEludFNpemUgaW1hZ2VTaXplKGZsb2F0
IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdl
LT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KKyAgICBJbnRSZWN0IGltYWdl
UmVjdChmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9j
YWNoZWRJbWFnZS0+aW1hZ2VSZWN0KG11bHRpcGxpZXIpIDogSW50UmVjdCgpOyB9CisKK3ByaXZh
dGU6CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZShSZW5kZXJPYmplY3QqKTsKKworICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOworICAgIFJlbmRlck9i
amVjdCogbV9yZW5kZXI7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VfaAo=
</data>
<flag name="review"
          id="52661"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64163</attachid>
            <date>2010-08-11 14:46:16 -0700</date>
            <delta_ts>2010-08-12 06:33:43 -0700</delta_ts>
            <desc>Patch #2 (remove Remove RenderImage inheritance)</desc>
            <filename>0002-Patch-2.patch</filename>
            <type>text/plain</type>
            <size>12873</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODk3YTE5Zi4uMDQyMmI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0xMiAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkIGludmFsaWRhdGVz
IHdyb25nIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzc5CisKKyAgICAgICAgUmVtb3ZlIFJlbmRlckltYWdlIGluaGVyaXRhbmNlIGZyb20g
UmVuZGVyU1ZHSW1hZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAg
ICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVs
ZW1lbnQ6OmF0dGFjaCk6CisKIDIwMTAtMDgtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHBhcm9nYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggOTkzMjc4Yy4uNTRiZTNjNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNSw2ICs1LDcgQEAKICAgICBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5
cmlnaHQgKEMpIDIwMDksIEdvb2dsZSwgSW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwOSBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmlj
ayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00
MywxMCArNDQsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdJbWFnZTo6
UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50KiBpbXBsKQotICAgIDogUmVuZGVySW1hZ2Uo
aW1wbCkKK1JlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQqIG5v
ZGUpCisgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChub2RlKQogICAgICwgbV9uZWVkc1RyYW5z
Zm9ybVVwZGF0ZSh0cnVlKQogeworICAgIG1fY2FjaGVkSW1hZ2UgPSBSZW5kZXJJbWFnZVJlc291
cmNlOjpjcmVhdGUodGhpcyk7Cit9CisKK1JlbmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2Uo
KQoreworICAgIG1fY2FjaGVkSW1hZ2UuY2xlYXIoKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6bGF5b3V0KCkKQEAgLTYxLDEyICs2OCw2IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91
dCgpCiAgICAgICAgIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBmYWxzZTsKICAgICB9CiAKLSAg
ICAvLyBtaW5pbXVtIGhlaWdodAotICAgIHNldEhlaWdodChlcnJvck9jY3VycmVkKCkgPyBpbnRy
aW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwKTsKLQotICAgIGNhbGNXaWR0aCgpOwotICAgIGNhbGNI
ZWlnaHQoKTsKLQogICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBjYWNoaW5nIHRoZSByZXBhaW50IHJl
Y3RzLgogICAgIG1fbG9jYWxCb3VuZHMgPSBGbG9hdFJlY3QoaW1hZ2UtPngoKS52YWx1ZShpbWFn
ZSksIGltYWdlLT55KCkudmFsdWUoaW1hZ2UpLCBpbWFnZS0+d2lkdGgoKS52YWx1ZShpbWFnZSks
IGltYWdlLT5oZWlnaHQoKS52YWx1ZShpbWFnZSkpOwogICAgIG1fY2FjaGVkTG9jYWxSZXBhaW50
UmVjdCA9IEZsb2F0UmVjdCgpOwpAQCAtODEsNTAgKzgyLDQ3IEBAIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OmxheW91dCgpCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQsIGludCkKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgIGlmIChw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCktPnZpc2liaWxp
dHkoKSA9PSBISURERU4gfHwgIW1fY2FjaGVkSW1hZ2UtPmhhc0ltYWdlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNvbmNhdENUTShsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkpOworICAgIEZsb2F0UmVj
dCBib3VuZGluZ0JveCA9IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CisgICAgRmxv
YXRSZWN0IG5vbkxvY2FsQm91bmRpbmdCb3ggPSBtX2xvY2FsVHJhbnNmb3JtLm1hcFJlY3QoYm91
bmRpbmdCb3gpOworICAgIGlmICghbm9uTG9jYWxCb3VuZGluZ0JveC5pbnRlcnNlY3RzKHBhaW50
SW5mby5yZWN0KSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewotICAgICAgICBQYWludEluZm8gc2F2ZWRJbmZvKHBh
aW50SW5mbyk7CisgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CisgICAg
Ym9vbCBkcmF3c091dGxpbmUgPSBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSAmJiAoY2hpbGRQYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgY2hpbGRQYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKTsKKyAgICBpZiAoZHJhd3NPdXRsaW5lIHx8IGNoaWxk
UGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CisgICAgICAgIGNoaWxk
UGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uYXBwbHlU
cmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9ybSk7CiAKLSAgICAgICAgaWYgKFNWR1JlbmRlclN1cHBv
cnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvKSkgewotICAgICAg
ICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9sb2NhbEJvdW5kczsKLSAgICAgICAgICAgIEZs
b2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlKCktPndpZHRoKCksIGltYWdlKCktPmhlaWdodCgp
KTsKKyAgICAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKSB7CisgICAgICAgICAgICBQYWludEluZm8gc2F2ZWRJbmZvKGNoaWxkUGFpbnRJbmZvKTsK
IAotICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNW
R0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNl
cnZlQXNwZWN0UmF0aW8oKS5hbGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCi0gICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNl
cnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAg
ICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRo
aXMsIGNoaWxkUGFpbnRJbmZvKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0
eWxlKiBzdmdTdHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgICAgICAgICAgICAgaWYg
KHN2Z1N0eWxlLT5zaGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCisgICAgICAgICAg
ICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhmYWxz
ZSk7CiAKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UoKSwg
RGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwotICAgICAgICB9Ci0gICAgICAg
IFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZv
LCBzYXZlZEluZm8uY29udGV4dCk7Ci0gICAgfQorICAgICAgICAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CiAKLSAgICBpZiAo
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKLSAg
ICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWln
aHQoKSk7CisgICAgICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRp
Y19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlt
YWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQorICAgICAgICAgICAgICAgICAg
ICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoYm91bmRpbmdC
b3gsIHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLX0KKyAg
ICAgICAgICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIERl
dmljZUNvbG9yU3BhY2UsIGJvdW5kaW5nQm94LCBzcmNSZWN0KTsKKyAgICAgICAgICAgIH0KIAot
dm9pZCBSZW5kZXJTVkdJbWFnZTo6ZGVzdHJveSgpCi17Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudERlc3Ryb3llZCh0aGlzKTsKLSAgICBSZW5kZXJJbWFnZTo6ZGVzdHJveSgpOwotfQor
ICAgICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlz
LCBjaGlsZFBhaW50SW5mbywgc2F2ZWRJbmZvLmNvbnRleHQpOworICAgICAgICB9CiAKLXZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCi17Ci0gICAgUmVuZGVySW1hZ2U6OnN0eWxlRGlkQ2hh
bmdlKGRpZmYsIG9sZFN0eWxlKTsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVD
aGFuZ2VkKHRoaXMsIGRpZmYsIHN0eWxlKCkpOwotfQorICAgICAgICBpZiAoZHJhd3NPdXRsaW5l
KQorICAgICAgICAgICAgcGFpbnRPdXRsaW5lKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIHN0YXRp
Y19jYXN0PGludD4oYm91bmRpbmdCb3gueCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0Jv
eC55KCkpLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lk
dGgoKSksIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKIAotdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewotICAgIFJlbmRlckltYWdlOjp1
cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRVcGRhdGVk
RnJvbUVsZW1lbnQodGhpcywgc3R5bGUoKSk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQtPnJlc3RvcmUoKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRU
ZXN0QWN0aW9uKQpAQCAtMTUyLDEyICsxNTAsNiBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50LCBpbnQsIGludCwgaW50
LCBIaXRUZXN0QWN0aW9uKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogRmxvYXRSZWN0IFJlbmRlclNWR0ltYWdlOjpyZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpIGNvbnN0CiB7CiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgY2Fj
aGVkIHJlcGFpbnQgcmVjdCwgcmV0dXJuIHRoYXQKQEAgLTE3MiwzNCArMTY0LDE1IEBAIEZsb2F0
UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25z
dAogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGlt
YWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewotICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5n
ZWQoaW1hZ2UsIHJlY3QpOwotCisjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgLy8gVGhlIGltYWdl
IHJlc291cmNlIGRlZmF1bHRzIHRvIG51bGxJbWFnZSB1bnRpbCB0aGUgcmVzb3VyY2UgYXJyaXZl
cy4KLSAgICAvLyBUaGlzIGVtcHR5IGltYWdlIG1heSBiZSBjYWNoZWQgYnkgU1ZHIHJlc291cmNl
cyB3aGljaCBtdXN0IGJlIGludmFsaWRhdGVkLgotICAgIGlmIChTVkdSZXNvdXJjZXMqIHJlc291
cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJPYmplY3Qo
dGhpcykpCi0gICAgICAgIHJlc291cmNlcy0+aW52YWxpZGF0ZUNsaWVudCh0aGlzKTsKLQotICAg
IC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hhbmdl
ZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKHRoaXMsIGZhbHNlKTsKLQorICAgIC8vIFRoaXMgZW1wdHkgaW1hZ2UgbWF5
IGJlIGNhY2hlZCBieSBTVkcgZmlsdGVyIGVmZmVjdHMgd2hpY2ggbXVzdCBiZSBpbnZhbGlkYXRl
ZC4KKyAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IGdldFJlbmRlclNW
R1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oZG9jdW1lbnQoKSwgc3R5bGUo
KS0+c3ZnU3R5bGUoKS0+ZmlsdGVyUmVzb3VyY2UoKSkpCisgICAgICAgIGZpbHRlci0+aW52YWxp
ZGF0ZUNsaWVudCh0aGlzKTsKKyNlbmRpZgogICAgIHJlcGFpbnQoKTsKIH0KIAotSW50UmVjdCBS
ZW5kZXJTVkdJbWFnZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCi17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIp
OwotfQotCi12b2lkIFJlbmRlclNWR0ltYWdlOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmIHJlcGFpbnRSZWN0LCBi
b29sIGZpeGVkKQotewotICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwotfQotCi12b2lk
IFJlbmRlclNWR0ltYWdlOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkICwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0Ci17Ci0gICAgU1ZHUmVuZGVyU3VwcG9y
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNl
VHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUpOwotfQotCiB2b2lkIFJlbmRlclNWR0ltYWdlOjph
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKIHsKICAg
ICAvLyB0aGlzIGlzIGNhbGxlZCBmcm9tIHBhaW50KCkgYWZ0ZXIgdGhlIGxvY2FsVHJhbnNmb3Jt
IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZApAQCAtMjA4LDE3ICsxODEsNiBAQCB2b2lkIFJlbmRl
clNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQs
IGludCkKICAgICAgICAgcmVjdHMuYXBwZW5kKGNvbnRlbnRSZWN0KTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdJbWFnZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQsIGludCkKLXsK
LSAgICAvLyBUaGlzIGNvZGUgcGF0aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMg
d2UncmUgYXNzdW1pbmcgdXNlVHJhbnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVh
ZHMgc2hvdWxkIGJlIHVzZWQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQot
ewotICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94
KCkpKTsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDM4ZTNhMTMuLmJlZjlhNjMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtMyw2ICszLDcgQEAKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAg
IENvcHlyaWdodCAoQykgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUsIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBH
YW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw3
ICsyNyw4IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1
ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVj
dC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdS
ZW5kZXJTdXBwb3J0LmgiCiAKQEAgLTM0LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR0ltYWdlRWxlbWVudDsKIAotY2xhc3MgUmVuZGVyU1ZHSW1hZ2UgOiBwdWJs
aWMgUmVuZGVySW1hZ2UgeworY2xhc3MgUmVuZGVyU1ZHSW1hZ2UgOiBwdWJsaWMgUmVuZGVyU1ZH
TW9kZWxPYmplY3QgewogcHVibGljOgogICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVu
dCopOworICAgIH5SZW5kZXJTVkdJbWFnZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
VHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCisg
ICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzU1ZHSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC01MCwyOCArNTUsMTYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxCb3VuZHM7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBJbnRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiwgYm9vbCBmaXhl
ZCA9IGZhbHNlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJv
b2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwog
CiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqID0gMCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAKICAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYWxUcmFuc2Zvcm07IH0KIApAQCAtNzksNiArNzIsNyBAQCBwcml2YXRlOgogICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX2xvY2FsQm91bmRz
OwogICAgIG11dGFibGUgRmxvYXRSZWN0IG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKKyAgICBP
d25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9jYWNoZWRJbWFnZTsKIH07CiAKIGlubGluZSBS
ZW5kZXJTVkdJbWFnZSogdG9SZW5kZXJTVkdJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM1ZTQ4MDIuLmNiZmNhOTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTIgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0
dGFjaCgpCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAg
ICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVy
ZXIoKSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBSZW5k
ZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gaW1hZ2VPYmotPmltYWdlUmVz
b3VyY2UoKTsKKworICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgcmVuZGVySW1hZ2VSZXNvdXJjZS0+c2V0
Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="52663"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64192</attachid>
            <date>2010-08-12 01:20:58 -0700</date>
            <delta_ts>2010-08-12 06:33:43 -0700</delta_ts>
            <desc>Xcode changes</desc>
            <filename>forparoga.diff</filename>
            <type>text/plain</type>
            <size>4327</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA2NTE2OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAxLDggQEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMx
MjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVs
ZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAg
Ki87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYw
MEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYw
MDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENF
QzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBF
MUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
OEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJF
MSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTU5MDUsNiArNTkwNyw4IEBACiAJCTA4
RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVsZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxk
U2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxG
aWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEU2RTBG
MDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEz
RTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3Rv
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBE
QzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjkyOCw2ICsxNjkzMiw4IEBACiAJCQkJQkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlckltYWdlLmggKi8sCiAJCQkJQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8sCiAJCQkJQkNCNEY4OEYwREIyOERENjAw
MzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovLAorCQkJCTA4RjJGMDA3
MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLywKKwkJCQkwOEYy
RjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovLAogCQkJCUE3
QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwICovLAogCQkJCUE3
QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VB
NDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCAqLywKQEAgLTIwMTQyLDYg
KzIwMTQ4LDcgQEAKIAkJCQkyRUVENTc1ODEyMTA5RUU0MDA3NjU2QkIgLyogQmxvYlJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUVENTc1QzEyMTA5RUYzMDA3NjU2QkIgLyogQmxvYkRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OEI2RkNBMTIxMjg4MjEwMDE1OTVFRiAvKiBIVE1M
Vmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhGMkYwMEExMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1NjYs
NiArMjI1NzMsNyBAQAogCQkJCTJFRUQ1NzU1MTIxMDlFRDAwMDc2NTZCQiAvKiBCbG9iVVJMLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJFRUQ1NzVCMTIxMDlFRjMwMDc2NTZCQiAvKiBCbG9iRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzhCNkZDOTEyMTI4ODIxMDAxNTk1RUYgLyogSFRN
TFZpZXdTb3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMkYwMDkxMjEzRTYx
NzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64206</attachid>
            <date>2010-08-12 04:15:43 -0700</date>
            <delta_ts>2010-08-12 06:33:43 -0700</delta_ts>
            <desc>Patch #1b (add RenderImageResource)</desc>
            <filename>0001-RenderImageResource.patch</filename>
            <type>text/plain</type>
            <size>48970</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YzE0MjJjLi4xZmY0MmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTUsNiArNjE1LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwIFwKKwlyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1MDg0MGUxLi5l
M2I4ZmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTEzNzEsNiArMTM3MSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorICAg
IHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJ
bmRpY2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGYzZWJhYjEuLjA3MDgxNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTAt
MDgtMTIgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuZGVySW1hZ2U6OmltYWdl
Q2hhbmdlZCBpbnZhbGlkYXRlcyB3cm9uZyBhcmVhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc3OQorCisgICAgICAgIEF0IHRoZSBtb21lbnQgUmVu
ZGVyU1ZHSW1hZ2UgaW5oZXJpdCBmcm9tIFJlbmRlckltYWdlLCB3aGljaCBjYXVzZXMgd3Jvbmcg
cmVwYWludGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmUgdGhlIENhY2hlZEltYWdlIGZy
b20gUmVuZGVySW1hZ2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNs
YXNzIGNvbnRhaW5zIHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRl
clNWR0ltYWdlLgorICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBp
bmhlcml0YW5jZSBvZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAq
IEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICog
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVs
ZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmF0dGFjaCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hl
ZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJk
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
bWluaW11bVJlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpj
YWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1Jl
cGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0
UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJh
dGlvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b1JlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dDo6UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudDo6flJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1h
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aGFzSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VSZWN0KToKKwogMjAx
MC0wOC0xMiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQuIEZvbGxvdyB1cCB0byBKZXJlbXlzIGZpeCwganVzdCByZW1vdmUg
dGhlIGNvbnRleHQgcGFyYW1ldGVyLCBpdCdzIG5vdCBuZWVkZWQgYW55bW9yZS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGY4YjA1ZDAuLmExZjlmZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI1NSw2ICsyMjU1LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2UuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCBc
CiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogCVdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZTgzZDI0Li4xY2RlY2UxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI3
NSw2ICszMjc1LDggQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCcsCisg
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwJywKKyAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCAyMjM5ZjQyLi5jMWQ3NWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwMDQsNiArMTAwNCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNw
cCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIFwKICAgICByZW5kZXJp
bmcvUmVuZGVySW5kaWNhdG9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAg
XAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgXApAQCAtMTgxNyw2ICsxODE4LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50LmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBmNmNjZWVhLi4wZTM2NGIwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5MTczLDYgKzI5MTczLDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJ
bWFnZVJlc291cmNlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdc
UmVuZGVySW5kaWNhdG9yLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiM2JkMWMuLjI1ODI2ZGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDMsNiArMjAzLDgg
QEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVF
RTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYx
MEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJG
IC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNl
dEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3Bw
ICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYw
MDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0
ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyog
U29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0
OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQ
SGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsK
QEAgLTU5MTEsNiArNTkxMyw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQ
b3N0ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBv
c3RmaWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRT
ZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVz
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBE
QzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjkzOCw2ICsxNjk0Miw4IEBACiAJ
CQkJQkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCiAJCQkJQkNC
NEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAg
Ki8sCiAJCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5oICovLAorCQkJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCAqLywKKwkJCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5k
ZXJJbmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5k
ZXJJbmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
SW5saW5lLmNwcCAqLywKQEAgLTIwMTU2LDYgKzIwMTYyLDcgQEAKIAkJCQkyRUVENTc1QzEyMTA5
RUYzMDA3NjU2QkIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OEI2RkNBMTIx
Mjg4MjEwMDE1OTVFRiAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzUwQjU2MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTgyLDYgKzIyNTg5LDcgQEAKIAkJCQkyRUVENTc1QjEy
MTA5RUYzMDA3NjU2QkIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc4QjZG
QzkxMjEyODgyMTAwMTU5NUVGIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDZiOTBiNjMuLjZhYTMxOGEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTE4MTYsMzMgKzE4MTYsMzQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgICAgIGlmICgh
YWx0LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoY2FudmFzVGFn
KSkgewogICAgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyogY2FudmFzID0gdG9SZW5kZXJIVE1M
Q2FudmFzKG1fcmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKGNhbnZhcy0+aGVpZ2h0KCkgPD0g
MSB8fCBjYW52YXMtPndpZHRoKCkgPD0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoaXNOYXRpdmVJbWFnZSgpKSB7CiAgICAgICAgICAgICAvLyBjaGVjayBmb3Igb25lLWRp
bWVuc2lvbmFsIGltYWdlCi0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRl
ckltYWdlKG1fcmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKGltYWdlLT5oZWlnaHQoKSA8PSAx
IHx8IGltYWdlLT53aWR0aCgpIDw9IDEpCisgICAgICAgICAgICBSZW5kZXJJbWFnZSogcmVuZGVy
SW1hZ2UgPSB0b1JlbmRlckltYWdlKG1fcmVuZGVyZXIpOworICAgICAgICAgICAgUmVuZGVySW1h
Z2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291
cmNlKCk7CisgICAgICAgICAgICBpZiAocmVuZGVySW1hZ2UtPmhlaWdodCgpIDw9IDEgfHwgcmVu
ZGVySW1hZ2UtPndpZHRoKCkgPD0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHJlbmRlcmVkIGltYWdl
IHdhcyBzdHJldGNoZWQgZnJvbSBvbmUtZGltZW5zaW9uYWwgZmlsZSBpbWFnZQotICAgICAgICAg
ICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBp
bWFnZVNpemUgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKGltYWdlLT52aWV3KCkt
Pnpvb21GYWN0b3IoKSk7CisgICAgICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2Fj
aGVkSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplID0gcmVuZGVy
SW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKHJlbmRlckltYWdlLT52aWV3
KCktPnpvb21GYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5oZWln
aHQoKSA8PSAxIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIC8vIG1ha2Ug
YSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWNpc2lvbgogICAgIGlmIChpc0F0dGFjaG1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCk7Ci0gICAgCisKICAg
ICByZXR1cm4gIW1fcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpICYmICFpc1dlYkFyZWEoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDNmNzAwZWYuLjMxZWNmMDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVt
ZW50KCk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKCkpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsK
KyAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+
c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggODJlZWFiMS4uMjM1NDY4OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcApAQCAtMTkxLDE1ICsxOTEsMTYgQEAgdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjphdHRhY2goKQogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVyLmhhdmVGaXJl
ZEJlZm9yZUxvYWRFdmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9IHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1hZ2Uo
KSkKKyAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5k
ZXJlcigpKTsKKyAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJj
ZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgIGlmIChyZW5kZXJJbWFn
ZVJlc291cmNlLT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpbWFn
ZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgcmVu
ZGVySW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsK
IAogICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhhdmUg
bm8gc3JjIGF0dHJpYnV0ZSwgc2V0CiAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGgg
Zm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1h
Z2UoKSAmJiAhaW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZU9iai0+
c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1h
Z2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgICAg
IHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMzQ4OGNkZS4uYzNjYWE1MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTIwOCwxMyArMTIwOCwxNCBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTElt
YWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1l
bnQoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9pbWFnZUxvYWRlci0+aGF2ZUZpcmVk
QmVmb3JlTG9hZEV2ZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZU9iai0+c2V0Q2Fj
aGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAotICAgICAgICAgICAgCisgICAgICAg
ICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkp
OworICAgICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9
IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgICAgICByZW5kZXJJbWFnZVJl
c291cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCisKICAgICAg
ICAgICAgIC8vIElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBz
cmMgYXR0cmlidXRlLCBzZXQKICAgICAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGgg
Zm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpICYmICFpbWFnZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBp
bWFnZU9iai0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgp
KQorICAgICAgICAgICAgICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBkMTY5ZDNlLi4y
NDJiZjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogI2luY2x1
ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIAorI2lm
IEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKKyNlbmRpZgorI2lmIEVO
QUJMRShWSURFTykKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2VuZGlmCisKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgYXMgbWVt
YmVycyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50ZXIgY2hlY2sgd291bGQgYWx3
YXlzIGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEzMCwxMSArMTM3LDggQEAgdm9pZCBJbWFn
ZUxvYWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQogICAgICAgICAgICAgb2xk
SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRl
cmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1h
Z2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAg
ICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtMTk1LDExICsxOTksOCBAQCB2b2lkIEltYWdlTG9h
ZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9l
bGVtZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPnJl
c2V0QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFn
ZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFnZVJlc291cmNl
LT5yZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxl
bWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpCkBAIC0yMjMsMjAgKzIyNCw0MiBAQCB2b2lkIElt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiAgICAgbG9hZEV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CiB9CiAKK1JlbmRlckltYWdlUmVzb3Vy
Y2UqIEltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpOworCisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisK
KyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdJbWFnZSgpKQorICAgICAg
ICByZXR1cm4gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKQor
ICAgICAgICByZXR1cm4gdG9SZW5kZXJWaWRlbyhyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZVJl
bmRlcmVyKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+
cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgIXJlbmRl
cmVyLT5pc1ZpZGVvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlbmRlckltYWdl
KiBpbWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgICAgIAotICAg
ICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGlt
YWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQotICAgICAgICAvLyBpcyBhIGNvbXBsZXRlIGltYWdlLiAg
VGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGluIHRoZSBjYXNlIHdoZXJlIGEgZHluYW1pYwotICAg
ICAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdlcy4KLSAgICAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsK
LSAgICAgICAgaWYgKG1faW1hZ2UgIT0gY2FjaGVkSW1hZ2UgJiYgKG1faW1hZ2VDb21wbGV0ZSB8
fCAhY2FjaGVkSW1hZ2UpKQotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+c2V0Q2FjaGVkSW1h
Z2UobV9pbWFnZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdl
UmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCk7CisKKyAgICBpZiAoIWltYWdlUmVzb3Vy
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgdXBkYXRlIHRoZSByZW5kZXJlciBp
ZiBpdCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYgd2hhdCB3ZSBoYXZlCisgICAgLy8gaXMg
YSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3
aGVyZSBhIGR5bmFtaWMKKyAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGlt
YWdlcy4KKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlLT5jYWNo
ZWRJbWFnZSgpOworICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29t
cGxldGUgfHwgIWNhY2hlZEltYWdlKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVk
SW1hZ2UobV9pbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCAwMmRkY2U4Li45YmY3
NjI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXI7CitjbGFz
cyBSZW5kZXJJbWFnZVJlc291cmNlOwogCiBjbGFzcyBJbWFnZUxvYWRlciA6IHB1YmxpYyBDYWNo
ZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0xvYWRFdmVudCgpOwogCisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVy
SW1hZ2VSZXNvdXJjZSgpOwogICAgIHZvaWQgdXBkYXRlUmVuZGVyZXIoKTsKIAogICAgIEVsZW1l
bnQqIG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGQ5M2EyNTYuLjY1YjE4
MTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyBD
YWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJl
bmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBS
ZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKTsKLSAgICByZXR1cm4g
aW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgcmV0dXJuIGltYWdlLT5pbWFnZVJlc291cmNlKCkt
PmNhY2hlZEltYWdlKCk7CiB9CiAKIHN0YXRpYyBJbWFnZSogZ2V0SW1hZ2UoRWxlbWVudCogZWxl
bWVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggMDYyNDRhMi4uMTU4YjViMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQ0Miw5ICs0NDIsOSBAQCBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5k
ZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKTsKLSAgICBpZiAoaW1h
Z2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdlLT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVk
KCkpCi0gICAgICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgp
LT5jYWNoZWRJbWFnZSgpOworICAgIGlmIChjYWNoZWRJbWFnZSAmJiAhY2FjaGVkSW1hZ2UtPmVy
cm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlOwogCiAgICAgcmV0dXJu
IDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRD
aHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1
bS5jcHAKaW5kZXggNTgzNzNiMS4uY2E4MzUzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTIzLDggKzEyMyw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKICAgICBBU1NFUlQobm9kZSk7CiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVy
KCkpOwogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRl
ckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigp
KS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIElt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcAppbmRleCBhMDA2OWNmLi5kZjgxOThkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtOTYsOCArOTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiAgICAgR3Rr
Q2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCk7CiAKICAgICBB
U1NFUlQobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1h
Z2UoKSk7Ci0gICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5y
ZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2Fj
aGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CiAgICAg
aWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBiYmE3Y2FjLi44ZGZhMjNkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI5OCw4ICsyOTgsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQogICAgIEFTU0VSVChjb2NvYVVSTCk7CiAKICAgICBBU1NFUlQobm9k
ZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRl
ckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigp
KS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IGY2NzdkMjguLjcxNDdhMzEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIENhY2hl
ZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVu
ZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdl
LT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgp
KQotICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+
Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJv
ck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAw
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCmluZGV4IGUxZTZkODQuLjk5NWVh
ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYpCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwogCiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIo
KSktPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5k
ZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgp
OwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRl
eCAyOTE1ZjlkLi5kZDE0MTg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAK
QEAgLTY3MiwxMCArNjcyLDEwIEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2Uo
RWxlbWVudCogZWxlbWVudCkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKSAK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5k
ZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFn
ZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2Ut
PmNhY2hlZEltYWdlKCk7CisKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOworICAgIGlm
IChjYWNoZWRJbWFnZSAmJiAhY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAg
cmV0dXJuIGNhY2hlZEltYWdlOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDAzZWNkMzYuLmQ3MzY3MDUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQog
ewogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKICAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFn
ZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAgICAg
SW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IGRkOTZlMGUuLjJiNWVkMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC0yNDYsOSArMjQ2LDkgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdl
KCkgY29uc3QKICAgICAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9pbm5lck5vblNo
YXJlZE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0lt
YWdlKCkpIHsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1h
Z2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICAgICAgUmVuZGVy
SW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIpLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgIGlmIChyZW5kZXJJbWFnZVJlc291cmNlLT5j
YWNoZWRJbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpLT5lcnJv
ck9jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2Fj
aGVkSW1hZ2UoKS0+aW1hZ2UoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAppbmRleCAyMDczNDc5Li43NjQ0N2FlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCkBAIC01NywzMyArNTcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJSZXBs
YWNlZChub2RlLCBJbnRTaXplKDAsIDApKQotICAgICwgbV9jYWNoZWRJbWFnZSgwKQorICAgICwg
bV9jYWNoZWRJbWFnZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUodGhpcykpCiB7CiAgICAg
dXBkYXRlQWx0VGV4dCgpOwogCiAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+c2V0SXNWaXN1YWxs
eU5vbkVtcHR5KCk7CiB9CiAKLVJlbmRlckltYWdlOjp+UmVuZGVySW1hZ2UoKQotewotICAgIGlm
IChtX2NhY2hlZEltYWdlKQotICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhp
cyk7Ci19Ci0KLXZvaWQgUmVuZGVySW1hZ2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBu
ZXdJbWFnZSkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAgICBtX2NhY2hlZEltYWdlLT5y
ZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOwotICAgIGlm
IChtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlz
KTsKLSAgICAgICAgaWYgKG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAg
ICAgIGltYWdlQ2hhbmdlZChtX2NhY2hlZEltYWdlLmdldCgpKTsKLSAgICB9Ci19Ci0KIC8vIElm
IHdlJ2xsIGJlIGRpc3BsYXlpbmcgZWl0aGVyIGFsdCB0ZXh0IG9yIGFuIGltYWdlLCBhZGQgc29t
ZSBwYWRkaW5nLgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdXaWR0aCA9IDQ7
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcGFkZGluZ0hlaWdodCA9IDQ7CkBAIC0xMzUs
MjIgKzExNSwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdl
UHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogCiAgICAgaWYgKGhhc0JveERlY29y
YXRpb25zKCkgfHwgaGFzTWFzaygpKQogICAgICAgICBSZW5kZXJSZXBsYWNlZDo6aW1hZ2VDaGFu
Z2VkKG5ld0ltYWdlLCByZWN0KTsKLSAgICAKLSAgICBpZiAobmV3SW1hZ2UgIT0gaW1hZ2VQdHIo
KSB8fCAhbmV3SW1hZ2UpCisKKyAgICBpZiAobmV3SW1hZ2UgIT0gbV9jYWNoZWRJbWFnZS0+Y2Fj
aGVkSW1hZ2UoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1h
Z2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRh
a2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJv
ck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JB
bHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2NhY2hlZEltYWdl
LT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNp
emVGb3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UtPmNhY2hlZEltYWdlKCkpOworCiAgICAgYm9vbCBz
aG91bGRSZXBhaW50ID0gdHJ1ZTsKIAogICAgIC8vIEltYWdlIGRpbWVuc2lvbnMgaGF2ZSBiZWVu
IGNoYW5nZWQsIHNlZSB3aGF0IG5lZWRzIHRvIGJlIGRvbmUKLSAgICBpZiAoaW1hZ2VTaXplKHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNo
YW5nZWQpIHsKLSAgICAgICAgaWYgKCFlcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBzZXRJ
bnRyaW5zaWNTaXplKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0g
aW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFtX2Nh
Y2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXpl
KG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKIAog
ICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBnZW5lcmF0ZWQgaW1hZ2UgY29udGVudCB1c2luZyA6
YmVmb3JlLzphZnRlciwgd2UgbWlnaHQgbm90IGJlIGluIHRoZQogICAgICAgICAvLyByZW5kZXIg
dHJlZSB5ZXQuICBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY2hl
Y2sgZm9yIGxheW91dCwgc2luY2Ugd2UnbGwgZ2V0IGEKQEAgLTE4MCw3ICsxNjAsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25z
dCBJbnRSZWN0KiByZWN0KQogICAgICAgICBpZiAocmVjdCkgewogICAgICAgICAgICAgLy8gVGhl
IGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16
b29taW5nKSwKICAgICAgICAgICAgIC8vIHNvIG1hcCBmcm9tIHRoZSBib3VuZHMgb2YgdGhlIGlt
YWdlIHRvIHRoZSBjb250ZW50c0JveC4KLSAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNp
emUoMS4wZikpLCBjb250ZW50Qm94UmVjdCgpKSk7CisgICAgICAgICAgICByZXBhaW50UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOwogICAg
ICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0cy4KICAgICAg
ICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICAgICAg
fSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZElt
YWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1fY2FjaGVkSW1hZ2Ut
PmNhY2hlZEltYWdlKCkgJiYgaGFzTGF5ZXIoKSkgewogICAgICAgICAvLyB0ZWxsIGFueSBwb3Rl
bnRpYWwgY29tcG9zaXRpbmcgbGF5ZXJzCiAgICAgICAgIC8vIHRoYXQgdGhlIGltYWdlIGlzIGRv
bmUgYW5kIHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJlY3RseS4KICAgICAgICAgbGF5ZXIoKS0+
cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpOwpAQCAtMjEyLDE1ICsxOTIsNiBAQCB2b2lkIFJlbmRl
ckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogbmV3SW1hZ2UpCiAgICAgVU5V
U0VEX1BBUkFNKG5ld0ltYWdlKTsKICNlbmRpZgogfQotICAgIAotdm9pZCBSZW5kZXJJbWFnZTo6
cmVzZXRBbmltYXRpb24oKQotewotICAgIGlmIChtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAgIGlt
YWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgICAgIGlmICghbmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICB9Ci19CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogewpAQCAtMjM2
LDEwICsyMDcsMTIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8m
IHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9j
Y3VycmVkKCkpIHsKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UtPmhhc0ltYWdlKCkgfHwgbV9jYWNo
ZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBJ
bWFnZSAqaW1hZ2UgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpOworCiAgICAgICAgIGlmIChjV2lk
dGggPiAyICYmIGNIZWlnaHQgPiAyKSB7CiAgICAgICAgICAgICAvLyBEcmF3IGFuIG91dGxpbmUg
cmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgogICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwpAQCAtMjU1LDE3ICsyMjgsMTcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQg
dHkpCiAgICAgICAgICAgICBpbnQgdXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAg
ICAgaW50IHVzYWJsZUhlaWdodCA9IGNIZWlnaHQgLSAyOwogCi0gICAgICAgICAgICBpZiAoZXJy
b3JPY2N1cnJlZCgpICYmICFpbWFnZSgpLT5pc051bGwoKSAmJiAodXNhYmxlV2lkdGggPj0gaW1h
Z2UoKS0+d2lkdGgoKSkgJiYgKHVzYWJsZUhlaWdodCA+PSBpbWFnZSgpLT5oZWlnaHQoKSkpIHsK
KyAgICAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkgJiYgIWltYWdl
LT5pc051bGwoKSAmJiAodXNhYmxlV2lkdGggPj0gaW1hZ2UtPndpZHRoKCkpICYmICh1c2FibGVI
ZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSkgewogICAgICAgICAgICAgICAgIC8vIENlbnRlciB0
aGUgZXJyb3IgaW1hZ2UsIGFjY291bnRpbmcgZm9yIGJvcmRlciBhbmQgcGFkZGluZy4KLSAgICAg
ICAgICAgICAgICBpbnQgY2VudGVyWCA9ICh1c2FibGVXaWR0aCAtIGltYWdlKCktPndpZHRoKCkp
IC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWCA9ICh1c2FibGVXaWR0aCAtIGltYWdl
LT53aWR0aCgpKSAvIDI7CiAgICAgICAgICAgICAgICAgaWYgKGNlbnRlclggPCAwKQogICAgICAg
ICAgICAgICAgICAgICBjZW50ZXJYID0gMDsKLSAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9
ICh1c2FibGVIZWlnaHQgLSBpbWFnZSgpLT5oZWlnaHQoKSkgLyAyOworICAgICAgICAgICAgICAg
IGludCBjZW50ZXJZID0gKHVzYWJsZUhlaWdodCAtIGltYWdlLT5oZWlnaHQoKSkgLyAyOwogICAg
ICAgICAgICAgICAgIGlmIChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVy
WSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VYID0gbGVmdEJvcmRlciArIGxlZnRQYWQgKyBj
ZW50ZXJYICsgMTsKICAgICAgICAgICAgICAgICBpbWFnZVkgPSB0b3BCb3JkZXIgKyB0b3BQYWQg
KyBjZW50ZXJZICsgMTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2Uo
KSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRQb2ludCh0eCArIGltYWdlWCwgdHkgKyBpbWFn
ZVkpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkt
PmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CiAgICAg
ICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBA
IC0yODgsOSArMjYxLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdUZXh0KHN0eWxlKCktPmZvbnQoKSwgdGV4dFJ1biwgSW50UG9pbnQoYXgsIGF5ICsg
YXNjZW50KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGhhc0lt
YWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgewotICAgICAgICBJbWFnZSogaW1n
ID0gaW1hZ2UoY1dpZHRoLCBjSGVpZ2h0KTsKLSAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051
bGwoKSkKKyAgICB9IGVsc2UgaWYgKG1fY2FjaGVkSW1hZ2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRo
ID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+aW1hZ2Uo
KS0+aXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCkBA
IC0zNTEsMjIgKzMyMywyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQo
KSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFt
X2NhY2hlZEltYWdlLT5oYXNJbWFnZSgpIHx8IG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEltYWdlKiBpbWcgPSBpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOwotICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCisgICAgSW1hZ2UqIGltYWdlID0g
bV9jYWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICBpZiAoaW1hZ2UtPmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKGltZ1RhZykpID8gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVu
dCo+KG5vZGUoKSkgOiAwOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
ID0gaW1hZ2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNv
dXJjZU92ZXI7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRM
b3dRdWFsaXR5KGNvbnRleHQsIHRoaXMtPmltYWdlKCksIHJlY3Quc2l6ZSgpKTsKLSAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgdXNlTG93UXVhbGl0eVNj
YWxpbmcpOworICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93
UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRv
ciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCiBpbnQgUmVuZGVySW1hZ2U6Om1pbmltdW1S
ZXBsYWNlZEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVycm9yT2NjdXJyZWQoKSA/IGlu
dHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CisgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UtPmVy
cm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxN
YXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjEs
MTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQg
UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25z
dAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9jYWNoZWRJ
bWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCiAgICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IGNiID0gaXNQb3NpdGlvbmVkKCkgPyBjb250YWluZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygpKSB7
CiAgICAgICAgICAgICBpZiAoY2ItPmlzQm94KCkpCi0gICAgICAgICAgICAgICAgc2V0SW1hZ2VD
b250YWluZXJTaXplKEludFNpemUodG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVXaWR0aCgpLCB0
b1JlbmRlckJveChjYiktPmF2YWlsYWJsZUhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgbV9j
YWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKEludFNpemUodG9SZW5kZXJCb3goY2Ip
LT5hdmFpbGFibGVXaWR0aCgpLCB0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZUhlaWdodCgpKSk7
CiAgICAgICAgIH0KIAogICAgIGludCB3aWR0aDsKICAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgp
KQogICAgICAgICB3aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoc3R5bGUoKS0+d2lkdGgo
KSk7Ci0gICAgZWxzZSBpZiAodXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQotICAgICAgICB3aWR0
aCA9IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7Ci0gICAgZWxz
ZSBpZiAoaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCisgICAgZWxzZSBpZiAobV9jYWNoZWRJbWFn
ZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7CisgICAgZWxz
ZSBpZiAobV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCiAgICAgICAgIHdp
ZHRoID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgd2lk
dGggdG8gMCB1bnRpbCB0aGVyZSBpcyBhIHNldCBjb250YWluZXIgc2l6ZS4KICAgICBlbHNlCiAg
ICAgICAgIHdpZHRoID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsKQEAgLTQ3Niw5ICs0NDgsOSBA
QCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZEhlaWdodCgpIGNvbnN0CiAgICAgaW50IGhl
aWdodDsKICAgICBpZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSkKICAgICAgICAgaGVpZ2h0ID0gY2Fs
Y1JlcGxhY2VkSGVpZ2h0VXNpbmcoc3R5bGUoKS0+aGVpZ2h0KCkpOwotICAgIGVsc2UgaWYgKHVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgaGVpZ2h0ID0gaW1hZ2VTaXplKHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCk7Ci0gICAgZWxzZSBpZiAoaW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpKQorICAgIGVsc2UgaWYgKG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCk7CisgICAgZWxzZSBpZiAobV9jYWNoZWRJ
bWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpKQogICAgICAgICBoZWlnaHQgPSAwOyAvLyBJ
ZiB0aGUgaW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSBoZWlnaHQgdG8gMCB1bnRp
bCB0aGVyZSBpcyBhIHNldCBjb250YWluZXIgc2l6ZS4KICAgICBlbHNlCiAgICAgICAgIGhlaWdo
dCA9IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpOwpAQCAtNDk0LDcgKzQ2Niw3IEBAIGludCBSZW5k
ZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdAogICAgIEludFNpemUgc2l6ZSA9
IGludHJpbnNpY1NpemUoKTsKICAgICBpZiAoIXNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkpCisgICAgaWYgKCFt
X2NhY2hlZEltYWdlLT5oYXNJbWFnZSgpIHx8IG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgcmV0dXJuIHNpemUud2lkdGgoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcu
CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSAqIHNpemUu
d2lkdGgoKSAvIHNpemUuaGVpZ2h0KCk7CiB9CkBAIC01MDQsNyArNDc2LDcgQEAgaW50IFJlbmRl
ckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAogICAgIEludFNpemUgc2l6ZSA9
IGludHJpbnNpY1NpemUoKTsKICAgICBpZiAoIXNpemUud2lkdGgoKSkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2UtPmhhc0ltYWdlKCkgfHwgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
KQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcu
CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5o
ZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDEsNCBAQCB2b2lkIFJlbmRl
ckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsK
IH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFn
ZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjY5NjI1OGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRl
ckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwyNyArMzUsMTkg
QEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5k
ZXJSZXBsYWNlZCB7CiBwdWJsaWM6CiAgICAgUmVuZGVySW1hZ2UoTm9kZSopOwotICAgIHZpcnR1
YWwgflJlbmRlckltYWdlKCk7CisKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291
cmNlKCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlcklt
YWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdl
LmdldCgpOyB9CiAKICAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2Uq
IG5ld0ltYWdlID0gMCk7CiAKICAgICB2b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZvaWQg
c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1MTWFw
RWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsK
LQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2U7IH0KLQogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5k
ZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCAv
KiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hlZElt
YWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmlydHVh
bCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYmIG1f
Y2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7
CkBAIC02NCwxNCArNTcsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNpZmll
ZCgpIGNvbnN0OwogICAgIGJvb2wgaXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdlUHRy
KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFnZUNo
YW5nZWQoaW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpKTsgfQogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJ
bWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0
KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1h
Z2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVk
SW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0K
ICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVj
dFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2Ug
YXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBh
cyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAg
T3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1fY2FjaGVkSW1hZ2U7CiAKLSAgICBzdGF0aWMg
SW1hZ2UqIG51bGxJbWFnZSgpOwotICAgIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNj
YWxlT2JzZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihv
YmplY3QpOwogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29u
c3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9i
amVjdC0+aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVu
ZGVySW1hZ2UqPihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlR2VuZXJhdGVkQ29udGVudC5jcHAKaW5kZXggMjlkMDUwOC4uMTdlYmE5NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCkBAIC0z
MywxOSArMzMsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50OjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSogbikKLTogUmVuZGVy
SW1hZ2UobikKLXt9CisgICAgOiBSZW5kZXJJbWFnZShuKQoreworfQogCiBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6On5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKQogewotICAgIG1f
Y2FjaGVkSW1hZ2UgPSAwOwogICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwog
fQogCiB2b2lkIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6c2V0U3R5bGVJbWFnZShTdHls
ZUltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAg
ICAgbV9jYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihpbWFnZSkt
PmNhY2hlZEltYWdlKCk7CisgICAgICAgIGltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2Uo
c3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KGltYWdlKS0+Y2FjaGVkSW1hZ2UoKSk7CiAg
ICAgbV9zdHlsZUltYWdlID0gaW1hZ2U7CiAgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQodGhp
cyk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjRmYzcKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+Cisg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+Cisg
KiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29t
PgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5
LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291
cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBt
X3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQoreworICAgIEFTU0VS
VChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291
cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+
cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6
OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAgICBpZiAobV9jYWNo
ZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2FjaGVk
SW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsK
KyAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsK
KyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIpOworICAgICAgICBp
ZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgbV9yZW5kZXJl
ci0+aW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBS
ZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2NhY2hl
ZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigp
OworCisgICAgaWYgKCFtX3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAgICAgICBtX3JlbmRl
cmVyLT5yZXBhaW50KCk7Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1h
Z2UoKQoreworICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWIyOTI1Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAq
ICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5j
b20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVuZGVy
SW1hZ2VSZXNvdXJjZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VfaAorCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2lu
Y2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VS
ZXNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgflJlbmRlckltYWdl
UmVzb3VyY2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+
IGNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJlbmRl
ckltYWdlUmVzb3VyY2UocmVuZGVyKSk7IH0KKworICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2Fj
aGVkSW1hZ2UqKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkSW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAg
IHZpcnR1YWwgSW1hZ2UqIGltYWdlKCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVk
SW1hZ2UtPmltYWdlKCkgOiBudWxsSW1hZ2UoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvck9j
Y3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5l
cnJvck9jY3VycmVkKCk7IH0KKworICAgIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250
YWluZXJTaXplKCkgOiBmYWxzZTsgfQorICAgIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNv
bnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1h
Z2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQorICAgIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KKyAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KKworICAgIEludFNpemUgaW1h
Z2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBt
X2NhY2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KKyAgICBJ
bnRSZWN0IGltYWdlUmVjdChmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
ZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VSZWN0KG11bHRpcGxpZXIpIDogSW50UmVjdCgp
OyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZShSZW5kZXJPYmplY3QqKTsK
KworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwor
ICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKworICAgIHN0YXRpYyBJbWFnZSogbnVsbElt
YWdlKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJ
bWFnZV9oCg==
</data>
<flag name="review"
          id="52718"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>64217</attachid>
            <date>2010-08-12 06:33:43 -0700</date>
            <delta_ts>2010-09-01 06:55:40 -0700</delta_ts>
            <desc>Xcode changes - part 2</desc>
            <filename>forparoga.diff</filename>
            <type>application/octet-stream</type>
            <size>4451</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA2NTIzNCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAKIAkJMDg1QjA1QzMxMUZBRTE2QzAwNEQ2
NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEwRUZERTczRDAwRTYxMjNDIC8q
IEZvcm1EYXRhQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNw
cCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjkw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CisJCTA4NjQxRDQ3MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovOyB9OworCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovOyB9OwogCQkwODY1Q0NFNjBFRERGNTFCMDBE
RjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJMDg2NUNDRTcwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY1
Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLzsgfTsKIAkJMDg2QTQw
MDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NkE0MDA1MTFGNkQ2
QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgKi87IH07CkBAIC01
ODM5LDYgKzU4NDEsOCBAQAogCQkwODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3Vy
Y2VzQ3ljbGVTb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1Qjky
QjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg2NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTE5vb3BFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NUNDRTUwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdN
TE5vb3BFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NkE0MDA1MTFG
NkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjkzMiw2ICsxNjkzNiw4IEBACiAJ
CQkJQkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCiAJCQkJQkNC
NEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAg
Ki8sCiAJCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5oICovLAorCQkJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8sCisJCQkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2
IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi8sCiAJCQkJQTdBQTY2RDQxMUM1
RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgKi8sCiAJCQkJQTdBQTY2RDUxMUM1
RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oICovLAogCQkJCUJDRUE0ODM4MDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwICovLApAQCAtMjAxNDksNiArMjAxNTUsNyBA
QAogCQkJCTJFRUQ1NzU4MTIxMDlFRTQwMDc2NTZCQiAvKiBCbG9iUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFRUQ1NzVDMTIxMDlFRjMwMDc2NTZCQiAvKiBCbG9iRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc4QjZGQ0ExMjEyODgyMTAwMTU5NUVGIC8qIEhUTUxWaWV3U291cmNl
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyog
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1NzQs
NiArMjI1ODEsNyBAQAogCQkJCTJFRUQ1NzU1MTIxMDlFRDAwMDc2NTZCQiAvKiBCbG9iVVJMLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJFRUQ1NzVCMTIxMDlFRjMwMDc2NTZCQiAvKiBCbG9iRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzhCNkZDOTEyMTI4ODIxMDAxNTk1RUYgLyogSFRN
TFZpZXdTb3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDg2NDFENDcxMjE0MkY3
RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64241</attachid>
            <date>2010-08-12 11:31:00 -0700</date>
            <delta_ts>2010-08-12 13:14:29 -0700</delta_ts>
            <desc>Patch #1c (add RenderImageResource)</desc>
            <filename>0001-RenderImageResource.patch</filename>
            <type>text/plain</type>
            <size>71261</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YzE0MjJjLi44NmQ5MzYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTQsNyArNjE0LDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDUwODQwZTEuLjhjZTEwMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3MCw3ICsxMzcw
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGYzZWJhYjEuLmFkMmViNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBk
YXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bh
c3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxh
Y2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9y
T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlUHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJD
b250ZW50KToKKwogMjAxMC0wOC0xMiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIEZvbGxvdyB1cCB0byBKZXJlbXlzIGZp
eCwganVzdCByZW1vdmUgdGhlIGNvbnRleHQgcGFyYW1ldGVyLCBpdCdzIG5vdCBuZWVkZWQgYW55
bW9yZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGY4YjA1ZDAuLjRhOWM2MmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI1Myw4ICsyMjUz
LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCiAJV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VH
ZW5lcmF0ZWRDb250ZW50LmNwcCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmggXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorCVdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBcCiAJV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5kaWNhdG9yLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBhZTgzZDI0Li45NTZlNzVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI3Myw4ICszMjczLDEwIEBACiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCcsCi0g
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAnLAot
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCcsCisg
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwJywKKyAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oJywKKyAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwJywKKyAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJbmRpY2F0b3IuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggMjIzOWY0Mi4uNTk1NTBjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDAzLDcgKzEwMDMsOCBAQCBTT1VSQ0VT
ICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAgXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJRnJhbWUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIFwKLSAg
ICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBcCisgICAgcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgXApAQCAtMTgxNiw3ICsxODE3LDggQEAgSEVBREVSUyArPSBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCi0gICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZS5oIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY2Y2NlZWEuLmY0MGE4ZmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjkxNjUsMTEgKzI5MTY1LDE5IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVy
aW5nXFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxy
ZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YjNiZDFjLi5jMjIz
ZTlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIw
LDYgKzEyMCw4IEBACiAJCTA4NUIwNUMzMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXND
eWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmgg
Ki87IH07CiAJCTA4NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjgw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi87IH07CiAJCTA4NUI5MkJC
MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBG
b3JtRGF0YUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owor
CQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2
NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNw
cCAqLzsgfTsKKwkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuaCAqLzsgfTsKIAkJMDg2NUNDRTYwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi87IH07CiAJCTA4
NjVDQ0U3MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTUwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmggKi87IH07CiAJCTA4NkE0MDA2MTFGNkQ2QjcwMDJDRUM1MyAv
KiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZBNDAwNTExRjZENkI3MDAyQ0VDNTMgLyogUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovOyB9OwpAQCAtMjAzLDYgKzIwNSw4IEBACiAJCTA4
RTZBMkU5MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2QTJFNzBFRUUwMzUyMDBB
QzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovOyB9OwogCQkwOEU2RTBGMTBFRkY0MkJB
MDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxG
aWVsZFNldEVsZW1lbnQuY3BwICovOyB9OwogCQkwOEU2RTBGMjBFRkY0MkJBMDAwMjlGQkYgLyog
V01MRmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50
LmggKi87IH07CisJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291
cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLzsgfTsK
KwkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2
MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IH07CiAJCTBBNDg0NDk5MENB
NDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5r
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEFGREFDM0QxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUZEQUMzQzEwRjU0NDhDMDBFMUYz
RDIgLyogUGx1Z2luVmlld0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQjhDNTZENDBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjhD
NTZEMzBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1hcC5jcHAgKi87IH07CkBAIC00Nzg5
LDggKzQ3OTMsNiBAQAogCQlCQ0IxNkMyRDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNDA5NzlD
M0JEMDA0Njc3NDEgLyogbG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMkUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMTUw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3BwICovOyB9OwogCQlCQ0IxNkMyRjA5NzlDM0JE
MDA0Njc3NDEgLyogUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCAqLzsgfTsK
LQkJQkNCNEY4OTAwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4
OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovOyB9
OwotCQlCQ0I0Rjg5MzBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
ICovOyB9OwogCQlCQ0I3NzM2MTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
Qjc3MzVFMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovOyB9
OwogCQlCQ0I3NzM2MjBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM1RjBD
MTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi87IH07CiAJCUJDQjc3
MzYzMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNjAwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi87IH07CkBAIC01ODQxLDYgKzU4NDMsOCBA
QAogCQkwODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjgwRUZERTczRDAwRTYx
MjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2
NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTE5vb3BFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NUNDRTUwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTE5vb3BFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAv
KiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01OTExLDYgKzU5MTUsOCBAQAogCQkwOEU2QTJFNzBFRUUwMzUy
MDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXTUxQb3N0ZmllbGRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRjAwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXTUxGaWVsZFNldEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAv
KiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckltYWdlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1l
bnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRD
QjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MzIs
OCArMTA1MzgsNiBAQAogCQlCQ0IxNkMxNDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBsb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcXVlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMxNjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVxdWVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3
MzVFMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAv
KiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5MzYsOCArMTY5NDAsMTAgQEAKIAkJ
CQkwRkQzMDhENDExN0QxNjg0MDBBNzkxRjcgLyogUmVuZGVySUZyYW1lLmggKi8sCiAJCQkJQkNF
QTQ4MzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNwcCAqLywKIAkJCQlCQ0VBNDgz
NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuaCAqLywKLQkJCQlCQ0I0Rjg5MjBEQjI4
RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCAqLywKLQkJCQlC
Q0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
Ki8sCisJCQkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwICovLAorCQkJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291
cmNlLmggKi8sCisJCQkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCAqLywKKwkJCQkwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyog
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCAqLywKIAkJCQlBN0FBNjZENDExQzVFRDZB
MDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmNwcCAqLywKIAkJCQlBN0FBNjZENTExQzVFRDZB
MDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggKi8sCiAJCQkJQkNFQTQ4MzgwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgKi8sCkBAIC0xOTQ2Niw3ICsxOTQ3Miw2IEBACiAJ
CQkJQkNFQTQ4NkEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckhUTUxDYW52YXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDMwOEQ2MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCNEY4OTAwREIyOERENjAwMzkxMzlCIC8qIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBQTY2RDcxMUM1
RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4NzgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzUwRDAyOTQxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggaW4gSGVh
ZGVycyAqLywKQEAgLTIwMTU2LDYgKzIwMTYxLDggQEAKIAkJCQkyRUVENTc1QzEyMTA5RUYzMDA3
NjU2QkIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OEI2RkNBMTIxMjg4MjEw
MDE1OTVFRiAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUw
QjU2MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE5NjgsNyArMjE5NzUsNiBA
QAogCQkJCUJDRUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5
QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdBQTY2RDYxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIyNTgyLDYgKzIyNTg4LDggQEAKIAkJCQky
RUVENTc1QjEyMTA5RUYzMDA3NjU2QkIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4QjZGQzkxMjEyODgyMTAwMTU5NUVGIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBS
ZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4NjQxRDQ3MTIxNDJG
N0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCA2YjkwYjYzLi42YWEzMThhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xODE2LDMzICsx
ODE2LDM0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIWFsdC5pc051bGwoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAo
bm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykpIHsKICAgICAgICAgICAgIFJlbmRl
ckhUTUxDYW52YXMqIGNhbnZhcyA9IHRvUmVuZGVySFRNTENhbnZhcyhtX3JlbmRlcmVyKTsKICAg
ICAgICAgICAgIGlmIChjYW52YXMtPmhlaWdodCgpIDw9IDEgfHwgY2FudmFzLT53aWR0aCgpIDw9
IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzTmF0aXZlSW1hZ2UoKSkg
ewogICAgICAgICAgICAgLy8gY2hlY2sgZm9yIG9uZS1kaW1lbnNpb25hbCBpbWFnZQotICAgICAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShtX3JlbmRlcmVyKTsKLSAg
ICAgICAgICAgIGlmIChpbWFnZS0+aGVpZ2h0KCkgPD0gMSB8fCBpbWFnZS0+d2lkdGgoKSA8PSAx
KQorICAgICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZSht
X3JlbmRlcmVyKTsKKyAgICAgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdl
UmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICAgICAgaWYg
KHJlbmRlckltYWdlLT5oZWlnaHQoKSA8PSAxIHx8IHJlbmRlckltYWdlLT53aWR0aCgpIDw9IDEp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgLy8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3YXMgc3RyZXRjaGVkIGZyb20gb25l
LWRpbWVuc2lvbmFsIGZpbGUgaW1hZ2UKLSAgICAgICAgICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1h
Z2UoKSkgewotICAgICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplID0gaW1hZ2UtPmNhY2hl
ZEltYWdlKCktPmltYWdlU2l6ZShpbWFnZS0+dmlldygpLT56b29tRmFjdG9yKCkpOworICAgICAg
ICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IHJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZElt
YWdlKCktPmltYWdlU2l6ZShyZW5kZXJJbWFnZS0+dmlldygpLT56b29tRmFjdG9yKCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBpbWFnZVNpemUuaGVpZ2h0KCkgPD0gMSB8fCBpbWFnZVNpemUu
d2lkdGgoKSA8PSAxOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgCisKICAgICAvLyBtYWtlIGEgcGxhdGZvcm0tc3BlY2lmaWMgZGVj
aXNpb24KICAgICBpZiAoaXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5SWdub3JlQXR0YWNobWVudCgpOwotICAgIAorCiAgICAgcmV0dXJuICFtX3JlbmRlcmVyLT5p
c0xpc3RNYXJrZXIoKSAmJiAhaXNXZWJBcmVhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcAppbmRleCAzZjcwMGVmLi4zMWVjZjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphdHRhY2goKQogICAg
ICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogCiAgICAgICAgIGlmIChy
ZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+c2V0Q2Fj
aGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CisgICAgICAgICAgICB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VM
b2FkZXItPmltYWdlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDgyZWVhYjEuLjIzNTQ2ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTE5
MSwxNSArMTkxLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0YWNoKCkKICAgICBIVE1M
RWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5p
c0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewot
ICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkp
OwotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkpCisgICAgICAgIFJlbmRlckltYWdl
KiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRl
ckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VS
ZXNvdXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1hZ2VPYmotPnNldENhY2hlZEltYWdlKG1f
aW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENh
Y2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAog
ICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVh
ZC4KLSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNo
ZWRJbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmotPnNldEltYWdlU2l6ZUZvckFsdFRleHQo
KTsKKyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIXJlbmRlckltYWdlUmVz
b3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VT
aXplRm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDM0ODhjZGUuLmMzY2FhNTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEy
MDgsMTMgKzEyMDgsMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphdHRhY2goKQogICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAg
ICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIG1faW1hZ2VMb2FkZXItPmhhdmVGaXJlZEJlZm9yZUxvYWRFdmVudCgpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlckltYWdlKHJlbmRlcmVy
KCkpOwotICAgICAgICAgICAgaW1hZ2VPYmotPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIt
PmltYWdlKCkpOyAKLSAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRl
ckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKKyAgICAgICAgICAgIFJlbmRlcklt
YWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNv
dXJjZSgpOworICAgICAgICAgICAgcmVuZGVySW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAorCiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG5v
IGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhhdmUgbm8gc3JjIGF0dHJpYnV0ZSwgc2V0CiAgICAg
ICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVh
ZC4KLSAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci0+aW1hZ2UoKSAmJiAhaW1hZ2VPYmot
PmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICAgICAgaW1hZ2VPYmotPnNldEltYWdlU2l6ZUZv
ckFsdFRleHQoKTsKKyAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci0+aW1hZ2UoKSAmJiAh
cmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgICAgICAgICByZW5k
ZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUg
IlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAi
UmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogLy8gSW1hZ2VM
b2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywg
c28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNwYWNlIFdU
RiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hl
ZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGllbnQodGhp
cyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQt
PnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVzZXRBbmlt
YXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3Vy
Y2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0
QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkK
QEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewot
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0K
KyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdl
UmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0K
IAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJy
b3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRT
b29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxvYWRlcjo6cmVuZGVy
SW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVu
dC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5BQkxFKFNWRykKKyAgICBp
ZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHSW1h
Z2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURF
TykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVy
VmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworICAgIHJldHVybiAw
OworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiB7Ci0gICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAg
aWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNWaWRlbygpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVu
ZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhl
IHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdlIGhhdmUK
LSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmlu
ZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8gY2hhbmdlIGlzIGhhcHBl
bmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChtX2ltYWdlICE9
IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hlZEltYWdlKSkKLSAgICAg
ICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwotICAg
IH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VS
ZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGlt
YWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlz
IHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCisgICAgLy8g
Y2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAobV9p
bWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJbWFnZSkp
CisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwog
fQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsK
IAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVi
bGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5n
QmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsK
IAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsKICAgICB2
b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZElt
YWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9S
ZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOwor
ICAgIHJldHVybiBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogfQogCiBz
dGF0aWMgSW1hZ2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA2MjQ0YTIuLjE1OGI1
YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21p
dW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0u
Y3BwCkBAIC00NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFn
ZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0lt
YWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9S
ZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFp
bWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gaW1h
Z2UtPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5k
ZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBp
ZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAg
IHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDU4MzczYjEuLmNh
ODM1MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENo
cm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJv
bWl1bS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2Uo
Tm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgQVNTRVJU
KG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQobm9kZS0+
cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1Jl
bmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2Fj
aGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9j
Y3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYTAw
NjljZi4uZGY4MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAg
LTk2LDggKzk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0g
Z3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwg
R0RLX1NFTEVDVElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cmVu
ZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRlckltYWdl
KiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKS0+aW1h
Z2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2Fj
aGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBp
bWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBB
U1NFUlQoY29jb2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+
cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1Jl
bmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2Fj
aGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9j
Y3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNw
cAppbmRleCBmNjc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNw
cApAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2Uo
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFn
ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVu
ZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1h
Z2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdl
LT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CisgICAgaWYg
KGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBy
ZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFz
dGVib2FyZFF0LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Q
YXN0ZWJvYXJkUXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEFTU0VS
VChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgp
KTsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5jYWNoZWRJbWFnZSgpOworICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIo
KSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdl
IHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMjkxNWY5ZC4uZGQxNDE4NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC02NzIsMTAgKzY3MiwxMCBAQCBz
dGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAgICAgICAgIHJldHVybiAwOwotICAg
IAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAg
IGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9y
T2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworCisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdl
UmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAog
ICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRl
eCAwM2VjZDM2Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBu
b2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9kZSAmJiBu
b2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAgICAgUmVu
ZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKTsKLSAg
ICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLT5j
YWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9y
T2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZDk2ZTBl
Li5mNmMwODQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjQzLDEyICsy
NDMsMTIgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKIHsKICAgICBpZiAo
IW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsK
ICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5k
ZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJlbmRl
cmVyKTsKLSAgICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwor
ICAgICAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkp
CisgICAgICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNTY1Nzgx
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1h
Z2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9k
ZSogbm9kZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5v
ZGUsIEludFNpemUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCisgICAgLCBtX2ltYWdl
UmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKHRoaXMsIHN0eWxlSW1hZ2UpKQog
ewogICAgIHVwZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElz
VmlzdWFsbHlOb25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsK
LSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJ
bWFnZSogbmV3SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJ
bWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsK
LSAgICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGll
bnQodGhpcyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0g
ICAgICAgICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQot
CiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwg
YWRkIHNvbWUgcGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lk
dGggPSA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpA
QCAtMTM1LDIyICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNC
b3hEZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6Omlt
YWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGlt
YWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJv
b2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lv
bnMsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlm
IChlcnJvck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNp
emVGb3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdl
UmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNl
dEltYWdlU2l6ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwog
ICAgIGJvb2wgc2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25z
IGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGlt
YWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBp
bWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAg
ICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
KSk7CisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAg
ICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNl
dEludHJpbnNpY1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdl
IGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAg
ICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAs
NyArMTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNv
b3JkaW5hdGVzIChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUg
Ym91bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBh
aW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAg
ICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVu
dEJveFJlY3QoKSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hh
bmdlZCByZWN0cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94
UmVjdCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJ
bWFnZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdl
ID09IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAg
ICAgIC8vIHRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8g
dGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5
LgogICAgICAgICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUg
KzE5Miw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiBuZXdJbWFnZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAg
Ci12b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVk
SW1hZ2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYg
KCFuZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4
LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRS
ZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFz
SW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+
aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAg
ICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAg
ICAgaW50IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVI
ZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAm
JiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkp
ICYmICh1c2FibGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJ
bWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYm
IHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+
aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBh
Y2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNl
bnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAg
ICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwog
ICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2Vu
dGVyWCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0g
aW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1
c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAo
Y2VudGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAg
ICAgICAgIGltYWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAg
ICAgICAgICAgICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIElu
dFBvaW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9y
UGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2MSw4IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGlu
dCB0eCwgaW50IHR5KQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHls
ZSgpLT5mb250KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+
IDAgJiYgY0hlaWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwg
Y0hlaWdodCk7CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYg
Y1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFn
ZVJlc291cmNlLT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBp
bWctPmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNCwyMiBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkg
PD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhh
c0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0
aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bWFnZSogaW1nID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFn
ZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1Rh
Z05hbWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6
IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/
IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAg
ICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29u
dGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNl
KCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRl
eHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQt
PmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVz
ZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFj
ZWRIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5z
aWNTaXplKCkuaGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBF
bGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjIsMTgg
QEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVu
ZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAog
ewotICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291
cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
Y2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsK
ICAgICAgICAgICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNv
bnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRv
UmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2lt
YWdlUmVzb3VyY2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNi
KS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkp
OwogICAgICAgICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQo
KSkKICAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRo
KCkpOwotICAgIGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lk
dGggPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVs
c2UgaWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNv
dXJjZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAg
ICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAg
ICAgICB3aWR0aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQg
dGhlIHdpZHRoIHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAg
ZWxzZQogICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSAr
NDQ5LDkgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAg
IGludCBoZWlnaHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdo
dCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNl
IGlmICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6
ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5p
bWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVp
Z2h0ID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVp
Z2h0IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQog
ICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0Njcs
NyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJ
bnRTaXplIHNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgp
KQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24n
dCBib3RoZXIgc2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNl
ZEhlaWdodCgpICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0
NzcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAg
ICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgp
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJl
ZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNv
dXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8g
RG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVw
bGFjZWRXaWR0aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5
ICs1MDIsNCBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJl
ZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2Uo
KQotewotICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjQxMDNmZTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJ
bWFnZV9oCiAjZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zMywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJ
bWFnZShOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFn
ZShOb2RlKiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGlt
YWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBjb25z
dCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZVJlc291cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQo
Q2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2b2lkIHVwZGF0ZUFsdFRleHQoKTsK
IAotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0K
ICAgICBIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKIAotICAgIHZvaWQgcmVzZXRB
bmltYXRpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkSW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJl
ZChUaW1lcjxSZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2Uq
IGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVy
biBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9
Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
ZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotCiAgICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNX
aWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNIZWlnaHRTcGVjaWZpZWQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFu
Z2VkKGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2Vk
KCkgeyBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5pbWFnZVB0cigpKTsgfQogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJJbWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bVJlcGxh
Y2VkSGVpZ2h0KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCBib29sIHVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJ
bWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgaWYg
KG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXpl
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShm
bG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJ
bWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBX
cmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdl
dCgpOyB9Ci0KICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQg
Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBUaGUg
aW1hZ2Ugd2UgYXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJ
bWFnZT4gbV9jYWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRpc3BsYXkg
YXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBtX2FsdFRl
eHQ7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJjZTsKIAot
ICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAgCiAgICAgZnJpZW5kIGNsYXNzIFJl
bmRlckltYWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGluZSBSZW5kZXJJbWFnZSogdG9SZW5k
ZXJJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3Qg
fHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5k
ZXJJbWFnZSo+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJJbWFnZSogdG9SZW5k
ZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFv
YmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKLSNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OlJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBSZW5kZXJJbWFnZShuKQote30KLQot
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OnNldFN0
eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlLT5pc0NhY2hlZElt
YWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZElt
YWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1fc3R5bGVJbWFnZSA9IGltYWdlOwot
ICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCi19CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnRfaAotI2RlZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotCi0jaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0eWxlSW1hZ2U7Ci0KLWNs
YXNzIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7Ci1w
dWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KE5vZGUqKTsKLSAgICB2aXJ0
dWFsIH5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsKLSAgICAKLSAgICB2b2lkIHNldFN0
eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIElt
YWdlKiBpbWFnZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5p
bWFnZSh0aGlzLCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3Vy
cmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IG1fc3R5
bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1h
Z2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhl
aWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBtdWx0aXBsaWVy
KTsgfQotICAgIAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNhbiBiZSAwIGlmIHdlIGdldCBhIGNh
bGxiYWNrIGZvciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBSZW5kZXJPYmplY3Q6OnNldFN0eWxl
LgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4g
bV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjAzYmE1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAg
KEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMp
IDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAg
ICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gUmVuZGVySW1h
Z2VSZXNvdXJjZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UpCit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRlcmVyLCBzdHlsZUltYWdlKTsKKwor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZShyZW5kZXJlcikpOwor
fQorCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9jYWNoZWRJ
bWFnZSgwKQoreworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdlUmVzb3Vy
Y2U6On5SZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAg
ICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworfQorCit2b2lk
IFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFn
ZSkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92
ZUNsaWVudChtX3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7CisgICAg
aWYgKG1fY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KG1f
cmVuZGVyZXIpOworICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQor
ICAgICAgICAgICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkp
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFuaW1hdGlvbigp
Cit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpbWFn
ZSgpLT5yZXNldEFuaW1hdGlvbigpOworCisgICAgaWYgKCFtX3JlbmRlcmVyLT5uZWVkc0xheW91
dCgpKQorICAgICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisKK0ltYWdlKiBSZW5kZXJJ
bWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdl
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworCisjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZTYxZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKQEAg
LTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9s
bEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0
b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8
a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VSZXNvdXJj
ZV9oCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3Mg
U3R5bGVJbWFnZTsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZSA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKFJlbmRlck9i
amVjdCosIFN0eWxlSW1hZ2UqID0gMCk7CisKKyAgICB2b2lkIHNldENhY2hlZEltYWdlKENhY2hl
ZEltYWdlKik7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlOyB9CisKKyAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICB2
aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lkdGggKi8gPSAwLCBpbnQgLyogaGVpZ2h0ICov
ID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkgOiBu
dWxsSW1hZ2UoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hl
ZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBmYWxzZTsgfQorCisgICAgdmlydHVh
bCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6
ZSgpOyB9CisKKyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFJlbmRlcklt
YWdlUmVzb3VyY2UoUmVuZGVyT2JqZWN0Kik7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigp
IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQorCitwcml2YXRlOgorICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOworICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJlcjsKKworICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Cit9OworCit2
b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKSBjb25zdAoreworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2Nh
Y2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTQ2OGU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9y
Zz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9y
Zz4KKyAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29s
Zi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgi
CisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyLCBT
dHlsZUltYWdlKiBzdHlsZUltYWdlKQorICAgIDogUmVuZGVySW1hZ2VSZXNvdXJjZShyZW5kZXIp
CisgICAgLCBtX3N0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkKK3sKKyAgICBBU1NFUlQobV9zdHlsZUlt
YWdlKTsKKworICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKKyAgICAgICAg
c2V0Q2FjaGVkSW1hZ2Uoc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KHN0eWxlSW1hZ2Up
LT5jYWNoZWRJbWFnZSgpKTsKKyAgICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudChyZW5kZXJlcigp
KTsKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZSgpCit7CisgICAgbV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVy
ZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRkMzk5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAg
ICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+
CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBh
dHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2VfaAorI2RlZmluZSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZV9oCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisjaW5jbHVkZSAiU3R5
bGVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlIDogcHVibGljIFJlbmRlckltYWdlUmVzb3VyY2UgeworcHVibGljOgorICAgIHZpcnR1
YWwgflJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZShyZW5kZXJlciwgc3R5bGVJbWFnZSkpOyB9CisKKyAgICB2aXJ0dWFs
IEltYWdlKiBpbWFnZShpbnQgd2lkdGggPSAwLCBpbnQgaGVpZ2h0ID0gMCkgeyByZXR1cm4gbV9z
dHlsZUltYWdlLT5pbWFnZShyZW5kZXJlcigpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRh
aW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2UtPnNldElt
YWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250
YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51c2VzSW1hZ2VDb250YWlu
ZXJTaXplKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KKworICAgIHZpcnR1YWwgSW50
U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5pbWFnZVNpemUocmVuZGVyZXIoKSwgbXVsdGlwbGllcik7IH0KKworICAgIHZpcnR1YWwg
V3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlID8g
bV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UoUmVuZGVyT2JqZWN0KiwgU3R5bGVJbWFnZSopOworICAgIFJlZlB0
cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZVN0eWxlSW1hZ2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggMjdlYWJjZC4uMTIzNGIwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNs
dWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKLSNp
bmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJ
bWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTEwNywxMCArMTA3LDggQEAgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2RlKiBub2RlLCBSZW5kZXJT
dHlsZSogc3R5bGUpCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMgYXMgaWYgd2UgZGlkbid0IHN1cHBv
cnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0
eWxlLT5jb250ZW50RGF0YSgpOwogICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVudERhdGEt
Pm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGRvYyAhPSBub2RlKSB7Ci0gICAg
ICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQobm9kZSk7CisgICAgICAgIFJlbmRlckltYWdlKiBpbWFn
ZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKG5vZGUsIGNvbnRlbnREYXRhLT5pbWFnZSgpKTsK
ICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlKTsKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2Uq
IHN0eWxlSW1hZ2UgPSBjb250ZW50RGF0YS0+aW1hZ2UoKSkKLSAgICAgICAgICAgIGltYWdlLT5z
ZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAppbmRleCA2OGUz
OTJjLi4yYmFiNDVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlz
dC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCi0jaW5jbHVk
ZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC00MzAsMTMgKzQzMCwxMCBAQCB2b2lkIFJl
bmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVj
dCogb3duZXIsIFBzZXVkbwogICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShwc2V1
ZG9FbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDT05URU5UX09CSkVDVDogewotICAgICAgICAgICAgICAgIFJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudCogaW1hZ2UgPSBuZXcgKG93bmVyLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQob3duZXItPmRvY3VtZW50KCkpOyAvLyBhbm9ueW1vdXMgb2JqZWN0Cisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgKG93bmVyLT5yZW5kZXJBcmVuYSgpKSBSZW5k
ZXJJbWFnZShvd25lci0+ZG9jdW1lbnQoKSwgY29udGVudC0+aW1hZ2UoKSk7IC8vIGFub255bW91
cyBvYmplY3QKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShw
c2V1ZG9FbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHls
ZS5yZWxlYXNlKCkpOwotICAgICAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdl
ID0gY29udGVudC0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxl
SW1hZ2Uoc3R5bGVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBpbWFnZTsKKyAg
ICAgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ09OVEVO
VF9DT1VOVEVSOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64249</attachid>
            <date>2010-08-12 13:14:29 -0700</date>
            <delta_ts>2010-08-12 13:27:24 -0700</delta_ts>
            <desc>Patch #1d (add RenderImageResource)</desc>
            <filename>0001-RenderImageResource.patch</filename>
            <type>text/plain</type>
            <size>70655</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjMzJiY2FlLi44OTkyMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTMsNyArNjEzLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDc3NDNkMjYuLjBlNTk5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw3ICsxMzY5
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA3M2E4ZWUuLjA2NDY5NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBk
YXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bh
c3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxh
Y2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9y
T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlUHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJD
b250ZW50KToKKwogMjAxMC0wOC0xMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgc29ydCBvZiBYQ29kZSBwcm9qZWN0IGZpbGUuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA3MDk3OWQ0Li44M2NmYjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIyNTIsOCArMjI1MiwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKIAlXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5o
IFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckluZGljYXRvci5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGJmNjJkMy4uNzIy
ZTkyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMyNzEsOCArMzI3MSwxMCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmgnLAotICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwJywKLSAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDM4YTE5
ZDguLjExYjNmYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTAwMiw3ICsxMDAyLDggQEAgU09VUkNFUyArPSBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCi0gICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
QEAgLTE4MTQsNyArMTgxNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmggXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisgICAg
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmOTVkMmMxLi5mNTY3NmMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTI5MTU3LDExICsyOTE1NywxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU1MWM5
OC4uMTAxZjE5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovOyB9OwogCQkwODVCOTJCQTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkw
ODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEy
M0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKKwkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CisJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IH07CiAJCTA4NjVDQ0U2MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovOyB9
OwogCQkwODY1Q0NFNzBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjVDQ0U1MEVEREY1MUIw
MERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oICovOyB9OwogCQkwODZBNDAwNjExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8q
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLzsgfTsKQEAgLTIwMyw2ICsyMDUsOCBA
QAogCQkwOEU2QTJFOTBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkEyRTcwRUVF
MDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhFNkUwRjEw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0
RWxlbWVudC5oICovOyB9OworCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki87IH07CisJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAw
ODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyB9OwogCQkwQTQ4
NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBT
b2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4
QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBI
ZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpA
QCAtNDc4OSw4ICs0NzkzLDYgQEAKIAkJQkNCMTZDMkQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZD
MTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzJFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJQkNCMTZDMkYw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
Ki87IH07Ci0JCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLzsgfTsKLQkJQkNCNEY4OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLzsgfTsKIAkJQkNCNzczNjEwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cCAqLzsgfTsKIAkJQkNCNzczNjIwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
NzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9Owog
CQlCQ0I3NzM2MzBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzYwMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTgzOSw2ICs1
ODQxLDggQEAKIAkJMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlc0N5
Y2xlU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI4MEVGREU3
M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxOb29wRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjVDQ0U1MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxOb29wRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODZBNDAwNTExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTkwOSw2ICs1OTEzLDggQEAKIAkJMDhFNkEyRTcw
RUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MUG9zdGZpZWxkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEZpZWxkU2V0
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEYwMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwODEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkI4NEIwMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkI4NEIxMEVDRTM3MzMwMERDMDY0RSAv
KiBXTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5
ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNTMwLDggKzEwNTM2LDYgQEAKIAkJQkNCMTZDMTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8q
IFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8q
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM1RjBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTMwLDggKzE2OTM0LDEw
IEBACiAJCQkJMEZEMzA4RDQxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovLAog
CQkJCUJDRUE0ODM2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCi0JCQkJQkNCNEY4
OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8s
Ci0JCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29u
dGVudC5oICovLAorCQkJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLywKKwkJCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5oICovLAorCQkJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8sCisJCQkJMDg2NDFENDYxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi8sCiAJCQkJQTdBQTY2RDQx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgKi8sCiAJCQkJQTdBQTY2RDUx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oICovLAogCQkJCUJDRUE0ODM4MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwICovLApAQCAtMTk0NjcsNyArMTk0NzMs
OCBAQAogCQkJCUJDRUE0ODZBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQzMDhENjExN0QxNjg1MDBBNzkxRjcgLyogUmVuZGVySUZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAv
KiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjJG
MDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QUE2NkQ3MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1MEQwMjk0MTFE
MEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MTk2Niw3ICsyMTk3Myw4IEBACiAJCQkJQkNFQTQ4NjkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckhUTUxDYW52YXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5
MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3NTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNCNEY4
OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdBQTY2RDYxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA2YjkwYjYzLi42YWEzMThhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xODE2LDMzICsxODE2LDM0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIWFs
dC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykp
IHsKICAgICAgICAgICAgIFJlbmRlckhUTUxDYW52YXMqIGNhbnZhcyA9IHRvUmVuZGVySFRNTENh
bnZhcyhtX3JlbmRlcmVyKTsKICAgICAgICAgICAgIGlmIChjYW52YXMtPmhlaWdodCgpIDw9IDEg
fHwgY2FudmFzLT53aWR0aCgpIDw9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
aWYgKGlzTmF0aXZlSW1hZ2UoKSkgewogICAgICAgICAgICAgLy8gY2hlY2sgZm9yIG9uZS1kaW1l
bnNpb25hbCBpbWFnZQotICAgICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJ
bWFnZShtX3JlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmIChpbWFnZS0+aGVpZ2h0KCkgPD0gMSB8
fCBpbWFnZS0+d2lkdGgoKSA8PSAxKQorICAgICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcklt
YWdlID0gdG9SZW5kZXJJbWFnZShtX3JlbmRlcmVyKTsKKyAgICAgICAgICAgIFJlbmRlckltYWdl
UmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJj
ZSgpOworICAgICAgICAgICAgaWYgKHJlbmRlckltYWdlLT5oZWlnaHQoKSA8PSAxIHx8IHJlbmRl
ckltYWdlLT53aWR0aCgpIDw9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgLy8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3
YXMgc3RyZXRjaGVkIGZyb20gb25lLWRpbWVuc2lvbmFsIGZpbGUgaW1hZ2UKLSAgICAgICAgICAg
IGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIEludFNpemUgaW1h
Z2VTaXplID0gaW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZShpbWFnZS0+dmlldygpLT56
b29tRmFjdG9yKCkpOworICAgICAgICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hl
ZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IHJlbmRlcklt
YWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZShyZW5kZXJJbWFnZS0+dmlldygp
LT56b29tRmFjdG9yKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZVNpemUuaGVpZ2h0
KCkgPD0gMSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAxOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICAvLyBtYWtlIGEg
cGxhdGZvcm0tc3BlY2lmaWMgZGVjaXNpb24KICAgICBpZiAoaXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpOwotICAgIAorCiAgICAg
cmV0dXJuICFtX3JlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSAmJiAhaXNXZWJBcmVhKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzZjcwMGVmLi4zMWVjZjAxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBIVE1MRW1iZWRF
bGVtZW50OjphdHRhY2goKQogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVu
dCgpOwogCiAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7Cisg
ICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNl
dENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDgyZWVhYjEuLjIzNTQ2ODggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKQEAgLTE5MSwxNSArMTkxLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKCkKICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRC
ZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1Jl
bmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkp
CisgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIoKSk7CisgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2Ug
PSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1hZ2VS
ZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1hZ2VP
YmotPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJlbmRl
ckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5v
IHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZv
ciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KLSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkgJiYgIWltYWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmotPnNl
dEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICBy
ZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDM0ODhjZGUuLmMzY2FhNTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTEyMDgsMTMgKzEyMDgsMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjphdHRhY2goKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFn
ZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIG1faW1hZ2VMb2FkZXItPmhhdmVGaXJlZEJl
Zm9yZUxvYWRFdmVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICAgICAgaW1hZ2VPYmotPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKLSAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
KyAgICAgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSBy
ZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICAgICAgcmVuZGVySW1hZ2VSZXNv
dXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAorCiAgICAgICAg
ICAgICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhhdmUgbm8gc3Jj
IGF0dHJpYnV0ZSwgc2V0CiAgICAgICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZv
ciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KLSAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci0+
aW1hZ2UoKSAmJiAhaW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICAgICAgaW1h
Z2VPYmotPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKyAgICAgICAgICAgIGlmICghbV9pbWFn
ZUxvYWRlci0+aW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkK
KyAgICAgICAgICAgICAgICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQy
YmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRl
ICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFC
TEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJl
cnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5
cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VM
b2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZElt
YWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJl
ci0+aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdl
UmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAg
IGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6
OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVu
dCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxl
bWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNl
dEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VS
ZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+
cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNl
bmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNl
KiBJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAg
ICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisj
aWYgRU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5k
aWYKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAg
ICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7Cisj
ZW5kaWYKKworICAgIHJldHVybiAwOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5k
ZXJlcigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJl
ci0+aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSog
aW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAg
ICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFn
ZSBvciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRo
aXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAg
ICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0g
ICAgICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwg
IWNhY2hlZEltYWdlKSkKLSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdl
KG1faW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJl
c291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYg
aXQgZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEg
Y29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hl
cmUgYSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFn
ZXMuCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVk
SW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBs
ZXRlIHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZElt
YWdlKG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRp
bmdCZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYy
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3Mg
UmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlcklt
YWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50
KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5k
ZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVu
ZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGlt
YWdlLT5jYWNoZWRJbWFnZSgpOworICAgIHJldHVybiBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5j
YWNoZWRJbWFnZSgpOwogfQogCiBzdGF0aWMgSW1hZ2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1l
bnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
CmluZGV4IDA2MjQ0YTIuLjE1OGI1YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC00NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hl
ZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVu
ZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdl
LT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgp
KQotICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+
Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJv
ck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAw
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hy
b21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0u
Y3BwCmluZGV4IDU4MzczYjEuLmNhODM1MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigp
KTsKICAgICBBU1NFUlQobm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJ
bWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSkt
PmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbWFn
ZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggYTAwNjljZi4uZGY4MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKQEAgLTk2LDggKzk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0Ns
aXBib2FyZCogY2xpcGJvYXJkID0gZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rp
c3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNT
RVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdl
KCkpOwotICAgIFJlbmRlckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVu
ZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hl
ZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShu
b2RlLT5yZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlm
ICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICBBU1NFUlQoY29jb2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUt
PnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJ
bWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSkt
PmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCBmNjc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJ
bWFnZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVy
IHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRl
ckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+
Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkK
LSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNh
Y2hlZEltYWdlKCk7CisgICAgaWYgKGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+
cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkp
LT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVy
SW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsK
ICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXgg
MjkxNWY5ZC4uZGQxNDE4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBA
IC02NzIsMTAgKzY3MiwxMCBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAg
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2Ut
PmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5j
YWNoZWRJbWFnZSgpOworCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJ
bWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAo
Y2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJl
dHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCAwM2VjZDM2Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCkt
PmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShu
b2RlLT5yZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJl
ci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJl
ci0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIElt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAppbmRleCBkZDk2ZTBlLi5mNmMwODQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcApAQCAtMjQzLDEyICsyNDMsMTIgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1
cm4gMDsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1h
Z2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFn
ZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJj
ZSgpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZElt
YWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggMjA3MzQ3OS4uNTY1NzgxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
NTUsMzUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAg
ICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZElt
YWdlKDApCisgICAgLCBtX2ltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRl
KHRoaXMsIHN0eWxlSW1hZ2UpKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXco
KS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFn
ZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlOjpz
ZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVk
SW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFn
ZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2Fj
aGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBt
X2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdl
LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFn
ZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBh
bHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUgcGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0
IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIyICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAg
ICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0g
ICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5l
d0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAg
Ly8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2Yg
dGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6
ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwot
ICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAg
aW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNl
LT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wgc2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAg
ICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0
byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9
IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJy
b3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VT
aXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdl
U2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNh
c2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1p
Z2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBj
YXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNl
IHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAg
ICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3Qg
aXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVzIChwcmUtem9vbWluZyksCiAgICAgICAgICAg
ICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNC
b3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgq
cmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJv
eFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1h
cFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOwogICAgICAgICAgICAgLy8gR3VhcmQg
YWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0
LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyAr
MTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigp
KSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAm
JiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGlu
ZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4g
cmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRD
aGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Miw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1h
Z2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigp
Ci17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmlt
YXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWlu
dCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4
LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBp
ZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0
eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAg
ICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAg
aWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRo
ID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2FibGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0
KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAm
JiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVz
YWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDZW50
ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0g
ICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0
aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBp
bWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAg
ICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRl
clkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAg
ICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsK
ICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNl
bnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFk
ICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAgICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9w
UGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGlt
YWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsg
aW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHls
ZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwog
ICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
IApAQCAtMjg4LDggKzI2MSw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBh
eSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICho
YXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2Uq
IGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVz
b3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAg
ICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwog
ICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0zNTEsMjIgKzMyNCwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3Mo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJy
ZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYg
KCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1nID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5v
ZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1h
Z2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29t
cG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
LCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dR
dWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBh
aW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5z
aXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwg
Y29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRl
ckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBlcnJv
ck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQo
KSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25z
dApAQCAtNDQ5LDE4ICs0MjIsMTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZp
ZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5j
bHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkK
KyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDog
Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAg
ICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYikt
PmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsK
KyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3VyY2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJ
bnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2Ip
LT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAgICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAg
aWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0
aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAgIGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAg
IGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAg
ICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyBy
ZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRoIHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQg
Y29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRp
b1dpZHRoKCk7CkBAIC00NzYsOSArNDQ5LDkgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFj
ZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWlnaHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lm
aWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCkt
PmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAg
ICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgp
OwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmICht
X2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0
ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5o
ZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVI
ZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZl
bHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFp
bmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWln
aHQoKTsKQEAgLTQ5NCw3ICs0NjcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRp
b1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAg
aWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdl
KCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFn
ZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4g
c2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVy
UmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgpICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWln
aHQoKTsKIH0KQEAgLTUwNCw3ICs0NzcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RS
YXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwog
ICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0lt
YWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJ
bWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1
cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJl
bmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUu
d2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDIsNCBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJl
ZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJl
bmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4
IGI4OWE2NTIuLjQxMDNmZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUs
NyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2lu
Y2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1h
cEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1h
Z2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJl
bmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3Vy
Y2UuZ2V0KCk7IH0KKyAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNl
dEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2
b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25z
dDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1
YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBo
ZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJy
ZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNI
ZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXpl
Q2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lk
IGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5p
bWFnZVB0cigpKTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmly
dHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAg
dmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldElt
YWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6
ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lk
dGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXBy
b3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2UgYXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAg
ICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxl
LgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+
IG1faW1hZ2VSZXNvdXJjZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAg
CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGlu
ZSBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7
CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25z
dCBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
LXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBS
ZW5kZXJJbWFnZShuKQote30KLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBt
X3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAg
aWYgKGltYWdlLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0
aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1f
c3R5bGVJbWFnZSA9IGltYWdlOwotICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwot
fQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotI2RlZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnRfaAotCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFN0eWxlSW1hZ2U7Ci0KLWNsYXNzIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1
YmxpYyBSZW5kZXJJbWFnZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50KE5vZGUqKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsK
LSAgICAKLSAgICB2b2lkIHNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwotICAgIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyBy
ZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZSh0aGlzLCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZp
cnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5l
cnJvck9jY3VycmVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUp
OyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdl
U2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
U2l6ZSh0aGlzLCBtdWx0aXBsaWVyKTsgfQotICAgIAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNh
biBiZSAwIGlmIHdlIGdldCBhIGNhbGxiYWNrIGZvciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBS
ZW5kZXJPYmplY3Q6OnNldFN0eWxlLgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdl
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkg
OiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYmE1MzMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCww
ICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2Fy
ZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1h
Z2VSZXNvdXJjZT4gUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisg
ICAgICAgIHJldHVybiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRl
cmVyLCBzdHlsZUltYWdlKTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VS
ZXNvdXJjZShyZW5kZXJlcikpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFn
ZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRl
cmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQoreworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9
CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1f
cmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdl
KENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJ
bWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAg
IG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZElt
YWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9jYWNoZWRJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2Vk
KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigpOworCisgICAgaWYgKCFt
X3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAgICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7
Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJl
dHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
CisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRjZTYxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFs
bGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlX2gKKyNkZWZp
bmUgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIK
KyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UmVuZGVyT2JqZWN0OworY2xhc3MgU3R5bGVJbWFnZTsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNv
dXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVy
SW1hZ2VSZXNvdXJjZSgpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNv
dXJjZT4gY3JlYXRlKFJlbmRlck9iamVjdCosIFN0eWxlSW1hZ2UqID0gMCk7CisKKyAgICB2b2lk
IHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9CisKKyAgICB2b2lkIHJlc2V0
QW5pbWF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lkdGggKi8g
PSAwLCBpbnQgLyogaGVpZ2h0ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlKCkgOiBudWxsSW1hZ2UoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJv
ck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdl
LT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5l
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNo
ZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXpl
KG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0
ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKworcHJv
dGVjdGVkOgorICAgIFJlbmRlckltYWdlUmVzb3VyY2UoUmVuZGVyT2JqZWN0Kik7CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICBjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQorCitw
cml2YXRlOgorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZElt
YWdlOworICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKworICAgIHN0YXRpYyBJbWFnZSog
bnVsbEltYWdlKCk7Cit9OworCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29u
dGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmIChtX2NhY2hl
ZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdl
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTQ2OGU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxs
ZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBw
YXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNs
dWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFJl
bmRlck9iamVjdCogcmVuZGVyLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQorICAgIDogUmVuZGVy
SW1hZ2VSZXNvdXJjZShyZW5kZXIpCisgICAgLCBtX3N0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkKK3sK
KyAgICBBU1NFUlQobV9zdHlsZUltYWdlKTsKKworICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzQ2Fj
aGVkSW1hZ2UoKSkKKyAgICAgICAgc2V0Q2FjaGVkSW1hZ2Uoc3RhdGljX2Nhc3Q8U3R5bGVDYWNo
ZWRJbWFnZSo+KHN0eWxlSW1hZ2UpLT5jYWNoZWRJbWFnZSgpKTsKKyAgICBtX3N0eWxlSW1hZ2Ut
PmFkZENsaWVudChyZW5kZXJlcigpKTsKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSgpCit7CisgICAgbV9zdHlsZUltYWdl
LT5yZW1vdmVDbGllbnQocmVuZGVyZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMzk5YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8
a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29p
dmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2VfaAorI2RlZmluZSBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZV9oCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291
cmNlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2NsYXNzIFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlIDogcHVibGljIFJlbmRlckltYWdlUmVzb3VyY2Ug
eworcHVibGljOgorICAgIHZpcnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShyZW5kZXJlciwgc3R5bGVJbWFn
ZSkpOyB9CisKKyAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgd2lkdGggPSAwLCBpbnQgaGVp
Z2h0ID0gMCkgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZShyZW5kZXJlcigpLCBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3Qg
eyBtX3N0eWxlSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQorICAgIHZpcnR1
YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7
IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUocmVuZGVyZXIoKSwgbXVsdGlwbGll
cik7IH0KKworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9CisKK3ByaXZh
dGU6CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoUmVuZGVyT2JqZWN0KiwgU3R5
bGVJbWFnZSopOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZVN0eWxlSW1hZ2Vf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZC4uMTIzNGIwNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRmxleGlibGVCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAg
LTEwNywxMCArMTA3LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVj
dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMg
YXMgaWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENvbnRlbnRE
YXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOwogICAgIGlmIChjb250ZW50
RGF0YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYm
IGRvYyAhPSBub2RlKSB7Ci0gICAgICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1h
Z2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQobm9kZSk7CisgICAg
ICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKG5vZGUsIGNv
bnRlbnREYXRhLT5pbWFnZSgpKTsKICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlKTsKLSAg
ICAgICAgaWYgKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50RGF0YS0+aW1hZ2UoKSkK
LSAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwogICAgICAgICBy
ZXR1cm4gaW1hZ2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcAppbmRleCA2OGUzOTJjLi4yYmFiNDVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5k
ZXJDb3VudGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisj
aW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC00MzAs
MTMgKzQzMCwxMCBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0
ZXJDb250ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkbwogICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT5zZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDT05URU5UX09CSkVDVDogewotICAgICAgICAgICAgICAg
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBuZXcgKG93bmVyLT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQob3duZXItPmRvY3VtZW50KCkpOyAv
LyBhbm9ueW1vdXMgb2JqZWN0CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgKG93bmVy
LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJJbWFnZShvd25lci0+ZG9jdW1lbnQoKSwgY29udGVudC0+
aW1hZ2UoKSk7IC8vIGFub255bW91cyBvYmplY3QKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAg
IHN0eWxlLT5pbmhlcml0RnJvbShwc2V1ZG9FbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgICAg
IGltYWdlLT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOwotICAgICAgICAgICAgICAgIGlmIChT
dHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudC0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAg
ICAgICAgaW1hZ2UtPnNldFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSk7Ci0gICAgICAgICAgICAgICAg
cmVuZGVyZXIgPSBpbWFnZTsKKyAgICAgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5
bGUucmVsZWFzZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgQ09OVEVOVF9DT1VOVEVSOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64254</attachid>
            <date>2010-08-12 13:27:24 -0700</date>
            <delta_ts>2010-08-12 14:12:03 -0700</delta_ts>
            <desc>Patch #1e (add RenderImageResource)</desc>
            <filename>0001-RenderImageResource.patch</filename>
            <type>text/plain</type>
            <size>70605</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjMzJiY2FlLi44OTkyMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTMsNyArNjEzLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDc3NDNkMjYuLjBlNTk5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw3ICsxMzY5
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA3M2E4ZWUuLjA2NDY5NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBk
YXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bh
c3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxh
Y2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9y
T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlUHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJD
b250ZW50KToKKwogMjAxMC0wOC0xMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgc29ydCBvZiBYQ29kZSBwcm9qZWN0IGZpbGUuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA3MDk3OWQ0Li44M2NmYjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIyNTIsOCArMjI1MiwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKIAlXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5o
IFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckluZGljYXRvci5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGJmNjJkMy4uNzIy
ZTkyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMyNzEsOCArMzI3MSwxMCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmgnLAotICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwJywKLSAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDM4YTE5
ZDguLjExYjNmYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTAwMiw3ICsxMDAyLDggQEAgU09VUkNFUyArPSBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCi0gICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
QEAgLTE4MTQsNyArMTgxNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmggXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisgICAg
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmOTVkMmMxLi5mNTY3NmMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTI5MTU3LDExICsyOTE1NywxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU1MWM5
OC4uMTAxZjE5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovOyB9OwogCQkwODVCOTJCQTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkw
ODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEy
M0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKKwkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CisJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IH07CiAJCTA4NjVDQ0U2MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovOyB9
OwogCQkwODY1Q0NFNzBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjVDQ0U1MEVEREY1MUIw
MERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oICovOyB9OwogCQkwODZBNDAwNjExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8q
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLzsgfTsKQEAgLTIwMyw2ICsyMDUsOCBA
QAogCQkwOEU2QTJFOTBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkEyRTcwRUVF
MDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhFNkUwRjEw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0
RWxlbWVudC5oICovOyB9OworCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki87IH07CisJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAw
ODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyB9OwogCQkwQTQ4
NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBT
b2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4
QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBI
ZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpA
QCAtNDc4OSw4ICs0NzkzLDYgQEAKIAkJQkNCMTZDMkQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZD
MTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzJFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJQkNCMTZDMkYw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
Ki87IH07Ci0JCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLzsgfTsKLQkJQkNCNEY4OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLzsgfTsKIAkJQkNCNzczNjEwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cCAqLzsgfTsKIAkJQkNCNzczNjIwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
NzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9Owog
CQlCQ0I3NzM2MzBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzYwMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTgzOSw2ICs1
ODQxLDggQEAKIAkJMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlc0N5
Y2xlU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI4MEVGREU3
M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxOb29wRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjVDQ0U1MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxOb29wRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODZBNDAwNTExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTkwOSw2ICs1OTEzLDggQEAKIAkJMDhFNkEyRTcw
RUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MUG9zdGZpZWxkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEZpZWxkU2V0
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEYwMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwODEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkI4NEIwMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkI4NEIxMEVDRTM3MzMwMERDMDY0RSAv
KiBXTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5
ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNTMwLDggKzEwNTM2LDYgQEAKIAkJQkNCMTZDMTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8q
IFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8q
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM1RjBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTMwLDggKzE2OTM0LDEw
IEBACiAJCQkJMEZEMzA4RDQxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovLAog
CQkJCUJDRUE0ODM2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCi0JCQkJQkNCNEY4
OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8s
Ci0JCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29u
dGVudC5oICovLAorCQkJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLywKKwkJCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5oICovLAorCQkJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8sCisJCQkJMDg2NDFENDYxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi8sCiAJCQkJQTdBQTY2RDQx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgKi8sCiAJCQkJQTdBQTY2RDUx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oICovLAogCQkJCUJDRUE0ODM4MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwICovLApAQCAtMTk0NjcsNyArMTk0NzMs
OCBAQAogCQkJCUJDRUE0ODZBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQzMDhENjExN0QxNjg1MDBBNzkxRjcgLyogUmVuZGVySUZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAv
KiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjJG
MDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QUE2NkQ3MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1MEQwMjk0MTFE
MEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MTk2Niw3ICsyMTk3Myw4IEBACiAJCQkJQkNFQTQ4NjkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckhUTUxDYW52YXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5
MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3NTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNCNEY4
OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdBQTY2RDYxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA2YjkwYjYzLi42YWEzMThhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xODE2LDMzICsxODE2LDM0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIWFs
dC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykp
IHsKICAgICAgICAgICAgIFJlbmRlckhUTUxDYW52YXMqIGNhbnZhcyA9IHRvUmVuZGVySFRNTENh
bnZhcyhtX3JlbmRlcmVyKTsKICAgICAgICAgICAgIGlmIChjYW52YXMtPmhlaWdodCgpIDw9IDEg
fHwgY2FudmFzLT53aWR0aCgpIDw9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
aWYgKGlzTmF0aXZlSW1hZ2UoKSkgewogICAgICAgICAgICAgLy8gY2hlY2sgZm9yIG9uZS1kaW1l
bnNpb25hbCBpbWFnZQotICAgICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJ
bWFnZShtX3JlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmIChpbWFnZS0+aGVpZ2h0KCkgPD0gMSB8
fCBpbWFnZS0+d2lkdGgoKSA8PSAxKQorICAgICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcklt
YWdlID0gdG9SZW5kZXJJbWFnZShtX3JlbmRlcmVyKTsKKyAgICAgICAgICAgIFJlbmRlckltYWdl
UmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJj
ZSgpOworICAgICAgICAgICAgaWYgKHJlbmRlckltYWdlLT5oZWlnaHQoKSA8PSAxIHx8IHJlbmRl
ckltYWdlLT53aWR0aCgpIDw9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgLy8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3
YXMgc3RyZXRjaGVkIGZyb20gb25lLWRpbWVuc2lvbmFsIGZpbGUgaW1hZ2UKLSAgICAgICAgICAg
IGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIEludFNpemUgaW1h
Z2VTaXplID0gaW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZShpbWFnZS0+dmlldygpLT56
b29tRmFjdG9yKCkpOworICAgICAgICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hl
ZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IHJlbmRlcklt
YWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZShyZW5kZXJJbWFnZS0+dmlldygp
LT56b29tRmFjdG9yKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZVNpemUuaGVpZ2h0
KCkgPD0gMSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAxOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICAvLyBtYWtlIGEg
cGxhdGZvcm0tc3BlY2lmaWMgZGVjaXNpb24KICAgICBpZiAoaXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpOwotICAgIAorCiAgICAg
cmV0dXJuICFtX3JlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSAmJiAhaXNXZWJBcmVhKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzZjcwMGVmLi4zMWVjZjAxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBIVE1MRW1iZWRF
bGVtZW50OjphdHRhY2goKQogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVu
dCgpOwogCiAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7Cisg
ICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNl
dENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDgyZWVhYjEuLjIzNTQ2ODggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKQEAgLTE5MSwxNSArMTkxLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKCkKICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRC
ZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1Jl
bmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkp
CisgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIoKSk7CisgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2Ug
PSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1hZ2VS
ZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1hZ2VP
YmotPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJlbmRl
ckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5v
IHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZv
ciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KLSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkgJiYgIWltYWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmotPnNl
dEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICBy
ZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDM0ODhjZGUuLmMzY2FhNTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTEyMDgsMTMgKzEyMDgsMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjphdHRhY2goKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFn
ZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIG1faW1hZ2VMb2FkZXItPmhhdmVGaXJlZEJl
Zm9yZUxvYWRFdmVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICAgICAgaW1hZ2VPYmotPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKLSAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
KyAgICAgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSBy
ZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICAgICAgcmVuZGVySW1hZ2VSZXNv
dXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAorCiAgICAgICAg
ICAgICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhhdmUgbm8gc3Jj
IGF0dHJpYnV0ZSwgc2V0CiAgICAgICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZv
ciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KLSAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci0+
aW1hZ2UoKSAmJiAhaW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICAgICAgaW1h
Z2VPYmotPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKyAgICAgICAgICAgIGlmICghbV9pbWFn
ZUxvYWRlci0+aW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkK
KyAgICAgICAgICAgICAgICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQy
YmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRl
ICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFC
TEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJl
cnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5
cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VM
b2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZElt
YWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJl
ci0+aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdl
UmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAg
IGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6
OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRl
cjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVu
dCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxl
bWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNl
dEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VS
ZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+
cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFn
ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNl
bmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNl
KiBJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAg
ICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisj
aWYgRU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5k
aWYKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAg
ICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7Cisj
ZW5kaWYKKworICAgIHJldHVybiAwOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5k
ZXJlcigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJl
ci0+aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSog
aW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAg
ICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFn
ZSBvciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRo
aXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAg
ICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0g
ICAgICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwg
IWNhY2hlZEltYWdlKSkKLSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdl
KG1faW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJl
c291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYg
aXQgZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEg
Y29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hl
cmUgYSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFn
ZXMuCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVk
SW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBs
ZXRlIHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZElt
YWdlKG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRp
bmdCZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYy
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3Mg
UmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlcklt
YWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50
KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5k
ZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVu
ZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGlt
YWdlLT5jYWNoZWRJbWFnZSgpOworICAgIHJldHVybiBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5j
YWNoZWRJbWFnZSgpOwogfQogCiBzdGF0aWMgSW1hZ2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1l
bnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3Bw
CmluZGV4IDA2MjQ0YTIuLjE1OGI1YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC00NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hl
ZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVu
ZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdl
LT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgp
KQotICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+
Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJv
ck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAw
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hy
b21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0u
Y3BwCmluZGV4IDU4MzczYjEuLmNhODM1MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigp
KTsKICAgICBBU1NFUlQobm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJ
bWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSkt
PmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbWFn
ZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggYTAwNjljZi4uZGY4MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKQEAgLTk2LDggKzk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0Ns
aXBib2FyZCogY2xpcGJvYXJkID0gZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rp
c3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNT
RVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdl
KCkpOwotICAgIFJlbmRlckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVu
ZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hl
ZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShu
b2RlLT5yZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlm
ICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICBBU1NFUlQoY29jb2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUt
PnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJ
bWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSkt
PmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCBmNjc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJ
bWFnZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVy
IHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRl
ckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+
Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkK
LSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNh
Y2hlZEltYWdlKCk7CisgICAgaWYgKGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+
cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkp
LT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVy
SW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsK
ICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXgg
MjkxNWY5ZC4uZGQxNDE4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBA
IC02NzIsMTAgKzY3MiwxMCBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAg
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2Ut
PmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5j
YWNoZWRJbWFnZSgpOworCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJ
bWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAo
Y2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJl
dHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCAwM2VjZDM2Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCkt
PmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShu
b2RlLT5yZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJl
ci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJl
ci0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIElt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAppbmRleCBkZDk2ZTBlLi5mNmMwODQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcApAQCAtMjQzLDEyICsyNDMsMTIgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1
cm4gMDsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1h
Z2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFn
ZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJj
ZSgpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZElt
YWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggMjA3MzQ3OS4uNTY1NzgxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
NTUsMzUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAg
ICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZElt
YWdlKDApCisgICAgLCBtX2ltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRl
KHRoaXMsIHN0eWxlSW1hZ2UpKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXco
KS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFn
ZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlOjpz
ZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVk
SW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFn
ZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2Fj
aGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBt
X2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdl
LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFn
ZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBh
bHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUgcGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0
IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIyICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAg
ICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0g
ICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5l
d0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAg
Ly8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2Yg
dGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6
ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwot
ICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAg
aW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNl
LT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wgc2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAg
ICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0
byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9
IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJy
b3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VT
aXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdl
U2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNh
c2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1p
Z2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBj
YXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNl
IHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAg
ICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3Qg
aXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVzIChwcmUtem9vbWluZyksCiAgICAgICAgICAg
ICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNC
b3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgq
cmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJv
eFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1h
cFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOwogICAgICAgICAgICAgLy8gR3VhcmQg
YWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0
LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyAr
MTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigp
KSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAm
JiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGlu
ZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4g
cmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRD
aGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Miw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1h
Z2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigp
Ci17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmlt
YXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWlu
dCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4
LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBp
ZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0
eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAg
ICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAg
aWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRo
ID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2FibGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0
KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAm
JiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVz
YWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDZW50
ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0g
ICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0
aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBp
bWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAg
ICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRl
clkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAg
ICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsK
ICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNl
bnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFk
ICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAgICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9w
UGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGlt
YWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsg
aW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHls
ZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwog
ICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
IApAQCAtMjg4LDggKzI2MSw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBh
eSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICho
YXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2Uq
IGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVz
b3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAg
ICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwog
ICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0zNTEsMjIgKzMyNCwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3Mo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJy
ZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYg
KCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1nID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5v
ZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1h
Z2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29t
cG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
LCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dR
dWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBh
aW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5z
aXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwg
Y29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRl
ckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBlcnJv
ck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQo
KSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25z
dApAQCAtNDQ5LDE4ICs0MjIsMTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZp
ZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5j
bHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkK
KyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDog
Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAg
ICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYikt
PmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsK
KyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3VyY2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJ
bnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2Ip
LT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAgICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAg
aWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0
aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAgIGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAg
IGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAg
ICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyBy
ZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRoIHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQg
Y29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRp
b1dpZHRoKCk7CkBAIC00NzYsOSArNDQ5LDkgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFj
ZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWlnaHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lm
aWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCkt
PmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAg
ICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgp
OwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmICht
X2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0
ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5o
ZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVI
ZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZl
bHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFp
bmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWln
aHQoKTsKQEAgLTQ5NCw3ICs0NjcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRp
b1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAg
aWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdl
KCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFn
ZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4g
c2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVy
UmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgpICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWln
aHQoKTsKIH0KQEAgLTUwNCw3ICs0NzcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RS
YXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwog
ICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0lt
YWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJ
bWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1
cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJl
bmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUu
d2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDIsNCBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJl
ZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJl
bmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4
IGI4OWE2NTIuLjQxMDNmZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUs
NyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2lu
Y2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1h
cEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1h
Z2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJl
bmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3Vy
Y2UuZ2V0KCk7IH0KKyAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNl
dEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2
b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25z
dDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1
YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBo
ZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJy
ZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNI
ZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXpl
Q2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lk
IGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5p
bWFnZVB0cigpKTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmly
dHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAg
dmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldElt
YWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6
ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lk
dGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXBy
b3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2UgYXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAg
ICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxl
LgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+
IG1faW1hZ2VSZXNvdXJjZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAg
CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGlu
ZSBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7
CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25z
dCBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
LXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBS
ZW5kZXJJbWFnZShuKQote30KLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBt
X3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAg
aWYgKGltYWdlLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0
aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1f
c3R5bGVJbWFnZSA9IGltYWdlOwotICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwot
fQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotI2RlZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnRfaAotCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFN0eWxlSW1hZ2U7Ci0KLWNsYXNzIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1
YmxpYyBSZW5kZXJJbWFnZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50KE5vZGUqKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsK
LSAgICAKLSAgICB2b2lkIHNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwotICAgIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyBy
ZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZSh0aGlzLCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZp
cnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5l
cnJvck9jY3VycmVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUp
OyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdl
U2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
U2l6ZSh0aGlzLCBtdWx0aXBsaWVyKTsgfQotICAgIAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNh
biBiZSAwIGlmIHdlIGdldCBhIGNhbGxiYWNrIGZvciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBS
ZW5kZXJPYmplY3Q6OnNldFN0eWxlLgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdl
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkg
OiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYmE1MzMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCww
ICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2Fy
ZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1h
Z2VSZXNvdXJjZT4gUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisg
ICAgICAgIHJldHVybiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRl
cmVyLCBzdHlsZUltYWdlKTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VS
ZXNvdXJjZShyZW5kZXJlcikpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFn
ZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRl
cmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQoreworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9
CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1f
cmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdl
KENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJ
bWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAg
IG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZElt
YWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9jYWNoZWRJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2Vk
KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigpOworCisgICAgaWYgKCFt
X3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAgICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7
Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJl
dHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kY2U2MWViCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykg
MjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAg
ICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3Rl
cmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZV9o
CisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VfaAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIk5vbmNvcHlh
YmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0eWxlSW1hZ2U7CisKK2NsYXNzIFJlbmRlcklt
YWdlUmVzb3VyY2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwg
flJlbmRlckltYWdlUmVzb3VyY2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlcklt
YWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5kZXJPYmplY3QqLCBTdHlsZUltYWdlKiA9IDApOworCisg
ICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOworICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBi
b29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQorCisgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpOworCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdp
ZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2Ug
PyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNo
ZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VD
b250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/
IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCgpIDogZmFsc2U7IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVs
dGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmlt
YWdlU2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUoKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVk
SW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCopOwor
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7
IH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisKKyAgICBzdGF0aWMg
SW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJ
bWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJT
aXplKHNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5k
ZXJJbWFnZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU0Njhl
NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGly
ayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxw
YXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZShSZW5kZXJPYmplY3QqIHJlbmRlciwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICA6
IFJlbmRlckltYWdlUmVzb3VyY2UocmVuZGVyKQorICAgICwgbV9zdHlsZUltYWdlKHN0eWxlSW1h
Z2UpCit7CisgICAgQVNTRVJUKG1fc3R5bGVJbWFnZSk7CisKKyAgICBpZiAobV9zdHlsZUltYWdl
LT5pc0NhY2hlZEltYWdlKCkpCisgICAgICAgIHNldENhY2hlZEltYWdlKHN0YXRpY19jYXN0PFN0
eWxlQ2FjaGVkSW1hZ2UqPihzdHlsZUltYWdlKS0+Y2FjaGVkSW1hZ2UoKSk7CisgICAgbV9zdHls
ZUltYWdlLT5hZGRDbGllbnQocmVuZGVyZXIoKSk7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKQoreworICAgIG1fc3R5
bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDM5OWMzCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9n
YS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaWZuZGVmIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKyNkZWZp
bmUgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2VfaAorCisjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0OworCitj
bGFzcyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZVJl
c291cmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZSgpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UocmVuZGVyZXIsIHN0
eWxlSW1hZ2UpKTsgfQorCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHdpZHRoID0gMCwg
aW50IGhlaWdodCA9IDApIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UocmVuZGVyZXIoKSwg
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUp
IGNvbnN0IHsgbV9zdHlsZUltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1h
Z2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhl
aWdodCgpOyB9CisKKyAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHJlbmRlcmVyKCksIG11
bHRpcGxpZXIpOyB9CisKKyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsgfQor
Citwcml2YXRlOgorICAgIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFJlbmRlck9iamVj
dCosIFN0eWxlSW1hZ2UqKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VTdHls
ZUltYWdlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDI3ZWFiY2QuLjEyMzRi
MDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1
ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxp
bmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVt
LmgiCkBAIC0xMDcsMTAgKzEwNyw4IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpjcmVh
dGVPYmplY3QoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIC8vIE90aGVyd2lz
ZSBhY3RzIGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KICAgICBjb25zdCBD
b250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKICAgICBpZiAo
Y29udGVudERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1h
Z2UoKSAmJiBkb2MgIT0gbm9kZSkgewotICAgICAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG5vZGUp
OworICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShu
b2RlLCBjb250ZW50RGF0YS0+aW1hZ2UoKSk7CiAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHls
ZSk7Ci0gICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudERhdGEtPmlt
YWdlKCkpCi0gICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKICAg
ICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdENoaWxkTGlzdC5jcHAKaW5kZXggNjhlMzkyYy4uMmJhYjQ1YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQ291bnRlci5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgpA
QCAtNDMwLDEzICs0MzAsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJl
Zm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG8KICAgICAgICAgICAg
ICAgICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6IHsKLSAgICAgICAg
ICAgICAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChvd25lci0+
cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG93bmVyLT5kb2N1bWVu
dCgpKTsgLy8gYW5vbnltb3VzIG9iamVjdAorICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3
IChvd25lci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2Uob3duZXItPmRvY3VtZW50KCksIGNv
bnRlbnQtPmltYWdlKCkpOyAvLyBhbm9ueW1vdXMgb2JqZWN0CiAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAg
ICAgICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAg
ICAgICAgICBpbWFnZS0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGNvbnRlbnQtPmltYWdlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwotICAgICAgICAg
ICAgICAgIHJlbmRlcmVyID0gaW1hZ2U7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0
eWxlKHN0eWxlLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIENPTlRFTlRfQ09VTlRFUjoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64259</attachid>
            <date>2010-08-12 14:12:03 -0700</date>
            <delta_ts>2010-08-12 14:38:48 -0700</delta_ts>
            <desc>Patch #1f (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>73260</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjMzJiY2FlLi44OTkyMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTMsNyArNjEzLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDc3NDNkMjYuLjBlNTk5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw3ICsxMzY5
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA3M2E4ZWUuLmI3N2FjNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1h
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJv
ck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
UmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6
OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdl
UHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisK
IDIwMTAtMDgtMTIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIHNvcnQgb2YgWENvZGUgcHJvamVjdCBmaWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNzA5NzlkNC4u
ODNjZmIwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0yMjUyLDggKzIyNTIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwK
LQlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKLQlX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3Iu
Y3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRiZjYyZDMuLjcyMmU5MjkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zMjcxLDggKzMyNzEsMTAgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAzOGExOWQ4Li4xMWIzZmEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTEwMDIsNyArMTAwMiw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQuY3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODE0LDcg
KzE4MTUsOCBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5oIFwKLSAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
XAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
Zjk1ZDJjMS4uZjU2NzZjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC0yOTE1NywxMSArMjkxNTcsMTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlNTFjOTguLjEwMWYxOTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiAr
MTIwLDggQEAKIAkJMDg1QjA1QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsg
fTsKIAkJMDg1QjkyQkEwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCODBFRkRF
NzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZE
RTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1E
YXRhQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTA4
NjQxRDQ3MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0
NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICov
OyB9OworCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oICovOyB9OwogCQkwODY1Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUND
RTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg2NUND
RTcwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyog
V01MTm9vcEVsZW1lbnQuaCAqLzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAKIAkJMDhFNkEy
RTkwRUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIw
NiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxk
U2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxG
aWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAq
LzsgfTsKKwkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYw
MDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkw
OEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENC
MjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZE
QUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAv
KiBQbHVnaW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQz
MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ3ODksOCAr
NDc5Myw2IEBACiAJCUJDQjE2QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0MDk3OUMzQkQw
MDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNTA5NzlD
M0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0IxNkMxNjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICovOyB9OwotCQlC
Q0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I0Rjg4RjBE
QjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi87IH07Ci0J
CUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4
OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi87
IH07CiAJCUJDQjc3MzYxMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzcz
NUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi87IH07CiAJ
CUJDQjc3MzYyMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzVGMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJQkNCNzczNjMw
QzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQg
LyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU4MzksNiArNTg0MSw4IEBACiAJ
CTA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0Mg
LyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NF
NDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8qIFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU5MDksNiArNTkxMyw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFD
MTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdNTFBvc3RmaWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdNTEZpZWxkU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYy
RjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJl
bmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRC
MDBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVu
dEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZh
Y3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUzMCw4ICsx
MDUzNiw2IEBACiAJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFn
ZUdlbmVyYXRlZENvbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUw
QzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpT
Tm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
Qjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjkzMCw4ICsxNjkzNCwxMCBAQAogCQkJCTBG
RDMwOEQ0MTE3RDE2ODQwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJCQlCQ0VBNDgz
NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJDRUE0ODM3MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODkyMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAotCQkJCUJDQjRG
ODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLywK
KwkJCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki8sCisJCQkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
aCAqLywKKwkJCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwICovLAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFE
OEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFE
OEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW5saW5lLmNwcCAqLywKQEAgLTE5NDY3LDcgKzE5NDczLDggQEAKIAkJCQlC
Q0VBNDg2QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEMzA4RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAwQTEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg2
NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5k
aWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFC
MjcgLyogUmVuZGVySW5wdXRTcGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NjYsNyArMjE5
NzMsOCBAQAogCQkJCUJDRUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5k
ZXJJRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlckltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUE2NkQ2MTFD
NUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNFQTQ4NzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNmI5MGI2My4uNmFhMzE4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MTgxNiwzMyArMTgxNiwzNCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCFhbHQuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKSB7CiAgICAgICAg
ICAgICBSZW5kZXJIVE1MQ2FudmFzKiBjYW52YXMgPSB0b1JlbmRlckhUTUxDYW52YXMobV9yZW5k
ZXJlcik7CiAgICAgICAgICAgICBpZiAoY2FudmFzLT5oZWlnaHQoKSA8PSAxIHx8IGNhbnZhcy0+
d2lkdGgoKSA8PSAxKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc05hdGl2
ZUltYWdlKCkpIHsKICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBvbmUtZGltZW5zaW9uYWwgaW1h
Z2UKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5k
ZXJlcik7Ci0gICAgICAgICAgICBpZiAoaW1hZ2UtPmhlaWdodCgpIDw9IDEgfHwgaW1hZ2UtPndp
ZHRoKCkgPD0gMSkKKyAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVu
ZGVySW1hZ2UobV9yZW5kZXJlcik7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBy
ZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAg
ICAgICAgIGlmIChyZW5kZXJJbWFnZS0+aGVpZ2h0KCkgPD0gMSB8fCByZW5kZXJJbWFnZS0+d2lk
dGgoKSA8PSAxKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCisK
ICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hl
ZCBmcm9tIG9uZS1kaW1lbnNpb25hbCBmaWxlIGltYWdlCi0gICAgICAgICAgICBpZiAoaW1hZ2Ut
PmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGlt
YWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemUoaW1hZ2UtPnZpZXcoKS0+em9vbUZhY3Rvcigp
KTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKSB7
CisgICAgICAgICAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUgPSByZW5kZXJJbWFnZVJlc291cmNl
LT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemUocmVuZGVySW1hZ2UtPnZpZXcoKS0+em9vbUZhY3Rv
cigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwg
aW1hZ2VTaXplLndpZHRoKCkgPD0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgLy8gbWFrZSBhIHBsYXRmb3JtLXNw
ZWNpZmljIGRlY2lzaW9uCiAgICAgaWYgKGlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4g
YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQoKTsKLSAgICAKKwogICAgIHJldHVybiAhbV9y
ZW5kZXJlci0+aXNMaXN0TWFya2VyKCkgJiYgIWlzV2ViQXJlYSgpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKaW5kZXggM2Y3MDBlZi4uMzFlY2YwMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YXR0
YWNoKCkKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAg
ICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIo
KSktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAgICAgICAgICAg
dG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFn
ZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAppbmRleCA4MmVlYWIxLi4yMzU0Njg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC0xOTEsMTUgKzE5MSwxNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCgp
CiAgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+aXNJbWFnZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVmb3JlTG9hZEV2
ZW50KCkpIHsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBS
ZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAg
ICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1h
Z2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmhh
c0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGltYWdlT2JqLT5zZXRDYWNo
ZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOworICAgICAgICByZW5kZXJJbWFnZVJlc291
cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOwogCiAgICAgICAgIC8v
IElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmli
dXRlLCBzZXQKICAgICAgICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0
ZXh0IGluc3RlYWQuCi0gICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFpbWFn
ZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVG
b3JBbHRUZXh0KCk7CisgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFyZW5k
ZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgcmVuZGVySW1hZ2Ut
PnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCAzNDg4Y2RlLi5jM2NhYTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCkBAIC0xMjA4LDEzICsxMjA4LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YXR0YWNo
KCkKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhp
cykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZl
bnQoKSkgewotICAgICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlcklt
YWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgICAg
ICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2Ut
PmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENh
Y2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAgICAgLy8gSWYg
d2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUs
IHNldAogICAgICAgICAgICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0
ZXh0IGluc3RlYWQuCi0gICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYg
IWltYWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJ
bWFnZVNpemVGb3JBbHRUZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmlt
YWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAg
ICAgICAgcmVuZGVySW1hZ2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGVkMmQzNWMuLjg2ZmQwZGEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTc4LDEwICs3OCw4IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAg
ICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAg
ICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIGlmIChy
ZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRD
YWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgIH0KKyAgICAgICAg
aWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5p
bWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAK
ICAgICB9CiAjZW5kaWYKIH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIGlm
IChtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIoKSktPnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAgICAgICAgICB0b1Jl
bmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDAp
OyAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0
dHIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxl
bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2lu
Y2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogLy8g
SW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2Jq
ZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNw
YWNlIFdURiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdl
KENhY2hlZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGll
bnQodGhpcyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2Vs
ZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVz
ZXRBbmltYXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdl
UmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2Ut
PnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKQEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9
CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIo
KSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwot
ICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRl
ckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24o
KTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZp
b3VzRXJyb3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNo
RXZlbnRTb29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxvYWRlcjo6
cmVuZGVySW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1f
ZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1Jl
bmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5BQkxFKFNWRykK
KyAgICBpZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVy
U1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworI2lmIEVOQUJM
RShWSURFTykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuIHRv
UmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworICAgIHJl
dHVybiAwOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiB7Ci0gICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNWaWRlbygpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSB1cGRh
dGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdl
IGhhdmUKLSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxp
Y2tlcmluZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8gY2hhbmdlIGlz
IGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChtX2lt
YWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hlZEltYWdlKSkK
LSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkp
OwotICAgIH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVy
SW1hZ2VSZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZl
IGFuIGltYWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2Uu
ICBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCisg
ICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisgICAgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBp
ZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJ
bWFnZSkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0
KCkpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZl
bnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNv
dXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
ewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsK
ICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENh
Y2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdl
ID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFn
ZSgpOworICAgIHJldHVybiBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwog
fQogCiBzdGF0aWMgSW1hZ2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA2MjQ0YTIu
LjE1OGI1YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwCkBAIC00NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNo
ZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVy
LT5pc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVySW1hZ2UqIGltYWdl
ID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgp
ICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1
cm4gaW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0g
dG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsK
KyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisg
ICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDU4Mzcz
YjEuLmNhODM1MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVi
b2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9h
cmRDaHJvbWl1bS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
SW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAg
QVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQo
bm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIg
PSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2Uo
KS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5l
cnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5k
ZXggYTAwNjljZi4uZGY4MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKQEAgLTk2LDggKzk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkID0gZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1
bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9k
ZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRl
ckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigp
KS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIElt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICBBU1NFUlQoY29jb2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkgJiYg
bm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIg
PSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2Uo
KS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5l
cnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAppbmRleCBmNjc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcApAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVk
SW1hZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+
aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAm
JiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJu
IGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7Cisg
ICAgaWYgKGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAg
ICAgICByZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAg
IEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJ
bWFnZSgpKTsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5jYWNoZWRJbWFnZSgp
OworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVu
ZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hl
ZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMjkxNWY5ZC4uZGQxNDE4
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC02NzIsMTAgKzY3Miwx
MCBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAg
aWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAgICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIp
OwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCkt
PmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOwor
CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcikt
PmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYg
IWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFn
ZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAppbmRleCAwM2VjZDM2Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShO
b2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9k
ZSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAg
ICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigp
KTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2Uo
KTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+aW1hZ2VSZXNvdXJj
ZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNh
Y2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBk
ZDk2ZTBlLi5mNmMwODQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjQz
LDEyICsyNDMsMTIgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwog
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVy
ZXIoKTsKICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAg
ICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+
KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGltYWdl
LT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFn
ZSgpOworICAgICAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4u
NTY1NzgxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVu
ZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1h
Z2UoTm9kZSogbm9kZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxh
Y2VkKG5vZGUsIEludFNpemUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCisgICAgLCBt
X2ltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKHRoaXMsIHN0eWxlSW1h
Z2UpKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCkt
PnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdl
KCkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVt
b3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSogbmV3SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1h
Z2UpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJ
bWFnZTsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5h
ZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVk
KCkpCi0gICAgICAgICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAg
fQotfQotCiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBp
bWFnZSwgYWRkIHNvbWUgcGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRk
aW5nV2lkdGggPSA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQg
PSA0OwpAQCAtMTM1LDIyICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlm
IChoYXNCb3hEZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFj
ZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdl
ICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRp
bWVuc2lvbnMsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0Lgot
ICAgIGlmIChlcnJvck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJ
bWFnZVNpemVGb3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmICht
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdl
ZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgp
KTsKKwogICAgIGJvb2wgc2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1l
bnNpb25zIGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAg
aWYgKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUo
KSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQot
ICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKSk7CisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsK
KyAgICAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAg
ICAgIHNldEludHJpbnNpY1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVk
IGltYWdlIGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0
aGUKICAgICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBu
ZWVkIHRvIHdvcnJ5IGFib3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBA
IC0xODAsNyArMTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAgICAgaWYgKHJlY3Qp
IHsKICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGlt
YWdlIGNvb3JkaW5hdGVzIChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJv
bSB0aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAg
ICByZXBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAg
ICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwg
Y29udGVudEJveFJlY3QoKSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFy
Z2UgY2hhbmdlZCByZWN0cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250
ZW50Qm94UmVjdCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYg
KChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5l
d0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7
CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAg
ICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRp
cmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0y
MTIsMTUgKzE5Miw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiBuZXdJbWFnZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9
Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1f
Y2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAg
ICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAgIH0KLX0K
IAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
aW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlm
ICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNv
dXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewog
ICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAg
ICAgICAgICAgaW50IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1
c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJy
ZWQoKSAmJiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRoID49IGltYWdlKCktPndp
ZHRoKCkpICYmICh1c2FibGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAg
ICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAg
ICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVs
bCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBp
bWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGlt
YWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAg
aW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAg
ICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkg
LyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAg
ICAgY2VudGVyWCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVp
Z2h0IC0gaW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVy
WSA9ICh1c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgICAg
ICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAg
ICAgICAgICAgICAgIGltYWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7
CiAgICAgICAgICAgICAgICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSAr
IDE7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCkt
PmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNl
KCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwogICAgICAgICAgICAgICAg
IGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2
MSw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4
dChzdHlsZSgpLT5mb250KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNX
aWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNX
aWR0aCwgY0hlaWdodCk7CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdl
KCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0g
bV9pbWFnZVJlc291cmNlLT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWlt
ZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMy
NCwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0Lndp
ZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3Vy
Y2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVj
dC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAK
LSAgICBJbWFnZSogaW1nID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAg
ICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCkt
Pmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9k
ZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFn
ZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3Zl
cjsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoY29udGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZShpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xv
clNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7
CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNv
bnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0
b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5pbXVt
UmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBp
bnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhU
TUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0
MjIsMTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBp
bnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBj
b25zdAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFn
ZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9i
amVjdCogY2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2Nr
KCkpIHsKICAgICAgICAgICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBzZXRJ
bWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRo
KCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAg
ICBtX2ltYWdlUmVzb3VyY2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVy
Qm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWln
aHQoKSkpOwogICAgICAgICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVj
aWZpZWQoKSkKICAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCkt
PndpZHRoKCkpOwotICAgIGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAg
ICAgd2lkdGggPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwot
ICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1h
Z2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1f
aW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgo
KTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgp
KQogICAgICAgICB3aWR0aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVk
LCBzZXQgdGhlIHdpZHRoIHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUu
CiAgICAgZWxzZQogICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00
NzYsOSArNDQ5LDkgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25z
dAogICAgIGludCBoZWlnaHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAg
IGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAg
ICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIGhlaWdodCA9IGlt
YWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYg
KGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBl
bHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAg
ICAgaGVpZ2h0ID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0
aGUgaGVpZ2h0IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAg
ZWxzZQogICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3
ICs0NjcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QK
ICAgICBJbnRTaXplIHNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdo
dCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1
cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VS
ZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAv
LyBEb24ndCBib3RoZXIgc2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNS
ZXBsYWNlZEhlaWdodCgpICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUw
NCw3ICs0NzcsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNv
bnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53
aWR0aCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JP
Y2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1h
Z2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQo
KTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpj
YWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAg
LTUyOSw5ICs1MDIsNCBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAg
c2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxs
SW1hZ2UoKQotewotICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjQxMDNm
ZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBS
ZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlcklt
YWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zMywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNs
YXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJJbWFnZShOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5k
ZXJJbWFnZShOb2RlKiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJlbmRlckltYWdlUmVzb3Vy
Y2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAg
ICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNldEltYWdlU2l6ZUZvckFs
dFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2b2lkIHVwZGF0ZUFsdFRl
eHQoKTsKIAotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgp
OyB9Ci0KICAgICBIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKIAotICAgIHZvaWQg
cmVzZXRBbmltYXRpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkSW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGlt
ZXJGaXJlZChUaW1lcjxSZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
SW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7
IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFn
ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotCiAgICAg
dmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3Qq
ID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNXaWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNIZWlnaHRTcGVjaWZpZWQo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1h
Z2VDaGFuZ2VkKGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVD
aGFuZ2VkKCkgeyBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5pbWFnZVB0cigpKTsgfQog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11
bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCBib29sIHVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9j
YWNoZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0
IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6
ZShzaXplKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdl
U2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9j
YWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9Ci0gICAgdmly
dHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZElt
YWdlLmdldCgpOyB9Ci0KICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAg
ICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAv
LyBUaGUgaW1hZ2Ugd2UgYXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRp
c3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBt
X2FsdFRleHQ7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJj
ZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAgCiAgICAgZnJpZW5kIGNs
YXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGluZSBSZW5kZXJJbWFnZSog
dG9SZW5kZXJJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFv
YmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJJbWFnZSog
dG9SZW5kZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNT
RVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6
OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBSZW5kZXJJbWFnZShuKQot
e30KLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBtX3N0eWxlSW1hZ2UtPnJl
bW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6
OnNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlLT5pc0Nh
Y2hlZEltYWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxTdHlsZUNh
Y2hlZEltYWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1fc3R5bGVJbWFnZSA9IGlt
YWdlOwotICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCi19CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnRfaAotI2RlZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotCi0jaW5j
bHVkZSAiUmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdlLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0eWxlSW1hZ2U7
Ci0KLWNsYXNzIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1YmxpYyBSZW5kZXJJbWFn
ZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KE5vZGUqKTsKLSAg
ICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsKLSAgICAKLSAgICB2b2lk
IHNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIEltYWdlKiBpbWFnZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5pbWFnZSh0aGlzLCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJv
ck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7
IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBtdWx0
aXBsaWVyKTsgfQotICAgIAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNhbiBiZSAwIGlmIHdlIGdl
dCBhIGNhbGxiYWNrIGZvciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBSZW5kZXJPYmplY3Q6OnNl
dFN0eWxlLgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzYzOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAg
ICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAgICAgICAg
ICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICog
ICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBh
dHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UpCit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisgICAgICAgIHJldHVybiBS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRlcmVyLCBzdHlsZUltYWdl
KTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZShyZW5kZXJl
cikpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9j
YWNoZWRJbWFnZSgwKQoreworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdl
UmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFn
ZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworfQor
Cit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBu
ZXdJbWFnZSkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7
CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xp
ZW50KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJl
ZCgpKQorICAgICAgICAgICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2Uu
Z2V0KCkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFuaW1h
dGlvbigpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigpOworCisgICAgaWYgKCFtX3JlbmRlcmVyLT5uZWVk
c0xheW91dCgpKQorICAgICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisKK0ltYWdlKiBS
ZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
N2JkMGFlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisjZGVmaW5lIFJlbmRl
ckltYWdlUmVzb3VyY2VfaAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9i
amVjdDsKK2NsYXNzIFN0eWxlSW1hZ2U7CisKK2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2UgOiBw
dWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlbmRlckltYWdlUmVz
b3VyY2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNy
ZWF0ZShSZW5kZXJPYmplY3QqLCBTdHlsZUltYWdlKiA9IDApOworCisgICAgdm9pZCBzZXRDYWNo
ZWRJbWFnZShDYWNoZWRJbWFnZSopOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGhhc0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQorCisgICAgdm9pZCByZXNldEFuaW1hdGlv
bigpOworCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50
IC8qIGhlaWdodCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdl
LT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNv
bnN0IEludFNpemUmIHNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250
YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2Ut
PnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZElt
YWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0K
KworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBs
aWVyKSA6IEludFNpemUoKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQ
dHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCopOworICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIoKSB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKworcHJpdmF0ZToK
KyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFn
ZSgpOworfTsKKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkK
KyAgICAgICAgbV9jYWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZV9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU0NjhlNgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNw
cApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
PGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtv
aXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVs
bGVyQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
IDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNv
bT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oIgorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU3R5
bGVDYWNoZWRJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShSZW5kZXJPYmpl
Y3QqIHJlbmRlciwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICA6IFJlbmRlckltYWdlUmVz
b3VyY2UocmVuZGVyKQorICAgICwgbV9zdHlsZUltYWdlKHN0eWxlSW1hZ2UpCit7CisgICAgQVNT
RVJUKG1fc3R5bGVJbWFnZSk7CisKKyAgICBpZiAobV9zdHlsZUltYWdlLT5pc0NhY2hlZEltYWdl
KCkpCisgICAgICAgIHNldENhY2hlZEltYWdlKHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2Uq
PihzdHlsZUltYWdlKS0+Y2FjaGVkSW1hZ2UoKSk7CisgICAgbV9zdHlsZUltYWdlLT5hZGRDbGll
bnQocmVuZGVyZXIoKSk7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjp+UmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKQoreworICAgIG1fc3R5bGVJbWFnZS0+cmVtb3Zl
Q2xpZW50KHJlbmRlcmVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDM5OWMzCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVA
Y2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2VfaAorCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0OworCitjbGFzcyBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZVJlc291cmNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSgpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKSB7IHJldHVybiBhZG9wdFB0cihuZXcg
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UocmVuZGVyZXIsIHN0eWxlSW1hZ2UpKTsgfQor
CisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDAp
IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UocmVuZGVyZXIoKSwgSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHls
ZUltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisKKyAg
ICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHJlbmRlcmVyKCksIG11bHRpcGxpZXIpOyB9CisK
KyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGVJbWFnZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsgfQorCitwcml2YXRlOgorICAg
IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFJlbmRlck9iamVjdCosIFN0eWxlSW1hZ2Uq
KTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VTdHlsZUltYWdlX2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk1ZWMzZjMuLjU5ZGY0NDMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNzk3LDkgKzc5
Nyw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCkK
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKCkKIHsKICAgICBB
U1NFUlQocmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5k
ZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CiAKLSAgICBDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UgPSBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2Uo
KS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDI3ZWFiY2QuLjEyMzRiMDcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUg
IlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJl
bmRlckZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBA
IC0xMDcsMTAgKzEwNyw4IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmpl
Y3QoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIC8vIE90aGVyd2lzZSBhY3Rz
IGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KICAgICBjb25zdCBDb250ZW50
RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKICAgICBpZiAoY29udGVu
dERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1hZ2UoKSAm
JiBkb2MgIT0gbm9kZSkgewotICAgICAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQqIGlt
YWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG5vZGUpOworICAg
ICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShub2RlLCBj
b250ZW50RGF0YS0+aW1hZ2UoKSk7CiAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZSk7Ci0g
ICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudERhdGEtPmltYWdlKCkp
Ci0gICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKICAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENo
aWxkTGlzdC5jcHAKaW5kZXggNjhlMzkyYy4uMmJhYjQ1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQ291bnRlci5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgor
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtNDMw
LDEzICs0MzAsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFm
dGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG8KICAgICAgICAgICAgICAgICBy
ZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6IHsKLSAgICAgICAgICAgICAg
ICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChvd25lci0+cmVuZGVy
QXJlbmEoKSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG93bmVyLT5kb2N1bWVudCgpKTsg
Ly8gYW5vbnltb3VzIG9iamVjdAorICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IChvd25l
ci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2Uob3duZXItPmRvY3VtZW50KCksIGNvbnRlbnQt
PmltYWdlKCkpOyAvLyBhbm9ueW1vdXMgb2JqZWN0CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAg
ICBzdHlsZS0+aW5oZXJpdEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgICAg
ICBpbWFnZS0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
U3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGNvbnRlbnQtPmltYWdlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwotICAgICAgICAgICAgICAg
IHJlbmRlcmVyID0gaW1hZ2U7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0
eWxlLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENPTlRFTlRfQ09VTlRFUjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGM1ZTQ4MDIuLjBlNGZiMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMTcyLDEw
ICsxNzIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKFJlbmRlclNWR0ltYWdl
KiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIoKSkpIHsKLSAgICAgICAgaWYg
KGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBpZiAoaW1hZ2VPYmotPmltYWdlUmVzb3Vy
Y2UoKS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpbWFnZU9i
ai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgaW1hZ2VP
YmotPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgp
KTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64265</attachid>
            <date>2010-08-12 14:38:48 -0700</date>
            <delta_ts>2010-08-12 15:16:49 -0700</delta_ts>
            <desc>Patch #1g (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>76187</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjMzJiY2FlLi44OTkyMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTMsNyArNjEzLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDc3NDNkMjYuLjBlNTk5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw3ICsxMzY5
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA3M2E4ZWUuLjhiYTQ5MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1h
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJv
ck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
UmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6
OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdl
UHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmNhbGN1bGF0ZUludHJpbnNpY1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisKIDIwMTAtMDgtMTIgIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHNvcnQg
b2YgWENvZGUgcHJvamVjdCBmaWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNzA5NzlkNC4uODNjZmIwMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0yMjUyLDggKzIyNTIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKLQlXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKLQlXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDRiZjYyZDMuLjcyMmU5MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMjcxLDggKzMyNzEs
MTAgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAn
LAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAzOGExOWQ4Li4xMWIzZmExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwMDIsNyAr
MTAwMiw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorICAgIHJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODE0LDcgKzE4MTUsOCBAQCBIRUFE
RVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaCBcCiAgICAgcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKLSAg
ICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggXAorICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmgg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZjk1ZDJjMS4uZjU2NzZj
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTE1NywxMSArMjkx
NTcsMTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAiDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlNTFjOTguLjEwMWYxOTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDggQEAKIAkJMDg1
QjA1QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCMDVDMTExRkFFMTZD
MDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyog
Rm9ybURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8q
IEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTA4NjQxRDQ3MTIxNDJGN0Qw
MDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5
RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovOyB9OworCQkwODY0MUQ0
ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJG
N0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovOyB9OwogCQkw
ODY1Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTQwRURERjUxQjAwREY5
RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg2NUNDRTcwRURERjUxQjAwREY5
RUMzIC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQu
aCAqLzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5jcHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMx
MjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVs
ZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAg
Ki87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYw
MEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYw
MDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENF
QzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBF
MUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
OEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJF
MSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ3ODksOCArNDc5Myw2IEBACiAJCUJD
QjE2QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyog
UmVxdWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMx
NjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICovOyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2
MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIg
LyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi87IH07Ci0JCUJDQjRGODkzMERCMjhF
NTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4OTIwREIyOEU1MzAwMzkx
MzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi87IH07CiAJCUJDQjc3MzYx
MEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNUUwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi87IH07CiAJCUJDQjc3MzYyMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBK
U05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJQkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU4MzksNiArNTg0MSw4IEBACiAJCTA4NUIwNUMxMTFGQUUx
NkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVp
bGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI5MEVGREU3M0Qw
MEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4
NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2
MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNDBFRERGNTFCMDBERjlF
QzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU5MDksNiArNTkxMyw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0
ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3Rm
aWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZG
NDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2
NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUzMCw4ICsxMDUzNiw2IEBACiAJCUJD
QjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Ix
NkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODkyMERCMjhF
NTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzYwMEMxNzg1M0Qw
MDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjkzMCw4ICsxNjkzNCwxMCBAQAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQw
MEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJCQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJDRUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAotCQkJCUJDQjRGODhGMERCMjhERDYwMDM5
MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLywKKwkJCQkwOEYyRjAwNzEy
MTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8sCisJCQkJMDhGMkYw
MDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLywKKwkJCQkwODY0
MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3Bw
ICovLAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJ
bmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJ
bmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5s
aW5lLmNwcCAqLywKQEAgLTE5NDY3LDcgKzE5NDczLDggQEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4
RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg2NDFENDgxMjE0MkY3RDAw
OERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5w
dXRTcGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NjYsNyArMjE5NzMsOCBAQAogCQkJCUJD
RUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTBEMDI5
MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggNmI5MGI2My4uNmFhMzE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTgxNiwzMyArMTgxNiwz
NCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCFhbHQuaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKG5vZGUg
JiYgbm9kZS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKSB7CiAgICAgICAgICAgICBSZW5kZXJIVE1M
Q2FudmFzKiBjYW52YXMgPSB0b1JlbmRlckhUTUxDYW52YXMobV9yZW5kZXJlcik7CiAgICAgICAg
ICAgICBpZiAoY2FudmFzLT5oZWlnaHQoKSA8PSAxIHx8IGNhbnZhcy0+d2lkdGgoKSA8PSAxKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc05hdGl2ZUltYWdlKCkpIHsKICAg
ICAgICAgICAgIC8vIGNoZWNrIGZvciBvbmUtZGltZW5zaW9uYWwgaW1hZ2UKLSAgICAgICAgICAg
IFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlcik7Ci0gICAgICAg
ICAgICBpZiAoaW1hZ2UtPmhlaWdodCgpIDw9IDEgfHwgaW1hZ2UtPndpZHRoKCkgPD0gMSkKKyAg
ICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5k
ZXJlcik7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291
cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIGlmIChyZW5k
ZXJJbWFnZS0+aGVpZ2h0KCkgPD0gMSB8fCByZW5kZXJJbWFnZS0+d2lkdGgoKSA8PSAxKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8v
IGNoZWNrIHdoZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1l
bnNpb25hbCBmaWxlIGltYWdlCi0gICAgICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkp
IHsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZVNpemUoaW1hZ2UtPnZpZXcoKS0+em9vbUZhY3RvcigpKTsKKyAgICAgICAgICAg
IGlmIChyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAg
ICAgSW50U2l6ZSBpbWFnZVNpemUgPSByZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgp
LT5pbWFnZVNpemUocmVuZGVySW1hZ2UtPnZpZXcoKS0+em9vbUZhY3RvcigpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gaW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwgaW1hZ2VTaXplLndpZHRo
KCkgPD0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgLy8gbWFrZSBhIHBsYXRmb3JtLXNwZWNpZmljIGRlY2lzaW9u
CiAgICAgaWYgKGlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUln
bm9yZUF0dGFjaG1lbnQoKTsKLSAgICAKKwogICAgIHJldHVybiAhbV9yZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkgJiYgIWlzV2ViQXJlYSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
aW5kZXggM2Y3MDBlZi4uMzFlY2YwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAg
bV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAgICAgICBpZiAocmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNldENhY2hlZElt
YWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4
MmVlYWIxLi4yMzU0Njg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xOTEsMTUg
KzE5MSwxNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgSFRNTEVsZW1l
bnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFn
ZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVmb3JlTG9hZEV2ZW50KCkpIHsKLSAgICAg
ICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKLSAg
ICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBSZW5kZXJJbWFnZSogcmVu
ZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgICAgICBSZW5kZXJJbWFn
ZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3Vy
Y2UoKTsKKyAgICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdl
TG9hZGVyLmltYWdlKCkpOworICAgICAgICByZW5kZXJJbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJ
bWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8g
aW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBzZXQKICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFpbWFnZU9iai0+Y2FjaGVkSW1h
Z2UoKSkKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7Cisg
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNl
LT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgcmVuZGVySW1hZ2UtPnNldEltYWdlU2l6ZUZv
ckFsdFRleHQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAz
NDg4Y2RlLi5jM2NhYTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjA4LDEz
ICsxMjA4LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAg
IG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAocmVuZGVyZXIo
KSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
LSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFn
ZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFn
ZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJl
c291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2Uo
KTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1h
Z2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFn
ZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNo
ZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRl
ckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgcmVuZGVySW1h
Z2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGVkMmQzNWMuLjg2ZmQwZGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKQEAgLTc4LDEwICs3OCw4IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
YXR0YWNoKCkKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRDYWNoZWRJbWFnZShtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRlcmVyKCkp
CisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCkt
PnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9CiAjZW5kaWYK
IH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIGlmIChtX2ltYWdlTG9hZGVy
KQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSkt
PnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAgICAgICAgfQog
I2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApA
QCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNW
R0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2Jq
ZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJp
YyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0x
MzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBu
ZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAg
fQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsK
LSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5k
ZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9u
KCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwx
MSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAg
ICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAo
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2Uo
KSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAt
MjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMp
OwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNv
dXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVy
ZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVy
ZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVy
ZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBp
ZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVu
ZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCiB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVy
IGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAg
Ly8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUg
Y2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3
ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
UmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZElt
YWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hlZEltYWdlKSkKLSAgICAgICAgICAgIGlt
YWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBS
ZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgp
OworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBP
bmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlm
IHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRz
IGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlz
IGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBj
YWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAg
IGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIElt
YWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3Mg
SW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAt
NzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJl
bmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0
ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIHJldHVy
biBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogfQogCiBzdGF0aWMgSW1h
Z2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA2MjQ0YTIuLjE1OGI1YjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC00
NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50
KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hl
ZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVk
SW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBj
YWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDU4MzczYjEuLmNhODM1MzMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAK
QEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9k
ZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQobm9kZS0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVu
ZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2Uo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYTAwNjljZi4uZGY4
MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTk2LDggKzk2
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gZ3RrX2NsaXBi
b2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVD
VElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAm
JiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRlckltYWdlKiByZW5kZXJl
ciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJj
ZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNh
Y2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5k
ZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBBU1NFUlQoY29j
b2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVu
ZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCBm
Njc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjUw
LDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCog
ZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hl
ZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJ
bWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKGNhY2hlZElt
YWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gY2Fj
aGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0
LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJk
UXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5v
ZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEFTU0VSVChub2RlICYm
IG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKIAogI2lm
bmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1Jl
bmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdl
UmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMjkxNWY5ZC4uZGQxNDE4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC02NzIsMTAgKzY3MiwxMCBAQCBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8
fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFJl
bmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFn
ZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQo
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworCisgICAgQ2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2Uo
KS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5l
cnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVy
biAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwM2VjZDM2
Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5k
ZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2Uq
IHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFn
ZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFn
ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZDk2ZTBlLi5mNmMwODQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjQzLDEyICsyNDMsMTIgQEAg
SW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJO
b25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSog
aW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAg
ICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+
ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgp
LT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBp
ZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNTY1NzgxMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSwg
U3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNp
emUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uo
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKHRoaXMsIHN0eWxlSW1hZ2UpKQogewogICAgIHVw
ZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlO
b25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwotfQotCi12b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3
SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVt
b3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7
Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAg
ICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3
ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUg
cGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIy
ICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0
aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdl
ZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkg
fHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VT
aXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2lu
ZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9j
Y3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6
ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wg
c2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVl
biBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShz
dHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVD
aGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0
SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAg
aWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkg
IT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNp
Y1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
KSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQg
dXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8g
cmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYwLDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFn
ZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAg
IC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVz
IChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9m
IHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWlu
dFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3Qo
KSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0
cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsK
ICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBt
X2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1h
Z2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRl
bGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUg
aW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAg
ICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Miw2IEBA
IHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFn
ZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJl
bmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsK
LSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xh
eW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkp
CiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8
fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2Uo
KSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVz
YWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBj
SGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2Uo
KS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2Fi
bGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1h
Z2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdl
UmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdp
ZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkp
IHsKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5n
IGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAo
dXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50
IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAg
ICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7
Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+
aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWln
aHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8
IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGlt
YWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAg
ICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwg
SW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4
ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURy
YXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2MSw4IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250
KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hl
aWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7
CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4g
MCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNl
LT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNCwyMiBAQCB2b2lkIFJl
bmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCBy
ZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkg
fHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAg
fHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1n
ID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0g
bV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAg
IGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1n
VGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0
LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhp
cy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3Qs
IGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0
eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQo
KSBjb25zdAogewotICAgIHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCku
aGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBS
ZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjIsMTggQEAgYm9vbCBS
ZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6
OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlm
IChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bv
c2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAg
ICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNp
emUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94
KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3Vy
Y2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxh
YmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAg
ICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAg
ICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAg
IGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+
aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0
aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRo
IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAg
ICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSArNDQ5LDkgQEAg
aW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWln
aHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNS
ZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2Vz
SW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUo
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdl
UmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsg
Ly8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAg
dW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBo
ZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0NjcsNyBAQCBpbnQg
UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNp
emUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlm
ICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIg
c2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgp
ICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0NzcsNyBAQCBp
bnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6
ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAg
IGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJy
b3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90
aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0
aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDIsNCBA
QCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0Rp
cnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAg
IHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjQxMDNmZTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAj
ZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
MywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdl
IDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2Rl
Kik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwg
U3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3Vy
Y2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBSZW5kZXJJ
bWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlc291
cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1h
Z2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZv
aWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1M
TWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24o
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxS
ZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGlu
dCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hl
ZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmly
dHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYm
IG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNp
ZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdl
UHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFn
ZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5pbWFnZVB0cigpKTsgfQogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJ
bWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0
KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1h
Z2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVk
SW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0K
ICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVj
dFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2Ug
YXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBh
cyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAg
T3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJjZTsKIAotICAgIHN0YXRp
YyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAgCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdl
U2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGluZSBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShS
ZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0
LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+
KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwg
b2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBS
ZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVy
YXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OlJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBSZW5kZXJJbWFnZShuKQote30KLQotUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAg
ICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlz
KTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2Uo
U3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlLT5pc0NhY2hlZEltYWdlKCkpCi0g
ICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oaW1h
Z2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1fc3R5bGVJbWFnZSA9IGltYWdlOwotICAgIG1fc3R5
bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotI2Rl
ZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotCi0jaW5jbHVkZSAiUmVuZGVySW1h
Z2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0eWxlSW1hZ2U7Ci0KLWNsYXNzIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7Ci1wdWJsaWM6Ci0g
ICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KE5vZGUqKTsKLSAgICB2aXJ0dWFsIH5SZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsKLSAgICAKLSAgICB2b2lkIHNldFN0eWxlSW1hZ2Uo
U3R5bGVJbWFnZSopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFn
ZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZSh0aGlz
LCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdl
Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+
c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9
Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBtdWx0aXBsaWVyKTsgfQotICAg
IAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNhbiBiZSAwIGlmIHdlIGdldCBhIGNhbGxiYWNrIGZv
ciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBSZW5kZXJPYmplY3Q6OnNldFN0eWxlLgotICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRy
PFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRjNzYzOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVy
IDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Up
Cit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRlcmVyLCBzdHlsZUltYWdlKTsKKworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZShyZW5kZXJlcikpOworfQorCitSZW5k
ZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQor
eworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5k
ZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlcklt
YWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAg
ICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCht
X3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2Fj
aGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIp
OworICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAg
ICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0K
K30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAg
aWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNl
dEFuaW1hdGlvbigpOworCisgICAgaWYgKCFtX3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAg
ICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291
cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2JkMGFlCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxA
a2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9A
a2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtk
ZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2Vf
aAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgorI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0
eWxlSW1hZ2U7CisKK2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2UgOiBwdWJsaWMgTm9uY29weWFi
bGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2UoKTsKKworICAg
IHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5kZXJPYmpl
Y3QqLCBTdHlsZUltYWdlKiA9IDApOworCisgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJ
bWFnZSopOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZTsgfQorCisgICAgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAgdmly
dHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9
IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVs
bEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNp
emUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFz
UmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJ
bWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KKworICAgIHZpcnR1YWwg
SW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUo
KTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBSZW5kZXJJbWFn
ZVJlc291cmNlKFJlbmRlck9iamVjdCopOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSB7
IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJPYmpl
Y3QqIG1fcmVuZGVyZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1f
Y2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKwordm9p
ZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZWU0NjhlNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcApAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+
CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+
CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+Cisg
KiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYu
Y29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgor
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
OjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlciwgU3R5
bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICA6IFJlbmRlckltYWdlUmVzb3VyY2UocmVuZGVyKQor
ICAgICwgbV9zdHlsZUltYWdlKHN0eWxlSW1hZ2UpCit7CisgICAgQVNTRVJUKG1fc3R5bGVJbWFn
ZSk7CisKKyAgICBpZiAobV9zdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkpCisgICAgICAgIHNl
dENhY2hlZEltYWdlKHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihzdHlsZUltYWdlKS0+
Y2FjaGVkSW1hZ2UoKSk7CisgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQocmVuZGVyZXIoKSk7
Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UoKQoreworICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVy
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kZDM5OWMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAg
ICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgor
ICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRy
aWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2VfaAorCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlN0eWxl
SW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmVuZGVyT2JqZWN0OworCitjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZVJlc291cmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSgpOworICAgIHN0YXRpYyBQYXNzT3duUHRy
PFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBTdHls
ZUltYWdlKiBzdHlsZUltYWdlKSB7IHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UocmVuZGVyZXIsIHN0eWxlSW1hZ2UpKTsgfQorCisgICAgdmlydHVhbCBJ
bWFnZSogaW1hZ2UoaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApIHsgcmV0dXJuIG1fc3R5
bGVJbWFnZS0+aW1hZ2UocmVuZGVyZXIoKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWlu
ZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdlLT5zZXRJbWFn
ZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFp
bmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5
bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisKKyAgICB2aXJ0dWFsIEludFNp
emUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VTaXplKHJlbmRlcmVyKCksIG11bHRpcGxpZXIpOyB9CisKKyAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1f
c3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsgfQorCitwcml2YXRlOgorICAgIFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlKFJlbmRlck9iamVjdCosIFN0eWxlSW1hZ2UqKTsKKyAgICBSZWZQdHI8
U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUmVuZGVySW1hZ2VTdHlsZUltYWdlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk1ZWMzZjMuLjU5ZGY0NDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNzk3LDkgKzc5Nyw4IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCkKIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKCkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIoKSk7CiAKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFn
ZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDI3ZWFiY2QuLjEyMzRiMDcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94
LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC0xMDcsMTAgKzEwNyw4
IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoTm9kZSogbm9kZSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIC8vIE90aGVyd2lzZSBhY3RzIGFzIGlmIHdlIGRpZG4n
dCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KICAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERh
dGEgPSBzdHlsZS0+Y29udGVudERhdGEoKTsKICAgICBpZiAoY29udGVudERhdGEgJiYgIWNvbnRl
bnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1hZ2UoKSAmJiBkb2MgIT0gbm9kZSkg
ewotICAgICAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChhcmVu
YSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG5vZGUpOworICAgICAgICBSZW5kZXJJbWFn
ZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShub2RlLCBjb250ZW50RGF0YS0+aW1h
Z2UoKSk7CiAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZSk7Ci0gICAgICAgIGlmIChTdHls
ZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudERhdGEtPmltYWdlKCkpCi0gICAgICAgICAgICBp
bWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKaW5k
ZXggNjhlMzkyYy4uMmJhYjQ1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgot
I2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgorI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtNDMwLDEzICs0MzAsMTAgQEAg
dm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChSZW5k
ZXJPYmplY3QqIG93bmVyLCBQc2V1ZG8KICAgICAgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5
bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6IHsKLSAgICAgICAgICAgICAgICBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChvd25lci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50KG93bmVyLT5kb2N1bWVudCgpKTsgLy8gYW5vbnltb3VzIG9i
amVjdAorICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IChvd25lci0+cmVuZGVyQXJlbmEo
KSkgUmVuZGVySW1hZ2Uob3duZXItPmRvY3VtZW50KCksIGNvbnRlbnQtPmltYWdlKCkpOyAvLyBh
bm9ueW1vdXMgb2JqZWN0CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBzdHlsZS0+aW5oZXJp
dEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3R5
bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogc3R5
bGVJbWFnZSA9IGNvbnRlbnQtPmltYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIGltYWdlLT5z
ZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gaW1h
Z2U7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IENPTlRFTlRfQ09VTlRFUjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA5
OTMyNzhjLi5hODc2MmE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJ
bWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAgICAgfQogCiAgICAg
Ly8gbWluaW11bSBoZWlnaHQKLSAgICBzZXRIZWlnaHQoZXJyb3JPY2N1cnJlZCgpID8gaW50cmlu
c2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7CisgICAgc2V0SGVpZ2h0KGltYWdlUmVzb3VyY2UoKS0+
ZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7CiAKICAgICBj
YWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7CkBAIC05MSwxNCArOTEsMTUgQEAgdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCwgaW50KQogICAg
ICAgICBQYWludEluZm8gc2F2ZWRJbmZvKHBhaW50SW5mbyk7CiAKICAgICAgICAgaWYgKFNWR1Jl
bmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvKSkg
eworICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLT5pbWFnZSgpOwog
ICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9sb2NhbEJvdW5kczsKLSAgICAgICAg
ICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlKCktPndpZHRoKCksIGltYWdlKCktPmhl
aWdodCgpKTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0
aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICBTVkdJbWFnZUVsZW1lbnQqIGlt
YWdlRWx0ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKICAgICAgICAg
ICAgIGlmIChpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWduKCkgIT0gU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKICAgICAgICAg
ICAgICAgICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVz
dFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIERldmljZUNvbG9yU3Bh
Y2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgfQogICAgICAgICBTVkdSZW5kZXJTdXBw
b3J0OjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgc2F2ZWRJbmZvLmNv
bnRleHQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBhYjk2OWNjLi45
NGE1M2EyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAg
SW50U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpCiAgICAgaWYgKHBs
YXllcigpICYmIHZpZGVvLT5yZWFkeVN0YXRlKCkgPj0gSFRNTFZpZGVvRWxlbWVudDo6SEFWRV9N
RVRBREFUQSkKICAgICAgICAgcmV0dXJuIHBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOwogCi0gICAg
aWYgKHZpZGVvLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSAmJiAhbV9jYWNoZWRJbWFnZVNp
emUuaXNFbXB0eSgpICYmICFlcnJvck9jY3VycmVkKCkpCisgICAgaWYgKHZpZGVvLT5zaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSAmJiAhbV9jYWNoZWRJbWFnZVNpemUuaXNFbXB0eSgpICYmICFp
bWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
SW1hZ2VTaXplOwogCiAgICAgLy8gV2hlbiB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSB2aWRlbyBp
cyB1bmF2YWlsYWJsZSwgd2UgdXNlIHRoZSBwcm92aWRlZApAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgUmVuZGVyVmlkZW86OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNv
bnN0IEludFJlY3QqIHJlY3QpCiAgICAgLy8gZXZlbiBhZnRlciB3ZSBrbm93IHRoZSB2aWRlbyBp
bnRyaXNpYyBzaXplIGJ1dCBhcmVuJ3QgYWJsZSB0byBkcmF3IHZpZGVvIGZyYW1lcyB5ZXQKICAg
ICAvLyAod2UgZG9uJ3Qgd2FudCB0byBzY2FsZSB0aGUgcG9zdGVyIHRvIHRoZSB2aWRlbyBzaXpl
KS4KICAgICBpZiAodmlkZW9FbGVtZW50KCktPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7
Ci0gICAgICAgIGlmIChlcnJvck9jY3VycmVkKCkpCisgICAgICAgIGlmIChpbWFnZVJlc291cmNl
KCktPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHVwZGF0ZUludHJpbnNpY1NpemUoKTsK
ICAgICAgICAgbV9jYWNoZWRJbWFnZVNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYzVlNDgwMi4uMGU0ZmIxMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0
YWNoKCkKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0YWNoKCk7CiAKICAg
ICBpZiAoUmVuZGVyU1ZHSW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJl
cigpKSkgewotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkpCisgICAgICAgIGlmIChp
bWFnZU9iai0+aW1hZ2VSZXNvdXJjZSgpLT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdl
KCkpOworICAgICAgICBpbWFnZU9iai0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlTG9hZGVyLmltYWdlKCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64272</attachid>
            <date>2010-08-12 15:16:49 -0700</date>
            <delta_ts>2010-08-13 02:42:42 -0700</delta_ts>
            <desc>Patch #1h (add RenderImageResource)</desc>
            <filename>0001-RenderImageRes.patch</filename>
            <type>text/plain</type>
            <size>76203</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBjMzJiY2FlLi44OTkyMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTMsNyArNjEzLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDc3NDNkMjYuLjBlNTk5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM2OSw3ICsxMzY5
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA3M2E4ZWUuLjRlZThlODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDEwLTA4
LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1h
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6aGFzSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
Ojp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
UmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpyZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6dXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdl
UHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmNhbGN1bGF0ZUludHJpbnNpY1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisKIDIwMTAtMDgtMTIgIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHNvcnQg
b2YgWENvZGUgcHJvamVjdCBmaWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNzA5NzlkNC4uODNjZmIwMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0yMjUyLDggKzIyNTIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKLQlXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKLQlXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDRiZjYyZDMuLjcyMmU5MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMjcxLDggKzMyNzEs
MTAgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAn
LAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAzOGExOWQ4Li4xMWIzZmExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwMDIsNyAr
MTAwMiw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorICAgIHJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODE0LDcgKzE4MTUsOCBAQCBIRUFE
RVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaCBcCiAgICAgcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKLSAg
ICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggXAorICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmgg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZjk1ZDJjMS4uZjU2NzZj
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTE1NywxMSArMjkx
NTcsMTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAiDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlNTFjOTguLjEwMWYxOTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDggQEAKIAkJMDg1
QjA1QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCMDVDMTExRkFFMTZD
MDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyog
Rm9ybURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8q
IEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTA4NjQxRDQ3MTIxNDJGN0Qw
MDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5
RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovOyB9OworCQkwODY0MUQ0
ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJG
N0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovOyB9OwogCQkw
ODY1Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTQwRURERjUxQjAwREY5
RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg2NUNDRTcwRURERjUxQjAwREY5
RUMzIC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQu
aCAqLzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5jcHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMx
MjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVs
ZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAg
Ki87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYw
MEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYw
MDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENF
QzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBF
MUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
OEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJF
MSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ3ODksOCArNDc5Myw2IEBACiAJCUJD
QjE2QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyog
UmVxdWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMx
NjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICovOyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2
MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIg
LyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi87IH07Ci0JCUJDQjRGODkzMERCMjhF
NTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4OTIwREIyOEU1MzAwMzkx
MzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi87IH07CiAJCUJDQjc3MzYx
MEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNUUwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi87IH07CiAJCUJDQjc3MzYyMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBK
U05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJQkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU4MzksNiArNTg0MSw4IEBACiAJCTA4NUIwNUMxMTFGQUUx
NkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVp
bGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI5MEVGREU3M0Qw
MEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4
NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2
MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNDBFRERGNTFCMDBERjlF
QzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU5MDksNiArNTkxMyw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0
ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3Rm
aWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZG
NDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2
NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUzMCw4ICsxMDUzNiw2IEBACiAJCUJD
QjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Ix
NkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODkyMERCMjhF
NTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzYwMEMxNzg1M0Qw
MDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjkzMCw4ICsxNjkzNCwxMCBAQAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQw
MEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJCQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJDRUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAotCQkJCUJDQjRGODhGMERCMjhERDYwMDM5
MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLywKKwkJCQkwOEYyRjAwNzEy
MTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8sCisJCQkJMDhGMkYw
MDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLywKKwkJCQkwODY0
MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3Bw
ICovLAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJ
bmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJ
bmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5s
aW5lLmNwcCAqLywKQEAgLTE5NDY3LDcgKzE5NDczLDggQEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAy
MDA5NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4
RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg2NDFENDgxMjE0MkY3RDAw
OERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5w
dXRTcGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NjYsNyArMjE5NzMsOCBAQAogCQkJCUJD
RUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTBEMDI5
MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggNmI5MGI2My4uNmFhMzE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTgxNiwzMyArMTgxNiwz
NCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCFhbHQuaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKG5vZGUg
JiYgbm9kZS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKSB7CiAgICAgICAgICAgICBSZW5kZXJIVE1M
Q2FudmFzKiBjYW52YXMgPSB0b1JlbmRlckhUTUxDYW52YXMobV9yZW5kZXJlcik7CiAgICAgICAg
ICAgICBpZiAoY2FudmFzLT5oZWlnaHQoKSA8PSAxIHx8IGNhbnZhcy0+d2lkdGgoKSA8PSAxKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc05hdGl2ZUltYWdlKCkpIHsKICAg
ICAgICAgICAgIC8vIGNoZWNrIGZvciBvbmUtZGltZW5zaW9uYWwgaW1hZ2UKLSAgICAgICAgICAg
IFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlcik7Ci0gICAgICAg
ICAgICBpZiAoaW1hZ2UtPmhlaWdodCgpIDw9IDEgfHwgaW1hZ2UtPndpZHRoKCkgPD0gMSkKKyAg
ICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5k
ZXJlcik7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291
cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIGlmIChyZW5k
ZXJJbWFnZS0+aGVpZ2h0KCkgPD0gMSB8fCByZW5kZXJJbWFnZS0+d2lkdGgoKSA8PSAxKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8v
IGNoZWNrIHdoZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1l
bnNpb25hbCBmaWxlIGltYWdlCi0gICAgICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkp
IHsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZVNpemUoaW1hZ2UtPnZpZXcoKS0+em9vbUZhY3RvcigpKTsKKyAgICAgICAgICAg
IGlmIChyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAg
ICAgSW50U2l6ZSBpbWFnZVNpemUgPSByZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgp
LT5pbWFnZVNpemUocmVuZGVySW1hZ2UtPnZpZXcoKS0+em9vbUZhY3RvcigpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gaW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwgaW1hZ2VTaXplLndpZHRo
KCkgPD0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgLy8gbWFrZSBhIHBsYXRmb3JtLXNwZWNpZmljIGRlY2lzaW9u
CiAgICAgaWYgKGlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUln
bm9yZUF0dGFjaG1lbnQoKTsKLSAgICAKKwogICAgIHJldHVybiAhbV9yZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkgJiYgIWlzV2ViQXJlYSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
aW5kZXggM2Y3MDBlZi4uMzFlY2YwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAg
bV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIAogICAgICAgICBpZiAocmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNldENhY2hlZElt
YWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4
MmVlYWIxLi4yMzU0Njg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xOTEsMTUg
KzE5MSwxNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgSFRNTEVsZW1l
bnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFn
ZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVmb3JlTG9hZEV2ZW50KCkpIHsKLSAgICAg
ICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKLSAg
ICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBSZW5kZXJJbWFnZSogcmVu
ZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgICAgICBSZW5kZXJJbWFn
ZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3Vy
Y2UoKTsKKyAgICAgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdl
TG9hZGVyLmltYWdlKCkpOworICAgICAgICByZW5kZXJJbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJ
bWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8g
aW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBzZXQKICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFpbWFnZU9iai0+Y2FjaGVkSW1h
Z2UoKSkKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7Cisg
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNl
LT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgcmVuZGVySW1hZ2UtPnNldEltYWdlU2l6ZUZv
ckFsdFRleHQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAz
NDg4Y2RlLi5jM2NhYTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjA4LDEz
ICsxMjA4LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAg
IG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAocmVuZGVyZXIo
KSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
LSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFn
ZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFn
ZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJl
c291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2Uo
KTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1h
Z2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFn
ZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNo
ZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRl
ckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgcmVuZGVySW1h
Z2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGVkMmQzNWMuLjg2ZmQwZGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKQEAgLTc4LDEwICs3OCw4IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
YXR0YWNoKCkKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRDYWNoZWRJbWFnZShtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRlcmVyKCkp
CisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCkt
PnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9CiAjZW5kaWYK
IH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIGlmIChtX2ltYWdlTG9hZGVy
KQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSkt
PnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAgICAgICAgfQog
I2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApA
QCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNW
R0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2Jq
ZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJp
YyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0x
MzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBu
ZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAg
fQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsK
LSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5k
ZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9u
KCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwx
MSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAg
ICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAo
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2Uo
KSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAt
MjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMp
OwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNv
dXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVy
ZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVy
ZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVy
ZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBp
ZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVu
ZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCiB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVy
IGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAg
Ly8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUg
Y2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3
ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
UmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZElt
YWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hlZEltYWdlKSkKLSAgICAgICAgICAgIGlt
YWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBS
ZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgp
OworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBP
bmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlm
IHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRz
IGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlz
IGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBj
YWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAg
IGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIElt
YWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3Mg
SW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAt
NzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJl
bmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0
ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCBkOTNhMjU2Li42NWIxODE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcik7Ci0gICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIHJldHVy
biBpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOwogfQogCiBzdGF0aWMgSW1h
Z2UqIGdldEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA2MjQ0YTIuLjE1OGI1YjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC00
NDIsOSArNDQyLDkgQEAgc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50
KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcik7Ci0gICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hl
ZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVk
SW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBj
YWNoZWRJbWFnZTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDU4MzczYjEuLmNhODM1MzMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAK
QEAgLTEyMyw4ICsxMjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9k
ZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQobm9kZS0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVu
ZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2Uo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYTAwNjljZi4uZGY4
MTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTk2LDggKzk2
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gZ3RrX2NsaXBi
b2FyZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVD
VElPTl9DTElQQk9BUkQpOwogCiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAm
JiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRlckltYWdlKiByZW5kZXJl
ciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJj
ZSgpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNh
Y2hlZEltYWdlLT5pbWFnZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5k
ZXggYmJhN2NhYy4uOGRmYTIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yOTgsOCArMjk4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBBU1NFUlQoY29j
b2FVUkwpOwogCiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVu
ZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCBm
Njc3ZDI4Li43MTQ3YTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjUw
LDkgKzI1MCw5IEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCog
ZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hl
ZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJ
bWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKGNhY2hlZElt
YWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gY2Fj
aGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0
LmNwcAppbmRleCBlMWU2ZDg0Li45OTVlYWQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJk
UXQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5v
ZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEFTU0VSVChub2RlICYm
IG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKIAogI2lm
bmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1Jl
bmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdl
UmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMjkxNWY5ZC4uZGQxNDE4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC02NzIsMTAgKzY3MiwxMCBAQCBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8
fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkgCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFJl
bmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFn
ZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQo
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworCisgICAgQ2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2Uo
KS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5l
cnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZTsKIAogICAgIHJldHVy
biAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwM2VjZDM2
Li5kNzM2NzA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5yZW5k
ZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2Uq
IHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFn
ZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFn
ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZDk2ZTBlLi5mNmMwODQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjQzLDEyICsyNDMsMTIgQEAg
SW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJO
b25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSog
aW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAg
ICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+
ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgp
LT5pbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBp
ZiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNTY1NzgxMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSwg
U3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNp
emUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uo
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKHRoaXMsIHN0eWxlSW1hZ2UpKQogewogICAgIHVw
ZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlO
b25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwotfQotCi12b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3
SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVt
b3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7
Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAg
ICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3
ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUg
cGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIy
ICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0
aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdl
ZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkg
fHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VT
aXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2lu
ZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9j
Y3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6
ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wg
c2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVl
biBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShz
dHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVD
aGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0
SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAg
aWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkg
IT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNp
Y1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
KSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQg
dXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8g
cmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYwLDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFn
ZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAg
IC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVz
IChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9m
IHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWlu
dFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3Qo
KSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0
cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsK
ICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBt
X2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1h
Z2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRl
bGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUg
aW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAg
ICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Miw2IEBA
IHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFn
ZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJl
bmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsK
LSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xh
eW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkp
CiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8
fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2Uo
KSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVz
YWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBj
SGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2Uo
KS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2Fi
bGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1h
Z2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdl
UmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdp
ZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkp
IHsKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5n
IGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAo
dXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50
IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAg
ICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7
Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+
aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWln
aHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8
IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGlt
YWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAg
ICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwg
SW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4
ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURy
YXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2MSw4IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250
KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hl
aWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7
CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4g
MCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNl
LT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNCwyMiBAQCB2b2lkIFJl
bmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCBy
ZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkg
fHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAg
fHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1n
ID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0g
bV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAg
IGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1n
VGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0
LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhp
cy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3Qs
IGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0
eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQo
KSBjb25zdAogewotICAgIHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCku
aGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBS
ZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjIsMTggQEAgYm9vbCBS
ZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6
OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlm
IChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bv
c2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAg
ICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNp
emUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94
KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3Vy
Y2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxh
YmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAg
ICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAg
ICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAg
IGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+
aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0
aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRo
IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAg
ICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSArNDQ5LDkgQEAg
aW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWln
aHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNS
ZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2Vz
SW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRh
aW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUo
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdl
UmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsg
Ly8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAg
dW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBo
ZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0NjcsNyBAQCBpbnQg
UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNp
emUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlm
ICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIg
c2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgp
ICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0NzcsNyBAQCBp
bnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6
ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAg
IGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJy
b3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90
aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0
aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDIsNCBA
QCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0Rp
cnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAg
IHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjQxMDNmZTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAj
ZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
MywyOCArMzQsMjAgQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdl
IDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2Rl
Kik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwg
U3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3Vy
Y2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBSZW5kZXJJ
bWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlc291
cmNlLmdldCgpOyB9CiAKICAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1h
Z2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZv
aWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1M
TWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25zdDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24o
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxS
ZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGlu
dCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hl
ZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmly
dHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYm
IG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
Jik7CkBAIC02NCwxNCArNTcsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNp
ZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdl
UHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFn
ZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5pbWFnZVB0cigpKTsgfQogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJ
bWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0
KCkgY29uc3Q7CkBAIC04NCwzNyArNzcsMjUgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5l
clNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1h
Z2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVk
SW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0K
ICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVj
dFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2Ug
YXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBh
cyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAg
T3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJjZTsKIAotICAgIHN0YXRp
YyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAgCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdl
U2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGluZSBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShS
ZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0
LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+
KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwg
b2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBS
ZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVy
YXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OlJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBSZW5kZXJJbWFnZShuKQote30KLQotUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAg
ICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlz
KTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2Uo
U3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlLT5pc0NhY2hlZEltYWdlKCkpCi0g
ICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oaW1h
Z2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1fc3R5bGVJbWFnZSA9IGltYWdlOwotICAgIG1fc3R5
bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotI2Rl
ZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotCi0jaW5jbHVkZSAiUmVuZGVySW1h
Z2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0eWxlSW1hZ2U7Ci0KLWNsYXNzIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7Ci1wdWJsaWM6Ci0g
ICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KE5vZGUqKTsKLSAgICB2aXJ0dWFsIH5SZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsKLSAgICAKLSAgICB2b2lkIHNldFN0eWxlSW1hZ2Uo
U3R5bGVJbWFnZSopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFn
ZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZSh0aGlz
LCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdl
Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+
c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9
Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBtdWx0aXBsaWVyKTsgfQotICAg
IAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNhbiBiZSAwIGlmIHdlIGdldCBhIGNhbGxiYWNrIGZv
ciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBSZW5kZXJPYmplY3Q6OnNldFN0eWxlLgotICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRy
PFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjdjZWZlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVy
IDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Up
Cit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRlcmVyLCBzdHlsZUltYWdlKTsKKworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZShyZW5kZXJlcikpOworfQorCitSZW5k
ZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQor
eworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5k
ZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlcklt
YWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAg
ICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCht
X3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2Fj
aGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIp
OworICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAg
ICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0K
K30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAg
aWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNl
dEFuaW1hdGlvbigpOworCisgICAgaWYgKCFtX3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAg
ICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6c2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhY2hlZElt
YWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFn
ZVJlc291cmNlOjpudWxsSW1hZ2UoKQoreworICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
UmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmY4ODQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8
a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29p
dmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVz
b3VyY2VfaAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKK2Ns
YXNzIFN0eWxlSW1hZ2U7CisKK2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2UgOiBwdWJsaWMgTm9u
Y29weWFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2UoKTsK
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5k
ZXJPYmplY3QqLCBTdHlsZUltYWdlKiA9IDApOworCisgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSopOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQorCisgICAgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisg
ICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdo
dCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgp
IDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdl
LT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9j
YWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBsaWVyKSA6IElu
dFNpemUoKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBSZW5k
ZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVjdCopOworICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIoKSB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW5k
ZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1h
Z2U+IG1fY2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNDY4ZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5j
cHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xs
IDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxr
b2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVl
bGxlckBrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNl
biA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaCIKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoUmVuZGVyT2Jq
ZWN0KiByZW5kZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCisgICAgOiBSZW5kZXJJbWFnZVJl
c291cmNlKHJlbmRlcikKKyAgICAsIG1fc3R5bGVJbWFnZShzdHlsZUltYWdlKQoreworICAgIEFT
U0VSVChtX3N0eWxlSW1hZ2UpOworCisgICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFn
ZSgpKQorICAgICAgICBzZXRDYWNoZWRJbWFnZShzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdl
Kj4oc3R5bGVJbWFnZSktPmNhY2hlZEltYWdlKCkpOworICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xp
ZW50KHJlbmRlcmVyKCkpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCkKK3sKKyAgICBtX3N0eWxlSW1hZ2UtPnJlbW92
ZUNsaWVudChyZW5kZXJlcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzOTljMwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBr
ZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0Br
ZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2Rl
QGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZV9oCisjZGVmaW5lIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlX2gKKworI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIK
KyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1hZ2VSZXNvdXJjZSB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBjcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKHJlbmRlcmVyLCBzdHlsZUltYWdlKSk7IH0K
KworICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAw
KSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlKHJlbmRlcmVyKCksIEludFNpemUod2lkdGgs
IGhlaWdodCkpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lk
IHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IG1fc3R5
bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9CisgICAgdmlydHVhbCBib29s
IHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQorCisg
ICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShyZW5kZXJlcigpLCBtdWx0aXBsaWVyKTsgfQor
CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlSW1hZ2UgPyBtX3N0eWxlSW1hZ2UtPmRhdGEoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAg
ICBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShSZW5kZXJPYmplY3QqLCBTdHlsZUltYWdl
Kik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlU3R5bGVJbWFnZV9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA5NWVjM2YzLi41OWRmNDQz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTc5Nyw5ICs3
OTcsOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgp
CiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cygpCiB7CiAgICAg
QVNTRVJUKHJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlUmVu
ZGVyZXIgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwogCi0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNl
KCktPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyN2VhYmNkLi4xMjM0YjA3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJGbGV4aWJsZUJveC5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgpA
QCAtMTA3LDEwICsxMDcsOCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyBPdGhlcndpc2UgYWN0
cyBhcyBpZiB3ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCiAgICAgY29uc3QgQ29udGVu
dERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7CiAgICAgaWYgKGNvbnRl
bnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGNvbnRlbnREYXRhLT5pc0ltYWdlKCkg
JiYgZG9jICE9IG5vZGUpIHsKLSAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBp
bWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChub2RlKTsKKyAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2Uobm9kZSwg
Y29udGVudERhdGEtPmltYWdlKCkpOwogICAgICAgICBpbWFnZS0+c2V0U3R5bGUoc3R5bGUpOwot
ICAgICAgICBpZiAoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGNvbnRlbnREYXRhLT5pbWFnZSgp
KQotICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSk7CiAgICAgICAg
IHJldHVybiBpbWFnZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCmluZGV4IDY4ZTM5MmMuLjJiYWI0NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJl
bmRlckNvdW50ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCIK
KyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTQz
MCwxMyArNDMwLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVB
ZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvCiAgICAgICAgICAgICAgICAg
cmVuZGVyZXItPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENPTlRFTlRfT0JKRUNUOiB7Ci0gICAgICAgICAgICAg
ICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAob3duZXItPnJlbmRl
ckFyZW5hKCkpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChvd25lci0+ZG9jdW1lbnQoKSk7
IC8vIGFub255bW91cyBvYmplY3QKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9IG5ldyAob3du
ZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKG93bmVyLT5kb2N1bWVudCgpLCBjb250ZW50
LT5pbWFnZSgpKTsgLy8gYW5vbnltb3VzIG9iamVjdAogICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICAg
ICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50LT5pbWFnZSgpKQotICAgICAgICAgICAg
ICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKLSAgICAgICAgICAgICAg
ICByZW5kZXJlciA9IGltYWdlOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShz
dHlsZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY2FzZSBDT05URU5UX0NPVU5URVI6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJ
bWFnZS5jcHAKaW5kZXggOTkzMjc4Yy4uYTg3NjJhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQo
KQogICAgIH0KIAogICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGVycm9yT2Nj
dXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDApOworICAgIHNldEhlaWdodChp
bWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQo
KSA6IDApOwogCiAgICAgY2FsY1dpZHRoKCk7CiAgICAgY2FsY0hlaWdodCgpOwpAQCAtOTEsMTQg
KzkxLDE1IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBpbnQsIGludCkKICAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWludEluZm8pOwogCiAg
ICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRo
aXMsIHBhaW50SW5mbykpIHsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3Vy
Y2UoKS0+aW1hZ2UoKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fbG9jYWxC
b3VuZHM7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZSgpLT53aWR0
aCgpLCBpbWFnZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgw
LCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAgICAgU1ZH
SW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5v
ZGUoKSk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5h
bGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X05PTkUpCiAgICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50
cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIH0KICAgICAg
ICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludElu
Zm8sIHNhdmVkSW5mby5jb250ZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
aW5kZXggYWI5NjljYy4uOTRhNTNhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAt
MTEwLDcgKzExMCw3IEBAIEludFNpemUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1Np
emUoKQogICAgIGlmIChwbGF5ZXIoKSAmJiB2aWRlby0+cmVhZHlTdGF0ZSgpID49IEhUTUxWaWRl
b0VsZW1lbnQ6OkhBVkVfTUVUQURBVEEpCiAgICAgICAgIHJldHVybiBwbGF5ZXIoKS0+bmF0dXJh
bFNpemUoKTsKIAotICAgIGlmICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgJiYg
IW1fY2FjaGVkSW1hZ2VTaXplLmlzRW1wdHkoKSAmJiAhZXJyb3JPY2N1cnJlZCgpKQorICAgIGlm
ICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgJiYgIW1fY2FjaGVkSW1hZ2VTaXpl
LmlzRW1wdHkoKSAmJiAhaW1hZ2VSZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZEltYWdlU2l6ZTsKIAogICAgIC8vIFdoZW4gdGhlIG5hdHVyYWwgc2l6
ZSBvZiB0aGUgdmlkZW8gaXMgdW5hdmFpbGFibGUsIHdlIHVzZSB0aGUgcHJvdmlkZWQKQEAgLTEz
Nyw3ICsxMzcsNyBAQCB2b2lkIFJlbmRlclZpZGVvOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdl
UHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogICAgIC8vIGV2ZW4gYWZ0ZXIgd2Ug
a25vdyB0aGUgdmlkZW8gaW50cmlzaWMgc2l6ZSBidXQgYXJlbid0IGFibGUgdG8gZHJhdyB2aWRl
byBmcmFtZXMgeWV0CiAgICAgLy8gKHdlIGRvbid0IHdhbnQgdG8gc2NhbGUgdGhlIHBvc3RlciB0
byB0aGUgdmlkZW8gc2l6ZSkuCiAgICAgaWYgKHZpZGVvRWxlbWVudCgpLT5zaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoKSkgewotICAgICAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBp
ZiAoaW1hZ2VSZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgICAgICB1cGRhdGVJ
bnRyaW5zaWNTaXplKCk7CiAgICAgICAgIG1fY2FjaGVkSW1hZ2VTaXplID0gaW50cmluc2ljU2l6
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM1ZTQ4MDIuLjBlNGZiMTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9pZCBTVkdJ
bWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OmF0dGFjaCgpOwogCiAgICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVy
U1ZHSW1hZ2UocmVuZGVyZXIoKSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgp
KQorICAgICAgICBpZiAoaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+aGFzSW1hZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9p
bWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+
c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="52805"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64315</attachid>
            <date>2010-08-13 02:42:42 -0700</date>
            <delta_ts>2010-08-24 16:34:15 -0700</delta_ts>
            <desc>Patch #1i (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>76993</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA5MGFkMTExLi5lMWZlNDBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MTYsNyArNjE2LDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGFjNjRmNjYuLjc2NDg4M2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3MCw3ICsxMzcw
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDE0YWZkYjEuLjRiYjRkZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDEwLTA4
LTEzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OmF0dGFj
aCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9h
cmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRy
aW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFnZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldEltYWdlQ29u
dGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpudWxs
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y2FjaGVkSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aGFzSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpyZW5kZXJlcik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmVycm9yT2NjdXJy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNl
dEltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U6OmltYWdlUHRyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlSW1hZ2VDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ltYWdlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlkZW86OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFj
aCk6CisKIDIwMTAtMDgtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJjYTJh
YWUuLjVmZDc2YTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI1NCw4ICsyMjU0LDEwIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmggXAogCVdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBc
Ci0JV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggXAorCVdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIFwKKwlXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5kaWNh
dG9yLmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogCVdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3NGU4MTI2Li44OGJmNzlkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzI3Myw4ICszMjczLDEwIEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklG
cmFtZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCcsCi0gICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAnLAotICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckluZGlj
YXRvci5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNGNhOWZkMC4uN2Vk
NWFlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0xMDAzLDcgKzEwMDMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcv
UmVuZGVySFRNTENhbnZhcy5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIFwK
ICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIFwKLSAgICByZW5kZXJpbmcvUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3Bw
IFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgXApAQCAtMTgx
Niw3ICsxODE3LDggQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmggXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuaCBcCi0gICAgcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIFwKKyAgICByZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDVmZjQyNTAuLjdkMWZmNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMjkxNTcsMTEgKzI5MTU3LDE5IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnQuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCINCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJjZS5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOWVkMWI0Li4xZTNl
M2VlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIw
LDYgKzEyMCw4IEBACiAJCTA4NUIwNUMzMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXND
eWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmgg
Ki87IH07CiAJCTA4NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjgw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi87IH07CiAJCTA4NUI5MkJC
MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBG
b3JtRGF0YUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9Owor
CQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2
NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNw
cCAqLzsgfTsKKwkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UuaCAqLzsgfTsKIAkJMDg2NUNDRTYwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi87IH07CiAJCTA4
NjVDQ0U3MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTUwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmggKi87IH07CiAJCTA4NkE0MDA2MTFGNkQ2QjcwMDJDRUM1MyAv
KiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZBNDAwNTExRjZENkI3MDAyQ0VDNTMgLyogUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovOyB9OwpAQCAtMjAzLDYgKzIwNSw4IEBACiAJCTA4
RTZBMkU5MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2QTJFNzBFRUUwMzUyMDBB
QzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovOyB9OwogCQkwOEU2RTBGMTBFRkY0MkJB
MDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxG
aWVsZFNldEVsZW1lbnQuY3BwICovOyB9OwogCQkwOEU2RTBGMjBFRkY0MkJBMDAwMjlGQkYgLyog
V01MRmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50
LmggKi87IH07CisJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291
cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLzsgfTsK
KwkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2
MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IH07CiAJCTBBNDg0NDk5MENB
NDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5r
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEFGREFDM0QxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUZEQUMzQzEwRjU0NDhDMDBFMUYz
RDIgLyogUGx1Z2luVmlld0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQjhDNTZENDBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjhD
NTZEMzBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1hcC5jcHAgKi87IH07CkBAIC00Nzkx
LDggKzQ3OTUsNiBAQAogCQlCQ0IxNkMyRDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNDA5NzlD
M0JEMDA0Njc3NDEgLyogbG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMkUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMTUw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3BwICovOyB9OwogCQlCQ0IxNkMyRjA5NzlDM0JE
MDA0Njc3NDEgLyogUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCAqLzsgfTsK
LQkJQkNCNEY4OTAwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4
OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovOyB9
OwotCQlCQ0I0Rjg5MzBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
ICovOyB9OwogCQlCQ0I3NzM2MTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
Qjc3MzVFMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovOyB9
OwogCQlCQ0I3NzM2MjBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM1RjBD
MTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi87IH07CiAJCUJDQjc3
MzYzMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNjAwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi87IH07CkBAIC01ODQxLDYgKzU4NDMsOCBA
QAogCQkwODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjgwRUZERTczRDAwRTYx
MjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2
NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTE5vb3BFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NUNDRTUwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTE5vb3BFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAv
KiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01OTExLDYgKzU5MTUsOCBAQAogCQkwOEU2QTJFNzBFRUUwMzUy
MDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXTUxQb3N0ZmllbGRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRjAwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXTUxGaWVsZFNldEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAv
KiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckltYWdlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1l
bnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRD
QjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MzQs
OCArMTA1NDAsNiBAQAogCQlCQ0IxNkMxNDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBsb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcXVlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMxNjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVxdWVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3
MzVFMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAv
KiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5MzYsOCArMTY5NDAsMTAgQEAKIAkJ
CQkwRkQzMDhENDExN0QxNjg0MDBBNzkxRjcgLyogUmVuZGVySUZyYW1lLmggKi8sCiAJCQkJQkNF
QTQ4MzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNwcCAqLywKIAkJCQlCQ0VBNDgz
NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuaCAqLywKLQkJCQlCQ0I0Rjg5MjBEQjI4
RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCAqLywKLQkJCQlC
Q0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
Ki8sCisJCQkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwICovLAorCQkJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291
cmNlLmggKi8sCisJCQkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCAqLywKKwkJCQkwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyog
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCAqLywKIAkJCQlBN0FBNjZENDExQzVFRDZB
MDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmNwcCAqLywKIAkJCQlBN0FBNjZENTExQzVFRDZB
MDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggKi8sCiAJCQkJQkNFQTQ4MzgwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgKi8sCkBAIC0xOTQ3Myw3ICsxOTQ3OSw4IEBACiAJ
CQkJQkNFQTQ4NkEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckhUTUxDYW52YXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDMwOEQ2MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCNEY4OTAwREIyOERENjAwMzkxMzlCIC8qIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhGMkYwMEExMjEz
RTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBQTY2RDcxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRl
ckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NzgwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlcklubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzUwRDAyOTQxMUQwRTdGMzAw
QkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggaW4gSGVhZGVycyAqLywKQEAgLTIxOTczLDcg
KzIxOTgwLDggQEAKIAkJCQlCQ0VBNDg2OTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySFRNTENh
bnZhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzMDhENTExN0QxNjg1MDBBNzkxRjcgLyog
UmVuZGVySUZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODc1MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0I0Rjg5MzBEQjI4
RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4NjQxRDQ3MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0FBNjZE
NjExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUE0ODc3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNo
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDZiOTBiNjMuLjZhYTMxOGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE4MTYsMzMgKzE4MTYsMzQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgICAgIGlmICghYWx0LmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAor
CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoY2FudmFzVGFnKSkgewogICAg
ICAgICAgICAgUmVuZGVySFRNTENhbnZhcyogY2FudmFzID0gdG9SZW5kZXJIVE1MQ2FudmFzKG1f
cmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKGNhbnZhcy0+aGVpZ2h0KCkgPD0gMSB8fCBjYW52
YXMtPndpZHRoKCkgPD0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoaXNO
YXRpdmVJbWFnZSgpKSB7CiAgICAgICAgICAgICAvLyBjaGVjayBmb3Igb25lLWRpbWVuc2lvbmFs
IGltYWdlCi0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKG1f
cmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKGltYWdlLT5oZWlnaHQoKSA8PSAxIHx8IGltYWdl
LT53aWR0aCgpIDw9IDEpCisgICAgICAgICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0
b1JlbmRlckltYWdlKG1fcmVuZGVyZXIpOworICAgICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJj
ZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7Cisg
ICAgICAgICAgICBpZiAocmVuZGVySW1hZ2UtPmhlaWdodCgpIDw9IDEgfHwgcmVuZGVySW1hZ2Ut
PndpZHRoKCkgPD0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHJlbmRlcmVkIGltYWdlIHdhcyBzdHJl
dGNoZWQgZnJvbSBvbmUtZGltZW5zaW9uYWwgZmlsZSBpbWFnZQotICAgICAgICAgICAgaWYgKGlt
YWdlLT5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKGltYWdlLT52aWV3KCktPnpvb21GYWN0
b3IoKSk7CisgICAgICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2Uo
KSkgeworICAgICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplID0gcmVuZGVySW1hZ2VSZXNv
dXJjZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKHJlbmRlckltYWdlLT52aWV3KCktPnpvb21G
YWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAx
IHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIC8vIG1ha2UgYSBwbGF0Zm9y
bS1zcGVjaWZpYyBkZWNpc2lvbgogICAgIGlmIChpc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCk7Ci0gICAgCisKICAgICByZXR1cm4g
IW1fcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpICYmICFpc1dlYkFyZWEoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDNmNzAwZWYuLjMxZWNmMDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6
OmF0dGFjaCgpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAK
ICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKKyAgICAgICAg
ICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVk
SW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKaW5kZXggODJlZWFiMS4uMjM1NDY4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMTkxLDE1ICsxOTEsMTYgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphdHRh
Y2goKQogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVyLmhhdmVGaXJlZEJlZm9yZUxv
YWRFdmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1hZ2UoKSkKKyAgICAg
ICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
KyAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRl
ckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgIGlmIChyZW5kZXJJbWFnZVJlc291cmNl
LT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpbWFnZU9iai0+c2V0
Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgcmVuZGVySW1hZ2VS
ZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhhdmUgbm8gc3JjIGF0
dHJpYnV0ZSwgc2V0CiAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGggZm9yIHRoZSBh
bHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSAmJiAh
aW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZU9iai0+c2V0SW1hZ2VT
aXplRm9yQWx0VGV4dCgpOworICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSAmJiAh
cmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgICAgIHJlbmRlcklt
YWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMzQ4OGNkZS4uYzNjYWE1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTIwOCwxMyArMTIwOCwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmF0
dGFjaCgpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9hZGVy
KHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9pbWFnZUxvYWRlci0+aGF2ZUZpcmVkQmVmb3JlTG9h
ZEV2ZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAotICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5k
ZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgICAg
ICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRlcklt
YWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgICAgICByZW5kZXJJbWFnZVJlc291cmNlLT5z
ZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCisKICAgICAgICAgICAgIC8v
IElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmli
dXRlLCBzZXQKICAgICAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGggZm9yIHRoZSBh
bHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLT5pbWFnZSgp
ICYmICFpbWFnZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBpbWFnZU9iai0+
c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQorICAgICAg
ICAgICAgICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBlZDJkMzVjLi44NmZk
MGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC03OCwxMCArNzgsOCBAQCB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikK
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykp
OwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgICAgICBp
ZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlUmVuZGVyZXIg
PSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+
c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAotICAgICAgICB9CisgICAg
ICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigp
KS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgp
KTsgCiAgICAgfQogI2VuZGlmCiB9CkBAIC0xMTEsNyArMTA5LDcgQEAgdm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAg
ICBpZiAobV9pbWFnZUxvYWRlcikKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLmNsZWFy
KCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKCkpLT5zZXRDYWNoZWRJbWFnZSgwKTsgCisgICAgICAgICAgICAgICAg
dG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFn
ZSgwKTsgCiAgICAgICAgIH0KICNlbmRpZgogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lk
dGhBdHRyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IGQxNjlkM2UuLjI0MmJmOTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKQEAgLTMxLDYgKzMxLDEzIEBACiAjaW5jbHVkZSAiSFRNTE9iamVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogCisjaWYgRU5BQkxFKFNWRykK
KyNpbmNsdWRlICJSZW5kZXJTVkdJbWFnZS5oIgorI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPKQor
I2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCisjZW5kaWYKKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
IC8vIEltYWdlTG9hZGVyIG9iamVjdHMgYXJlIGFsbG9jYXRlZCBhcyBtZW1iZXJzIG9mIG90aGVy
IG9iamVjdHMsIHNvIGdlbmVyaWMgcG9pbnRlciBjaGVjayB3b3VsZCBhbHdheXMgZmFpbC4KIG5h
bWVzcGFjZSBXVEYgewpAQCAtMTMwLDExICsxMzcsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjpzZXRJ
bWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3Zl
Q2xpZW50KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bV9lbGVtZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2Uo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcikt
PnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291cmNlKiBp
bWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFnZVJlc291
cmNlLT5yZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9t
RWxlbWVudCgpCkBAIC0xOTUsMTEgKzE5OSw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAg
ICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24o
KTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSBy
ZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0
aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQ
cmV2aW91c0Vycm9yKCkKQEAgLTIyMywyMCArMjI0LDQyIEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNw
YXRjaEV2ZW50U29vbih0aGlzKTsKIH0KIAorUmVuZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VMb2Fk
ZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CisKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChyZW5kZXJlci0+aXNJbWFnZSgpKQorICAgICAgICByZXR1cm4g
dG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKworI2lmIEVOQUJMRShT
VkcpCisgICAgaWYgKHJlbmRlcmVyLT5pc1NWR0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1Jl
bmRlclNWR0ltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworI2VuZGlmCisKKyNpZiBF
TkFCTEUoVklERU8pCisgICAgaWYgKHJlbmRlcmVyLT5pc1ZpZGVvKCkpCisgICAgICAgIHJldHVy
biB0b1JlbmRlclZpZGVvKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworI2VuZGlmCisKKyAg
ICByZXR1cm4gMDsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlUmVuZGVyZXIoKQogewot
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpKSB7
Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSAmJiAhcmVuZGVyZXItPmlzVmlkZW8o
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlUmVuZGVy
ZXIgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE9ubHkg
dXBkYXRlIHRoZSByZW5kZXJlciBpZiBpdCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYgd2hh
dCB3ZSBoYXZlCi0gICAgICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRz
IGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCi0gICAgICAgIC8vIGNoYW5n
ZSBpcyBoYXBwZW5pbmcgYmV0d2VlbiB0d28gaW1hZ2VzLgotICAgICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBpZiAo
bV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJbWFn
ZSkpCi0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlLmdl
dCgpKTsKLSAgICB9CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJl
bmRlckltYWdlUmVzb3VyY2UoKTsKKworICAgIGlmICghaW1hZ2VSZXNvdXJjZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3Qg
aGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdlIGhhdmUKKyAgICAvLyBpcyBhIGNvbXBsZXRlIGlt
YWdlLiAgVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGluIHRoZSBjYXNlIHdoZXJlIGEgZHluYW1p
YworICAgIC8vIGNoYW5nZSBpcyBoYXBwZW5pbmcgYmV0d2VlbiB0d28gaW1hZ2VzLgorICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCk7Cisg
ICAgaWYgKG1faW1hZ2UgIT0gY2FjaGVkSW1hZ2UgJiYgKG1faW1hZ2VDb21wbGV0ZSB8fCAhY2Fj
aGVkSW1hZ2UpKQorICAgICAgICBpbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdl
LmdldCgpKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmggYi9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IDAyZGRjZTguLjliZjc2MjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBJbWFnZUxvYWRFdmVudFNlbmRlcjsKK2NsYXNzIFJlbmRlckltYWdl
UmVzb3VyY2U7CiAKIGNsYXNzIEltYWdlTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTcyLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpOwogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9h
ZEV2ZW50KCk7CiAKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNl
KCk7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJlcigpOwogCiAgICAgRWxlbWVudCogbV9lbGVtZW50
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZDkzYTI1Ni4uNjViMTgxOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIENhY2hlZEltYWdlKiBn
ZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJl
bmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlbmRlckltYWdlKiBp
bWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIHJldHVybiBpbWFnZS0+Y2FjaGVk
SW1hZ2UoKTsKKyAgICByZXR1cm4gaW1hZ2UtPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2Uo
KTsKIH0KIAogc3RhdGljIEltYWdlKiBnZXRJbWFnZShFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCAwNjI0
NGEyLi4xNThiNWIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmNwcApAQCAtNDQyLDkgKzQ0Miw5IEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0
Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5k
ZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlckltYWdlKiBp
bWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1h
Z2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAg
cmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdl
KCk7CisgICAgaWYgKGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCA1
ODM3M2IxLi5jYTgzNTMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bh
c3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0
ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xMjMsOCArMTIzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQobm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgQVNT
RVJUKG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7Ci0gICAgUmVuZGVySW1hZ2UqIHJlbmRl
cmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5yZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5pbWFnZVJlc291
cmNlKCktPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApp
bmRleCAyMWViZTRjLi40MzQ3MGJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHAKQEAgLTMxNCw5ICszMTQsOSBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdl
KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0
aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAgICBpZiAoaW1hZ2UtPmNhY2hlZElt
YWdlKCkgJiYgIWltYWdlLT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAg
IHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFn
ZSgpOworICAgIGlmIChjYWNoZWRJbWFnZSAmJiAhY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGEwMDY5Y2YuLmRmODE5OGQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC05Niw4ICs5Niw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJikKICAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0
X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJ
UEJPQVJEKTsKIAogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+
cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1Jl
bmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+Y2Fj
aGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9j
Y3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGJiYTdj
YWMuLjhkZmEyM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjk4
LDggKzI5OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgQVNTRVJUKGNvY29hVVJMKTsK
IAogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1h
Z2UoKSk7Ci0gICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShub2RlLT5y
ZW5kZXJlcigpKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2Fj
aGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdl
KG5vZGUtPnJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPmNhY2hlZEltYWdlKCk7CiAgICAg
aWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggZjY3N2QyOC4u
NzE0N2EzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTI1MCw5ICsyNTAs
OSBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVy
KTsKLSAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdlLT5jYWNoZWRJbWFnZSgp
LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsK
KyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+
aW1hZ2VSZXNvdXJjZSgpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmIChjYWNoZWRJbWFnZSAmJiAh
Y2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdl
OwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bh
c3RlYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5k
ZXggZTFlNmQ4NC4uOTk1ZWFkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0
ZWJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApA
QCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2Rl
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5y
ZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAKICNpZm5kZWYgUVRf
Tk9fQ0xJUEJPQVJECi0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFn
ZShub2RlLT5yZW5kZXJlcigpKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNl
KCktPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+
ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwCmluZGV4IDI5MTVmOWQuLmRkMTQxODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcApAQCAtNjcyLDEwICs2NzIsMTAgQEAgc3RhdGljIENhY2hlZEltYWdl
KiBnZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRl
cmVyLT5pc0ltYWdlKCkpIAogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBSZW5kZXJJbWFn
ZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKTsKLSAgICBpZiAoaW1hZ2UtPmNhY2hl
ZEltYWdlKCkgJiYgIWltYWdlLT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCktPmNhY2hl
ZEltYWdlKCk7CisgICAgaWYgKGNhY2hlZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpKQorICAgICAgICByZXR1cm4gY2FjaGVkSW1hZ2U7CiAKICAgICByZXR1cm4gMDsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMDNlY2QzNi4uZDczNjcw
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTIxMCw3ICsyMTAs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAm
JiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpOwogICAgIFJlbmRlckltYWdlKiByZW5kZXJl
ciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gcmVuZGVyZXItPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKICAg
ICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZGQ5NmUwZS4uZjZjMDg0MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI0MywxMiArMjQzLDEyIEBAIEltYWdlKiBI
aXRUZXN0UmVzdWx0OjppbWFnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVk
Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlm
IChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2Nj
dXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2Uo
KTsKKyAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5k
ZXJlciktPmltYWdlUmVzb3VyY2UoKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgaWYgKGNhY2hl
ZEltYWdlICYmICFjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0
dXJuIGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDIwNzM0NzkuLjU2NTc4MTEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTU1LDM1ICs1NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShO
b2RlKiBub2RlKQorUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUsIFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChub2RlLCBJbnRTaXplKDAsIDAp
KQotICAgICwgbV9jYWNoZWRJbWFnZSgwKQorICAgICwgbV9pbWFnZVJlc291cmNlKFJlbmRlcklt
YWdlUmVzb3VyY2U6OmNyZWF0ZSh0aGlzLCBzdHlsZUltYWdlKSkKIHsKICAgICB1cGRhdGVBbHRU
ZXh0KCk7CiAKICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5zZXRJc1Zpc3VhbGx5Tm9uRW1wdHko
KTsKIH0KIAotUmVuZGVySW1hZ2U6On5SZW5kZXJJbWFnZSgpCi17Ci0gICAgaWYgKG1fY2FjaGVk
SW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQot
dm9pZCBSZW5kZXJJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQot
ewotICAgIGlmIChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdlKQotICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVu
dCh0aGlzKTsKLSAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7Ci0gICAgaWYgKG1fY2FjaGVk
SW1hZ2UpIHsKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotICAgICAg
ICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgaW1hZ2VD
aGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIH0KLX0KLQogLy8gSWYgd2UnbGwgYmUg
ZGlzcGxheWluZyBlaXRoZXIgYWx0IHRleHQgb3IgYW4gaW1hZ2UsIGFkZCBzb21lIHBhZGRpbmcu
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1dpZHRoID0gNDsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nSGVpZ2h0ID0gNDsKQEAgLTEzNSwyMiArMTE1LDIy
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1h
Z2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8
fCBoYXNNYXNrKCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1h
Z2UsIHJlY3QpOwotICAgIAotICAgIGlmIChuZXdJbWFnZSAhPSBpbWFnZVB0cigpIHx8ICFuZXdJ
bWFnZSkKKworICAgIGlmIChuZXdJbWFnZSAhPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlUHRyKCkg
fHwgIW5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGltYWdlU2l6ZUNoYW5n
ZWQgPSBmYWxzZTsKIAogICAgIC8vIFNldCBpbWFnZSBkaW1lbnNpb25zLCB0YWtpbmcgaW50byBh
Y2NvdW50IHRoZSBzaXplIG9mIHRoZSBhbHQgdGV4dC4KLSAgICBpZiAoZXJyb3JPY2N1cnJlZCgp
KQotICAgICAgICBpbWFnZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChtX2Nh
Y2hlZEltYWdlLmdldCgpKTsKLSAgICAKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkpCisgICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSk7CisKICAgICBib29sIHNob3VsZFJl
cGFpbnQgPSB0cnVlOwogCiAgICAgLy8gSW1hZ2UgZGltZW5zaW9ucyBoYXZlIGJlZW4gY2hhbmdl
ZCwgc2VlIHdoYXQgbmVlZHMgdG8gYmUgZG9uZQotICAgIGlmIChpbWFnZVNpemUoc3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKSAhPSBpbnRyaW5zaWNTaXplKCkgfHwgaW1hZ2VTaXplQ2hhbmdlZCkg
ewotICAgICAgICBpZiAoIWVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHNldEludHJpbnNp
Y1NpemUoaW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIGlmIChtX2lt
YWdlUmVzb3VyY2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJp
bnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7CisgICAgICAgIGlmICghbV9pbWFnZVJl
c291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKG1f
aW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogCiAg
ICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250ZW50IHVzaW5nIDpi
ZWZvcmUvOmFmdGVyLCB3ZSBtaWdodCBub3QgYmUgaW4gdGhlCiAgICAgICAgIC8vIHJlbmRlciB0
cmVlIHlldC4gIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBjaGVj
ayBmb3IgbGF5b3V0LCBzaW5jZSB3ZSdsbCBnZXQgYQpAQCAtMTgwLDcgKzE2MCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0
IEludFJlY3QqIHJlY3QpCiAgICAgICAgIGlmIChyZWN0KSB7CiAgICAgICAgICAgICAvLyBUaGUg
aW1hZ2UgY2hhbmdlZCByZWN0IGlzIGluIHNvdXJjZSBpbWFnZSBjb29yZGluYXRlcyAocHJlLXpv
b21pbmcpLAogICAgICAgICAgICAgLy8gc28gbWFwIGZyb20gdGhlIGJvdW5kcyBvZiB0aGUgaW1h
Z2UgdG8gdGhlIGNvbnRlbnRzQm94LgotICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6
ZSgxLjBmKSksIGNvbnRlbnRCb3hSZWN0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBt
X2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6ZSgxLjBmKSksIGNvbnRlbnRCb3hSZWN0KCkpKTsKICAg
ICAgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdG9vLWxhcmdlIGNoYW5nZWQgcmVjdHMuCiAgICAg
ICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoY29udGVudEJveFJlY3QoKSk7CiAgICAgICAg
IH0gZWxzZQpAQCAtMjAzLDcgKzE4Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICgobmV3SW1hZ2UgPT0gbV9jYWNoZWRJ
bWFnZSkgJiYgaGFzTGF5ZXIoKSkgeworICAgIGlmIChuZXdJbWFnZSA9PSBtX2ltYWdlUmVzb3Vy
Y2UtPmNhY2hlZEltYWdlKCkgJiYgaGFzTGF5ZXIoKSkgewogICAgICAgICAvLyB0ZWxsIGFueSBw
b3RlbnRpYWwgY29tcG9zaXRpbmcgbGF5ZXJzCiAgICAgICAgIC8vIHRoYXQgdGhlIGltYWdlIGlz
IGRvbmUgYW5kIHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJlY3RseS4KICAgICAgICAgbGF5ZXIo
KS0+cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpOwpAQCAtMjEyLDE1ICsxOTIsNiBAQCB2b2lkIFJl
bmRlckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogbmV3SW1hZ2UpCiAgICAg
VU5VU0VEX1BBUkFNKG5ld0ltYWdlKTsKICNlbmRpZgogfQotICAgIAotdm9pZCBSZW5kZXJJbWFn
ZTo6cmVzZXRBbmltYXRpb24oKQotewotICAgIGlmIChtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAg
IGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgICAgIGlmICghbmVlZHNMYXlvdXQoKSkK
LSAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICB9Ci19CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogewpAQCAt
MjM2LDcgKzIwNyw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JP
Y2N1cnJlZCgpKSB7CisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9p
bWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
NTUsMTcgKzIyNiwxOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAgIGludCB1c2FibGVXaWR0
aCA9IGNXaWR0aCAtIDI7CiAgICAgICAgICAgICBpbnQgdXNhYmxlSGVpZ2h0ID0gY0hlaWdodCAt
IDI7CiAKLSAgICAgICAgICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgIWltYWdlKCktPmlzTnVs
bCgpICYmICh1c2FibGVXaWR0aCA+PSBpbWFnZSgpLT53aWR0aCgpKSAmJiAodXNhYmxlSGVpZ2h0
ID49IGltYWdlKCktPmhlaWdodCgpKSkgeworICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gbV9p
bWFnZVJlc291cmNlLT5pbWFnZSgpOworCisgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNl
LT5lcnJvck9jY3VycmVkKCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBp
bWFnZS0+d2lkdGgoKSAmJiB1c2FibGVIZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gQ2VudGVyIHRoZSBlcnJvciBpbWFnZSwgYWNjb3VudGluZyBmb3IgYm9y
ZGVyIGFuZCBwYWRkaW5nLgotICAgICAgICAgICAgICAgIGludCBjZW50ZXJYID0gKHVzYWJsZVdp
ZHRoIC0gaW1hZ2UoKS0+d2lkdGgoKSkgLyAyOworICAgICAgICAgICAgICAgIGludCBjZW50ZXJY
ID0gKHVzYWJsZVdpZHRoIC0gaW1hZ2UtPndpZHRoKCkpIC8gMjsKICAgICAgICAgICAgICAgICBp
ZiAoY2VudGVyWCA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclggPSAwOwotICAgICAg
ICAgICAgICAgIGludCBjZW50ZXJZID0gKHVzYWJsZUhlaWdodCAtIGltYWdlKCktPmhlaWdodCgp
KSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1h
Z2UtPmhlaWdodCgpKSAvIDI7CiAgICAgICAgICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAg
ICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZVggPSBs
ZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyAxOwogICAgICAgICAgICAgICAgIGltYWdl
WSA9IHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxOwotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50
KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRQb2ludCh0eCArIGltYWdl
WCwgdHkgKyBpbWFnZVkpKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAKQEAgLTI4OCw4ICsyNjEsOCBAQCB2b2lkIFJlbmRlckltYWdl
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoc3R5bGUoKS0+Zm9udCgpLCB0ZXh0
UnVuLCBJbnRQb2ludChheCwgYXkgKyBhc2NlbnQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAoaGFzSW1hZ2UoKSAmJiBjV2lkdGggPiAwICYmIGNIZWlnaHQgPiAw
KSB7Ci0gICAgICAgIEltYWdlKiBpbWcgPSBpbWFnZShjV2lkdGgsIGNIZWlnaHQpOworICAgIH0g
ZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hl
aWdodCA+IDApIHsKKyAgICAgICAgSW1hZ2UqIGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
Y1dpZHRoLCBjSGVpZ2h0KTsKICAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMzUxLDIyICszMjQsMjIgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUKICAgICAKIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGlmICghaGFzSW1h
Z2UoKSB8fCBlcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWln
aHQoKSA8PSAwKQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1h
Z2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3Qu
aGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2UqIGltZyA9IGltYWdl
KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgSW1hZ2UqIGltZyA9IG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBpZiAoIWlt
ZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKGltZ1RhZykpID8g
c3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUoKSkgOiAwOwogICAgIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9z
aXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMtPmltYWdl
KCksIHJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UocmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3Np
dGVPcGVyYXRvciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlKCksIHJlY3Quc2l6ZSgpKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFn
ZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5j
b2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGlu
Zyk7CiB9CiAKIGludCBSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgp
IDogMDsKKyAgICByZXR1cm4gbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBpbnRy
aW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOwogfQogCiBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1h
Z2U6OmltYWdlTWFwKCkgY29uc3QKQEAgLTQ0OSwxOCArNDIyLDE4IEBAIGJvb2wgUmVuZGVySW1h
Z2U6OmlzSGVpZ2h0U3BlY2lmaWVkKCkgY29uc3QKIAogaW50IFJlbmRlckltYWdlOjpjYWxjUmVw
bGFjZWRXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKLSAgICBpZiAoaW1hZ2VI
YXNSZWxhdGl2ZVdpZHRoKCkpCisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCkpCiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGNiID0gaXNQb3NpdGlvbmVk
KCkgPyBjb250YWluZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgICAgICBpZiAo
Y2ItPmlzQm94KCkpCi0gICAgICAgICAgICAgICAgc2V0SW1hZ2VDb250YWluZXJTaXplKEludFNp
emUodG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVXaWR0aCgpLCB0b1JlbmRlckJveChjYiktPmF2
YWlsYWJsZUhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgbV9pbWFnZVJlc291cmNlLT5zZXRJ
bWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRo
KCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKICAgICAgICAgfQogCiAg
ICAgaW50IHdpZHRoOwogICAgIGlmIChpc1dpZHRoU3BlY2lmaWVkKCkpCiAgICAgICAgIHdpZHRo
ID0gY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhzdHlsZSgpLT53aWR0aCgpKTsKLSAgICBlbHNlIGlm
ICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIHdpZHRoID0gaW1hZ2VTaXplKHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKLSAgICBlbHNlIGlmIChpbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNv
bnRhaW5lclNpemUoKSkKKyAgICAgICAgd2lkdGggPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6
ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7CisgICAgZWxzZSBpZiAobV9pbWFn
ZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgd2lkdGggPSAwOyAv
LyBJZiB0aGUgaW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSB3aWR0aCB0byAwIHVu
dGlsIHRoZXJlIGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVsc2UKICAgICAgICAgd2lk
dGggPSBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpOwpAQCAtNDc2LDkgKzQ0OSw5IEBAIGludCBSZW5k
ZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3QKICAgICBpbnQgaGVpZ2h0OwogICAg
IGlmIChpc0hlaWdodFNwZWNpZmllZCgpKQogICAgICAgICBoZWlnaHQgPSBjYWxjUmVwbGFjZWRI
ZWlnaHRVc2luZyhzdHlsZSgpLT5oZWlnaHQoKSk7Ci0gICAgZWxzZSBpZiAodXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpKQotICAgICAgICBoZWlnaHQgPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKS5oZWlnaHQoKTsKLSAgICBlbHNlIGlmIChpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0
KCkpCisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT51c2VzSW1hZ2VDb250YWluZXJTaXpl
KCkpCisgICAgICAgIGhlaWdodCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCk7CisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNl
LT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpCiAgICAgICAgIGhlaWdodCA9IDA7IC8vIElmIHRo
ZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIGhlaWdodCB0byAwIHVudGlsIHRo
ZXJlIGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVsc2UKICAgICAgICAgaGVpZ2h0ID0g
Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCk7CkBAIC00OTQsNyArNDY3LDcgQEAgaW50IFJlbmRlcklt
YWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50
cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoIW1faW1h
Z2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgcmV0dXJuIHNpemUud2lkdGgoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcu
CiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSAqIHNpemUu
d2lkdGgoKSAvIHNpemUuaGVpZ2h0KCk7CiB9CkBAIC01MDQsNyArNDc3LDcgQEAgaW50IFJlbmRl
ckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAogICAgIEludFNpemUgc2l6ZSA9
IGludHJpbnNpY1NpemUoKTsKICAgICBpZiAoIXNpemUud2lkdGgoKSkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoIW1f
aW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSkKICAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7IC8vIERvbid0IGJvdGhlciBzY2Fs
aW5nLgogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKSAqIHNp
emUuaGVpZ2h0KCkgLyBzaXplLndpZHRoKCk7CiB9CkBAIC01MjksOSArNTAyLDQgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6Y2FsY1ByZWZXaWR0aHMoKQogICAgIHNldFByZWZXaWR0aHNEaXJ0eShmYWxz
ZSk7CiB9CiAKLUltYWdlKiBSZW5kZXJJbWFnZTo6bnVsbEltYWdlKCkKLXsKLSAgICByZXR1cm4g
SW1hZ2U6Om51bGxJbWFnZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaAppbmRleCBiODlhNjUyLi40MTAzZmU0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgUmVuZGVySW1hZ2VfaAogI2RlZmluZSBS
ZW5kZXJJbWFnZV9oCiAKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUmVwbGFjZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsMjggKzM0
LDIwIEBAIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1Ymxp
YyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2UoTm9kZSopOwotICAg
IHZpcnR1YWwgflJlbmRlckltYWdlKCk7CisgICAgUmVuZGVySW1hZ2UoTm9kZSosIFN0eWxlSW1h
Z2UqID0gMCk7CisKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgeyBy
ZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisgICAgY29uc3QgUmVuZGVySW1hZ2VSZXNv
dXJjZSogaW1hZ2VSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQo
KTsgfQogCiAgICAgYm9vbCBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJ
bWFnZSA9IDApOwogCiAgICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKLSAgICB2b2lkIHNldENh
Y2hlZEltYWdlKENhY2hlZEltYWdlKik7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgSFRNTE1hcEVsZW1l
bnQqIGltYWdlTWFwKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9
Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVySW1h
Z2U+Kik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lk
dGggKi8gPSAwLCBpbnQgLyogaGVpZ2h0ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkgOiBudWxsSW1hZ2UoKTsgfQotICAgIHZpcnR1YWwgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwpAQCAt
NjQsMTQgKzU3LDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzV2lkdGhTcGVjaWZpZWQoKSBj
b25zdDsKICAgICBib29sIGlzSGVpZ2h0U3BlY2lmaWVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSB7IGltYWdlQ2hhbmdlZChpbWFnZVB0cigpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2Vk
KG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAKKwogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGludCB0eCwg
aW50IHR5KTsKIAogICAgIHZpcnR1YWwgaW50IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0
OwpAQCAtODQsMzcgKzc3LDI1IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1By
ZWZXaWR0aHMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNv
bnRhaW5lclNpemUoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFp
bmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IGlmIChtX2NhY2hlZEltYWdlKSBt
X2NhY2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZSht
dWx0aXBsaWVyKSA6IEludFNpemUoKTsgfQotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGlt
YWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgaW50
IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hl
aWdodCgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gVGhlIGltYWdlIHdlIGFyZSByZW5k
ZXJpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1h
Z2U7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGV4dCB0byBkaXNwbGF5IGFzIGxvbmcgYXMgdGhlIGlt
YWdlIGlzbid0IGF2YWlsYWJsZS4KICAgICBTdHJpbmcgbV9hbHRUZXh0OworICAgIE93blB0cjxS
ZW5kZXJJbWFnZVJlc291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CiAKLSAgICBzdGF0aWMgSW1hZ2Uq
IG51bGxJbWFnZSgpOwotICAgIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2Jz
ZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5k
ZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihvYmplY3Qp
OwogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVySW1h
Z2UqPihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZDA1MDgu
LjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnQuaCIKLQotI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKLSNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50OjpSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnQoTm9kZSogbikKLTogUmVuZGVySW1hZ2UobikKLXt9Ci0KLVJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudDo6flJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCgpCi17Ci0gICAgbV9jYWNo
ZWRJbWFnZSA9IDA7Ci0gICAgbV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci19Ci0K
LXZvaWQgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50OjpzZXRTdHlsZUltYWdlKFN0eWxlSW1h
Z2UqIGltYWdlKQotewotICAgIGlmIChpbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQotICAgICAgICBt
X2NhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KGltYWdlKS0+Y2Fj
aGVkSW1hZ2UoKTsKLSAgICBtX3N0eWxlSW1hZ2UgPSBpbWFnZTsKLSAgICBtX3N0eWxlSW1hZ2Ut
PmFkZENsaWVudCh0aGlzKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4
MzMwZC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50X2gKLSNkZWZpbmUgUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50X2gKLQotI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCi0j
aW5jbHVkZSAiU3R5bGVJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBTdHlsZUltYWdlOwotCi1jbGFzcyBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQgOiBwdWJsaWMgUmVuZGVySW1hZ2UgewotcHVibGljOgotICAgIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2VH
ZW5lcmF0ZWRDb250ZW50KCk7Ci0gICAgCi0gICAgdm9pZCBzZXRTdHlsZUltYWdlKFN0eWxlSW1h
Z2UqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHcg
PSAwLCBpbnQgaCA9IDApIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UodGhpcywgSW50U2l6
ZSh3LCBoKSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9Ci0gICAgdmlydHVhbCBib29sIHVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5l
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2UtPnNldEltYWdl
Q29udGFpbmVyU2l6ZShzaXplKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQotICAgIHZp
cnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4g
bV9zdHlsZUltYWdlLT5pbWFnZVNpemUodGhpcywgbXVsdGlwbGllcik7IH0KLSAgICAKLSAgICAv
LyB8bV9zdHlsZUltYWdlfCBjYW4gYmUgMCBpZiB3ZSBnZXQgYSBjYWxsYmFjayBmb3IgYSBiYWNr
Z3JvdW5kIGltYWdlIGZyb20gUmVuZGVyT2JqZWN0OjpzZXRTdHlsZS4KLSAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1f
c3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsgfQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZUlt
YWdlPiBtX3N0eWxlSW1hZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
Y2VmZWJhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVl
bGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dh
QHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIgorCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uu
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQoreworICAg
IGlmIChzdHlsZUltYWdlKQorICAgICAgICByZXR1cm4gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U6OmNyZWF0ZShyZW5kZXJlciwgc3R5bGVJbWFnZSk7CisKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFJlbmRlckltYWdlUmVzb3VyY2UocmVuZGVyZXIpKTsKK30KKworUmVuZGVySW1hZ2VS
ZXNvdXJjZTo6UmVuZGVySW1hZ2VSZXNvdXJjZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAg
IDogbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKK3sKKyAgICBB
U1NFUlQobV9yZW5kZXIpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjp+UmVuZGVySW1hZ2VS
ZXNvdXJjZSgpCit7CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgIG1fY2FjaGVkSW1h
Z2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCit7CisgICAgaWYgKG1f
Y2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Nh
Y2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5kZXJl
cik7CisgICAgbV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOworICAgIGlmIChtX2NhY2hlZEltYWdl
KSB7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudChtX3JlbmRlcmVyKTsKKyAgICAg
ICAgaWYgKG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIG1fcmVu
ZGVyZXItPmltYWdlQ2hhbmdlZChtX2NhY2hlZEltYWdlLmdldCgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQoreworICAgIGlmICghbV9j
YWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRp
b24oKTsKKworICAgIGlmICghbV9yZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgbV9y
ZW5kZXJlci0+cmVwYWludCgpOworfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldElt
YWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmICgh
bV9jYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYWNoZWRJbWFnZS0+c2V0
SW1hZ2VDb250YWluZXJTaXplKHNpemUpOworfQorCitJbWFnZSogUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6bnVsbEltYWdlKCkKK3sKKyAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZmODg0NwotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVA
Y2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIFJlbmRlckltYWdlUmVzb3VyY2VfaAorI2RlZmluZSBSZW5kZXJJbWFnZVJlc291cmNlX2gK
KworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBTdHls
ZUltYWdlOworCitjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZVJlc291cmNlKCk7CisKKyAgICBz
dGF0aWMgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBjcmVhdGUoUmVuZGVyT2JqZWN0
KiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UqKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1
YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAw
KSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJ
bWFnZSgpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWlu
ZXJTaXplKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VI
YXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1h
Z2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIElu
dFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7
IH0KKworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVuZGVySW1hZ2VS
ZXNvdXJjZShSZW5kZXJPYmplY3QqKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgeyBy
ZXR1cm4gbV9yZW5kZXJlcjsgfQorICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyT2JqZWN0
KiBtX3JlbmRlcmVyOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2Nh
Y2hlZEltYWdlOworCisgICAgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlX2gKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTQ2OGU2Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxA
a2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9A
a2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2Rl
Lm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBj
YXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTdHlsZUNhY2hl
ZEltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2U6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFJlbmRlck9iamVjdCogcmVu
ZGVyLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQorICAgIDogUmVuZGVySW1hZ2VSZXNvdXJjZShy
ZW5kZXIpCisgICAgLCBtX3N0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkKK3sKKyAgICBBU1NFUlQobV9z
dHlsZUltYWdlKTsKKworICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKKyAg
ICAgICAgc2V0Q2FjaGVkSW1hZ2Uoc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KHN0eWxl
SW1hZ2UpLT5jYWNoZWRJbWFnZSgpKTsKKyAgICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudChyZW5k
ZXJlcigpKTsKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZSgpCit7CisgICAgbV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQo
cmVuZGVyZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMzk5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29s
Zi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2VfaAorI2RlZmluZSBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZV9oCisKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2NsYXNzIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlIDogcHVibGljIFJlbmRlckltYWdlUmVzb3VyY2UgeworcHVibGljOgorICAg
IHZpcnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCk7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZShyZW5kZXJlciwgc3R5bGVJbWFnZSkpOyB9CisKKyAgICB2
aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgd2lkdGggPSAwLCBpbnQgaGVpZ2h0ID0gMCkgeyByZXR1
cm4gbV9zdHlsZUltYWdlLT5pbWFnZShyZW5kZXJlcigpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQp
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFn
ZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2Ut
PnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1h
Z2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51c2VzSW1hZ2VD
b250YWluZXJTaXplKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KKworICAgIHZpcnR1
YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUltYWdlLT5pbWFnZVNpemUocmVuZGVyZXIoKSwgbXVsdGlwbGllcik7IH0KKworICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoUmVuZGVyT2JqZWN0KiwgU3R5bGVJbWFnZSopOworICAg
IFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZVN0eWxlSW1hZ2VfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggOTVlYzNmMy4uNTlkZjQ0MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC03OTcsOSArNzk3LDggQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQ29udGVudENoYW5nZWQoKQogdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogewogICAgIEFTU0VSVChy
ZW5kZXJlcigpLT5pc0ltYWdlKCkpOwotICAgIFJlbmRlckltYWdlKiBpbWFnZVJlbmRlcmVyID0g
dG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKIAotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5jYWNo
ZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZC4uMTIzNGIwNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
QXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxl
eGlibGVCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCIKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTEwNywx
MCArMTA3LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2Rl
KiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMgYXMgaWYg
d2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENvbnRlbnREYXRhKiBj
b250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOwogICAgIGlmIChjb250ZW50RGF0YSAm
JiAhY29udGVudERhdGEtPm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGRvYyAh
PSBub2RlKSB7Ci0gICAgICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBu
ZXcgKGFyZW5hKSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQobm9kZSk7CisgICAgICAgIFJl
bmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKG5vZGUsIGNvbnRlbnRE
YXRhLT5pbWFnZSgpKTsKICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlKTsKLSAgICAgICAg
aWYgKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50RGF0YS0+aW1hZ2UoKSkKLSAgICAg
ICAgICAgIGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwogICAgICAgICByZXR1cm4g
aW1hZ2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3RDaGlsZExpc3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
LmNwcAppbmRleCA2OGUzOTJjLi4yYmFiNDVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJBWE9iamVj
dENhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb3Vu
dGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVk
ZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC00MzAsMTMgKzQz
MCwxMCBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250
ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkbwogICAgICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDT05URU5UX09CSkVDVDogewotICAgICAgICAgICAgICAgIFJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBuZXcgKG93bmVyLT5yZW5kZXJBcmVuYSgp
KSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQob3duZXItPmRvY3VtZW50KCkpOyAvLyBhbm9u
eW1vdXMgb2JqZWN0CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgKG93bmVyLT5yZW5k
ZXJBcmVuYSgpKSBSZW5kZXJJbWFnZShvd25lci0+ZG9jdW1lbnQoKSwgY29udGVudC0+aW1hZ2Uo
KSk7IC8vIGFub255bW91cyBvYmplY3QKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIHN0eWxl
LT5pbmhlcml0RnJvbShwc2V1ZG9FbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgICAgIGltYWdl
LT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOwotICAgICAgICAgICAgICAgIGlmIChTdHlsZUlt
YWdlKiBzdHlsZUltYWdlID0gY29udGVudC0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAg
aW1hZ2UtPnNldFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSBpbWFnZTsKKyAgICAgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUucmVs
ZWFzZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgQ09OVEVOVF9DT1VOVEVSOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CmluZGV4IDk5MzI3OGMuLmE4NzYyYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0ltYWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKICAgICB9
CiAKICAgICAvLyBtaW5pbXVtIGhlaWdodAotICAgIHNldEhlaWdodChlcnJvck9jY3VycmVkKCkg
PyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwKTsKKyAgICBzZXRIZWlnaHQoaW1hZ2VSZXNv
dXJjZSgpLT5lcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwKTsK
IAogICAgIGNhbGNXaWR0aCgpOwogICAgIGNhbGNIZWlnaHQoKTsKQEAgLTkxLDE0ICs5MSwxNSBA
QCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50LCBp
bnQpCiAgICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAogICAgICAgICBp
ZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWlu
dEluZm8pKSB7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCktPmlt
YWdlKCk7CiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX2xvY2FsQm91bmRzOwot
ICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UoKS0+d2lkdGgoKSwgaW1h
Z2UoKS0+aGVpZ2h0KCkpOworICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1h
Z2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CiAKICAgICAgICAgICAgIFNWR0ltYWdlRWxl
bWVudCogaW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwog
ICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAh
PSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQog
ICAgICAgICAgICAgICAgIGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3Jt
UmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3SW1hZ2UoaW1hZ2UoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNl
Q29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICB9CiAgICAgICAgIFNWR1Jl
bmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBzYXZl
ZEluZm8uY29udGV4dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGFi
OTY5Y2MuLjk0YTUzYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKQEAgLTExMCw3ICsx
MTAsNyBAQCBJbnRTaXplIFJlbmRlclZpZGVvOjpjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCkKICAg
ICBpZiAocGxheWVyKCkgJiYgdmlkZW8tPnJlYWR5U3RhdGUoKSA+PSBIVE1MVmlkZW9FbGVtZW50
OjpIQVZFX01FVEFEQVRBKQogICAgICAgICByZXR1cm4gcGxheWVyKCktPm5hdHVyYWxTaXplKCk7
CiAKLSAgICBpZiAodmlkZW8tPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpICYmICFtX2NhY2hl
ZEltYWdlU2l6ZS5pc0VtcHR5KCkgJiYgIWVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAodmlkZW8t
PnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpICYmICFtX2NhY2hlZEltYWdlU2l6ZS5pc0VtcHR5
KCkgJiYgIWltYWdlUmVzb3VyY2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4g
bV9jYWNoZWRJbWFnZVNpemU7CiAKICAgICAvLyBXaGVuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhl
IHZpZGVvIGlzIHVuYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIHByb3ZpZGVkCkBAIC0xMzcsNyArMTM3
LDcgQEAgdm9pZCBSZW5kZXJWaWRlbzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJ
bWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAvLyBldmVuIGFmdGVyIHdlIGtub3cgdGhl
IHZpZGVvIGludHJpc2ljIHNpemUgYnV0IGFyZW4ndCBhYmxlIHRvIGRyYXcgdmlkZW8gZnJhbWVz
IHlldAogICAgIC8vICh3ZSBkb24ndCB3YW50IHRvIHNjYWxlIHRoZSBwb3N0ZXIgdG8gdGhlIHZp
ZGVvIHNpemUpLgogICAgIGlmICh2aWRlb0VsZW1lbnQoKS0+c2hvdWxkRGlzcGxheVBvc3Rlcklt
YWdlKCkpIHsKLSAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKGltYWdl
UmVzb3VyY2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICAgICAgdXBkYXRlSW50cmluc2lj
U2l6ZSgpOwogICAgICAgICBtX2NhY2hlZEltYWdlU2l6ZSA9IGludHJpbnNpY1NpemUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBjNWU0ODAyLi4wZTRmYjEzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHZvaWQgU1ZHSW1hZ2VFbGVt
ZW50OjphdHRhY2goKQogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRhY2go
KTsKIAogICAgIGlmIChSZW5kZXJTVkdJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlclNWR0ltYWdl
KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1hZ2UoKSkKKyAgICAg
ICAgaWYgKGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCktPmhhc0ltYWdlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaW1hZ2VPYmotPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKSk7CisgICAgICAgIGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64322</attachid>
            <date>2010-08-13 05:16:17 -0700</date>
            <delta_ts>2010-08-27 11:12:56 -0700</delta_ts>
            <desc>Patch #2b (remove Remove RenderImage inheritance)</desc>
            <filename>0002-RenderSVG.patch</filename>
            <type>text/plain</type>
            <size>13117</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGJiNGRmZC4uNGQwZDM2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0xNCAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkIGludmFsaWRhdGVz
IHdyb25nIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzc5CisKKyAgICAgICAgUmVtb3ZlIFJlbmRlckltYWdlIGluaGVyaXRhbmNlIGZyb20g
UmVuZGVyU1ZHSW1hZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHN2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50Ojph
dHRhY2gpOgorCiAyMDEwLTA4LTEzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2Eu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGE4NzYyYTkuLmY2M2I5OWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUsNiArNSw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDA5IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChD
KSAyMDA5LCBHb29nbGUsIEluYy4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3Rl
cmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDMsOSArNDQs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZH
SW1hZ2UoU1ZHSW1hZ2VFbGVtZW50KiBpbXBsKQotICAgIDogUmVuZGVySW1hZ2UoaW1wbCkKK1Jl
bmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQqIG5vZGUpCisgICAg
OiBSZW5kZXJTVkdNb2RlbE9iamVjdChub2RlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSh0cnVlKQorICAgICwgbV9pbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0
ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjEsMTIgKzYzLDYgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6
bGF5b3V0KCkKICAgICAgICAgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IGZhbHNlOwogICAgIH0K
IAotICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGltYWdlUmVzb3VyY2UoKS0+
ZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7Ci0KLSAgICBj
YWxjV2lkdGgoKTsKLSAgICBjYWxjSGVpZ2h0KCk7Ci0KICAgICAvLyBGSVhNRTogT3B0aW1pemUg
Y2FjaGluZyB0aGUgcmVwYWludCByZWN0cy4KICAgICBtX2xvY2FsQm91bmRzID0gRmxvYXRSZWN0
KGltYWdlLT54KCkudmFsdWUoaW1hZ2UpLCBpbWFnZS0+eSgpLnZhbHVlKGltYWdlKSwgaW1hZ2Ut
PndpZHRoKCkudmFsdWUoaW1hZ2UpLCBpbWFnZS0+aGVpZ2h0KCkudmFsdWUoaW1hZ2UpKTsKICAg
ICBtX2NhY2hlZExvY2FsUmVwYWludFJlY3QgPSBGbG9hdFJlY3QoKTsKQEAgLTgxLDUxICs3Nyw0
MyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogCiB2b2lkIFJlbmRlclNWR0ltYWdl
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCiB7Ci0gICAgaWYgKHBhaW50
SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IEhJRERFTikKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFtX2ltYWdlUmVzb3VyY2Ut
Pmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShsb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkpOworICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCk7CisgICAgRmxvYXRSZWN0IG5vbkxvY2FsQm91bmRpbmdCb3ggPSBtX2xv
Y2FsVHJhbnNmb3JtLm1hcFJlY3QoYm91bmRpbmdCb3gpOworICAgIGlmICghbm9uTG9jYWxCb3Vu
ZGluZ0JveC5pbnRlcnNlY3RzKHBhaW50SW5mby5yZWN0KSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewotICAgICAg
ICBQYWludEluZm8gc2F2ZWRJbmZvKHBhaW50SW5mbyk7CisgICAgUGFpbnRJbmZvIGNoaWxkUGFp
bnRJbmZvKHBhaW50SW5mbyk7CisgICAgYm9vbCBkcmF3c091dGxpbmUgPSBzdHlsZSgpLT5vdXRs
aW5lV2lkdGgoKSAmJiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUg
fHwgY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKTsKKyAgICBp
ZiAoZHJhd3NPdXRsaW5lIHx8IGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKSB7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAg
ICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9ybSk7CiAKLSAg
ICAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhp
cywgcGFpbnRJbmZvKSkgewotICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJj
ZSgpLT5pbWFnZSgpOwotICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9sb2NhbEJv
dW5kczsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgp
LCBpbWFnZS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpIHsKKyAgICAgICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8o
Y2hpbGRQYWludEluZm8pOwogCi0gICAgICAgICAgICBTVkdJbWFnZUVsZW1lbnQqIGltYWdlRWx0
ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAgICAgICAgIGlm
IChpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWduKCkgIT0gU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKLSAgICAgICAgICAgICAg
ICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3Qs
IHNyY1JlY3QpOworICAgICAgICAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1Jl
bmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8pKSB7CisgICAgICAgICAgICAgICAg
SW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAg
IEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkp
OwogCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZp
Y2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgU1ZH
UmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8sIHNh
dmVkSW5mby5jb250ZXh0KTsKLSAgICB9CisgICAgICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50
KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAh
PSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQor
ICAgICAgICAgICAgICAgICAgICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5z
Zm9ybVJlY3QoYm91bmRpbmdCb3gsIHNyY1JlY3QpOwogCi0gICAgaWYgKChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCi0gICAgICAgIHBhaW50T3V0
bGluZShwYWludEluZm8uY29udGV4dCwgMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwotCi0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKLX0KKyAgICAgICAgICAgICAgICBjaGlsZFBh
aW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIERldmljZUNvbG9yU3BhY2UsIGJvdW5k
aW5nQm94LCBzcmNSZWN0KTsKKyAgICAgICAgICAgIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6
ZGVzdHJveSgpCi17Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudERlc3Ryb3llZCh0aGlz
KTsKLSAgICBSZW5kZXJJbWFnZTo6ZGVzdHJveSgpOwotfQorICAgICAgICAgICAgU1ZHUmVuZGVy
U3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbywgc2F2
ZWRJbmZvLmNvbnRleHQpOworICAgICAgICB9CiAKLXZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCi17Ci0gICAgUmVuZGVySW1hZ2U6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsK
LSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHRoaXMsIGRpZmYsIHN0
eWxlKCkpOwotfQorICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQorICAgICAgICAgICAgcGFpbnRP
dXRsaW5lKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdC
b3gueCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC55KCkpLAorICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSksIHN0YXRpY19jYXN0PGlu
dD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6dXBkYXRl
RnJvbUVsZW1lbnQoKQotewotICAgIFJlbmRlckltYWdlOjp1cGRhdGVGcm9tRWxlbWVudCgpOwot
ICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRVcGRhdGVkRnJvbUVsZW1lbnQodGhpcywgc3R5
bGUoKSk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpAQCAtMTUzLDEy
ICsxNDEsNiBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgaW50LCBpbnQsIGludCwgaW50LCBIaXRUZXN0QWN0aW9uKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogRmxvYXRS
ZWN0IFJlbmRlclNWR0ltYWdlOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0
CiB7CiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgY2FjaGVkIHJlcGFpbnQgcmVjdCwgcmV0
dXJuIHRoYXQKQEAgLTE3Myw4ICsxNTUsNiBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHSW1hZ2U6OnJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QKIAogdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVj
dCkKIHsKLSAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKGltYWdlLCByZWN0KTsKLQogICAg
IC8vIFRoZSBpbWFnZSByZXNvdXJjZSBkZWZhdWx0cyB0byBudWxsSW1hZ2UgdW50aWwgdGhlIHJl
c291cmNlIGFycml2ZXMuCiAgICAgLy8gVGhpcyBlbXB0eSBpbWFnZSBtYXkgYmUgY2FjaGVkIGJ5
IFNWRyByZXNvdXJjZXMgd2hpY2ggbXVzdCBiZSBpbnZhbGlkYXRlZC4KICAgICBpZiAoU1ZHUmVz
b3VyY2VzKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9y
UmVuZGVyT2JqZWN0KHRoaXMpKQpAQCAtMTg2LDIxICsxNjYsNiBAQCB2b2lkIFJlbmRlclNWR0lt
YWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KiBy
ZWN0KQogICAgIHJlcGFpbnQoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTVkdJbWFnZTo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpCi17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIpOwotfQotCi12b2lkIFJlbmRlclNW
R0ltYWdlOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEludFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQotewotICAgIFNW
R1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFp
bmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwotfQotCi12b2lkIFJlbmRlclNWR0ltYWdlOjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkICwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUpIGNvbnN0Ci17Ci0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5l
cih0aGlzLCByZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3Jt
U3RhdGUpOwotfQotCiB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKIHsKICAgICAvLyB0aGlzIGlzIGNhbGxlZCBm
cm9tIHBhaW50KCkgYWZ0ZXIgdGhlIGxvY2FsVHJhbnNmb3JtIGhhcyBhbHJlYWR5IGJlZW4gYXBw
bGllZApAQCAtMjA5LDE3ICsxNzQsNiBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKICAgICAgICAgcmVjdHMu
YXBwZW5kKGNvbnRlbnRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1dGVS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQsIGludCkKLXsKLSAgICAvLyBUaGlzIGNvZGUgcGF0
aCBzaG91bGQgbmV2ZXIgYmUgdGFrZW4gZm9yIFNWRywgYXMgd2UncmUgYXNzdW1pbmcgdXNlVHJh
bnNmb3Jtcz10cnVlIGV2ZXJ5d2hlcmUsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQotewotICAgIHF1YWRzLmFwcGVuZChs
b2NhbFRvQWJzb2x1dGVRdWFkKHN0cm9rZUJvdW5kaW5nQm94KCkpKTsKLX0KLQotfQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5oCmluZGV4IDM4ZTNhMTMuLjUzMzk3N2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHSW1hZ2UuaApAQCAtMyw2ICszLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAwNyBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIElu
Yy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJv
Z2EuY29tPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw3ICsyNyw4IEBACiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3Vy
Y2UuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKQEAg
LTM0LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0ltYWdlRWxl
bWVudDsKIAotY2xhc3MgUmVuZGVyU1ZHSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1hZ2UgeworY2xh
c3MgUmVuZGVyU1ZHSW1hZ2UgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGlj
OgogICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCopOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0g
dHJ1ZTsgfQogCisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIHsgcmV0
dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3Vy
Y2UqIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7
IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1h
Z2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC01MCwyOCArNTUsMTYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYWxCb3VuZHM7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRy
YW5zZm9ybVN0YXRlJikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7
Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVzdHJveSgpOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGlu
dCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07IH0KIApAQCAtNzksNiArNzIsNyBAQCBwcml2YXRlOgogICAgIEFmZmluZVRyYW5zZm9ybSBt
X2xvY2FsVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX2xvY2FsQm91bmRzOwogICAgIG11dGFi
bGUgRmxvYXRSZWN0IG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKKyAgICBPd25QdHI8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4gbV9pbWFnZVJlc291cmNlOwogfTsKIAogaW5saW5lIFJlbmRlclNWR0lt
YWdlKiB0b1JlbmRlclNWR0ltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKaW5kZXggMzVjNGRjMy4uNDM1ZTEyNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC0zOSw3ICszOSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE1vc3QgcmVuZGVyZXJzIGluIHRoZSBTVkcgcmVuZGVy
aW5nIHRyZWUgd2lsbCBpbmhlcml0IGZyb20gdGhpcyBjbGFzcwotLy8gYnV0IG5vdCBhbGwuIChl
LmcuIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QsIFJlbmRlclNWR0Jsb2NrLCBSZW5kZXJTVkdJbWFn
ZSkgdGh1cyBtZXRob2RzCisvLyBidXQgbm90IGFsbC4gKGUuZy4gUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdCwgUmVuZGVyU1ZHQmxvY2spIHRodXMgbWV0aG9kcwogLy8gcmVxdWlyZWQgYnkgU1ZHIHJl
bmRlcnMgbmVlZCB0byBiZSBkZWNsYXJlZCBvbiBSZW5kZXJPYmplY3QsIGJ1dCBzaGFyZWQKIC8v
IGxvZ2ljIGNhbiBnbyBpbiB0aGlzIGNsYXNzIG9yIGluIFNWR1JlbmRlclN1cHBvcnQuCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDBlNGZiMTMuLjc3M2NkOTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTcxLDEyICsxNzEsMTUgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0
dGFjaCgpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwog
Ci0gICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVu
ZGVyZXIoKSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCktPmhhc0lt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgUmVuZGVyU1ZHSW1hZ2UqIGltYWdlT2Jq
ID0gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlT2JqKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2Fj
aGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKLSAgICB9CisgICAgUmVuZGVySW1hZ2VS
ZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCk7
CisgICAgaWYgKHJlbmRlckltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2Fk
ZXIuaW1hZ2UoKSk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65341</attachid>
            <date>2010-08-24 16:34:15 -0700</date>
            <delta_ts>2010-08-25 08:52:47 -0700</delta_ts>
            <desc>Patch #1j (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>65034</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxOWRiZWQwLi42MjRiZGU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MjEsNyArNjIxLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGUzN2ZlMmUuLmEyYWQ0ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3Niw3ICsxMzc2
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGQ5NDdmOTYuLmUyZWI3MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDEwLTA4
LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAg
KiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnNldEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxv
YWRlcjo6dXBkYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6Om1pbmltdW1SZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmludHJpbnNpY1NpemVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvUmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZUdlbmVyYXRlZENvbnRlbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2U6OlJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6c2V0SW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjplcnJv
ck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnVzZXNJ
bWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
UmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6c2V0SW1hZ2VDb250YWluZXJTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjp1c2VzSW1hZ2VDb250
YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VQdHIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3RDaGlsZExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Q2hpbGRM
aXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVv
OjpjYWxjdWxhdGVJbnRyaW5zaWNTaXplKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKToKKwogMjAx
MC0wOC0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggODJmYzE5ZS4uNDBmMDg3YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMjczLDggKzIyNzMsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKLQlXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKLQlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uu
Y3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDMxYmQxNjQuLjMxZGNjYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzIxLDggKzMzMjEsMTAg
QEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAorICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oJywK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCAzYWE3NTBmLi44Njc1ZTg0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwMTMsNyArMTAx
Myw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
IFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAg
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODQyLDcgKzE4NDMsOCBAQCBIRUFERVJT
ICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKLSAgICBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggXAorICAgIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmggXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNWFlMzkyNy4uMjg1OWZlMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTk0MSwxMSArMjk5NDEs
MTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAiDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGUyNTMyYTkuLjNlYzg5OTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDggQEAKIAkJMDg1QjA1
QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCMDVDMTExRkFFMTZDMDA0
RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEwRUZE
RTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9y
bURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZv
cm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTA4NjQxRDQ3MTIxNDJGN0QwMDhE
RTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovOyB9OworCQkwODY0MUQ0ODEy
MTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJGN0Qw
MDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovOyB9OwogCQkwODY1
Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTQwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg2NUNDRTcwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAq
LzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5j
cHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMxMjA2
IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRF
bGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNl
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87
IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVG
RjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYz
RDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCOEM1
NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAv
KiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ4NTEsOCArNDg1NSw2IEBACiAJCUJDQjE2
QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Ix
NkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVx
dWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNjA5
NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICovOyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2MDAz
OTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyog
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi87IH07Ci0JCUJDQjRGODkzMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlC
IC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi87IH07CiAJCUJDQjc3MzYxMEMx
Nzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi87IH07CiAJCUJDQjc3MzYyMEMxNzg1M0Qw
MDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05v
ZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJQkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0IC8q
IEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcCAqLzsgfTsKQEAgLTU5MDYsNiArNTkwOCw4IEBACiAJCTA4NUIwNUMxMTFGQUUxNkMw
MDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI5MEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQx
RDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2MTIx
NDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMg
LyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1
Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5
NzYsNiArNTk4MCw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVs
ZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJC
QTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VD
NDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2NEUg
LyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5r
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY0Nyw4ICsxMDY1Myw2IEBACiAJCUJDQjE2
QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMx
NTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODkyMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8q
IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzYwMEMxNzg1M0QwMDEz
MkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzEwMyw4ICsxNzEwNywxMCBAQAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQwMEE3
OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJCQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJDRUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAotCQkJCUJDQjRGODhGMERCMjhERDYwMDM5MTM5
QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLywKKwkJCQkwOEYyRjAwNzEyMTNF
NjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8sCisJCQkJMDhGMkYwMDgx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLywKKwkJCQkwODY0MUQ0
NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICov
LAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRp
Y2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRp
Y2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5l
LmNwcCAqLywKQEAgLTE5NjM5LDcgKzE5NjQ1LDggQEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4RDYx
MTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRT
cGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjIxNzcsNyArMjIxODQsOCBAQAogCQkJCUJDRUE0
ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMkYwMDkxMjEz
RTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAvKiBS
ZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTBEMDI5MzEx
RDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYWZhNTZkNC4uOWUzM2Q2NSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTEVtYmVkRWxl
bWVudDo6YXR0YWNoKCkKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIAogICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAg
ICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRD
YWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAppbmRleCA4MmVlYWIxLi4yMzU0Njg4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCkBAIC0xOTEsMTUgKzE5MSwxNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OmF0dGFjaCgpCiAgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVm
b3JlTG9hZEV2ZW50KCkpIHsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5k
ZXJJbWFnZShyZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQor
ICAgICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVy
KCkpOworICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0g
cmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgaWYgKHJlbmRlckltYWdlUmVz
b3VyY2UtPmhhc0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGltYWdlT2Jq
LT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOworICAgICAgICByZW5kZXJJ
bWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOwogCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBz
cmMgYXR0cmlidXRlLCBzZXQKICAgICAgICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3Ig
dGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0gICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgp
ICYmICFpbWFnZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJ
bWFnZVNpemVGb3JBbHRUZXh0KCk7CisgICAgICAgIGlmICghbV9pbWFnZUxvYWRlci5pbWFnZSgp
ICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgcmVu
ZGVySW1hZ2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAppbmRleCAzNDg4Y2RlLi5jM2NhYTUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xMjA4LDEzICsxMjA4LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXR0YWNoKCkKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VM
b2FkZXIodGhpcykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgp
OwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZv
cmVMb2FkRXZlbnQoKSkgewotICAgICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9S
ZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJ
bWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAg
IFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Cisg
ICAgICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVu
ZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3Vy
Y2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAg
ICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBh
dHRyaWJ1dGUsIHNldAogICAgICAgICAgICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3Ig
dGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0gICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmlt
YWdlKCkgJiYgIWltYWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdl
T2JqLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VM
b2FkZXItPmltYWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisg
ICAgICAgICAgICAgICAgcmVuZGVySW1hZ2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGVkMmQzNWMu
Ljg2ZmQwZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTc4LDEwICs3OCw4IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYgKCFtX2ltYWdlTG9h
ZGVyKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0
aGlzKSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAg
ICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5k
ZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlbmRl
cmVyLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgIH0K
KyAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmlt
YWdlKCkpOyAKICAgICB9CiAjZW5kaWYKIH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAg
ICAgICAgIGlmIChtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIu
Y2xlYXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAgICAg
ICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hl
ZEltYWdlKDApOyAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9
PSB3aWR0aEF0dHIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1M
T2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklE
RU8pCisjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Yg
b3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWls
LgogbmFtZXNwYWNlIFdURiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6
OnNldEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5y
ZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJ
bWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3Vy
Y2UqIGltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdl
UmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBk
YXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlz
KTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+
cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1h
dGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJj
ZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRB
bmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25v
cmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigp
LmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFn
ZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJl
dHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5B
QkxFKFNWRykKKyAgICBpZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAg
cmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYK
KworICAgIHJldHVybiAwOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigp
CiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNW
aWRlbygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VS
ZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8g
T25seSB1cGRhdGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBp
ZiB3aGF0IHdlIGhhdmUKLSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJl
dmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8g
Y2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAg
IGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hl
ZEltYWdlKSkKLSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1h
Z2UuZ2V0KCkpOwotICAgIH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNl
ID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9l
c24ndCBoYXZlIGFuIGltYWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxl
dGUgaW1hZ2UuICBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBk
eW5hbWljCisgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisg
ICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2Uo
KTsKKyAgICBpZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8
ICFjYWNoZWRJbWFnZSkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1f
aW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZv
cmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBi
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVy
SW1hZ2VSZXNvdXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRp
bmdMb2FkRXZlbnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVz
b3VyY2UoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2Vs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNTY1NzgxMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9kZSog
bm9kZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUs
IEludFNpemUoMCwgMCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCisgICAgLCBtX2ltYWdlUmVz
b3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKHRoaXMsIHN0eWxlSW1hZ2UpKQogewog
ICAgIHVwZGF0ZUFsdFRleHQoKTsKIAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlz
dWFsbHlOb25FbXB0eSgpOwogfQogCi1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsKLSAg
ICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFn
ZSogbmV3SW1hZ2UpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFn
ZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAg
ICBpZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQo
dGhpcyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQotCiAv
LyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRk
IHNvbWUgcGFkZGluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lkdGgg
PSA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAt
MTM1LDIyICsxMTUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNCb3hE
ZWNvcmF0aW9ucygpIHx8IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdl
Q2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdl
UHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNvdXJj
ZS0+aW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
aW1hZ2VTaXplQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMs
IHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChl
cnJvck9jY3VycmVkKCkpCi0gICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVG
b3JBbHRUZXh0KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdlUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldElt
YWdlU2l6ZUZvckFsdFRleHQobV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwogICAg
IGJvb2wgc2hvdWxkUmVwYWludCA9IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25zIGhh
dmUgYmVlbiBjaGFuZ2VkLCBzZWUgd2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGltYWdl
U2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFn
ZVNpemVDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAg
ICAgc2V0SW50cmluc2ljU2l6ZShpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7
CisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSkgIT0gaW50cmluc2ljU2l6ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAg
aWYgKCFtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNldElu
dHJpbnNpY1NpemUobV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNv
bnRlbnQgdXNpbmcgOmJlZm9yZS86YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAgICAg
ICAgLy8gcmVuZGVyIHRyZWUgeWV0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IGNoZWNrIGZvciBsYXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAsNyAr
MTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBu
ZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3Jk
aW5hdGVzIChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91
bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAg
cmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJv
eFJlY3QoKSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdl
ZCByZWN0cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVj
dCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1
cm47CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFn
ZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09
IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAg
IC8vIHRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhh
dCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5Lgog
ICAgICAgICBsYXllcigpLT5yZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5
Miw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBu
ZXdJbWFnZSkKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAgCi12
b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1h
Z2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYgKCFu
ZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBp
bnQgdHkpCiB7CkBAIC0yMzYsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1h
Z2UoKSB8fCBlcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFz
SW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI1NSwxNyArMjI2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAg
aW50IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVIZWln
aHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiAh
aW1hZ2UoKS0+aXNOdWxsKCkgJiYgKHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkpICYm
ICh1c2FibGVIZWlnaHQgPj0gaW1hZ2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJbWFn
ZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlmICht
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVz
YWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVp
Z2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2Nv
dW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNlbnRl
clggPSAodXNhYmxlV2lkdGggLSBpbWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAgICAg
ICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwogICAg
ICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVy
WCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1h
Z2UoKS0+aGVpZ2h0KCkpIC8gMjsKKyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2Fi
bGVIZWlnaHQgLSBpbWFnZS0+aGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2Vu
dGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAg
ICAgIGltYWdlWCA9IGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAgICAg
ICAgICAgICAgaW1hZ2VZID0gdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBv
aW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9yUGlj
dHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2MSw4IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0
eCwgaW50IHR5KQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgp
LT5mb250KCksIHRleHRSdW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAg
JiYgY0hlaWdodCA+IDApIHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hl
aWdodCk7CisgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dp
ZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJl
c291cmNlLT5pbWFnZShjV2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWct
PmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNCwyMiBAQCB2
b2lkIFJlbmRlckltYWdlOjpwYWludEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0g
ICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0g
MCB8fCByZWN0LmhlaWdodCgpIDw9IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0lt
YWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgp
IDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFn
ZSogaW1nID0gaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSog
aW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05h
bWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7
CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGlt
YWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4
dCwgdGhpcy0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCks
IHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQs
IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRy
YXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRI
ZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNT
aXplKCkuaGVpZ2h0KCkgOiAwOworICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2Nj
dXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVt
ZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjIsMTggQEAg
Ym9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVuZGVy
SW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAogewot
ICAgIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291cmNl
LT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2Ig
PSBpc1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsKICAg
ICAgICAgICAgIGlmIChjYi0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNvbnRh
aW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVu
ZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdl
UmVzb3VyY2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+
YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOwog
ICAgICAgICB9CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkK
ICAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRoKCkp
OwotICAgIGVsc2UgaWYgKHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lkdGgg
PSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVsc2Ug
aWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJj
ZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAgICBl
bHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAg
ICB3aWR0aCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhl
IHdpZHRoIHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxz
ZQogICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSArNDQ5
LDkgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAgIGlu
dCBoZWlnaHQ7CiAgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdodCA9
IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNlIGlm
ICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6ZShz
dHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFz
UmVsYXRpdmVIZWlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5pbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlmICht
X2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0
ID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0
IHRvIDAgdW50aWwgdGhlcmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAg
ICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0NjcsNyBA
QCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJbnRT
aXplIHNpemUgPSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQor
ICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+
ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBi
b3RoZXIgc2NhbGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhl
aWdodCgpICogc2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0Nzcs
NyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAgICAg
SW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgp
KQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9u
J3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFj
ZWRXaWR0aCgpICogc2l6ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1
MDIsNCBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldp
ZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQot
ewotICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGI4OWE2NTIuLjAxODJiOTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFn
ZV9oCiAjZGVmaW5lIFJlbmRlckltYWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zMywyOCArMzQsMjEgQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
ckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFn
ZShOb2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFnZShO
b2RlKiwgU3R5bGVJbWFnZSogPSAwKTsKKworICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdl
UmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBS
ZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZVJlc291cmNlLmdldCgpOyB9CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpOyB9CiAKICAgICBib29sIHNl
dEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CiAKICAgICB2
b2lkIHVwZGF0ZUFsdFRleHQoKTsKIAotICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UqKTsKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXAoKSBjb25z
dDsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7IH0KLQogICAgIHZvaWQgaGlnaFF1
YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJJbWFnZT4qKTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBo
ZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1h
Z2UoKSA6IG51bGxJbWFnZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJy
ZWQoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CkBAIC02NCwxNCArNTgsMTQgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaXNXaWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNI
ZWlnaHRTcGVjaWZpZWQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXpl
Q2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lk
IGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5p
bWFnZVB0cigpKTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgdmly
dHVhbCBpbnQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CkBAIC04NCwzNyArNzgsMjUg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAg
dmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpIGNvbnN0IHsgaWYgKG1fY2FjaGVkSW1hZ2UpIG1fY2FjaGVkSW1hZ2UtPnNldElt
YWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplKG11bHRpcGxpZXIpIDogSW50U2l6
ZSgpOyB9Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9Ci0KICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lk
dGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CiAKLXBy
b3RlY3RlZDoKLSAgICAvLyBUaGUgaW1hZ2Ugd2UgYXJlIHJlbmRlcmluZy4KLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKLQogcHJpdmF0ZToKICAg
ICAvLyBUZXh0IHRvIGRpc3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxl
LgogICAgIFN0cmluZyBtX2FsdFRleHQ7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+
IG1faW1hZ2VSZXNvdXJjZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlKCk7Ci0gICAg
CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKIGlubGlu
ZSBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCit7
CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25z
dCBSZW5kZXJJbWFnZSogdG9SZW5kZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
LXsgCit7CiAgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckltYWdlKCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJJbWFnZSo+KG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkMDUwOC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBS
ZW5kZXJJbWFnZShuKQote30KLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBt
X3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAg
aWYgKGltYWdlLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0
aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1f
c3R5bGVJbWFnZSA9IGltYWdlOwotICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwot
fQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjgzMzBkLi4wMDAwMDAwCi0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnRfaAotI2RlZmluZSBSZW5kZXJJbWFnZUdlbmVyYXRlZENv
bnRlbnRfaAotCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKLSNpbmNsdWRlICJTdHlsZUltYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFN0eWxlSW1hZ2U7Ci0KLWNsYXNzIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCA6IHB1
YmxpYyBSZW5kZXJJbWFnZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50KE5vZGUqKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKTsK
LSAgICAKLSAgICB2b2lkIHNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwotICAgIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgdyA9IDAsIGludCBoID0gMCkgeyBy
ZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZSh0aGlzLCBJbnRTaXplKHcsIGgpKTsgfQotICAgIHZp
cnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5l
cnJvck9jY3VycmVkKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUp
OyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGltYWdl
U2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
U2l6ZSh0aGlzLCBtdWx0aXBsaWVyKTsgfQotICAgIAotICAgIC8vIHxtX3N0eWxlSW1hZ2V8IGNh
biBiZSAwIGlmIHdlIGdldCBhIGNhbGxiYWNrIGZvciBhIGJhY2tncm91bmQgaW1hZ2UgZnJvbSBS
ZW5kZXJPYmplY3Q6OnNldFN0eWxlLgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdl
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlID8gbV9zdHlsZUltYWdlLT5kYXRhKCkg
OiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZWZlYmEKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtMCww
ICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2Fy
ZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8UmVuZGVySW1h
Z2VSZXNvdXJjZT4gUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCit7CisgICAgaWYgKHN0eWxlSW1hZ2UpCisg
ICAgICAgIHJldHVybiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHJlbmRl
cmVyLCBzdHlsZUltYWdlKTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VS
ZXNvdXJjZShyZW5kZXJlcikpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5kZXJJbWFn
ZVJlc291cmNlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBtX3JlbmRlcmVyKHJlbmRl
cmVyKQorICAgICwgbV9jYWNoZWRJbWFnZSgwKQoreworICAgIEFTU0VSVChtX3JlbmRlcik7Cit9
CisKK1JlbmRlckltYWdlUmVzb3VyY2U6On5SZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1f
cmVuZGVyZXIpOworfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnNldENhY2hlZEltYWdl
KENhY2hlZEltYWdlKiBuZXdJbWFnZSkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSA9PSBuZXdJ
bWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAg
IG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKKyAgICBtX2NhY2hlZElt
YWdlID0gbmV3SW1hZ2U7CisgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KG1fcmVuZGVyZXIpOworICAgICAgICBpZiAobV9jYWNoZWRJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgbV9yZW5kZXJlci0+aW1hZ2VDaGFuZ2Vk
KG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbWFnZSgpLT5yZXNldEFuaW1hdGlvbigpOworCisgICAgaWYgKCFt
X3JlbmRlcmVyLT5uZWVkc0xheW91dCgpKQorICAgICAgICBtX3JlbmRlcmVyLT5yZXBhaW50KCk7
Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0SW1hZ2VDb250YWluZXJTaXplKGNv
bnN0IEludFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NhY2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUo
c2l6ZSk7Cit9CisKK0ltYWdlKiBSZW5kZXJJbWFnZVJlc291cmNlOjpudWxsSW1hZ2UoKQorewor
ICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kNmY4ODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAg
ICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAg
ICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNv
dXJjZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VfaAorCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIk5v
bmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0eWxlSW1hZ2U7CisKK2NsYXNzIFJl
bmRlckltYWdlUmVzb3VyY2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJl
bmRlckltYWdlUmVzb3VyY2U+IGNyZWF0ZShSZW5kZXJPYmplY3QqLCBTdHlsZUltYWdlKiA9IDAp
OworCisgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOworICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0K
KyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQorCisg
ICAgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50
IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYg
bV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIDogZmFsc2U7IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxv
YXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1h
Z2UtPmltYWdlU2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUoKTsgfQorCisgICAgdmlydHVhbCBX
cmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdl
dCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKFJlbmRlck9iamVj
dCopOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSB7IHJldHVybiBtX3JlbmRlcmVyOyB9
CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CisKKyAgICBz
dGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUmVuZGVySW1hZ2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVlNDY4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAg
ICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAgICAg
IChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAg
ICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRy
aWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKworI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXIsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UpCisgICAgOiBSZW5kZXJJbWFnZVJlc291cmNlKHJlbmRlcikKKyAgICAsIG1fc3R5
bGVJbWFnZShzdHlsZUltYWdlKQoreworICAgIEFTU0VSVChtX3N0eWxlSW1hZ2UpOworCisgICAg
aWYgKG1fc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBzZXRDYWNoZWRJbWFn
ZShzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oc3R5bGVJbWFnZSktPmNhY2hlZEltYWdl
KCkpOworICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHJlbmRlcmVyKCkpOworfQorCitSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
KCkKK3sKKyAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcigpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZGQzOTljMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAy
MDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAg
ICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKworI2lu
Y2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJl
bmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJs
aWMgUmVuZGVySW1hZ2VSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZW5kZXJJbWFn
ZVJlc291cmNlPiBjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgU3R5bGVJbWFnZSogc3R5
bGVJbWFnZSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlKHJlbmRlcmVyLCBzdHlsZUltYWdlKSk7IH0KKworICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdl
KGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmlt
YWdlKHJlbmRlcmVyKCksIEludFNpemUod2lkdGgsIGhlaWdodCkpOyB9CisgICAgdmlydHVhbCBi
b29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2Nj
dXJyZWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJT
aXplKHNpemUpOyB9CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9CisgICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQorCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6
ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6
ZShyZW5kZXJlcigpLCBtdWx0aXBsaWVyKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQ
dHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UgPyBtX3N0eWxlSW1hZ2Ut
PmRhdGEoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZShSZW5kZXJPYmplY3QqLCBTdHlsZUltYWdlKik7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+
IG1fc3R5bGVJbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFJlbmRlckltYWdlU3R5bGVJbWFnZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCAyN2VhYmNkLi4xMjM0YjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckNv
dW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgotI2luY2x1ZGUgIlJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtMTA3LDEwICsxMDcsOCBAQCBSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkK
ICAgICAvLyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1
cmUuCiAgICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNvbnRlbnRE
YXRhKCk7CiAgICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGNv
bnRlbnREYXRhLT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUpIHsKLSAgICAgICAgUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudChub2RlKTsKKyAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVu
YSkgUmVuZGVySW1hZ2Uobm9kZSwgY29udGVudERhdGEtPmltYWdlKCkpOwogICAgICAgICBpbWFn
ZS0+c2V0U3R5bGUoc3R5bGUpOwotICAgICAgICBpZiAoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9
IGNvbnRlbnREYXRhLT5pbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW1hZ2Uo
c3R5bGVJbWFnZSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDY4ZTM5MmMuLjJiYWI0NWMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFn
ZUdlbmVyYXRlZENvbnRlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKQEAgLTQzMCwxMyArNDMwLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNl
dWRvCiAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHls
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENPTlRFTlRfT0JK
RUNUOiB7Ci0gICAgICAgICAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBpbWFn
ZSA9IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dChvd25lci0+ZG9jdW1lbnQoKSk7IC8vIGFub255bW91cyBvYmplY3QKKyAgICAgICAgICAgICAg
ICByZW5kZXJlciA9IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKG93bmVy
LT5kb2N1bWVudCgpLCBjb250ZW50LT5pbWFnZSgpKTsgLy8gYW5vbnltb3VzIG9iamVjdAogICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRT
dHlsZSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50LT5p
bWFnZSgpKQotICAgICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUlt
YWdlKTsKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9IGltYWdlOworICAgICAgICAgICAgICAg
IHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDT05URU5UX0NPVU5URVI6CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggODkzYTRlYS4uOWUzZGRmOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjpsYXlvdXQoKQogICAgIH0KIAogICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0g
ICAgc2V0SGVpZ2h0KGVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6
IDApOworICAgIHNldEhlaWdodChpbWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSA/IGlu
dHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDApOwogCiAgICAgY2FsY1dpZHRoKCk7CiAgICAgY2Fs
Y0hlaWdodCgpOwpAQCAtOTEsMTQgKzkxLDE1IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKICAgICAgICAgUGFpbnRJbmZvIHNhdmVk
SW5mbyhwYWludEluZm8pOwogCiAgICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbykpIHsKKyAgICAgICAgICAgIEltYWdl
KiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS0+aW1hZ2UoKTsKICAgICAgICAgICAgIEZsb2F0UmVj
dCBkZXN0UmVjdCA9IG1fbG9jYWxCb3VuZHM7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVj
dCgwLCAwLCBpbWFnZSgpLT53aWR0aCgpLCBpbWFnZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAg
ICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
KTsKIAogICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0
PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnBy
ZXNlcnZlQXNwZWN0UmF0aW8oKS5hbGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCiAgICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnBy
ZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAot
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBEZXZpY2VD
b2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgICAgIH0KICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZH
Q29udGVudCh0aGlzLCBwYWludEluZm8sIHNhdmVkSW5mby5jb250ZXh0KTsKICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggMGY0NDRiMi4uM2Y0ZTJiZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEludFNpemUgUmVuZGVyVmlkZW86
OmNhbGN1bGF0ZUludHJpbnNpY1NpemUoKQogICAgIGlmIChwbGF5ZXIoKSAmJiB2aWRlby0+cmVh
ZHlTdGF0ZSgpID49IEhUTUxWaWRlb0VsZW1lbnQ6OkhBVkVfTUVUQURBVEEpCiAgICAgICAgIHJl
dHVybiBwbGF5ZXIoKS0+bmF0dXJhbFNpemUoKTsKIAotICAgIGlmICh2aWRlby0+c2hvdWxkRGlz
cGxheVBvc3RlckltYWdlKCkgJiYgIW1fY2FjaGVkSW1hZ2VTaXplLmlzRW1wdHkoKSAmJiAhZXJy
b3JPY2N1cnJlZCgpKQorICAgIGlmICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkg
JiYgIW1fY2FjaGVkSW1hZ2VTaXplLmlzRW1wdHkoKSAmJiAhaW1hZ2VSZXNvdXJjZSgpLT5lcnJv
ck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZEltYWdlU2l6ZTsKIAogICAgIC8v
IFdoZW4gdGhlIG5hdHVyYWwgc2l6ZSBvZiB0aGUgdmlkZW8gaXMgdW5hdmFpbGFibGUsIHdlIHVz
ZSB0aGUgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAgYi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM1ZTQ4MDIuLjBlNGZi
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVu
ZGVyU1ZHSW1hZ2UocmVuZGVyZXIoKSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFn
ZSgpKQorICAgICAgICBpZiAoaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+aGFzSW1hZ2UoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgaW1hZ2VPYmotPmltYWdlUmVzb3VyY2Uo
KS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="54098"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65423</attachid>
            <date>2010-08-25 08:52:47 -0700</date>
            <delta_ts>2010-08-25 09:10:33 -0700</delta_ts>
            <desc>Patch #1k (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>67765</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YmZhMWI4Li44YzBhMTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MjEsNyArNjIxLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDFiMDZhOTAuLmEwMTFjYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3Niw3ICsxMzc2
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGUwMWQwM2YuLmQ4YzgwNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDEwLTA4
LTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpz
ZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjptaW5pbXVt
UmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRy
aW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRlckltYWdlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0
Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVz
ZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0
SW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3Vy
Y2U6Om51bGxJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6ZXJyb3JPY2N1cnJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6c2V0SW1h
Z2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlOjp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlSGFzUmVs
YXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6aW1hZ2VQdHIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHSW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6
cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSk6CisgICAgICAgICog
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1l
bnQ6OmF0dGFjaCk6CisgICAgICAgICogd21sL1dNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKwogMjAxMC0wOC0y
NSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYzNkMjMwYS4uM2Y4MjVlOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMjczLDggKzIyNzMsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIFwKLQlXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKLQlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uu
Y3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKIAlXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDgxMTdkZmUuLjY2MGZlYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzIxLDggKzMzMjEsMTAg
QEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAorICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAnLAor
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oJywK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCA2MmQxYzY4Li5iMjVlNWZmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwMTMsNyArMTAx
Myw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
IFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAg
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBAIC0xODQxLDcgKzE4NDIsOCBAQCBIRUFERVJT
ICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKLSAgICBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggXAorICAgIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5saW5lLmggXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZjc5MjA2Yi4uMDhlMmI5MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTk0OSwxMSArMjk5NDks
MTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAiDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE5NjgyNGIuLmE3OWJkY2QgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDggQEAKIAkJMDg1QjA1
QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCMDVDMTExRkFFMTZDMDA0
RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEwRUZE
RTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9y
bURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZv
cm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTA4NjQxRDQ3MTIxNDJGN0QwMDhE
RTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovOyB9OworCQkwODY0MUQ0ODEy
MTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJGN0Qw
MDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovOyB9OwogCQkwODY1
Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NUNDRTQwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg2NUNDRTcwRURERjUxQjAwREY5RUMz
IC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAq
LzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5j
cHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMxMjA2
IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRF
bGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNl
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87
IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVG
RjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OworCQkwOEYyRjAwQTEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYz
RDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCOEM1
NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAv
KiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTQ4NTcsOCArNDg2MSw2IEBACiAJCUJDQjE2
QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Ix
NkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVx
dWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNjA5
NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICovOyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2MDAz
OTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyog
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggKi87IH07Ci0JCUJDQjRGODkzMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlC
IC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi87IH07CiAJCUJDQjc3MzYxMEMx
Nzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0
IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi87IH07CiAJCUJDQjc3MzYyMEMxNzg1M0Qw
MDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05v
ZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJQkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0IC8q
IEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcCAqLzsgfTsKQEAgLTU5MTQsNiArNTkxNiw4IEBACiAJCTA4NUIwNUMxMTFGQUUxNkMw
MDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI5MEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQx
RDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2MTIx
NDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMg
LyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1
Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5
ODQsNiArNTk4OCw4IEBACiAJCTA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVs
ZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJC
QTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VD
NDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2NEUg
LyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5r
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY2MSw4ICsxMDY2Nyw2IEBACiAJCUJDQjE2
QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMx
NTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODkyMERCMjhFNTMw
MDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8q
IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzYwMEMxNzg1M0QwMDEz
MkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzEyMyw4ICsxNzEyNywxMCBAQAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQwMEE3
OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJCQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJDRUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAotCQkJCUJDQjRGODhGMERCMjhERDYwMDM5MTM5
QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLywKKwkJCQkwOEYyRjAwNzEyMTNF
NjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8sCisJCQkJMDhGMkYwMDgx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLywKKwkJCQkwODY0MUQ0
NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICov
LAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRp
Y2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRp
Y2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5l
LmNwcCAqLywKQEAgLTE5NjU4LDcgKzE5NjY0LDggQEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4RDYx
MTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyogUmVuZGVySW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRT
cGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjIyMDEsNyArMjIyMDgsOCBAQAogCQkJCUJDRUE0
ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGMkYwMDkxMjEz
RTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAvKiBS
ZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTBEMDI5MzEx
RDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggMGExNTMyMS4uNDI1ZDJhYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgSFRNTEVtYmVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiBSZW5kZXJPYmplY3Qq
IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewogICAgIGlmIChpc0ltYWdlVHlwZSgpKQotICAgICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlckVtYmVkZGVkT2JqZWN0KHRoaXMpOwogfQogCkBAIC0xNzEs
NyArMTcxLDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphdHRhY2goKQogICAgICAgICBtX2lt
YWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogCiAgICAgICAgIGlmIChyZW5kZXJlcigp
KQotICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmlt
YWdlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDgyZWVh
YjEuLjBlYzM1YjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBSZW5kZXJPYmplY3QqIEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqCiAgICAgIGlmIChzdHlsZS0+Y29udGVudERhdGEo
KSkKICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxl
KTsKIAotICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJlc291cmNlOjpj
cmVhdGUoKSk7CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0YWNoKCkKQEAgLTE5MSwx
NSArMTkxLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0YWNoKCkKICAgICBIVE1MRWxl
bWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0lt
YWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAg
ICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwot
ICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkpCisgICAgICAgIFJlbmRlckltYWdlKiBy
ZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlcklt
YWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNv
dXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1hZ2VPYmotPnNldENhY2hlZEltYWdlKG1faW1h
Z2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBu
byBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAg
ICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVhZC4K
LSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNoZWRJ
bWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmotPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsK
KyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3Vy
Y2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXpl
Rm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDYyOWUwN2IuLmViMDQxOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTExNjks
NyArMTE2OSw3IEBAIFJlbmRlck9iamVjdCogSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqCiAgICAgY2FzZSBISURERU46CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU1BR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlcklt
YWdlKHRoaXMsIFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKICAgICBjYXNlIFJBTkdF
OgogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyKHRoaXMpOwogICAgIGNh
c2UgQ09MT1I6CkBAIC0xMjA4LDEzICsxMjA4LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
YXR0YWNoKCkKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTElt
YWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1l
bnQoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9pbWFnZUxvYWRlci0+aGF2ZUZpcmVk
QmVmb3JlTG9hZEV2ZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZU9iai0+c2V0Q2Fj
aGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAotICAgICAgICAgICAgCisgICAgICAg
ICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkp
OworICAgICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9
IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgICAgICByZW5kZXJJbWFnZVJl
c291cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCisKICAgICAg
ICAgICAgIC8vIElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBz
cmMgYXR0cmlidXRlLCBzZXQKICAgICAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGgg
Zm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpICYmICFpbWFnZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBp
bWFnZU9iai0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgp
KQorICAgICAgICAgICAgICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGRl
MWVkOTEuLmJjOTBmYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMTM3LDcg
KzEzNyw3IEBAIFJlbmRlck9iamVjdCAqSFRNTE9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKG1fdXNlRmFsbGJhY2tD
b250ZW50KQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywg
c3R5bGUpOwogICAgIGlmIChpc0ltYWdlVHlwZSgpKQotICAgICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJ
bWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlckVtYmVkZGVkT2JqZWN0KHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKaW5kZXggY2Q5YzdlYy4uMjE5YmI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcApAQCAtNzgsMTAgKzc4LDggQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2go
KQogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlbmRlcmVyLT5zZXRDYWNoZWRJbWFnZShtX2lt
YWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRlcmVyKCkp
CisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCkt
PnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9CiAjZW5kaWYK
IH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIGlmIChtX2ltYWdlTG9hZGVy
KQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSkt
PnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAgICAgICAgfQog
I2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApA
QCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNW
R0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2Jq
ZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJp
YyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0x
MzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBu
ZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAg
fQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsK
LSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5k
ZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9u
KCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwx
MSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAg
ICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAo
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2Uo
KSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAt
MjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMp
OwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNv
dXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVy
ZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVy
ZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVy
ZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBp
ZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVu
ZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCiB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVy
IGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBvciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAg
Ly8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUg
Y2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3
ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
UmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZElt
YWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNhY2hlZEltYWdlKSkKLSAgICAgICAgICAgIGlt
YWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBS
ZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgp
OworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBP
bmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlm
IHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29tcGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRz
IGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUgYSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlz
IGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBj
YWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRlIHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAg
IGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIElt
YWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3Mg
SW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpAQCAt
NzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJl
bmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0
ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNGU0ZDBmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcApAQCAtNTUsMzUgKzU1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUp
CitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSwgUGFzc093blB0cjxSZW5kZXJJ
bWFnZVJlc291cmNlPiBpbWFnZVJlc291cmNlKQogICAgIDogUmVuZGVyUmVwbGFjZWQobm9kZSwg
SW50U2l6ZSgwLCAwKSkKLSAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKKyAgICAsIG1faW1hZ2VSZXNv
dXJjZShpbWFnZVJlc291cmNlKQogeworICAgIG1faW1hZ2VSZXNvdXJjZS0+aW5pdGlhbGl6ZSh0
aGlzKTsKICAgICB1cGRhdGVBbHRUZXh0KCk7CiAKICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5z
ZXRJc1Zpc3VhbGx5Tm9uRW1wdHkoKTsKIH0KIAotUmVuZGVySW1hZ2U6On5SZW5kZXJJbWFnZSgp
Ci17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92
ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2Fj
aGVkSW1hZ2UqIG5ld0ltYWdlKQotewotICAgIGlmIChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdl
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fY2Fj
aGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1h
Z2U7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRk
Q2xpZW50KHRoaXMpOwotICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
KQotICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIH0K
LX0KLQogLy8gSWYgd2UnbGwgYmUgZGlzcGxheWluZyBlaXRoZXIgYWx0IHRleHQgb3IgYW4gaW1h
Z2UsIGFkZCBzb21lIHBhZGRpbmcuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcGFkZGlu
Z1dpZHRoID0gNDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nSGVpZ2h0ID0g
NDsKQEAgLTEzNSwyMiArMTE2LDIyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChX
cmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAKICAgICBpZiAo
aGFzQm94RGVjb3JhdGlvbnMoKSB8fCBoYXNNYXNrKCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2Vk
OjppbWFnZUNoYW5nZWQobmV3SW1hZ2UsIHJlY3QpOwotICAgIAotICAgIGlmIChuZXdJbWFnZSAh
PSBpbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKKworICAgIGlmIChuZXdJbWFnZSAhPSBtX2ltYWdl
UmVzb3VyY2UtPmltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsKIAogICAgIC8vIFNldCBpbWFnZSBkaW1l
bnNpb25zLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzaXplIG9mIHRoZSBhbHQgdGV4dC4KLSAg
ICBpZiAoZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBpbWFnZVNpemVDaGFuZ2VkID0gc2V0SW1h
Z2VTaXplRm9yQWx0VGV4dChtX2NhY2hlZEltYWdlLmdldCgpKTsKLSAgICAKKyAgICBpZiAobV9p
bWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIGltYWdlU2l6ZUNoYW5nZWQg
PSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSk7
CisKICAgICBib29sIHNob3VsZFJlcGFpbnQgPSB0cnVlOwogCiAgICAgLy8gSW1hZ2UgZGltZW5z
aW9ucyBoYXZlIGJlZW4gY2hhbmdlZCwgc2VlIHdoYXQgbmVlZHMgdG8gYmUgZG9uZQotICAgIGlm
IChpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSAhPSBpbnRyaW5zaWNTaXplKCkg
fHwgaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICBpZiAoIWVycm9yT2NjdXJyZWQoKSkKLSAg
ICAgICAgICAgIHNldEludHJpbnNpY1NpemUoaW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSkpOworICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZl
Y3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Cisg
ICAgICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAg
ICBzZXRJbnRyaW5zaWNTaXplKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSkpOwogCiAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBp
bWFnZSBjb250ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVyLCB3ZSBtaWdodCBub3QgYmUgaW4gdGhl
CiAgICAgICAgIC8vIHJlbmRlciB0cmVlIHlldC4gIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVl
ZCB0byB3b3JyeSBhYm91dCBjaGVjayBmb3IgbGF5b3V0LCBzaW5jZSB3ZSdsbCBnZXQgYQpAQCAt
MTgwLDcgKzE2MSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1h
Z2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAgICAgICAgIGlmIChyZWN0KSB7
CiAgICAgICAgICAgICAvLyBUaGUgaW1hZ2UgY2hhbmdlZCByZWN0IGlzIGluIHNvdXJjZSBpbWFn
ZSBjb29yZGluYXRlcyAocHJlLXpvb21pbmcpLAogICAgICAgICAgICAgLy8gc28gbWFwIGZyb20g
dGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94LgotICAgICAgICAgICAg
cmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGltYWdlU2l6ZSgxLjBmKSksIGNvbnRlbnRCb3hSZWN0KCkpKTsKKyAgICAg
ICAgICAgIHJlcGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6ZSgxLjBmKSksIGNv
bnRlbnRCb3hSZWN0KCkpKTsKICAgICAgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdG9vLWxhcmdl
IGNoYW5nZWQgcmVjdHMuCiAgICAgICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoY29udGVu
dEJveFJlY3QoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMjAzLDcgKzE4NCw3IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICgo
bmV3SW1hZ2UgPT0gbV9jYWNoZWRJbWFnZSkgJiYgaGFzTGF5ZXIoKSkgeworICAgIGlmIChuZXdJ
bWFnZSA9PSBtX2ltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkgJiYgaGFzTGF5ZXIoKSkgewog
ICAgICAgICAvLyB0ZWxsIGFueSBwb3RlbnRpYWwgY29tcG9zaXRpbmcgbGF5ZXJzCiAgICAgICAg
IC8vIHRoYXQgdGhlIGltYWdlIGlzIGRvbmUgYW5kIHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJl
Y3RseS4KICAgICAgICAgbGF5ZXIoKS0+cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpOwpAQCAtMjEy
LDE1ICsxOTMsNiBAQCB2b2lkIFJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSogbmV3SW1hZ2UpCiAgICAgVU5VU0VEX1BBUkFNKG5ld0ltYWdlKTsKICNlbmRpZgogfQot
ICAgIAotdm9pZCBSZW5kZXJJbWFnZTo6cmVzZXRBbmltYXRpb24oKQotewotICAgIGlmIChtX2Nh
Y2hlZEltYWdlKSB7Ci0gICAgICAgIGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgICAg
IGlmICghbmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICB9Ci19CiAK
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGlu
dCB0eCwgaW50IHR5KQogewpAQCAtMjM2LDcgKzIwOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAKLSAgICBpZiAo
IWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgaWYgKCFtX2ltYWdlUmVzb3Vy
Y2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAg
ICAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNTUsMTcgKzIyNywxOSBAQCB2b2lkIFJlbmRlckltYWdlOjpw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAg
ICAgICAgIGludCB1c2FibGVXaWR0aCA9IGNXaWR0aCAtIDI7CiAgICAgICAgICAgICBpbnQgdXNh
YmxlSGVpZ2h0ID0gY0hlaWdodCAtIDI7CiAKLSAgICAgICAgICAgIGlmIChlcnJvck9jY3VycmVk
KCkgJiYgIWltYWdlKCktPmlzTnVsbCgpICYmICh1c2FibGVXaWR0aCA+PSBpbWFnZSgpLT53aWR0
aCgpKSAmJiAodXNhYmxlSGVpZ2h0ID49IGltYWdlKCktPmhlaWdodCgpKSkgeworICAgICAgICAg
ICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworCisgICAgICAgICAg
ICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIWltYWdlLT5pc051bGwo
KSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lkdGgoKSAmJiB1c2FibGVIZWlnaHQgPj0gaW1h
Z2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2VudGVyIHRoZSBlcnJvciBpbWFn
ZSwgYWNjb3VudGluZyBmb3IgYm9yZGVyIGFuZCBwYWRkaW5nLgotICAgICAgICAgICAgICAgIGlu
dCBjZW50ZXJYID0gKHVzYWJsZVdpZHRoIC0gaW1hZ2UoKS0+d2lkdGgoKSkgLyAyOworICAgICAg
ICAgICAgICAgIGludCBjZW50ZXJYID0gKHVzYWJsZVdpZHRoIC0gaW1hZ2UtPndpZHRoKCkpIC8g
MjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWCA8IDApCiAgICAgICAgICAgICAgICAgICAg
IGNlbnRlclggPSAwOwotICAgICAgICAgICAgICAgIGludCBjZW50ZXJZID0gKHVzYWJsZUhlaWdo
dCAtIGltYWdlKCktPmhlaWdodCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclkg
PSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UtPmhlaWdodCgpKSAvIDI7CiAgICAgICAgICAgICAgICAg
aWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAg
ICAgICAgICAgICBpbWFnZVggPSBsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyAxOwog
ICAgICAgICAgICAgICAgIGltYWdlWSA9IHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAx
OwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBzdHlsZSgpLT5j
b2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSArIGltYWdlWSkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBJbnRQb2ludCh0eCArIGltYWdlWCwgdHkgKyBpbWFnZVkpKTsKICAgICAgICAgICAgICAgICBl
cnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTI4OCw4ICsyNjIs
OCBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQo
c3R5bGUoKS0+Zm9udCgpLCB0ZXh0UnVuLCBJbnRQb2ludChheCwgYXkgKyBhc2NlbnQpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFzSW1hZ2UoKSAmJiBjV2lk
dGggPiAwICYmIGNIZWlnaHQgPiAwKSB7Ci0gICAgICAgIEltYWdlKiBpbWcgPSBpbWFnZShjV2lk
dGgsIGNIZWlnaHQpOworICAgIH0gZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgp
ICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKKyAgICAgICAgSW1hZ2UqIGltZyA9IG1f
aW1hZ2VSZXNvdXJjZS0+aW1hZ2UoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICAgICAgaWYgKCFpbWcg
fHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzUxLDIyICszMjUs
MjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUKICAgICAKIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0
aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQorICAgIGlmICghbV9pbWFnZVJlc291cmNl
LT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qu
d2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW1hZ2UqIGltZyA9IGltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAg
SW1hZ2UqIGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYgbm9kZSgpLT5o
YXNUYWdOYW1lKGltZ1RhZykpID8gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUo
KSkgOiAwOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VF
bHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7
Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsIHRoaXMtPmltYWdlKCksIHJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2UoaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSwgc3R5bGUoKS0+Y29sb3JT
cGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwor
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCksIHJlY3Quc2l6ZSgpKTsKKyAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKIGludCBSZW5kZXJJbWFnZTo6bWluaW11bVJl
cGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZXJyb3JPY2N1cnJlZCgpID8gaW50
cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMDsKKyAgICByZXR1cm4gbV9pbWFnZVJlc291cmNlLT5l
cnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOwogfQogCiBIVE1M
TWFwRWxlbWVudCogUmVuZGVySW1hZ2U6OmltYWdlTWFwKCkgY29uc3QKQEAgLTQ0OSwxOCArNDIz
LDE4IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzSGVpZ2h0U3BlY2lmaWVkKCkgY29uc3QKIAogaW50
IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29u
c3QKIHsKLSAgICBpZiAoaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCisgICAgaWYgKG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCiAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIGNiID0gaXNQb3NpdGlvbmVkKCkgPyBjb250YWluZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygp
KSB7CiAgICAgICAgICAgICBpZiAoY2ItPmlzQm94KCkpCi0gICAgICAgICAgICAgICAgc2V0SW1h
Z2VDb250YWluZXJTaXplKEludFNpemUodG9SZW5kZXJCb3goY2IpLT5hdmFpbGFibGVXaWR0aCgp
LCB0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZUhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAg
bV9pbWFnZVJlc291cmNlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJv
eChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0
KCkpKTsKICAgICAgICAgfQogCiAgICAgaW50IHdpZHRoOwogICAgIGlmIChpc1dpZHRoU3BlY2lm
aWVkKCkpCiAgICAgICAgIHdpZHRoID0gY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhzdHlsZSgpLT53
aWR0aCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCi0gICAgICAg
IHdpZHRoID0gaW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKLSAg
ICBlbHNlIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdl
UmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAgICAgICAgd2lkdGggPSBtX2lt
YWdlUmVzb3VyY2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7
CisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkK
ICAgICAgICAgd2lkdGggPSAwOyAvLyBJZiB0aGUgaW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwg
c2V0IHRoZSB3aWR0aCB0byAwIHVudGlsIHRoZXJlIGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgog
ICAgIGVsc2UKICAgICAgICAgd2lkdGggPSBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpOwpAQCAtNDc2
LDkgKzQ1MCw5IEBAIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3QK
ICAgICBpbnQgaGVpZ2h0OwogICAgIGlmIChpc0hlaWdodFNwZWNpZmllZCgpKQogICAgICAgICBo
ZWlnaHQgPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhzdHlsZSgpLT5oZWlnaHQoKSk7Ci0gICAg
ZWxzZSBpZiAodXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQotICAgICAgICBoZWlnaHQgPSBpbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS5oZWlnaHQoKTsKLSAgICBlbHNlIGlmIChp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpCisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT51
c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCisgICAgICAgIGhlaWdodCA9IG1faW1hZ2VSZXNvdXJj
ZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCk7CisgICAgZWxz
ZSBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpCiAgICAgICAg
IGhlaWdodCA9IDA7IC8vIElmIHRoZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhl
IGhlaWdodCB0byAwIHVudGlsIHRoZXJlIGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVs
c2UKICAgICAgICAgaGVpZ2h0ID0gY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCk7CkBAIC00OTQsNyAr
NDY4LDcgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0CiAg
ICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS5oZWlnaHQo
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJy
ZWQoKSkKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHNpemUud2lkdGgoKTsgLy8g
RG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVw
bGFjZWRIZWlnaHQoKSAqIHNpemUud2lkdGgoKSAvIHNpemUuaGVpZ2h0KCk7CiB9CkBAIC01MDQs
NyArNDc4LDcgQEAgaW50IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25z
dAogICAgIEludFNpemUgc2l6ZSA9IGludHJpbnNpY1NpemUoKTsKICAgICBpZiAoIXNpemUud2lk
dGgoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2Nj
dXJyZWQoKSkKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdl
UmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7
IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2Fs
Y1JlcGxhY2VkV2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgLyBzaXplLndpZHRoKCk7CiB9CkBAIC01
MjksOSArNTAzLDQgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y2FsY1ByZWZXaWR0aHMoKQogICAgIHNl
dFByZWZXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLUltYWdlKiBSZW5kZXJJbWFnZTo6bnVsbElt
YWdlKCkKLXsKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCBiODlhNjUyLi42Yzc1YTg1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgUmVu
ZGVySW1hZ2VfaAogI2RlZmluZSBSZW5kZXJJbWFnZV9oCiAKKyNpbmNsdWRlICJSZW5kZXJJbWFn
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVwbGFjZWQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzMsMjggKzM0LDIxIEBAIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogCiBjbGFz
cyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVySW1hZ2UoTm9kZSopOwotICAgIHZpcnR1YWwgflJlbmRlckltYWdlKCk7CisgICAgUmVuZGVy
SW1hZ2UoTm9kZSosIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4pOworCisgICAgUmVu
ZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJj
ZS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmNhY2hlZElt
YWdlKCk7IH0KIAogICAgIGJvb2wgc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSog
bmV3SW1hZ2UgPSAwKTsKIAogICAgIHZvaWQgdXBkYXRlQWx0VGV4dCgpOwogCi0gICAgdm9pZCBz
ZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KLQogICAgIEhUTUxNYXBF
bGVtZW50KiBpbWFnZU1hcCgpIGNvbnN0OwogCi0gICAgdm9pZCByZXNldEFuaW1hdGlvbigpOwot
Ci0gICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFn
ZTsgfQotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRl
ckltYWdlPiopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8q
IHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9j
YWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsK
QEAgLTY0LDE0ICs1OCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1dpZHRoU3BlY2lmaWVk
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0hlaWdodFNwZWNpZmllZCgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgeyBpbWFnZUNoYW5nZWQoaW1hZ2VQdHIo
KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSB7IGltYWdlQ2hh
bmdlZChtX2ltYWdlUmVzb3VyY2UtPmltYWdlUHRyKCkpOyB9CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckltYWdl
IjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBpbnQg
dHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBj
b25zdDsKQEAgLTg0LDM3ICs3OCwyNSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNh
bGNQcmVmV2lkdGhzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1h
Z2VDb250YWluZXJTaXplKCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNv
bnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QgeyBpZiAobV9jYWNoZWRJbWFn
ZSkgbV9jYWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmly
dHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNp
emUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0
ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KLQogICAg
IGludCBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0OwogICAgIGludCBjYWxjQXNwZWN0UmF0
aW9IZWlnaHQoKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIC8vIFRoZSBpbWFnZSB3ZSBhcmUg
cmVuZGVyaW5nLgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hl
ZEltYWdlOwotCiBwcml2YXRlOgogICAgIC8vIFRleHQgdG8gZGlzcGxheSBhcyBsb25nIGFzIHRo
ZSBpbWFnZSBpc24ndCBhdmFpbGFibGUuCiAgICAgU3RyaW5nIG1fYWx0VGV4dDsKKyAgICBPd25Q
dHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9pbWFnZVJlc291cmNlOwogCi0gICAgc3RhdGljIElt
YWdlKiBudWxsSW1hZ2UoKTsKLSAgICAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVySW1hZ2VTY2Fs
ZU9ic2VydmVyOwogfTsKIAogaW5saW5lIFJlbmRlckltYWdlKiB0b1JlbmRlckltYWdlKFJlbmRl
ck9iamVjdCogb2JqZWN0KQoteyAKK3sKICAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlz
UmVuZGVySW1hZ2UoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ob2Jq
ZWN0KTsKIH0KIAogaW5saW5lIGNvbnN0IFJlbmRlckltYWdlKiB0b1JlbmRlckltYWdlKGNvbnN0
IFJlbmRlck9iamVjdCogb2JqZWN0KQoteyAKK3sKICAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmpl
Y3QtPmlzUmVuZGVySW1hZ2UoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRl
ckltYWdlKj4ob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZUdlbmVyYXRlZENvbnRlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWQw
NTA4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50LmgiCi0KLSNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6UmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50KE5vZGUqIG4pCi06IFJlbmRlckltYWdlKG4pCi17fQotCi1SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQ6On5SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoKQotewotICAgIG1f
Y2FjaGVkSW1hZ2UgPSAwOwotICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwot
fQotCi12b2lkIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6c2V0U3R5bGVJbWFnZShTdHls
ZUltYWdlKiBpbWFnZSkKLXsKLSAgICBpZiAoaW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAg
ICAgbV9jYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihpbWFnZSkt
PmNhY2hlZEltYWdlKCk7Ci0gICAgbV9zdHlsZUltYWdlID0gaW1hZ2U7Ci0gICAgbV9zdHlsZUlt
YWdlLT5hZGRDbGllbnQodGhpcyk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDlmODMzMGQuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCi0jZGVmaW5l
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCi0KLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgotI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5bGVJbWFnZTsKLQotY2xhc3MgUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50IDogcHVibGljIFJlbmRlckltYWdlIHsKLXB1YmxpYzoKLSAgICBS
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSopOwotICAgIHZpcnR1YWwgflJlbmRlcklt
YWdlR2VuZXJhdGVkQ29udGVudCgpOwotICAgIAotICAgIHZvaWQgc2V0U3R5bGVJbWFnZShTdHls
ZUltYWdlKik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGlu
dCB3ID0gMCwgaW50IGggPSAwKSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlKHRoaXMsIElu
dFNpemUodywgaCkpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotICAgIHZpcnR1YWwgYm9v
bCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51
c2VzSW1hZ2VDb250YWluZXJTaXplKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250
YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdlLT5zZXRJ
bWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KLSAg
ICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHRoaXMsIG11bHRpcGxpZXIpOyB9Ci0gICAgCi0g
ICAgLy8gfG1fc3R5bGVJbWFnZXwgY2FuIGJlIDAgaWYgd2UgZ2V0IGEgY2FsbGJhY2sgZm9yIGEg
YmFja2dyb3VuZCBpbWFnZSBmcm9tIFJlbmRlck9iamVjdDo6c2V0U3R5bGUuCi0gICAgdmlydHVh
bCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2Ug
PyBtX3N0eWxlSW1hZ2UtPmRhdGEoKSA6IDA7IH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8U3R5
bGVJbWFnZT4gbV9zdHlsZUltYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTU4Yjg4NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2UuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwMCBEaXJr
IE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiAgICAgICAgICAgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRl
ckltYWdlUmVzb3VyY2UuaCIKKworI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVuZGVySW1hZ2VSZXNvdXJjZTo6UmVuZGVySW1hZ2VSZXNvdXJjZSgpCisgICAgOiBtX3Jl
bmRlcmVyKDApCisgICAgLCBtX2NhY2hlZEltYWdlKDApCit7CisgICAgQVNTRVJUKG1fcmVuZGVy
KTsKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3VyY2UoKQorewor
ICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGll
bnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVk
SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQoreworICAgIGlmIChtX2NhY2hlZEltYWdlID09
IG5ld0ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAg
ICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOworICAgIG1fY2Fj
aGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkgeworICAgICAgICBt
X2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9yZW5kZXJlcik7CisgICAgICAgIGlmIChtX2NhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBtX3JlbmRlcmVyLT5pbWFnZUNo
YW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckltYWdl
UmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICBp
ZiAoIW1fcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIG1fcmVuZGVyZXItPnJlcGFp
bnQoKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVy
U2l6ZShzaXplKTsKK30KKworSW1hZ2UqIFJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSgp
Cit7CisgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZjdhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAg
ICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4K
KyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0
cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFn
ZVJlc291cmNlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVk
ZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgU3R5bGVJbWFnZTsKKworY2xh
c3MgUmVuZGVySW1hZ2VSZXNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJl
bmRlckltYWdlUmVzb3VyY2UoKSk7IH0KKyAgICB2b2lkIGluaXRpYWxpemUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KKworICAgIHZvaWQgc2V0Q2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRp
b24oKTsKKworICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGlu
dCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFn
ZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9y
T2NjdXJyZWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdl
LT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9j
YWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9
CisKKyAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlw
bGllcikgOiBJbnRTaXplKCk7IH0KKworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdl
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6
CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSgpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIo
KSB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJP
YmplY3QqIG1fcmVuZGVyZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+
IG1fY2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNGJkMzIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxr
bm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2
aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxl
ckBrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8
a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCIKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxl
Q2FjaGVkSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoU3R5bGVJbWFnZSog
c3R5bGVJbWFnZSkKKyAgICA6IG1fc3R5bGVJbWFnZShzdHlsZUltYWdlKQoreworICAgIEFTU0VS
VChtX3N0eWxlSW1hZ2UpOworCisgICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgp
KQorICAgICAgICBzZXRDYWNoZWRJbWFnZShzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4o
c3R5bGVJbWFnZSktPmNhY2hlZEltYWdlKCkpOworICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50
KHJlbmRlcmVyKCkpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCkKK3sKKyAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNs
aWVudChyZW5kZXJlcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0OGRhYwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUu
b3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUu
b3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNh
cmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlX2gKKworI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKKyNp
bmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1hZ2VSZXNvdXJjZSB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBjcmVhdGUoU3R5bGVJbWFnZSogc3R5
bGVJbWFnZSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlKHN0eWxlSW1hZ2UpKTsgfQorCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHdpZHRo
ID0gMCwgaW50IGhlaWdodCA9IDApIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UocmVuZGVy
ZXIoKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JP
Y2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUm
IHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpOyB9CisKKyAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11
bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHJlbmRlcmVy
KCksIG11bHRpcGxpZXIpOyB9CisKKyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDog
MDsgfQorCitwcml2YXRlOgorICAgIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFN0eWxl
SW1hZ2UqKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VTdHlsZUltYWdlX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDExYjQzNzQuLjFiNGM3ZTggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNyArNDEsOCBAQAogI2luY2x1ZGUgIlJl
bmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRl
ckZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgi
CisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTEwNywxMCArMTA4LDgg
QEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2RlKiBub2RlLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMgYXMgaWYgd2UgZGlkbid0
IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0
YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOwogICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVu
dERhdGEtPm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGRvYyAhPSBub2RlKSB7
Ci0gICAgICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBuZXcgKGFyZW5h
KSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQobm9kZSk7CisgICAgICAgIFJlbmRlckltYWdl
KiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKG5vZGUsIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlOjpjcmVhdGUoY29udGVudERhdGEtPmltYWdlKCkpKTsKICAgICAgICAgaW1h
Z2UtPnNldFN0eWxlKHN0eWxlKTsKLSAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Ug
PSBjb250ZW50RGF0YS0+aW1hZ2UoKSkKLSAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZUltYWdl
KHN0eWxlSW1hZ2UpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAppbmRleCA2OGUzOTJjLi44YjJjOTAy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTMw
LDcgKzMwLDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRl
ICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0u
aCIKQEAgLTQzMCwxMyArNDMxLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRh
dGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvCiAgICAgICAg
ICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHBzZXVkb0VsZW1lbnRTdHlsZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENPTlRFTlRfT0JKRUNUOiB7Ci0gICAg
ICAgICAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAob3du
ZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChvd25lci0+ZG9j
dW1lbnQoKSk7IC8vIGFub255bW91cyBvYmplY3QKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9
IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKG93bmVyLT5kb2N1bWVudCgp
LCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKGNvbnRlbnQtPmltYWdlKCkp
KTsgLy8gYW5vbnltb3VzIG9iamVjdAogICAgICAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgc3R5bGUt
PmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Ut
PnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50LT5pbWFnZSgpKQotICAgICAgICAgICAgICAgICAgICBp
bWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKLSAgICAgICAgICAgICAgICByZW5kZXJl
ciA9IGltYWdlOworICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZS5yZWxl
YXNlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgY2FzZSBDT05URU5UX0NPVU5URVI6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAK
aW5kZXggODkzYTRlYS4uNTZlNTQ4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNw
cApAQCAtNDQsNyArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTVkdJbWFn
ZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50KiBpbXBsKQotICAgIDogUmVuZGVySW1h
Z2UoaW1wbCkKKyAgICA6IFJlbmRlckltYWdlKGltcGwsIFJlbmRlckltYWdlUmVzb3VyY2U6OmNy
ZWF0ZSgpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewogfQpAQCAtNjIs
NyArNjIsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogICAgIH0KIAogICAgIC8v
IG1pbmltdW0gaGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNp
Y1NpemUoKS5oZWlnaHQoKSA6IDApOworICAgIHNldEhlaWdodChpbWFnZVJlc291cmNlKCktPmVy
cm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDApOwogCiAgICAgY2Fs
Y1dpZHRoKCk7CiAgICAgY2FsY0hlaWdodCgpOwpAQCAtOTEsMTQgKzkxLDE1IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKICAgICAg
ICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWludEluZm8pOwogCiAgICAgICAgIGlmIChTVkdSZW5k
ZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbykpIHsK
KyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS0+aW1hZ2UoKTsKICAg
ICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fbG9jYWxCb3VuZHM7Ci0gICAgICAgICAg
ICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZSgpLT53aWR0aCgpLCBpbWFnZSgpLT5oZWln
aHQoKSk7CisgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFn
ZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgICAgICAg
ICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5hbGlnbigpICE9IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCiAgICAgICAgICAg
ICAgICAgaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RS
ZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VDb2xvclNwYWNl
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgU1ZHUmVuZGVyU3VwcG9y
dDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8sIHNhdmVkSW5mby5jb250
ZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggMGY0NDRiMi4uM2Y0
ZTJiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIElu
dFNpemUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1NpemUoKQogICAgIGlmIChwbGF5
ZXIoKSAmJiB2aWRlby0+cmVhZHlTdGF0ZSgpID49IEhUTUxWaWRlb0VsZW1lbnQ6OkhBVkVfTUVU
QURBVEEpCiAgICAgICAgIHJldHVybiBwbGF5ZXIoKS0+bmF0dXJhbFNpemUoKTsKIAotICAgIGlm
ICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgJiYgIW1fY2FjaGVkSW1hZ2VTaXpl
LmlzRW1wdHkoKSAmJiAhZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICh2aWRlby0+c2hvdWxkRGlz
cGxheVBvc3RlckltYWdlKCkgJiYgIW1fY2FjaGVkSW1hZ2VTaXplLmlzRW1wdHkoKSAmJiAhaW1h
Z2VSZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZElt
YWdlU2l6ZTsKIAogICAgIC8vIFdoZW4gdGhlIG5hdHVyYWwgc2l6ZSBvZiB0aGUgdmlkZW8gaXMg
dW5hdmFpbGFibGUsIHdlIHVzZSB0aGUgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGM1ZTQ4MDIuLjBlNGZiMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMTcyLDEw
ICsxNzIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKFJlbmRlclNWR0ltYWdl
KiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIoKSkpIHsKLSAgICAgICAgaWYg
KGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBpZiAoaW1hZ2VPYmotPmltYWdlUmVzb3Vy
Y2UoKS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpbWFnZU9i
ai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAgaW1hZ2VP
YmotPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTEltYWdlRWxlbWVudC5j
cHAgYi9XZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGY2YjNmMWUuLjEyYTVk
MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS93bWwvV01MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV01M
SW1hZ2VFbGVtZW50OjphdHRhY2goKQogCiBSZW5kZXJPYmplY3QqIFdNTEltYWdlRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMpOworICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiB9
CiAKIHZvaWQgV01MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65425</attachid>
            <date>2010-08-25 09:10:33 -0700</date>
            <delta_ts>2010-08-26 04:48:16 -0700</delta_ts>
            <desc>Patch #1l (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>68908</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YmZhMWI4Li44YzBhMTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MjEsNyArNjIxLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDFiMDZhOTAuLmEwMTFjYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3Niw3ICsxMzc2
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGUwMWQwM2YuLjNkZWUzZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDEwLTA4
LTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpz
ZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjptaW5pbXVt
UmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRy
aW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRlckltYWdlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0
Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVz
ZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0
SW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3Vy
Y2U6Om51bGxJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpjYWNoZWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpoYXNJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6ZXJyb3JPY2N1cnJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6c2V0SW1h
Z2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlOjp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlSGFzUmVs
YXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6aW1hZ2VQdHIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1
cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6Y2FsY3VsYXRl
SW50cmluc2ljU2l6ZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogd21sL1dN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKToKKwogMjAxMC0wOC0yNSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
cGFyb2dhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
YzNkMjMwYS4uM2Y4MjVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjczLDggKzIyNzMsMTAgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oIFwKLQlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIFwKLQlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBc
CisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgXAorCVdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmRpY2F0b3IuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuaCBcCiAJ
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDgxMTdkZmUuLjY2MGZl
YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0zMzIxLDggKzMzMjEsMTAgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oJywKLSAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCcsCi0gICAgICAgICAgICAncmVu
ZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oJywKKyAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
SW5kaWNhdG9yLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2MmQxYzY4
Li5iMjVlNWZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTEwMTMsNyArMTAxMyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRl
cmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5j
cHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAotICAgIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKKyAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRpY2F0b3IuY3BwIFwKICAgICByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBcCkBA
IC0xODQxLDcgKzE4NDIsOCBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5oIFwKLSAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmggXAorICAgIHJl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwKICAgICBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjc5MjA2Yi4uMDhlMmI5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0yOTk0OSwxMSArMjk5NDksMTkgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJ
CTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlcklt
YWdlUmVzb3VyY2UuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIg0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5k
ZXJpbmdcUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5NjgyNGIu
LmE3OWJkY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMjAsNiArMTIwLDggQEAKIAkJMDg1QjA1QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291
cmNlc0N5Y2xlU29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODVCMDVDMTExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuaCAqLzsgfTsKIAkJMDg1QjkyQkEwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVC
OTJCODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDg1
QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjND
IC8qIEZvcm1EYXRhQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CisJCTA4NjQxRDQ3MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwICovOyB9OworCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5oICovOyB9OwogCQkwODY1Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9v
cEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg2NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsK
IAkJMDg2NUNDRTcwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY1Q0NFNTBFRERGNTFCMDBE
RjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCAqLzsgfTsKIAkJMDg2QTQwMDYxMUY2RDZCNzAwMkNF
QzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NkE0MDA1MTFGNkQ2QjcwMDJDRUM1MyAvKiBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgKi87IH07CkBAIC0yMDMsNiArMjA1LDggQEAK
IAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAz
NTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVG
RjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8q
IFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAyOUZC
RiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVs
ZW1lbnQuaCAqLzsgfTsKKwkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdl
UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICov
OyB9OworCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJMEE0ODQ0
OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29m
dExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMw
MEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAg
LTQ4NTcsOCArNDg2MSw2IEBACiAJCUJDQjE2QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ix
NkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICov
OyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
Ki87IH07Ci0JCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgKi87IH07CiAJCUJDQjc3MzYxMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAg
Ki87IH07CiAJCUJDQjc3MzYyMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3
MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJ
QkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNE
MDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU5MTQsNiArNTkx
Niw4IEBACiAJCTA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNs
ZVNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNE
MDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9v
cEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNF
QzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5ODQsNiArNTk4OCw4IEBACiAJCTA4RTZBMkU3MEVF
RTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJB
MDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENF
QzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyog
V01MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01M
RWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgw
Q0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDY2MSw4ICsxMDY2Nyw2IEBACiAJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBS
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEyMyw4ICsxNzEyNywxMCBA
QAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJ
CQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJD
RUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODky
MERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAot
CQkJCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaCAqLywKKwkJCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAgKi8sCisJCQkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdl
UmVzb3VyY2UuaCAqLywKKwkJCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovLAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlG
NiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFD
NUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFD
NUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCAqLywKQEAgLTE5NjU4LDcgKzE5NjY0LDgg
QEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyog
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAw
QTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyog
UmVuZGVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBF
N0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjIy
MDEsNyArMjIyMDgsOCBAQAogCQkJCUJDRUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJI
VE1MQ2FudmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFG
NyAvKiBSZW5kZXJJRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkz
MERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8q
IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRT
cGVlY2guY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXgg
MGExNTMyMS4uNDI1ZDJhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTUwLDcg
KzE1MCw3IEBAIGJvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSogc3R5bGUpCiBSZW5kZXJPYmplY3QqIEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIGlmIChpc0ltYWdl
VHlwZSgpKQotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7Cisg
ICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJl
c291cmNlOjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckVtYmVkZGVk
T2JqZWN0KHRoaXMpOwogfQogCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVt
ZW50OjphdHRhY2goKQogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgp
OwogCiAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CisgICAg
ICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENh
Y2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDgyZWVhYjEuLjBlYzM1YjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqCiAg
ICAgIGlmIChzdHlsZS0+Y29udGVudERhdGEoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVj
dDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKIAotICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVySW1hZ2UodGhpcyk7CisgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0
aGlzLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgSFRNTEltYWdl
RWxlbWVudDo6YXR0YWNoKCkKQEAgLTE5MSwxNSArMTkxLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxl
bWVudDo6YXR0YWNoKCkKICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmly
ZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdl
KCkpCisgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3Vy
Y2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1h
Z2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1h
Z2VPYmotPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJl
bmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZl
IG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRo
IGZvciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KLSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmlt
YWdlKCkgJiYgIWltYWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmot
PnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmlt
YWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAg
ICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDYyOWUwN2IuLmViMDQxOWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTExNjksNyArMTE2OSw3IEBAIFJlbmRlck9iamVjdCogSFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJT
dHlsZSAqCiAgICAgY2FzZSBISURERU46CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU1BR0U6
Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdlUmVzb3VyY2U6
OmNyZWF0ZSgpKTsKICAgICBjYXNlIFJBTkdFOgogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyU2xpZGVyKHRoaXMpOwogICAgIGNhc2UgQ09MT1I6CkBAIC0xMjA4LDEzICsxMjA4LDE0
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgbV9p
bWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgbV9pbWFnZUxvYWRlci0+aGF2ZUZpcmVkQmVmb3JlTG9hZEV2ZW50KCkpIHsKLSAgICAgICAg
ICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0g
ICAgICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2Uo
KSk7IAotICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2Ug
PSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgICAgICAgICAgUmVuZGVySW1hZ2VSZXNv
dXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7
CisgICAgICAgICAgICByZW5kZXJJbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdl
TG9hZGVyLT5pbWFnZSgpKTsgCisKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gaW1hZ2Ug
YXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBzZXQKICAgICAgICAgICAg
IC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGggZm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAg
ICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLT5pbWFnZSgpICYmICFpbWFnZU9iai0+Y2FjaGVk
SW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBpbWFnZU9iai0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4
dCgpOworICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLT5pbWFnZSgpICYmICFyZW5kZXJJ
bWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgICAgIHJlbmRlckltYWdl
LT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGRlMWVkOTEuLmJjOTBmYjkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIFJlbmRlck9iamVjdCAqSFRNTE9i
amVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqCiAgICAgaWYgKG1fdXNlRmFsbGJhY2tDb250ZW50KQogICAgICAgICByZXR1cm4gUmVuZGVy
T2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwogICAgIGlmIChpc0ltYWdlVHlwZSgp
KQotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJlc291cmNl
OjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckVtYmVkZGVkT2JqZWN0
KHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggY2Q5YzdlYy4uMjE5
YmI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNzgsMTAgKzc4LDggQEAgdm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2goKQogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRl
cih0aGlzKSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0g
ICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VS
ZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZVJl
bmRlcmVyLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCi0gICAgICAg
IH0KKyAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJl
bmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIt
PmltYWdlKCkpOyAKICAgICB9CiAjZW5kaWYKIH0KQEAgLTExMSw3ICsxMDksNyBAQCB2b2lkIEhU
TUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAg
ICAgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIuY2xlYXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAg
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNldENhY2hlZEltYWdlKDApOyAKKyAgICAgICAg
ICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENh
Y2hlZEltYWdlKDApOyAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFt
ZSA9PSB3aWR0aEF0dHIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZDE2OWQzZS4uMjQyYmY5
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNsdWRlICJI
VE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKKyNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUo
VklERU8pCisjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMg
b2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBm
YWlsLgogbmFtZXNwYWNlIFdURiB7CkBAIC0xMzAsMTEgKzEzNyw4IEBAIHZvaWQgSW1hZ2VMb2Fk
ZXI6OnNldEltYWdlKENhY2hlZEltYWdlKiBuZXdJbWFnZSkKICAgICAgICAgICAgIG9sZEltYWdl
LT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+
aXNJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0b1JlbmRlckltYWdlKHJl
bmRlcmVyKS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICB9CisgICAgaWYgKFJlbmRlckltYWdlUmVz
b3VyY2UqIGltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCkpCisgICAgICAgIGlt
YWdlUmVzb3VyY2UtPnJlc2V0QW5pbWF0aW9uKCk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnVw
ZGF0ZUZyb21FbGVtZW50KCkKQEAgLTE5NSwxMSArMTk5LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6
dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0
aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVu
dC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFu
aW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNv
dXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVz
ZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnRJ
Z25vcmluZ1ByZXZpb3VzRXJyb3IoKQpAQCAtMjIzLDIwICsyMjQsNDIgQEAgdm9pZCBJbWFnZUxv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgIGxvYWRFdmVudFNlbmRl
cigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwogfQogCitSZW5kZXJJbWFnZVJlc291cmNlKiBJ
bWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCit7CisgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAg
IHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJjZSgpOworCisjaWYg
RU5BQkxFKFNWRykKKyAgICBpZiAocmVuZGVyZXItPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5kaWYK
KworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAocmVuZGVyZXItPmlzVmlkZW8oKSkKKyAgICAg
ICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisjZW5k
aWYKKworICAgIHJldHVybiAwOworfQorCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJl
cigpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpICYmICFyZW5kZXJlci0+
aXNWaWRlbygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZW5kZXJJbWFnZSogaW1h
Z2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpOwotICAgICAgICAKLSAgICAgICAg
Ly8gT25seSB1cGRhdGUgdGhlIHJlbmRlcmVyIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbWFnZSBv
ciBpZiB3aGF0IHdlIGhhdmUKLSAgICAgICAgLy8gaXMgYSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMg
cHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVyZSBhIGR5bmFtaWMKLSAgICAgICAg
Ly8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMuCi0gICAgICAgIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCk7Ci0gICAg
ICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxldGUgfHwgIWNh
Y2hlZEltYWdlKSkKLSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1f
aW1hZ2UuZ2V0KCkpOwotICAgIH0KKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291
cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgaWYgKCFpbWFnZVJlc291cmNlKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQg
ZG9lc24ndCBoYXZlIGFuIGltYWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQorICAgIC8vIGlzIGEgY29t
cGxldGUgaW1hZ2UuICBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgaW4gdGhlIGNhc2Ugd2hlcmUg
YSBkeW5hbWljCisgICAgLy8gY2hhbmdlIGlzIGhhcHBlbmluZyBiZXR3ZWVuIHR3byBpbWFnZXMu
CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1h
Z2UoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBjYWNoZWRJbWFnZSAmJiAobV9pbWFnZUNvbXBsZXRl
IHx8ICFjYWNoZWRJbWFnZSkpCisgICAgICAgIGltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdl
KG1faW1hZ2UuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdC
ZWZvcmVMb2FkRXZlbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
aCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggMDJkZGNlOC4uOWJmNzYyNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xv
YWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOworY2xhc3MgUmVu
ZGVySW1hZ2VSZXNvdXJjZTsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2VDbGllbnQgewogcHVibGljOgpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaFBl
bmRpbmdMb2FkRXZlbnQoKTsKIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdl
UmVzb3VyY2UoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKCk7CiAKICAgICBFbGVtZW50KiBt
X2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjA3MzQ3OS4uNGU0ZDBm
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTUsMzUgKzU1LDE2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1h
Z2U6OlJlbmRlckltYWdlKE5vZGUqIG5vZGUpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoTm9k
ZSogbm9kZSwgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBpbWFnZVJlc291cmNlKQog
ICAgIDogUmVuZGVyUmVwbGFjZWQobm9kZSwgSW50U2l6ZSgwLCAwKSkKLSAgICAsIG1fY2FjaGVk
SW1hZ2UoMCkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShpbWFnZVJlc291cmNlKQogeworICAgIG1f
aW1hZ2VSZXNvdXJjZS0+aW5pdGlhbGl6ZSh0aGlzKTsKICAgICB1cGRhdGVBbHRUZXh0KCk7CiAK
ICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5zZXRJc1Zpc3VhbGx5Tm9uRW1wdHkoKTsKIH0KIAot
UmVuZGVySW1hZ2U6On5SZW5kZXJJbWFnZSgpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0g
ICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5k
ZXJJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQotewotICAgIGlm
IChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1f
Y2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
LSAgICBtX2NhY2hlZEltYWdlID0gbmV3SW1hZ2U7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsK
LSAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotICAgICAgICBpZiAobV9j
YWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1f
Y2FjaGVkSW1hZ2UuZ2V0KCkpOwotICAgIH0KLX0KLQogLy8gSWYgd2UnbGwgYmUgZGlzcGxheWlu
ZyBlaXRoZXIgYWx0IHRleHQgb3IgYW4gaW1hZ2UsIGFkZCBzb21lIHBhZGRpbmcuCiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1dpZHRoID0gNDsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBwYWRkaW5nSGVpZ2h0ID0gNDsKQEAgLTEzNSwyMiArMTE2LDIyIEBAIHZvaWQg
UmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0
IEludFJlY3QqIHJlY3QpCiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8fCBoYXNNYXNr
KCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1hZ2UsIHJlY3Qp
OwotICAgIAotICAgIGlmIChuZXdJbWFnZSAhPSBpbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKKwor
ICAgIGlmIChuZXdJbWFnZSAhPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlUHRyKCkgfHwgIW5ld0lt
YWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxz
ZTsKIAogICAgIC8vIFNldCBpbWFnZSBkaW1lbnNpb25zLCB0YWtpbmcgaW50byBhY2NvdW50IHRo
ZSBzaXplIG9mIHRoZSBhbHQgdGV4dC4KLSAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQotICAgICAg
ICBpbWFnZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChtX2NhY2hlZEltYWdl
LmdldCgpKTsKLSAgICAKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkp
CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1faW1h
Z2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSk7CisKICAgICBib29sIHNob3VsZFJlcGFpbnQgPSB0
cnVlOwogCiAgICAgLy8gSW1hZ2UgZGltZW5zaW9ucyBoYXZlIGJlZW4gY2hhbmdlZCwgc2VlIHdo
YXQgbmVlZHMgdG8gYmUgZG9uZQotICAgIGlmIChpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKSAhPSBpbnRyaW5zaWNTaXplKCkgfHwgaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAg
ICBpZiAoIWVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUoaW1h
Z2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIGlmIChtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUo
KSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7CisgICAgICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5l
cnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogCiAgICAgICAgIC8v
IEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250ZW50IHVzaW5nIDpiZWZvcmUvOmFm
dGVyLCB3ZSBtaWdodCBub3QgYmUgaW4gdGhlCiAgICAgICAgIC8vIHJlbmRlciB0cmVlIHlldC4g
IEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBjaGVjayBmb3IgbGF5
b3V0LCBzaW5jZSB3ZSdsbCBnZXQgYQpAQCAtMTgwLDcgKzE2MSw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3Qq
IHJlY3QpCiAgICAgICAgIGlmIChyZWN0KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW1hZ2UgY2hh
bmdlZCByZWN0IGlzIGluIHNvdXJjZSBpbWFnZSBjb29yZGluYXRlcyAocHJlLXpvb21pbmcpLAog
ICAgICAgICAgICAgLy8gc28gbWFwIGZyb20gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhl
IGNvbnRlbnRzQm94LgotICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0
KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSgxLjBmKSks
IGNvbnRlbnRCb3hSZWN0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlU2l6ZSgxLjBmKSksIGNvbnRlbnRCb3hSZWN0KCkpKTsKICAgICAgICAgICAg
IC8vIEd1YXJkIGFnYWluc3QgdG9vLWxhcmdlIGNoYW5nZWQgcmVjdHMuCiAgICAgICAgICAgICBy
ZXBhaW50UmVjdC5pbnRlcnNlY3QoY29udGVudEJveFJlY3QoKSk7CiAgICAgICAgIH0gZWxzZQpA
QCAtMjAzLDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICgobmV3SW1hZ2UgPT0gbV9jYWNoZWRJbWFnZSkgJiYg
aGFzTGF5ZXIoKSkgeworICAgIGlmIChuZXdJbWFnZSA9PSBtX2ltYWdlUmVzb3VyY2UtPmNhY2hl
ZEltYWdlKCkgJiYgaGFzTGF5ZXIoKSkgewogICAgICAgICAvLyB0ZWxsIGFueSBwb3RlbnRpYWwg
Y29tcG9zaXRpbmcgbGF5ZXJzCiAgICAgICAgIC8vIHRoYXQgdGhlIGltYWdlIGlzIGRvbmUgYW5k
IHRoZXkgY2FuIHJlZmVyZW5jZSBpdCBkaXJlY3RseS4KICAgICAgICAgbGF5ZXIoKS0+cmVuZGVy
ZXJDb250ZW50Q2hhbmdlZCgpOwpAQCAtMjEyLDE1ICsxOTMsNiBAQCB2b2lkIFJlbmRlckltYWdl
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogbmV3SW1hZ2UpCiAgICAgVU5VU0VEX1BB
UkFNKG5ld0ltYWdlKTsKICNlbmRpZgogfQotICAgIAotdm9pZCBSZW5kZXJJbWFnZTo6cmVzZXRB
bmltYXRpb24oKQotewotICAgIGlmIChtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAgIGltYWdlKCkt
PnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgICAgIGlmICghbmVlZHNMYXlvdXQoKSkKLSAgICAgICAg
ICAgIHJlcGFpbnQoKTsKLSAgICB9Ci19CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogewpAQCAtMjM2LDcgKzIw
OCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQ7CiAKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgp
KSB7CisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTUsMTcgKzIy
NywxOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAgIGludCB1c2FibGVXaWR0aCA9IGNXaWR0
aCAtIDI7CiAgICAgICAgICAgICBpbnQgdXNhYmxlSGVpZ2h0ID0gY0hlaWdodCAtIDI7CiAKLSAg
ICAgICAgICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgIWltYWdlKCktPmlzTnVsbCgpICYmICh1
c2FibGVXaWR0aCA+PSBpbWFnZSgpLT53aWR0aCgpKSAmJiAodXNhYmxlSGVpZ2h0ID49IGltYWdl
KCktPmhlaWdodCgpKSkgeworICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpOworCisgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lk
dGgoKSAmJiB1c2FibGVIZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gQ2VudGVyIHRoZSBlcnJvciBpbWFnZSwgYWNjb3VudGluZyBmb3IgYm9yZGVyIGFuZCBw
YWRkaW5nLgotICAgICAgICAgICAgICAgIGludCBjZW50ZXJYID0gKHVzYWJsZVdpZHRoIC0gaW1h
Z2UoKS0+d2lkdGgoKSkgLyAyOworICAgICAgICAgICAgICAgIGludCBjZW50ZXJYID0gKHVzYWJs
ZVdpZHRoIC0gaW1hZ2UtPndpZHRoKCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVy
WCA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclggPSAwOwotICAgICAgICAgICAgICAg
IGludCBjZW50ZXJZID0gKHVzYWJsZUhlaWdodCAtIGltYWdlKCktPmhlaWdodCgpKSAvIDI7Cisg
ICAgICAgICAgICAgICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UtPmhlaWdo
dCgpKSAvIDI7CiAgICAgICAgICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAg
ICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZVggPSBsZWZ0Qm9yZGVy
ICsgbGVmdFBhZCArIGNlbnRlclggKyAxOwogICAgICAgICAgICAgICAgIGltYWdlWSA9IHRvcEJv
cmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdJbWFnZShpbWFnZSgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1h
Z2VYLCB0eSArIGltYWdlWSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRQb2ludCh0eCArIGltYWdlWCwgdHkgKyBp
bWFnZVkpKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAg
ICAgICAgICB9CiAKQEAgLTI4OCw4ICsyNjIsOCBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoc3R5bGUoKS0+Zm9udCgpLCB0ZXh0UnVuLCBJbnRQ
b2ludChheCwgYXkgKyBhc2NlbnQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoaGFzSW1hZ2UoKSAmJiBjV2lkdGggPiAwICYmIGNIZWlnaHQgPiAwKSB7Ci0gICAg
ICAgIEltYWdlKiBpbWcgPSBpbWFnZShjV2lkdGgsIGNIZWlnaHQpOworICAgIH0gZWxzZSBpZiAo
bV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDAp
IHsKKyAgICAgICAgSW1hZ2UqIGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoY1dpZHRoLCBj
SGVpZ2h0KTsKICAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMzUxLDIyICszMjUsMjIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRG
b2N1c1JpbmdzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUK
ICAgICAKIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBl
cnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAw
KQorICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkg
PD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2UqIGltZyA9IGltYWdlKHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgSW1hZ2UqIGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+
aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBpZiAoIWltZyB8fCBpbWct
PmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFn
ZUVsdCA9IChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKGltZ1RhZykpID8gc3RhdGljX2Nh
c3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUoKSkgOiAwOwogICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0
b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMtPmltYWdlKCksIHJlY3Qu
c2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRv
ciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcg
PSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KCksIHJlY3Quc2l6ZSgpKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNl
LT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNl
KCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAK
IGludCBSZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMDsKKyAg
ICByZXR1cm4gbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXpl
KCkuaGVpZ2h0KCkgOiAwOwogfQogCiBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1hZ2U6OmltYWdl
TWFwKCkgY29uc3QKQEAgLTQ0OSwxOCArNDIzLDE4IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzSGVp
Z2h0U3BlY2lmaWVkKCkgY29uc3QKIAogaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0
aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKLSAgICBpZiAoaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkpCisgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkpCiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGNiID0gaXNQb3NpdGlvbmVkKCkgPyBjb250
YWluZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgICAgICBpZiAoY2ItPmlzQm94
KCkpCi0gICAgICAgICAgICAgICAgc2V0SW1hZ2VDb250YWluZXJTaXplKEludFNpemUodG9SZW5k
ZXJCb3goY2IpLT5hdmFpbGFibGVXaWR0aCgpLCB0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZUhl
aWdodCgpKSk7CisgICAgICAgICAgICAgICAgbV9pbWFnZVJlc291cmNlLT5zZXRJbWFnZUNvbnRh
aW5lclNpemUoSW50U2l6ZSh0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVu
ZGVyQm94KGNiKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKICAgICAgICAgfQogCiAgICAgaW50IHdp
ZHRoOwogICAgIGlmIChpc1dpZHRoU3BlY2lmaWVkKCkpCiAgICAgICAgIHdpZHRoID0gY2FsY1Jl
cGxhY2VkV2lkdGhVc2luZyhzdHlsZSgpLT53aWR0aCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1h
Z2VDb250YWluZXJTaXplKCkpCi0gICAgICAgIHdpZHRoID0gaW1hZ2VTaXplKHN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKLSAgICBlbHNlIGlmIChpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSkKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNp
emUoKSkKKyAgICAgICAgd2lkdGggPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6ZShzdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7CisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNl
LT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgd2lkdGggPSAwOyAvLyBJZiB0aGUg
aW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSB3aWR0aCB0byAwIHVudGlsIHRoZXJl
IGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVsc2UKICAgICAgICAgd2lkdGggPSBjYWxj
QXNwZWN0UmF0aW9XaWR0aCgpOwpAQCAtNDc2LDkgKzQ1MCw5IEBAIGludCBSZW5kZXJJbWFnZTo6
Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3QKICAgICBpbnQgaGVpZ2h0OwogICAgIGlmIChpc0hl
aWdodFNwZWNpZmllZCgpKQogICAgICAgICBoZWlnaHQgPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2lu
ZyhzdHlsZSgpLT5oZWlnaHQoKSk7Ci0gICAgZWxzZSBpZiAodXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpKQotICAgICAgICBoZWlnaHQgPSBpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
KS5oZWlnaHQoKTsKLSAgICBlbHNlIGlmIChpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpCisgICAg
ZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCisgICAg
ICAgIGhlaWdodCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSkuaGVpZ2h0KCk7CisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkpCiAgICAgICAgIGhlaWdodCA9IDA7IC8vIElmIHRoZSBpbWFnZSBp
cyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIGhlaWdodCB0byAwIHVudGlsIHRoZXJlIGlzIGEg
c2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVsc2UKICAgICAgICAgaGVpZ2h0ID0gY2FsY0FzcGVj
dFJhdGlvSGVpZ2h0KCk7CkBAIC00OTQsNyArNDY4LDcgQEAgaW50IFJlbmRlckltYWdlOjpjYWxj
QXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmluc2ljU2l6
ZSgpOwogICAgIGlmICghc2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYg
KCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJj
ZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAg
ICAgcmV0dXJuIHNpemUud2lkdGgoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSAqIHNpemUud2lkdGgoKSAv
IHNpemUuaGVpZ2h0KCk7CiB9CkBAIC01MDQsNyArNDc4LDcgQEAgaW50IFJlbmRlckltYWdlOjpj
YWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAogICAgIEludFNpemUgc2l6ZSA9IGludHJpbnNp
Y1NpemUoKTsKICAgICBpZiAoIXNpemUud2lkdGgoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
aWYgKCFoYXNJbWFnZSgpIHx8IGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoIW1faW1hZ2VSZXNv
dXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAg
ICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgogICAg
IHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgLyBzaXplLndpZHRoKCk7CiB9CkBAIC01MjksOSArNTAzLDQgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6Y2FsY1ByZWZXaWR0aHMoKQogICAgIHNldFByZWZXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAK
LUltYWdlKiBSZW5kZXJJbWFnZTo6bnVsbEltYWdlKCkKLXsKLSAgICByZXR1cm4gSW1hZ2U6Om51
bGxJbWFnZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAppbmRleCBiODlhNjUyLi42Yzc1YTg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAg
LTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgUmVuZGVySW1hZ2VfaAogI2RlZmluZSBSZW5kZXJJbWFn
ZV9oCiAKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
UmVwbGFjZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsMjggKzM0LDIxIEBAIGNs
YXNzIEhUTUxNYXBFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5kZXJS
ZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2UoTm9kZSopOwotICAgIHZpcnR1YWwg
flJlbmRlckltYWdlKCk7CisgICAgUmVuZGVySW1hZ2UoTm9kZSosIFBhc3NPd25QdHI8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4pOworCisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJj
ZSgpIHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQoKTsgfQorICAgIGNvbnN0IFJlbmRlcklt
YWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3Vy
Y2UuZ2V0KCk7IH0KKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCk7IH0KIAogICAgIGJvb2wgc2V0SW1hZ2VT
aXplRm9yQWx0VGV4dChDYWNoZWRJbWFnZSogbmV3SW1hZ2UgPSAwKTsKIAogICAgIHZvaWQgdXBk
YXRlQWx0VGV4dCgpOwogCi0gICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwot
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UuZ2V0KCk7IH0KLQogICAgIEhUTUxNYXBFbGVtZW50KiBpbWFnZU1hcCgpIGNvbnN0OwogCi0g
ICAgdm9pZCByZXNldEFuaW1hdGlvbigpOwotCi0gICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQotCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJl
cGFpbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlckltYWdlPiopOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRoICovID0gMCwgaW50IC8qIGhlaWdodCAq
LyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZSgpIDog
bnVsbEltYWdlKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9
Ci0KICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCogPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKQEAgLTY0LDE0ICs1OCwxNCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBpc1dpZHRoU3BlY2lmaWVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0hlaWdodFNw
ZWNpZmllZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2Vk
KCkgeyBpbWFnZUNoYW5nZWQoaW1hZ2VQdHIoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW50cmlu
c2ljU2l6ZUNoYW5nZWQoKSB7IGltYWdlQ2hhbmdlZChtX2ltYWdlUmVzb3VyY2UtPmltYWdlUHRy
KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlckltYWdlIjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1h
Z2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVySW1h
Z2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIGlu
dCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdDsKQEAgLTg0LDM3ICs3OCwyNSBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNhbGNQcmVmV2lkdGhzKCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkgOiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QgeyBpZiAobV9jYWNoZWRJbWFnZSkgbV9jYWNoZWRJbWFnZS0+c2V0SW1hZ2VDb250
YWluZXJTaXplKHNpemUpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhh
c1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEludFNp
emUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1h
Z2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0K
LSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UuZ2V0KCk7IH0KLQogICAgIGludCBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNv
bnN0OwogICAgIGludCBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdDsKIAotcHJvdGVjdGVk
OgotICAgIC8vIFRoZSBpbWFnZSB3ZSBhcmUgcmVuZGVyaW5nLgotICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwotCiBwcml2YXRlOgogICAgIC8vIFRl
eHQgdG8gZGlzcGxheSBhcyBsb25nIGFzIHRoZSBpbWFnZSBpc24ndCBhdmFpbGFibGUuCiAgICAg
U3RyaW5nIG1fYWx0VGV4dDsKKyAgICBPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9pbWFn
ZVJlc291cmNlOwogCi0gICAgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKLSAgICAKICAgICBm
cmllbmQgY2xhc3MgUmVuZGVySW1hZ2VTY2FsZU9ic2VydmVyOwogfTsKIAogaW5saW5lIFJlbmRl
ckltYWdlKiB0b1JlbmRlckltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0KQoteyAKK3sKICAgICBB
U1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzUmVuZGVySW1hZ2UoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlckltYWdlKj4ob2JqZWN0KTsKIH0KIAogaW5saW5lIGNvbnN0IFJlbmRl
ckltYWdlKiB0b1JlbmRlckltYWdlKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQoteyAKK3sK
ICAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzUmVuZGVySW1hZ2UoKSk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckltYWdlKj4ob2JqZWN0KTsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWQwNTA4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCi0KLSNpbmNsdWRlICJSZW5k
ZXJCbG9jay5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVDYWNo
ZWRJbWFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudDo6UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KE5vZGUqIG4pCi06IFJlbmRlcklt
YWdlKG4pCi17fQotCi1SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6On5SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQoKQotewotICAgIG1fY2FjaGVkSW1hZ2UgPSAwOwotICAgIG1fc3R5bGVJ
bWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudDo6c2V0U3R5bGVJbWFnZShTdHlsZUltYWdlKiBpbWFnZSkKLXsKLSAgICBpZiAoaW1h
Z2UtPmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0
PFN0eWxlQ2FjaGVkSW1hZ2UqPihpbWFnZSktPmNhY2hlZEltYWdlKCk7Ci0gICAgbV9zdHlsZUlt
YWdlID0gaW1hZ2U7Ci0gICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQodGhpcyk7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmODMzMGQuLjAwMDAwMDAKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudF9oCi0jZGVmaW5lIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9o
Ci0KLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgotI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5
bGVJbWFnZTsKLQotY2xhc3MgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50IDogcHVibGljIFJl
bmRlckltYWdlIHsKLXB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9k
ZSopOwotICAgIHZpcnR1YWwgflJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudCgpOwotICAgIAot
ICAgIHZvaWQgc2V0U3R5bGVJbWFnZShTdHlsZUltYWdlKik7Ci0gICAgCi0gICAgdmlydHVhbCBi
b29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAotcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCB3ID0gMCwgaW50IGggPSAwKSB7IHJldHVybiBt
X3N0eWxlSW1hZ2UtPmltYWdlKHRoaXMsIEludFNpemUodywgaCkpOyB9Ci0gICAgdmlydHVhbCBi
b29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2Nj
dXJyZWQoKTsgfQotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUp
IGNvbnN0IHsgbV9zdHlsZUltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZs
b2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHRo
aXMsIG11bHRpcGxpZXIpOyB9Ci0gICAgCi0gICAgLy8gfG1fc3R5bGVJbWFnZXwgY2FuIGJlIDAg
aWYgd2UgZ2V0IGEgY2FsbGJhY2sgZm9yIGEgYmFja2dyb3VuZCBpbWFnZSBmcm9tIFJlbmRlck9i
amVjdDo6c2V0U3R5bGUuCi0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UgPyBtX3N0eWxlSW1hZ2UtPmRhdGEoKSA6IDA7IH0K
LQotcHJpdmF0ZToKLSAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU4Yjg4NAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAq
ICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5j
b20+CisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKKworI2luY2x1ZGUg
IlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVySW1hZ2VSZXNvdXJjZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZSgpCisgICAgOiBtX3JlbmRlcmVyKDApCisgICAgLCBtX2NhY2hlZEltYWdl
KDApCit7CisgICAgQVNTRVJUKG1fcmVuZGVyKTsKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZTo6
flJlbmRlckltYWdlUmVzb3VyY2UoKQoreworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAg
ICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQor
eworICAgIGlmIChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xp
ZW50KG1fcmVuZGVyZXIpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBpZiAo
bV9jYWNoZWRJbWFnZSkgeworICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9yZW5k
ZXJlcik7CisgICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAg
ICAgICAgICBtX3JlbmRlcmVyLT5pbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Cisg
ICAgfQorfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sK
KyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGltYWdlKCkt
PnJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICBpZiAoIW1fcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkp
CisgICAgICAgIG1fcmVuZGVyZXItPnJlcGFpbnQoKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJl
c291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QK
K3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2Fj
aGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsKK30KKworSW1hZ2UqIFJlbmRl
ckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSgpCit7CisgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZjdh
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxk
IEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2Eu
Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlX2gKKyNkZWZpbmUgUmVuZGVySW1h
Z2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJT
dHlsZUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0
OworY2xhc3MgU3R5bGVJbWFnZTsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZSA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJj
ZSgpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJlbmRlckltYWdlUmVzb3VyY2UoKSk7IH0KKyAgICB2
b2lkIGluaXRpYWxpemUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVu
ZGVyZXI7IH0KKworICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKyAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdl
dCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2U7
IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgSW1hZ2UqIGlt
YWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAwKSB7IHJldHVybiBt
X2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJbWFnZSgpOyB9Cisg
ICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZElt
YWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkgOiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFz
UmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VT
aXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KKworICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSgpOwor
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7
IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CisKKyAgICBzdGF0aWMg
SW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUmVuZGVySW1hZ2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmFhNGJkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChD
KSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAgICAgIChDKSAy
MDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAg
ICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdh
bnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKworI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICA6IG1fc3R5bGVJbWFn
ZShzdHlsZUltYWdlKQoreworICAgIEFTU0VSVChtX3N0eWxlSW1hZ2UpOworCisgICAgaWYgKG1f
c3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBzZXRDYWNoZWRJbWFnZShzdGF0
aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oc3R5bGVJbWFnZSktPmNhY2hlZEltYWdlKCkpOwor
ICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHJlbmRlcmVyKCkpOworfQorCitSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCkKK3sK
KyAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcigpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0
OGRhYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA2IEFs
bGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAgICAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZV9oCisjZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKworI2luY2x1ZGUg
IlJlbmRlckltYWdlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9i
amVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVu
ZGVySW1hZ2VSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291
cmNlPiBjcmVhdGUoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKHN0eWxlSW1hZ2UpKTsgfQorCisgICAgdmly
dHVhbCBJbWFnZSogaW1hZ2UoaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApIHsgcmV0dXJu
IG1fc3R5bGVJbWFnZS0+aW1hZ2UocmVuZGVyZXIoKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5
bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VD
b250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdlLT5z
ZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdl
Q29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisKKyAgICB2aXJ0dWFs
IEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3R5
bGVJbWFnZS0+aW1hZ2VTaXplKHJlbmRlcmVyKCksIG11bHRpcGxpZXIpOyB9CisKKyAgICB2aXJ0
dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsgfQorCitwcml2YXRlOgorICAgIFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsKKyAgICBSZWZQdHI8U3R5bGVJbWFn
ZT4gbV9zdHlsZUltYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUmVuZGVySW1hZ2VTdHlsZUltYWdlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lZGlhLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRl
eCBkN2I0YTk5Li5jZjYzOTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgY1RpbWVVcGRhdGVSZXBlYXREZWxheSA9IDAu
MjsKIHN0YXRpYyBjb25zdCBkb3VibGUgY09wYWNpdHlBbmltYXRpb25SZXBlYXREZWxheSA9IDAu
MDU7CiAKIFJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50KiB2aWRlbykK
LSAgICA6IFJlbmRlckltYWdlKHZpZGVvKQorICAgIDogUmVuZGVySW1hZ2UodmlkZW8sIFJlbmRl
ckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKQogICAgICwgbV90aW1lVXBkYXRlVGltZXIodGhpcywg
JlJlbmRlck1lZGlhOjp0aW1lVXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fb3BhY2l0eUFuaW1h
dGlvblRpbWVyKHRoaXMsICZSZW5kZXJNZWRpYTo6b3BhY2l0eUFuaW1hdGlvblRpbWVyRmlyZWQp
CiAgICAgLCBtX21vdXNlT3ZlcihmYWxzZSkKQEAgLTYwLDcgKzYwLDcgQEAgUmVuZGVyTWVkaWE6
OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvKQogfQogCiBSZW5kZXJNZWRpYTo6
UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCogdmlkZW8sIGNvbnN0IEludFNpemUmIGludHJp
bnNpY1NpemUpCi0gICAgOiBSZW5kZXJJbWFnZSh2aWRlbykKKyAgICA6IFJlbmRlckltYWdlKHZp
ZGVvLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkKICAgICAsIG1fdGltZVVwZGF0ZVRp
bWVyKHRoaXMsICZSZW5kZXJNZWRpYTo6dGltZVVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX29w
YWNpdHlBbmltYXRpb25UaW1lcih0aGlzLCAmUmVuZGVyTWVkaWE6Om9wYWNpdHlBbmltYXRpb25U
aW1lckZpcmVkKQogICAgICwgbV9tb3VzZU92ZXIoZmFsc2UpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAxMWI0Mzc0Li4xYjRjN2U4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKQEAgLTQxLDcgKzQxLDggQEAKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1
ZGUgIlJlbmRlckNvdW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgotI2lu
Y2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgorI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUg
IlJlbmRlckxpc3RJdGVtLmgiCkBAIC0xMDcsMTAgKzEwOCw4IEBAIFJlbmRlck9iamVjdCogUmVu
ZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ICAgIC8vIE90aGVyd2lzZSBhY3RzIGFzIGlmIHdlIGRpZG4ndCBzdXBwb3J0IHRoaXMgZmVhdHVy
ZS4KICAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVudERh
dGEoKTsKICAgICBpZiAoY29udGVudERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29u
dGVudERhdGEtPmlzSW1hZ2UoKSAmJiBkb2MgIT0gbm9kZSkgewotICAgICAgICBSZW5kZXJJbWFn
ZUdlbmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50KG5vZGUpOworICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5h
KSBSZW5kZXJJbWFnZShub2RlLCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRl
KGNvbnRlbnREYXRhLT5pbWFnZSgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZSk7
Ci0gICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudERhdGEtPmltYWdl
KCkpCi0gICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKICAgICAg
ICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHAKaW5kZXggNjhlMzkyYy4uOGIyYzkwMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQ291bnRlci5oIgotI2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5o
IgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCkBAIC00MzAsMTMgKzQzMSwx
MCBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50
KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkbwogICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5z
ZXRTdHlsZShwc2V1ZG9FbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDT05URU5UX09CSkVDVDogewotICAgICAgICAgICAgICAgIFJlbmRlcklt
YWdlR2VuZXJhdGVkQ29udGVudCogaW1hZ2UgPSBuZXcgKG93bmVyLT5yZW5kZXJBcmVuYSgpKSBS
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQob3duZXItPmRvY3VtZW50KCkpOyAvLyBhbm9ueW1v
dXMgb2JqZWN0CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgKG93bmVyLT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJJbWFnZShvd25lci0+ZG9jdW1lbnQoKSwgUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U6OmNyZWF0ZShjb250ZW50LT5pbWFnZSgpKSk7IC8vIGFub255bW91cyBvYmpl
Y3QKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwc2V1ZG9F
bGVtZW50U3R5bGUpOwotICAgICAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZS5yZWxl
YXNlKCkpOwotICAgICAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29u
dGVudC0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW1hZ2Uo
c3R5bGVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBpbWFnZTsKKyAgICAgICAg
ICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ09OVEVOVF9DT1VO
VEVSOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDg5M2E0ZWEuLjU2ZTU0
OGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNW
R0ltYWdlRWxlbWVudCogaW1wbCkKLSAgICA6IFJlbmRlckltYWdlKGltcGwpCisgICAgOiBSZW5k
ZXJJbWFnZShpbXBsLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkKICAgICAsIG1fbmVl
ZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKIH0KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBSZW5k
ZXJTVkdJbWFnZTo6bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBtaW5pbXVtIGhlaWdodAotICAg
IHNldEhlaWdodChlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAw
KTsKKyAgICBzZXRIZWlnaHQoaW1hZ2VSZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkgPyBpbnRy
aW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwKTsKIAogICAgIGNhbGNXaWR0aCgpOwogICAgIGNhbGNI
ZWlnaHQoKTsKQEAgLTkxLDE0ICs5MSwxNSBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCiAgICAgICAgIFBhaW50SW5mbyBzYXZlZElu
Zm8ocGFpbnRJbmZvKTsKIAogICAgICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRv
UmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8pKSB7CisgICAgICAgICAgICBJbWFnZSog
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCktPmltYWdlKCk7CiAgICAgICAgICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QgPSBtX2xvY2FsQm91bmRzOwotICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3Qo
MCwgMCwgaW1hZ2UoKS0+d2lkdGgoKSwgaW1hZ2UoKS0+aGVpZ2h0KCkpOworICAgICAgICAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7
CiAKICAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxT
VkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwogICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQogICAgICAgICAgICAgICAgIGltYWdlRWx0LT5wcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UoKSwgRGV2aWNlQ29s
b3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogICAgICAgICB9CiAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0Nv
bnRlbnQodGhpcywgcGFpbnRJbmZvLCBzYXZlZEluZm8uY29udGV4dCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IDBmNDQ0YjIuLjNmNGUyYmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBJbnRTaXplIFJlbmRlclZpZGVvOjpj
YWxjdWxhdGVJbnRyaW5zaWNTaXplKCkKICAgICBpZiAocGxheWVyKCkgJiYgdmlkZW8tPnJlYWR5
U3RhdGUoKSA+PSBIVE1MVmlkZW9FbGVtZW50OjpIQVZFX01FVEFEQVRBKQogICAgICAgICByZXR1
cm4gcGxheWVyKCktPm5hdHVyYWxTaXplKCk7CiAKLSAgICBpZiAodmlkZW8tPnNob3VsZERpc3Bs
YXlQb3N0ZXJJbWFnZSgpICYmICFtX2NhY2hlZEltYWdlU2l6ZS5pc0VtcHR5KCkgJiYgIWVycm9y
T2NjdXJyZWQoKSkKKyAgICBpZiAodmlkZW8tPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpICYm
ICFtX2NhY2hlZEltYWdlU2l6ZS5pc0VtcHR5KCkgJiYgIWltYWdlUmVzb3VyY2UoKS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRJbWFnZVNpemU7CiAKICAgICAvLyBX
aGVuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIHZpZGVvIGlzIHVuYXZhaWxhYmxlLCB3ZSB1c2Ug
dGhlIHByb3ZpZGVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBjNWU0ODAyLi4wZTRmYjEz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHZvaWQgU1ZH
SW1hZ2VFbGVtZW50OjphdHRhY2goKQogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjphdHRhY2goKTsKIAogICAgIGlmIChSZW5kZXJTVkdJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRl
clNWR0ltYWdlKHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1hZ2Uo
KSkKKyAgICAgICAgaWYgKGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCktPmhhc0ltYWdlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaW1hZ2VPYmotPnNldENhY2hlZEltYWdlKG1f
aW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCkt
PnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01M
SW1hZ2VFbGVtZW50LmNwcAppbmRleCBmNmIzZjFlLi4xMmE1ZDBlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTEltYWdlRWxl
bWVudC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdNTEltYWdlRWxlbWVudDo6YXR0YWNo
KCkKIAogUmVuZGVyT2JqZWN0KiBXTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewotICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJJbWFnZSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhp
cywgUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwogfQogCiB2b2lkIFdNTEltYWdlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQotLSAKMS43LjAuMi5tc3lzZ2l0LjAKCg==
</data>
<flag name="review"
          id="54205"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65547</attachid>
            <date>2010-08-26 04:48:16 -0700</date>
            <delta_ts>2010-08-26 05:18:17 -0700</delta_ts>
            <desc>Patch #1m (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>69363</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YmZhMWI4Li44YzBhMTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MjEsNyArNjIxLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDFiMDZhOTAuLmEwMTFjYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3Niw3ICsxMzc2
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGUwMWQwM2YuLjIzNzYzOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDEwLTA4
LTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpz
ZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjptaW5pbXVt
UmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRy
aW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRlckltYWdlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRDYWNo
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFn
ZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6
bnVsbEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VQdHIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjplcnJvck9jY3VycmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzZXRJ
bWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlSGFzUmVsYXRpdmVXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZTo6aW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlOjppbWFnZVB0cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpjYWxjdWxh
dGVJbnRyaW5zaWNTaXplKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiB3bWwv
V01MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEltYWdlRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIpOgorCiAyMDEwLTA4LTI1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUBwYXJvZ2EuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCBjM2QyMzBhLi4zZjgyNWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIyNzMsOCArMjI3MywxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKIAlXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5o
IFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckluZGljYXRvci5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODExN2RmZS4uNjYw
ZmVjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzMjEsOCArMzMyMSwxMCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmgnLAotICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwJywKLSAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYyZDFj
NjguLmIyNWU1ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTAxMyw3ICsxMDEzLDggQEAgU09VUkNFUyArPSBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCi0gICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
QEAgLTE4NDEsNyArMTg0Miw4IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmggXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisgICAg
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmNzkyMDZiLi4wOGUyYjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTI5OTQ5LDExICsyOTk0OSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTk2ODI0
Yi4uYTc5YmRjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovOyB9OwogCQkwODVCOTJCQTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkw
ODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEy
M0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKKwkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CisJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IH07CiAJCTA4NjVDQ0U2MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovOyB9
OwogCQkwODY1Q0NFNzBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjVDQ0U1MEVEREY1MUIw
MERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oICovOyB9OwogCQkwODZBNDAwNjExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8q
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLzsgfTsKQEAgLTIwMyw2ICsyMDUsOCBA
QAogCQkwOEU2QTJFOTBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkEyRTcwRUVF
MDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhFNkUwRjEw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0
RWxlbWVudC5oICovOyB9OworCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki87IH07CisJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAw
ODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyB9OwogCQkwQTQ4
NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBT
b2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4
QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBI
ZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpA
QCAtNDg1Nyw4ICs0ODYxLDYgQEAKIAkJQkNCMTZDMkQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZD
MTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzJFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJQkNCMTZDMkYw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
Ki87IH07Ci0JCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLzsgfTsKLQkJQkNCNEY4OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLzsgfTsKIAkJQkNCNzczNjEwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cCAqLzsgfTsKIAkJQkNCNzczNjIwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
NzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9Owog
CQlCQ0I3NzM2MzBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzYwMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTkxNCw2ICs1
OTE2LDggQEAKIAkJMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlc0N5
Y2xlU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI4MEVGREU3
M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxOb29wRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjVDQ0U1MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxOb29wRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODZBNDAwNTExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk4NCw2ICs1OTg4LDggQEAKIAkJMDhFNkEyRTcw
RUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MUG9zdGZpZWxkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEZpZWxkU2V0
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEYwMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwODEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkI4NEIwMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkI4NEIxMEVDRTM3MzMwMERDMDY0RSAv
KiBXTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5
ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNjYxLDggKzEwNjY3LDYgQEAKIAkJQkNCMTZDMTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8q
IFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8q
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM1RjBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTIzLDggKzE3MTI3LDEw
IEBACiAJCQkJMEZEMzA4RDQxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovLAog
CQkJCUJDRUE0ODM2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCi0JCQkJQkNCNEY4
OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8s
Ci0JCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29u
dGVudC5oICovLAorCQkJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLywKKwkJCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5oICovLAorCQkJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8sCisJCQkJMDg2NDFENDYxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi8sCiAJCQkJQTdBQTY2RDQx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgKi8sCiAJCQkJQTdBQTY2RDUx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oICovLAogCQkJCUJDRUE0ODM4MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwICovLApAQCAtMTk2NTgsNyArMTk2NjQs
OCBAQAogCQkJCUJDRUE0ODZBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQzMDhENjExN0QxNjg1MDBBNzkxRjcgLyogUmVuZGVySUZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAv
KiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjJG
MDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QUE2NkQ3MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1MEQwMjk0MTFE
MEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjIwMSw3ICsyMjIwOCw4IEBACiAJCQkJQkNFQTQ4NjkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckhUTUxDYW52YXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5
MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3NTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNCNEY4
OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdBQTY2RDYxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRl
eCAwYTE1MzIxLi40MjVkMmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKiBzdHlsZSkKIFJlbmRlck9iamVjdCogSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgaWYgKGlzSW1h
Z2VUeXBlKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdl
UmVzb3VyY2U6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRk
ZWRPYmplY3QodGhpcyk7CiB9CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxFbWJlZEVs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
KCk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKCkpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKKyAg
ICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0
Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKaW5kZXggODJlZWFiMS4uMGVjMzViMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFJlbmRlck9iamVjdCogSFRNTEltYWdl
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSoK
ICAgICAgaWYgKHN0eWxlLT5jb250ZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwogCi0gICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdl
KHRoaXMsIFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjphdHRhY2goKQpAQCAtMTkxLDE1ICsxOTEsMTYgQEAgdm9pZCBIVE1MSW1hZ2VF
bGVtZW50OjphdHRhY2goKQogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChy
ZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVyLmhhdmVG
aXJlZEJlZm9yZUxvYWRFdmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1h
Z2UoKSkKKyAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKTsKKyAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNv
dXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgIGlmIChyZW5kZXJJ
bWFnZVJlc291cmNlLT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
bWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAg
cmVuZGVySW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgp
KTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhh
dmUgbm8gc3JjIGF0dHJpYnV0ZSwgc2V0CiAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lk
dGggZm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSAmJiAhaW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZU9i
ai0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAg
ICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNjI5ZTA3Yi4uZWIwNDE5ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTE2OSw3ICsxMTY5LDcgQEAgUmVuZGVyT2JqZWN0KiBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRl
clN0eWxlICoKICAgICBjYXNlIEhJRERFTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTUFH
RToKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMpOworICAgICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcywgUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6Y3JlYXRlKCkpOwogICAgIGNhc2UgUkFOR0U6CiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJTbGlkZXIodGhpcyk7CiAgICAgY2FzZSBDT0xPUjoKQEAgLTEyMDgsMTMgKzEyMDgs
MTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphdHRhY2goKQogICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAocmVuZGVyZXIo
KSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
LSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFn
ZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFn
ZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJl
c291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2Uo
KTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1h
Z2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFn
ZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNo
ZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRl
ckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgcmVuZGVySW1h
Z2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZGUxZWQ5MS4uYmM5MGZiOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgUmVuZGVyT2JqZWN0ICpIVE1M
T2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSoKICAgICBpZiAobV91c2VGYWxsYmFja0NvbnRlbnQpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CiAgICAgaWYgKGlzSW1hZ2VUeXBl
KCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdlUmVzb3Vy
Y2U6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRkZWRPYmpl
Y3QodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZDljN2VjLi4y
MTliYjg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC03OCwxMCArNzgsOCBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRl
cikKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9h
ZGVyKHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsK
LSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFn
ZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGltYWdl
UmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKLSAgICAg
ICAgfQorICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRl
ci0+aW1hZ2UoKSk7IAogICAgIH0KICNlbmRpZgogfQpAQCAtMTExLDcgKzEwOSw3IEBAIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci5jbGVhcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UoMCk7IAorICAgICAg
ICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0
Q2FjaGVkSW1hZ2UoMCk7IAogICAgICAgICB9CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGF0dHJO
YW1lID09IHdpZHRoQXR0cikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBkMTY5ZDNlLi4yNDJi
Zjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogI2luY2x1ZGUg
IkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIAorI2lmIEVO
QUJMRShTVkcpCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKKyNlbmRpZgorI2lmIEVOQUJM
RShWSURFTykKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2VuZGlmCisKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgYXMgbWVtYmVy
cyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50ZXIgY2hlY2sgd291bGQgYWx3YXlz
IGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEzMCwxMSArMTM3LDggQEAgdm9pZCBJbWFnZUxv
YWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQogICAgICAgICAgICAgb2xkSW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVy
LT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VS
ZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAg
aW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6
dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtMTk1LDExICsxOTksOCBAQCB2b2lkIEltYWdlTG9hZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVt
ZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPnJlc2V0
QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJl
c291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFnZVJlc291cmNlLT5y
ZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dElnbm9yaW5nUHJldmlvdXNFcnJvcigpCkBAIC0yMjMsMjAgKzIyNCw0MiBAQCB2b2lkIEltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiAgICAgbG9hZEV2ZW50U2Vu
ZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CiB9CiAKK1JlbmRlckltYWdlUmVzb3VyY2Uq
IEltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpOworCisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKQorICAg
ICAgICByZXR1cm4gdG9SZW5kZXJWaWRlbyhyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRl
cmVyKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVu
ZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgIXJlbmRlcmVy
LT5pc1ZpZGVvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlbmRlckltYWdlKiBp
bWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgICAgIAotICAgICAg
ICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGltYWdl
IG9yIGlmIHdoYXQgd2UgaGF2ZQotICAgICAgICAvLyBpcyBhIGNvbXBsZXRlIGltYWdlLiAgVGhp
cyBwcmV2ZW50cyBmbGlja2VyaW5nIGluIHRoZSBjYXNlIHdoZXJlIGEgZHluYW1pYwotICAgICAg
ICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdlcy4KLSAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKLSAg
ICAgICAgaWYgKG1faW1hZ2UgIT0gY2FjaGVkSW1hZ2UgJiYgKG1faW1hZ2VDb21wbGV0ZSB8fCAh
Y2FjaGVkSW1hZ2UpKQotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVz
b3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCk7CisKKyAgICBpZiAoIWltYWdlUmVzb3VyY2Up
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgdXBkYXRlIHRoZSByZW5kZXJlciBpZiBp
dCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYgd2hhdCB3ZSBoYXZlCisgICAgLy8gaXMgYSBj
b21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVy
ZSBhIGR5bmFtaWMKKyAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdl
cy4KKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlLT5jYWNoZWRJ
bWFnZSgpOworICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxl
dGUgfHwgIWNhY2hlZEltYWdlKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1h
Z2UobV9pbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGlu
Z0JlZm9yZUxvYWRFdmVudCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5oIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCAwMmRkY2U4Li45YmY3NjI0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXI7CitjbGFzcyBS
ZW5kZXJJbWFnZVJlc291cmNlOwogCiBjbGFzcyBJbWFnZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICB2b2lkIGRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudCgpOwogCisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1h
Z2VSZXNvdXJjZSgpOwogICAgIHZvaWQgdXBkYXRlUmVuZGVyZXIoKTsKIAogICAgIEVsZW1lbnQq
IG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyMDczNDc5Li40ZTRk
MGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC01NSwzNSArNTUsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSkKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShO
b2RlKiBub2RlLCBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGltYWdlUmVzb3VyY2Up
CiAgICAgOiBSZW5kZXJSZXBsYWNlZChub2RlLCBJbnRTaXplKDAsIDApKQotICAgICwgbV9jYWNo
ZWRJbWFnZSgwKQorICAgICwgbV9pbWFnZVJlc291cmNlKGltYWdlUmVzb3VyY2UpCiB7CisgICAg
bV9pbWFnZVJlc291cmNlLT5pbml0aWFsaXplKHRoaXMpOwogICAgIHVwZGF0ZUFsdFRleHQoKTsK
IAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQog
Ci1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkK
LSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJl
bmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCi17Ci0gICAg
aWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkg
ewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGlmICht
X2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBpbWFnZUNoYW5nZWQo
bV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5
aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUgcGFkZGluZy4KIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIyICsxMTYsMjIgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29u
c3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpIHx8IGhhc01h
c2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVj
dCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQor
CisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZh
bHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2luZyBpbnRvIGFjY291bnQg
dGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1fY2FjaGVkSW1h
Z2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQobV9p
bWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wgc2hvdWxkUmVwYWludCA9
IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUg
d2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAg
ICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShp
bWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgaWYgKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6
ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUobV9pbWFnZVJl
c291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAKICAgICAgICAg
Ly8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86
YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0
LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNoZWNrIGZvciBs
YXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVj
dCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBj
aGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVzIChwcmUtem9vbWluZyks
CiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0
aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYp
KSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOwogICAgICAgICAg
ICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0cy4KICAgICAgICAgICAg
IHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICAgICAgfSBlbHNl
CkBAIC0yMDMsNyArMTg0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAm
JiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2Fj
aGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlh
bCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBh
bmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5k
ZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Myw2IEBAIHZvaWQgUmVuZGVySW1h
Z2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICBVTlVTRURf
UEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2Uo
KS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAg
ICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyAr
MjA4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVk
KCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1NSwxNyAr
MjI3LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVzYWJsZVdpZHRoID0gY1dp
ZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAot
ICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYg
KHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2FibGVIZWlnaHQgPj0gaW1h
Z2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53
aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5k
IHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBp
bWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNh
YmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50
ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7Ci0gICAgICAgICAgICAg
ICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsK
KyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVp
Z2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAg
ICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlWCA9IGxlZnRCb3Jk
ZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAgICAgaW1hZ2VZID0gdG9w
Qm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBp
bWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSAr
IGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2Miw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIHRleHRSdW4sIElu
dFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKLSAg
ICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgfSBlbHNlIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4g
MCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShjV2lkdGgs
IGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNSwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8
IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9
IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQo
KSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1nID0gaW1hZ2UocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNl
LT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGlt
Zy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNf
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVy
YXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVj
dC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShyZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJh
dG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0K
IAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAg
IHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOwor
ICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1Np
emUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1h
Z2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjMsMTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNI
ZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdp
ZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNv
bnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgICAgIGlmIChjYi0+aXNC
b3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1Jl
bmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxl
SGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3VyY2UtPnNldEltYWdlQ29u
dGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9S
ZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAgICB9CiAKICAgICBpbnQg
d2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAgICAgd2lkdGggPSBjYWxj
UmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAgIGVsc2UgaWYgKHVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFnZVNpemUoc3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0aCA9IDA7IC8vIElmIHRo
ZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRoIHRvIDAgdW50aWwgdGhl
cmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICB3aWR0aCA9IGNh
bGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSArNDUwLDkgQEAgaW50IFJlbmRlckltYWdl
OjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWlnaHQ7CiAgICAgaWYgKGlz
SGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVz
aW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJT
aXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAg
ICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAg
ICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsgLy8gSWYgdGhlIGltYWdl
IGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAgdW50aWwgdGhlcmUgaXMg
YSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBoZWlnaHQgPSBjYWxjQXNw
ZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0NjgsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNh
bGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNpemUgPSBpbnRyaW5zaWNT
aXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBp
ZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291
cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAg
ICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KICAgICBy
ZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgpICogc2l6ZS53aWR0aCgp
IC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0NzgsNyBAQCBpbnQgUmVuZGVySW1hZ2U6
OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmlu
c2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJl
c291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAg
ICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5oZWln
aHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDMsNCBAQCB2b2lkIFJlbmRlcklt
YWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0K
IAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IGI4OWE2NTIuLjZjNzVhODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApA
QCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRlcklt
YWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMywyOCArMzQsMjEgQEAg
Y2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRl
clJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2RlKik7Ci0gICAgdmlydHVh
bCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwgUGFzc093blB0cjxSZW5k
ZXJJbWFnZVJlc291cmNlPik7CisKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291
cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisgICAgY29uc3QgUmVuZGVy
SW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNv
dXJjZS5nZXQoKTsgfQorICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsgfQogCiAgICAgYm9vbCBzZXRJbWFn
ZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDApOwogCiAgICAgdm9pZCB1
cGRhdGVBbHRUZXh0KCk7CiAKLSAgICB2b2lkIHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7
Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZS5nZXQoKTsgfQotCiAgICAgSFRNTE1hcEVsZW1lbnQqIGltYWdlTWFwKCkgY29uc3Q7CiAK
LSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5
UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVySW1hZ2U+Kik7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lkdGggKi8gPSAwLCBpbnQgLyogaGVpZ2h0
ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkg
OiBudWxsSW1hZ2UoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCk7
IH0KLQogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25z
dCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwpAQCAtNjQsMTQgKzU4LDE0IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGlzV2lkdGhTcGVjaWZpZWQoKSBjb25zdDsKICAgICBib29sIGlzSGVpZ2h0
U3BlY2lmaWVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5n
ZWQoKSB7IGltYWdlQ2hhbmdlZChpbWFnZVB0cigpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnRy
aW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQ
dHIoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKIAogICAgIHZpcnR1YWwg
aW50IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0OwpAQCAtODQsMzcgKzc4LDI1IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1ByZWZXaWR0aHMoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKSBjb25zdCB7IGlmIChtX2NhY2hlZEltYWdlKSBtX2NhY2hlZEltYWdlLT5zZXRJbWFnZUNv
bnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZElt
YWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgSW50
U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUoKTsg
fQotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkg
Y29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OwogCi1wcm90ZWN0
ZWQ6Ci0gICAgLy8gVGhlIGltYWdlIHdlIGFyZSByZW5kZXJpbmcuCi0gICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Ci0KIHByaXZhdGU6CiAgICAgLy8g
VGV4dCB0byBkaXNwbGF5IGFzIGxvbmcgYXMgdGhlIGltYWdlIGlzbid0IGF2YWlsYWJsZS4KICAg
ICBTdHJpbmcgbV9hbHRUZXh0OworICAgIE93blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX2lt
YWdlUmVzb3VyY2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOwotICAgIAogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2JzZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVu
ZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAg
IEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihvYmplY3QpOwogfQogCiBpbmxpbmUgY29uc3QgUmVu
ZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17IAor
ewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJJbWFnZSgpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVySW1hZ2UqPihvYmplY3QpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZDA1MDguLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCIKLQotI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJTdHlsZUNh
Y2hlZEltYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50OjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSogbikKLTogUmVuZGVy
SW1hZ2UobikKLXt9Ci0KLVJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6flJlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudCgpCi17Ci0gICAgbV9jYWNoZWRJbWFnZSA9IDA7Ci0gICAgbV9zdHls
ZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci19Ci0KLXZvaWQgUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50OjpzZXRTdHlsZUltYWdlKFN0eWxlSW1hZ2UqIGltYWdlKQotewotICAgIGlmIChp
bWFnZS0+aXNDYWNoZWRJbWFnZSgpKQotICAgICAgICBtX2NhY2hlZEltYWdlID0gc3RhdGljX2Nh
c3Q8U3R5bGVDYWNoZWRJbWFnZSo+KGltYWdlKS0+Y2FjaGVkSW1hZ2UoKTsKLSAgICBtX3N0eWxl
SW1hZ2UgPSBpbWFnZTsKLSAgICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4MzMwZC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50X2gKLSNkZWZpbmUgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
X2gKLQotI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCi0jaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBT
dHlsZUltYWdlOwotCi1jbGFzcyBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQgOiBwdWJsaWMg
UmVuZGVySW1hZ2UgewotcHVibGljOgotICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChO
b2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KCk7Ci0gICAg
Ci0gICAgdm9pZCBzZXRTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsKLSAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCi1wcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHcgPSAwLCBpbnQgaCA9IDApIHsgcmV0dXJu
IG1fc3R5bGVJbWFnZS0+aW1hZ2UodGhpcywgSW50U2l6ZSh3LCBoKSk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpOyB9Ci0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9Ci0gICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUo
ZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUo
dGhpcywgbXVsdGlwbGllcik7IH0KLSAgICAKLSAgICAvLyB8bV9zdHlsZUltYWdlfCBjYW4gYmUg
MCBpZiB3ZSBnZXQgYSBjYWxsYmFjayBmb3IgYSBiYWNrZ3JvdW5kIGltYWdlIGZyb20gUmVuZGVy
T2JqZWN0OjpzZXRTdHlsZS4KLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsg
fQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTFjM2M1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3Jn
PgorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3Jn
PgorICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgor
ICogICAgICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xm
LmNvbT4KKyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgorCisjaW5jbHVk
ZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5k
ZXJJbWFnZVJlc291cmNlKCkKKyAgICA6IG1fcmVuZGVyZXIoMCkKKyAgICAsIG1fY2FjaGVkSW1h
Z2UoMCkKK3sKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3VyY2Uo
KQoreworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1v
dmVDbGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5p
dGlhbGl6ZShSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyKQoreworICAgIEFTU0VSVCghbV9yZW5k
ZXJlcik7CisgICAgQVNTRVJUKG5ld1JlbmRlcmVyKTsKKyAgICBtX3JlbmRlcmVyID0gbmV3UmVu
ZGVyZXI7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UoQ2Fj
aGVkSW1hZ2UqIG5ld0ltYWdlKQoreworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKKworICAgIGlm
IChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVu
ZGVyZXIpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBpZiAobV9jYWNoZWRJ
bWFnZSkgeworICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9yZW5kZXJlcik7Cisg
ICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBt
X3JlbmRlcmVyLT5pbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7CisgICAgfQorfQor
Cit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sKKyAgICBBU1NF
UlQobV9yZW5kZXJlcik7CisKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICBpZiAoIW1fcmVuZGVy
ZXItPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIG1fcmVuZGVyZXItPnJlcGFpbnQoKTsKK30KKwor
dm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsK
K30KKworSW1hZ2UqIFJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSgpCit7CisgICAgcmV0
dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjkyM2VmODgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAy
MDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqICAgICAgICAg
ICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlX2gK
KyNkZWZpbmUgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5o
IgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFn
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0eWxlSW1hZ2U7CisKK2NsYXNzIFJlbmRl
ckltYWdlUmVzb3VyY2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHZpcnR1
YWwgflJlbmRlckltYWdlUmVzb3VyY2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRl
ckltYWdlUmVzb3VyY2U+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFJlbmRlckltYWdlUmVzb3VyY2UpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZShSZW5kZXJPYmplY3QqKTsKKworICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UqKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZEltYWdlLmdldCgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1
YWwgSW1hZ2UqIGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8gPSAw
KSB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxJ
bWFnZSgpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlICYmIG1fY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT51c2VzSW1hZ2VDb250YWlu
ZXJTaXplKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VI
YXNSZWxhdGl2ZVdpZHRoKCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1h
Z2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSA6IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIElu
dFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7
IH0KKworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVuZGVySW1hZ2VS
ZXNvdXJjZSgpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSB7IHJldHVybiBtX3JlbmRl
cmVyOyB9CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7
CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CisK
KyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA2MjdlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICog
ICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAg
ICAgICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4K
KyAqICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKworI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6UmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICA6
IG1fc3R5bGVJbWFnZShzdHlsZUltYWdlKQoreworICAgIEFTU0VSVChtX3N0eWxlSW1hZ2UpOwor
CisgICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBzZXRDYWNo
ZWRJbWFnZShzdGF0aWNfY2FzdDxTdHlsZUNhY2hlZEltYWdlKj4oc3R5bGVJbWFnZSktPmNhY2hl
ZEltYWdlKCkpOworfQorCitSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlKCkKK3sKKyAgICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVu
dChyZW5kZXJlcigpKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6
aW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyKQoreworICAgIFJlbmRlckltYWdl
UmVzb3VyY2U6OmluaXRpYWxpemUobmV3UmVuZGVyZXIpOworICAgIG1fc3R5bGVJbWFnZS0+YWRk
Q2xpZW50KHJlbmRlcmVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjMyNGFjCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVA
Y2FyZXdvbGYuY29tPgorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2VfaAorCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyT2JqZWN0OworCitjbGFzcyBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZVJlc291cmNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSgpOworCisgICAg
c3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKFN0eWxlSW1hZ2Uq
IHN0eWxlSW1hZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlKHN0eWxlSW1hZ2UpKTsKKyAgICB9CisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemUoUmVuZGVyT2JqZWN0Kik7CisKKyAgICB2aXJ0dWFsIEltYWdlKiBpbWFn
ZShpbnQgd2lkdGggPSAwLCBpbnQgaGVpZ2h0ID0gMCkgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5p
bWFnZShyZW5kZXJlcigpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5lcnJvck9j
Y3VycmVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2UtPnNldEltYWdlQ29udGFpbmVy
U2l6ZShzaXplKTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51c2VzSW1hZ2VDb250YWluZXJTaXplKCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5p
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNp
emUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNp
emUocmVuZGVyZXIoKSwgbXVsdGlwbGllcik7IH0KKworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdl
UHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5kYXRhKCk7IH0KKwor
cHJpdmF0ZToKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShTdHlsZUltYWdlKik7
CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlU3R5bGVJbWFnZV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5jcHAKaW5kZXggZDdiNGE5OS4uY2Y2MzkxMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGNUaW1l
VXBkYXRlUmVwZWF0RGVsYXkgPSAwLjI7CiBzdGF0aWMgY29uc3QgZG91YmxlIGNPcGFjaXR5QW5p
bWF0aW9uUmVwZWF0RGVsYXkgPSAwLjA1OwogCiBSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRN
TE1lZGlhRWxlbWVudCogdmlkZW8pCi0gICAgOiBSZW5kZXJJbWFnZSh2aWRlbykKKyAgICA6IFJl
bmRlckltYWdlKHZpZGVvLCBSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkKICAgICAsIG1f
dGltZVVwZGF0ZVRpbWVyKHRoaXMsICZSZW5kZXJNZWRpYTo6dGltZVVwZGF0ZVRpbWVyRmlyZWQp
CiAgICAgLCBtX29wYWNpdHlBbmltYXRpb25UaW1lcih0aGlzLCAmUmVuZGVyTWVkaWE6Om9wYWNp
dHlBbmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV9tb3VzZU92ZXIoZmFsc2UpCkBAIC02MCw3
ICs2MCw3IEBAIFJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50KiB2aWRl
bykKIH0KIAogUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVv
LCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKQotICAgIDogUmVuZGVySW1hZ2UodmlkZW8p
CisgICAgOiBSZW5kZXJJbWFnZSh2aWRlbywgUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkp
CiAgICAgLCBtX3RpbWVVcGRhdGVUaW1lcih0aGlzLCAmUmVuZGVyTWVkaWE6OnRpbWVVcGRhdGVU
aW1lckZpcmVkKQogICAgICwgbV9vcGFjaXR5QW5pbWF0aW9uVGltZXIodGhpcywgJlJlbmRlck1l
ZGlhOjpvcGFjaXR5QW5pbWF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fbW91c2VPdmVyKGZhbHNl
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMTFiNDM3NC4uMWI0YzdlOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00MSw3ICs0MSw4IEBACiAjaW5jbHVkZSAi
UmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRmxleGlibGVCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgpAQCAtMTA3LDEwICsxMDgs
OCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KE5vZGUqIG5vZGUs
IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3ZSBkaWRu
J3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCiAgICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnRE
YXRhID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7CiAgICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250
ZW50RGF0YS0+bmV4dCgpICYmIGNvbnRlbnREYXRhLT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUp
IHsKLSAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAoYXJl
bmEpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChub2RlKTsKKyAgICAgICAgUmVuZGVySW1h
Z2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2Uobm9kZSwgUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZShjb250ZW50RGF0YS0+aW1hZ2UoKSkpOwogICAgICAgICBp
bWFnZS0+c2V0U3R5bGUoc3R5bGUpOwotICAgICAgICBpZiAoU3R5bGVJbWFnZSogc3R5bGVJbWFn
ZSA9IGNvbnRlbnREYXRhLT5pbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW1h
Z2Uoc3R5bGVJbWFnZSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IDY4ZTM5MmMuLjhiMmM5
MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAt
MzAsNyArMzAsOCBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJSZW5k
ZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1
ZGUgIlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRl
bS5oIgpAQCAtNDMwLDEzICs0MzEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnVw
ZGF0ZUJlZm9yZUFmdGVyQ29udGVudChSZW5kZXJPYmplY3QqIG93bmVyLCBQc2V1ZG8KICAgICAg
ICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6IHsKLSAg
ICAgICAgICAgICAgICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQqIGltYWdlID0gbmV3IChv
d25lci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KG93bmVyLT5k
b2N1bWVudCgpKTsgLy8gYW5vbnltb3VzIG9iamVjdAorICAgICAgICAgICAgICAgIHJlbmRlcmVy
ID0gbmV3IChvd25lci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2Uob3duZXItPmRvY3VtZW50
KCksIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUoY29udGVudC0+aW1hZ2Uo
KSkpOyAvLyBhbm9ueW1vdXMgb2JqZWN0CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBzdHls
ZS0+aW5oZXJpdEZyb20ocHNldWRvRWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgICAgICBpbWFn
ZS0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoU3R5bGVJ
bWFnZSogc3R5bGVJbWFnZSA9IGNvbnRlbnQtPmltYWdlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwotICAgICAgICAgICAgICAgIHJlbmRl
cmVyID0gaW1hZ2U7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlLnJl
bGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIENPTlRFTlRfQ09VTlRFUjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0ltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNw
cAppbmRleCA4OTNhNGVhLi41NmU1NDhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCkBAIC00NCw3ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR0lt
YWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQqIGltcGwpCi0gICAgOiBSZW5kZXJJ
bWFnZShpbXBsKQorICAgIDogUmVuZGVySW1hZ2UoaW1wbCwgUmVuZGVySW1hZ2VSZXNvdXJjZTo6
Y3JlYXRlKCkpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9CkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAgICAgfQogCiAgICAg
Ly8gbWluaW11bSBoZWlnaHQKLSAgICBzZXRIZWlnaHQoZXJyb3JPY2N1cnJlZCgpID8gaW50cmlu
c2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7CisgICAgc2V0SGVpZ2h0KGltYWdlUmVzb3VyY2UoKS0+
ZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7CiAKICAgICBj
YWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7CkBAIC05MSwxNCArOTEsMTUgQEAgdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCwgaW50KQogICAg
ICAgICBQYWludEluZm8gc2F2ZWRJbmZvKHBhaW50SW5mbyk7CiAKICAgICAgICAgaWYgKFNWR1Jl
bmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvKSkg
eworICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLT5pbWFnZSgpOwog
ICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9sb2NhbEJvdW5kczsKLSAgICAgICAg
ICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlKCktPndpZHRoKCksIGltYWdlKCktPmhl
aWdodCgpKTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0
aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICBTVkdJbWFnZUVsZW1lbnQqIGlt
YWdlRWx0ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKICAgICAgICAg
ICAgIGlmIChpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWduKCkgIT0gU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKICAgICAgICAg
ICAgICAgICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVz
dFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIERldmljZUNvbG9yU3Bh
Y2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgfQogICAgICAgICBTVkdSZW5kZXJTdXBw
b3J0OjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgc2F2ZWRJbmZvLmNv
bnRleHQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCAwZjQ0NGIyLi4z
ZjRlMmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAg
SW50U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpCiAgICAgaWYgKHBs
YXllcigpICYmIHZpZGVvLT5yZWFkeVN0YXRlKCkgPj0gSFRNTFZpZGVvRWxlbWVudDo6SEFWRV9N
RVRBREFUQSkKICAgICAgICAgcmV0dXJuIHBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOwogCi0gICAg
aWYgKHZpZGVvLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSAmJiAhbV9jYWNoZWRJbWFnZVNp
emUuaXNFbXB0eSgpICYmICFlcnJvck9jY3VycmVkKCkpCisgICAgaWYgKHZpZGVvLT5zaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSAmJiAhbV9jYWNoZWRJbWFnZVNpemUuaXNFbXB0eSgpICYmICFp
bWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
SW1hZ2VTaXplOwogCiAgICAgLy8gV2hlbiB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSB2aWRlbyBp
cyB1bmF2YWlsYWJsZSwgd2UgdXNlIHRoZSBwcm92aWRlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAK
aW5kZXggYzVlNDgwMi4uMGU0ZmIxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNzIs
MTAgKzE3MiwxMCBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAoUmVuZGVyU1ZHSW1h
Z2UqIGltYWdlT2JqID0gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlcigpKSkgewotICAgICAgICBp
ZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZU9iai0+aW1hZ2VSZXNv
dXJjZSgpLT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGltYWdl
T2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdlKCkpOworICAgICAgICBpbWFn
ZU9iai0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLmltYWdl
KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW1hZ2VFbGVtZW50
LmNwcCBiL1dlYkNvcmUvd21sL1dNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZjZiM2YxZS4uMTJh
NWQwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBX
TUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAKIFJlbmRlck9iamVjdCogV01MSW1hZ2VFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsK
IH0KIAogdm9pZCBXTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
</data>
<flag name="review"
          id="54344"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65549</attachid>
            <date>2010-08-26 05:18:17 -0700</date>
            <delta_ts>2010-08-27 07:33:05 -0700</delta_ts>
            <desc>Patch #1n (add RenderImageResource)</desc>
            <filename>0001-RenderImage.patch</filename>
            <type>text/plain</type>
            <size>69211</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA3YmZhMWI4Li44YzBhMTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC02MjEsNyArNjIxLDggQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwK
IAlyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBcCi0JcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorCXJlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDFiMDZhOTAuLmEwMTFjYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3Niw3ICsxMzc2
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
CisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisgICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbmRp
Y2F0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGUwMWQwM2YuLjIzNzYzOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDEwLTA4
LTI2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFnZUNo
YW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBBdCB0aGUgbW9tZW50IFJlbmRl
clNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1hZ2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcg
Y29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBhYm91dCByZXBhaW50aW5nLCBhbmQgdGh1
cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9tIFJlbmRlclNWR01vZGVsT2JqZWN0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENhY2hlZEltYWdlIGZyb20gUmVuZGVySW1h
Z2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5z
IHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1hZ2UgYW5kIFJlbmRlclNWR0ltYWdlLgor
ICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBv
ZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpz
ZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdl
OjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjptaW5pbXVt
UmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbnRy
aW5zaWNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OlJlbmRlckltYWdlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlcklt
YWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRDYWNo
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpyZXNldEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFn
ZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6
bnVsbEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNhY2hlZEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VQdHIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjplcnJvck9jY3VycmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzZXRJ
bWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlSGFzUmVsYXRpdmVXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZTo6aW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlOjppbWFnZVB0cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6
OnVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpjYWxjdWxh
dGVJbnRyaW5zaWNTaXplKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiB3bWwv
V01MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEltYWdlRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIpOgorCiAyMDEwLTA4LTI1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUBwYXJvZ2EuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCBjM2QyMzBhLi4zZjgyNWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIyNzMsOCArMjI3MywxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKIAlXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgXAotCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5o
IFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckluZGljYXRvci5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODExN2RmZS4uNjYw
ZmVjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzMjEsOCArMzMyMSwxMCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9S
ZW5kZXJJRnJhbWUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmgnLAotICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwJywKLSAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9y
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYyZDFj
NjguLmIyNWU1ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTAxMyw3ICsxMDEzLDggQEAgU09VUkNFUyArPSBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCi0gICAgcmVuZGVyaW5nL1Jl
bmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwK
QEAgLTE4NDEsNyArMTg0Miw4IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmggXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisgICAg
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogICAg
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmNzkyMDZiLi4wOGUyYjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTI5OTQ5LDExICsyOTk0OSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTk2ODI0
Yi4uYTc5YmRjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovOyB9OwogCQkwODVCOTJCQTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkw
ODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEy
M0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKKwkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CisJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IH07CiAJCTA4NjVDQ0U2MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovOyB9
OwogCQkwODY1Q0NFNzBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjVDQ0U1MEVEREY1MUIw
MERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5oICovOyB9OwogCQkwODZBNDAwNjExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2QTQwMDUxMUY2RDZCNzAwMkNFQzUzIC8q
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLzsgfTsKQEAgLTIwMyw2ICsyMDUsOCBA
QAogCQkwOEU2QTJFOTBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkEyRTcwRUVF
MDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhFNkUwRjEw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0
RWxlbWVudC5oICovOyB9OworCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki87IH07CisJCTA4RjJGMDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAw
ODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyB9OwogCQkwQTQ4
NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBT
b2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4
QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBI
ZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpA
QCAtNDg1Nyw4ICs0ODYxLDYgQEAKIAkJQkNCMTZDMkQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZD
MTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzJFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJQkNCMTZDMkYw
OTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0Lmgg
Ki87IH07Ci0JCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
aCAqLzsgfTsKLQkJQkNCNEY4OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I0Rjg5MjBEQjI4RTUzMDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmNwcCAqLzsgfTsKIAkJQkNCNzczNjEwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cCAqLzsgfTsKIAkJQkNCNzczNjIwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
NzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovOyB9Owog
CQlCQ0I3NzM2MzBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3MzYwMEMxNzg1
M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovOyB9OwpAQCAtNTkxNCw2ICs1
OTE2LDggQEAKIAkJMDg1QjA1QzExMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlc0N5
Y2xlU29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5MkI4MEVGREU3
M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxOb29wRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjVDQ0U1MEVEREY1MUIwMERGOUVDMyAvKiBXTUxO
b29wRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxOb29wRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODZBNDAwNTExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk4NCw2ICs1OTg4LDggQEAKIAkJMDhFNkEyRTcw
RUVFMDM1MjAwQUMxMjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MUG9zdGZpZWxkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEZpZWxkU2V0
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTZFMEYwMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEYyRjAwODEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkI4NEIwMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkI4NEIxMEVDRTM3MzMwMERDMDY0RSAv
KiBXTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5
ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNjYxLDggKzEwNjY3LDYgQEAKIAkJQkNCMTZDMTQwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE1MDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTYwOTc5QzNCRDAwNDY3NzQxIC8q
IFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8q
IFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM1RjBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTIzLDggKzE3MTI3LDEw
IEBACiAJCQkJMEZEMzA4RDQxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovLAog
CQkJCUJDRUE0ODM2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgKi8sCiAJCQkJ
QkNFQTQ4MzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCi0JCQkJQkNCNEY4
OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8s
Ci0JCQkJQkNCNEY4OEYwREIyOERENjAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29u
dGVudC5oICovLAorCQkJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLywKKwkJCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5oICovLAorCQkJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8sCisJCQkJMDg2NDFENDYxMjE0MkY3RDAwOERF
OUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi8sCiAJCQkJQTdBQTY2RDQx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgKi8sCiAJCQkJQTdBQTY2RDUx
MUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5oICovLAogCQkJCUJDRUE0ODM4MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuY3BwICovLApAQCAtMTk2NTgsNyArMTk2NjQs
OCBAQAogCQkJCUJDRUE0ODZBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQzMDhENjExN0QxNjg1MDBBNzkxRjcgLyogUmVuZGVySUZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVySW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQjRGODkwMERCMjhERDYwMDM5MTM5QiAv
KiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RjJG
MDBBMTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QUE2NkQ3MTFDNUVENkEwMDFEOEM4QyAv
KiBSZW5kZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1MEQwMjk0MTFE
MEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjIwMSw3ICsyMjIwOCw4IEBACiAJCQkJQkNFQTQ4NjkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckhUTUxDYW52YXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5
MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3NTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNCNEY4
OTMwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwOEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwODY0MUQ0NzEyMTQyRjdEMDA4REU5RjYg
LyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdBQTY2RDYxMUM1RUQ2QTAwMUQ4QzhDIC8qIFJlbmRlckluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg3NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1
dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRl
eCAwYTE1MzIxLi40MjVkMmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKiBzdHlsZSkKIFJlbmRlck9iamVjdCogSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgaWYgKGlzSW1h
Z2VUeXBlKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdl
UmVzb3VyY2U6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRk
ZWRPYmplY3QodGhpcyk7CiB9CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxFbWJlZEVs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
KCk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKCkpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKKyAg
ICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0
Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKaW5kZXggODJlZWFiMS4uMGVjMzViMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFJlbmRlck9iamVjdCogSFRNTEltYWdl
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSoK
ICAgICAgaWYgKHN0eWxlLT5jb250ZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwogCi0gICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdl
KHRoaXMsIFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjphdHRhY2goKQpAQCAtMTkxLDE1ICsxOTEsMTYgQEAgdm9pZCBIVE1MSW1hZ2VF
bGVtZW50OjphdHRhY2goKQogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChy
ZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVyLmhhdmVG
aXJlZEJlZm9yZUxvYWRFdmVudCgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9
IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChpbWFnZU9iai0+aGFzSW1h
Z2UoKSkKKyAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcigpKTsKKyAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNv
dXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgICAgIGlmIChyZW5kZXJJ
bWFnZVJlc291cmNlLT5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
bWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKKyAgICAgICAg
cmVuZGVySW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgp
KTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGltYWdlIGF0IGFsbCBiZWNhdXNlIHdlIGhh
dmUgbm8gc3JjIGF0dHJpYnV0ZSwgc2V0CiAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lk
dGggZm9yIHRoZSBhbHQgdGV4dCBpbnN0ZWFkLgotICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSAmJiAhaW1hZ2VPYmotPmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZU9i
ai0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAg
ICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNjI5ZTA3Yi4uZWIwNDE5ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTE2OSw3ICsxMTY5LDcgQEAgUmVuZGVyT2JqZWN0KiBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRl
clN0eWxlICoKICAgICBjYXNlIEhJRERFTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTUFH
RToKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMpOworICAgICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcywgUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6Y3JlYXRlKCkpOwogICAgIGNhc2UgUkFOR0U6CiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJTbGlkZXIodGhpcyk7CiAgICAgY2FzZSBDT0xPUjoKQEAgLTEyMDgsMTMgKzEyMDgs
MTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphdHRhY2goKQogICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAocmVuZGVyZXIo
KSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgewotICAgICAg
ICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsK
LSAgICAgICAgICAgIGltYWdlT2JqLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFn
ZSgpKTsgCi0gICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFn
ZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgICAgICAgICBSZW5kZXJJbWFnZVJl
c291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2Uo
KTsKKyAgICAgICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1h
Z2VMb2FkZXItPmltYWdlKCkpOyAKKwogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbWFn
ZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRyaWJ1dGUsIHNldAogICAgICAgICAg
ICAgLy8gaW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCi0g
ICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIWltYWdlT2JqLT5jYWNo
ZWRJbWFnZSgpKQotICAgICAgICAgICAgICAgIGltYWdlT2JqLT5zZXRJbWFnZVNpemVGb3JBbHRU
ZXh0KCk7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRl
ckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgcmVuZGVySW1h
Z2UtPnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZGUxZWQ5MS4uYmM5MGZiOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgUmVuZGVyT2JqZWN0ICpIVE1M
T2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSoKICAgICBpZiAobV91c2VGYWxsYmFja0NvbnRlbnQpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CiAgICAgaWYgKGlzSW1hZ2VUeXBl
KCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMsIFJlbmRlckltYWdlUmVzb3Vy
Y2U6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRkZWRPYmpl
Y3QodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZDljN2VjLi4y
MTliYjg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC03OCwxMCArNzgsOCBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRl
cikKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9h
ZGVyKHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsK
LSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFn
ZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGltYWdl
UmVuZGVyZXItPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKLSAgICAg
ICAgfQorICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRl
ci0+aW1hZ2UoKSk7IAogICAgIH0KICNlbmRpZgogfQpAQCAtMTExLDcgKzEwOSw3IEBAIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci5jbGVhcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UoMCk7IAorICAgICAg
ICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0
Q2FjaGVkSW1hZ2UoMCk7IAogICAgICAgICB9CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGF0dHJO
YW1lID09IHdpZHRoQXR0cikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBkMTY5ZDNlLi4yNDJi
Zjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogI2luY2x1ZGUg
IkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIAorI2lmIEVO
QUJMRShTVkcpCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKKyNlbmRpZgorI2lmIEVOQUJM
RShWSURFTykKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2VuZGlmCisKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgYXMgbWVtYmVy
cyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50ZXIgY2hlY2sgd291bGQgYWx3YXlz
IGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEzMCwxMSArMTM3LDggQEAgdm9pZCBJbWFnZUxv
YWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQogICAgICAgICAgICAgb2xkSW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVy
LT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAoUmVuZGVySW1hZ2VS
ZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2UoKSkKKyAgICAgICAg
aW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6
dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtMTk1LDExICsxOTksOCBAQCB2b2lkIEltYWdlTG9hZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVt
ZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPnJlc2V0
QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJl
c291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFnZVJlc291cmNlLT5y
ZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dElnbm9yaW5nUHJldmlvdXNFcnJvcigpCkBAIC0yMjMsMjAgKzIyNCw0MiBAQCB2b2lkIEltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiAgICAgbG9hZEV2ZW50U2Vu
ZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CiB9CiAKK1JlbmRlckltYWdlUmVzb3VyY2Uq
IEltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpOworCisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKQorICAg
ICAgICByZXR1cm4gdG9SZW5kZXJWaWRlbyhyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRl
cmVyKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVu
ZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgIXJlbmRlcmVy
LT5pc1ZpZGVvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlbmRlckltYWdlKiBp
bWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgICAgIAotICAgICAg
ICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGltYWdl
IG9yIGlmIHdoYXQgd2UgaGF2ZQotICAgICAgICAvLyBpcyBhIGNvbXBsZXRlIGltYWdlLiAgVGhp
cyBwcmV2ZW50cyBmbGlja2VyaW5nIGluIHRoZSBjYXNlIHdoZXJlIGEgZHluYW1pYwotICAgICAg
ICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdlcy4KLSAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKLSAg
ICAgICAgaWYgKG1faW1hZ2UgIT0gY2FjaGVkSW1hZ2UgJiYgKG1faW1hZ2VDb21wbGV0ZSB8fCAh
Y2FjaGVkSW1hZ2UpKQotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVz
b3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCk7CisKKyAgICBpZiAoIWltYWdlUmVzb3VyY2Up
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgdXBkYXRlIHRoZSByZW5kZXJlciBpZiBp
dCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYgd2hhdCB3ZSBoYXZlCisgICAgLy8gaXMgYSBj
b21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3aGVy
ZSBhIGR5bmFtaWMKKyAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdl
cy4KKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlLT5jYWNoZWRJ
bWFnZSgpOworICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29tcGxl
dGUgfHwgIWNhY2hlZEltYWdlKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1h
Z2UobV9pbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGlu
Z0JlZm9yZUxvYWRFdmVudCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5oIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCAwMmRkY2U4Li45YmY3NjI0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXI7CitjbGFzcyBS
ZW5kZXJJbWFnZVJlc291cmNlOwogCiBjbGFzcyBJbWFnZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICB2b2lkIGRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudCgpOwogCisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1h
Z2VSZXNvdXJjZSgpOwogICAgIHZvaWQgdXBkYXRlUmVuZGVyZXIoKTsKIAogICAgIEVsZW1lbnQq
IG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyMDczNDc5Li40ZTRk
MGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC01NSwzNSArNTUsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoTm9kZSogbm9kZSkKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShO
b2RlKiBub2RlLCBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGltYWdlUmVzb3VyY2Up
CiAgICAgOiBSZW5kZXJSZXBsYWNlZChub2RlLCBJbnRTaXplKDAsIDApKQotICAgICwgbV9jYWNo
ZWRJbWFnZSgwKQorICAgICwgbV9pbWFnZVJlc291cmNlKGltYWdlUmVzb3VyY2UpCiB7CisgICAg
bV9pbWFnZVJlc291cmNlLT5pbml0aWFsaXplKHRoaXMpOwogICAgIHVwZGF0ZUFsdFRleHQoKTsK
IAogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQog
Ci1SZW5kZXJJbWFnZTo6flJlbmRlckltYWdlKCkKLXsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkK
LSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotCi12b2lkIFJl
bmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCi17Ci0gICAg
aWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkg
ewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGlmICht
X2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBpbWFnZUNoYW5nZWQo
bV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQotfQotCiAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5
aW5nIGVpdGhlciBhbHQgdGV4dCBvciBhbiBpbWFnZSwgYWRkIHNvbWUgcGFkZGluZy4KIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nV2lkdGggPSA0Owogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaHQgPSA0OwpAQCAtMTM1LDIyICsxMTYsMjIgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29u
c3QgSW50UmVjdCogcmVjdCkKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpIHx8IGhhc01h
c2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVj
dCk7Ci0gICAgCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQor
CisgICAgaWYgKG5ld0ltYWdlICE9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSB8fCAhbmV3
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZh
bHNlOwogCiAgICAgLy8gU2V0IGltYWdlIGRpbWVuc2lvbnMsIHRha2luZyBpbnRvIGFjY291bnQg
dGhlIHNpemUgb2YgdGhlIGFsdCB0ZXh0LgotICAgIGlmIChlcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1fY2FjaGVkSW1h
Z2UuZ2V0KCkpOwotICAgIAorICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHNldEltYWdlU2l6ZUZvckFsdFRleHQobV9p
bWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKTsKKwogICAgIGJvb2wgc2hvdWxkUmVwYWludCA9
IHRydWU7CiAKICAgICAvLyBJbWFnZSBkaW1lbnNpb25zIGhhdmUgYmVlbiBjaGFuZ2VkLCBzZWUg
d2hhdCBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8fCBpbWFnZVNpemVDaGFuZ2VkKSB7Ci0gICAg
ICAgIGlmICghZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShp
bWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgaWYgKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgIT0gaW50cmluc2ljU2l6
ZSgpIHx8IGltYWdlU2l6ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUobV9pbWFnZVJl
c291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAKICAgICAgICAg
Ly8gSW4gdGhlIGNhc2Ugb2YgZ2VuZXJhdGVkIGltYWdlIGNvbnRlbnQgdXNpbmcgOmJlZm9yZS86
YWZ0ZXIsIHdlIG1pZ2h0IG5vdCBiZSBpbiB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRyZWUgeWV0
LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNoZWNrIGZvciBs
YXlvdXQsIHNpbmNlIHdlJ2xsIGdldCBhCkBAIC0xODAsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVj
dCogcmVjdCkKICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBj
aGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVzIChwcmUtem9vbWluZyks
CiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0
aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKDEuMGYp
KSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOwogICAgICAgICAg
ICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0cy4KICAgICAgICAgICAg
IHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsKICAgICAgICAgfSBlbHNl
CkBAIC0yMDMsNyArMTg0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIG5ld0ltYWdlKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAm
JiBoYXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2Fj
aGVkSW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlh
bCBjb21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBh
bmQgdGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5k
ZXJlckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzE5Myw2IEBAIHZvaWQgUmVuZGVySW1h
Z2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBuZXdJbWFnZSkKICAgICBVTlVTRURf
UEFSQU0obmV3SW1hZ2UpOwogI2VuZGlmCiB9Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2Uo
KS0+cmVzZXRBbmltYXRpb24oKTsKLSAgICAgICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAg
ICAgICAgcmVwYWludCgpOwotICAgIH0KLX0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyAr
MjA4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dDsKIAotICAgIGlmICghaGFzSW1hZ2UoKSB8fCBlcnJvck9jY3VycmVk
KCkpIHsKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1NSwxNyAr
MjI3LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAgICAgaW50IHVzYWJsZVdpZHRoID0gY1dp
ZHRoIC0gMjsKICAgICAgICAgICAgIGludCB1c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAot
ICAgICAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UoKS0+aXNOdWxsKCkgJiYg
KHVzYWJsZVdpZHRoID49IGltYWdlKCktPndpZHRoKCkpICYmICh1c2FibGVIZWlnaHQgPj0gaW1h
Z2UoKS0+aGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKCk7CisKKyAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9y
T2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53
aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAg
ICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5k
IHBhZGRpbmcuCi0gICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBp
bWFnZSgpLT53aWR0aCgpKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGNlbnRlclggPSAodXNh
YmxlV2lkdGggLSBpbWFnZS0+d2lkdGgoKSkgLyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50
ZXJYIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWCA9IDA7Ci0gICAgICAgICAgICAg
ICAgaW50IGNlbnRlclkgPSAodXNhYmxlSGVpZ2h0IC0gaW1hZ2UoKS0+aGVpZ2h0KCkpIC8gMjsK
KyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2FibGVIZWlnaHQgLSBpbWFnZS0+aGVp
Z2h0KCkpIC8gMjsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAg
ICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlWCA9IGxlZnRCb3Jk
ZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDE7CiAgICAgICAgICAgICAgICAgaW1hZ2VZID0gdG9w
Qm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDE7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKGltYWdlKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UG9pbnQodHggKyBp
bWFnZVgsIHR5ICsgaW1hZ2VZKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFBvaW50KHR4ICsgaW1hZ2VYLCB0eSAr
IGltYWdlWSkpOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjg4LDggKzI2Miw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIHRleHRSdW4sIElu
dFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKLSAg
ICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgfSBlbHNlIGlm
IChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4g
MCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShjV2lkdGgs
IGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMyNSwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dEZvY3VzUmluZ3MoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZQogICAgIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFoYXNJbWFnZSgpIHx8
IGVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9
IDApCisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQo
KSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1nID0gaW1hZ2UocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNl
LT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGlt
Zy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlRWx0ID0gKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNf
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVy
YXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcy0+aW1hZ2UoKSwgcmVj
dC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZShyZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJh
dG9yLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKSwgcmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0K
IAogaW50IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAg
IHJldHVybiBlcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwOwor
ICAgIHJldHVybiBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1Np
emUoKS5oZWlnaHQoKSA6IDA7CiB9CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1h
Z2VNYXAoKSBjb25zdApAQCAtNDQ5LDE4ICs0MjMsMTggQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNI
ZWlnaHRTcGVjaWZpZWQoKSBjb25zdAogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdp
ZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIGlmIChpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSkKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSkKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2IgPSBpc1Bvc2l0aW9uZWQoKSA/IGNv
bnRhaW5lcigpIDogY29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgICAgIGlmIChjYi0+aXNC
b3goKSkKLSAgICAgICAgICAgICAgICBzZXRJbWFnZUNvbnRhaW5lclNpemUoSW50U2l6ZSh0b1Jl
bmRlckJveChjYiktPmF2YWlsYWJsZVdpZHRoKCksIHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxl
SGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlUmVzb3VyY2UtPnNldEltYWdlQ29u
dGFpbmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9S
ZW5kZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOwogICAgICAgICB9CiAKICAgICBpbnQg
d2lkdGg7CiAgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKICAgICAgICAgd2lkdGggPSBjYWxj
UmVwbGFjZWRXaWR0aFVzaW5nKHN0eWxlKCktPndpZHRoKCkpOwotICAgIGVsc2UgaWYgKHVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgd2lkdGggPSBpbWFnZVNpemUoc3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29udGFpbmVy
U2l6ZSgpKQorICAgICAgICB3aWR0aCA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkud2lkdGgoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICB3aWR0aCA9IDA7IC8vIElmIHRo
ZSBpbWFnZSBpcyByZWxhdGl2ZWx5LXNpemVkLCBzZXQgdGhlIHdpZHRoIHRvIDAgdW50aWwgdGhl
cmUgaXMgYSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICB3aWR0aCA9IGNh
bGNBc3BlY3RSYXRpb1dpZHRoKCk7CkBAIC00NzYsOSArNDUwLDkgQEAgaW50IFJlbmRlckltYWdl
OjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogICAgIGludCBoZWlnaHQ7CiAgICAgaWYgKGlz
SGVpZ2h0U3BlY2lmaWVkKCkpCiAgICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVz
aW5nKHN0eWxlKCktPmhlaWdodCgpKTsKLSAgICBlbHNlIGlmICh1c2VzSW1hZ2VDb250YWluZXJT
aXplKCkpCi0gICAgICAgIGhlaWdodCA9IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpLmhlaWdodCgpOwotICAgIGVsc2UgaWYgKGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkKKyAg
ICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKKyAg
ICAgICAgaGVpZ2h0ID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKS5oZWlnaHQoKTsKKyAgICBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaGVpZ2h0ID0gMDsgLy8gSWYgdGhlIGltYWdl
IGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUgaGVpZ2h0IHRvIDAgdW50aWwgdGhlcmUgaXMg
YSBzZXQgY29udGFpbmVyIHNpemUuCiAgICAgZWxzZQogICAgICAgICBoZWlnaHQgPSBjYWxjQXNw
ZWN0UmF0aW9IZWlnaHQoKTsKQEAgLTQ5NCw3ICs0NjgsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNh
bGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3QKICAgICBJbnRTaXplIHNpemUgPSBpbnRyaW5zaWNT
aXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBp
ZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJlc291
cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAg
ICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KICAgICBy
ZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgpICogc2l6ZS53aWR0aCgp
IC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0NzgsNyBAQCBpbnQgUmVuZGVySW1hZ2U6
OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0CiAgICAgSW50U2l6ZSBzaXplID0gaW50cmlu
c2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9pbWFnZVJl
c291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCiAg
ICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6ZS5oZWln
aHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MDMsNCBAQCB2b2lkIFJlbmRlcklt
YWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNlKTsKIH0K
IAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IGI4OWE2NTIuLjZjNzVhODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApA
QCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJJbWFnZV9oCiAjZGVmaW5lIFJlbmRlcklt
YWdlX2gKIAorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJSZXBsYWNlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMywyOCArMzQsMjEgQEAg
Y2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRl
clJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShOb2RlKik7Ci0gICAgdmlydHVh
bCB+UmVuZGVySW1hZ2UoKTsKKyAgICBSZW5kZXJJbWFnZShOb2RlKiwgUGFzc093blB0cjxSZW5k
ZXJJbWFnZVJlc291cmNlPik7CisKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291
cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisgICAgY29uc3QgUmVuZGVy
SW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNv
dXJjZS5nZXQoKTsgfQorICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKTsgfQogCiAgICAgYm9vbCBzZXRJbWFn
ZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDApOwogCiAgICAgdm9pZCB1
cGRhdGVBbHRUZXh0KCk7CiAKLSAgICB2b2lkIHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7
Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZS5nZXQoKTsgfQotCiAgICAgSFRNTE1hcEVsZW1lbnQqIGltYWdlTWFwKCkgY29uc3Q7CiAK
LSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5
UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVySW1hZ2U+Kik7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lkdGggKi8gPSAwLCBpbnQgLyogaGVpZ2h0
ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkg
OiBudWxsSW1hZ2UoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCk7
IH0KLQogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25z
dCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwpAQCAtNjQsMTQgKzU4LDE0IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGlzV2lkdGhTcGVjaWZpZWQoKSBjb25zdDsKICAgICBib29sIGlzSGVpZ2h0
U3BlY2lmaWVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5n
ZWQoKSB7IGltYWdlQ2hhbmdlZChpbWFnZVB0cigpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnRy
aW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQ
dHIoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKIAogICAgIHZpcnR1YWwg
aW50IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0OwpAQCAtODQsMzcgKzc4LDI1IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1ByZWZXaWR0aHMoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKSBjb25zdCB7IGlmIChtX2NhY2hlZEltYWdlKSBtX2NhY2hlZEltYWdlLT5zZXRJbWFnZUNv
bnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZElt
YWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBmYWxzZTsgfQotICAgIHZpcnR1YWwgSW50
U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUoKTsg
fQotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkg
Y29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OwogCi1wcm90ZWN0
ZWQ6Ci0gICAgLy8gVGhlIGltYWdlIHdlIGFyZSByZW5kZXJpbmcuCi0gICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Ci0KIHByaXZhdGU6CiAgICAgLy8g
VGV4dCB0byBkaXNwbGF5IGFzIGxvbmcgYXMgdGhlIGltYWdlIGlzbid0IGF2YWlsYWJsZS4KICAg
ICBTdHJpbmcgbV9hbHRUZXh0OworICAgIE93blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX2lt
YWdlUmVzb3VyY2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOwotICAgIAogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2JzZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVu
ZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAg
IEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihvYmplY3QpOwogfQogCiBpbmxpbmUgY29uc3QgUmVu
ZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCi17IAor
ewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJJbWFnZSgpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVySW1hZ2UqPihvYmplY3QpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZDA1MDguLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCIKLQotI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJTdHlsZUNh
Y2hlZEltYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50OjpSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSogbikKLTogUmVuZGVy
SW1hZ2UobikKLXt9Ci0KLVJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudDo6flJlbmRlckltYWdl
R2VuZXJhdGVkQ29udGVudCgpCi17Ci0gICAgbV9jYWNoZWRJbWFnZSA9IDA7Ci0gICAgbV9zdHls
ZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci19Ci0KLXZvaWQgUmVuZGVySW1hZ2VHZW5lcmF0
ZWRDb250ZW50OjpzZXRTdHlsZUltYWdlKFN0eWxlSW1hZ2UqIGltYWdlKQotewotICAgIGlmIChp
bWFnZS0+aXNDYWNoZWRJbWFnZSgpKQotICAgICAgICBtX2NhY2hlZEltYWdlID0gc3RhdGljX2Nh
c3Q8U3R5bGVDYWNoZWRJbWFnZSo+KGltYWdlKS0+Y2FjaGVkSW1hZ2UoKTsKLSAgICBtX3N0eWxl
SW1hZ2UgPSBpbWFnZTsKLSAgICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4MzMwZC4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50X2gKLSNkZWZpbmUgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50
X2gKLQotI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCi0jaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBT
dHlsZUltYWdlOwotCi1jbGFzcyBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQgOiBwdWJsaWMg
UmVuZGVySW1hZ2UgewotcHVibGljOgotICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChO
b2RlKik7Ci0gICAgdmlydHVhbCB+UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KCk7Ci0gICAg
Ci0gICAgdm9pZCBzZXRTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsKLSAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCi1wcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHcgPSAwLCBpbnQgaCA9IDApIHsgcmV0dXJu
IG1fc3R5bGVJbWFnZS0+aW1hZ2UodGhpcywgSW50U2l6ZSh3LCBoKSk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpOyB9Ci0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QgeyBtX3N0eWxlSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9Ci0gICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUo
ZmxvYXQgbXVsdGlwbGllcikgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUo
dGhpcywgbXVsdGlwbGllcik7IH0KLSAgICAKLSAgICAvLyB8bV9zdHlsZUltYWdlfCBjYW4gYmUg
MCBpZiB3ZSBnZXQgYSBjYWxsYmFjayBmb3IgYSBiYWNrZ3JvdW5kIGltYWdlIGZyb20gUmVuZGVy
T2JqZWN0OjpzZXRTdHlsZS4KLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZSA/IG1fc3R5bGVJbWFnZS0+ZGF0YSgpIDogMDsg
fQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2QxYWFkCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3Jn
PgorICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3Jn
PgorICogQ29weXJpZ2h0IChDKSAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xm
LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgorCisjaW5jbHVk
ZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJJbWFnZVJlc291cmNlOjpSZW5k
ZXJJbWFnZVJlc291cmNlKCkKKyAgICA6IG1fcmVuZGVyZXIoMCkKKyAgICAsIG1fY2FjaGVkSW1h
Z2UoMCkKK3sKK30KKworUmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3VyY2Uo
KQoreworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1v
dmVDbGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5p
dGlhbGl6ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIEFTU0VSVCghbV9yZW5kZXJl
cik7CisgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXI7Cit9
CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2Uq
IG5ld0ltYWdlKQoreworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKKworICAgIGlmIChtX2NhY2hl
ZEltYWdlID09IG5ld0ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jYWNoZWRJ
bWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOwor
ICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkgewor
ICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9yZW5kZXJlcik7CisgICAgICAgIGlm
IChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgICAgICBtX3JlbmRlcmVy
LT5pbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIFJl
bmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9yZW5k
ZXJlcik7CisKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICBpZiAoIW1fcmVuZGVyZXItPm5lZWRz
TGF5b3V0KCkpCisgICAgICAgIG1fcmVuZGVyZXItPnJlcGFpbnQoKTsKK30KKwordm9pZCBSZW5k
ZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY2FjaGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsKK30KKworSW1h
Z2UqIFJlbmRlckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSgpCit7CisgICAgcmV0dXJuIEltYWdl
OjpudWxsSW1hZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc2MDNkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZVJlc291cmNlLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsbGFu
IFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9n
YUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlX2gKKyNkZWZpbmUg
UmVuZGVySW1hZ2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZSA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZSgpOwor
CisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFJlbmRlck9iamVjdCopOworCisgICAg
dm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKyAgICBib29s
IGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQorCisgICAgdm9pZCBy
ZXNldEFuaW1hdGlvbigpOworCisgICAgdmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IC8qIHdpZHRo
ICovID0gMCwgaW50IC8qIGhlaWdodCAqLyA9IDApIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBt
X2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJ
bWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250
YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB1
c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1f
Y2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSA6IGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSA6IGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IDogZmFsc2U7IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlw
bGllcikgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
U2l6ZShtdWx0aXBsaWVyKSA6IEludFNpemUoKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKCk7CisgICAgUmVuZGVyT2JqZWN0
KiBtX3JlbmRlcmVyOworCitwcml2YXRlOgorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBtX2NhY2hlZEltYWdlOworCisgICAgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmU0ZmI1Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwMCBEaXJrIE11ZWxsZXIg
PG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJv
Z2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmgiCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJTdHlsZUNhY2hlZEltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UpCisgICAgOiBtX3N0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkKK3sKKyAg
ICBBU1NFUlQobV9zdHlsZUltYWdlKTsKKworICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzQ2FjaGVk
SW1hZ2UoKSkKKyAgICAgICAgc2V0Q2FjaGVkSW1hZ2Uoc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJ
bWFnZSo+KHN0eWxlSW1hZ2UpLT5jYWNoZWRJbWFnZSgpKTsKK30KKworUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZSgpCit7CisgICAg
bV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxpemUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3sKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKHJlbmRlcmVyKTsKKyAg
ICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudChtX3JlbmRlcmVyKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2ZDhiOQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsbGFuIFNh
bmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBw
YXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZV9oCisj
ZGVmaW5lIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlX2gKKworI2luY2x1ZGUgIlJlbmRl
ckltYWdlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsK
KworY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1h
Z2VSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+
IGNyZWF0ZShTdHlsZUltYWdlKiBzdHlsZUltYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZShzdHlsZUltYWdlKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFJlbmRlck9iamVjdCopOworCisgICAg
dmlydHVhbCBJbWFnZSogaW1hZ2UoaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApIHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UobV9yZW5kZXJlciwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW1h
Z2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdl
LT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdl
Q29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisKKyAgICB2aXJ0
dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpOyB9CisKKyAgICB2
aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+ZGF0YSgpOyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2UoU3R5bGVJbWFnZSopOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0eWxlSW1hZ2U7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJJbWFnZVN0
eWxlSW1hZ2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCmluZGV4IGQ3YjRhOTkuLmNmNjM5
MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBjVGltZVVwZGF0ZVJlcGVhdERlbGF5ID0gMC4yOwogc3RhdGljIGNvbnN0
IGRvdWJsZSBjT3BhY2l0eUFuaW1hdGlvblJlcGVhdERlbGF5ID0gMC4wNTsKIAogUmVuZGVyTWVk
aWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvKQotICAgIDogUmVuZGVySW1h
Z2UodmlkZW8pCisgICAgOiBSZW5kZXJJbWFnZSh2aWRlbywgUmVuZGVySW1hZ2VSZXNvdXJjZTo6
Y3JlYXRlKCkpCiAgICAgLCBtX3RpbWVVcGRhdGVUaW1lcih0aGlzLCAmUmVuZGVyTWVkaWE6OnRp
bWVVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9vcGFjaXR5QW5pbWF0aW9uVGltZXIodGhpcywg
JlJlbmRlck1lZGlhOjpvcGFjaXR5QW5pbWF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fbW91c2VP
dmVyKGZhbHNlKQpAQCAtNjAsNyArNjAsNyBAQCBSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRN
TE1lZGlhRWxlbWVudCogdmlkZW8pCiB9CiAKIFJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1M
TWVkaWFFbGVtZW50KiB2aWRlbywgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKLSAgICA6
IFJlbmRlckltYWdlKHZpZGVvKQorICAgIDogUmVuZGVySW1hZ2UodmlkZW8sIFJlbmRlckltYWdl
UmVzb3VyY2U6OmNyZWF0ZSgpKQogICAgICwgbV90aW1lVXBkYXRlVGltZXIodGhpcywgJlJlbmRl
ck1lZGlhOjp0aW1lVXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fb3BhY2l0eUFuaW1hdGlvblRp
bWVyKHRoaXMsICZSZW5kZXJNZWRpYTo6b3BhY2l0eUFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAg
LCBtX21vdXNlT3ZlcihmYWxzZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDEx
YjQzNzQuLjFiNGM3ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNyAr
NDEsOCBAQAogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRl
ci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1h
Z2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRl
ICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0u
aCIKQEAgLTEwNywxMCArMTA4LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNyZWF0
ZU9iamVjdChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gT3RoZXJ3aXNl
IGFjdHMgYXMgaWYgd2UgZGlkbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogICAgIGNvbnN0IENv
bnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOwogICAgIGlmIChj
b250ZW50RGF0YSAmJiAhY29udGVudERhdGEtPm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFn
ZSgpICYmIGRvYyAhPSBub2RlKSB7Ci0gICAgICAgIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dCogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQobm9kZSk7
CisgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKG5v
ZGUsIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUoY29udGVudERhdGEtPmlt
YWdlKCkpKTsKICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlKTsKLSAgICAgICAgaWYgKFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50RGF0YS0+aW1hZ2UoKSkKLSAgICAgICAgICAg
IGltYWdlLT5zZXRTdHlsZUltYWdlKHN0eWxlSW1hZ2UpOwogICAgICAgICByZXR1cm4gaW1hZ2U7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGls
ZExpc3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApp
bmRleCA2OGUzOTJjLi44YjJjOTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RDaGlsZExpc3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHAKQEAgLTMwLDcgKzMwLDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgi
Ci0jaW5jbHVkZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKQEAgLTQzMCwxMyArNDMxLDEwIEBAIHZvaWQgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBv
d25lciwgUHNldWRvCiAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHBzZXVkb0Vs
ZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENP
TlRFTlRfT0JKRUNUOiB7Ci0gICAgICAgICAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250
ZW50KiBpbWFnZSA9IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlR2VuZXJh
dGVkQ29udGVudChvd25lci0+ZG9jdW1lbnQoKSk7IC8vIGFub255bW91cyBvYmplY3QKKyAgICAg
ICAgICAgICAgICByZW5kZXJlciA9IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlcklt
YWdlKG93bmVyLT5kb2N1bWVudCgpLCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3Jl
YXRlKGNvbnRlbnQtPmltYWdlKCkpKTsgLy8gYW5vbnltb3VzIG9iamVjdAogICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBzZXVkb0VsZW1lbnRTdHlsZSk7Ci0g
ICAgICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBjb250ZW50LT5pbWFnZSgpKQot
ICAgICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShzdHlsZUltYWdlKTsKLSAg
ICAgICAgICAgICAgICByZW5kZXJlciA9IGltYWdlOworICAgICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDT05URU5UX0NPVU5URVI6CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggODkzYTRlYS4uNTZlNTQ4ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50KiBp
bXBsKQotICAgIDogUmVuZGVySW1hZ2UoaW1wbCkKKyAgICA6IFJlbmRlckltYWdlKGltcGwsIFJl
bmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSh0cnVlKQogewogfQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlv
dXQoKQogICAgIH0KIAogICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGVycm9y
T2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDApOworICAgIHNldEhlaWdo
dChpbWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWln
aHQoKSA6IDApOwogCiAgICAgY2FsY1dpZHRoKCk7CiAgICAgY2FsY0hlaWdodCgpOwpAQCAtOTEs
MTQgKzkxLDE1IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQsIGludCkKICAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWludEluZm8pOwog
CiAgICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50
KHRoaXMsIHBhaW50SW5mbykpIHsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVz
b3VyY2UoKS0+aW1hZ2UoKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fbG9j
YWxCb3VuZHM7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZSgpLT53
aWR0aCgpLCBpbWFnZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVj
dCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAgICAg
U1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+
KG5vZGUoKSk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8o
KS5hbGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX05PTkUpCiAgICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8o
KS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVj
dCwgc3JjUmVjdCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGlt
YWdlLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIH0KICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWlu
dEluZm8sIHNhdmVkSW5mby5jb250ZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKaW5kZXggMGY0NDRiMi4uM2Y0ZTJiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlkZW8uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApA
QCAtMTEwLDcgKzExMCw3IEBAIEludFNpemUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNp
Y1NpemUoKQogICAgIGlmIChwbGF5ZXIoKSAmJiB2aWRlby0+cmVhZHlTdGF0ZSgpID49IEhUTUxW
aWRlb0VsZW1lbnQ6OkhBVkVfTUVUQURBVEEpCiAgICAgICAgIHJldHVybiBwbGF5ZXIoKS0+bmF0
dXJhbFNpemUoKTsKIAotICAgIGlmICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkg
JiYgIW1fY2FjaGVkSW1hZ2VTaXplLmlzRW1wdHkoKSAmJiAhZXJyb3JPY2N1cnJlZCgpKQorICAg
IGlmICh2aWRlby0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgJiYgIW1fY2FjaGVkSW1hZ2VT
aXplLmlzRW1wdHkoKSAmJiAhaW1hZ2VSZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkpCiAgICAg
ICAgIHJldHVybiBtX2NhY2hlZEltYWdlU2l6ZTsKIAogICAgIC8vIFdoZW4gdGhlIG5hdHVyYWwg
c2l6ZSBvZiB0aGUgdmlkZW8gaXMgdW5hdmFpbGFibGUsIHdlIHVzZSB0aGUgcHJvdmlkZWQKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM1ZTQ4MDIuLjBlNGZiMTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0
dGFjaCgpCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAg
ICAgaWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVy
ZXIoKSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBpZiAo
aW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFn
ZSgpKTsKKyAgICAgICAgaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci5pbWFnZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d21sL1dNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IGY2YjNmMWUuLjEyYTVkMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgV01MSW1hZ2VFbGVtZW50OjphdHRhY2goKQogCiBSZW5kZXJPYmpl
Y3QqIFdNTEltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMp
OworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzLCBSZW5kZXJJbWFnZVJl
c291cmNlOjpjcmVhdGUoKSk7CiB9CiAKIHZvaWQgV01MSW1hZ2VFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCgpCg==
</data>
<flag name="review"
          id="54347"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="54348"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65714</attachid>
            <date>2010-08-27 07:33:05 -0700</date>
            <delta_ts>2010-09-01 06:55:40 -0700</delta_ts>
            <desc>Patch #1o (add RenderImageResource)</desc>
            <filename>bug-43779.patch</filename>
            <type>text/plain</type>
            <size>70209</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjIxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE2IEBACisyMDEwLTA4LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBw
YXJvZ2EuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAg
ICAgICBBdCB0aGUgbW9tZW50IFJlbmRlclNWR0ltYWdlIGluaGVyaXRzIGZyb20gUmVuZGVySW1h
Z2UsIHdoaWNoIG1ha2VzIG5vbi1TVkcgY29tcGF0aWJsZQorICAgICAgICBhc3N1bXB0aW9ucyBh
Ym91dCByZXBhaW50aW5nLCBhbmQgdGh1cyBoYXMgdG8gYmUgZml4ZWQgdG8gaW5oZXJpdCBmcm9t
IFJlbmRlclNWR01vZGVsT2JqZWN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIENh
Y2hlZEltYWdlIGZyb20gUmVuZGVySW1hZ2UgaW50byBhIHNlcGFyYXRlIGNsYXNzLgorICAgICAg
ICBUaGUgbmV3IGNsYXNzIGNvbnRhaW5zIHRoZSBjb21tb24gYmVoYXZpb3Igb2YgUmVuZGVySW1h
Z2UgYW5kIFJlbmRlclNWR0ltYWdlLgorICAgICAgICBBbiBhZGRpdGlvbmFsIHBhdGNoIHdpbGwg
cmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiBSZW5kZXJJbWFnZSBhdCBSZW5kZXJTVkdJbWFnZS4K
KworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBo
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXR0YWNo
KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OnJlbmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjp+UmVu
ZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNldEltYWdlUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
Om1pbmltdW1SZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
Y2FsY1JlcGxhY2VkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNS
ZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVj
dFJhdGlvV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RS
YXRpb0hlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OmludHJpbnNpY1NpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVySW1h
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjp+
UmVuZGVySW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6
OnNodXRkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OnNldElt
YWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
OjpudWxsSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmNhY2hlZEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6Omhhc0ltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZTo6dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZUhhc1JlbGF0aXZlV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2VQdHIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3du
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
OjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZTo6c2V0SW1hZ2VDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjp1c2VzSW1hZ2VDb250YWluZXJTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZUhhc1Jl
bGF0aXZlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2VQdHIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6UmVu
ZGVyTWVkaWEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCk6
CisgICAgICAgICogd21sL1dNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
TUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKwogMjAxMC0wOC0yNiAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJ
KHdvcmtpbmcgY29weSkKQEAgLTYyMSw3ICs2MjEsOCBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChM
T0NBTF9TUkNfRklMRVMpIFwKIAlyZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIFwK
LQlyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCBcCisJcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIFwKKwlyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCiAJcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
XApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEzODEsNyArMTM4MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKLSAgICByZW5kZXJpbmcv
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcAogICAgIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApJbmRleDogV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIyNjksOCArMjI2OSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggXAotCVdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAotCVdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlLmNwcCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgXAorCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogCVdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIyLDggKzMzMjIsMTAgQEAKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oJywKLSAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcCcsCi0g
ICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oJywKKyAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAnLAorICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgnLAorICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAnLAorICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlckluZGljYXRvci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxMyw3ICsxMDEzLDggQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBcCi0gICAgcmVuZGVyaW5nL1JlbmRlcklt
YWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlLmNwcCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNw
cCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckluZGljYXRvci5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIFwKQEAgLTE4
NDEsNyArMTg0Miw4IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKICAgICByZW5kZXJpbmcv
UmVuZGVySUZyYW1lLmggXAotICAgIHJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaCBcCisgICAgcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW5kaWNhdG9yLmggXAogICAgIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk5NzcsMTEgKzI5OTc3LDE5IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xS
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJJbWFnZUdlbmVy
YXRlZENvbnRlbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwODVC
MDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUIwNUMxMTFGQUUxNkMw
MDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovOyB9OwogCQkwODVCOTJCQTBF
RkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBG
b3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyog
Rm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJMDg2NDFENDcxMjE0MkY3RDAw
OERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlG
NiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi87IH07CisJCTA4NjQxRDQ4
MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3
RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg2NUNDRTYwRURERjUxQjAw
REY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjVDQ0U0MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxl
bWVudC5jcHAgKi87IH07CiAJCTA4NjVDQ0U3MEVEREY1MUIwMERGOUVDMyAvKiBXTUxOb29wRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2
NUNDRTUwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmggKi87IH07CiAJCTA4NkE0
MDA2MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZBNDAwNTExRjZE
NkI3MDAyQ0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwICovOyB9OwpAQCAt
MjAzLDYgKzIwNSw4IEBACiAJCTA4RTZBMkU5MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwOEU2QTJFNzBFRUUwMzUyMDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovOyB9
OwogCQkwOEU2RTBGMTBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEVGMEVG
RjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwICovOyB9OwogCQkwOEU2RTBG
MjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBGMDBFRkY0MkJBMDAwMjlGQkYg
LyogV01MRmllbGRTZXRFbGVtZW50LmggKi87IH07CisJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0
OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCAqLzsgfTsKKwkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEE0ODQ0
OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29m
dExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwQUZEQUMzRDEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMw
MEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAg
LTQ4NTQsOCArNDg1OCw2IEBACiAJCUJDQjE2QzJEMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzE0
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ix
NkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5jcHAgKi87IH07CiAJCUJDQjE2QzJGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxNjA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5oICov
OyB9OwotCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRD
b250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0I0Rjg4RjBEQjI4REQ2MDAzOTEzOUIgLyogUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmgg
Ki87IH07Ci0JCUJDQjRGODkzMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCNEY4OTIwREIyOEU1MzAwMzkxMzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVu
dC5jcHAgKi87IH07CiAJCUJDQjc3MzYxMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAg
Ki87IH07CiAJCUJDQjc3MzYyMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjc3
MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJ
QkNCNzczNjMwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I3NzM2MDBDMTc4NTNE
MDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTU5MTEsNiArNTkx
Myw4IEBACiAJCTA4NUIwNUMxMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNs
ZVNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNE
MDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNTBFRERGNTFCMDBERjlFQzMgLyogV01MTm9v
cEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MTm9vcEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2QTQwMDUxMUY2RDZCNzAwMkNF
QzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5ODEsNiArNTk4NSw4IEBACiAJCTA4RTZBMkU3MEVF
RTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdNTFBvc3RmaWVsZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxGaWVsZFNldEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEU2RTBGMDBFRkY0MkJB
MDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdNTEZpZWxkU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGMkYwMDgxMjEzRTYxNzAwRENF
QzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwOEZCODRCMDBFQ0UzNzMzMDBEQzA2NEUgLyogV01MRWxlbWVudEZhY3RvcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRWxlbWVudEZhY3RvcnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCODRCMTBFQ0UzNzMzMDBEQzA2NEUgLyog
V01MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01M
RWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEE0ODQ0OTgw
Q0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDY1NSw4ICsxMDY2MSw2IEBACiAJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMxNTA5NzlDM0JEMDA0Njc3NDEgLyogUmVxdWVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVxdWVzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2Nzc0MSAvKiBS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBS
ZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDQjRGODkyMERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUYwQzE3ODUzRDAwMTMy
QkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUZpbHRlckN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzExNCw4ICsxNzExOCwxMCBA
QAogCQkJCTBGRDMwOEQ0MTE3RDE2ODQwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLywKIAkJ
CQlCQ0VBNDgzNjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuY3BwICovLAogCQkJCUJD
RUE0ODM3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oICovLAotCQkJCUJDQjRGODky
MERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwICovLAot
CQkJCUJDQjRGODhGMERCMjhERDYwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaCAqLywKKwkJCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAgKi8sCisJCQkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdl
UmVzb3VyY2UuaCAqLywKKwkJCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwICovLAorCQkJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlG
NiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovLAogCQkJCUE3QUE2NkQ0MTFD
NUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwICovLAogCQkJCUE3QUE2NkQ1MTFD
NUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuaCAqLywKIAkJCQlCQ0VBNDgzODA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmNwcCAqLywKQEAgLTE5NjQ3LDcgKzE5NjUzLDgg
QEAKIAkJCQlCQ0VBNDg2QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySFRNTENhbnZhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZEMzA4RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NzYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0I0Rjg5MDBEQjI4REQ2MDAzOTEzOUIgLyog
UmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEYyRjAw
QTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0FBNjZENzExQzVFRDZBMDAxRDhDOEMgLyog
UmVuZGVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTBEMDI5NDExRDBF
N0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guaCBpbiBIZWFkZXJzICovLApAQCAtMjIx
OTAsNyArMjIxOTcsOCBAQAogCQkJCUJDRUE0ODY5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJI
VE1MQ2FudmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDMwOEQ1MTE3RDE2ODUwMEE3OTFG
NyAvKiBSZW5kZXJJRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NzUwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQjRGODkz
MERCMjhFNTMwMDM5MTM5QiAvKiBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDhGMkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8q
IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
QUE2NkQ2MTFDNUVENkEwMDFEOEM4QyAvKiBSZW5kZXJJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFQTQ4NzcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRT
cGVlY2guY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDggKzE1NCwxMSBAQCBib29sIEhUTUxFbWJlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoCiAKIFJlbmRlck9iamVjdCogSFRNTEVtYmVkRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgaWYg
KGlzSW1hZ2VUeXBlKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0
aGlzKTsKKyAgICBpZiAoaXNJbWFnZVR5cGUoKSkgeworICAgICAgICBSZW5kZXJJbWFnZSogaW1h
Z2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgICAgaW1hZ2UtPnNldElt
YWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CisgICAgfQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJFbWJlZGRlZE9i
amVjdCh0aGlzKTsKIH0KIApAQCAtMTc2LDcgKzE3OSw3IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVu
dDo6YXR0YWNoKCkKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsK
IAogICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAgICAg
ICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNo
ZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDkgQEAgUmVu
ZGVyT2JqZWN0KiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVSZQogICAgICBpZiAoc3R5bGUtPmNv
bnRlbnREYXRhKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0
aGlzLCBzdHlsZSk7CiAKLSAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMp
OworICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKHRoaXMp
OworICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0
ZSgpKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0
YWNoKCkKQEAgLTE5MSwxNSArMTkzLDE2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0YWNo
KCkKICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5pc0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRCZWZvcmVMb2Fk
RXZlbnQoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKCkpOwotICAgICAgICBpZiAoaW1hZ2VPYmotPmhhc0ltYWdlKCkpCisgICAgICAg
IFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Cisg
ICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJ
bWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+
aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW1hZ2VPYmotPnNldENh
Y2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CisgICAgICAgIHJlbmRlckltYWdlUmVz
b3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CiAKICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBubyBpbWFnZSBhdCBhbGwgYmVjYXVzZSB3ZSBoYXZlIG5vIHNyYyBhdHRy
aWJ1dGUsIHNldAogICAgICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0
IHRleHQgaW5zdGVhZC4KLSAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIWlt
YWdlT2JqLT5jYWNoZWRJbWFnZSgpKQotICAgICAgICAgICAgaW1hZ2VPYmotPnNldEltYWdlU2l6
ZUZvckFsdFRleHQoKTsKKyAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkgJiYgIXJl
bmRlckltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICByZW5kZXJJbWFn
ZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjgsOCArMTE2OCwxMSBAQCBSZW5k
ZXJPYmplY3QqIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlCiAgICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCh0aGlzKTsKICAgICBjYXNlIEhJRERFTjoK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTUFHRToKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlckltYWdlKHRoaXMpOworICAgIGNhc2UgSU1BR0U6IHsKKyAgICAgICAgUmVuZGVy
SW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgICAgIGlt
YWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KICAgICBjYXNlIFJBTkdFOgogICAgICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyKHRoaXMpOwogICAgIGNhc2UgQ09MT1I6CkBAIC0x
MjA4LDEzICsxMjExLDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAgICAg
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMp
KTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgbV9pbWFnZUxvYWRlci0+aGF2ZUZpcmVkQmVmb3JlTG9hZEV2ZW50
KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFn
ZUxvYWRlci0+aW1hZ2UoKSk7IAotICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5kZXJJbWFn
ZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgICAgICAgICAg
UmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5p
bWFnZVJlc291cmNlKCk7CisgICAgICAgICAgICByZW5kZXJJbWFnZVJlc291cmNlLT5zZXRDYWNo
ZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCisKICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBz
ZXQKICAgICAgICAgICAgIC8vIGltYWdlIGhlaWdodCBhbmQgd2lkdGggZm9yIHRoZSBhbHQgdGV4
dCBpbnN0ZWFkLgotICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLT5pbWFnZSgpICYmICFp
bWFnZU9iai0+Y2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBpbWFnZU9iai0+c2V0SW1h
Z2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLT5pbWFn
ZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAg
ICAgIHJlbmRlckltYWdlLT5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNjYxOTUp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsOCArMTM2LDExIEBAIFJlbmRlck9iamVjdCAqSFRNTE9iamVjdEVsZW1lbnQ6OmNyZWF0
ZVIKIHsKICAgICBpZiAobV91c2VGYWxsYmFja0NvbnRlbnQpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7Ci0gICAgaWYgKGlzSW1hZ2VUeXBl
KCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICBp
ZiAoaXNJbWFnZVR5cGUoKSkgeworICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKKyAgICAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2Uo
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7Cisg
ICAgfQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJFbWJlZGRlZE9iamVjdCh0aGlzKTsK
IH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjYxOTUpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDEwICs3OCw4IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYg
KCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5l
dyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVG
cm9tRWxlbWVudCgpOwotICAgICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgUmVu
ZGVySW1hZ2UqIGltYWdlUmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAg
ICAgICAgICAgaW1hZ2VSZW5kZXJlci0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1h
Z2UoKSk7IAotICAgICAgICB9CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAg
dG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFn
ZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCiAgICAgfQogI2VuZGlmCiB9CkBAIC0xMTEsNyAr
MTA5LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAg
ICAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5j
bGVhcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgdG9S
ZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+c2V0Q2FjaGVkSW1hZ2UoMCk7IAorICAgICAgICAgICAg
ICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVk
SW1hZ2UoMCk7IAogICAgICAgICB9CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09
IHdpZHRoQXR0cikKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDY2MTk1KQor
KysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSwxMyBAQAogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2Uu
aCIKKyNlbmRpZgorI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgor
I2VuZGlmCisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFy
ZSBhbGxvY2F0ZWQgYXMgbWVtYmVycyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50
ZXIgY2hlY2sgd291bGQgYWx3YXlzIGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEzMCwxMSAr
MTM3LDggQEAgdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIAogICAgICAg
ICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpLT5yZXNldEFuaW1hdGlvbigpOwotICAgIH0KKyAgICBpZiAo
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlUmVzb3VyY2Uo
KSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+cmVzZXRBbmltYXRpb24oKTsKIH0KIAogdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtMTk1LDExICsxOTksOCBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmICghcmVuZGVyZXItPmlz
SW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5k
ZXJlciktPnJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChSZW5kZXJJbWFnZVJlc291
cmNlKiBpbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2VSZXNvdXJjZSgpKQorICAgICAgICBpbWFn
ZVJlc291cmNlLT5yZXNldEFuaW1hdGlvbigpOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpCkBAIC0yMjMsMjAgKzIyNCw0MiBA
QCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgbG9hZEV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CiB9CiAKK1JlbmRlckltYWdlUmVzb3Vy
Y2UqIEltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpOworCisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFnZVJlc291cmNlKCk7CisK
KyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdJbWFnZSgpKQorICAgICAg
ICByZXR1cm4gdG9SZW5kZXJTVkdJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKQor
ICAgICAgICByZXR1cm4gdG9SZW5kZXJWaWRlbyhyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZVJl
bmRlcmVyKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+
cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgIXJlbmRl
cmVyLT5pc1ZpZGVvKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlbmRlckltYWdl
KiBpbWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgICAgIAotICAg
ICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgcmVuZGVyZXIgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGlt
YWdlIG9yIGlmIHdoYXQgd2UgaGF2ZQotICAgICAgICAvLyBpcyBhIGNvbXBsZXRlIGltYWdlLiAg
VGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGluIHRoZSBjYXNlIHdoZXJlIGEgZHluYW1pYwotICAg
ICAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGltYWdlcy4KLSAgICAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsK
LSAgICAgICAgaWYgKG1faW1hZ2UgIT0gY2FjaGVkSW1hZ2UgJiYgKG1faW1hZ2VDb21wbGV0ZSB8
fCAhY2FjaGVkSW1hZ2UpKQotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+c2V0Q2FjaGVkSW1h
Z2UobV9pbWFnZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdl
UmVzb3VyY2UgPSByZW5kZXJJbWFnZVJlc291cmNlKCk7CisKKyAgICBpZiAoIWltYWdlUmVzb3Vy
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgdXBkYXRlIHRoZSByZW5kZXJlciBp
ZiBpdCBkb2Vzbid0IGhhdmUgYW4gaW1hZ2Ugb3IgaWYgd2hhdCB3ZSBoYXZlCisgICAgLy8gaXMg
YSBjb21wbGV0ZSBpbWFnZS4gIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBpbiB0aGUgY2FzZSB3
aGVyZSBhIGR5bmFtaWMKKyAgICAvLyBjaGFuZ2UgaXMgaGFwcGVuaW5nIGJldHdlZW4gdHdvIGlt
YWdlcy4KKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlLT5jYWNo
ZWRJbWFnZSgpOworICAgIGlmIChtX2ltYWdlICE9IGNhY2hlZEltYWdlICYmIChtX2ltYWdlQ29t
cGxldGUgfHwgIWNhY2hlZEltYWdlKSkKKyAgICAgICAgaW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVk
SW1hZ2UobV9pbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDY2
MTk1KQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBJbWFnZUxvYWRFdmVudFNlbmRlcjsKK2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2U7CiAKIGNs
YXNzIEltYWdlTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoK
QEAgLTcyLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0JlZm9y
ZUxvYWRFdmVudCgpOwogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50KCk7CiAKKyAg
ICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlKCk7CiAgICAgdm9pZCB1
cGRhdGVSZW5kZXJlcigpOwogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKE5vZGUqIG5v
ZGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChub2RlLCBJbnRTaXplKDAsIDApKQotICAgICwgbV9j
YWNoZWRJbWFnZSgwKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKIApAQCAtNjYsMjIgKzY1LDE1
IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShOb2RlKiBub2RlKQogCiBSZW5kZXJJbWFnZTo6
flJlbmRlckltYWdlKCkKIHsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIEFTU0VSVChtX2ltYWdlUmVzb3VyY2Up
OworICAgIG1faW1hZ2VSZXNvdXJjZS0+c2h1dGRvd24oKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFn
ZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQordm9pZCBSZW5kZXJJbWFn
ZTo6c2V0SW1hZ2VSZXNvdXJjZShQYXNzT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IGltYWdl
UmVzb3VyY2UpCiB7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UgPT0gbmV3SW1hZ2UpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICBp
ZiAobV9jYWNoZWRJbWFnZSkgewotICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhp
cyk7Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAg
ICAgICBpbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7Ci0gICAgfQorICAgIEFTU0VS
VCghbV9pbWFnZVJlc291cmNlKTsKKyAgICBtX2ltYWdlUmVzb3VyY2UgPSBpbWFnZVJlc291cmNl
OworICAgIG1faW1hZ2VSZXNvdXJjZS0+aW5pdGlhbGl6ZSh0aGlzKTsKIH0KIAogLy8gSWYgd2Un
bGwgYmUgZGlzcGxheWluZyBlaXRoZXIgYWx0IHRleHQgb3IgYW4gaW1hZ2UsIGFkZCBzb21lIHBh
ZGRpbmcuCkBAIC0xMzUsMjIgKzEyNywyMiBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5n
ZWQoV3JhcHBlZEltCiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8fCBoYXNNYXNrKCkp
CiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1hZ2UsIHJlY3QpOwot
ICAgIAotICAgIGlmIChuZXdJbWFnZSAhPSBpbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKKworICAg
IGlmIChuZXdJbWFnZSAhPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlUHRyKCkgfHwgIW5ld0ltYWdl
KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsK
IAogICAgIC8vIFNldCBpbWFnZSBkaW1lbnNpb25zLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBz
aXplIG9mIHRoZSBhbHQgdGV4dC4KLSAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBp
bWFnZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChtX2NhY2hlZEltYWdlLmdl
dCgpKTsKLSAgICAKKyAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCisg
ICAgICAgIGltYWdlU2l6ZUNoYW5nZWQgPSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KG1faW1hZ2VS
ZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKSk7CisKICAgICBib29sIHNob3VsZFJlcGFpbnQgPSB0cnVl
OwogCiAgICAgLy8gSW1hZ2UgZGltZW5zaW9ucyBoYXZlIGJlZW4gY2hhbmdlZCwgc2VlIHdoYXQg
bmVlZHMgdG8gYmUgZG9uZQotICAgIGlmIChpbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKSAhPSBpbnRyaW5zaWNTaXplKCkgfHwgaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICBp
ZiAoIWVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUoaW1hZ2VT
aXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICE9IGludHJpbnNpY1NpemUoKSB8
fCBpbWFnZVNpemVDaGFuZ2VkKSB7CisgICAgICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5lcnJv
ck9jY3VycmVkKCkpCisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKG1faW1hZ2VSZXNvdXJj
ZS0+aW1hZ2VTaXplKHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogCiAgICAgICAgIC8vIElu
IHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVy
LCB3ZSBtaWdodCBub3QgYmUgaW4gdGhlCiAgICAgICAgIC8vIHJlbmRlciB0cmVlIHlldC4gIElu
IHRoYXQgY2FzZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBjaGVjayBmb3IgbGF5b3V0
LCBzaW5jZSB3ZSdsbCBnZXQgYQpAQCAtMTgwLDcgKzE3Miw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICAgICAgICAgaWYgKHJlY3QpIHsKICAgICAgICAgICAg
IC8vIFRoZSBpbWFnZSBjaGFuZ2VkIHJlY3QgaXMgaW4gc291cmNlIGltYWdlIGNvb3JkaW5hdGVz
IChwcmUtem9vbWluZyksCiAgICAgICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9m
IHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdCgqcmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAgICAgICAgcmVwYWlu
dFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3Qo
KSkpOwogICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCByZWN0
cy4KICAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgpKTsK
ICAgICAgICAgfSBlbHNlCkBAIC0yMDMsNyArMTk1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKChuZXdJbWFnZSA9PSBtX2NhY2hlZEltYWdlKSAmJiBo
YXNMYXllcigpKSB7CisgICAgaWYgKG5ld0ltYWdlID09IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVk
SW1hZ2UoKSAmJiBoYXNMYXllcigpKSB7CiAgICAgICAgIC8vIHRlbGwgYW55IHBvdGVudGlhbCBj
b21wb3NpdGluZyBsYXllcnMKICAgICAgICAgLy8gdGhhdCB0aGUgaW1hZ2UgaXMgZG9uZSBhbmQg
dGhleSBjYW4gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LgogICAgICAgICBsYXllcigpLT5yZW5kZXJl
ckNvbnRlbnRDaGFuZ2VkKCk7CkBAIC0yMTIsMTUgKzIwNCw2IEBAIHZvaWQgUmVuZGVySW1hZ2U6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFIKICAgICBVTlVTRURfUEFSQU0obmV3SW1hZ2UpOwogI2Vu
ZGlmCiB9Ci0gICAgCi12b2lkIFJlbmRlckltYWdlOjpyZXNldEFuaW1hdGlvbigpCi17Ci0gICAg
aWYgKG1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgaW1hZ2UoKS0+cmVzZXRBbmltYXRpb24oKTsK
LSAgICAgICAgaWYgKCFuZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmVwYWludCgpOwotICAg
IH0KLX0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7CkBAIC0yMzYsNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JP
Y2N1cnJlZCgpKSB7CisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9p
bWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
NTUsMTcgKzIzOCwxOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5m
CiAgICAgICAgICAgICBpbnQgdXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAgICAg
aW50IHVzYWJsZUhlaWdodCA9IGNIZWlnaHQgLSAyOwogCi0gICAgICAgICAgICBpZiAoZXJyb3JP
Y2N1cnJlZCgpICYmICFpbWFnZSgpLT5pc051bGwoKSAmJiAodXNhYmxlV2lkdGggPj0gaW1hZ2Uo
KS0+d2lkdGgoKSkgJiYgKHVzYWJsZUhlaWdodCA+PSBpbWFnZSgpLT5oZWlnaHQoKSkpIHsKKyAg
ICAgICAgICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKworICAg
ICAgICAgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZS0+
aXNOdWxsKCkgJiYgdXNhYmxlV2lkdGggPj0gaW1hZ2UtPndpZHRoKCkgJiYgdXNhYmxlSGVpZ2h0
ID49IGltYWdlLT5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIC8vIENlbnRlciB0aGUgZXJy
b3IgaW1hZ2UsIGFjY291bnRpbmcgZm9yIGJvcmRlciBhbmQgcGFkZGluZy4KLSAgICAgICAgICAg
ICAgICBpbnQgY2VudGVyWCA9ICh1c2FibGVXaWR0aCAtIGltYWdlKCktPndpZHRoKCkpIC8gMjsK
KyAgICAgICAgICAgICAgICBpbnQgY2VudGVyWCA9ICh1c2FibGVXaWR0aCAtIGltYWdlLT53aWR0
aCgpKSAvIDI7CiAgICAgICAgICAgICAgICAgaWYgKGNlbnRlclggPCAwKQogICAgICAgICAgICAg
ICAgICAgICBjZW50ZXJYID0gMDsKLSAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSA9ICh1c2Fi
bGVIZWlnaHQgLSBpbWFnZSgpLT5oZWlnaHQoKSkgLyAyOworICAgICAgICAgICAgICAgIGludCBj
ZW50ZXJZID0gKHVzYWJsZUhlaWdodCAtIGltYWdlLT5oZWlnaHQoKSkgLyAyOwogICAgICAgICAg
ICAgICAgIGlmIChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7
CiAgICAgICAgICAgICAgICAgaW1hZ2VYID0gbGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJY
ICsgMTsKICAgICAgICAgICAgICAgICBpbWFnZVkgPSB0b3BCb3JkZXIgKyB0b3BQYWQgKyBjZW50
ZXJZICsgMTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UoKSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRQb2ludCh0eCArIGltYWdlWCwgdHkgKyBpbWFnZVkpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSwgSW50UG9pbnQodHggKyBpbWFnZVgsIHR5ICsgaW1hZ2VZKSk7CiAgICAgICAgICAg
ICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC0yODgs
OCArMjczLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIHRleHRS
dW4sIEludFBvaW50KGF4LCBheSArIGFzY2VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChoYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDAp
IHsKLSAgICAgICAgSW1hZ2UqIGltZyA9IGltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgfSBl
bHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBjSGVp
Z2h0ID4gMCkgeworICAgICAgICBJbWFnZSogaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShj
V2lkdGgsIGNIZWlnaHQpOwogICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTEsMjIgKzMzNiwyMiBAQCB2b2lkIFJlbmRlckltYWdl
OjpwYWludEZvY3VzUmluZ3MoUGFpbnRJCiAgICAgCiB2b2lkIFJlbmRlckltYWdlOjpwYWludElu
dG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8
PSAwIHx8IHJlY3QuaGVpZ2h0KCkgPD0gMCkKKyAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFz
SW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRo
KCkgPD0gMCB8fCByZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIElt
YWdlKiBpbWcgPSBpbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIEltYWdl
KiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSk7CiAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbHQgPSAobm9kZSgpICYmIG5vZGUoKS0+aGFzVGFn
TmFtZShpbWdUYWcpKSA/IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKCkpIDog
MDsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8g
aW1hZ2VFbHQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250
ZXh0LCB0aGlzLT5pbWFnZSgpLCByZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIHN0eWxlKCktPmNvbG9yU3BhY2Uo
KSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4
dCwgbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpLCByZWN0LnNpemUoKSk7CisgICAgY29udGV4dC0+
ZHJhd0ltYWdlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgdXNl
TG93UXVhbGl0eVNjYWxpbmcpOwogfQogCiBpbnQgUmVuZGVySW1hZ2U6Om1pbmltdW1SZXBsYWNl
ZEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNp
Y1NpemUoKS5oZWlnaHQoKSA6IDA7CisgICAgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMDsKIH0KIAogSFRNTE1hcEVs
ZW1lbnQqIFJlbmRlckltYWdlOjppbWFnZU1hcCgpIGNvbnN0CkBAIC00NDksMTggKzQzNCwxOCBA
QCBib29sIFJlbmRlckltYWdlOjppc0hlaWdodFNwZWNpZmllZCgpIGNvCiAKIGludCBSZW5kZXJJ
bWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQorICAgIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBjYiA9
IGlzUG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiBjb250YWluaW5nQmxvY2soKSkgewogICAg
ICAgICAgICAgaWYgKGNiLT5pc0JveCgpKQotICAgICAgICAgICAgICAgIHNldEltYWdlQ29udGFp
bmVyU2l6ZShJbnRTaXplKHRvUmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlV2lkdGgoKSwgdG9SZW5k
ZXJCb3goY2IpLT5hdmFpbGFibGVIZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIG1faW1hZ2VS
ZXNvdXJjZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKEludFNpemUodG9SZW5kZXJCb3goY2IpLT5h
dmFpbGFibGVXaWR0aCgpLCB0b1JlbmRlckJveChjYiktPmF2YWlsYWJsZUhlaWdodCgpKSk7CiAg
ICAgICAgIH0KIAogICAgIGludCB3aWR0aDsKICAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgpKQog
ICAgICAgICB3aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoc3R5bGUoKS0+d2lkdGgoKSk7
Ci0gICAgZWxzZSBpZiAodXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQotICAgICAgICB3aWR0aCA9
IGltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLndpZHRoKCk7Ci0gICAgZWxzZSBp
ZiAoaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCisgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNl
LT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCisgICAgICAgIHdpZHRoID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpOworICAgIGVs
c2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkpCiAgICAgICAg
IHdpZHRoID0gMDsgLy8gSWYgdGhlIGltYWdlIGlzIHJlbGF0aXZlbHktc2l6ZWQsIHNldCB0aGUg
d2lkdGggdG8gMCB1bnRpbCB0aGVyZSBpcyBhIHNldCBjb250YWluZXIgc2l6ZS4KICAgICBlbHNl
CiAgICAgICAgIHdpZHRoID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsKQEAgLTQ3Niw5ICs0NjEs
OSBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZEhlaWdodCgpIGNvCiAgICAgaW50IGhl
aWdodDsKICAgICBpZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSkKICAgICAgICAgaGVpZ2h0ID0gY2Fs
Y1JlcGxhY2VkSGVpZ2h0VXNpbmcoc3R5bGUoKS0+aGVpZ2h0KCkpOwotICAgIGVsc2UgaWYgKHVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKSkKLSAgICAgICAgaGVpZ2h0ID0gaW1hZ2VTaXplKHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCk7Ci0gICAgZWxzZSBpZiAoaW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpKQorICAgIGVsc2UgaWYgKG1faW1hZ2VSZXNvdXJjZS0+dXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpKQorICAgICAgICBoZWlnaHQgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6
ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpOworICAgIGVsc2UgaWYgKG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpKQogICAgICAgICBoZWlnaHQgPSAw
OyAvLyBJZiB0aGUgaW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSBoZWlnaHQgdG8g
MCB1bnRpbCB0aGVyZSBpcyBhIHNldCBjb250YWluZXIgc2l6ZS4KICAgICBlbHNlCiAgICAgICAg
IGhlaWdodCA9IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpOwpAQCAtNDk0LDcgKzQ3OSw3IEBAIGlu
dCBSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvV2lkdGgoKSAKICAgICBJbnRTaXplIHNpemUg
PSBpbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKCFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1
cm4gMDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICgh
bV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2Nh
bGluZy4KICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhlaWdodCgpICog
c2l6ZS53aWR0aCgpIC8gc2l6ZS5oZWlnaHQoKTsKIH0KQEAgLTUwNCw3ICs0ODksNyBAQCBpbnQg
UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpCiAgICAgSW50U2l6ZSBzaXplID0g
aW50cmluc2ljU2l6ZSgpOwogICAgIGlmICghc2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAoIWhhc0ltYWdlKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmICghbV9p
bWFnZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJl
ZCgpKQogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxp
bmcuCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpICogc2l6
ZS5oZWlnaHQoKSAvIHNpemUud2lkdGgoKTsKIH0KQEAgLTUyOSw5ICs1MTQsNCBAQCB2b2lkIFJl
bmRlckltYWdlOjpjYWxjUHJlZldpZHRocygpCiAgICAgc2V0UHJlZldpZHRoc0RpcnR5KGZhbHNl
KTsKIH0KIAotSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQotewotICAgIHJldHVybiBJ
bWFnZTo6bnVsbEltYWdlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVm
IFJlbmRlckltYWdlX2gKICNkZWZpbmUgUmVuZGVySW1hZ2VfaAogCisjaW5jbHVkZSAiUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDI1ICszNywyMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVySW1hZ2Uo
Tm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlckltYWdlKCk7CiAKKyAgICB2b2lkIHNldEltYWdl
UmVzb3VyY2UoUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPik7CisKKyAgICBSZW5kZXJJ
bWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdl
dCgpOyB9CisgICAgY29uc3QgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQoKTsgfQorICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2Uo
KTsgfQorCiAgICAgYm9vbCBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJ
bWFnZSA9IDApOwogCiAgICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKLSAgICB2b2lkIHNldENh
Y2hlZEltYWdlKENhY2hlZEltYWdlKik7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgSFRNTE1hcEVsZW1l
bnQqIGltYWdlTWFwKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9
Ci0KICAgICB2b2lkIGhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVySW1h
Z2U+Kik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lk
dGggKi8gPSAwLCBpbnQgLyogaGVpZ2h0ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkgOiBudWxsSW1hZ2UoKTsgfQotICAgIHZpcnR1YWwgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCk7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwpAQCAt
NjQsMTQgKzYxLDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzV2lkdGhTcGVjaWZpZWQoKSBj
b25zdDsKICAgICBib29sIGlzSGVpZ2h0U3BlY2lmaWVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSB7IGltYWdlQ2hhbmdlZChpbWFnZVB0cigpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2Vk
KG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2VQdHIoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAKKwogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGludCB0eCwg
aW50IHR5KTsKIAogICAgIHZpcnR1YWwgaW50IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0
OwpAQCAtODQsMzcgKzgxLDI1IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1By
ZWZXaWR0aHMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPnVzZXNJbWFnZUNv
bnRhaW5lclNpemUoKSA6IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFp
bmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdCB7IGlmIChtX2NhY2hlZEltYWdlKSBt
X2NhY2hlZEltYWdlLT5zZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlU2l6ZSht
dWx0aXBsaWVyKSA6IEludFNpemUoKTsgfQotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGlt
YWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQotCiAgICAgaW50
IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hl
aWdodCgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gVGhlIGltYWdlIHdlIGFyZSByZW5k
ZXJpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1h
Z2U7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGV4dCB0byBkaXNwbGF5IGFzIGxvbmcgYXMgdGhlIGlt
YWdlIGlzbid0IGF2YWlsYWJsZS4KICAgICBTdHJpbmcgbV9hbHRUZXh0OworICAgIE93blB0cjxS
ZW5kZXJJbWFnZVJlc291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CiAKLSAgICBzdGF0aWMgSW1hZ2Uq
IG51bGxJbWFnZSgpOwotICAgIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2Jz
ZXJ2ZXI7CiB9OwogCiBpbmxpbmUgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5k
ZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihvYmplY3Qp
OwogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVySW1hZ2UqIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCi17IAorewogICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNSZW5kZXJJbWFnZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVySW1h
Z2UqPihvYmplY3QpOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwCShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgotCi0jaW5jbHVkZSAiUmVu
ZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlN0eWxlQ2Fj
aGVkSW1hZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQ6OlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChOb2RlKiBuKQotOiBSZW5kZXJJ
bWFnZShuKQote30KLQotUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50Ojp+UmVuZGVySW1hZ2VH
ZW5lcmF0ZWRDb250ZW50KCkKLXsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKLSAgICBtX3N0eWxl
SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBSZW5kZXJJbWFnZUdlbmVyYXRl
ZENvbnRlbnQ6OnNldFN0eWxlSW1hZ2UoU3R5bGVJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGlt
YWdlLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2Fz
dDxTdHlsZUNhY2hlZEltYWdlKj4oaW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwotICAgIG1fc3R5bGVJ
bWFnZSA9IGltYWdlOwotICAgIG1fc3R5bGVJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCi19
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRl
bnQuaAkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdl
bmVyYXRlZENvbnRlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCi0jZGVm
aW5lIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudF9oCi0KLSNpbmNsdWRlICJSZW5kZXJJbWFn
ZS5oIgotI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5bGVJbWFnZTsKLQotY2xhc3MgUmVuZGVy
SW1hZ2VHZW5lcmF0ZWRDb250ZW50IDogcHVibGljIFJlbmRlckltYWdlIHsKLXB1YmxpYzoKLSAg
ICBSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQoTm9kZSopOwotICAgIHZpcnR1YWwgflJlbmRl
ckltYWdlR2VuZXJhdGVkQ29udGVudCgpOwotICAgIAotICAgIHZvaWQgc2V0U3R5bGVJbWFnZShT
dHlsZUltYWdlKik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdl
KGludCB3ID0gMCwgaW50IGggPSAwKSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlKHRoaXMs
IEludFNpemUodywgaCkpOyB9Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25z
dCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdl
LT51c2VzSW1hZ2VDb250YWluZXJTaXplKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VD
b250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0IHsgbV9zdHlsZUltYWdlLT5z
ZXRJbWFnZUNvbnRhaW5lclNpemUoc2l6ZSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0K
LSAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKHRoaXMsIG11bHRpcGxpZXIpOyB9Ci0gICAg
Ci0gICAgLy8gfG1fc3R5bGVJbWFnZXwgY2FuIGJlIDAgaWYgd2UgZ2V0IGEgY2FsbGJhY2sgZm9y
IGEgYmFja2dyb3VuZCBpbWFnZSBmcm9tIFJlbmRlck9iamVjdDo6c2V0U3R5bGUuCi0gICAgdmly
dHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1h
Z2UgPyBtX3N0eWxlSW1hZ2UtPmRhdGEoKSA6IDA7IH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8
U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50X2gKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxrZGVAY2Fy
ZXdvbGYuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCisKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlckltYWdlUmVzb3VyY2U6
OlJlbmRlckltYWdlUmVzb3VyY2UoKQorICAgIDogbV9yZW5kZXJlcigwKQorICAgICwgbV9jYWNo
ZWRJbWFnZSgwKQoreworfQorCitSZW5kZXJJbWFnZVJlc291cmNlOjp+UmVuZGVySW1hZ2VSZXNv
dXJjZSgpCit7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6ZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIEFTU0VSVCghbV9yZW5kZXJlcik7CisgICAgQVNT
RVJUKHJlbmRlcmVyKTsKKyAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKK3ZvaWQgUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6c2h1dGRvd24oKQoreworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsK
KworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVD
bGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6c2V0Q2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQoreworICAgIEFTU0VSVChtX3JlbmRlcmVy
KTsKKworICAgIGlmIChtX2NhY2hlZEltYWdlID09IG5ld0ltYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3Zl
Q2xpZW50KG1fcmVuZGVyZXIpOworICAgIG1fY2FjaGVkSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkgeworICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQobV9y
ZW5kZXJlcik7CisgICAgICAgIGlmIChtX2NhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCisg
ICAgICAgICAgICBtX3JlbmRlcmVyLT5pbWFnZUNoYW5nZWQobV9jYWNoZWRJbWFnZS5nZXQoKSk7
CisgICAgfQorfQorCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkK
K3sKKyAgICBBU1NFUlQobV9yZW5kZXJlcik7CisKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGltYWdlKCktPnJlc2V0QW5pbWF0aW9uKCk7CisKKyAgICBp
ZiAoIW1fcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIG1fcmVuZGVyZXItPnJlcGFp
bnQoKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRJbWFnZUNvbnRhaW5lclNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJlcik7
CisKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2Fj
aGVkSW1hZ2UtPnNldEltYWdlQ29udGFpbmVyU2l6ZShzaXplKTsKK30KKworSW1hZ2UqIFJlbmRl
ckltYWdlUmVzb3VyY2U6Om51bGxJbWFnZSgpCit7CisgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8a2RlQGNhcmV3b2xmLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0
cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSZW5kZXJJbWFn
ZVJlc291cmNlX2gKKyNkZWZpbmUgUmVuZGVySW1hZ2VSZXNvdXJjZV9oCisKKyNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgUmVuZGVySW1hZ2VS
ZXNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVu
ZGVySW1hZ2VSZXNvdXJjZSgpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVu
ZGVySW1hZ2VSZXNvdXJjZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUo
UmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB2b2lkIHNodXRkb3duKCk7CisKKyAgICB2b2lk
IHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9CisKKyAgICB2b2lkIHJlc2V0
QW5pbWF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIEltYWdlKiBpbWFnZShpbnQgLyogd2lkdGggKi8g
PSAwLCBpbnQgLyogaGVpZ2h0ICovID0gMCkgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlKCkgOiBudWxsSW1hZ2UoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJv
ck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdl
LT5lcnJvck9jY3VycmVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRJbWFnZUNvbnRhaW5l
clNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNo
ZWRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIDogZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIDogZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgOiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXpl
KG11bHRpcGxpZXIpIDogSW50U2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0
ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0KKworcHJv
dGVjdGVkOgorICAgIFJlbmRlckltYWdlUmVzb3VyY2UoKTsKKyAgICBSZW5kZXJPYmplY3QqIG1f
cmVuZGVyZXI7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVk
SW1hZ2U7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckltYWdlX2gKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmlj
ayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgiCisKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OlJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlKFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCisgICAgOiBtX3N0eWxl
SW1hZ2Uoc3R5bGVJbWFnZSkKK3sKKyAgICBBU1NFUlQobV9zdHlsZUltYWdlKTsKK30KKworUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6On5SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZSgpCit7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmluaXRpYWxp
emUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlOjpp
bml0aWFsaXplKHJlbmRlcmVyKTsKKworICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1h
Z2UoKSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2UqPihtX3N0eWxlSW1hZ2UuZ2V0KCkpLT5jYWNoZWRJbWFnZSgpOworCisgICAgbV9zdHlsZUlt
YWdlLT5hZGRDbGllbnQobV9yZW5kZXJlcik7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2U6OnNodXRkb3duKCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJlcik7CisgICAg
bV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5kZXJlcik7CisgICAgbV9jYWNoZWRJbWFn
ZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gPGtkZUBjYXJld29sZi5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2VfaAorI2Rl
ZmluZSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZV9oCisKKyNpbmNsdWRlICJSZW5kZXJJ
bWFnZVJlc291cmNlLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJPYmplY3Q7CisK
K2NsYXNzIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlIDogcHVibGljIFJlbmRlckltYWdl
UmVzb3VyY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlKCk7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBj
cmVhdGUoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkpOworICAg
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2h1dGRvd24oKTsKKworICAgIHZpcnR1YWwgSW1hZ2UqIGltYWdlKGludCB3aWR0
aCA9IDAsIGludCBoZWlnaHQgPSAwKSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlKG1fcmVu
ZGVyZXIsIEludFNpemUod2lkdGgsIGhlaWdodCkpOyB9CisgICAgdmlydHVhbCBib29sIGVycm9y
T2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKSBjb25zdCB7IG1fc3R5bGVJbWFnZS0+c2V0SW1hZ2VDb250YWluZXJTaXplKHNpemUp
OyB9CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1h
Z2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFz
UmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKTsgfQorCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlU2l6ZShmbG9hdCBt
dWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRl
cmVyLCBtdWx0aXBsaWVyKTsgfQorCisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQ
dHIoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmRhdGEoKTsgfQorCitwcml2YXRlOgor
ICAgIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsKKyAgICBSZWZQ
dHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUmVuZGVySW1hZ2VTdHlsZUltYWdlX2gKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYS5jcHAJKHJldmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIFJlbmRlck1lZGlh
OjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW4KICAgICAsIG1fb3BhY2l0eUFuaW1hdGlvbkZy
b20oMCkKICAgICAsIG1fb3BhY2l0eUFuaW1hdGlvblRvKDEuMGYpCiB7CisgICAgc2V0SW1hZ2VS
ZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiB9CiAKIFJlbmRlck1lZGlh
OjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50KiB2aWRlbywgY29uc3QgSW50U2l6ZSYgaW50
cmluc2ljU2l6ZSkKQEAgLTY5LDYgKzcwLDcgQEAgUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhU
TUxNZWRpYUVsZW1lbgogICAgICwgbV9vcGFjaXR5QW5pbWF0aW9uRnJvbSgwKQogICAgICwgbV9v
cGFjaXR5QW5pbWF0aW9uVG8oMS4wZikKIHsKKyAgICBzZXRJbWFnZVJlc291cmNlKFJlbmRlcklt
YWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKICAgICBzZXRJbnRyaW5zaWNTaXplKGludHJpbnNpY1Np
emUpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDY2
MTk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsOCBAQAogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCi0jaW5jbHVk
ZSAiUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKQEAgLTEwNywxMCArMTA4LDEyIEBAIFJlbmRlck9iamVjdCogUmVuZGVy
T2JqZWN0OjpjcmVhdGVPYmplY3QKICAgICAvLyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3ZSBkaWRu
J3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCiAgICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnRE
YXRhID0gc3R5bGUtPmNvbnRlbnREYXRhKCk7CiAgICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250
ZW50RGF0YS0+bmV4dCgpICYmIGNvbnRlbnREYXRhLT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUp
IHsKLSAgICAgICAgUmVuZGVySW1hZ2VHZW5lcmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAoYXJl
bmEpIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudChub2RlKTsKKyAgICAgICAgUmVuZGVySW1h
Z2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2Uobm9kZSk7CiAgICAgICAgIGltYWdl
LT5zZXRTdHlsZShzdHlsZSk7CiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0g
Y29udGVudERhdGEtPmltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGVJbWFnZShz
dHlsZUltYWdlKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUoc3R5bGVJbWFnZSkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNl
OjpjcmVhdGUoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAkocmV2aXNpb24gNjYxOTUp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgotI2luY2x1
ZGUgIlJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdl
LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlckxpc3RJdGVtLmgiCkBAIC00MzAsMTIgKzQzMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdENo
aWxkTGlzdDo6dXBkYXRlQmVmb3JlCiAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxl
KHBzZXVkb0VsZW1lbnRTdHlsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENPTlRFTlRfT0JKRUNUOiB7Ci0gICAgICAgICAgICAgICAgUmVuZGVySW1hZ2VHZW5l
cmF0ZWRDb250ZW50KiBpbWFnZSA9IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlcklt
YWdlR2VuZXJhdGVkQ29udGVudChvd25lci0+ZG9jdW1lbnQoKSk7IC8vIGFub255bW91cyBvYmpl
Y3QKKyAgICAgICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKG93bmVyLT5yZW5k
ZXJBcmVuYSgpKSBSZW5kZXJJbWFnZShvd25lci0+ZG9jdW1lbnQoKSk7IC8vIGFub255bW91cyBv
YmplY3QKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwc2V1
ZG9FbGVtZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRTdHlsZShzdHlsZS5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0g
Y29udGVudC0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW1h
Z2Uoc3R5bGVJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291
cmNlKFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUoc3R5bGVJbWFnZSkpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEltYWdl
UmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgICAg
IHJlbmRlcmVyID0gaW1hZ2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA2NjE5NSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VF
CiAgICAgOiBSZW5kZXJJbWFnZShpbXBsKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0
cnVlKQogeworICAgIHNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRl
KCkpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQpAQCAtNjIsNyArNjMsNyBA
QCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogICAgIH0KIAogICAgIC8vIG1pbmltdW0g
aGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5o
ZWlnaHQoKSA6IDApOworICAgIHNldEhlaWdodChpbWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJy
ZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6IDApOwogCiAgICAgY2FsY1dpZHRoKCk7
CiAgICAgY2FsY0hlaWdodCgpOwpAQCAtOTEsMTQgKzkyLDE1IEBAIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWlu
dEluZm8pOwogCiAgICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KHRoaXMsIHBhaW50SW5mbykpIHsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9
IGltYWdlUmVzb3VyY2UoKS0+aW1hZ2UoKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVj
dCA9IG1fbG9jYWxCb3VuZHM7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBp
bWFnZSgpLT53aWR0aCgpLCBpbWFnZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAg
ICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdl
RWxlbWVudCo+KG5vZGUoKSk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNw
ZWN0UmF0aW8oKS5hbGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX05PTkUpCiAgICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNlcnZlQXNw
ZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNl
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAg
ICAgIH0KICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0
aGlzLCBwYWludEluZm8sIHNhdmVkSW5mby5jb250ZXh0KTsKICAgICB9CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uY3BwCShyZXZpc2lvbiA2NjE5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIEludFNp
emUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1MKICAgICBpZiAocGxheWVyKCkgJiYg
dmlkZW8tPnJlYWR5U3RhdGUoKSA+PSBIVE1MVmlkZW9FbGVtZW50OjpIQVZFX01FVEFEQVRBKQog
ICAgICAgICByZXR1cm4gcGxheWVyKCktPm5hdHVyYWxTaXplKCk7CiAKLSAgICBpZiAodmlkZW8t
PnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpICYmICFtX2NhY2hlZEltYWdlU2l6ZS5pc0VtcHR5
KCkgJiYgIWVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAodmlkZW8tPnNob3VsZERpc3BsYXlQb3N0
ZXJJbWFnZSgpICYmICFtX2NhY2hlZEltYWdlU2l6ZS5pc0VtcHR5KCkgJiYgIWltYWdlUmVzb3Vy
Y2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRJbWFnZVNpemU7
CiAKICAgICAvLyBXaGVuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIHZpZGVvIGlzIHVuYXZhaWxh
YmxlLCB3ZSB1c2UgdGhlIHByb3ZpZGVkCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY2MTk1KQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0dGFj
aCgpCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAg
aWYgKFJlbmRlclNWR0ltYWdlKiBpbWFnZU9iaiA9IHRvUmVuZGVyU1ZHSW1hZ2UocmVuZGVyZXIo
KSkpIHsKLSAgICAgICAgaWYgKGltYWdlT2JqLT5oYXNJbWFnZSgpKQorICAgICAgICBpZiAoaW1h
Z2VPYmotPmltYWdlUmVzb3VyY2UoKS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpbWFnZU9iai0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci5pbWFnZSgp
KTsKKyAgICAgICAgaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9p
bWFnZUxvYWRlci5pbWFnZSgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvd21sL1dNTElt
YWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gNjYxOTUpCisrKyBXZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDkgQEAgdm9pZCBXTUxJbWFnZUVsZW1lbnQ6
OmF0dGFjaCgpCiAKIFJlbmRlck9iamVjdCogV01MSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChh
cmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CisgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBpbWFnZTsKIH0KIAogdm9p
ZCBXTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
</data>
<flag name="review"
          id="54561"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65735</attachid>
            <date>2010-08-27 11:12:56 -0700</date>
            <delta_ts>2010-08-27 11:18:44 -0700</delta_ts>
            <desc>Patch #2c (remove Remove RenderImage inheritance)</desc>
            <filename>0001-RendererB.patch</filename>
            <type>text/plain</type>
            <size>13049</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDllZDU0OC4uNGFmNWNjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0yOCAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkIGludmFsaWRhdGVz
IHdyb25nIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzc5CisKKyAgICAgICAgUmVtb3ZlIFJlbmRlckltYWdlIGluaGVyaXRhbmNlIGZyb20g
UmVuZGVyU1ZHSW1hZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHA6CisKIDIwMTAtMDgtMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHBhcm9nYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDYyMTRmZmUuLmViZGE0ODQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUsNiArNSw3IEBACiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAg
Q29weXJpZ2h0IChDKSAyMDA5LCBHb29nbGUsIEluYy4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDkg
RGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFBh
dHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IlBvaW50ZXJFdmVudHNIaXRSdWxlcy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNs
dWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKQEAgLTQ0LDEwICs0NiwxNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50
KiBpbXBsKQotICAgIDogUmVuZGVySW1hZ2UoaW1wbCkKKyAgICA6IFJlbmRlclNWR01vZGVsT2Jq
ZWN0KGltcGwpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCisgICAgLCBtX2lt
YWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpCiB7Ci0gICAgc2V0SW1h
Z2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CisgICAgbV9pbWFnZVJl
c291cmNlLT5pbml0aWFsaXplKHRoaXMpOworfQorCitSZW5kZXJTVkdJbWFnZTo6flJlbmRlclNW
R0ltYWdlKCkKK3sKKyAgICBtX2ltYWdlUmVzb3VyY2UtPnNodXRkb3duKCk7CiB9CiAKIHZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCkBAIC02MiwxMiArNzAsNiBAQCB2b2lkIFJlbmRlclNW
R0ltYWdlOjpsYXlvdXQoKQogICAgICAgICBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gZmFsc2U7
CiAgICAgfQogCi0gICAgLy8gbWluaW11bSBoZWlnaHQKLSAgICBzZXRIZWlnaHQoaW1hZ2VSZXNv
dXJjZSgpLT5lcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwKTsK
LQotICAgIGNhbGNXaWR0aCgpOwotICAgIGNhbGNIZWlnaHQoKTsKLQogICAgIC8vIEZJWE1FOiBP
cHRpbWl6ZSBjYWNoaW5nIHRoZSByZXBhaW50IHJlY3RzLgogICAgIG1fbG9jYWxCb3VuZHMgPSBG
bG9hdFJlY3QoaW1hZ2UtPngoKS52YWx1ZShpbWFnZSksIGltYWdlLT55KCkudmFsdWUoaW1hZ2Up
LCBpbWFnZS0+d2lkdGgoKS52YWx1ZShpbWFnZSksIGltYWdlLT5oZWlnaHQoKS52YWx1ZShpbWFn
ZSkpOwogICAgIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdCA9IEZsb2F0UmVjdCgpOwpAQCAtODIs
NTEgKzg0LDQzIEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAKIHZvaWQgUmVuZGVy
U1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNp
YmlsaXR5KCkgPT0gSElEREVOKQorICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpIHx8IHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgIW1faW1hZ2VS
ZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNhdmUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKSk7CisgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKKyAgICBGbG9hdFJlY3Qgbm9uTG9jYWxCb3VuZGluZ0Jv
eCA9IG1fbG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChib3VuZGluZ0JveCk7CisgICAgaWYgKCFub25M
b2NhbEJvdW5kaW5nQm94LmludGVyc2VjdHMocGFpbnRJbmZvLnJlY3QpKQorICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7
Ci0gICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKKyAgICBQYWludEluZm8g
Y2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKKyAgICBib29sIGRyYXdzT3V0bGluZSA9IHN0eWxl
KCktPm91dGxpbmVXaWR0aCgpICYmIChjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
T3V0bGluZSB8fCBjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUp
OworICAgIGlmIChkcmF3c091dGxpbmUgfHwgY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQpIHsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OworICAgICAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShtX2xvY2FsVHJhbnNmb3Jt
KTsKIAotICAgICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudCh0aGlzLCBwYWludEluZm8pKSB7Ci0gICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBpbWFn
ZVJlc291cmNlKCktPmltYWdlKCk7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBt
X2xvY2FsQm91bmRzOwotICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2Ut
PndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChjaGlsZFBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgeworICAgICAgICAgICAgUGFpbnRJbmZvIHNh
dmVkSW5mbyhjaGlsZFBhaW50SW5mbyk7CiAKLSAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCog
aW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAgICAg
ICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAhPSBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQotICAgICAg
ICAgICAgICAgIGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChk
ZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJl
cGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbykpIHsKKyAgICAgICAg
ICAgICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAg
ICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5o
ZWlnaHQoKSk7CiAKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UsIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKLSAgICAgICAgfQotICAg
ICAgICBTVkdSZW5kZXJTdXBwb3J0OjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50
SW5mbywgc2F2ZWRJbmZvLmNvbnRleHQpOwotICAgIH0KKyAgICAgICAgICAgICAgICBTVkdJbWFn
ZUVsZW1lbnQqIGltYWdlRWx0ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5h
bGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X05PTkUpCisgICAgICAgICAgICAgICAgICAgIGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlv
KCkudHJhbnNmb3JtUmVjdChib3VuZGluZ0JveCwgc3JjUmVjdCk7CiAKLSAgICBpZiAoKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKLSAgICAgICAg
cGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7
Ci0KLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwotfQorICAgICAgICAgICAgICAg
IGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFj
ZSwgYm91bmRpbmdCb3gsIHNyY1JlY3QpOworICAgICAgICAgICAgfQogCi12b2lkIFJlbmRlclNW
R0ltYWdlOjpkZXN0cm95KCkKLXsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50RGVzdHJv
eWVkKHRoaXMpOwotICAgIFJlbmRlckltYWdlOjpkZXN0cm95KCk7Ci19CisgICAgICAgICAgICBT
VkdSZW5kZXJTdXBwb3J0OjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIGNoaWxkUGFpbnRJ
bmZvLCBzYXZlZEluZm8uY29udGV4dCk7CisgICAgICAgIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKLXsKLSAgICBSZW5kZXJJbWFnZTo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xk
U3R5bGUpOwotICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQodGhpcywg
ZGlmZiwgc3R5bGUoKSk7Ci19CisgICAgICAgIGlmIChkcmF3c091dGxpbmUpCisgICAgICAgICAg
ICBwYWludE91dGxpbmUoY2hpbGRQYWludEluZm8uY29udGV4dCwgc3RhdGljX2Nhc3Q8aW50Pihi
b3VuZGluZ0JveC54KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LnkoKSksCisgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC53aWR0aCgpKSwgc3RhdGlj
X2Nhc3Q8aW50Pihib3VuZGluZ0JveC5oZWlnaHQoKSkpOwogCi12b2lkIFJlbmRlclNWR0ltYWdl
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCi17Ci0gICAgUmVuZGVySW1hZ2U6OnVwZGF0ZUZyb21FbGVt
ZW50KCk7Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFVwZGF0ZWRGcm9tRWxlbWVudCh0
aGlzLCBzdHlsZSgpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OworICAgIH0KIH0KIAogYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCkBA
IC0xNTQsMTIgKzE0OCw2IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQsIGludCwgaW50LCBpbnQsIEhpdFRlc3RBY3Rp
b24pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiBGbG9hdFJlY3QgUmVuZGVyU1ZHSW1hZ2U6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCkgY29uc3QKIHsKICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBjYWNoZWQgcmVwYWludCBy
ZWN0LCByZXR1cm4gdGhhdApAQCAtMTc0LDggKzE2Miw2IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJ
bWFnZTo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogCiB2b2lkIFJlbmRl
clNWR0ltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRS
ZWN0KiByZWN0KQogewotICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoaW1hZ2UsIHJlY3Qp
OwotCiAgICAgLy8gVGhlIGltYWdlIHJlc291cmNlIGRlZmF1bHRzIHRvIG51bGxJbWFnZSB1bnRp
bCB0aGUgcmVzb3VyY2UgYXJyaXZlcy4KICAgICAvLyBUaGlzIGVtcHR5IGltYWdlIG1heSBiZSBj
YWNoZWQgYnkgU1ZHIHJlc291cmNlcyB3aGljaCBtdXN0IGJlIGludmFsaWRhdGVkLgogICAgIGlm
IChTVkdSZXNvdXJjZXMqIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJPYmplY3QodGhpcykpCkBAIC0xODcsMjEgKzE3Myw2IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IElu
dFJlY3QqIHJlY3QpCiAgICAgcmVwYWludCgpOwogfQogCi1JbnRSZWN0IFJlbmRlclNWR0ltYWdl
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikKLXsKLSAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lcik7Ci19Ci0KLXZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCi17
Ci0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFp
bnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7Ci19Ci0KLXZvaWQgUmVuZGVyU1ZHSW1h
Z2U6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wgZml4ZWQgLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSkgY29uc3QKLXsKLSAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRv
Q29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0
cmFuc2Zvcm1TdGF0ZSk7Ci19Ci0KIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwgaW50KQogewogICAgIC8vIHRoaXMgaXMg
Y2FsbGVkIGZyb20gcGFpbnQoKSBhZnRlciB0aGUgbG9jYWxUcmFuc2Zvcm0gaGFzIGFscmVhZHkg
YmVlbiBhcHBsaWVkCkBAIC0yMTAsMTcgKzE4MSw2IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwgaW50KQogICAgICAg
ICByZWN0cy5hcHBlbmQoY29udGVudFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR0ltYWdlOjph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCwgaW50KQotewotICAgIC8vIFRoaXMg
Y29kZSBwYXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWlu
ZyB1c2VUcmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUg
dXNlZC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCi17Ci0gICAgcXVhZHMu
YXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSkpOwotfQotCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggMzhlM2ExMy4uZGE5NDU2OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5oCkBAIC0zLDYgKzMsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSwgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFy
b2dhQHBhcm9nYS5jb20+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDIwICsyNywyNSBAQAog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNp
bmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgUmVuZGVySW1hZ2VSZXNvdXJjZTsKIGNsYXNzIFNWR0ltYWdlRWxlbWVudDsKIAotY2xhc3Mg
UmVuZGVyU1ZHSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1hZ2UgeworY2xhc3MgUmVuZGVyU1ZHSW1h
Z2UgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgogICAgIFJlbmRlclNW
R0ltYWdlKFNWR0ltYWdlRWxlbWVudCopOworICAgIHZpcnR1YWwgflJlbmRlclNWR0ltYWdlKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNU
cmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKKyAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFn
ZVJlc291cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisgICAgY29uc3Qg
UmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2VSZXNvdXJjZS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbWFnZSI7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTUwLDI4ICs1
NiwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEJvdW5kczsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmLCBib29s
IGZpeGVkID0gZmFsc2UpOwotCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0
eSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29u
c3QgSW50UmVjdCogPSAwKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHBhcmVudFgsIGludCBwYXJlbnRZ
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKLQogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwotICAg
IHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKIAog
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogCkBAIC03OSw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAg
QWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IG1fbG9jYWxC
b3VuZHM7CiAgICAgbXV0YWJsZSBGbG9hdFJlY3QgbV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0Owor
ICAgIE93blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CiB9OwogCiBp
bmxpbmUgUmVuZGVyU1ZHSW1hZ2UqIHRvUmVuZGVyU1ZHSW1hZ2UoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCAzNWM0ZGMz
Li40MzVlMTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAg
LTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTW9zdCByZW5kZXJlcnMg
aW4gdGhlIFNWRyByZW5kZXJpbmcgdHJlZSB3aWxsIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzCi0v
LyBidXQgbm90IGFsbC4gKGUuZy4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCwgUmVuZGVyU1ZHQmxv
Y2ssIFJlbmRlclNWR0ltYWdlKSB0aHVzIG1ldGhvZHMKKy8vIGJ1dCBub3QgYWxsLiAoZS5nLiBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LCBSZW5kZXJTVkdCbG9jaykgdGh1cyBtZXRob2RzCiAvLyBy
ZXF1aXJlZCBieSBTVkcgcmVuZGVycyBuZWVkIHRvIGJlIGRlY2xhcmVkIG9uIFJlbmRlck9iamVj
dCwgYnV0IHNoYXJlZAogLy8gbG9naWMgY2FuIGdvIGluIHRoaXMgY2xhc3Mgb3IgaW4gU1ZHUmVu
ZGVyU3VwcG9ydC4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cCBiL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggMGU0ZmIxMy4uYzEwM2U2
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAi
UmVuZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65739</attachid>
            <date>2010-08-27 11:18:44 -0700</date>
            <delta_ts>2010-08-30 21:02:26 -0700</delta_ts>
            <desc>Patch #2d (remove Remove RenderImage inheritance)</desc>
            <filename>0001-RendererB.patch</filename>
            <type>text/plain</type>
            <size>13599</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">RnJvbSBiMGRhMWI2ZThjNzY1MzhmYmI1NzEyNzk1YjY1YjdkOWM2ZjZhMWVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+
CkRhdGU6IEZyaSwgMjcgQXVnIDIwMTAgMjA6MDY6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBS
ZW5kZXJlckIKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjAgKysrKysKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcCAgICAgfCAg
MTE2ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHSW1hZ2UuaCAgICAgICB8ICAgMjUgKysrLS0tLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaCB8ICAgIDIgKy0KIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAgICAgICAgICAgfCAgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygr
KSwgOTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBkOWVkNTQ4Li40YWY1Y2NhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEw
LTA4LTI4ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckltYWdlOjppbWFn
ZUNoYW5nZWQgaW52YWxpZGF0ZXMgd3JvbmcgYXJlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NzkKKworICAgICAgICBSZW1vdmUgUmVuZGVySW1h
Z2UgaW5oZXJpdGFuY2UgZnJvbSBSZW5kZXJTVkdJbWFnZS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6
UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6On5SZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjppbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKwogMjAxMC0wOC0yNyAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
aWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXgg
NjIxNGZmZS4uNGM1NTliZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcApAQCAt
NSw2ICs1LDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDksIEdvb2dsZSwgSW5jLgogICAg
IENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgog
CiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMiw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFk
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50
c0hpdFJ1bGVzLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtNDQsMTAgKzQ2LDE2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShT
VkdJbWFnZUVsZW1lbnQqIGltcGwpCi0gICAgOiBSZW5kZXJJbWFnZShpbXBsKQorICAgIDogUmVu
ZGVyU1ZHTW9kZWxPYmplY3QoaW1wbCkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1
ZSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkK
IHsKLSAgICBzZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsK
KyAgICBtX2ltYWdlUmVzb3VyY2UtPmluaXRpYWxpemUodGhpcyk7Cit9CisKK1JlbmRlclNWR0lt
YWdlOjp+UmVuZGVyU1ZHSW1hZ2UoKQoreworICAgIG1faW1hZ2VSZXNvdXJjZS0+c2h1dGRvd24o
KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKQEAgLTYyLDEyICs3MCw2IEBA
IHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAgICAgICAgIG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgPSBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBtaW5pbXVtIGhlaWdodAotICAgIHNldEhl
aWdodChpbWFnZVJlc291cmNlKCktPmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5o
ZWlnaHQoKSA6IDApOwotCi0gICAgY2FsY1dpZHRoKCk7Ci0gICAgY2FsY0hlaWdodCgpOwotCiAg
ICAgLy8gRklYTUU6IE9wdGltaXplIGNhY2hpbmcgdGhlIHJlcGFpbnQgcmVjdHMuCiAgICAgbV9s
b2NhbEJvdW5kcyA9IEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKGltYWdlKSwgaW1hZ2UtPnko
KS52YWx1ZShpbWFnZSksIGltYWdlLT53aWR0aCgpLnZhbHVlKGltYWdlKSwgaW1hZ2UtPmhlaWdo
dCgpLnZhbHVlKGltYWdlKSk7CiAgICAgbV9jYWNoZWRMb2NhbFJlcGFpbnRSZWN0ID0gRmxvYXRS
ZWN0KCk7CkBAIC04Miw1MSArODQsNDMgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkK
IAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCwg
aW50KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IEhJRERF
TiB8fCAhbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25j
YXRDVE0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdC
b3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOworICAgIEZsb2F0UmVjdCBub25M
b2NhbEJvdW5kaW5nQm94ID0gbV9sb2NhbFRyYW5zZm9ybS5tYXBSZWN0KGJvdW5kaW5nQm94KTsK
KyAgICBpZiAoIW5vbkxvY2FsQm91bmRpbmdCb3guaW50ZXJzZWN0cyhwYWludEluZm8ucmVjdCkp
CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpIHsKLSAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWludEluZm8pOwor
ICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOworICAgIGJvb2wgZHJhd3NP
dXRsaW5lID0gc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgKGNoaWxkUGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2VTZWxmT3V0bGluZSk7CisgICAgaWYgKGRyYXdzT3V0bGluZSB8fCBjaGlsZFBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgeworICAgICAgICBjaGlsZFBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKG1f
bG9jYWxUcmFuc2Zvcm0pOwogCi0gICAgICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0OjpwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbykpIHsKLSAgICAgICAgICAgIEltYWdl
KiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS0+aW1hZ2UoKTsKLSAgICAgICAgICAgIEZsb2F0UmVj
dCBkZXN0UmVjdCA9IG1fbG9jYWxCb3VuZHM7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVj
dCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGNo
aWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CisgICAgICAgICAg
ICBQYWludEluZm8gc2F2ZWRJbmZvKGNoaWxkUGFpbnRJbmZvKTsKIAotICAgICAgICAgICAgU1ZH
SW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5v
ZGUoKSk7Ci0gICAgICAgICAgICBpZiAoaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5h
bGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X05PTkUpCi0gICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50
cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgICAgIGlmIChTVkdSZW5k
ZXJTdXBwb3J0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIGNoaWxkUGFpbnRJbmZv
KSkgeworICAgICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKTsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lk
dGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwot
ICAgICAgICB9Ci0gICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRl
bnQodGhpcywgcGFpbnRJbmZvLCBzYXZlZEluZm8uY29udGV4dCk7Ci0gICAgfQorICAgICAgICAg
ICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVs
ZW1lbnQqPihub2RlKCkpOworICAgICAgICAgICAgICAgIGlmIChpbWFnZUVsdC0+cHJlc2VydmVB
c3BlY3RSYXRpbygpLmFsaWduKCkgIT0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fTk9ORSkKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VFbHQtPnByZXNl
cnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGJvdW5kaW5nQm94LCBzcmNSZWN0KTsKIAot
ICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0
aCgpKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIDAsIDAsIHdpZHRo
KCksIGhlaWdodCgpKTsKLQotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Ci19Cisg
ICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBE
ZXZpY2VDb2xvclNwYWNlLCBib3VuZGluZ0JveCwgc3JjUmVjdCk7CisgICAgICAgICAgICB9CiAK
LXZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmRlc3Ryb3koKQotewotICAgIFNWR1Jlc291cmNlc0NhY2hl
OjpjbGllbnREZXN0cm95ZWQodGhpcyk7Ci0gICAgUmVuZGVySW1hZ2U6OmRlc3Ryb3koKTsKLX0K
KyAgICAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhp
cywgY2hpbGRQYWludEluZm8sIHNhdmVkSW5mby5jb250ZXh0KTsKKyAgICAgICAgfQogCi12b2lk
IFJlbmRlclNWR0ltYWdlOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQotewotICAgIFJlbmRlckltYWdlOjpzdHlsZURpZENo
YW5nZShkaWZmLCBvbGRTdHlsZSk7Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFN0eWxl
Q2hhbmdlZCh0aGlzLCBkaWZmLCBzdHlsZSgpKTsKLX0KKyAgICAgICAgaWYgKGRyYXdzT3V0bGlu
ZSkKKyAgICAgICAgICAgIHBhaW50T3V0bGluZShjaGlsZFBhaW50SW5mby5jb250ZXh0LCBzdGF0
aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LngoKSksIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdC
b3gueSgpKSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94Lndp
ZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LmhlaWdodCgpKSk7CiAKLXZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OnVwZGF0ZUZyb21FbGVtZW50KCkKLXsKLSAgICBSZW5kZXJJbWFnZTo6
dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50VXBkYXRl
ZEZyb21FbGVtZW50KHRoaXMsIHN0eWxlKCkpOworICAgICAgICBjaGlsZFBhaW50SW5mby5jb250
ZXh0LT5yZXN0b3JlKCk7CisgICAgfQogfQogCiBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24gaGl0
VGVzdEFjdGlvbikKQEAgLTE1NCwxMiArMTQ4LDYgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCwgaW50LCBpbnQsIGlu
dCwgSGl0VGVzdEFjdGlvbikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogewogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGNh
Y2hlZCByZXBhaW50IHJlY3QsIHJldHVybiB0aGF0CkBAIC0xNzQsOCArMTYyLDYgQEAgRmxvYXRS
ZWN0IFJlbmRlclNWR0ltYWdlOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0
CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1h
Z2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7Ci0gICAgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdl
ZChpbWFnZSwgcmVjdCk7Ci0KICAgICAvLyBUaGUgaW1hZ2UgcmVzb3VyY2UgZGVmYXVsdHMgdG8g
bnVsbEltYWdlIHVudGlsIHRoZSByZXNvdXJjZSBhcnJpdmVzLgogICAgIC8vIFRoaXMgZW1wdHkg
aW1hZ2UgbWF5IGJlIGNhY2hlZCBieSBTVkcgcmVzb3VyY2VzIHdoaWNoIG11c3QgYmUgaW52YWxp
ZGF0ZWQuCiAgICAgaWYgKFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdCh0aGlzKSkKQEAgLTE4NywyMSArMTcz
LDYgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBp
bWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICByZXBhaW50KCk7CiB9CiAKLUludFJlY3Qg
UmVuZGVyU1ZHSW1hZ2U6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBw
b3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVy
KTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJbWFnZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50UmVjdCwg
Ym9vbCBmaXhlZCkKLXsKLSAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlUmVjdEZvclJlcGFp
bnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKLX0KLQotdm9p
ZCBSZW5kZXJTVkdJbWFnZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCAsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIFNWR1JlbmRlclN1cHBv
cnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVz
ZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKLX0KLQogdm9pZCBSZW5kZXJTVkdJbWFnZTo6
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCiB7CiAg
ICAgLy8gdGhpcyBpcyBjYWxsZWQgZnJvbSBwYWludCgpIGFmdGVyIHRoZSBsb2NhbFRyYW5zZm9y
bSBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQKQEAgLTIxMCwxNyArMTgxLDYgQEAgdm9pZCBSZW5k
ZXJTVkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50
LCBpbnQpCiAgICAgICAgIHJlY3RzLmFwcGVuZChjb250ZW50UmVjdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50LCBpbnQpCi17
Ci0gICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFz
IHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1
YWRzIHNob3VsZCBiZSB1c2VkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykK
LXsKLSAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0Jv
eCgpKSk7Ci19Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAppbmRleCAzOGUzYTEzLi5kYTk0NTY4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKQEAgLTMsNiArMyw3IEBACiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYs
MjAgKzI3LDI1IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwogY2xhc3MgU1ZHSW1hZ2VFbGVt
ZW50OwogCi1jbGFzcyBSZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CitjbGFz
cyBSZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50Kik7CisgICAgdmlydHVhbCB+UmVu
ZGVyU1ZHSW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAorICAgIFJlbmRlckltYWdl
UmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7
IH0KKyAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdl
IjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpAQCAtNTAsMjggKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ry
b2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQm91bmRzOyB9CiAgICAgdmly
dHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
SW50UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwotCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBp
bnQgdHkpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYs
IGludCB0eCwgaW50IHR5KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBl
ZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgcGFyZW50
WCwgaW50IHBhcmVudFkpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotCiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVz
dEFjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRl
c3RBY3Rpb24pOwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKQEAgLTc5LDYgKzczLDcgQEAg
cHJpdmF0ZToKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBGbG9h
dFJlY3QgbV9sb2NhbEJvdW5kczsKICAgICBtdXRhYmxlIEZsb2F0UmVjdCBtX2NhY2hlZExvY2Fs
UmVwYWludFJlY3Q7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNv
dXJjZTsKIH07CiAKIGlubGluZSBSZW5kZXJTVkdJbWFnZSogdG9SZW5kZXJTVkdJbWFnZShSZW5k
ZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R01vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CmluZGV4IDM1YzRkYzMuLjQzNWUxMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBN
b3N0IHJlbmRlcmVycyBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlIHdpbGwgaW5oZXJpdCBmcm9t
IHRoaXMgY2xhc3MKLS8vIGJ1dCBub3QgYWxsLiAoZS5nLiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
LCBSZW5kZXJTVkdCbG9jaywgUmVuZGVyU1ZHSW1hZ2UpIHRodXMgbWV0aG9kcworLy8gYnV0IG5v
dCBhbGwuIChlLmcuIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QsIFJlbmRlclNWR0Jsb2NrKSB0aHVz
IG1ldGhvZHMKIC8vIHJlcXVpcmVkIGJ5IFNWRyByZW5kZXJzIG5lZWQgdG8gYmUgZGVjbGFyZWQg
b24gUmVuZGVyT2JqZWN0LCBidXQgc2hhcmVkCiAvLyBsb2dpYyBjYW4gZ28gaW4gdGhpcyBjbGFz
cyBvciBpbiBTVkdSZW5kZXJTdXBwb3J0LgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCAw
ZTRmYjEzLi5jMTAzZTZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0Rv
Y3VtZW50LmgiCi0tIAoxLjcuMC4yLm1zeXNnaXQuMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66010</attachid>
            <date>2010-08-30 21:02:26 -0700</date>
            <delta_ts>2010-09-01 06:55:40 -0700</delta_ts>
            <desc>Patch #2e (remove Remove RenderImage inheritance)</desc>
            <filename>0001-RenderSVGImage.patch</filename>
            <type>text/plain</type>
            <size>13648</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGRjZDUyZS4uNzEzY2E5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0zMCAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkIGludmFsaWRhdGVz
IHdyb25nIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzc5CisKKyAgICAgICAgUmVtb3ZlIFJlbmRlckltYWdlIGluaGVyaXRhbmNlIGZyb20g
UmVuZGVyU1ZHSW1hZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHA6CisKIDIwMTAtMDgtMzAgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNWUzMDQ2NS4uNWE1MDI3NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNSw2ICs1LDcgQEAKICAgICBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDkgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmln
aHQgKEMpIDIwMDksIEdvb2dsZSwgSW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNj
aHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBH
YW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMiw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgiCisjaW5jbHVkZSAiUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oIgpAQCAtNDQsMTAgKzQ2LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJl
bmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQqIGltcGwpCi0gICAg
OiBSZW5kZXJJbWFnZShpbXBsKQorICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoaW1wbCkKICAg
ICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShS
ZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkKIHsKLSAgICBzZXRJbWFnZVJlc291cmNlKFJl
bmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKKyAgICBtX2ltYWdlUmVzb3VyY2UtPmluaXRp
YWxpemUodGhpcyk7Cit9CisKK1JlbmRlclNWR0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UoKQorewor
ICAgIG1faW1hZ2VSZXNvdXJjZS0+c2h1dGRvd24oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6bGF5b3V0KCkKQEAgLTY0LDEyICs3Miw2IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91
dCgpCiAgICAgICAgIHVwZGF0ZUNhY2hlZEJvdW5kYXJpZXNJblBhcmVudHMgPSB0cnVlOwogICAg
IH0KIAotICAgIC8vIG1pbmltdW0gaGVpZ2h0Ci0gICAgc2V0SGVpZ2h0KGltYWdlUmVzb3VyY2Uo
KS0+ZXJyb3JPY2N1cnJlZCgpID8gaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpIDogMCk7Ci0KLSAg
ICBjYWxjV2lkdGgoKTsKLSAgICBjYWxjSGVpZ2h0KCk7Ci0KICAgICAvLyBGSVhNRTogT3B0aW1p
emUgY2FjaGluZyB0aGUgcmVwYWludCByZWN0cy4KICAgICBGbG9hdFJlY3Qgb2xkQm91bmRhcmll
cyA9IG1fbG9jYWxCb3VuZHM7CiAgICAgbV9sb2NhbEJvdW5kcyA9IEZsb2F0UmVjdChpbWFnZS0+
eCgpLnZhbHVlKGltYWdlKSwgaW1hZ2UtPnkoKS52YWx1ZShpbWFnZSksIGltYWdlLT53aWR0aCgp
LnZhbHVlKGltYWdlKSwgaW1hZ2UtPmhlaWdodCgpLnZhbHVlKGltYWdlKSk7CkBAIC04NCw3ICs4
Niw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAKICAgICAvLyBJZiBvdXIgYm91
bmRzIGNoYW5nZWQsIG5vdGlmeSB0aGUgcGFyZW50cy4KICAgICBpZiAodXBkYXRlQ2FjaGVkQm91
bmRhcmllc0luUGFyZW50cykKLSAgICAgICAgUmVuZGVySW1hZ2U6OnNldE5lZWRzQm91bmRhcmll
c1VwZGF0ZSgpOworICAgICAgICBSZW5kZXJTVkdNb2RlbE9iamVjdDo6c2V0TmVlZHNCb3VuZGFy
aWVzVXBkYXRlKCk7CiAKICAgICByZXBhaW50ZXIucmVwYWludEFmdGVyTGF5b3V0KCk7CiAgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOwpAQCAtOTIsNTggKzk0LDQyIEBAIHZvaWQgUmVuZGVyU1ZH
SW1hZ2U6OmxheW91dCgpCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQsIGludCkKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgIGlm
IChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBISURERU4gfHwgIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSk7Ci0KLSAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7Ci0gICAgICAgIFBh
aW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKLQotICAgICAgICBpZiAoU1ZHUmVuZGVyU3Vw
cG9ydDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8pKSB7Ci0gICAg
ICAgICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCktPmltYWdlKCk7Ci0gICAgICAg
ICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX2xvY2FsQm91bmRzOwotICAgICAgICAgICAgRmxv
YXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7Ci0K
LSAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxTVkdJ
bWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2
ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19OT05FKQotICAgICAgICAgICAgICAgIGltYWdlRWx0LT5wcmVzZXJ2
ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKKyAg
ICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBhaW50SW5mb0ludGVyc2VjdHNSZXBhaW50UmVjdChi
b3VuZGluZ0JveCwgbV9sb2NhbFRyYW5zZm9ybSwgcGFpbnRJbmZvKSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZp
Y2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgU1ZH
UmVuZGVyU3VwcG9ydDo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8sIHNh
dmVkSW5mby5jb250ZXh0KTsKLSAgICB9CisgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBh
aW50SW5mbyk7CisgICAgYm9vbCBkcmF3c091dGxpbmUgPSBzdHlsZSgpLT5vdXRsaW5lV2lkdGgo
KSAmJiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgY2hpbGRQ
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKTsKKyAgICBpZiAoZHJhd3NP
dXRsaW5lIHx8IGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7
CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgY2hpbGRQ
YWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9ybSk7CiAKLSAgICBpZiAoKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKLSAgICAg
ICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWlnaHQo
KSk7CisgICAgICAgIGlmIChjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdy
b3VuZCkgeworICAgICAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhjaGlsZFBhaW50SW5mbyk7
CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwotfQorICAgICAgICAgICAgaWYg
KFNWR1JlbmRlclN1cHBvcnQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQ
YWludEluZm8pKSB7CisgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGlt
YWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCi12b2lkIFJlbmRlclNWR0ltYWdlOjpk
ZXN0cm95KCkKLXsKLSAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50RGVzdHJveWVkKHRoaXMp
OwotICAgIFJlbmRlckltYWdlOjpkZXN0cm95KCk7Ci19CisgICAgICAgICAgICAgICAgU1ZHSW1h
Z2VFbGVtZW50KiBpbWFnZUVsdCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUo
KSk7CisgICAgICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCku
YWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19OT05FKQorICAgICAgICAgICAgICAgICAgICBpbWFnZUVsdC0+cHJlc2VydmVBc3BlY3RSYXRp
bygpLnRyYW5zZm9ybVJlY3QoYm91bmRpbmdCb3gsIHNyY1JlY3QpOwogCi12b2lkIFJlbmRlclNW
R0ltYWdlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRl
clN0eWxlKiBuZXdTdHlsZSkKLXsKLSAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlv
dXQpCi0gICAgICAgIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOwotICAgIFJlbmRlckltYWdl
OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwotfQorICAgICAgICAgICAgICAgIGNo
aWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwg
Ym91bmRpbmdCb3gsIHNyY1JlY3QpOworICAgICAgICAgICAgfQogCi12b2lkIFJlbmRlclNWR0lt
YWdlOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKQotewotICAgIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShkaWZmLCBv
bGRTdHlsZSk7Ci0gICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFN0eWxlQ2hhbmdlZCh0aGlz
LCBkaWZmLCBzdHlsZSgpKTsKLX0KKyAgICAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlz
aFJlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8sIHNhdmVkSW5mby5jb250ZXh0
KTsKKyAgICAgICAgfQogCi12b2lkIFJlbmRlclNWR0ltYWdlOjp1cGRhdGVGcm9tRWxlbWVudCgp
Ci17Ci0gICAgUmVuZGVySW1hZ2U6OnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgU1ZHUmVzb3Vy
Y2VzQ2FjaGU6OmNsaWVudFVwZGF0ZWRGcm9tRWxlbWVudCh0aGlzLCBzdHlsZSgpKTsKKyAgICAg
ICAgaWYgKGRyYXdzT3V0bGluZSkKKyAgICAgICAgICAgIHBhaW50T3V0bGluZShjaGlsZFBhaW50
SW5mby5jb250ZXh0LCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LngoKSksIHN0YXRpY19j
YXN0PGludD4oYm91bmRpbmdCb3gueSgpKSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KGJvdW5kaW5nQm94LndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94Lmhl
aWdodCgpKSk7CisgICAgICAgIAorICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CisgICAgfQogfQogCiBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlv
bikKQEAgLTE3MSwxMiArMTU3LDYgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCwgaW50LCBpbnQsIGludCwgSGl0VGVz
dEFjdGlvbikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKSBjb25zdAogewogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGNhY2hlZCByZXBh
aW50IHJlY3QsIHJldHVybiB0aGF0CkBAIC0xOTEsOCArMTcxLDYgQEAgRmxvYXRSZWN0IFJlbmRl
clNWR0ltYWdlOjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiAKIHZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0
IEludFJlY3QqIHJlY3QpCiB7Ci0gICAgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChpbWFnZSwg
cmVjdCk7Ci0KICAgICAvLyBUaGUgaW1hZ2UgcmVzb3VyY2UgZGVmYXVsdHMgdG8gbnVsbEltYWdl
IHVudGlsIHRoZSByZXNvdXJjZSBhcnJpdmVzLgogICAgIC8vIFRoaXMgZW1wdHkgaW1hZ2UgbWF5
IGJlIGNhY2hlZCBieSBTVkcgcmVzb3VyY2VzIHdoaWNoIG11c3QgYmUgaW52YWxpZGF0ZWQuCiAg
ICAgaWYgKFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlck9iamVjdCh0aGlzKSkKQEAgLTIwNCwyMSArMTgyLDYgQEAgdm9p
ZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29u
c3QgSW50UmVjdCogcmVjdCkKICAgICByZXBhaW50KCk7CiB9CiAKLUludFJlY3QgUmVuZGVyU1ZH
SW1hZ2U6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKQotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyKTsKLX0KLQot
dm9pZCBSZW5kZXJTVkdJbWFnZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhl
ZCkKLXsKLSAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKLX0KLQotdm9pZCBSZW5kZXJT
VkdJbWFnZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCBmaXhlZCAsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExv
Y2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVzZVRyYW5zZm9y
bXMsIHRyYW5zZm9ybVN0YXRlKTsKLX0KLQogdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCiB7CiAgICAgLy8gdGhp
cyBpcyBjYWxsZWQgZnJvbSBwYWludCgpIGFmdGVyIHRoZSBsb2NhbFRyYW5zZm9ybSBoYXMgYWxy
ZWFkeSBiZWVuIGFwcGxpZWQKQEAgLTIyNywxNyArMTkwLDYgQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCiAg
ICAgICAgIHJlY3RzLmFwcGVuZChjb250ZW50UmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50LCBpbnQpCi17Ci0gICAgLy8g
VGhpcyBjb2RlIHBhdGggc2hvdWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFz
c3VtaW5nIHVzZVRyYW5zZm9ybXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3Vs
ZCBiZSB1c2VkLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFJlbmRlclNW
R0ltYWdlOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKLXsKLSAgICBx
dWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChzdHJva2VCb3VuZGluZ0JveCgpKSk7Ci19
Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAppbmRleCAxMDVmMGFiLi5kYTk0NTY4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKQEAgLTMsNiArMyw3IEBACiAgICAgQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmln
aHQgKEMpIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlLCBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVy
IDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMjAgKzI3LDI1
IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5o
IgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwogY2xhc3MgU1ZHSW1hZ2VFbGVtZW50OwogCi1j
bGFzcyBSZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CitjbGFzcyBSZW5kZXJT
VkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgUmVu
ZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50Kik7CisgICAgdmlydHVhbCB+UmVuZGVyU1ZHSW1h
Z2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9u
ZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAorICAgIFJlbmRlckltYWdlUmVzb3VyY2Uq
IGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICBj
b25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIjsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTAs
MjkgKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQm91bmRzOyB9CiAgICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYs
IGJvb2wgZml4ZWQgPSBmYWxzZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwotCi0gICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOwot
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAgICAg
dmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwg
aW50IHR5KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRy
LCBjb25zdCBJbnRSZWN0KiA9IDApOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgcGFyZW50WCwgaW50IHBh
cmVudFkpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0
eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
RWxlbWVudCgpOwotCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJ
blBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4
LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0g
bG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKQEAg
LTgwLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5z
Zm9ybTsKICAgICBGbG9hdFJlY3QgbV9sb2NhbEJvdW5kczsKICAgICBtdXRhYmxlIEZsb2F0UmVj
dCBtX2NhY2hlZExvY2FsUmVwYWludFJlY3Q7CisgICAgT3duUHRyPFJlbmRlckltYWdlUmVzb3Vy
Y2U+IG1faW1hZ2VSZXNvdXJjZTsKIH07CiAKIGlubGluZSBSZW5kZXJTVkdJbWFnZSogdG9SZW5k
ZXJTVkdJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5oCmluZGV4IDg3NzE3YzIuLjlkZTIxN2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBNb3N0IHJlbmRlcmVycyBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlIHdp
bGwgaW5oZXJpdCBmcm9tIHRoaXMgY2xhc3MKLS8vIGJ1dCBub3QgYWxsLiAoZS5nLiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0LCBSZW5kZXJTVkdCbG9jaywgUmVuZGVyU1ZHSW1hZ2UpIHRodXMgbWV0
aG9kcworLy8gYnV0IG5vdCBhbGwuIChlLmcuIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QsIFJlbmRl
clNWR0Jsb2NrKSB0aHVzIG1ldGhvZHMKIC8vIHJlcXVpcmVkIGJ5IFNWRyByZW5kZXJzIG5lZWQg
dG8gYmUgZGVjbGFyZWQgb24gUmVuZGVyT2JqZWN0LCBidXQgc2hhcmVkCiAvLyBsb2dpYyBjYW4g
Z28gaW4gdGhpcyBjbGFzcyBvciBpbiBTVkdSZW5kZXJTdXBwb3J0LgogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcAppbmRleCAyMjc1NmU4Li4yZDFjNjUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66208</attachid>
            <date>2010-09-01 06:55:40 -0700</date>
            <delta_ts>2010-09-01 06:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>FixImage.diff</filename>
            <type>text/plain</type>
            <size>22443</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDgtMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBh
cm9nYS5jb20+CisKKyAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkIGludmFsaWRhdGVzIHdyb25nIGFyZWEKKyAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc3OQorCisg
ICAgICAgICBSZW1vdmUgUmVuZGVySW1hZ2UgaW5oZXJpdGFuY2UgZnJvbSBSZW5kZXJTVkdJbWFn
ZSwgaXQgbm93IGluaGVyaXRzIGZyb20gUmVuZGVyU1ZHTW9kZWxPYmplY3QuCisKKyAgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0ltYWdlOjp+UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjpsYXlvdXQpOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6
CisgICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oOgorICAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ltYWdlOjppbWFnZVJlc291cmNlKToKKyAgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgor
CiAyMDEwLTA5LTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDY2NTk4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogICAgIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAg
IENvcHlyaWdodCAoQykgMjAwOSwgR29vZ2xlLCBJbmMuCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5
IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAxMCBQ
YXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTMyLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCIKKyNpbmNs
dWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgiCkBAIC00NCwxMCArNDYsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCogaW1w
bCkKLSAgICA6IFJlbmRlckltYWdlKGltcGwpCisgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChp
bXBsKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQorICAgICwgbV9pbWFnZVJl
c291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKQogewotICAgIHNldEltYWdlUmVz
b3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOworICAgIG1faW1hZ2VSZXNvdXJj
ZS0+aW5pdGlhbGl6ZSh0aGlzKTsKK30KKworUmVuZGVyU1ZHSW1hZ2U6On5SZW5kZXJTVkdJbWFn
ZSgpCit7CisgICAgbV9pbWFnZVJlc291cmNlLT5zaHV0ZG93bigpOwogfQogCiB2b2lkIFJlbmRl
clNWR0ltYWdlOjpsYXlvdXQoKQpAQCAtNjQsMTIgKzcyLDYgQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6bGF5b3V0KCkKICAgICAgICAgdXBkYXRlQ2FjaGVkQm91bmRhcmllc0luUGFyZW50cyA9IHRy
dWU7CiAgICAgfQogCi0gICAgLy8gbWluaW11bSBoZWlnaHQKLSAgICBzZXRIZWlnaHQoaW1hZ2VS
ZXNvdXJjZSgpLT5lcnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAw
KTsKLQotICAgIGNhbGNXaWR0aCgpOwotICAgIGNhbGNIZWlnaHQoKTsKLQogICAgIC8vIEZJWE1F
OiBPcHRpbWl6ZSBjYWNoaW5nIHRoZSByZXBhaW50IHJlY3RzLgogICAgIEZsb2F0UmVjdCBvbGRC
b3VuZGFyaWVzID0gbV9sb2NhbEJvdW5kczsKICAgICBtX2xvY2FsQm91bmRzID0gRmxvYXRSZWN0
KGltYWdlLT54KCkudmFsdWUoaW1hZ2UpLCBpbWFnZS0+eSgpLnZhbHVlKGltYWdlKSwgaW1hZ2Ut
PndpZHRoKCkudmFsdWUoaW1hZ2UpLCBpbWFnZS0+aGVpZ2h0KCkudmFsdWUoaW1hZ2UpKTsKQEAg
LTg0LDcgKzg2LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKIAogICAgIC8vIElm
IG91ciBib3VuZHMgY2hhbmdlZCwgbm90aWZ5IHRoZSBwYXJlbnRzLgogICAgIGlmICh1cGRhdGVD
YWNoZWRCb3VuZGFyaWVzSW5QYXJlbnRzKQotICAgICAgICBSZW5kZXJJbWFnZTo6c2V0TmVlZHNC
b3VuZGFyaWVzVXBkYXRlKCk7CisgICAgICAgIFJlbmRlclNWR01vZGVsT2JqZWN0OjpzZXROZWVk
c0JvdW5kYXJpZXNVcGRhdGUoKTsKIAogICAgIHJlcGFpbnRlci5yZXBhaW50QWZ0ZXJMYXlvdXQo
KTsKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CkBAIC05Miw1OCArOTQsNDMgQEAgdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGludCwgaW50KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBISURERU4p
CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUo
KS0+dmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCAhbV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsK
KyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpOworICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFp
bnRSZWN0KGJvdW5kaW5nQm94LCBtX2xvY2FsVHJhbnNmb3JtLCBwYWludEluZm8pKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKSB7Ci0gICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKKyAgICBQYWlu
dEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKKyAgICBib29sIGRyYXdzT3V0bGluZSA9
IHN0eWxlKCktPm91dGxpbmVXaWR0aCgpICYmIChjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlT3V0bGluZSB8fCBjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91
dGxpbmUpOworICAgIGlmIChkcmF3c091dGxpbmUgfHwgY2hpbGRQYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpIHsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOworICAgICAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShtX2xvY2FsVHJh
bnNmb3JtKTsKKworICAgICAgICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpIHsKKyAgICAgICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8oY2hpbGRQYWlu
dEluZm8pOworCisgICAgICAgICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRvUmVu
ZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbykpIHsKKyAgICAgICAgICAgICAgICBJ
bWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICAgICAg
RmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9sb2NhbEJvdW5kczsKKyAgICAgICAgICAgICAgICBGbG9h
dFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKKwor
ICAgICAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1hZ2VF
bGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQorICAgICAgICAgICAgICAgICAg
ICBpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RS
ZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6cHJlcGFyZVRv
UmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8pKSB7Ci0gICAgICAgICAgICBJbWFnZSog
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCktPmltYWdlKCk7Ci0gICAgICAgICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QgPSBtX2xvY2FsQm91bmRzOwotICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3Qo
MCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIFNW
R0ltYWdlRWxlbWVudCogaW1hZ2VFbHQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihu
b2RlKCkpOwotICAgICAgICAgICAgaWYgKGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCku
YWxpZ24oKSAhPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19OT05FKQotICAgICAgICAgICAgICAgIGltYWdlRWx0LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCku
dHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAgY2hpbGRQ
YWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0
UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRl
bnQodGhpcywgY2hpbGRQYWludEluZm8sIHNhdmVkSW5mby5jb250ZXh0KTsKICAgICAgICAgfQot
ICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBh
aW50SW5mbywgc2F2ZWRJbmZvLmNvbnRleHQpOwotICAgIH0KLQotICAgIGlmICgocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKLQot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Ci19CiAKLXZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OmRlc3Ryb3koKQotewotICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnREZXN0cm95ZWQo
dGhpcyk7Ci0gICAgUmVuZGVySW1hZ2U6OmRlc3Ryb3koKTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpCi17Ci0gICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0
KQotICAgICAgICBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsKLSAgICBSZW5kZXJJbWFnZTo6
c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKLXsKLSAgICBSZW5kZXJJbWFnZTo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xk
U3R5bGUpOwotICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQodGhpcywg
ZGlmZiwgc3R5bGUoKSk7Ci19Ci0KLXZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKLXsKLSAgICBSZW5kZXJJbWFnZTo6dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBTVkdS
ZXNvdXJjZXNDYWNoZTo6Y2xpZW50VXBkYXRlZEZyb21FbGVtZW50KHRoaXMsIHN0eWxlKCkpOwor
ICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQorICAgICAgICAgICAgcGFpbnRPdXRsaW5lKGNoaWxk
UGFpbnRJbmZvLmNvbnRleHQsIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gueCgpKSwgc3Rh
dGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC55KCkpLAorICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdC
b3guaGVpZ2h0KCkpKTsKKyAgICAgICAgCisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICB9CiB9CiAKIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0
QWN0aW9uKQpAQCAtMTcxLDEyICsxNTgsNiBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclNWR0ltYWdl
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQs
IGludCwgaW50LCBpbnQsIEhpdFRlc3RBY3Rpb24pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBGbG9hdFJlY3QgUmVuZGVyU1ZHSW1hZ2U6OnJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QKIHsKICAgICAvLyBJZiB3ZSBhbHJl
YWR5IGhhdmUgYSBjYWNoZWQgcmVwYWludCByZWN0LCByZXR1cm4gdGhhdApAQCAtMTg5LDEwICsx
NzAsOCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHSW1hZ2U6OnJlcGFpbnRSZWN0SW5MCiAgICAgcmV0
dXJuIG1fY2FjaGVkTG9jYWxSZXBhaW50UmVjdDsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6
aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkK
K3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0
IEludFJlY3QqKQogewotICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoaW1hZ2UsIHJlY3Qp
OwotCiAgICAgLy8gVGhlIGltYWdlIHJlc291cmNlIGRlZmF1bHRzIHRvIG51bGxJbWFnZSB1bnRp
bCB0aGUgcmVzb3VyY2UgYXJyaXZlcy4KICAgICAvLyBUaGlzIGVtcHR5IGltYWdlIG1heSBiZSBj
YWNoZWQgYnkgU1ZHIHJlc291cmNlcyB3aGljaCBtdXN0IGJlIGludmFsaWRhdGVkLgogICAgIGlm
IChTVkdSZXNvdXJjZXMqIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJPYmplY3QodGhpcykpCkBAIC0yMDQsMjEgKzE4Myw2IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGUKICAgICByZXBhaW50KCk7CiB9CiAKLUlu
dFJlY3QgUmVuZGVyU1ZHSW1hZ2U6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQotewotICAgIHJldHVybiBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBhaW50Q29u
dGFpbmVyKTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJbWFnZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50
UmVjdCwgYm9vbCBmaXhlZCkKLXsKLSAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKLX0K
LQotdm9pZCBSZW5kZXJTVkdJbWFnZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCAsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAotewotICAgIFNWR1JlbmRl
clN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgZml4
ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKLX0KLQogdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQp
CiB7CiAgICAgLy8gdGhpcyBpcyBjYWxsZWQgZnJvbSBwYWludCgpIGFmdGVyIHRoZSBsb2NhbFRy
YW5zZm9ybSBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQKQEAgLTIyNywxNyArMTkxLDYgQEAgdm9p
ZCBSZW5kZXJTVkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMoVgogICAgICAgICByZWN0cy5hcHBl
bmQoY29udGVudFJlY3QpOwogfQogCi12b2lkIFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYsIGludCwgaW50KQotewotICAgIC8vIFRoaXMgY29kZSBwYXRoIHNo
b3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VUcmFuc2Zv
cm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCi17Ci0gICAgcXVhZHMuYXBwZW5kKGxvY2Fs
VG9BYnNvbHV0ZVF1YWQoc3Ryb2tlQm91bmRpbmdCb3goKSkpOwotfQotCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiA2NjU4NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBD
b3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlLCBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fu
c3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMjAg
KzI3LDI1IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1
ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RS
YXRpby5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwogY2xhc3MgU1ZHSW1hZ2VFbGVtZW50
OwogCi1jbGFzcyBSZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CitjbGFzcyBS
ZW5kZXJTVkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50Kik7CisgICAgdmlydHVhbCB+UmVuZGVy
U1ZHSW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
IHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAorICAgIFJlbmRlckltYWdlUmVz
b3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0K
KyAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIjsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNTAsMjkgKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tl
Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQm91bmRzOyB9CiAgICAgdmlydHVh
bCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50
UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1
c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwotCi0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQg
dHkpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7
CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGlu
dCB0eCwgaW50IHR5KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgcGFyZW50WCwg
aW50IHBhcmVudFkpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG5ld1N0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpOwotCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwg
aW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9
CiAKQEAgLTgwLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2Nh
bFRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgbV9sb2NhbEJvdW5kczsKICAgICBtdXRhYmxlIEZs
b2F0UmVjdCBtX2NhY2hlZExvY2FsUmVwYWludFJlY3Q7CisgICAgT3duUHRyPFJlbmRlckltYWdl
UmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJjZTsKIH07CiAKIGlubGluZSBSZW5kZXJTVkdJbWFnZSog
dG9SZW5kZXJTVkdJbWFnZShSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkocmV2aXNpb24gNjY1ODQpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE1vc3QgcmVuZGVyZXJzIGluIHRo
ZSBTVkcgcmVuZGVyaW5nIHRyZWUgd2lsbCBpbmhlcml0IGZyb20gdGhpcyBjbGFzcwotLy8gYnV0
IG5vdCBhbGwuIChlLmcuIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QsIFJlbmRlclNWR0Jsb2NrLCBS
ZW5kZXJTVkdJbWFnZSkgdGh1cyBtZXRob2RzCisvLyBidXQgbm90IGFsbC4gKGUuZy4gUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdCwgUmVuZGVyU1ZHQmxvY2spIHRodXMgbWV0aG9kcwogLy8gcmVxdWly
ZWQgYnkgU1ZHIHJlbmRlcnMgbmVlZCB0byBiZSBkZWNsYXJlZCBvbiBSZW5kZXJPYmplY3QsIGJ1
dCBzaGFyZWQKIC8vIGxvZ2ljIGNhbiBnbyBpbiB0aGlzIGNsYXNzIG9yIGluIFNWR1JlbmRlclN1
cHBvcnQuCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNjY1ODMpCisr
KyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJTVkdEb2N1bWVudC5oIgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjY1OTgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wOS0wMSAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFu
Z2VkIGludmFsaWRhdGVzIHdyb25nIGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNzc5CisKKyAgICAgICAgUmViYXNlbGluZSBTVkcgaW1hZ2Ug
ZHVtcEFzVGV4dCgpIHRlc3RzLgorICAgICAgICBBIG5ld2xpbmUgaXMgZ29uZSBmcm9tIGVhY2gg
b2YgdGhlIHJlc3VsdHMsIGFmdGVyIHN3aXRjaGluZyBmcm9tIFJlbmRlckltYWdlIHRvIFJlbmRl
clNWR01vZGVsT2JqZWN0IGluIFJlbmRlclNWR0ltYWdlLgorCisgICAgICAgICogc3ZnL2N1c3Rv
bS9sb2FkZXZlbnRzLWNhcHR1cmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2N1c3Rv
bS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LWRvbS1oZWlnaHQtYXR0ci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1l
bnQtZG9tLXByZXNlcnZlQXNwZWN0UmF0aW8tYXR0ci1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXdpZHRoLWF0dHItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LWRv
bS14LWF0dHItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
SW1hZ2VFbGVtZW50LWRvbS15LWF0dHItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS1oZWlnaHQtcHJvcC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9t
LXByZXNlcnZlQXNwZWN0UmF0aW8tcHJvcC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2Rv
bS14LXByb3AtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
SW1hZ2VFbGVtZW50LXN2Z2RvbS15LXByb3AtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA5LTAxICBN
YWhlc2ggS3Vsa2FybmkgIDxtYWhlc2gua3Vsa2FybmlAbm9raWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xv
YWRldmVudHMtY2FwdHVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtY2FwdHVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjY1ODMpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtY2FwdHVyaW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLQogVGhpcyB0ZXN0cyB0
aGF0IGxvYWQgZGlzcGF0Y2hpbmcgd29ya3Mgd2hlbiB0aGVyZSBhcmUgbm8KIGRpcmVjdCBsaXN0
ZW5lcnMsIGJ1dCB0aGVyZSBhcmUgY2FwdHVyaW5nIGV2ZW50IGxpc3RlbmVycyBvbiBhbiBhbmNl
c3Rvci4gQnVnIDE2NDQ3CiBQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9h
ZGV2ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNy
ZXF1aXJlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2NTgzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMiBAQAotCiBUaGlzIHRlc3RzIGxvYWQgZGlzcGF0
Y2hpbmcgb3JkZXIgd2l0aCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLiBCdWcgMTY0NDcKIFBh
c3NlZApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRz
LW5vcm1hbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2NTgzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyIEBACi0KIFRoaXMgdGVzdHMgbm9ybWFsIGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIu
IEJ1ZyAxNjQ0NwogUGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L1NWR0ltYWdlRWxlbWVudC1kb20taGVpZ2h0LWF0dHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LWRvbS1o
ZWlnaHQtYXR0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2NTgzKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLWhlaWdodC1hdHRyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAKIFNWRyAxLjEgZHluYW1pYyB1
cGRhdGUgdGVzdHMKIAotCiBUZXN0cyBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdoZWlnaHQnIGF0
dHJpYnV0ZSBvZiB0aGUgU1ZHSW1hZ2VFbGVtZW50IG9iamVjdAogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdl
RWxlbWVudC1kb20tcHJlc2VydmVBc3BlY3RSYXRpby1hdHRyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxlbWVudC1k
b20tcHJlc2VydmVBc3BlY3RSYXRpby1hdHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY1ODMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxlbWVudC1kb20t
cHJlc2VydmVBc3BlY3RSYXRpby1hdHRyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDUgQEAKIFNWRyAxLjEgZHluYW1pYyB1cGRhdGUgdGVzdHMKIAotCiBUZXN0cyBkeW5h
bWljIHVwZGF0ZXMgb2YgdGhlICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyBhdHRyaWJ1dGUgb2YgdGhl
IFNWR0ltYWdlRWxlbWVudCBvYmplY3QKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXdp
ZHRoLWF0dHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LWRvbS13aWR0aC1hdHRyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjY1ODMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0lt
YWdlRWxlbWVudC1kb20td2lkdGgtYXR0ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw1IEBACiBTVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzCiAKLQogVGVzdHMgZHlu
YW1pYyB1cGRhdGVzIG9mIHRoZSAnd2lkdGgnIGF0dHJpYnV0ZSBvZiB0aGUgU1ZHSW1hZ2VFbGVt
ZW50IG9iamVjdAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxlbWVudC1kb20teC1hdHRyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0lt
YWdlRWxlbWVudC1kb20teC1hdHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY1ODMpCisrKyBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxlbWVudC1kb20teC1hdHRy
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUgQEAKIFNWRyAxLjEgZHlu
YW1pYyB1cGRhdGUgdGVzdHMKIAotCiBUZXN0cyBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICd4JyBh
dHRyaWJ1dGUgb2YgdGhlIFNWR0ltYWdlRWxlbWVudCBvYmplY3QKIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFn
ZUVsZW1lbnQtZG9tLXktYXR0ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXktYXR0ci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDY2NTgzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9TVkdJbWFnZUVsZW1lbnQtZG9tLXktYXR0ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw1IEBACiBTVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzCiAKLQogVGVzdHMg
ZHluYW1pYyB1cGRhdGVzIG9mIHRoZSAneScgYXR0cmlidXRlIG9mIHRoZSBTVkdJbWFnZUVsZW1l
bnQgb2JqZWN0CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS1oZWlnaHQtcHJvcC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLWhlaWdodC1wcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjY1ODMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxl
bWVudC1zdmdkb20taGVpZ2h0LXByb3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNSBAQAogU1ZHIDEuMSBkeW5hbWljIHVwZGF0ZSB0ZXN0cwogCi0KIFRlc3RzIGR5bmFt
aWMgdXBkYXRlcyBvZiB0aGUgJ2hlaWdodCcgcHJvcGVydHkgb2YgdGhlIFNWR0ltYWdlRWxlbWVu
dCBvYmplY3QKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNwZWN0
UmF0aW8tcHJvcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNwZWN0UmF0aW8t
cHJvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2NTgzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNwZWN0UmF0aW8t
cHJvcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiBTVkcgMS4x
IGR5bmFtaWMgdXBkYXRlIHRlc3RzCiAKLQogVGVzdHMgZHluYW1pYyB1cGRhdGVzIG9mIHRoZSAn
cHJlc2VydmVBc3BlY3RSYXRpbycgcHJvcGVydHkgb2YgdGhlIFNWR0ltYWdlRWxlbWVudCBvYmpl
Y3QKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1h
Z2VFbGVtZW50LXN2Z2RvbS13aWR0aC1wcm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY1ODMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ltYWdlRWxlbWVudC1zdmdk
b20td2lkdGgtcHJvcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBA
CiBTVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzCiAKLQogVGVzdHMgZHluYW1pYyB1cGRhdGVz
IG9mIHRoZSAnd2lkdGgnIHByb3BlcnR5IG9mIHRoZSBTVkdJbWFnZUVsZW1lbnQgb2JqZWN0CiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWlj
LXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS14LXByb3AtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50
LXN2Z2RvbS14LXByb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NjU4MykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS14LXByb3AtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogU1ZHIDEuMSBkeW5hbWlj
IHVwZGF0ZSB0ZXN0cwogCi0KIFRlc3RzIGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ3gnIHByb3Bl
cnR5IG9mIHRoZSBTVkdJbWFnZUVsZW1lbnQgb2JqZWN0CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVt
ZW50LXN2Z2RvbS15LXByb3AtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS15LXByb3AtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA2NjU4MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS15LXByb3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNSBAQAogU1ZHIDEuMSBkeW5hbWljIHVwZGF0ZSB0ZXN0cwogCi0KIFRl
c3RzIGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ3knIHByb3BlcnR5IG9mIHRoZSBTVkdJbWFnZUVs
ZW1lbnQgb2JqZWN0CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
</data>
<flag name="review"
          id="55147"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>