<?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>113420</bug_id>
          
          <creation_ts>2013-03-27 10:17:32 -0700</creation_ts>
          <short_desc>Regression(r142765) Broke Custom SVG cursors and SVG canvas drawing for Chromium</short_desc>
          <delta_ts>2013-04-04 05:04:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://code.google.com/p/chromium/issues/detail?id=223935</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>113492</dependson>
          <blocked>106159</blocked>
    
    <blocked>113657</blocked>
    
    <blocked>113929</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>fmalita</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>junov</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>864648</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 10:17:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/142765 broken Custom SVG cursors for Chromium.

Can be reproduced via:
http://jsfiddle.net/davidaco/ePzfr/7/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864650</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 10:18:32 -0700</bug_when>
    <thetext>The reason seems to be that WebImage relies on Image::nativeImageForCurrentFrame() which is no longer implemented for SVGImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864660</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 10:32:03 -0700</bug_when>
    <thetext>Doing a partial revert of r142765 (basically bringing back exact same implementation of SVGImage::nativeImageForCurrentFrame()) fixes the issue. However, I&apos;m not sure this is what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864692</commentid>
    <comment_count>3</comment_count>
      <attachid>195354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 10:57:00 -0700</bug_when>
    <thetext>Created attachment 195354
Patch

Note sure this is the right approach but it does fix the regression (tested via http://jsfiddle.net/davidaco/ePzfr/7/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864697</commentid>
    <comment_count>4</comment_count>
      <attachid>195354</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-27 11:00:01 -0700</bug_when>
    <thetext>Comment on attachment 195354
Patch

Unfortunately this isn&apos;t the best approach.

We need to re-architect how nativeImageForCurrentFrame works so that the frame cache can be cleared when it is no longer used. With the approach in this patch we will keep around a big chunk of memory indefinitely. One approach would be to return a ref counted image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864712</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 11:09:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 195354 [details])
&gt; Unfortunately this isn&apos;t the best approach.
&gt; 
&gt; We need to re-architect how nativeImageForCurrentFrame works so that the frame cache can be cleared when it is no longer used. With the approach in this patch we will keep around a big chunk of memory indefinitely. One approach would be to return a ref counted image.

Changing the prototype of nativeImageForCurrentFrame() to return a ref counted image is likely going to result in a lot of changes as nativeImageForCurrentFrame() is a virtual method from Image.

Could we maybe introduce a new method specific to SVGImage that returns a ref counted image?

Then, we could handle SVGImage as a special case in WebImage by using Image::isSVGImage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864764</commentid>
    <comment_count>6</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-27 12:09:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 195354 [details] [details])
&gt; &gt; Unfortunately this isn&apos;t the best approach.
&gt; &gt; 
&gt; &gt; We need to re-architect how nativeImageForCurrentFrame works so that the frame cache can be cleared when it is no longer used. With the approach in this patch we will keep around a big chunk of memory indefinitely. One approach would be to return a ref counted image.
&gt; 
&gt; Changing the prototype of nativeImageForCurrentFrame() to return a ref counted image is likely going to result in a lot of changes as nativeImageForCurrentFrame() is a virtual method from Image.

It&apos;s actually not as bad as it might seem, but I&apos;ll admit it isn&apos;t the easiest change :( I attempted it in WK109894 but was pulled into other regressions and never finished it. Another user of nativeImageForCurrentFrame() is canvas.drawPattern which also regressed with the SVG image change: https://bugs.webkit.org/show_bug.cgi?id=109894. Both of these cases were untested before which is how the image change was able to land :/

&gt; Could we maybe introduce a new method specific to SVGImage that returns a ref counted image?

I think returning a ref counted image would have other benefits as well, such as codifying the lifetime of the returned value. It&apos;s not obvious to me who owns the returned native image at the moment, or what happens when the native image is destroyed.

&gt; 
&gt; Then, we could handle SVGImage as a special case in WebImage by using Image::isSVGImage().

I have a personal goal of removing all special-casing of svg image except where we&apos;re special-casing for svg&apos;s awesomeness :) Of course, my personal pie-in-the-sky won&apos;t prevent a well thought out special-case implementation for nativeImageForCurrentFrame, but it&apos;s worth keeping in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864907</commentid>
    <comment_count>7</comment_count>
      <attachid>195411</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 15:18:23 -0700</bug_when>
    <thetext>Created attachment 195411
Patch

Philip, is that what you had in mind. For now, I only ported Skia code as it is a bit big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864943</commentid>
    <comment_count>8</comment_count>
      <attachid>195422</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 15:57:09 -0700</bug_when>
    <thetext>Created attachment 195422
Patch

Build fix for Chromium tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864983</commentid>
    <comment_count>9</comment_count>
      <attachid>195422</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 16:47:52 -0700</bug_when>
    <thetext>Comment on attachment 195422
Patch

I&apos;m preparing a slightly improved version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865008</commentid>
    <comment_count>10</comment_count>
      <attachid>195439</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 17:05:52 -0700</bug_when>
    <thetext>Created attachment 195439
Patch

- Make NativeImageSkia constructors private and add factory methods since it is RefCounted. Also remove its copy constructor and assignment operator since RefCounted objects are not meant to be copied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865034</commentid>
    <comment_count>11</comment_count>
      <attachid>195444</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-27 17:16:36 -0700</bug_when>
    <thetext>Created attachment 195444
Patch

Removed a useless #if USE(SKIA) from a Skia-specific file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865168</commentid>
    <comment_count>12</comment_count>
      <attachid>195444</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-27 22:18:14 -0700</bug_when>
    <thetext>Comment on attachment 195444
Patch

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

&gt; Source/WebCore/loader/icon/IconDatabase.cpp:306
&gt; +#if USE(SKIA)
&gt; +PassRefPtr&lt;NativeImage&gt;
&gt; +#else
&gt; +NativeImagePtr
&gt; +#endif

This is quite ugly.  Perhaps we should define a NativeImagePassPtr type instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865189</commentid>
    <comment_count>13</comment_count>
      <attachid>195444</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-27 23:20:00 -0700</bug_when>
    <thetext>Comment on attachment 195444
Patch

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

Overall, I like where this is going. I&apos;ve added some high-level comments below.

&gt; Source/WebCore/ChangeLog:18
&gt; +        No new tests, not testable via layout tests.

I&apos;d really like to add a test for this so we don&apos;t regress nativeImageForCurrentFrame again in the future. You can actually use the testcase from WK109894, as this patch fixes it too.

&gt;&gt; Source/WebCore/loader/icon/IconDatabase.cpp:306
&gt;&gt; +#endif
&gt; 
&gt; This is quite ugly.  Perhaps we should define a NativeImagePassPtr type instead?

I think the non-Skia ports will push back here. Because of the differences in how RefPtrs/raw ptrs are passed, I can&apos;t think of a way around NativeImagePassPtr.

&gt; Source/WebCore/platform/graphics/skia/ImageSkia.cpp:-453
&gt; -        // ImageSource::createFrameAtIndex() allocated |m_frame| and passed

This was gross and I&apos;m glad you&apos;re fixing it!

This comment makes me think we should be using OwnPtr and PassOwnPtr for the return value of nativeImageForCurrentFrame, but due to the clone() calls I&apos;m not sure if it would work out cleanly. Did you consider OwnPtr?

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();

We want to use DontCopyBackingStore here.
CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865236</commentid>
    <comment_count>14</comment_count>
      <attachid>195444</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 01:24:22 -0700</bug_when>
    <thetext>Comment on attachment 195444
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        No new tests, not testable via layout tests.
&gt; 
&gt; I&apos;d really like to add a test for this so we don&apos;t regress nativeImageForCurrentFrame again in the future. You can actually use the testcase from WK109894, as this patch fixes it too.

Ok, will do. Thanks.

&gt;&gt;&gt; Source/WebCore/loader/icon/IconDatabase.cpp:306
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; This is quite ugly.  Perhaps we should define a NativeImagePassPtr type instead?
&gt; 
&gt; I think the non-Skia ports will push back here. Because of the differences in how RefPtrs/raw ptrs are passed, I can&apos;t think of a way around NativeImagePassPtr.

I agree this is not nice. NativeImagePassPtr sounds like a good idea to make this cleaner.

&gt;&gt; Source/WebCore/platform/graphics/skia/ImageSkia.cpp:-453
&gt;&gt; -        // ImageSource::createFrameAtIndex() allocated |m_frame| and passed
&gt; 
&gt; This was gross and I&apos;m glad you&apos;re fixing it!
&gt; 
&gt; This comment makes me think we should be using OwnPtr and PassOwnPtr for the return value of nativeImageForCurrentFrame, but due to the clone() calls I&apos;m not sure if it would work out cleanly. Did you consider OwnPtr?

I don&apos;t think PassOwnPtr would be suitable as the return value of nativeImageForCurrentFrame(). In the BitmapImage case, the NativeImage is owned by BitmapImage::FrameData and nativeImageForCurrentFrame() merely returns a pointer to it. If we use OwnPtr/PassOwnPtr, then the caller takes ownership of the NativeImage. In the case of BitmapImage, this would mean copying (aka cloning) the NativeImage.

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; 
&gt; We want to use DontCopyBackingStore here.
&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.

Ok. I merely reused the previous implementation that got dropped without altering it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865258</commentid>
    <comment_count>15</comment_count>
      <attachid>195444</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 01:49:22 -0700</bug_when>
    <thetext>Comment on attachment 195444
Patch

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

&gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt;&gt; 
&gt;&gt; We want to use DontCopyBackingStore here.
&gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; 
&gt; Ok. I merely reused the previous implementation that got dropped without altering it.

Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865298</commentid>
    <comment_count>16</comment_count>
      <attachid>195515</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 03:16:49 -0700</bug_when>
    <thetext>Created attachment 195515
Patch

Take feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865341</commentid>
    <comment_count>17</comment_count>
      <attachid>195515</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 04:53:26 -0700</bug_when>
    <thetext>Comment on attachment 195515
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.h:97
&gt; +#if USE(SKIA)
&gt; +    RefPtr&lt;NativeImage&gt; m_frame;
&gt; +#else
&gt;      NativeImagePtr m_frame;
&gt; +#endif

First off, does NativeImageSkia really need to be refcounted?  Considering that NativeImagePtr has been a bare pointer up until now, and that it remains a bare pointer on other ports (on CG it&apos;s a struct CGImage*, on QT it&apos;s a QPixmap*), why is Skia special?  Does our calling code do something that the other ports don&apos;t?  If so, I&apos;d argue that calling code needs to be fixed.

Secondly, unless you really need shared ownership, OwnPtr/PassOwnPtr might be a better choice than RefPtr/PassRefPtr.  If you must change this, I&apos;d recommend doing it to the typedef in NativeImagePtr.h.  If NativeImagePtr really needs to be changed, it should be done everywhere.  You&apos;re changing it only for BitmapImage (and inflicting a new #ifdef to this common code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865360</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 05:11:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 195515 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195515&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.h:97
&gt; &gt; +#if USE(SKIA)
&gt; &gt; +    RefPtr&lt;NativeImage&gt; m_frame;
&gt; &gt; +#else
&gt; &gt;      NativeImagePtr m_frame;
&gt; &gt; +#endif
&gt; 
&gt; First off, does NativeImageSkia really need to be refcounted?  Considering that NativeImagePtr has been a bare pointer up until now, and that it remains a bare pointer on other ports (on CG it&apos;s a struct CGImage*, on QT it&apos;s a QPixmap*), why is Skia special?  Does our calling code do something that the other ports don&apos;t?  If so, I&apos;d argue that calling code needs to be fixed.

Please see implementation of SVGImage::nativeImageForCurrentFrame(). It is only enabled for Skia at the moment, because only Skia uses a smart pointer for the NativeImage. The implementation of SVGImage::nativeImageForCurrentFrame() passes ownership of the native image to the caller as we do not keep it internally (nor to we want to for memory usage reasons).

&gt; 
&gt; Secondly, unless you really need shared ownership, OwnPtr/PassOwnPtr might be a better choice than RefPtr/PassRefPtr.

As I commented in https://bugs.webkit.org/show_bug.cgi?id=113420#c14, using OwnPtr/PassOwnPtr would be problematic for BitmapImage::nativeImageForCurrentFrame(). BitmapImage owns the returned image only only returns a reference to it. We do not transfer ownership to the caller.

The main issue here is that SVGImage::nativeImageForCurrentFrame() and BitmapImage::nativeImageForCurrentFrame() behave differently. The first one transfer ownership of the native image to the caller while the latter does not. This is the reason why we switched to returning a RefPtr/PassRefPtr. This way, we don&apos;t have to worry about memory management and we don&apos;t have to handle SVGImage as a special case.

&gt; If you must change this, I&apos;d recommend doing it to the typedef in NativeImagePtr.h.  If NativeImagePtr really needs to be changed, it should be done everywhere.  You&apos;re changing it only for BitmapImage (and inflicting a new #ifdef to this common code).

I don&apos;t fully understand this one. I currently have a typedef PassRefPtr&lt;NativeImage&gt; NativeImagePassPtr, and AFAIK, I have replaced all instances for NativeImagePassPtr by PassRefPtr&lt;NativeImage&gt; where possible and for Skia. It is true that I still have #ifdefs for the RefPtr&lt;NativeImage&gt; case. We could add another typedef for this one in NativeImagePtr.h but I&apos;m not sure how to name it. Should I call it simply NativeImagePtr ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865374</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 05:23:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 195515 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195515&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.h:97
&gt; &gt; +#if USE(SKIA)
&gt; &gt; +    RefPtr&lt;NativeImage&gt; m_frame;
&gt; &gt; +#else
&gt; &gt;      NativeImagePtr m_frame;
&gt; &gt; +#endif
&gt; 
&gt; First off, does NativeImageSkia really need to be refcounted?  Considering that NativeImagePtr has been a bare pointer up until now, and that it remains a bare pointer on other ports (on CG it&apos;s a struct CGImage*, on QT it&apos;s a QPixmap*), why is Skia special?  Does our calling code do something that the other ports don&apos;t?  If so, I&apos;d argue that calling code needs to be fixed.

I forgot the mention that Skia is not really special here. It is just the only code I have ported in this patch as it is a lot of work to do it for all ports. If we choose this approach, this should probably be done incrementally.

It would be bad to keep returning a raw pointer and have nativeImageForCurrentFrame() transfer ownership if it is an SVGImage, and not transfer it if it is a BitmapImage. One solution that Philip proposed (and implemented in this patch) is to return a PassRefPtr to solve memory management issues. I could not find a better solution yet but I&apos;m happy to go another way if someone does.

Personally, I think returning a smart pointer here is less bug prone. Before, we had nativeImageForCurrentFrame() that did not transfer ownership to the caller and ImageFrame::asNewNativeImage() that did. Both return a NativeImagePtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865462</commentid>
    <comment_count>20</comment_count>
      <attachid>195560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 06:50:34 -0700</bug_when>
    <thetext>Created attachment 195560
Patch

- Add &quot;typedef RefPtr&lt;NativeImage&gt; NativeImagePtr&quot; for Skia to avoid #ifdef in BitmapImage.h.
- Replace NativeImagePtr by NativeImagePassPtr where suitable in non Skia specific code to make porting easier. For now, this does not change the behavior as NativeImagePassPtr is a typedef to NativeImagePtr for non-Skia code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865474</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 07:01:53 -0700</bug_when>
    <thetext>Note that Mac (CG) uses a CGImageRef type which is already refcounted. Therefore, changes needed for it would likely be minimal. We could probably use something like:
#if USE(CG)
typedef RetainPtr&lt;CGImageRef&gt; NativeImagePassPtr;
typedef RetainPtr&lt;CGImageRef&gt; NativeImagePtr;
#endif

The effort for Cairo would be similar as for Skia. Basically WebCore::NativeImageCairo would need to subclass RefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865491</commentid>
    <comment_count>22</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 07:31:59 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 195444 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:18
&gt; &gt;&gt; +        No new tests, not testable via layout tests.
&gt; &gt; 
&gt; &gt; I&apos;d really like to add a test for this so we don&apos;t regress nativeImageForCurrentFrame again in the future. You can actually use the testcase from WK109894, as this patch fixes it too.
&gt; 
&gt; Ok, will do. Thanks.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/loader/icon/IconDatabase.cpp:306
&gt; &gt;&gt;&gt; +#endif
&gt; &gt;&gt; 
&gt; &gt;&gt; This is quite ugly.  Perhaps we should define a NativeImagePassPtr type instead?
&gt; &gt; 
&gt; &gt; I think the non-Skia ports will push back here. Because of the differences in how RefPtrs/raw ptrs are passed, I can&apos;t think of a way around NativeImagePassPtr.
&gt; 
&gt; I agree this is not nice. NativeImagePassPtr sounds like a good idea to make this cleaner.
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/skia/ImageSkia.cpp:-453
&gt; &gt;&gt; -        // ImageSource::createFrameAtIndex() allocated |m_frame| and passed
&gt; &gt; 
&gt; &gt; This was gross and I&apos;m glad you&apos;re fixing it!
&gt; &gt; 
&gt; &gt; This comment makes me think we should be using OwnPtr and PassOwnPtr for the return value of nativeImageForCurrentFrame, but due to the clone() calls I&apos;m not sure if it would work out cleanly. Did you consider OwnPtr?
&gt; 
&gt; I don&apos;t think PassOwnPtr would be suitable as the return value of nativeImageForCurrentFrame(). In the BitmapImage case, the NativeImage is owned by BitmapImage::FrameData and nativeImageForCurrentFrame() merely returns a pointer to it. If we use OwnPtr/PassOwnPtr, then the caller takes ownership of the NativeImage. In the case of BitmapImage, this would mean copying (aka cloning) the NativeImage.

OK, so I&apos;m trying to understand the ownership semantics here, so bear with me through my SVG-ignorance.

For most implementations of Image, nativeImageForCurrentFrame() simply returns (without copying) the underlying native image class.  For SVGImage, it seems as if it will now always allocate an ImageBuffer, render the SVG DOM, copy the ImageBuffer&apos;s backing store, and return the native image underlying it.  I can vaguely see how this will make all callers of Image (eg., canvas etc) transparently work with SVG images (vague due to my handwavey understanding of SVG).  But it does change the semantics a lot, and I don&apos;t understand the cacheing model.  Does this mean we will re-render the SVG DOM on every call to nativeImageForCurrentFrame(), even if the underlying SVG DOM has not changed?  Or am I missing some cacheing elsewhere?

Previously, most callers which received a NativeImagePtr assumed that they were not taking ownership.  SVG seems to now require an exception to that rule, which makes me wonder whether the fault lies in the SVG calling code, not in the platform code. Usually when we want a ref-countable image, we use Image itself, not NativeImagePtr.  Is that not possible in this case?

&gt; &gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; 
&gt; &gt; We want to use DontCopyBackingStore here.
&gt; &gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; 
&gt; Ok. I merely reused the previous implementation that got dropped without altering it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865503</commentid>
    <comment_count>23</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 07:49:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 195515 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195515&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/BitmapImage.h:97
&gt; &gt; &gt; +#if USE(SKIA)
&gt; &gt; &gt; +    RefPtr&lt;NativeImage&gt; m_frame;
&gt; &gt; &gt; +#else
&gt; &gt; &gt;      NativeImagePtr m_frame;
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; First off, does NativeImageSkia really need to be refcounted?  Considering that NativeImagePtr has been a bare pointer up until now, and that it remains a bare pointer on other ports (on CG it&apos;s a struct CGImage*, on QT it&apos;s a QPixmap*), why is Skia special?  Does our calling code do something that the other ports don&apos;t?  If so, I&apos;d argue that calling code needs to be fixed.
&gt; 
&gt; Please see implementation of SVGImage::nativeImageForCurrentFrame(). It is only enabled for Skia at the moment, because only Skia uses a smart pointer for the NativeImage. The implementation of SVGImage::nativeImageForCurrentFrame() passes ownership of the native image to the caller as we do not keep it internally (nor to we want to for memory usage reasons).
&gt; 
&gt; &gt; 
&gt; &gt; Secondly, unless you really need shared ownership, OwnPtr/PassOwnPtr might be a better choice than RefPtr/PassRefPtr.
&gt; 
&gt; As I commented in https://bugs.webkit.org/show_bug.cgi?id=113420#c14, using OwnPtr/PassOwnPtr would be problematic for BitmapImage::nativeImageForCurrentFrame(). BitmapImage owns the returned image only only returns a reference to it. We do not transfer ownership to the caller.

Sorry for not reading the earlier comments.  I think I see now why an OwnPtr will not work:  since sometimes you want the caller to own it (SVG), and sometimes you don&apos;t (everything else).

&gt; The main issue here is that SVGImage::nativeImageForCurrentFrame() and BitmapImage::nativeImageForCurrentFrame() behave differently. The first one transfer ownership of the native image to the caller while the latter does not. This is the reason why we switched to returning a RefPtr/PassRefPtr. This way, we don&apos;t have to worry about memory management and we don&apos;t have to handle SVGImage as a special case.
&gt; 
&gt; &gt; If you must change this, I&apos;d recommend doing it to the typedef in NativeImagePtr.h.  If NativeImagePtr really needs to be changed, it should be done everywhere.  You&apos;re changing it only for BitmapImage (and inflicting a new #ifdef to this common code).
&gt; 
&gt; I don&apos;t fully understand this one. I currently have a typedef PassRefPtr&lt;NativeImage&gt; NativeImagePassPtr, and AFAIK, I have replaced all instances for NativeImagePassPtr by PassRefPtr&lt;NativeImage&gt; where possible and for Skia. It is true that I still have #ifdefs for the RefPtr&lt;NativeImage&gt; case. We could add another typedef for this one in NativeImagePtr.h but I&apos;m not sure how to name it. Should I call it simply NativeImagePtr ?

Actually, I was thinking something more Skia-specific, in the #if USE(SKIA) section:

typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;

The fully-generic RefPtr version may not work for CG, for example, since I think you&apos;ll need to keep NativeImagePtr as a CGImageRef.

I would like to see all the other RefPtr&lt;NativeImageSkia&gt; and RefPtr&lt;NativeImage&gt; that you have in the code currently to just NativeImagePtr.  Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865514</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 08:03:05 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; Actually, I was thinking something more Skia-specific, in the #if USE(SKIA) section:
&gt; 
&gt; typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;

I believe this is what I did in my latest patch.

&gt; 
&gt; The fully-generic RefPtr version may not work for CG, for example, since I think you&apos;ll need to keep NativeImagePtr as a CGImageRef.

Yes, as I said in #21, CG would probably use RetainPtr instead of RefPtr that it could still remain generic from outside NativeImahePtr.h, e.g.:
#if USE(CG)
typedef RetainPtr&lt;CGImageRef&gt; NativeImagePassPtr;
typedef RetainPtr&lt;CGImageRef&gt; NativeImagePtr;
#endif

&gt; 
&gt; I would like to see all the other RefPtr&lt;NativeImageSkia&gt; and RefPtr&lt;NativeImage&gt; that you have in the code currently to just NativeImagePtr.  Would that work?

Sure, that would work. However, if I&apos;m not mistaken, RefPtr&lt;NativeImageSkia&gt; only remains in Skia-specific files (no #ifdefs, at least in my latest patch). Do we really want to use NativeImagePtr for them as well? I see the point of NativeImagePtr / NativeImagePassPtr in generic code (to avoid #ifdefs). But I personally think it is slightly less readable than RefPtr&lt;NativeImageSkia&gt; in Skia files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865517</commentid>
    <comment_count>25</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 08:08:40 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 195444 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt;&gt; 
&gt; &gt;&gt; We want to use DontCopyBackingStore here.
&gt; &gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; &gt; 
&gt; &gt; Ok. I merely reused the previous implementation that got dropped without altering it.
&gt; 
&gt; Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.

OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);
 153    if (!buffer) // failed to allocate image
 154        return 0;
 155
 156    draw(buffer-&gt;context(), rect(), rect(), ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
 157
 158    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();

Even with CopyBackingStore, this looks problematic to me.  You have a temporary ImageBuffer, from which you copy out a temporary Image, and return its current frame.  For plain old images (or BitmapImageSingleFrameSkia), this won&apos;t copy the pixels, so it looks like they would normally be freed along with the Image.

Perhaps the only reason it&apos;s not problematic is that the rest of your patch now makes even non-SVGImage NativeImagePtrs refcounted, so the ownership is transferred out.

(OTOH, I could be wrong about all this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865525</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 08:20:06 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 195444 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt; &gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; We want to use DontCopyBackingStore here.
&gt; &gt; &gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; &gt; &gt; 
&gt; &gt; &gt; Ok. I merely reused the previous implementation that got dropped without altering it.
&gt; &gt; 
&gt; &gt; Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.
&gt; 
&gt; OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);
&gt;  153    if (!buffer) // failed to allocate image
&gt;  154        return 0;
&gt;  155
&gt;  156    draw(buffer-&gt;context(), rect(), rect(), ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
&gt;  157
&gt;  158    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; 
&gt; Even with CopyBackingStore, this looks problematic to me.  You have a temporary ImageBuffer, from which you copy out a temporary Image, and return its current frame.  For plain old images (or BitmapImageSingleFrameSkia), this won&apos;t copy the pixels, so it looks like they would normally be freed along with the Image.
&gt; 
&gt; Perhaps the only reason it&apos;s not problematic is that the rest of your patch now makes even non-SVGImage NativeImagePtrs refcounted, so the ownership is transferred out.

Yes, this works because ownership is transferred. See the implementation of nativeImageForCurrentFrame() for BitmapImageSingleFrameSkia:
PassRefPtr&lt;NativeImage&gt; BitmapImageSingleFrameSkia::nativeImageForCurrentFrame()
{
    return m_nativeImage; // m_nativeImage is a RefPtr&lt;NativeImageSkia&gt;.
}

The temporary BitmapImageSingleFrameSkia holds a ref to the NativeImage. The NativeImage gets ref&apos;d when returned to the caller. Then the temporary BitmapImageSingleFrameSkia gets destroyed and decreases the ref count of the native image. The NativeImage does not go away because the caller of nativeImageForCurrentFrame() still holds a reference to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865529</commentid>
    <comment_count>27</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 08:27:00 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; Actually, I was thinking something more Skia-specific, in the #if USE(SKIA) section:
&gt; &gt; 
&gt; &gt; typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;
&gt; 
&gt; I believe this is what I did in my latest patch.

No, what you have is:

typedef NativeImageSkia NativeImage;

...

typedef RefPtr&lt;NativeImage&gt; NativeImagePtr;

What I meant was to do all the skia-specific stuff in one place, and skip the creation of NativeImage altogether:

typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;
typedef PassRefPtr&lt;NativeImageSkia&gt; NativeImagePassPtr;

then just have the lower block be

#if !USE(SKIA)
typedef NativeImagePtr NativeImagePassPtr;
#endif

We could reconsider the introduction of NativeImage when this is expanded to other ports, but since NativeImage is never going to work for CG AFAICT (since it can&apos;t use RefPtr), I would consider this carefully.

&gt; &gt; I would like to see all the other RefPtr&lt;NativeImageSkia&gt; and RefPtr&lt;NativeImage&gt; that you have in the code currently to just NativeImagePtr.  Would that work?
&gt; 
&gt; Sure, that would work. However, if I&apos;m not mistaken, RefPtr&lt;NativeImageSkia&gt; only remains in Skia-specific files (no #ifdefs, at least in my latest patch). Do we really want to use NativeImagePtr for them as well? I see the point of NativeImagePtr / NativeImagePassPtr in generic code (to avoid #ifdefs). But I personally think it is slightly less readable than RefPtr&lt;NativeImageSkia&gt; in Skia files.

I see your point -- it is more specific that way, especially if they were already using NativeImageSkia*, or assuming skia-specific functionality.  In generic code, though, I would prefer the use of NativeImagePtr and NativeImagePassPtr over RefPtr&lt;NativeImage&gt; and PassRefPtr&lt;NativeImage&gt; (especially if we get rid of NativeImage for now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865534</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 08:30:56 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #23)
&gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; Actually, I was thinking something more Skia-specific, in the #if USE(SKIA) section:
&gt; &gt; &gt; 
&gt; &gt; &gt; typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;
&gt; &gt; 
&gt; &gt; I believe this is what I did in my latest patch.
&gt; 
&gt; No, what you have is:
&gt; 
&gt; typedef NativeImageSkia NativeImage;
&gt; 
&gt; ...
&gt; 
&gt; typedef RefPtr&lt;NativeImage&gt; NativeImagePtr;
&gt; 
&gt; What I meant was to do all the skia-specific stuff in one place, and skip the creation of NativeImage altogether:
&gt; 
&gt; typedef RefPtr&lt;NativeImageSkia&gt; NativeImagePtr;
&gt; typedef PassRefPtr&lt;NativeImageSkia&gt; NativeImagePassPtr;
&gt; 
&gt; then just have the lower block be
&gt; 
&gt; #if !USE(SKIA)
&gt; typedef NativeImagePtr NativeImagePassPtr;
&gt; #endif
&gt; 
&gt; We could reconsider the introduction of NativeImage when this is expanded to other ports, but since NativeImage is never going to work for CG AFAICT (since it can&apos;t use RefPtr), I would consider this carefully.

I see your point. I&apos;ll update the patch accordingly, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865555</commentid>
    <comment_count>29</comment_count>
      <attachid>195580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 09:00:19 -0700</bug_when>
    <thetext>Created attachment 195580
Patch

Take Stephen White&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865565</commentid>
    <comment_count>30</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-28 09:20:01 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (From update of attachment 195444 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt; &gt; &gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; We want to use DontCopyBackingStore here.
&gt; &gt; &gt; &gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ok. I merely reused the previous implementation that got dropped without altering it.
&gt; &gt; &gt; 
&gt; &gt; &gt; Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.
&gt; &gt; 
&gt; &gt; OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);
&gt; &gt;  153    if (!buffer) // failed to allocate image
&gt; &gt;  154        return 0;
&gt; &gt;  155
&gt; &gt;  156    draw(buffer-&gt;context(), rect(), rect(), ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
&gt; &gt;  157
&gt; &gt;  158    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; 
&gt; &gt; Even with CopyBackingStore, this looks problematic to me.  You have a temporary ImageBuffer, from which you copy out a temporary Image, and return its current frame.  For plain old images (or BitmapImageSingleFrameSkia), this won&apos;t copy the pixels, so it looks like they would normally be freed along with the Image.
&gt; &gt; 
&gt; &gt; Perhaps the only reason it&apos;s not problematic is that the rest of your patch now makes even non-SVGImage NativeImagePtrs refcounted, so the ownership is transferred out.
&gt; 
&gt; Yes, this works because ownership is transferred. See the implementation of nativeImageForCurrentFrame() for BitmapImageSingleFrameSkia:
&gt; PassRefPtr&lt;NativeImage&gt; BitmapImageSingleFrameSkia::nativeImageForCurrentFrame()
&gt; {
&gt;     return m_nativeImage; // m_nativeImage is a RefPtr&lt;NativeImageSkia&gt;.
&gt; }
&gt; 
&gt; The temporary BitmapImageSingleFrameSkia holds a ref to the NativeImage. The NativeImage gets ref&apos;d when returned to the caller. Then the temporary BitmapImageSingleFrameSkia gets destroyed and decreases the ref count of the native image. The NativeImage does not go away because the caller of nativeImageForCurrentFrame() still holds a reference to it.

All true, which makes me wonder why DontCopyBackingStore doesn&apos;t work, since we&apos;re refcounting things at the NativeImageSkia level now, so we shouldn&apos;t be dependent upon the Image or ImageBuffer lifetime.  Could you investigate a little to see why DontCopyBackingStore doesn&apos;t work?  I think using CopyBackingStore is going to incur a pretty heavy performance penalty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865575</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 09:34:12 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; &gt; (From update of attachment 195444 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt; &gt; &gt; &gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt; &gt;&gt; We want to use DontCopyBackingStore here.
&gt; &gt; &gt; &gt; &gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Ok. I merely reused the previous implementation that got dropped without altering it.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.
&gt; &gt; &gt; 
&gt; &gt; &gt; OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);
&gt; &gt; &gt;  153    if (!buffer) // failed to allocate image
&gt; &gt; &gt;  154        return 0;
&gt; &gt; &gt;  155
&gt; &gt; &gt;  156    draw(buffer-&gt;context(), rect(), rect(), ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
&gt; &gt; &gt;  157
&gt; &gt; &gt;  158    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt; 
&gt; &gt; &gt; Even with CopyBackingStore, this looks problematic to me.  You have a temporary ImageBuffer, from which you copy out a temporary Image, and return its current frame.  For plain old images (or BitmapImageSingleFrameSkia), this won&apos;t copy the pixels, so it looks like they would normally be freed along with the Image.
&gt; &gt; &gt; 
&gt; &gt; &gt; Perhaps the only reason it&apos;s not problematic is that the rest of your patch now makes even non-SVGImage NativeImagePtrs refcounted, so the ownership is transferred out.
&gt; &gt; 
&gt; &gt; Yes, this works because ownership is transferred. See the implementation of nativeImageForCurrentFrame() for BitmapImageSingleFrameSkia:
&gt; &gt; PassRefPtr&lt;NativeImage&gt; BitmapImageSingleFrameSkia::nativeImageForCurrentFrame()
&gt; &gt; {
&gt; &gt;     return m_nativeImage; // m_nativeImage is a RefPtr&lt;NativeImageSkia&gt;.
&gt; &gt; }
&gt; &gt; 
&gt; &gt; The temporary BitmapImageSingleFrameSkia holds a ref to the NativeImage. The NativeImage gets ref&apos;d when returned to the caller. Then the temporary BitmapImageSingleFrameSkia gets destroyed and decreases the ref count of the native image. The NativeImage does not go away because the caller of nativeImageForCurrentFrame() still holds a reference to it.
&gt; 
&gt; All true, which makes me wonder why DontCopyBackingStore doesn&apos;t work, since we&apos;re refcounting things at the NativeImageSkia level now, so we shouldn&apos;t be dependent upon the Image or ImageBuffer lifetime.  Could you investigate a little to see why DontCopyBackingStore doesn&apos;t work?  I think using CopyBackingStore is going to incur a pretty heavy performance penalty.

To be fair, it was using CopyBackingStore before so it is not going to be slower :)

I had a look at the code:
Here is the Skia implementation of ImageBuffer::copyImage():
PassRefPtr&lt;Image&gt; ImageBuffer::copyImage(BackingStoreCopy copyBehavior, ScaleBehavior) const
{
    return BitmapImageSingleFrameSkia::create(*m_data.m_platformContext.bitmap(), copyBehavior == CopyBackingStore, m_resolutionScale);
}

If we use DontCopyBackingStore, it looks to me that the BitmapImageSingleFrameSkia becomes invalid once the ImageBuffer gets destroyed.

In our case, the buffer gets destroyed when SVGImage::nativeImageForCurrentFrame() returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865588</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-28 09:57:01 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 195444 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195444&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:156
&gt; &gt; &gt; &gt; &gt; &gt;&gt;&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt; We want to use DontCopyBackingStore here.
&gt; &gt; &gt; &gt; &gt; &gt;&gt; CopyBackingStore makes a deep copy of all the ImageBuffer pixels, whereas we just want to re-use them. Fortunately, DontCopyBackingStore refs the backing store so we should be safe.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Ok. I merely reused the previous implementation that got dropped without altering it.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Hmm. Actually, the test case from Bug 109894 is failing if I use DontCopyBackingStore. It passes with CopyBackingStore.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);
&gt; &gt; &gt; &gt;  153    if (!buffer) // failed to allocate image
&gt; &gt; &gt; &gt;  154        return 0;
&gt; &gt; &gt; &gt;  155
&gt; &gt; &gt; &gt;  156    draw(buffer-&gt;context(), rect(), rect(), ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
&gt; &gt; &gt; &gt;  157
&gt; &gt; &gt; &gt;  158    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Even with CopyBackingStore, this looks problematic to me.  You have a temporary ImageBuffer, from which you copy out a temporary Image, and return its current frame.  For plain old images (or BitmapImageSingleFrameSkia), this won&apos;t copy the pixels, so it looks like they would normally be freed along with the Image.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Perhaps the only reason it&apos;s not problematic is that the rest of your patch now makes even non-SVGImage NativeImagePtrs refcounted, so the ownership is transferred out.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, this works because ownership is transferred. See the implementation of nativeImageForCurrentFrame() for BitmapImageSingleFrameSkia:
&gt; &gt; &gt; PassRefPtr&lt;NativeImage&gt; BitmapImageSingleFrameSkia::nativeImageForCurrentFrame()
&gt; &gt; &gt; {
&gt; &gt; &gt;     return m_nativeImage; // m_nativeImage is a RefPtr&lt;NativeImageSkia&gt;.
&gt; &gt; &gt; }
&gt; &gt; &gt; 
&gt; &gt; &gt; The temporary BitmapImageSingleFrameSkia holds a ref to the NativeImage. The NativeImage gets ref&apos;d when returned to the caller. Then the temporary BitmapImageSingleFrameSkia gets destroyed and decreases the ref count of the native image. The NativeImage does not go away because the caller of nativeImageForCurrentFrame() still holds a reference to it.
&gt; &gt; 
&gt; &gt; All true, which makes me wonder why DontCopyBackingStore doesn&apos;t work, since we&apos;re refcounting things at the NativeImageSkia level now, so we shouldn&apos;t be dependent upon the Image or ImageBuffer lifetime.  Could you investigate a little to see why DontCopyBackingStore doesn&apos;t work?  I think using CopyBackingStore is going to incur a pretty heavy performance penalty.
&gt; 
&gt; To be fair, it was using CopyBackingStore before so it is not going to be slower :)
&gt; 
&gt; I had a look at the code:
&gt; Here is the Skia implementation of ImageBuffer::copyImage():
&gt; PassRefPtr&lt;Image&gt; ImageBuffer::copyImage(BackingStoreCopy copyBehavior, ScaleBehavior) const
&gt; {
&gt;     return BitmapImageSingleFrameSkia::create(*m_data.m_platformContext.bitmap(), copyBehavior == CopyBackingStore, m_resolutionScale);
&gt; }
&gt; 
&gt; If we use DontCopyBackingStore, it looks to me that the BitmapImageSingleFrameSkia becomes invalid once the ImageBuffer gets destroyed.
&gt; 
&gt; In our case, the buffer gets destroyed when SVGImage::nativeImageForCurrentFrame() returns.

I don&apos;t know much about this but maybe it would make sense to have a &quot;StealBackingStore&quot; action to avoid copying for such case (temporary ImageBuffer)? Skia seems to have SkBitmap::swap() that may be useful in this case.

As I said, I don&apos;t know much about this so it may be a silly idea :)

This may be a bit out of scope for this patch since I&apos;m basically restoring the previous SVGImage::nativeImageForCurrentFrame() implementation that got removed in r142765.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866697</commentid>
    <comment_count>33</comment_count>
      <attachid>195580</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-30 16:19:49 -0700</bug_when>
    <thetext>Comment on attachment 195580
Patch

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

I think this is getting very close. Do you mind updating this with the comments I made below?

@senorblanco: Are you convinced we&apos;re doing the right thing here? If so, do you mind doing a final once-over?

I investigated whether we have a security issue on the other platforms and I think they look good after all. Cursors re-request the native image on every update. Canvas patterns ref the Image so caching the native image in the Image does not result in a use after free.

&gt; LayoutTests/svg/canvas/canvas-pattern-svg.html:4
&gt; +  &lt;title&gt;createPattern repeat test&lt;/title&gt;

Can you change this to:
&lt;title&gt;Test for WK113420: SVG-based patterns should be drawn correctly.&lt;/title&gt;

&gt; LayoutTests/svg/canvas/canvas-pattern-svg.html:16
&gt; +      var p;

nit: can you change this to &apos;pattern&apos;?

&gt; LayoutTests/svg/canvas/canvas-pattern-svg.html:18
&gt; +      //ctx.strokeWidth(1.0);

Remove this.

&gt; LayoutTests/svg/canvas/canvas-pattern-svg.html:45
&gt; +       }

Indentation is a bit off here.

&gt; Source/WebCore/ChangeLog:20
&gt; +

You will also need to override SVGImageForContainer::nativeImageForCurrentFrame with an implementation like this:
virtual NativeImagePassPtr nativeImageForCurrentFrame() OVERRIDE
{
   return m_image-&gt;nativeImageForCurrentFrame();
}

It looks like the EWS flaked out, but I suspect the new test would have failed without this.

&gt; Source/WebCore/ChangeLog:22
&gt; +

Can you add function-level changelog entries for the non-trivial changes here? This will help us decipher what we were thinking a year from now :)

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:117
&gt;          // FrameData::clear()).

Is this comment still valid?

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:152
&gt; +    OwnPtr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(size(), 1);

size() will return the intrinsic size of the image which is probably what we want, but the spec only specifies this for bitmap images.
http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas/#dom-context-2d-createpattern

I think size() is correct but please double-check my logic here :) The previous implementation wrong for this but size() has been updated to return the intrinsic size.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:158
&gt; +    return buffer-&gt;copyImage(CopyBackingStore)-&gt;nativeImageForCurrentFrame();

Can you file a bug for DontCopyBackingStore not working and add a fixme like so:
// FIXME: WK(bug#): We should use DontCopyBackingStore here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866758</commentid>
    <comment_count>34</comment_count>
      <attachid>195580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-31 01:49:46 -0700</bug_when>
    <thetext>Comment on attachment 195580
Patch

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

I&apos;ll reupload a patch with the improvements you suggested, thanks.

&gt;&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:117
&gt;&gt;          // FrameData::clear()).
&gt; 
&gt; Is this comment still valid?

Yes, this is still what happens even if using a smart pointer like Skia now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866762</commentid>
    <comment_count>35</comment_count>
      <attachid>195891</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-31 02:42:41 -0700</bug_when>
    <thetext>Created attachment 195891
Patch

New iteration of the patch based on Philip&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867844</commentid>
    <comment_count>36</comment_count>
      <attachid>195891</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-04-02 07:57:24 -0700</bug_when>
    <thetext>Comment on attachment 195891
Patch

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

&gt; LayoutTests/svg/canvas/canvas-pattern-svg-expected.txt:1
&gt; +There should be one big square below containing four squares. Top left square should be filled with 3 rows of 3 circles. Top right square should have one column of 3 circles. The bottom left square should have one row with three circles. The bottom right square should have one circle in the top-left corner.

IWBN if this was a reftest or a script test, to avoid platform-specific baselines.

&gt; Source/WebCore/loader/icon/IconDatabase.cpp:302
&gt; +NativeImagePassPtr IconDatabase::synchronousNativeIconForPageURL(const String&amp; pageURLOriginal, const IntSize&amp; size)

Sorry for the bikeshedding, but perhaps this should be named PassNativeImagePtr?  Would match the naming of RefPtr/PassRefPtr better.

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.h:44
&gt; +// &quot;NativeImage&quot;, it is a typedef to this type. It has an SkBitmap, and also

Nit:  this comment is stale (there is no &quot;NativeImage&quot; anymore).

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:145
&gt; +// Passes ownership of the NativeImage to the caller so NativeImagePassPtr needs

Nit:  comment is now wrong (there is no NativeImage type anymore).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867991</commentid>
    <comment_count>37</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-04-02 10:31:11 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; IWBN if this was a reftest or a script test, to avoid platform-specific baselines.
&gt; 

I don&apos;t think this can be a reftest. Patterns draw into an intermediate buffer before being stamped out, the alpha is ever-so-slightly different which will cause a reftest to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868044</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-02 11:01:44 -0700</bug_when>
    <thetext>Philip, do you also prefer PassNativeImagePtr instead of NativeImagePassPtr?

I don&apos;t mind making the change, I just want to make sure everyone is in agreement before going through it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868064</commentid>
    <comment_count>39</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-04-02 11:08:40 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Philip, do you also prefer PassNativeImagePtr instead of NativeImagePassPtr?
&gt; 
&gt; I don&apos;t mind making the change, I just want to make sure everyone is in agreement before going through it :)

I don&apos;t think it&apos;s a huge deal, but I do agree with senorblanco that PassNativeImagePtr is a bit better. If you can make those changes though, I&apos;m ready to r+ so we can land this today :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868065</commentid>
    <comment_count>40</comment_count>
      <attachid>195891</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-04-02 11:09:12 -0700</bug_when>
    <thetext>Comment on attachment 195891
Patch

R+ but please address senorblanco&apos;s concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868083</commentid>
    <comment_count>41</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-02 11:17:53 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 195891 [details])
&gt; R+ but please address senorblanco&apos;s concerns.

Ok, I&apos;ll address senorblanco&apos;s comments and reupload. Note however that we cannot really land it until the dependency (Bug 113492) lands or we may have a few crashes in the tests (at least I have them locally) :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868105</commentid>
    <comment_count>42</comment_count>
      <attachid>196192</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-02 11:32:42 -0700</bug_when>
    <thetext>Created attachment 196192
Patch

Addressed SenorBlanco&apos;s comment (except the ref test). Waiting for dependency to land before setting cq flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868916</commentid>
    <comment_count>43</comment_count>
      <attachid>196413</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-03 14:52:42 -0700</bug_when>
    <thetext>Created attachment 196413
Patch

Requesting review again as the rebasing was not trivial now that BitmapImageSingleFrameSkia was removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868954</commentid>
    <comment_count>44</comment_count>
      <attachid>196413</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-04-03 16:41:26 -0700</bug_when>
    <thetext>Comment on attachment 196413
Patch

r=me. Would you like me to check the commit flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868965</commentid>
    <comment_count>45</comment_count>
      <attachid>196413</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-04-03 17:18:03 -0700</bug_when>
    <thetext>Comment on attachment 196413
Patch

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

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp:52
&gt; +    ,  m_resizeRequests(0)

Nit:  spacing looks off here.

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp:62
&gt; +SkBitmap NativeImageSkia::deepSkBitmapCopy(const SkBitmap&amp; bitmap)
&gt; +{
&gt; +    SkBitmap tmp;
&gt; +    if (!bitmap.deepCopyTo(&amp;tmp, bitmap.config()))
&gt; +        bitmap.copyTo(&amp;tmp, bitmap.config());
&gt; +
&gt; +    return tmp;

This doesn&apos;t feel like it belongs here, since it has nothing to do with NativeImageSkia.

How about we make NativeImageSkia always deal with shallow copies, and move this function into the places which need deep copying (ie., ImageBufferSkia.cpp)?

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.h:63
&gt; +    PassRefPtr&lt;NativeImageSkia&gt; clone(CopyBehavior copyBehavior) const
&gt; +    {
&gt; +        return adoptRef(new NativeImageSkia(copyBehavior == CopyPixels ? deepSkBitmapCopy(m_image) : m_image, m_resolutionScale, m_resizedImage, m_cachedImageInfo, m_resizeRequests));
&gt; +    }

It looks like this is always called with DoNotCopyPixels.  I suggest getting rid of the argument altogether, and always do shallow copying.

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:552
&gt; +    RefPtr&lt;BitmapImage&gt; opaqueImage = BitmapImage::create(NativeImageSkia::create(drawBitmap, NativeImageSkia::CopyPixels));

Does this actually need deep copying?

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:559
&gt; +    RefPtr&lt;BitmapImage&gt; alphaImage = BitmapImage::create(NativeImageSkia::create(drawBitmap, NativeImageSkia::CopyPixels));

Same here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869041</commentid>
    <comment_count>46</comment_count>
      <attachid>196413</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 00:21:25 -0700</bug_when>
    <thetext>Comment on attachment 196413
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp:62
&gt;&gt; +    return tmp;
&gt; 
&gt; This doesn&apos;t feel like it belongs here, since it has nothing to do with NativeImageSkia.
&gt; 
&gt; How about we make NativeImageSkia always deal with shallow copies, and move this function into the places which need deep copying (ie., ImageBufferSkia.cpp)?

Personally, I liked that pixels copying was codified in the API. Right now, it is just a comment saying &quot;please be careful this constructor makes a shallow copy&quot;. It is easy for the developer to overlook. But anyways, I&apos;ll move this the ImageBufferSkia.

&gt;&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:559
&gt;&gt; +    RefPtr&lt;BitmapImage&gt; alphaImage = BitmapImage::create(NativeImageSkia::create(drawBitmap, NativeImageSkia::CopyPixels));
&gt; 
&gt; Same here?

Yes, this one does. I&apos;ll need to create another SkBitmap for alphaImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869042</commentid>
    <comment_count>47</comment_count>
      <attachid>196448</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 00:24:31 -0700</bug_when>
    <thetext>Created attachment 196448
Patch

Take Stephen&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869087</commentid>
    <comment_count>48</comment_count>
      <attachid>196448</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-04-04 03:21:19 -0700</bug_when>
    <thetext>Comment on attachment 196448
Patch

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

Looks great.  The rest are just nits; we can do the copyImage() refactor in another patch if you like.  r=me

&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:273
&gt; +    const SkBitmap&amp; bitmap = *m_data.m_platformContext.bitmap();
&gt; +    RefPtr&lt;Image&gt; image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));

Nit:  I think this could now simply call ImageBuffer::copyImage(drawNeedsCopy(m_context.get(), context)), no?

&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:281
&gt; +    const SkBitmap&amp; bitmap = *m_data.m_platformContext.bitmap();
&gt; +    RefPtr&lt;Image&gt; image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));

Same here.

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.h:53
&gt; +    // This constructor does a shallow copy of the passed-in SkBitmap (ie., it

Nit:  technically this is a function, or factory function, not a constructor.

&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.h:61
&gt; +    // This constructor does a shallow copy of the internal SkBitmap (ie., it

Nit:  same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869089</commentid>
    <comment_count>49</comment_count>
      <attachid>196448</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 03:27:50 -0700</bug_when>
    <thetext>Comment on attachment 196448
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:273
&gt;&gt; +    RefPtr&lt;Image&gt; image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));
&gt; 
&gt; Nit:  I think this could now simply call ImageBuffer::copyImage(drawNeedsCopy(m_context.get(), context)), no?

Actually, resolutionScale might be different. draw uses 1 for resolutionScale but copyImage() uses m_resolutionScale.

&gt;&gt; Source/WebCore/platform/graphics/skia/NativeImageSkia.h:53
&gt;&gt; +    // This constructor does a shallow copy of the passed-in SkBitmap (ie., it
&gt; 
&gt; Nit:  technically this is a function, or factory function, not a constructor.

Oops, I moved the comment from the constructor and forgot to update this part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869091</commentid>
    <comment_count>50</comment_count>
      <attachid>196448</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 03:35:23 -0700</bug_when>
    <thetext>Comment on attachment 196448
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:273
&gt;&gt;&gt; +    RefPtr&lt;Image&gt; image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));
&gt;&gt; 
&gt;&gt; Nit:  I think this could now simply call ImageBuffer::copyImage(drawNeedsCopy(m_context.get(), context)), no?
&gt; 
&gt; Actually, resolutionScale might be different. draw uses 1 for resolutionScale but copyImage() uses m_resolutionScale.

The CG implementation seems to call copyImage() and m_resolutionScale here so it should be fine. However, I&apos;d prefer to keep this out of this patch as this is not strictly related and it may change the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869092</commentid>
    <comment_count>51</comment_count>
      <attachid>196464</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 03:37:51 -0700</bug_when>
    <thetext>Created attachment 196464
Patch for landing

Fixed the comments but did not refactor the ImageBufferSkia draw() methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869093</commentid>
    <comment_count>52</comment_count>
      <attachid>196448</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-04-04 03:39:08 -0700</bug_when>
    <thetext>Comment on attachment 196448
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:273
&gt;&gt;&gt;&gt; +    RefPtr&lt;Image&gt; image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));
&gt;&gt;&gt; 
&gt;&gt;&gt; Nit:  I think this could now simply call ImageBuffer::copyImage(drawNeedsCopy(m_context.get(), context)), no?
&gt;&gt; 
&gt;&gt; Actually, resolutionScale might be different. draw uses 1 for resolutionScale but copyImage() uses m_resolutionScale.
&gt; 
&gt; The CG implementation seems to call copyImage() and m_resolutionScale here so it should be fine. However, I&apos;d prefer to keep this out of this patch as this is not strictly related and it may change the behavior.

Ahh, good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869119</commentid>
    <comment_count>53</comment_count>
      <attachid>196464</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-04 05:03:56 -0700</bug_when>
    <thetext>Comment on attachment 196464
Patch for landing

Clearing flags on attachment: 196464

Committed r147622: &lt;http://trac.webkit.org/changeset/147622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869120</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-04 05:04:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195354</attachid>
            <date>2013-03-27 10:57:00 -0700</date>
            <delta_ts>2013-03-27 15:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_chromium_svg_cursor.patch</filename>
            <type>text/plain</type>
            <size>3452</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NDU2MjNhLi41YTZlM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMDMtMjcgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJz
b3JzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFydGlhbCByZXZlcnQgb2YgcjE0Mjc2NSB0byBicmluZyBiYWNrIGltcGxlbWVu
dGF0aW9uIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICAgICAgZm9yIFNWR0lt
YWdlLiBUaGlzIGlzIG5lZWRlZCBhdCBsZWFzdCBieSBDaHJvbWl1bSdzIFdlYkltYWdlIGFuZCBj
dXN0b20gU1ZHIGN1cnNvcnMKKyAgICAgICAgd2lsbCBub3Qgc2hvdyB3aXRob3V0IGl0LgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gdGVzdGFibGUgdmlhIGxheW91dCB0ZXN0LgorCisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisKIDIwMTMtMDMtMjcgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXBkYXRlIFRp
bWVsaW5lLlRpbWVsaW5lRXZlbnQgZGVmaW5pdGlvbiB0byBpbmNsdWRlIERPTSBjb3VudGVycyBh
bmQgbmF0aXZlIG1lbW9yeSBzdGF0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggMjk2YzM0ZC4uOGIzNzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC02MCw2ICs2MCwyMyBAQCBTVkdJbWFnZTo6flNWR0ltYWdlKCkK
ICAgICBBU1NFUlQoIW1fY2hyb21lQ2xpZW50IHx8ICFtX2Nocm9tZUNsaWVudC0+aW1hZ2UoKSk7
CiB9CiAKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCit7CisgICAgLy8gRklYTUU6IEluIG9yZGVyIHRvIHN1cHBvcnQgZHluYW1pYyBTVkdzIHdl
IG5lZWQgdG8gaGF2ZSBhIHdheSB0byBpbnZhbGlkYXRlIHRoaXMKKyAgICAvLyBmcmFtZSBjYWNo
ZSwgb3IgYmV0dGVyIHlldCwgbm90IHVzZSBhIGNhY2hlIGZvciB0aWxlZCBkcmF3aW5nIGF0IGFs
bCwgaW5zdGVhZAorICAgIC8vIGhhdmluZyBhIHRpbGVkIGRyYXdpbmcgY2FsbGJhY2sgKGhvcGVm
dWxseSBub24tdmlydHVhbCkuCisgICAgaWYgKCFtX2ZyYW1lQ2FjaGUpIHsKKyAgICAgICAgaWYg
KCFtX3BhZ2UpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CisgICAgICAgIGlm
ICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsK
KyAgICAgICAgbV9mcmFtZUNhY2hlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9y
ZSk7CisgICAgfQorICAgIHJldHVybiBtX2ZyYW1lQ2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Cit9CisKIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoIW1fcGFnZSB8fCAhdXNlc0NvbnRhaW5lclNpemUoKSkK
QEAgLTM1NSw2ICszNzIsNyBAQCB2b2lkIFNWR0ltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIEltYWdlOjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2Nocm9t
ZUNsaWVudCwgImNocm9tZUNsaWVudCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZSwgInBh
Z2UiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lQ2FjaGUsICJmcmFtZUNhY2hlIik7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZjA5YTJiMS4u
ZmNhZGZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTg3LDYg
Kzg3LDggQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVz
cyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisKICAgICBTVkdJbWFnZShJbWFn
ZU9ic2VydmVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2
b2lkIGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBm
bG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CkBAIC05Niw2ICs5OCw3IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPFNWR0ltYWdlQ2hyb21lQ2xpZW50PiBtX2Nocm9tZUNsaWVudDsKICAgICBPd25Q
dHI8UGFnZT4gbV9wYWdlOwogICAgIEludFNpemUgbV9pbnRyaW5zaWNTaXplOworICAgIFJlZlB0
cjxJbWFnZT4gbV9mcmFtZUNhY2hlOwogfTsKIH0KIAo=
</data>
<flag name="review"
          id="217227"
          type_id="1"
          status="-"
          setter="pdr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195411</attachid>
            <date>2013-03-27 15:18:23 -0700</date>
            <delta_ts>2013-03-27 15:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>37939</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NDU2MjNhLi5hZDE2OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkg
QEAKKzIwMTMtMDMtMjcgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJz
b3JzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVwbGFjZSBOYXRpdmVJbWFnZVB0ciBieSBQYXNzUmVmUHRyPE5hdGl2ZUltYWdl
Pi4gRm9yIG5vdywgb25seSBTa2lhIGNvZGUKKyAgICAgICAgaGFzIGJlZW4gcG9ydGVkIGFzIGl0
IHJlcXVpcmVzIHRoZSBOYXRpdmVJbWFnZSB0eXBlIHRvIGJlIFJlZkNvdW50ZWQuCisgICAgICAg
IFRoaXMgaXMgbGVzcyBlcnJvciBwcm9uZSBhcyBtZXRob2RzIHRoYXQgcmV0dXJuIGEgTmF0aXZl
SW1hZ2VQdHIgc29tZXRpbWVzCisgICAgICAgIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBjYWxsZXIu
CisKKyAgICAgICAgUHJvdmlkZSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGltcGxlbWVu
dGF0aW9uIGZvciBTVkdJbWFnZS4KKyAgICAgICAgU1ZHSW1hZ2UgZG9lcyBub3QgaG9sZCB0aGUg
bmF0aXZlIGltYWdlIGludGVybmFsbHkgdG8gc2F2ZSBtZW1vcnkuIEl0IGlzCisgICAgICAgIHRo
ZXJlZm9yZSBjcmVhdGVkIHdoZW4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpcyBjYWxs
ZWQgYW5kCisgICAgICAgIG93bmVyc2hpcCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxlci4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0YWJsZSB2aWEgbGF5b3V0IHRlc3RzLgorCisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQ
YWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAg
KEljb25EYXRhYmFzZSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5o
OgorICAgICAgICAoSWNvbkRhdGFiYXNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2VCYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKEZyYW1lRGF0YSk6CisgICAgICAgIChCaXRtYXBJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoSW1hZ2VFeHRyYWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVC
bGVuZFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0
cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29t
cG9uZW50VHJhbnNmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJh
bnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRl
Y29kZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OkJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdl
U2tpYS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOYXRpdmVJbWFnZVNraWEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDEzLTAzLTI3ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBUaW1l
bGluZS5UaW1lbGluZUV2ZW50IGRlZmluaXRpb24gdG8gaW5jbHVkZSBET00gY291bnRlcnMgYW5k
IG5hdGl2ZSBtZW1vcnkgc3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwCmluZGV4IDNjYjEzOTYuLjYyYzZjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMjk5LDcgKzI5OSwxMiBAQCBJbWFnZSogSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQor
I2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJbWFn
ZVB0cgorI2VuZGlmCitJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmln
aW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5lN2U5NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7CiAKICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91
c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKTsKKyNpZiBVU0Uo
U0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IHN5bmNocm9ub3VzTmF0
aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IElu
dFNpemUmKTsKKyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJ
bnRTaXplJik7CisjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxG
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0lj
b25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgSWNvbkxv
YWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5n
JiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uOTQwMDAyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc5LDcgKzE3OSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEljb25M
b2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4gSWNvbkxvYWRObzsgfQogICAgIHZpcnR1YWwg
SW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50
U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TmF0aXZlSW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNlbHNlCiAgICAgdmlydHVhbCBO
YXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9CisjZW5kaWYKIAogICAgIC8vIEFzeW5j
aHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3Vw
cG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hy
b21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFn
SW1hZ2VDaHJvbWl1bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTmF0aXZl
SW1hZ2VTa2lhKiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJk
Q2hyb21pdW0uY3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAt
MTM4LDcgKzEzOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCmluZGV4IGNmNDMwNzMuLjI3NDQxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5OSw3ICsyOTksMTIgQEAgYm9vbCBC
aXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNl
CitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgpKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTMyMCw3ICszMjUsMTIgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
Lm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCisjaWYgVVNFKFNLSUEpCitQYXNzUmVmUHRyPE5hdGl2ZUltYWdl
PgorI2Vsc2UKK05hdGl2ZUltYWdlUHRyCisjZW5kaWYKK0JpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJh
bWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAppbmRleCA2NjRlZTJhLi42ZjhkNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTkwLDcgKzkwLDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisj
aWYgVVNFKFNLSUEpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2ZyYW1lOworI2Vsc2UKICAg
ICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworI2VuZGlmCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uOwogICAgIGZsb2F0IG1fZHVyYXRpb247CiAgICAgYm9vbCBtX2hhdmVNZXRh
ZGF0YSA6IDE7CkBAIC0xMDksMTAgKzExMywxNyBAQCBjbGFzcyBCaXRtYXBJbWFnZSA6IHB1Ymxp
YyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOwogICAg
IGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6CisjaWYgVVNFKFNLSUEpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQYXNzUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShuYXRpdmVJbWFnZSwgb2Jz
ZXJ2ZXIpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcEltYWdl
PiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2Uo
bmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQorI2VuZGlmCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKG9ic2VydmVyKSk7
CkBAIC0xNzcsNyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBn
ZXRFdmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworI2lmIFVTRShTS0lBKQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBP
VkVSUklERTsKKyNlbHNlCisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAgICBJbWFnZU9yaWVudGF0
aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyArMjE0LDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtub3du
IHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAorI2lmIFVTRShTS0lBKQorICAgIEJpdG1hcEltYWdl
KFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+LCBJbWFnZU9ic2VydmVyKiA9IDApOworI2Vsc2UKICAg
ICBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKKyNlbmRp
ZgogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CiAjaWYgUExBVEZPUk0oV1gp
CiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmKTsKQEAgLTIxOSw3ICsyMzksMTEgQEAg
cHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpOworI2lmIFVT
RShTS0lBKQorICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lQXRJbmRleChzaXplX3Qp
OworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyNlbmRp
ZgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC05
MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwogCiAjaWYg
VVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7
Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7CisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAgICAgICBJbWFnZVNvdXJj
ZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3Vy
ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDYzNzY0
M2QuLjJmNzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApA
QCAtMTQyLDcgKzE0MiwxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRj
aFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKKyNpZiBVU0UoU0tJ
QSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorI2Vsc2UKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorI2VuZGlmCiAg
ICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdl
IGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWEyODlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQxLDcgKzE0MSwxMiBAQCBz
aXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29k
ZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIElt
YWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorI2lmIFVTRShTS0lB
KQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlm
CitJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBp
ZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2NmE4YTBhLi5lYTZhZTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTE0
OSw3ICsxNDksMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwg
dGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBz
ZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KKyNpZiBVU0UoU0tJQSkKKyAgICBQYXNzUmVm
UHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyNlbHNlCiAgICAg
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisjZW5kaWYKIAogICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkg
dXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2VQdHIuaAppbmRleCAxYWQ1YmU5Li4yYThiYjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTU2LDYgKzU2
LDggQEAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisv
LyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgUmVmQ291bnRl
ZAorLy8gTmF0aXZlSW1hZ2UuCiAjaWYgVVNFKENHKQogdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2
ZUltYWdlUHRyOwogI2VsaWYgUExBVEZPUk0oUVQpCkBAIC03Miw3ICs3NCw3IEBAIHR5cGVkZWYg
d3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBXZWJD
b3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShTS0lBKQot
dHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRl
ZiBOYXRpdmVJbWFnZVNraWEgTmF0aXZlSW1hZ2U7CiB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNv
bnN0IE5hdGl2ZUltYWdlU2tpYSosIFdURjo6TWVtb3J5T2JqZWN0SW5mbyopOwogI2VsaWYgT1Mo
V0lOQ0UpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjAzZDE5ZS4uM2U2YWNkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00ODcsNyArNDg3LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAg
ICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0
aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDog
MDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAgaWYgKG1fY29udGVudHNMYXllclB1
cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAgICAgICAgICAgICBtX2ltYWdlTGF5
ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5j
cmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKaW5kZXggNjRlNTM1
OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBAIC03Miw4ICs3Miw4IEBA
IGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFJlZlB0cjxJbWFnZT4gZm9y
ZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kID0gaW4yLT5hc0ltYWdlQnVmZmVy
KCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAgICBOYXRpdmVJbWFnZVNr
aWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiYWNrZ3JvdW5kTmF0aXZlSW1hZ2Ug
PSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91bmQtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYmFj
a2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUltYWdlIHx8ICFiYWNrZ3JvdW5kTmF0
aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1h
dHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
Q29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJvb2wgRkVDb2xvck1hdHJp
eDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBm
aWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKIAogICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29t
cG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKaW5kZXggYjBmODBjZS4u
NGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1B
cHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2
ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlz
cGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4uMWJlNDU1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2Vt
ZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKQEAgLTcxLDggKzcxLDggQEAgYm9v
bCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFJlZlB0cjxJbWFn
ZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKS0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAotICAgIE5hdGl2ZUltYWdlU2tpYSog
Y29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwot
ICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFnZSA9IGRpc3BsLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNvbG9yTmF0
aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdlID0gZGlzcGwtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9yTmF0aXZlSW1hZ2UgfHwgIWRpc3Bs
TmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGlu
Z1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRp
bmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBw
bHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKIAogICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAppbmRleCBmYjY2MTU1Li5iODA5YmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcApAQCAtMTEsMTIgKzExLDEy
IEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmlzQml0bWFwSW1hZ2UoKSBjb25z
dAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmlzT3BhcXVl
KCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmlzT3BhcXVlKCk7CiB9CiAK
IEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OnNpemUoKSBjb25zdAogewotICAg
IHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJ
bWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFNpemUobV9uYXRpdmVJbWFn
ZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwog
fQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9uZSByZXByZXNlbnRhdGlv
biBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3LDE5ICsyNywxOSBAQCB2b2lkIEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogCiB1
bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZGVjb2RlZFNpemUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmRlY29kZWRTaXplKCk7CisgICAgcmV0dXJuIG1f
bmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7CiB9CiAKIC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmds
ZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewotICAg
IHJldHVybiAmbV9uYXRpdmVJbWFnZTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZTsKIH0KIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5v
dFNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRo
KCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhlaWdodCgpICE9IDE7CisgICAgcmV0
dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdl
LT5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNr
aWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWEuaAppbmRleCA1NmViZTNhLi4wYjI3ZDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIG9ic2VydmVycywgYW5pbWF0aW9uLCBtdWx0aXBsZSBmcmFtZXMsIG9yIG5vbi1kZWNv
ZGVkIGRhdGEuCiAvLyBUaGVyZWZvcmUgdHJpbW1pbmcgdGhlIGRlY29kZWQgZGF0YSAoZGVzdHJv
eURlY29kZWREYXRhKCkpIGhhcyBubyBlZmZlY3QuCiAvLwotLy8gVGhlIGRpZmZpY3VsdHkgd2l0
aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZVB0cikKLS8v
IGlzIHRoYXQgTmF0aXZlSW1hZ2VQdHIgPSBOYXRpdmVJbWFnZVNraWEsIHlldCBjYWxsZXJzIGhh
dmUgU2tCaXRtYXAuCisvLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1dHRpbmcgdGhpcyBpbiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+KQorLy8gaXMgdGhhdCBOYXRp
dmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2ZSBTa0JpdG1hcC4KIGNs
YXNzIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoK
ICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLiAgSWYg
ImNvcHlQaXhlbHMiIGlzIHRydWUsIGEKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsKIAogICAgIC8vIFdlIG9ubHkgaGF2
ZSBhIHNpbmdsZSBmcmFtZS4KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03Myw3ICs3Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2YXRlOgotICAg
IE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhl
IGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29weS4KICAgICBCaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2IxYzhmMi4uOGFjNmQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zdGF0dXMoKSAhPSBJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAgICAgICBtX25hdGl2ZUltYWdlID0g
YWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIG1fbmF0aXZlSW1h
Z2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgICAgICBpZiAoIW1fbmF0aXZlSW1h
Z2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkgfHwgIW1fbmF0aXZl
SW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdo
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTa0JpdG1hcDo6Q29uZmln
IHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5jb25maWcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRl
eCAxZGVjMWVlLi40OTkxYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTIsOCArNDUyLDEyIEBAIGJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgaWYgKG1fZnJhbWUpIHsKICAg
ICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9m
cmFtZXwgYW5kIHBhc3NlZAogICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdl
IG11c3QgZGVsZXRlIGl0IGhlcmUuCisjaWYgVVNFKFNLSUEpCisgICAgICAgIG1fZnJhbWUuY2xl
YXIoKTsKKyNlbHNlCiAgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwogICAgICAgICBtX2ZyYW1lID0g
MDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNDcxLDcgKzQ3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBUUkFDRV9FVkVOVDAo
InNraWEiLCAiSW1hZ2U6OmRyYXdQYXR0ZXJuIik7CiAjZW5kaWYKLSAgICBOYXRpdmVJbWFnZVNr
aWEqIGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01NzIsNyArNTc2LDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgp
ID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhKiBm
cmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFt
ZSA9IGZyYW1lQXRJbmRleCgwKTsKIAogICAgIGlmIChmcmFtZSAmJiBzaXplKCkud2lkdGgoKSA9
PSAxICYmIHNpemUoKS5oZWlnaHQoKSA9PSAxKSB7CiAgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMg
bG9jayhmcmFtZS0+Yml0bWFwKCkpOwpAQCAtNTk5LDcgKzYwMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsCiAgICAgLy8gY2F1c2luZyBmbGlja2VyIGFuZCB3YXN0aW5nIENQVS4KICAgICBz
dGFydEFuaW1hdGlvbigpOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBibSA9IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYm0gPSBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYm0pCiAgICAgICAgIHJldHVybjsg
Ly8gSXQncyB0b28gZWFybHkgYW5kIHdlIGRvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogCkBAIC02
NTEsMTMgKzY1NSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY3R4dCwKIHsKICAgICBGbG9hdFJlY3Qgbm9ybURzdFJlY3QgPSBub3Jt
YWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0UmVjdCBub3JtU3JjUmVjdCA9IG5vcm1hbGl6
ZVJlY3Qoc3JjUmVjdCk7Ci0gICAgbm9ybVNyY1JlY3QuaW50ZXJzZWN0KEZsb2F0UmVjdCgwLCAw
LCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCku
aGVpZ2h0KCkpKTsKKyAgICBub3JtU3JjUmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAsIG1f
bmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhl
aWdodCgpKSk7CiAKICAgICBpZiAobm9ybVNyY1JlY3QuaXNFbXB0eSgpIHx8IG5vcm1Ec3RSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRyYXcuCiAKICAgICBw
YWludFNrQml0bWFwKGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLAotICAgICAgICBtX25hdGl2ZUlt
YWdlLAorICAgICAgICAqbV9uYXRpdmVJbWFnZSwKICAgICAgICAgbm9ybVNyY1JlY3QsCiAgICAg
ICAgIG5vcm1Ec3RSZWN0LAogICAgICAgICBXZWJDb3JlQ29tcG9zaXRlVG9Ta2lhQ29tcG9zaXRl
KGNvbXBvc2l0ZU9wKSk7CkBAIC02NjcsNyArNjcxLDcgQEAgdm9pZCBCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsCiB9CiAKIEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1h
cCYgYml0bWFwLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCi0gICAgOiBtX25hdGl2ZUltYWdlKGJp
dG1hcCwgcmVzb2x1dGlvblNjYWxlKQorICAgIDogbV9uYXRpdmVJbWFnZShhZG9wdFJlZihuZXcg
TmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VT
a2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdl
U2tpYS5oCmluZGV4IDhiNzk1ZTIuLjUwOGVmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaApAQCAtMzUsMjIg
KzM1LDQzIEBACiAjaW5jbHVkZSAiU2tSZWN0LmgiCiAjaW5jbHVkZSAiU2tTaXplLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMgdGhlICJuYXRpdmUg
aW1hZ2UiIGluIG91ciBwb3J0LiBXaGVuIFdlYktpdCB1c2VzCi0vLyAiTmF0aXZlSW1hZ2VQdHIi
LCBpdCBpcyBhIHBvaW50ZXIgdG8gdGhpcyB0eXBlLiBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBh
bHNvCisvLyAiTmF0aXZlSW1hZ2UiLCBpdCBpcyBhIHR5cGVkZWYgdG8gdGhpcyB0eXBlLiBJdCBo
YXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNvCiAvLyBzdG9yZXMgYSBjYWNoZWQgcmVzaXplZCBpbWFn
ZS4KLWNsYXNzIE5hdGl2ZUltYWdlU2tpYSB7CitjbGFzcyBOYXRpdmVJbWFnZVNraWEgOiBwdWJs
aWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZVNraWE+IHsKIHB1YmxpYzoKICAgICBOYXRpdmVJbWFn
ZVNraWEoKTsKLSAgICB+TmF0aXZlSW1hZ2VTa2lhKCk7CiAKICAgICAvLyBUaGlzIGNvbnN0cnVj
dG9yIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBTa0JpdG1hcCAoaWUuLCBp
dAogICAgIC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBhbmQgYnVtcHMgdGhlIHJl
ZmNvdW50KS4gIFVzZSBvbmx5IHdoZW4KICAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGlj
cy4KICAgICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpOwogCisgICAgfk5hdGl2ZUltYWdlU2tpYSgpOworCisgICAgTmF0aXZlSW1hZ2VTa2lh
KGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXIpCisgICAgeworICAgICAgICBvcGVyYXRvcj0o
b3RoZXIpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlU2tpYSYgb3BlcmF0b3I9KGNvbnN0IE5h
dGl2ZUltYWdlU2tpYSYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIp
CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICAgICAgbV9pbWFnZSA9IG90aGVyLm1f
aW1hZ2U7CisgICAgICAgIG1fcmVzb2x1dGlvblNjYWxlID0gb3RoZXIubV9yZXNvbHV0aW9uU2Nh
bGU7CisgICAgICAgIG1fcmVzaXplZEltYWdlID0gb3RoZXIubV9yZXNpemVkSW1hZ2U7CisgICAg
ICAgIG1fY2FjaGVkSW1hZ2VJbmZvID0gb3RoZXIubV9jYWNoZWRJbWFnZUluZm87CisgICAgICAg
IG1fcmVzaXplUmVxdWVzdHMgPSBvdGhlci5tX3Jlc2l6ZVJlcXVlc3RzOworCisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMg
b2YgaW1hZ2UgZGF0YS4gVGhpcyBpbmNsdWRlcyB0aGUgY2FjaGVkCiAgICAgLy8gcmVzaXplZCB2
ZXJzaW9uIGlmIHRoZXJlIGlzIG9uZS4KICAgICBpbnQgZGVjb2RlZFNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNr
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tp
YS5jcHAKaW5kZXggMmFlNGRkNi4uZmEwYWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgUGxhdGZvcm1QYXR0ZXJuUHRyIFBhdHRlcm46OnBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2YKICAgICAvLyBhbmQgZXhwYW5kZWQgc2NhbGUgYW5k
IHNrZXcgaW46CiAgICAgLy8gTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdy
YWQtMDYtYi5zdmcKIAotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSogaW1hZ2UgPSBtX3RpbGVJ
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBiaXRtYXAsIHJldHVybiBhIHRyYW5zcGFyZW50
IHNoYWRlci4KICAgICBpZiAoIWltYWdlKQogICAgICAgICBtX3BhdHRlcm4gPSBuZXcgU2tDb2xv
clNoYWRlcihTa0NvbG9yU2V0QVJHQigwLCAwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDEwNDI0
YTUuLjhhOTA4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRvIHRo
ZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAgICAvLyAoQWN0dWFsIHVzZTog
VGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1hZ2UgYW5kIGZyZWVkIGluCiAg
ICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCisjaWYgVVNFKFNLSUEpCisgICAgICAgIFBh
c3NSZWZQdHI8TmF0aXZlSW1hZ2U+IGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyNlbHNlCiAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyNlbmRpZgog
CiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYg
b3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQzYjg2Li5lNWJjYjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0lt
YWdlRGVjb2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTEwMiw5ICsxMDIsOSBAQCBib29s
IEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUlt
YWdlKCkgY29uc3QKK1Bhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlRnJhbWU6OmFzTmV3TmF0
aXZlSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgTmF0aXZlSW1hZ2VTa2lhKG1fYml0
bWFwKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYShtX2JpdG1hcCkp
OwogfQogCiBib29sIEltYWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDI5NmMzNGQuLjNiM2M5ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTQxLDYgKzE0MSwyMiBAQCB2
b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplIGNvbnRhaQogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
fQogCisjaWYgVVNFKFNLSUEpCitQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2Nh
dGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgp
LCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5
QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKyNlbmRpZgor
CiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmMDlhMmIxLi42
N2Y1NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjIsNiAr
NjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVTRShTS0lBKQorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFn
ZUNocm9tZUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CkBA
IC04Miw4ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YShib29sKSB7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgo
c2l6ZV90KSB7IHJldHVybiAwOyB9Ci0KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8g
YmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3du
VG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNTBiMDZiYi4uMGExZGYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wMy0yNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1
bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMTQyNzY1KSBCcm9r
ZSBDdXN0b20gU1ZHIGN1cnNvcnMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSBub3cgdGhhdCBJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgc21hcnQKKyAgICAgICAgcG9pbnRl
ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAgICAqIHNyYy9XZWJJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleCk6
CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpmcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcmFtZXNGcm9tRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHRl
c3RzL0RyYWdJbWFnZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChUZXN0SW1hZ2UpOgorICAgICAgICAq
IHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChUZXN0SW1hZ2Up
OgorCiAyMDEzLTAzLTI2ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTA0YWIx
My4uMjY1MTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURl
Y29kZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2VEZWNvZGVyOjpn
ZXRGcmFtZUF0SW5kZXgoaW50IGluZGV4ID0gMCkgY29uc3QKICAgICBJbWFnZUZyYW1lKiBjb25z
dCBmcmFtZUJ1ZmZlciA9IG1fcHJpdmF0ZS0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAg
ICBpZiAoIWZyYW1lQnVmZmVyKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKLSAgICBPd25Q
dHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lQnVmZmVyLT5hc05ld05h
dGl2ZUltYWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWVC
dWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICByZXR1cm4gV2ViSW1hZ2UoaW1hZ2UtPmJp
dG1hcCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5j
cHAKaW5kZXggNmQ1NTU1NS4uMmI3NjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbWFnZVNraWEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkltYWdlIFdlYkltYWdlOjpm
cm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhLCBjb25zdCBXZWJTaXplJiBkZXNpcmVkU2l6ZSkK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKIAotICAgIE93blB0
cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1h
Z2UoKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBmcmFtZS0+YXNOZXdO
YXRpdmVJbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgp
OwogCkBAIC0xMjIsOCArMTIyLDggQEAgV2ViVmVjdG9yPFdlYkltYWdlPiBXZWJJbWFnZTo6ZnJh
bWVzRnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGlt
YWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7Ci0gICAgICAgIGlmIChp
bWFnZS5nZXQoKSAmJiBpbWFnZS0+aXNEYXRhQ29tcGxldGUoKSkKKyAgICAgICAgUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOworICAgICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkpCiAgICAgICAgICAgICBmcmFt
ZXMuYXBwZW5kKFdlYkltYWdlKGltYWdlLT5iaXRtYXAoKSkpOwogICAgIH0KIApAQCAtMTU3LDgg
KzE1Nyw4IEBAIFdlYkltYWdlOjpXZWJJbWFnZShjb25zdCBQYXNzUmVmUHRyPEltYWdlPiYgaW1h
Z2UpCiAKIFdlYkltYWdlJiBXZWJJbWFnZTo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8SW1h
Z2U+JiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBwOwotICAgIGlmIChpbWFnZS5nZXQo
KSAmJiAocCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSkKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBwOworICAgIGlmIChpbWFnZSAmJiAocCA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSkKICAgICAgICAgYXNzaWduKHAtPmJpdG1hcCgpKTsK
ICAgICBlbHNlCiAgICAgICAgIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAppbmRleCBhOTQ2NWU2Li5jODI0OWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKQEAgLTY0LDEyICs2
NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NpemU7CiAgICAgfQogCi0gICAgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
CiAgICAgewogICAgICAgICBpZiAobV9zaXplLmlzWmVybygpKQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgIHJldHVy
biBtX25hdGl2ZUltYWdlOwogICAgIH0KIAogICAgIC8vIFN0dWIgaW1wbGVtZW50YXRpb25zIG9m
IHB1cmUgdmlydHVhbCBJbWFnZSBmdW5jdGlvbnMuCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE93blB0cjxOYXRpdmVJbWFnZVB0cj4gbV9u
YXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiB9Owog
CiBURVNUKERyYWdJbWFnZVRlc3QsIE51bGxIYW5kbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDRk
YjQyOGMuLjdiNDc0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNzcsMTIgKzc3LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAg
ICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1h
Z2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFs
IEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgSW50
U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChJbWFn
ZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195422</attachid>
            <date>2013-03-27 15:57:09 -0700</date>
            <delta_ts>2013-03-27 17:05:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>40564</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OTFiMjY4Li4xMGQzYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkg
QEAKKzIwMTMtMDMtMjcgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJz
b3JzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVwbGFjZSBOYXRpdmVJbWFnZVB0ciBieSBQYXNzUmVmUHRyPE5hdGl2ZUltYWdl
Pi4gRm9yIG5vdywgb25seSBTa2lhIGNvZGUKKyAgICAgICAgaGFzIGJlZW4gcG9ydGVkIGFzIGl0
IHJlcXVpcmVzIHRoZSBOYXRpdmVJbWFnZSB0eXBlIHRvIGJlIFJlZkNvdW50ZWQuCisgICAgICAg
IFRoaXMgaXMgbGVzcyBlcnJvciBwcm9uZSBhcyBtZXRob2RzIHRoYXQgcmV0dXJuIGEgTmF0aXZl
SW1hZ2VQdHIgc29tZXRpbWVzCisgICAgICAgIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBjYWxsZXIu
CisKKyAgICAgICAgUHJvdmlkZSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGltcGxlbWVu
dGF0aW9uIGZvciBTVkdJbWFnZS4KKyAgICAgICAgU1ZHSW1hZ2UgZG9lcyBub3QgaG9sZCB0aGUg
bmF0aXZlIGltYWdlIGludGVybmFsbHkgdG8gc2F2ZSBtZW1vcnkuIEl0IGlzCisgICAgICAgIHRo
ZXJlZm9yZSBjcmVhdGVkIHdoZW4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpcyBjYWxs
ZWQgYW5kCisgICAgICAgIG93bmVyc2hpcCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxlci4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0YWJsZSB2aWEgbGF5b3V0IHRlc3RzLgorCisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQ
YWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAg
KEljb25EYXRhYmFzZSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5o
OgorICAgICAgICAoSWNvbkRhdGFiYXNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2VCYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKEZyYW1lRGF0YSk6CisgICAgICAgIChCaXRtYXBJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoSW1hZ2VFeHRyYWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVC
bGVuZFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0
cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29t
cG9uZW50VHJhbnNmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJh
bnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRl
Y29kZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OkJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdl
U2tpYS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOYXRpdmVJbWFnZVNraWEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDEzLTAzLTI3ICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDUFUgcHJvZmls
ZXIuIFN3YXAgRmxhbWVDaGFydCB3aXRoIERhdGEgR3JpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDNjYjEzOTYuLjYyYzZjNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMjk5LDcgKzI5OSwx
MiBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFn
ZShzaXplKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJ
bnRTaXplJiBzaXplKQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNl
bHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0
aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdl
VVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5lN2U5NmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7CiAKICAgICB2aXJ0dWFsIElt
YWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNp
emUmKTsKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+
IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3Jp
Z2luYWwsIGNvbnN0IEludFNpemUmKTsKKyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9y
aWdpbmFsLCBjb25zdCBJbnRTaXplJik7CisjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9v
bCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAg
IHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25V
UkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uOTQwMDAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAt
MTc5LDcgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29u
VVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4gSWNvbkxvYWRObzsg
fQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNpZiBVU0UoU0tJQSkKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNlbHNl
CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9CisjZW5kaWYK
IAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhl
IGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIw
ZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRiNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENo
cm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFn
ZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFn
ZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAg
QVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gYml0bWFw
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGNmNDMwNzMuLjI3NDQxYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5OSw3ICsy
OTksMTIgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5k
ZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpm
cmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRp
dmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitCaXRtYXBJbWFnZTo6ZnJh
bWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQo
aW5kZXgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMyMCw3ICszMjUsMTIgQEAgZmxvYXQgQml0
bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisjaWYgVVNFKFNLSUEpCitQYXNzUmVm
UHRyPE5hdGl2ZUltYWdlPgorI2Vsc2UKK05hdGl2ZUltYWdlUHRyCisjZW5kaWYKK0JpdG1hcElt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lQXRJ
bmRleChjdXJyZW50RnJhbWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA2NjRlZTJhLi42ZjhkNWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTkwLDcgKzkwLDEx
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCisjaWYgVVNFKFNLSUEpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2Zy
YW1lOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworI2VuZGlmCiAgICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIGZsb2F0IG1fZHVyYXRpb247CiAgICAg
Ym9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7CkBAIC0xMDksMTAgKzExMywxNyBAQCBjbGFzcyBCaXRt
YXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVy
YXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Cisj
aWYgVVNFKFNLSUEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQ
YXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShu
YXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQorI2VuZGlmCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcElt
YWdlKG9ic2VydmVyKSk7CkBAIC0xNzcsNyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAgdmlydHVh
bCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworI2lmIFVTRShT
S0lBKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbHNlCisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworI2VuZGlmCisKICAgICB2
aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAg
ICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyAr
MjE0LDExIEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9u
IGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAorI2lmIFVTRShTS0lBKQor
ICAgIEJpdG1hcEltYWdlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+LCBJbWFnZU9ic2VydmVyKiA9
IDApOworI2Vsc2UKICAgICBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZl
ciogPSAwKTsKKyNlbmRpZgogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CiAj
aWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmKTsKQEAgLTIx
OSw3ICsyMzksMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVD
b3VudCgpOworI2lmIFVTRShTS0lBKQorICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1l
QXRJbmRleChzaXplX3QpOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgo
c2l6ZV90KTsKKyNlbmRpZgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
OwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+
IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7Cisg
ICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAg
ICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDYzNzY0M2QuLjJmNzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0MiwxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRp
bGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07
CiAKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorI2Vsc2UKICAgICB2aXJ0
dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4g
MDsgfQorI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEFjY2Vzc29ycyBm
b3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWEyODlhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQx
LDcgKzE0MSwxMiBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJ
bWFnZVB0cgorI2VuZGlmCitJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBp
bmRleCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2NmE4YTBh
Li5lYTZhZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKQEAgLTE0OSw3ICsxNDksMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBz
aG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBp
bmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KKyNpZiBVU0UoU0tJ
QSkKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90
KTsKKyNlbHNlCiAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7
CisjZW5kaWYKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAg
Ym9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUg
ZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCAxYWQ1YmU5Li4yYThiYjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRy
LmgKQEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisvLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHJlcGxhY2Vk
IGJ5IGEgUmVmQ291bnRlZAorLy8gTmF0aXZlSW1hZ2UuCiAjaWYgVVNFKENHKQogdHlwZWRlZiBD
R0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZPUk0oUVQpCkBAIC03Miw3ICs3
NCw3IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJP
KQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRpdmVJbWFnZVB0cjsKICNl
bGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIE5hdGl2ZUlt
YWdlUHRyOwordHlwZWRlZiBOYXRpdmVJbWFnZVNraWEgTmF0aXZlSW1hZ2U7CiB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKGNvbnN0IE5hdGl2ZUltYWdlU2tpYSosIFdURjo6TWVtb3J5T2JqZWN0SW5m
byopOwogI2VsaWYgT1MoV0lOQ0UpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2
ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjAz
ZDE5ZS4uM2U2YWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5n
ZWQgPSBmYWxzZTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIDogMDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAgaWYgKG1f
Y29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAgICAgICAg
ICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3Np
dG9yU3VwcG9ydCgpLT5jcmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5j
cHAKaW5kZXggNjRlNTM1OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBA
IC03Miw4ICs3Miw4IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFJl
ZlB0cjxJbWFnZT4gZm9yZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kID0gaW4y
LT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVNraWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91bmQtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiYWNrZ3Jv
dW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZv
cmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUltYWdlIHx8
ICFiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9y
TWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJv
b2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RVbnJlZjxT
a0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5k
YXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAK
aW5kZXggYjBmODBjZS4uNGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25l
bnRUcmFuc2ZlclNraWEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25lbnRUcmFu
c2Zlcjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3Bs
YWNlbWVudE1hcFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4uMWJlNDU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKQEAgLTcx
LDggKzcxLDggQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgIFJlZlB0cjxJbWFnZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBpbjItPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAotICAgIE5h
dGl2ZUltYWdlU2tpYSogY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFnZSA9IGRp
c3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdlID0gZGlz
cGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9yTmF0aXZl
SW1hZ2UgfHwgIWRpc3BsTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxp
Z2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0
aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJ
bWFnZSgpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAppbmRleCBmYjY2
MTU1Li5iODA5YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcApA
QCAtMTEsMTIgKzExLDEyIEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmlzQml0
bWFwSW1hZ2UoKSBjb25zdAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmJp
dG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmlz
T3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OnNpemUo
KSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lk
dGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFNp
emUobV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFw
KCkuaGVpZ2h0KCkpOwogfQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9u
ZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3LDE5ICsyNywxOSBAQCB2
b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBk
ZXN0cm95QWxsKQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZGVjb2Rl
ZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmRlY29kZWRTaXplKCk7
CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7CiB9CiAKIC8vIFdlIG9u
bHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQYXNzUmVmUHRyPE5hdGl2
ZUltYWdlPiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKQogewotICAgIHJldHVybiAmbV9uYXRpdmVJbWFnZTsKKyAgICByZXR1cm4gbV9uYXRp
dmVJbWFnZTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIGJvb2wgQml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdl
LmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhlaWdodCgp
ICE9IDE7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8
fCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA1NmViZTNhLi4wYjI3ZDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBAIC00Miw4ICs0Miw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9ic2VydmVycywgYW5pbWF0aW9uLCBtdWx0aXBsZSBmcmFt
ZXMsIG9yIG5vbi1kZWNvZGVkIGRhdGEuCiAvLyBUaGVyZWZvcmUgdHJpbW1pbmcgdGhlIGRlY29k
ZWQgZGF0YSAoZGVzdHJveURlY29kZWREYXRhKCkpIGhhcyBubyBlZmZlY3QuCiAvLwotLy8gVGhl
IGRpZmZpY3VsdHkgd2l0aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRp
dmVJbWFnZVB0cikKLS8vIGlzIHRoYXQgTmF0aXZlSW1hZ2VQdHIgPSBOYXRpdmVJbWFnZVNraWEs
IHlldCBjYWxsZXJzIGhhdmUgU2tCaXRtYXAuCisvLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1dHRp
bmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+KQor
Ly8gaXMgdGhhdCBOYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2
ZSBTa0JpdG1hcC4KIGNsYXNzIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhIDogcHVibGljIElt
YWdlIHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVu
IFNrQml0bWFwLiAgSWYgImNvcHlQaXhlbHMiIGlzIHRydWUsIGEKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsKIAogICAg
IC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03Myw3ICs3
Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwog
CiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3
IEltYWdlIGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29weS4KICAg
ICBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2IxYzhmMi4u
OGFjNmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyArNjksNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5z
dGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAgICAgICBt
X25hdGl2ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAg
ICAgIG1fbmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgICAgICBp
ZiAoIW1fbmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNvbXBsZXRl
KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZlSW1hZ2Ut
PmJpdG1hcCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBT
a0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5jb25m
aWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
SW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VTa2lhLmNwcAppbmRleCAxZGVjMWVlLi40OTkxYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTIsOCArNDUy
LDEyIEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgaWYg
KG1fZnJhbWUpIHsKICAgICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgp
IGFsbG9jYXRlZCB8bV9mcmFtZXwgYW5kIHBhc3NlZAogICAgICAgICAvLyBvd25lcnNoaXAgdG8g
Qml0bWFwSW1hZ2U7IHdlIG11c3QgZGVsZXRlIGl0IGhlcmUuCisjaWYgVVNFKFNLSUEpCisgICAg
ICAgIG1fZnJhbWUuY2xlYXIoKTsKKyNlbHNlCiAgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwogICAg
ICAgICBtX2ZyYW1lID0gMDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDcxLDcgKzQ3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAg
ICBUUkFDRV9FVkVOVDAoInNraWEiLCAiSW1hZ2U6OmRyYXdQYXR0ZXJuIik7CiAjZW5kaWYKLSAg
ICBOYXRpdmVJbWFnZVNraWEqIGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01NzIs
NyArNTc2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBp
ZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VTa2lhKiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2VTa2lhPiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKIAogICAgIGlmIChmcmFtZSAmJiBz
aXplKCkud2lkdGgoKSA9PSAxICYmIHNpemUoKS5oZWlnaHQoKSA9PSAxKSB7CiAgICAgICAgIFNr
QXV0b0xvY2tQaXhlbHMgbG9jayhmcmFtZS0+Yml0bWFwKCkpOwpAQCAtNTk5LDcgKzYwMyw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgLy8gY2F1c2luZyBmbGlja2VyIGFuZCB3YXN0
aW5nIENQVS4KICAgICBzdGFydEFuaW1hdGlvbigpOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBi
bSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gYm0gPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYm0pCiAg
ICAgICAgIHJldHVybjsgLy8gSXQncyB0b28gZWFybHkgYW5kIHdlIGRvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgogCkBAIC02NTEsMTMgKzY1NSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKIHsKICAgICBGbG9hdFJlY3Qgbm9y
bURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0UmVjdCBub3JtU3Jj
UmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7Ci0gICAgbm9ybVNyY1JlY3QuaW50ZXJzZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZl
SW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkpKTsKKyAgICBub3JtU3JjUmVjdC5pbnRlcnNlY3QoRmxv
YXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLmhlaWdodCgpKSk7CiAKICAgICBpZiAobm9ybVNyY1JlY3QuaXNFbXB0eSgp
IHx8IG5vcm1Ec3RSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRv
IGRyYXcuCiAKICAgICBwYWludFNrQml0bWFwKGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLAotICAg
ICAgICBtX25hdGl2ZUltYWdlLAorICAgICAgICAqbV9uYXRpdmVJbWFnZSwKICAgICAgICAgbm9y
bVNyY1JlY3QsCiAgICAgICAgIG5vcm1Ec3RSZWN0LAogICAgICAgICBXZWJDb3JlQ29tcG9zaXRl
VG9Ta2lhQ29tcG9zaXRlKGNvbXBvc2l0ZU9wKSk7CkBAIC02NjcsNyArNjcxLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsCiB9
CiAKIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCi0gICAgOiBt
X25hdGl2ZUltYWdlKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKQorICAgIDogbV9uYXRpdmVJbWFn
ZShhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvTmF0aXZlSW1hZ2VTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL05hdGl2ZUltYWdlU2tpYS5oCmluZGV4IDhiNzk1ZTIuLjUwOGVmOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNr
aWEuaApAQCAtMzUsMjIgKzM1LDQzIEBACiAjaW5jbHVkZSAiU2tSZWN0LmgiCiAjaW5jbHVkZSAi
U2tTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgb2JqZWN0IGlzIHVzZWQg
YXMgdGhlICJuYXRpdmUgaW1hZ2UiIGluIG91ciBwb3J0LiBXaGVuIFdlYktpdCB1c2VzCi0vLyAi
TmF0aXZlSW1hZ2VQdHIiLCBpdCBpcyBhIHBvaW50ZXIgdG8gdGhpcyB0eXBlLiBJdCBoYXMgYW4g
U2tCaXRtYXAsIGFuZCBhbHNvCisvLyAiTmF0aXZlSW1hZ2UiLCBpdCBpcyBhIHR5cGVkZWYgdG8g
dGhpcyB0eXBlLiBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNvCiAvLyBzdG9yZXMgYSBjYWNo
ZWQgcmVzaXplZCBpbWFnZS4KLWNsYXNzIE5hdGl2ZUltYWdlU2tpYSB7CitjbGFzcyBOYXRpdmVJ
bWFnZVNraWEgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZVNraWE+IHsKIHB1YmxpYzoK
ICAgICBOYXRpdmVJbWFnZVNraWEoKTsKLSAgICB+TmF0aXZlSW1hZ2VTa2lhKCk7CiAKICAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBT
a0JpdG1hcCAoaWUuLCBpdAogICAgIC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBh
bmQgYnVtcHMgdGhlIHJlZmNvdW50KS4gIFVzZSBvbmx5IHdoZW4KICAgICAvLyB5b3Ugd2FudCBz
aGFyaW5nIHNlbWFudGljcy4KICAgICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUpOwogCisgICAgfk5hdGl2ZUltYWdlU2tpYSgpOworCisgICAg
TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXIpCisgICAgeworICAg
ICAgICBvcGVyYXRvcj0ob3RoZXIpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlU2tpYSYgb3Bl
cmF0b3I9KGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAo
dGhpcyA9PSAmb3RoZXIpCisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICAgICAgbV9p
bWFnZSA9IG90aGVyLm1faW1hZ2U7CisgICAgICAgIG1fcmVzb2x1dGlvblNjYWxlID0gb3RoZXIu
bV9yZXNvbHV0aW9uU2NhbGU7CisgICAgICAgIG1fcmVzaXplZEltYWdlID0gb3RoZXIubV9yZXNp
emVkSW1hZ2U7CisgICAgICAgIG1fY2FjaGVkSW1hZ2VJbmZvID0gb3RoZXIubV9jYWNoZWRJbWFn
ZUluZm87CisgICAgICAgIG1fcmVzaXplUmVxdWVzdHMgPSBvdGhlci5tX3Jlc2l6ZVJlcXVlc3Rz
OworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICAvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgYnl0ZXMgb2YgaW1hZ2UgZGF0YS4gVGhpcyBpbmNsdWRlcyB0aGUgY2FjaGVkCiAg
ICAgLy8gcmVzaXplZCB2ZXJzaW9uIGlmIHRoZXJlIGlzIG9uZS4KICAgICBpbnQgZGVjb2RlZFNp
emUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGF0dGVyblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QYXR0ZXJuU2tpYS5jcHAKaW5kZXggMmFlNGRkNi4uZmEwYWE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgUGxhdGZvcm1QYXR0ZXJuUHRyIFBhdHRlcm46OnBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2YKICAgICAvLyBhbmQgZXhw
YW5kZWQgc2NhbGUgYW5kIHNrZXcgaW46CiAgICAgLy8gTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkct
MS4xL3BzZXJ2ZXJzLWdyYWQtMDYtYi5zdmcKIAotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSog
aW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBiaXRtYXAsIHJldHVy
biBhIHRyYW5zcGFyZW50IHNoYWRlci4KICAgICBpZiAoIWltYWdlKQogICAgICAgICBtX3BhdHRl
cm4gPSBuZXcgU2tDb2xvclNoYWRlcihTa0NvbG9yU2V0QVJHQigwLCAwLCAwLCAwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oCmluZGV4IDEwNDI0YTUuLjhhOTA4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25l
ZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAgICAv
LyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1hZ2Ug
YW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCisjaWYgVVNFKFNL
SUEpCisgICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IGFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdDsKKyNlbHNlCiAgICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdDsKKyNlbmRpZgogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAg
Y29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdp
bmFsRnJhbWVSZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQz
Yjg2Li5lNWJjYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTEwMiw5
ICsxMDIsOSBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3
SGVpZ2h0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgTmF0aXZl
SW1hZ2VTa2lhKG1fYml0bWFwKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdl
U2tpYShtX2JpdG1hcCkpOwogfQogCiBib29sIEltYWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDI5NmMzNGQuLjNi
M2M5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTQx
LDYgKzE0MSwyMiBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogICAgIHNldEltYWdlT2JzZXJ2
ZXIob2JzZXJ2ZXIpOwogfQogCisjaWYgVVNFKFNLSUEpCitQYXNzUmVmUHRyPE5hdGl2ZUltYWdl
PiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9w
YWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBm
YWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1
ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIHJldHVybiBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKK30KKyNlbmRpZgorCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBm
bG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApp
bmRleCBmMDlhMmIxLi42N2Y1NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVT
RShTS0lBKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VG
b3JDb250YWluZXI7CkBAIC04Miw4ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3lEZWNvZGVkRGF0YShib29sKSB7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGRlY29k
ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBmcmFtZUF0SW5kZXgoc2l6ZV90KSB7IHJldHVybiAwOyB9Ci0KICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTA1YjVkMC4uZDAzODNhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0yNyAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lv
bihyMTQyNzY1KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgZm9yIENocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSBub3cg
dGhhdCBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBhbmQKKyAgICAgICAgSW1h
Z2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIHJldHVybiBhIHNtYXJ0IHBvaW50ZXIgaW5zdGVh
ZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VEZWNvZGVyOjpnZXRGcmFtZUF0SW5kZXgp
OgorICAgICAgICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bWFnZTo6ZnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJhbWVzRnJvbURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB0
ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToKKyAgICAg
ICAgKiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToKKwogMjAxMy0w
My0yNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1l
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5IHRvIGlzUmVhZE9ubHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4IDEwNGFiMTMu
LjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkltYWdlIFdlYkltYWdlRGVjb2Rlcjo6Z2V0
RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNvbnN0CiAgICAgSW1hZ2VGcmFtZSogY29uc3Qg
ZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAg
aWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Ci0gICAgT3duUHRy
PE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZUJ1ZmZlci0+YXNOZXdOYXRp
dmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lQnVm
ZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgcmV0dXJuIFdlYkltYWdlKGltYWdlLT5iaXRt
YXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklt
YWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3Bw
CmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJv
bURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLSAgICBPd25QdHI8
TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdl
KCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0
aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsK
IApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3RvcjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmZyYW1l
c0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEpCiAgICAgICAgIGlmICghZnJhbWUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFn
ZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOwotICAgICAgICBpZiAoaW1h
Z2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkpCisgICAgICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICAgICAg
aWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQogICAgICAgICAgICAgZnJhbWVz
LmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpKTsKICAgICB9CiAKQEAgLTE1Nyw4ICsx
NTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29uc3QgUGFzc1JlZlB0cjxJbWFnZT4mIGltYWdl
KQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPEltYWdl
PiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcDsKLSAgICBpZiAoaW1hZ2UuZ2V0KCkg
JiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAoaW1hZ2UgJiYgKHAgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAgIGFzc2lnbihwLT5iaXRtYXAoKSk7CiAg
ICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCmluZGV4IDdmMTkwMGIu
LjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcm90ZWN0
ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJl
KQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURl
Y29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2Ut
PmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVp
Z2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwpAQCAt
MTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRv
U2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVk
SW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9w
dFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1h
Z2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rl
ci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgU2tCaXRt
YXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6ZWRCaXRtYXAoU2tJU2l6ZTo6TWFrZSg1MCwg
NTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNjYWxlZEJp
dG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlzSW1tdXRhYmxl
KCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Qs
IGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7
CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNv
ZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJB
dEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQRUNUX0VRKDEsIGltYWdlLT5i
aXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdo
dCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCmluZGV4IGE5NDY1
ZTYuLmI1YTk4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJh
Z0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1h
Z2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2UoMCkK
ICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBh
ZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0g
YWRvcHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+
Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7
CkBAIC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAg
IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogICAgIHsKICAgICAgICAgaWYgKG1fc2l6ZS5pc1plcm8oKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmdldCgpOwor
ICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZTsKICAgICB9CiAKICAgICAvLyBTdHViIGltcGxl
bWVudGF0aW9ucyBvZiBwdXJlIHZpcnR1YWwgSW1hZ2UgZnVuY3Rpb25zLgpAQCAtOTcsNyArOTcs
NyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZl
SW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2
ZUltYWdlOwogfTsKIAogVEVTVChEcmFnSW1hZ2VUZXN0LCBOdWxsSGFuZGxpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCA0ZGI0MjhjLi5hMTA2MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgICAgICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUp
CiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdl
U2tpYSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFn
ZVNraWEoKSk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0Jp
dG1hcDo6a0FSR0JfODg4OF9Db25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25h
dGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxvY1BpeGVscygpOwpAQCAtNzcsMTIgKzc3LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAg
ICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZl
SW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0
dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAg
SW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1h
Z2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChJ
bWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195439</attachid>
            <date>2013-03-27 17:05:52 -0700</date>
            <delta_ts>2013-03-27 17:16:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>47468</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OTFiMjY4Li4yMTQxYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDEzLTAzLTI3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxNDI3NjUpIEJyb2tlIEN1c3RvbSBTVkcgY3Vy
c29ycyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgTmF0aXZlSW1hZ2VQdHIgYnkgUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZT4uIEZvciBub3csIG9ubHkgU2tpYSBjb2RlCisgICAgICAgIGhhcyBiZWVuIHBvcnRlZCBhcyBp
dCByZXF1aXJlcyB0aGUgTmF0aXZlSW1hZ2UgdHlwZSB0byBiZSBSZWZDb3VudGVkLgorICAgICAg
ICBUaGlzIGlzIGxlc3MgZXJyb3IgcHJvbmUgYXMgbWV0aG9kcyB0aGF0IHJldHVybiBhIE5hdGl2
ZUltYWdlUHRyIHNvbWV0aW1lcworICAgICAgICBwYXNzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVy
LgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbXBsZW1l
bnRhdGlvbiBmb3IgU1ZHSW1hZ2UuCisgICAgICAgIFNWR0ltYWdlIGRvZXMgbm90IGhvbGQgdGhl
IG5hdGl2ZSBpbWFnZSBpbnRlcm5hbGx5IHRvIHNhdmUgbWVtb3J5LiBJdCBpcworICAgICAgICB0
aGVyZWZvcmUgY3JlYXRlZCB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaXMgY2Fs
bGVkIGFuZAorICAgICAgICBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZSBjYWxsZXIuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBub3QgdGVzdGFibGUgdmlhIGxheW91dCB0ZXN0cy4KKworICAg
ICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAg
IChJY29uRGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aDoKKyAgICAgICAgKEljb25EYXRhYmFzZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlQmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmg6CisgICAgICAgIChGcmFtZURhdGEpOgorICAgICAgICAoQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKEltYWdlRXh0cmFjdG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
QmxlbmRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
a2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1h
dHJpeFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bXBvbmVudFRyYW5zZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRy
YW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpk
ZWNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tG
b3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFn
ZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFn
ZVNraWEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9OYXRpdmVJbWFnZVNraWEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUpOgorICAgICAgICAoTmF0aXZlSW1hZ2VTa2lh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y2xvbmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpzZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRTa0Jp
dG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjpoZWlnaHQpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0SGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDEzLTAzLTI3ICBJbHlhIFRpa2hvbm92
c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDUFUg
cHJvZmlsZXIuIFN3YXAgRmxhbWVDaGFydCB3aXRoIERhdGEgR3JpZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDNjYjEzOTYuLjYyYzZjNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMjk5LDcg
KzI5OSwxMiBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3Jk
LT5pbWFnZShzaXplKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJv
bm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBj
b25zdCBJbnRTaXplJiBzaXplKQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitJY29uRGF0YWJhc2U6OnN5bmNocm9u
b3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNv
bnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25G
b3JQYWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5lN2U5NmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyAr
OTcsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7CiAKICAgICB2aXJ0
dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFNpemUmKTsKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZl
SW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdl
VVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKKyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJik7CisjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uOTQw
MDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aApAQCAtMTc5LDcgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9u
b3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25G
b3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4gSWNvbkxv
YWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNpZiBVU0UoU0tJQSkK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0K
KyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Cisj
ZW5kaWYKIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxh
Y2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Fz
eW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAKaW5k
ZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2Us
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAg
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRiNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVi
b2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7
CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
Yml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGNmNDMwNzMuLjI3NDQxYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5
OSw3ICsyOTksMTIgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXpl
X3QgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0
cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitCaXRtYXBJbWFn
ZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMyMCw3ICszMjUsMTIgQEAgZmxv
YXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisjaWYgVVNFKFNLSUEpCitQ
YXNzUmVmUHRyPE5hdGl2ZUltYWdlPgorI2Vsc2UKK05hdGl2ZUltYWdlUHRyCisjZW5kaWYKK0Jp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZy
YW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA2NjRlZTJhLi42ZjhkNWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTkwLDcg
KzkwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCisjaWYgVVNFKFNLSUEpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2ZyYW1lOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworI2VuZGlmCiAg
ICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIGZsb2F0IG1fZHVyYXRpb247
CiAgICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7CkBAIC0xMDksMTAgKzExMywxNyBAQCBjbGFz
cyBCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRv
ckdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJs
aWM6CisjaWYgVVNFKFNLSUEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJ
bWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQorI2Vu
ZGlmCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJp
dG1hcEltYWdlKG9ic2VydmVyKSk7CkBAIC0xNzcsNyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworI2lm
IFVTRShTS0lBKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbHNlCisgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworI2VuZGlmCisK
ICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7
CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0x
OTgsNyArMjE0LDExIEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBl
dGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAorI2lmIFVTRShT
S0lBKQorICAgIEJpdG1hcEltYWdlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+LCBJbWFnZU9ic2Vy
dmVyKiA9IDApOworI2Vsc2UKICAgICBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciwgSW1hZ2VP
YnNlcnZlciogPSAwKTsKKyNlbmRpZgogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0g
MCk7CiAjaWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmKTsK
QEAgLTIxOSw3ICsyMzksMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXplX3Qg
ZnJhbWVDb3VudCgpOworI2lmIFVTRShTS0lBKQorICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+
IGZyYW1lQXRJbmRleChzaXplX3QpOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0
SW5kZXgoc2l6ZV90KTsKKyNlbmRpZgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9v
bCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRh
Mjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29s
IGV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFn
ZVNraWE+IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1h
Z2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAg
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJP
KQogICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDYzNzY0M2QuLjJmNzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0MiwxMSBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRU
aWxlIH07CiAKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorI2Vsc2UKICAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyBy
ZXR1cm4gMDsgfQorI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEFjY2Vz
c29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWEyODlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApA
QCAtMTQxLDcgKzE0MSwxMiBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitO
YXRpdmVJbWFnZVB0cgorI2VuZGlmCitJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
NmE4YTBhLi5lYTZhZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKQEAgLTE0OSw3ICsxNDksMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ2Fs
bGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhp
Z2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KKyNpZiBV
U0UoU0tJQSkKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90KTsKKyNlbHNlCiAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCk7CisjZW5kaWYKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5v
dCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCAxYWQ1YmU5Li4yYThi
Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKQEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisvLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHJl
cGxhY2VkIGJ5IGEgUmVmQ291bnRlZAorLy8gTmF0aXZlSW1hZ2UuCiAjaWYgVVNFKENHKQogdHlw
ZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZPUk0oUVQpCkBAIC03
Miw3ICs3NCw3IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNF
KENBSVJPKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRpdmVJbWFnZVB0
cjsKICNlbGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIE5h
dGl2ZUltYWdlUHRyOwordHlwZWRlZiBOYXRpdmVJbWFnZVNraWEgTmF0aXZlSW1hZ2U7CiB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IE5hdGl2ZUltYWdlU2tpYSosIFdURjo6TWVtb3J5T2Jq
ZWN0SW5mbyopOwogI2VsaWYgT1MoV0lOQ0UpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+
IE5hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMjAzZDE5ZS4uM2U2YWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJl
bkNoYW5nZWQgPSBmYWxzZTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1h
Z2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAg
aWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAg
ICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
b21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5k
U2tpYS5jcHAKaW5kZXggNjRlNTM1OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEu
Y3BwCkBAIC03Miw4ICs3Miw4IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgIFJlZlB0cjxJbWFnZT4gZm9yZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5k
ID0gaW4yLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91
bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBi
YWNrZ3JvdW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFn
ZSA9IGZvcmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUlt
YWdlIHx8ICFiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbG9yTWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RV
bnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3Zh
bHVlcy5kYXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tp
YS5jcHAKaW5kZXggYjBmODBjZS4uNGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVD
b21wb25lbnRUcmFuc2ZlclNraWEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25l
bnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RURpc3BsYWNlbWVudE1hcFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4u
MWJlNDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAK
QEAgLTcxLDggKzcxLDggQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNr
aWEoKQogICAgIFJlZlB0cjxJbWFnZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBp
bjItPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAot
ICAgIE5hdGl2ZUltYWdlU2tpYSogY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFn
ZSA9IGRpc3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdl
ID0gZGlzcGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9y
TmF0aXZlSW1hZ2UgfHwgIWRpc3BsTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUxpZ2h0aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZF
TGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlz
QWxwaGFJbWFnZSgpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAppbmRl
eCBmYjY2MTU1Li5iODA5YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
LmNwcApAQCAtMTEsMTIgKzExLDEyIEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmlzQml0bWFwSW1hZ2UoKSBjb25zdAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVybiBtX25hdGl2ZUlt
YWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmlzT3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UuYml0bWFw
KCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IEludFNpemUobV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+
Yml0bWFwKCkuaGVpZ2h0KCkpOwogfQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBvbmx5IGhhdmUg
dGhlIG9uZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3LDE5ICsyNywx
OSBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVjb2RlZERhdGEo
Ym9vbCBkZXN0cm95QWxsKQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
ZGVjb2RlZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmRlY29kZWRT
aXplKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7CiB9CiAKIC8v
IFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQYXNzUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiAmbV9uYXRpdmVJbWFnZTsKKyAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIGJvb2wgQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX25hdGl2
ZUltYWdlLmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhl
aWdodCgpICE9IDE7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkg
IT0gMSB8fCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA1NmViZTNhLi4wYjI3
ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Jp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBAIC00Miw4ICs0Miw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9ic2VydmVycywgYW5pbWF0aW9uLCBtdWx0aXBs
ZSBmcmFtZXMsIG9yIG5vbi1kZWNvZGVkIGRhdGEuCiAvLyBUaGVyZWZvcmUgdHJpbW1pbmcgdGhl
IGRlY29kZWQgZGF0YSAoZGVzdHJveURlY29kZWREYXRhKCkpIGhhcyBubyBlZmZlY3QuCiAvLwot
Ly8gVGhlIGRpZmZpY3VsdHkgd2l0aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShOYXRpdmVJbWFnZVB0cikKLS8vIGlzIHRoYXQgTmF0aXZlSW1hZ2VQdHIgPSBOYXRpdmVJbWFn
ZVNraWEsIHlldCBjYWxsZXJzIGhhdmUgU2tCaXRtYXAuCisvLyBUaGUgZGlmZmljdWx0eSB3aXRo
IHB1dHRpbmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TmF0aXZlSW1h
Z2U+KQorLy8gaXMgdGhhdCBOYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxl
cnMgaGF2ZSBTa0JpdG1hcC4KIGNsYXNzIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhIDogcHVi
bGljIEltYWdlIHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhl
IGdpdmVuIFNrQml0bWFwLiAgSWYgImNvcHlQaXhlbHMiIGlzIHRydWUsIGEKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsK
IAogICAgIC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03
Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVz
IGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29w
eS4KICAgICBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2Ix
YzhmMi4uOGFjNmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyAr
NjksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZy
YW1lLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAg
ICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7
CisgICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAg
ICAgICBpZiAoIW1fbmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNv
bXBsZXRlKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZl
SW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAo
KS5jb25maWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VTa2lhLmNwcAppbmRleCAxZGVjMWVlLi45YmUzNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTIs
OCArNDUyLDEyIEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAg
ICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleCgpIGFsbG9jYXRlZCB8bV9mcmFtZXwgYW5kIHBhc3NlZAogICAgICAgICAvLyBvd25lcnNo
aXAgdG8gQml0bWFwSW1hZ2U7IHdlIG11c3QgZGVsZXRlIGl0IGhlcmUuCisjaWYgVVNFKFNLSUEp
CisgICAgICAgIG1fZnJhbWUuY2xlYXIoKTsKKyNlbHNlCiAgICAgICAgIGRlbGV0ZSBtX2ZyYW1l
OwogICAgICAgICBtX2ZyYW1lID0gMDsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDcxLDcgKzQ3NSw3IEBAIHZvaWQgSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICBUUkFDRV9FVkVOVDAoInNraWEiLCAiSW1hZ2U6OmRyYXdQYXR0ZXJuIik7CiAjZW5k
aWYKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC01NzIsNyArNTc2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkK
ICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VTa2lhKiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKIAogICAgIGlmIChmcmFt
ZSAmJiBzaXplKCkud2lkdGgoKSA9PSAxICYmIHNpemUoKS5oZWlnaHQoKSA9PSAxKSB7CiAgICAg
ICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhmcmFtZS0+Yml0bWFwKCkpOwpAQCAtNTk5LDcgKzYw
Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgLy8gY2F1c2luZyBmbGlja2VyIGFu
ZCB3YXN0aW5nIENQVS4KICAgICBzdGFydEFuaW1hdGlvbigpOwogCi0gICAgTmF0aXZlSW1hZ2VT
a2lhKiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gYm0gPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICgh
Ym0pCiAgICAgICAgIHJldHVybjsgLy8gSXQncyB0b28gZWFybHkgYW5kIHdlIGRvbid0IGhhdmUg
YW4gaW1hZ2UgeWV0LgogCkBAIC02NTEsMTMgKzY1NSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKIHsKICAgICBGbG9hdFJl
Y3Qgbm9ybURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0UmVjdCBu
b3JtU3JjUmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7Ci0gICAgbm9ybVNyY1JlY3QuaW50
ZXJzZWN0KEZsb2F0UmVjdCgwLCAwLCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRoKCksIG1f
bmF0aXZlSW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkpKTsKKyAgICBub3JtU3JjUmVjdC5pbnRlcnNl
Y3QoRmxvYXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCksIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKSk7CiAKICAgICBpZiAobm9ybVNyY1JlY3QuaXNF
bXB0eSgpIHx8IG5vcm1Ec3RSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOyAvLyBOb3Ro
aW5nIHRvIGRyYXcuCiAKICAgICBwYWludFNrQml0bWFwKGN0eHQtPnBsYXRmb3JtQ29udGV4dCgp
LAotICAgICAgICBtX25hdGl2ZUltYWdlLAorICAgICAgICAqbV9uYXRpdmVJbWFnZSwKICAgICAg
ICAgbm9ybVNyY1JlY3QsCiAgICAgICAgIG5vcm1Ec3RSZWN0LAogICAgICAgICBXZWJDb3JlQ29t
cG9zaXRlVG9Ta2lhQ29tcG9zaXRlKGNvbXBvc2l0ZU9wKSk7CkBAIC02NjcsNyArNjcxLDcgQEAg
dm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsCiB9CiAKIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCi0g
ICAgOiBtX25hdGl2ZUltYWdlKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKQorICAgIDogbV9uYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRtYXAsIHJlc29sdXRpb25TY2FsZSkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvTmF0aXZlSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAppbmRleCAwZGMwZjllLi42NTlhNTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJ
bWFnZVNraWEuY3BwCkBAIC02MCw2ICs2MCwxNSBAQCBOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUlt
YWdlU2tpYShjb25zdCBTa0JpdG1hcCYgb3RoZXIsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsK
IH0KIAorTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmIGlt
YWdlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFNrQml0bWFwJiByZXNpemVkSW1hZ2Us
IGNvbnN0IENhY2hlZEltYWdlSW5mbyYgY2FjaGVkSW1hZ2VJbmZvLCBpbnQgcmVzaXplUmVxdWVz
dHMpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1
dGlvblNjYWxlKQorICAgICwgbV9yZXNpemVkSW1hZ2UocmVzaXplZEltYWdlKQorICAgICwgbV9j
YWNoZWRJbWFnZUluZm8oY2FjaGVkSW1hZ2VJbmZvKQorICAgICwgbV9yZXNpemVSZXF1ZXN0cyhy
ZXNpemVSZXF1ZXN0cykKK3sKK30KKwogTmF0aXZlSW1hZ2VTa2lhOjp+TmF0aXZlSW1hZ2VTa2lh
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvTmF0aXZlSW1hZ2VTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL05hdGl2ZUltYWdlU2tpYS5oCmluZGV4IDhiNzk1ZTIuLjZiZTBhYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNr
aWEuaApAQCAtMzUsMjEgKzM1LDMyIEBACiAjaW5jbHVkZSAiU2tSZWN0LmgiCiAjaW5jbHVkZSAi
U2tTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gVGhpcyBvYmplY3QgaXMgdXNlZCBhcyB0aGUgIm5hdGl2ZSBpbWFnZSIgaW4gb3Vy
IHBvcnQuIFdoZW4gV2ViS2l0IHVzZXMKLS8vICJOYXRpdmVJbWFnZVB0ciIsIGl0IGlzIGEgcG9p
bnRlciB0byB0aGlzIHR5cGUuIEl0IGhhcyBhbiBTa0JpdG1hcCwgYW5kIGFsc28KKy8vICJOYXRp
dmVJbWFnZSIsIGl0IGlzIGEgdHlwZWRlZiB0byB0aGlzIHR5cGUuIEl0IGhhcyBhbiBTa0JpdG1h
cCwgYW5kIGFsc28KIC8vIHN0b3JlcyBhIGNhY2hlZCByZXNpemVkIGltYWdlLgotY2xhc3MgTmF0
aXZlSW1hZ2VTa2lhIHsKK2NsYXNzIE5hdGl2ZUltYWdlU2tpYSA6IHB1YmxpYyBSZWZDb3VudGVk
PE5hdGl2ZUltYWdlU2tpYT4gewogcHVibGljOgotICAgIE5hdGl2ZUltYWdlU2tpYSgpOwotICAg
IH5OYXRpdmVJbWFnZVNraWEoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUlt
YWdlU2tpYSgpKTsKKyAgICB9CiAKLSAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGRvZXMgYSBzaGFs
bG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBTa0JpdG1hcCAoaWUuLCBpdAotICAgIC8vIHJlZmVy
ZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBhbmQgYnVtcHMgdGhlIHJlZmNvdW50KS4gIFVzZSBv
bmx5IHdoZW4KLSAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGljcy4KLSAgICBOYXRpdmVJ
bWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKGNvbnN0IFNrQml0bWFwJiBi
aXRtYXAsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSk7CisgICAg
fQorCisgICAgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNsb25lKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKG1faW1hZ2UsIG1f
cmVzb2x1dGlvblNjYWxlLCBtX3Jlc2l6ZWRJbWFnZSwgbV9jYWNoZWRJbWFnZUluZm8sIG1fcmVz
aXplUmVxdWVzdHMpKTsKKyAgICB9CisKKyAgICB+TmF0aXZlSW1hZ2VTa2lhKCk7CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgaW1hZ2UgZGF0YS4gVGhpcyBpbmNsdWRl
cyB0aGUgY2FjaGVkCiAgICAgLy8gcmVzaXplZCB2ZXJzaW9uIGlmIHRoZXJlIGlzIG9uZS4KQEAg
LTg4LDYgKzk5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBOYXRpdmVJbWFnZVNraWEoKTsK
KworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZG9lcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFz
c2VkLWluIFNrQml0bWFwIChpZS4sIGl0CisgICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhl
bCBkYXRhIGFuZCBidW1wcyB0aGUgcmVmY291bnQpLiBVc2Ugb25seSB3aGVuCisgICAgLy8geW91
IHdhbnQgc2hhcmluZyBzZW1hbnRpY3MuCisgICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0
bWFwJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKwogICAgIC8vIENhY2hlZEltYWdlSW5mbyBp
cyB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGNhY2hlZCBvciByZXF1ZXN0ZWQgaW1hZ2UKICAg
ICAvLyByZXNpemVzLgogICAgIC8vIEltYWdlIHJlc2l6ZSBpcyBpZGVudGlmaWVkIGJ5IHRoZSBz
Y2FsZWQgaW1hZ2Ugc2l6ZSBhbmQgc2NhbGVkIGltYWdlIHN1YnNldC4KQEAgLTEwMiw2ICsxMjAs
OCBAQCBwcml2YXRlOgogICAgICAgICBTa0lSZWN0IHJlY3RJblN1YnNldChjb25zdCBTa0lSZWN0
JiBvdGhlclNjYWxlZEltYWdlUmVjdCk7CiAgICAgfTsKIAorICAgIE5hdGl2ZUltYWdlU2tpYShj
b25zdCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tCaXRt
YXAmIHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiwgaW50IHJlc2l6ZVJlcXVl
c3RzKTsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVzaXplIG9wZXJhdGlv
biBzaG91bGQgZWl0aGVyIHJlc2l6ZSB0aGUgd2hvbGUKICAgICAvLyBpbWFnZSBhbmQgY2FjaGUg
aXQsIG9yIHJlc2l6ZSBqdXN0IHRoZSBwYXJ0IGl0IG5lZWRzIGFuZCB0aHJvdyB0aGUgcmVzdWx0
CiAgICAgLy8gYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGF0dGVyblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKaW5kZXggMmFlNGRkNi4uZmEwYWE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgUGxhdGZvcm1QYXR0ZXJuUHRyIFBhdHRlcm46OnBsYXRmb3Jt
UGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2YKICAgICAvLyBhbmQg
ZXhwYW5kZWQgc2NhbGUgYW5kIHNrZXcgaW46CiAgICAgLy8gTGF5b3V0VGVzdHMvc3ZnL1czQy1T
VkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDYtYi5zdmcKIAotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tp
YSogaW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBiaXRtYXAsIHJl
dHVybiBhIHRyYW5zcGFyZW50IHNoYWRlci4KICAgICBpZiAoIWltYWdlKQogICAgICAgICBtX3Bh
dHRlcm4gPSBuZXcgU2tDb2xvclNoYWRlcihTa0NvbG9yU2V0QVJHQigwLCAwLCAwLCAwKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oCmluZGV4IDEwNDI0YTUuLmIzN2JlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCisjaWYgVVNF
KFNLSUEpCisgICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IGFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdDsKKyNlbHNlCiAgICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdDsKKyNlbmRpZgogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAg
ICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbmFsRnJhbWVSZWN0OyB9CkBAIC0xNDEsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAg
ICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgp
LmdldEFkZHIzMih4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC0+Yml0bWFwKCku
Z2V0QWRkcjMyKHgsIHkpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX2J5dGVzICsgKHkg
KiB3aWR0aCgpKSArIHg7CiAjZW5kaWYKQEAgLTE1MCwxMiArMTU0LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgdm9pZCBzZXRTa0JpdG1h
cChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdG1h
cCA9IE5hdGl2ZUltYWdlU2tpYShiaXRtYXAsIDEpOworICAgICAgICAgICAgbV9iaXRtYXAgPSBO
YXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRtYXAsIDEpOwogICAgICAgICB9CiAKICAgICAgICAg
Y29uc3QgU2tCaXRtYXAmIGdldFNrQml0bWFwKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFw
LT5iaXRtYXAoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5QWxsb2NhdG9y
KFNrQml0bWFwOjpBbGxvY2F0b3IqIGFsbG9jYXRvcikKQEAgLTIwMiw3ICsyMDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCB3aWR0aCgpIGNvbnN0CiAgICAgICAgIHsKICNp
ZiBVU0UoU0tJQSkKLSAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS53aWR0aCgp
OworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS53aWR0aCgpOwogI2Vsc2UK
ICAgICAgICAgICAgIHJldHVybiBtX3NpemUud2lkdGgoKTsKICNlbmRpZgpAQCAtMjExLDE0ICsy
MTUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgaGVpZ2h0KCkgY29uc3QK
ICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJp
dG1hcCgpLmhlaWdodCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5o
ZWlnaHQoKTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwogI2Vu
ZGlmCiAgICAgICAgIH0KIAogI2lmIFVTRShTS0lBKQotICAgICAgICBOYXRpdmVJbWFnZVNraWEg
bV9iaXRtYXA7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fYml0bWFwOwogICAg
ICAgICBTa0JpdG1hcDo6QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICNlbHNlCiAgICAgICAgIFZl
Y3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tp
YS5jcHAKaW5kZXggNjI0M2I4Ni4uZjZlM2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNr
aWEuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlRnJh
bWU6OkltYWdlRnJhbWUoKQotICAgIDogbV9hbGxvY2F0b3IoMCkKKyAgICA6IG1fYml0bWFwKE5h
dGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCkpCisgICAgLCBtX2FsbG9jYXRvcigwKQogICAgICwgbV9o
YXNBbHBoYShmYWxzZSkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0
aW9uKDApCkBAIC00NiwxMCArNDcsMTAgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0
b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgbV9iaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKKyAg
ICBtX2JpdG1hcCA9IG90aGVyLm1fYml0bWFwLT5jbG9uZSgpOwogICAgIC8vIEtlZXAgdGhlIHBp
eGVscyBsb2NrZWQgc2luY2Ugd2Ugd2lsbCBiZSB3cml0aW5nIGRpcmVjdGx5IGludG8gdGhlCiAg
ICAgLy8gYml0bWFwIHRocm91Z2hvdXQgdGhpcyBvYmplY3QncyBsaWZldGltZS4KLSAgICBtX2Jp
dG1hcC5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7CisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLmxvY2tQ
aXhlbHMoKTsKICAgICBzZXRNZW1vcnlBbGxvY2F0b3Iob3RoZXIuYWxsb2NhdG9yKCkpOwogICAg
IHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOwogICAgIHNl
dFN0YXR1cyhvdGhlci5zdGF0dXMoKSk7CkBAIC02NCw3ICs2NSw3IEBAIEltYWdlRnJhbWUmIElt
YWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIAogdm9pZCBJbWFn
ZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQo
KTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkucmVzZXQoKTsKICAgICBtX3N0YXR1cyA9IEZyYW1l
RW1wdHk7CiAgICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKCkKICAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1h
cCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UKQEAgLTc0LDcgKzc1LDcgQEAgdm9pZCBJ
bWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQ
aXhlbERhdGEoKQogewotICAgIG1fYml0bWFwLmJpdG1hcCgpLmVyYXNlQVJHQigwLCAwLCAwLCAw
KTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkuZXJhc2VBUkdCKDAsIDAsIDAsIDApOwogICAgIG1f
aGFzQWxwaGEgPSB0cnVlOwogfQogCkBAIC04NCw5ICs4NSw5IEBAIGJvb2wgSW1hZ2VGcmFtZTo6
Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7Ci0gICAgbV9iaXRtYXAu
Yml0bWFwKCkucmVzZXQoKTsKLSAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFw
ID0gb3RoZXIubV9iaXRtYXA7Ci0gICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlU
bygmbV9iaXRtYXAuYml0bWFwKCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKKyAg
ICBtX2JpdG1hcC0+Yml0bWFwKCkucmVzZXQoKTsKKyAgICBOYXRpdmVJbWFnZVNraWEqIG90aGVy
Qml0bWFwID0gb3RoZXIubV9iaXRtYXAuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyQml0bWFwLT5i
aXRtYXAoKS5jb3B5VG8oJm1fYml0bWFwLT5iaXRtYXAoKSwgb3RoZXJCaXRtYXAtPmJpdG1hcCgp
LmNvbmZpZygpKTsKIH0KIAogYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwg
aW50IG5ld0hlaWdodCkKQEAgLTk0LDE3ICs5NSwxNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNp
emUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIC8vIHNldFNpemUoKSBzaG91bGQg
b25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KICAgICBBU1NF
UlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKIAotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENv
bmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwot
ICAgIGlmICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMobV9hbGxvY2F0b3IsIDApKQor
ICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29u
ZmlnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBpZiAoIW1fYml0bWFwLT5iaXRtYXAoKS5h
bGxvY1BpeGVscyhtX2FsbG9jYXRvciwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG5ldyBOYXRpdmVJbWFnZVNraWEobV9iaXRtYXApOworICAgIHJldHVybiBtX2JpdG1hcC0+
Y2xvbmUoKTsKIH0KIAogYm9vbCBJbWFnZUZyYW1lOjpoYXNBbHBoYSgpIGNvbnN0CkBAIC0xMjIs
NyArMTIzLDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAg
IGJvb2wgaXNPcGFxdWUgPSAhbV9oYXNBbHBoYTsKICAgICBpZiAobV9zdGF0dXMgIT0gRnJhbWVD
b21wbGV0ZSkKICAgICAgICAgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICBtX2JpdG1hcC5iaXRtYXAo
KS5zZXRJc09wYXF1ZShpc09wYXF1ZSk7CisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldElzT3Bh
cXVlKGlzT3BhcXVlKTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29u
c3QgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCkBAIC0xMzUsOCArMTM2LDggQEAgdm9pZCBJ
bWFnZUZyYW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVz
ID0gc3RhdHVzOwogICAgIGlmIChtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRlKSB7Ci0gICAgICAg
IG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKCFtX2hhc0FscGhhKTsKLSAgICAgICAgbV9i
aXRtYXAuc2V0RGF0YUNvbXBsZXRlKCk7ICAvLyBUZWxsIHRoZSBiaXRtYXAgaXQncyBkb25lLgor
ICAgICAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoIW1faGFzQWxwaGEpOworICAg
ICAgICBtX2JpdG1hcC0+c2V0RGF0YUNvbXBsZXRlKCk7IC8vIFRlbGwgdGhlIGJpdG1hcCBpdCdz
IGRvbmUuCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCAyOTZjMzRkLi4zYjNjOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTE0MSw2ICsxNDEsMjIgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkK
ICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KIAorI2lmIFVTRShTS0lBKQorUGFz
c1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxKTsKKyAg
ICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCisgICAgICAgIHJldHVy
biAwOworCisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisK
KyAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7Cit9CisjZW5kaWYKKwogdm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAog
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZjA5YTJiMS4uNjdmNTZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Qg
T1ZFUlJJREU7CiAKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQot
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgog
ICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEwNWI1ZDAu
LmQwMzgzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIw
MTMtMDMtMjcgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgor
CisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGZv
ciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIGNvZGUgbm93IHRoYXQgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgYW5kCisgICAgICAgIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSByZXR1cm4gYSBz
bWFydCBwb2ludGVyIGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgICog
c3JjL1dlYkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlRGVjb2Rl
cjo6Z2V0RnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmZyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2U6OmZyYW1lc0Zyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6Om9wZXJh
dG9yPSk6CisgICAgICAgICogdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFRlc3RJbWFnZSk6CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFRl
c3RJbWFnZSk6CisKIDIwMTMtMDMtMjcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbmFtZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWFkT25seSB0byBp
c1JlYWRPbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCAxMDRhYjEzLi4yNjUxMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbWFnZSBX
ZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleChpbnQgaW5kZXggPSAwKSBjb25zdAogICAg
IEltYWdlRnJhbWUqIGNvbnN0IGZyYW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZlckF0
SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJhbWVCdWZmZXIpCiAgICAgICAgIHJldHVybiBXZWJJ
bWFnZSgpOwotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gYWRvcHRQdHIoZnJh
bWVCdWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gaW1hZ2UgPSBmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIHJldHVybiBX
ZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW1hZ2VTa2lhLmNwcAppbmRleCA2ZDU1NTU1Li4yYjc2MGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2Vi
SW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNp
emUmIGRlc2lyZWRTaXplKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFn
ZSgpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFt
ZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFn
ZSA9IGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIFdlYkltYWdlKCk7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBXZWJWZWN0b3I8V2ViSW1h
Z2U+IFdlYkltYWdlOjpmcmFtZXNGcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhKQogICAgICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRyPE5h
dGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgp
KTsKLSAgICAgICAgaWYgKGltYWdlLmdldCgpICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQor
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lLT5hc05ld05hdGl2
ZUltYWdlKCk7CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNEYXRhQ29tcGxldGUoKSkK
ICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoV2ViSW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKSk7CiAg
ICAgfQogCkBAIC0xNTcsOCArMTU3LDggQEAgV2ViSW1hZ2U6OldlYkltYWdlKGNvbnN0IFBhc3NS
ZWZQdHI8SW1hZ2U+JiBpbWFnZSkKIAogV2ViSW1hZ2UmIFdlYkltYWdlOjpvcGVyYXRvcj0oY29u
c3QgUGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIHA7Ci0g
ICAgaWYgKGltYWdlLmdldCgpICYmIChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpKQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IHA7CisgICAgaWYgKGltYWdlICYm
IChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKQogICAgICAgICBhc3Np
Z24ocC0+Yml0bWFwKCkpOwogICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0
LmNwcAppbmRleCA3ZjE5MDBiLi42NGY4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJvdGVjdGVkOgogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0
LCBkcmF3SW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFn
ZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0
aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5
RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAg
RVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwg
aW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1h
cCgpLmlzTnVsbCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBURVNUX0YoRGVmZXJyZWRJbWFnZURl
Y29kZXJUZXN0LCBkcmF3SW50b1NrUGljdHVyZSkKIAogVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNv
ZGVyVGVzdCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiB7Ci0gICAgT3duUHRyPE5hdGl2ZUlt
YWdlU2tpYT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KDApLT5hc05ld05hdGl2ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZSA9IG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJ
bWFnZSgpOwogICAgIFNrQml0bWFwIHNjYWxlZEJpdG1hcCA9IGltYWdlLT5yZXNpemVkQml0bWFw
KFNrSVNpemU6Ok1ha2UoNTAsIDUxKSwgU2tJUmVjdDo6TWFrZVdIKDUwLCA1MSkpOwogICAgIEVY
UEVDVF9GQUxTRShzY2FsZWRCaXRtYXAuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKHNjYWxl
ZEJpdG1hcC5pc0ltbXV0YWJsZSgpKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUX0YoRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LCBkZWNvZGVPbk90aGVyVGhyZWFkKQogewogICAgIFdURjo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2Uo
YWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2
ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fbGF6eURl
Y29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIEVY
UEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VRKDEsIGlt
YWdlLT5iaXRtYXAoKS5oZWlnaHQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGltYWdlLT5iaXRtYXAo
KS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Ry
YWdJbWFnZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VU
ZXN0LmNwcAppbmRleCBhOTQ2NWU2Li5hZTIwYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgICAgICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAg
ICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAg
ICAgbV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
bmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5h
bGxvY1BpeGVscygpOwpAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fc2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNa
ZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJ
bWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAg
Ly8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4K
QEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAg
T3duUHRyPE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gbV9uYXRpdmVJbWFnZTsKIH07CiAKIFRFU1QoRHJhZ0ltYWdlVGVzdCwgTnVsbEhhbmRs
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGRiNDI4Yy4uMGJkZDM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBJbWFnZSgwKQogICAgICAgICAs
IG1fc2l6ZShzaXplKQogICAgIHsKLSAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGFkb3B0UHRyKG5l
dyBOYXRpdmVJbWFnZVNraWEoKSk7CisgICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBOYXRpdmVJbWFn
ZVNraWE6OmNyZWF0ZSgpOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5zZXRDb25m
aWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwKTsKICAgICAg
ICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuYWxsb2NQaXhlbHMoKTsKQEAgLTc3LDEyICs3Nywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NpemU7CiAgICAgfQogCi0gICAgdmlydHVh
bCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAg
ICAgewogICAgICAgICBpZiAobV9zaXplLmlzWmVybygpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBt
X25hdGl2ZUltYWdlOwogICAgIH0KIAogICAgIC8vIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHB1
cmUgdmlydHVhbCBJbWFnZSBmdW5jdGlvbnMuCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToK
IAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlUHRyPiBtX25h
dGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKIH07CiAK
IFRFU1QoSW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVlSW1hZ2VzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195444</attachid>
            <date>2013-03-27 17:16:36 -0700</date>
            <delta_ts>2013-03-28 03:16:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>47488</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OTFiMjY4Li4yMTQxYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDEzLTAzLTI3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxNDI3NjUpIEJyb2tlIEN1c3RvbSBTVkcgY3Vy
c29ycyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgTmF0aXZlSW1hZ2VQdHIgYnkgUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZT4uIEZvciBub3csIG9ubHkgU2tpYSBjb2RlCisgICAgICAgIGhhcyBiZWVuIHBvcnRlZCBhcyBp
dCByZXF1aXJlcyB0aGUgTmF0aXZlSW1hZ2UgdHlwZSB0byBiZSBSZWZDb3VudGVkLgorICAgICAg
ICBUaGlzIGlzIGxlc3MgZXJyb3IgcHJvbmUgYXMgbWV0aG9kcyB0aGF0IHJldHVybiBhIE5hdGl2
ZUltYWdlUHRyIHNvbWV0aW1lcworICAgICAgICBwYXNzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVy
LgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbXBsZW1l
bnRhdGlvbiBmb3IgU1ZHSW1hZ2UuCisgICAgICAgIFNWR0ltYWdlIGRvZXMgbm90IGhvbGQgdGhl
IG5hdGl2ZSBpbWFnZSBpbnRlcm5hbGx5IHRvIHNhdmUgbWVtb3J5LiBJdCBpcworICAgICAgICB0
aGVyZWZvcmUgY3JlYXRlZCB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaXMgY2Fs
bGVkIGFuZAorICAgICAgICBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZSBjYWxsZXIuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBub3QgdGVzdGFibGUgdmlhIGxheW91dCB0ZXN0cy4KKworICAg
ICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAg
IChJY29uRGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aDoKKyAgICAgICAgKEljb25EYXRhYmFzZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlQmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmg6CisgICAgICAgIChGcmFtZURhdGEpOgorICAgICAgICAoQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKEltYWdlRXh0cmFjdG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
QmxlbmRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
a2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1h
dHJpeFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bXBvbmVudFRyYW5zZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRy
YW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpk
ZWNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tG
b3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFn
ZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFn
ZVNraWEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9OYXRpdmVJbWFnZVNraWEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUpOgorICAgICAgICAoTmF0aXZlSW1hZ2VTa2lh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y2xvbmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpzZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRTa0Jp
dG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp3aWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjpoZWlnaHQpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0SGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U3RhdHVzKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDEzLTAzLTI3ICBJbHlhIFRpa2hvbm92
c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDUFUg
cHJvZmlsZXIuIFN3YXAgRmxhbWVDaGFydCB3aXRoIERhdGEgR3JpZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDNjYjEzOTYuLjYyYzZjNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMjk5LDcg
KzI5OSwxMiBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3Jk
LT5pbWFnZShzaXplKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJv
bm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBj
b25zdCBJbnRTaXplJiBzaXplKQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitJY29uRGF0YWJhc2U6OnN5bmNocm9u
b3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNv
bnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25G
b3JQYWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5lN2U5NmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyAr
OTcsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7CiAKICAgICB2aXJ0
dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFNpemUmKTsKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZl
SW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdl
VVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKKyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJik7CisjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uOTQw
MDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aApAQCAtMTc5LDcgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9u
b3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25G
b3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4gSWNvbkxv
YWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KKyNpZiBVU0UoU0tJQSkK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IHN5bmNocm9ub3VzTmF0aXZlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0K
KyNlbHNlCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Cisj
ZW5kaWYKIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxh
Y2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Fz
eW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAKaW5k
ZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2Us
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAg
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRiNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVi
b2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7
CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
Yml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGNmNDMwNzMuLjI3NDQxYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5
OSw3ICsyOTksMTIgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXpl
X3QgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0
cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitOYXRpdmVJbWFnZVB0cgorI2VuZGlmCitCaXRtYXBJbWFn
ZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMyMCw3ICszMjUsMTIgQEAgZmxv
YXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisjaWYgVVNFKFNLSUEpCitQ
YXNzUmVmUHRyPE5hdGl2ZUltYWdlPgorI2Vsc2UKK05hdGl2ZUltYWdlUHRyCisjZW5kaWYKK0Jp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZy
YW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA2NjRlZTJhLi42ZjhkNWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTkwLDcg
KzkwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCisjaWYgVVNFKFNLSUEpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2ZyYW1lOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworI2VuZGlmCiAg
ICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIGZsb2F0IG1fZHVyYXRpb247
CiAgICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7CkBAIC0xMDksMTAgKzExMywxNyBAQCBjbGFz
cyBCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRv
ckdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJs
aWM6CisjaWYgVVNFKFNLSUEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJ
bWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKKyAgICB9CisjZWxzZQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQorI2Vu
ZGlmCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJp
dG1hcEltYWdlKG9ic2VydmVyKSk7CkBAIC0xNzcsNyArMTg4LDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworI2lm
IFVTRShTS0lBKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbHNlCisgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworI2VuZGlmCisK
ICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7
CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0x
OTgsNyArMjE0LDExIEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBl
dGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAorI2lmIFVTRShT
S0lBKQorICAgIEJpdG1hcEltYWdlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+LCBJbWFnZU9ic2Vy
dmVyKiA9IDApOworI2Vsc2UKICAgICBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciwgSW1hZ2VP
YnNlcnZlciogPSAwKTsKKyNlbmRpZgogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0g
MCk7CiAjaWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmKTsK
QEAgLTIxOSw3ICsyMzksMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXplX3Qg
ZnJhbWVDb3VudCgpOworI2lmIFVTRShTS0lBKQorICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+
IGZyYW1lQXRJbmRleChzaXplX3QpOworI2Vsc2UKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0
SW5kZXgoc2l6ZV90KTsKKyNlbmRpZgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9v
bCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRh
Mjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29s
IGV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFn
ZVNraWE+IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1h
Z2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAg
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJP
KQogICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDYzNzY0M2QuLjJmNzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0MiwxMSBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRU
aWxlIH07CiAKKyNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorI2Vsc2UKICAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyBy
ZXR1cm4gMDsgfQorI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEFjY2Vz
c29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWEyODlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApA
QCAtMTQxLDcgKzE0MSwxMiBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQorI2lmIFVTRShTS0lBKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4KKyNlbHNlCitO
YXRpdmVJbWFnZVB0cgorI2VuZGlmCitJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2
NmE4YTBhLi5lYTZhZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKQEAgLTE0OSw3ICsxNDksMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ2Fs
bGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhp
Z2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KKyNpZiBV
U0UoU0tJQSkKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90KTsKKyNlbHNlCiAgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCk7CisjZW5kaWYKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5v
dCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCAxYWQ1YmU5Li4yYThi
Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKQEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisvLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHJl
cGxhY2VkIGJ5IGEgUmVmQ291bnRlZAorLy8gTmF0aXZlSW1hZ2UuCiAjaWYgVVNFKENHKQogdHlw
ZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZPUk0oUVQpCkBAIC03
Miw3ICs3NCw3IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNF
KENBSVJPKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBOYXRpdmVJbWFnZVB0
cjsKICNlbGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIE5h
dGl2ZUltYWdlUHRyOwordHlwZWRlZiBOYXRpdmVJbWFnZVNraWEgTmF0aXZlSW1hZ2U7CiB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IE5hdGl2ZUltYWdlU2tpYSosIFdURjo6TWVtb3J5T2Jq
ZWN0SW5mbyopOwogI2VsaWYgT1MoV0lOQ0UpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+
IE5hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMjAzZDE5ZS4uM2U2YWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJl
bkNoYW5nZWQgPSBmYWxzZTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1h
Z2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAg
aWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAg
ICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
b21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5k
U2tpYS5jcHAKaW5kZXggNjRlNTM1OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEu
Y3BwCkBAIC03Miw4ICs3Miw4IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgIFJlZlB0cjxJbWFnZT4gZm9yZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5k
ID0gaW4yLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91
bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBi
YWNrZ3JvdW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFn
ZSA9IGZvcmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUlt
YWdlIHx8ICFiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbG9yTWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RV
bnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3Zh
bHVlcy5kYXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tp
YS5jcHAKaW5kZXggYjBmODBjZS4uNGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVD
b21wb25lbnRUcmFuc2ZlclNraWEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25l
bnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RURpc3BsYWNlbWVudE1hcFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4u
MWJlNDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAK
QEAgLTcxLDggKzcxLDggQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNr
aWEoKQogICAgIFJlZlB0cjxJbWFnZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBp
bjItPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAot
ICAgIE5hdGl2ZUltYWdlU2tpYSogY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFn
ZSA9IGRpc3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdl
ID0gZGlzcGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9y
TmF0aXZlSW1hZ2UgfHwgIWRpc3BsTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUxpZ2h0aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZF
TGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlz
QWxwaGFJbWFnZSgpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAppbmRl
eCBmYjY2MTU1Li5iODA5YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
LmNwcApAQCAtMTEsMTIgKzExLDEyIEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmlzQml0bWFwSW1hZ2UoKSBjb25zdAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
OjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVybiBtX25hdGl2ZUlt
YWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmlzT3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UuYml0bWFw
KCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IEludFNpemUobV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+
Yml0bWFwKCkuaGVpZ2h0KCkpOwogfQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBvbmx5IGhhdmUg
dGhlIG9uZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3LDE5ICsyNywx
OSBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVjb2RlZERhdGEo
Ym9vbCBkZXN0cm95QWxsKQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
ZGVjb2RlZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmRlY29kZWRT
aXplKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7CiB9CiAKIC8v
IFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQYXNzUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiAmbV9uYXRpdmVJbWFnZTsKKyAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIGJvb2wgQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX25hdGl2
ZUltYWdlLmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhl
aWdodCgpICE9IDE7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkg
IT0gMSB8fCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA1NmViZTNhLi4wYjI3
ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Jp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBAIC00Miw4ICs0Miw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9ic2VydmVycywgYW5pbWF0aW9uLCBtdWx0aXBs
ZSBmcmFtZXMsIG9yIG5vbi1kZWNvZGVkIGRhdGEuCiAvLyBUaGVyZWZvcmUgdHJpbW1pbmcgdGhl
IGRlY29kZWQgZGF0YSAoZGVzdHJveURlY29kZWREYXRhKCkpIGhhcyBubyBlZmZlY3QuCiAvLwot
Ly8gVGhlIGRpZmZpY3VsdHkgd2l0aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShOYXRpdmVJbWFnZVB0cikKLS8vIGlzIHRoYXQgTmF0aXZlSW1hZ2VQdHIgPSBOYXRpdmVJbWFn
ZVNraWEsIHlldCBjYWxsZXJzIGhhdmUgU2tCaXRtYXAuCisvLyBUaGUgZGlmZmljdWx0eSB3aXRo
IHB1dHRpbmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TmF0aXZlSW1h
Z2U+KQorLy8gaXMgdGhhdCBOYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxl
cnMgaGF2ZSBTa0JpdG1hcC4KIGNsYXNzIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhIDogcHVi
bGljIEltYWdlIHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhl
IGdpdmVuIFNrQml0bWFwLiAgSWYgImNvcHlQaXhlbHMiIGlzIHRydWUsIGEKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsK
IAogICAgIC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03
Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVz
IGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29w
eS4KICAgICBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2Ix
YzhmMi4uOGFjNmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyAr
NjksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZy
YW1lLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAg
ICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7
CisgICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAg
ICAgICBpZiAoIW1fbmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNv
bXBsZXRlKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZl
SW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAo
KS5jb25maWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VTa2lhLmNwcAppbmRleCAxZGVjMWVlLi4yZDE3NWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTAs
MTAgKzQ1MCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAg
ICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogCiAgICAgaWYgKG1f
ZnJhbWUpIHsKLSAgICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFs
bG9jYXRlZCB8bV9mcmFtZXwgYW5kIHBhc3NlZAotICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0
bWFwSW1hZ2U7IHdlIG11c3QgZGVsZXRlIGl0IGhlcmUuCi0gICAgICAgIGRlbGV0ZSBtX2ZyYW1l
OwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZS5jbGVhcigpOworCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzEsNyArNDY5
LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFRSQUNFX0VWRU5UMCgic2tpYSIsICJJbWFnZTo6
ZHJhd1BhdHRlcm4iKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlU2tpYSogYml0bWFwID0gbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBi
aXRtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTU3Miw3ICs1NzAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIGZyYW1lID0gZnJhbWVBdElu
ZGV4KDApOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gZnJhbWVBdEluZGV4
KDApOwogCiAgICAgaWYgKGZyYW1lICYmIHNpemUoKS53aWR0aCgpID09IDEgJiYgc2l6ZSgpLmhl
aWdodCgpID09IDEpIHsKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGZyYW1lLT5iaXRt
YXAoKSk7CkBAIC01OTksNyArNTk3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICAv
LyBjYXVzaW5nIGZsaWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7
CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAgICAgaWYgKCFibSkKICAgICAgICAgcmV0dXJuOyAvLyBJdCdzIHRvbyBlYXJs
eSBhbmQgd2UgZG9uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAKQEAgLTY1MSwxMyArNjQ5LDEzIEBA
IHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LAogewogICAgIEZsb2F0UmVjdCBub3JtRHN0UmVjdCA9IG5vcm1hbGl6ZVJlY3QoZHN0UmVj
dCk7CiAgICAgRmxvYXRSZWN0IG5vcm1TcmNSZWN0ID0gbm9ybWFsaXplUmVjdChzcmNSZWN0KTsK
LSAgICBub3JtU3JjUmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2Uu
Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSkpOworICAg
IG5vcm1TcmNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoMCwgMCwgbV9uYXRpdmVJbWFnZS0+Yml0
bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpKTsKIAogICAg
IGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZHJhdy4KIAogICAgIHBhaW50U2tCaXRtYXAoY3R4
dC0+cGxhdGZvcm1Db250ZXh0KCksCi0gICAgICAgIG1fbmF0aXZlSW1hZ2UsCisgICAgICAgICpt
X25hdGl2ZUltYWdlLAogICAgICAgICBub3JtU3JjUmVjdCwKICAgICAgICAgbm9ybURzdFJlY3Qs
CiAgICAgICAgIFdlYkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUoY29tcG9zaXRlT3ApKTsK
QEAgLTY2Nyw3ICs2NjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKIH0KIAogQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSkKLSAgICA6IG1fbmF0aXZlSW1hZ2UoYml0bWFwLCByZXNvbHV0aW9u
U2NhbGUpCisgICAgOiBtX25hdGl2ZUltYWdlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGJpdG1h
cCwgcmVzb2x1dGlvblNjYWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCmluZGV4IDBkYzBm
OWUuLjY1OWE1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHAKQEAgLTYwLDYgKzYwLDE1IEBAIE5hdGl2
ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBvdGhlciwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKQogewogfQogCitOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tp
YShjb25zdCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tC
aXRtYXAmIHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiBjYWNoZWRJbWFnZUlu
Zm8sIGludCByZXNpemVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3Jl
c29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBtX3Jlc2l6ZWRJbWFnZShyZXNp
emVkSW1hZ2UpCisgICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNoZWRJbWFnZUluZm8pCisgICAg
LCBtX3Jlc2l6ZVJlcXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQoreworfQorCiBOYXRpdmVJbWFnZVNr
aWE6On5OYXRpdmVJbWFnZVNraWEoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKaW5kZXggOGI3OTVlMi4u
NmJlMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9OYXRpdmVJbWFnZVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCkBAIC0zNSwyMSArMzUsMzIgQEAKICNpbmNsdWRlICJT
a1JlY3QuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHRoZSAi
bmF0aXZlIGltYWdlIiBpbiBvdXIgcG9ydC4gV2hlbiBXZWJLaXQgdXNlcwotLy8gIk5hdGl2ZUlt
YWdlUHRyIiwgaXQgaXMgYSBwb2ludGVyIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFuIFNrQml0bWFw
LCBhbmQgYWxzbworLy8gIk5hdGl2ZUltYWdlIiwgaXQgaXMgYSB0eXBlZGVmIHRvIHRoaXMgdHlw
ZS4gSXQgaGFzIGFuIFNrQml0bWFwLCBhbmQgYWxzbwogLy8gc3RvcmVzIGEgY2FjaGVkIHJlc2l6
ZWQgaW1hZ2UuCi1jbGFzcyBOYXRpdmVJbWFnZVNraWEgeworY2xhc3MgTmF0aXZlSW1hZ2VTa2lh
IDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2VTa2lhPiB7CiBwdWJsaWM6Ci0gICAgTmF0
aXZlSW1hZ2VTa2lhKCk7Ci0gICAgfk5hdGl2ZUltYWdlU2tpYSgpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgIH0KIAotICAgIC8vIFRoaXMgY29u
c3RydWN0b3IgZG9lcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFzc2VkLWluIFNrQml0bWFwIChp
ZS4sIGl0Ci0gICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhlbCBkYXRhIGFuZCBidW1wcyB0
aGUgcmVmY291bnQpLiAgVXNlIG9ubHkgd2hlbgotICAgIC8vIHlvdSB3YW50IHNoYXJpbmcgc2Vt
YW50aWNzLgotICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjcmVh
dGUoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEoYml0bWFwLCByZXNv
bHV0aW9uU2NhbGUpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
Y2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJ
bWFnZVNraWEobV9pbWFnZSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzaXplZEltYWdlLCBtX2Nh
Y2hlZEltYWdlSW5mbywgbV9yZXNpemVSZXF1ZXN0cykpOworICAgIH0KKworICAgIH5OYXRpdmVJ
bWFnZVNraWEoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBpbWFn
ZSBkYXRhLiBUaGlzIGluY2x1ZGVzIHRoZSBjYWNoZWQKICAgICAvLyByZXNpemVkIHZlcnNpb24g
aWYgdGhlcmUgaXMgb25lLgpAQCAtODgsNiArOTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgorICAg
IE5hdGl2ZUltYWdlU2tpYSgpOworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBkb2VzIGEgc2hh
bGxvdyBjb3B5IG9mIHRoZSBwYXNzZWQtaW4gU2tCaXRtYXAgKGllLiwgaXQKKyAgICAvLyByZWZl
cmVuY2VzIHRoZSBzYW1lIHBpeGVsIGRhdGEgYW5kIGJ1bXBzIHRoZSByZWZjb3VudCkuIFVzZSBv
bmx5IHdoZW4KKyAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGljcy4KKyAgICBOYXRpdmVJ
bWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworCiAgICAg
Ly8gQ2FjaGVkSW1hZ2VJbmZvIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgY2FjaGVkIG9y
IHJlcXVlc3RlZCBpbWFnZQogICAgIC8vIHJlc2l6ZXMuCiAgICAgLy8gSW1hZ2UgcmVzaXplIGlz
IGlkZW50aWZpZWQgYnkgdGhlIHNjYWxlZCBpbWFnZSBzaXplIGFuZCBzY2FsZWQgaW1hZ2Ugc3Vi
c2V0LgpAQCAtMTAyLDYgKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFNrSVJlY3QgcmVjdElu
U3Vic2V0KGNvbnN0IFNrSVJlY3QmIG90aGVyU2NhbGVkSW1hZ2VSZWN0KTsKICAgICB9OwogCisg
ICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBTa0JpdG1hcCYgcmVzaXplZEltYWdlLCBjb25zdCBDYWNoZWRJbWFnZUlu
Zm8mLCBpbnQgcmVzaXplUmVxdWVzdHMpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBn
aXZlbiByZXNpemUgb3BlcmF0aW9uIHNob3VsZCBlaXRoZXIgcmVzaXplIHRoZSB3aG9sZQogICAg
IC8vIGltYWdlIGFuZCBjYWNoZSBpdCwgb3IgcmVzaXplIGp1c3QgdGhlIHBhcnQgaXQgbmVlZHMg
YW5kIHRocm93IHRoZSByZXN1bHQKICAgICAvLyBhd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcAppbmRleCAyYWU0ZGQ2
Li5mYTBhYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BhdHRlcm5Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BhdHRlcm5Ta2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCBQbGF0Zm9ybVBhdHRlcm5Q
dHIgUGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZgogICAgIC8vIGFuZCBleHBhbmRlZCBzY2FsZSBhbmQgc2tldyBpbjoKICAgICAvLyBM
YXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNi1iLnN2ZwogCi0gICAg
Y29uc3QgTmF0aXZlSW1hZ2VTa2lhKiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV90
aWxlSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgLy8gSWYgd2UgZG9u
J3QgaGF2ZSBhIGJpdG1hcCwgcmV0dXJuIGEgdHJhbnNwYXJlbnQgc2hhZGVyLgogICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgIG1fcGF0dGVybiA9IG5ldyBTa0NvbG9yU2hhZGVyKFNrQ29sb3JTZXRB
UkdCKDAsIDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMTA0MjRhNS4uYjM3YmUyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTExNSw3ICsxMTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZl
IGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBi
ZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRh
OjpjbGVhcigpKS4KKyNpZiBVU0UoU0tJQSkKKyAgICAgICAgUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZT4gYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworI2Vsc2UKICAgICAgICAgTmF0aXZlSW1hZ2VQ
dHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworI2VuZGlmCiAKICAgICAgICAgYm9vbCBoYXNB
bHBoYSgpIGNvbnN0OwogICAgICAgICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0KQEAgLTE0MSw3ICsxNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIo
aW50IHgsIGludCB5KQogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAgICByZXR1
cm4gbV9iaXRtYXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOworICAgICAgICAgICAgcmV0dXJu
IG1fYml0bWFwLT5iaXRtYXAoKS5nZXRBZGRyMzIoeCwgeSk7CiAjZWxzZQogICAgICAgICAgICAg
cmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICNlbmRpZgpAQCAtMTUwLDEyICsx
NTQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAg
ICAgICB2b2lkIHNldFNrQml0bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fYml0bWFwID0gTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgMSk7CisgICAg
ICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGJpdG1hcCwgMSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBjb25zdCBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSBjb25zdAog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBzZXRNZW1vcnlBbGxvY2F0b3IoU2tCaXRtYXA6OkFsbG9jYXRvciogYWxsb2NhdG9yKQpAQCAt
MjAyLDcgKzIwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHdpZHRoKCkg
Y29uc3QKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0
bWFwLmJpdG1hcCgpLndpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1h
cCgpLndpZHRoKCk7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOwog
I2VuZGlmCkBAIC0yMTEsMTQgKzIxNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGludCBoZWlnaHQoKSBjb25zdAogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAg
ICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm4g
bV9iaXRtYXAtPmJpdG1hcCgpLmhlaWdodCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBt
X3NpemUuaGVpZ2h0KCk7CiAjZW5kaWYKICAgICAgICAgfQogCiAjaWYgVVNFKFNLSUEpCi0gICAg
ICAgIE5hdGl2ZUltYWdlU2tpYSBtX2JpdG1hcDsKKyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gbV9iaXRtYXA7CiAgICAgICAgIFNrQml0bWFwOjpBbGxvY2F0b3IqIG1fYWxsb2NhdG9y
OwogI2Vsc2UKICAgICAgICAgVmVjdG9yPFBpeGVsRGF0YT4gbV9iYWNraW5nU3RvcmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdl
RGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
c2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQzYjg2Li5mNmUzZWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVj
b2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCi0gICAgOiBtX2FsbG9jYXRvcigw
KQorICAgIDogbV9iaXRtYXAoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKSkKKyAgICAsIG1fYWxs
b2NhdG9yKDApCiAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQogICAgICwgbV9zdGF0dXMoRnJhbWVF
bXB0eSkKICAgICAsIG1fZHVyYXRpb24oMCkKQEAgLTQ2LDEwICs0NywxMCBAQCBJbWFnZUZyYW1l
JiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgaWYg
KHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBtX2JpdG1hcCA9
IG90aGVyLm1fYml0bWFwOworICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRtYXAtPmNsb25lKCk7
CiAgICAgLy8gS2VlcCB0aGUgcGl4ZWxzIGxvY2tlZCBzaW5jZSB3ZSB3aWxsIGJlIHdyaXRpbmcg
ZGlyZWN0bHkgaW50byB0aGUKICAgICAvLyBiaXRtYXAgdGhyb3VnaG91dCB0aGlzIG9iamVjdCdz
IGxpZmV0aW1lLgotICAgIG1fYml0bWFwLmJpdG1hcCgpLmxvY2tQaXhlbHMoKTsKKyAgICBtX2Jp
dG1hcC0+Yml0bWFwKCkubG9ja1BpeGVscygpOwogICAgIHNldE1lbW9yeUFsbG9jYXRvcihvdGhl
ci5hbGxvY2F0b3IoKSk7CiAgICAgc2V0T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxG
cmFtZVJlY3QoKSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsKQEAgLTY0LDcgKzY1
LDcgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUm
IG90aGVyKQogCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKLSAgICBtX2Jp
dG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOwog
ICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3Ro
ZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRo
aXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAt
NzQsNyArNzUsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIAogdm9pZCBJ
bWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCku
ZXJhc2VBUkdCKDAsIDAsIDAsIDApOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5lcmFzZUFSR0Io
MCwgMCwgMCwgMCk7CiAgICAgbV9oYXNBbHBoYSA9IHRydWU7CiB9CiAKQEAgLTg0LDkgKzg1LDkg
QEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX2hhc0FscGhhID0gb3RoZXIubV9oYXNB
bHBoYTsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOwotICAgIGNvbnN0IE5hdGl2ZUlt
YWdlU2tpYSYgb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKLSAgICByZXR1cm4gb3RoZXJC
aXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2JpdG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0
bWFwKCkuY29uZmlnKCkpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOworICAgIE5h
dGl2ZUltYWdlU2tpYSogb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcC5nZXQoKTsKKyAgICBy
ZXR1cm4gb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAtPmJpdG1hcCgpLCBv
dGhlckJpdG1hcC0+Yml0bWFwKCkuY29uZmlnKCkpOwogfQogCiBib29sIEltYWdlRnJhbWU6OnNl
dFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQpAQCAtOTQsMTcgKzk1LDE3IEBAIGJv
b2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAg
Ly8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkg
b3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0KCkpOwogCi0gICAgbV9i
aXRtYXAuYml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3
V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVs
cyhtX2FsbG9jYXRvciwgMCkpCisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldENvbmZpZyhTa0Jp
dG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIGlmICgh
bV9iaXRtYXAtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CitQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IE5hdGl2ZUltYWdlU2tpYShtX2JpdG1hcCk7Cisg
ICAgcmV0dXJuIG1fYml0bWFwLT5jbG9uZSgpOwogfQogCiBib29sIEltYWdlRnJhbWU6Omhhc0Fs
cGhhKCkgY29uc3QKQEAgLTEyMiw3ICsxMjMsNyBAQCB2b2lkIEltYWdlRnJhbWU6OnNldEhhc0Fs
cGhhKGJvb2wgYWxwaGEpCiAgICAgYm9vbCBpc09wYXF1ZSA9ICFtX2hhc0FscGhhOwogICAgIGlm
IChtX3N0YXR1cyAhPSBGcmFtZUNvbXBsZXRlKQogICAgICAgICBpc09wYXF1ZSA9IGZhbHNlOwot
ICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKGlzT3BhcXVlKTsKKyAgICBtX2JpdG1h
cC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoaXNPcGFxdWUpOwogfQogCiB2b2lkIEltYWdlRnJhbWU6
OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKQEAgLTEz
NSw4ICsxMzYsOCBAQCB2b2lkIEltYWdlRnJhbWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0
dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBzdGF0dXM7CiAgICAgaWYgKG1fc3RhdHVzID09IEZyYW1l
Q29tcGxldGUpIHsKLSAgICAgICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0SXNPcGFxdWUoIW1faGFz
QWxwaGEpOwotICAgICAgICBtX2JpdG1hcC5zZXREYXRhQ29tcGxldGUoKTsgIC8vIFRlbGwgdGhl
IGJpdG1hcCBpdCdzIGRvbmUuCisgICAgICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJc09wYXF1
ZSghbV9oYXNBbHBoYSk7CisgICAgICAgIG1fYml0bWFwLT5zZXREYXRhQ29tcGxldGUoKTsgLy8g
VGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDI5NmMzNGQuLjNiM2M5ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTQxLDYgKzE0MSwyMiBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaQogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogfQog
CisjaWYgVVNFKFNLSUEpCitQYXNzUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUg
aW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBy
ZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlTm9ybWFsKTsKKworICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFj
a2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKyNlbmRpZgorCiB2
b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmMDlhMmIxLi42N2Y1
NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjIsNiArNjIs
MTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVTRShTS0lBKQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBP
VkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNo
cm9tZUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CkBAIC04
Miw4ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YShib29sKSB7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6
ZV90KSB7IHJldHVybiAwOyB9Ci0KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUg
bGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMTA1YjVkMC4uZDAzODNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0yNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMTQyNzY1KSBCcm9rZSBD
dXN0b20gU1ZHIGN1cnNvcnMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSBub3cgdGhhdCBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBhbmQKKyAgICAgICAgSW1hZ2VGcmFtZTo6YXNOZXdOYXRp
dmVJbWFnZSgpIHJldHVybiBhIHNtYXJ0IHBvaW50ZXIgaW5zdGVhZAorICAgICAgICBvZiBhIHJh
dyBvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW1hZ2VEZWNvZGVyOjpnZXRGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9X
ZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJhbWVzRnJvbURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB0ZXN0cy9EZWZlcnJlZEltYWdl
RGVjb2RlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKyAgICAgICAgKiB0
ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6VGVz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToKKyAgICAgICAgKiB0ZXN0cy9JbWFnZUxh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6VGVzdElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToKKwogMjAxMy0wMy0yNyAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnJlYWRPbmx5IHRvIGlzUmVhZE9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4IDEwNGFiMTMuLjI2NTEzNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIFdlYkltYWdlIFdlYkltYWdlRGVjb2Rlcjo6Z2V0RnJhbWVBdEluZGV4KGludCBp
bmRleCA9IDApIGNvbnN0CiAgICAgSW1hZ2VGcmFtZSogY29uc3QgZnJhbWVCdWZmZXIgPSBtX3By
aXZhdGUtPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4g
aW1hZ2UgPSBhZG9wdFB0cihmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lQnVmZmVyLT5hc05ld05hdGl2ZUlt
YWdlKCk7CiAgICAgcmV0dXJuIFdlYkltYWdlKGltYWdlLT5iaXRtYXAoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IDZkNTU1NTUuLjJi
NzYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApA
QCAtODUsNyArODUsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0
YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKIApAQCAtMTIyLDggKzEyMiw4
IEBAIFdlYlZlY3RvcjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmZyYW1lc0Zyb21EYXRhKGNvbnN0IFdl
YkRhdGEmIGRhdGEpCiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1l
LT5hc05ld05hdGl2ZUltYWdlKCkpOwotICAgICAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2Ut
PmlzRGF0YUNvbXBsZXRlKCkpCisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdl
ID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdl
LT5pc0RhdGFDb21wbGV0ZSgpKQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChXZWJJbWFnZShp
bWFnZS0+Yml0bWFwKCkpKTsKICAgICB9CiAKQEAgLTE1Nyw4ICsxNTcsOCBAQCBXZWJJbWFnZTo6
V2ViSW1hZ2UoY29uc3QgUGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogCiBXZWJJbWFnZSYgV2Vi
SW1hZ2U6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAg
TmF0aXZlSW1hZ2VQdHIgcDsKLSAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgKHAgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
cDsKKyAgICBpZiAoaW1hZ2UgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkpCiAgICAgICAgIGFzc2lnbihwLT5iaXRtYXAoKSk7CiAgICAgZWxzZQogICAgICAgICBy
ZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJl
ZEltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZl
cnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCmluZGV4IDdmMTkwMGIuLjY0ZjhlNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyVGVzdC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihEZWZl
cnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogewotICAgIE93blB0cjxO
YXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVy
QXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gaW1hZ2UgPSBtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3
TmF0aXZlSW1hZ2UoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVD
VF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRF
U1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogCiBURVNU
X0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1NrUGljdHVyZSkKIHsK
LSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVy
LT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdElu
ZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgU2tCaXRtYXAgc2NhbGVkQml0bWFwID0g
aW1hZ2UtPnJlc2l6ZWRCaXRtYXAoU2tJU2l6ZTo6TWFrZSg1MCwgNTEpLCBTa0lSZWN0OjpNYWtl
V0goNTAsIDUxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNjYWxlZEJpdG1hcC5pc051bGwoKSk7CiAg
ICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlzSW1tdXRhYmxlKCkpOwpAQCAtMTc0LDcgKzE3
NCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRlY29kZU9uT3RoZXJUaHJl
YWQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBPd25QdHI8TmF0
aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0
SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05h
dGl2ZUltYWdlKCk7CiAgICAgRVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsK
ICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCmluZGV4IGE5NDY1ZTYuLmFlMjBiM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2UoMCkKICAgICAgICAgLCBtX3NpemUo
c2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihuZXcgTmF0aXZl
SW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpj
cmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBAIC02NCwxMiArNjQsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAgIH0KIAotICAgIHZpcnR1YWwgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIHsKICAg
ICAgICAgaWYgKG1fc2l6ZS5pc1plcm8oKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmdldCgpOworICAgICAgICByZXR1cm4gbV9uYXRpdmVJ
bWFnZTsKICAgICB9CiAKICAgICAvLyBTdHViIGltcGxlbWVudGF0aW9ucyBvZiBwdXJlIHZpcnR1
YWwgSW1hZ2UgZnVuY3Rpb25zLgpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgSW50
U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChEcmFn
SW1hZ2VUZXN0LCBOdWxsSGFuZGxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA0ZGI0MjhjLi4wYmRk
MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VM
YXllckNocm9taXVtVGVzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICA6
IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBtX25hdGl2
ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAgICAgbV9uYXRp
dmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxvY1BpeGVs
cygpOwpAQCAtNzcsMTIgKzc3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBp
bXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3
ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8
TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBt
X25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJ
bWFnZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195515</attachid>
            <date>2013-03-28 03:16:49 -0700</date>
            <delta_ts>2013-03-28 06:50:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>64441</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5Mzg1MGMxLi5lOThkN2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MjggIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjcgIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uIGluIHRlc3RzIGR1ZSB0byBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMzM5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1w
YXR0ZXJuLXN2Zy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1s
aW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjgxMWM1OWRjNWNlZjFkMzFhNmJkNjZkZjlkNWM2MWUxYTdmNGExMApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMTQyNTQKemNtZUh1WElSdHV3cjxvPlc8WD9TWGR+NGJNR3lvPT5EP0l6UUJh
VD8xVldHXk5SPCo9Zkd7ZERRV2Qyck8rbHBoCnpQOU9tc3o8X3tBPXVNPmVudUhxZWlhTEF0LWdF
WjdfazF8X29jbGFHQU8yJGFtdFdSenQjYGZleVRiamUrOFY2UAp6SmpANkxnN3duSFUtU0AmMUlH
fUV7bDtKSmhqJXpSSUVDUyNReSVLWjkjKGNYUnUxa01DeG9vcjhKaW1sYXpDRHgKem05fCM2QXVB
PHFiTFJSRDgoQ0BUQUo1MjItPl5QZypaayNPMW1ZT3QobDArNWNxYzNqO2xkMGtIRVElJWtzcHxF
CnpoaCQ1bjFSNU0lVlp4VyMxKHxmZT07ck0taCUmZERHY140bUlRLSYlX2w4KCpyYkshOE8ld0w1
PWp3JkM+aFg8Jgp6KCRRVFVCQ0s1dk0hQUt9P0BYUyg9ZSlZST09OztUTyg5fCVFcG59OT9NWnZ2
NlJCZFFySipNZW81dEFPOyM4KH4KejB9XlQ1Wj9IKjlRYzYtSDVvMkU+MCZnOGM7dF9+STlvfkhg
aCt7d2dSfiFtYl9CbVgyWkhXPCZtJWpPfm1XPWQ0CnpIPCg8a0Bqcz5gZSpWSklTYWFWUTFiMyV4
NGJLfiVxbnFaV3EpPXd0KzRwc0t5b1A7anRyKU1keS1sXmZecilBIQp6Pld4cUpGQko8KDx8Xntm
RHdePUZYPjFmSD8+WXVKOTRPWjA3KFV1XmJHRyleMUxjRW1UNSEkel5SSUhRNj9mO08Kek19cVVW
NEdYbygrb05OTl9DWTN2K2NWfjlrdW1idE57NnQtNDxSWW8jbWNFaUk7eGstI15pXkl4SUw4RDVU
fDtfCnomR2ZfPVJ9MTU0OGZJJUlKLXpITG5RWSpfZUo7dTU5P3otTnBLQkNERWp2QlBUWFkoYz1y
UXZTaDQpbVVrb0EqeQp6PVdWbDVaUmNKYXlObGl8OCY1TSNLYWJMSXVwMGV4cyVvKXxVIyt4JmFC
OWs5ays4aihyV0x6NWdyfmg/UWA7ZncKejFlfj5MZXRabllXSEE0WktkfHxIWnR0IX57ISVtQFRQ
eGxfP0s3MkY/JERGQmhmQ2pFeilyTyNQOT1IYCh8NU8tCno9RXVkQnZXOzBYJWh8Pj1aODlGNzYo
d2dFWFZtSEVJamY4e2hBWjhBZX55I29KTVdfbytDckB7KWdgT0pSb3hReAp6aGNQOXhUO157b3lB
T0ZzenZlZ0IqNTlUcndVNE43anoxRWNzWiElRzYqfX42XntTWXMrUnoqfXQrJiEzO1AjeTsKenFh
cyF3dlVfPkc+SGQmMEAxXjBJO31eb2Q+X1FmRD5BNVdSPSE+QnJvYj9TR3VidTA8TXQ9UVRuNyRI
O09UZmBMCno0UmRUP0tsbmJGUDRMTERXMndhYlZKYWB4XjBsK0w5SiVrMklSJmVLb3QwN35gfHsm
NTlIWGJ0NU5xc2JnU2dFJQp6bVMzP0U+NkNuMD93czVEPXpjTlY9eEppSikpNVFMNX5XNzM3WlZw
OD0lIX5wPmE1RypHKzUhZndMV3VQQlZ1UGwKejY4QmBWIWV4WG9tcnRia1QxRDBAKlIja3VfSX07
OFFlQEx8UVlVR3JfNWZSZ1RsMTtweWAzcTIrUlhMMytYcT0kCnpTJG9YZnVqRi0tMl9OTG10RyEr
SV4qYipLQ3pqa0F0c2hMPClSPUlZaXR3RiRWaGIxaDRaMWR8S3hpYDQxPVYjbQp6R0AyZnQoJHwo
QnowMF4pPCQjdF5sOE41Z3tWcHw+WmY/U0koOEo+enN2R2FgKnAkVlhHYD5zSVlGQyZfdSpOUioK
em12Vz4xUnRtMWElQiE0d2RXVlRFTWs+bWN1ZWBoKmVYSCZ1I0w+OWF6S2QwRUBXQzBvTlkkPEJD
JD5vbjlAQjNOCnp0KHhjYHhRVn1RT1VGWVU+P21UeCN2OCtWQU40IXE3c3stJDVZe0dzdVIqSXc3
MD1FcWF6YmtUPHUyJWU5Kjh0eQp6RUo3KGxqbFN7bjw7ITNKLTs4cDE1NklffXRwVTRwWGRWOVdM
OS1WRU54UGo8b2sodnNAaWx3TmdqQUQ/Nk1FYU4KekY7JXZzJDQ7WE9lJDlfaHhtMiQta344KDtV
aTlERGIqIyZjakxxcCtYPnNjJi0mTWA/JXZ3NlY1Z2dzJiVxaDVNCnp4blJ2PClZZT5KT15TTmFE
WD9iaHhXM0EtPmdQUkZnYG98KXg5MH4/dmc/eXk0aTlhV2N9Nz05YT5SRztecW5USQp6JH55KGs3
dXJ1R0JXSzs3czw/TDVedzh2a3FTejlIeFgoQSpVbkxOamF5SGtkbVU7YFZIZGlPRVQpOUZERkNQ
aW0KejkqYX5YO1AmVj9FaW93OTIyTk1MV1dRQ0NFe0RxWWR+eExnN1Q4UjNoSGt2OWxTel5GQ0ho
YylLfFRgZ1BpYUJaCnpTSWU5Uj0qeilzZTdLenokP0R+d2BJX0xRV2AwVUxqJFhXY3F9cHd3Uzwt
KC0lWjBkMGpvPz9CWSlkcUN7S25fUQp6ZVBRWitVLTkpPF9wfkdgJDdqLSRDNWwoY1FIXjBvQUNa
YXYrZj1BalN5fGJiSmA/KyttbUVrKHhYcno8N29CKGUKenAtQk1pTlA2ZjhhZHhocGhgQUNrPiVV
eWIpWXtyZ1Q0KkBMJFdoWldNK05XWV9vMCNtZENUOF90SSNSIyVkVUhhCnpObVB0bHMtWD9Yb3cy
SUk7fik4SkQ9bjFkPD5rcG9sc2dha19UTm5SLXh2KjZzaUpwODI2JkE0KC1zRUdUez0/Swp6Wkln
VSUydV9PWnQlfnNkdjZYSHdDNWcxdmR9X1R5R2NzMnpyQz1uQW5SYzF+dUQtVHtQKUpHOzMtQEF3
PkQpczMKejJxVHF4aGxpNm9Pc0dNentWdGViM0gmfFpZck84YzZac1pGeXFPRCtQdj92YEtqXjwl
KmZJRDBlR2dwQFJzbSkyCnpsQEFSbjBWZVlJe210PTNPVUUtPzh5aDVocU4xQl9pZGoyOVZ7UkEy
RDZ9UzMlbnJ8QzZNaU5Jd348NGk/PSopZAp6PjBWUHhKRDZpVl9WKVJDJGFDJG9NX3g1VF90KnBs
KHJaZXRScF91eUMxRHJxZ0lMeVo9e2dHemxXKDVEbVN+bzcKemk8Pi1Gal5eZ1JDZyNwN1chcSoo
NERjX2lhaTQwbDQ4Nz0jZz4+cUNjfTB3fDUzM3NRO2tLMHZRTXFYYGc7NDgqCnozJEtGTmJkcmt1
QExuI25FblB2IWVhNkQmQ2QobEMkMUZwJm93MGxMVUJKe15UM1Q4TDwzciMyRH1gRHpQM3F7Kwp6
anpqO08+ZCs3akFLTkpIRzNTLUd5U21FS3g9UzB1XmBOe3NKeWltQkh1I2wxKkRESDw/Jkw5Ull9
Zl43MnxjIVUKemBjMVJPXiRENmV5KD8rQUBpJSthdz9WcngySHNxbWNNNUZWbFhnX2x4THJ6ZHlR
KSVaPXskPk0+NDtfZWtJU0B8CnpUUFIrNHJwZUZvKWk8VXg7JWpFVCZiJEVtNFk1VTx4aTtNV2ly
c2Y3PEpQeV4pdCl2WjhxSDVTJT8kPDhiMDFgOAp6OHg8eXc+OUhlK3U+Tyh5QkFhaVlfQDEkNWJH
Yz9+KDU+Qll6PSUjZyk1TkYwK0RyQ2RiP1BnYzsycWcke1FXKlYKeitJSj1gakJ0O1l3K3huS2pp
b0lQUm8qRChlaDNnRHlDP3B1NWNrNmFPaD1AcHI1fDdPJD00TF5HYnVkbFIqc3VlCno4cmQ5VyEm
U2YpPkIjfCM2cVRAYDt8amooKH0xWlFvKTFrJWQwbmN7XzswT094PSk/TmVLNClDNnwjTmtwVUpe
WAp6VihlcUhTYm9ecCN5d3U9M1FEKUJCeW5kfEswPm5Ne3EwaFI5PEROMz4oPndKZEFCfExlb3du
X2UwIU9rOUZzdVUKek4hPkVAV2IzTHIhTXJWPXhxUTAkPXZgUWxIUUdkfEMmTXhvJD9gRT9FIUI1
a2w8OHw8N2VkflBTfTdrdGY3OH0+CnozU2hISE0/QkFCcF92ZipTU3IwSFJ+WnZAK1NCI01sR3p3
LU9KTUhgM1g4P1ojR0pDT3daRDBqR18pfj8tY3pKTgp6WHFaKkBjR2t3NEJISV98JTg5IzlNTUZi
RnsoVXlGNlB+WWdlUlZrfF9FdjI5bnFiRj0jUFh9NzlHQ2hfI21kaFkKej5ZTFgxVml1eipRUEgt
S0FEaUdqOVU3V240LXN5KEswUFhSMTQ0S0NzcjFjOzVZOGErNlJSMy0+KGQ9MXtaN31xCnpyTk4q
KHZhVE9+QUxuakBEJkB3JS19Mis/aWA2V0FJOVRwNyFlfVYyVn55QEAzSmd2R2NYYHRzRXRhbTZv
YUZsPAp6SlVsJTMyPi0wQlJYIUFTPDl4XlRgQzNzMHw0anxiZzF6S1JsaHxKWmgoZXI2PlcjPDcx
cD8pcTJqd3hkPGdqa2QKekpsKCFqTlF6SUxHc2NKTWwyZHZAeT1MQ3dYcj4mWDlWb3cqaFE0JHpX
VkkoSktKc3ojRWxTeGNuWHs8MztZcDJxCnpfe2Jifk0tSD0pdDZpKDtIdlNzRHg3OHlPVnZiIVhn
JVQyJGJNN2t3dzglOXJaKigyKD5IQHhsVW4xfX10PFZVeAp6OFYweVFEKFI/aFQxUnlRNSlGeGp0
bk9LdCspN1M1c05WNlJBciFqb3QjX0ElWlBxRjh2P0xSS0NaRklvVGhNQEwKemA4Q3gzOXlDcngh
NENxfTUtVH1VWHItfjU+MHMzcTtTYW5lTVpfMXRGTiNafFg4bTAoST19fj5QKEl7byVBcyE2Cno3
JmZDQGBgYjZpeHhgSU1BY3Q5Yld6OVN+KVBYMnxnbisxVylle3VyOSkwXyRtNyhAZ1FmMmo4bzAy
UF5QTGleTQp6TForb31tXkVMTSs+bDNTdEszTW4oP0Q2R2xHbWBgVDVEeD9gbU1KZzxXKSFTdmQ1
Z2hSKW1AQl9GMD1gOzJWJF8KenxHM3N3Q01uJDBrU29yN1AwJTxuVDNSaVV4U2NXaWheYVNFcT9g
dlU0emg1KU5UTEh5O0d0bmF0bnlLS1M9dmA7CnpZTSFQKEtPYW9rX3orNVpeZSFtJVZTRmgwUlda
KVFaN2JAeklpJTJxekQjemN5aGlEKk9CfmVyPz1oe1VAOXY2KAp6STBIcTF7JSR3ZG9yflVWTWx1
ViZVejV6V2JURHd2U1FEPHt4K2pzITBPVTBkY2B4RT9Pcm5hQzRIdVZmLXI+IWIKejhfb2Z0O3BT
UDNpO0ZKKWJFZEYxTDQ2JUArLUpubGkoaGJecD1MNEs+S2omclE2SjYkMSo7RVAqISgzfD0wM0s+
CnoyOG54PyoqfFMrZXZ2YzEqRVFCQ0ZkKm9eLVUwbkI3XjNSYlUkUjRkdDF1UU88O0tkanNOWHd3
Sld+MHJKdm4zaQp6Z0lHNmB1WmV+MEcqQkZOTShmKTxMViRwVWV8UDRDZC1Bcn5EIXZ8ZzRWSTRy
TVlTK3IrJUJOeElVbTkpKX19YUAKekdxU3Ryck5abkRBYmpJWishQEUtZj12RE4kLU5UbWlBPHFy
SEtVMmc0QGNARHNQMjNHM1UxQFRiYHc7OTFpPkNgCnokQipwWDBDckM0S19+QSReJSNCRDtIciRI
P35KfCpNI0lpNGNgWVVZQ2tDJDU1IWBuZ19oWllHTEhVU2U/K15GeQp6LU1hXlMrfjdKbUpnZkBP
ZzQjPU9RfV48c09+aiZ5LUBnNnY8TDY1fmdeUzM7RklLVlpENmVjekNBV1ZVRTxsVEAKej1NOXhm
UXQ/K2dhJDVGU0xtcVdVVlliODNQfnZgbGZiRTtPaGJHcll6bmswPiFGJnhGYHU8bFlYazd1b189
UiFMCnprVTRlYVJwMGUhd1ZCYyVKJnd3Nzs3ZFlTNE5BS2shPDV0YD5tPDlpTiViR3pNMVBNN2to
Jm41VVJzSSlld0tQNgp6eWxROCkxejRoNWRmVWEocDxFWFM8bWtjZl5Oc2FnIU9kZU9vSkNEeDxI
Xlh6SGRvZT5JcnNEakJXfFBwcnRfOH0KeldqdjRiQDJVRnl3enw4IWdjfGA4Vi10KHdRdHlDcGo2
Z0MyZ3EoMk02Kz5VflVuSmBheTxWcFRgJk9UQGU9KjUoCno+T2pPSGUqJkkkeHFxJURZM15NIygh
M0lZWFBvO1BxK0NYNz5LTEgpeWRldnojZ0lmaVQrcDFKdVNPbWQ+S0dkMAp6U0p6JDUzRT1EK2Q7
MyNqKjB7TV50d2E3dSkkQld8Y0lDQ3NXViVQfFF5Qm0kOXNyO28wPH4wZD1SSzJmbERGbGkKel8m
N25jXldjeG1xUjltTSl5VVhpIXBVYUdaRThFN01kMWUhYDhFNXc1YSVxK2ZBfDlOPD5sSl9lPnZv
fD9lQXVnCnpAKyhpdGc1b2NSJjMoTE52UDA1Nm0qM1laRW1hcDZHRzFwa3lDWik4XiNCdXRQQmtf
KiFjSmMrejlFRFRISTJ9Ywp6dFNOYjthejJzcj84OD5LYFc0aG9xMG0jWmNWeWFUYj8tMVFSb0Mj
OHwwLXltZUZmTEAtNiY3S3ZVOy1HMGZIIWwKelNUUUBPP3loKDBvNyZtaWkmb2RIRjRgTHZ4Xypa
aypgdzI5Qn5WcU1zblV+dE1RUCV7eTdEbSlQQWdWbzI9QkVOCnpFRXVyeUQwIztrQ34rUEIyJlAr
P1c1flQtV2ZMOFgyUW1zdEJeSHVHS3VPNzkoeFVtJkVUeFJjYXMpOFhreis8Sgp6Y058TjwlM0Jv
OEZLKH5mOGhAbjIhXjB6KlM7PiVSJFlFNCMpYCFlK0t7YX1BYFM4e29UVUNBSWNoSmNuNFg4cEgK
ekdHcyNtRHAreER0ekImb2wyfH4tLXJ6QVVqVFBeP0BLbktsNWBAaWd1KkI5P1Z8dUxtLVFBPl5z
RHwtJjN4MHB+Cnp1JiZnWTM1Z2VPamshb0FXTjZwUDNkYHU4Y35PSDhMaU8/eSo+dWpFbj07VHF3
c1pkT2A5TTBjS3tLTFRJNCQ0Sgp6aUM5NnU8K31IJVNvaUo7dm8jbU89OGRBXjJfK3k8ajllcUlJ
PVZ6fEhMMX1iUmBMSHJ2VUhQKjghR0tldHpWMX4Keip5UHFEeHoyVTk4Q3NXcUJ+aUxNOClOV3VX
M2VlPGhNaz5WI3BGfG1SV0FuQDd2bFRkRUVtR1FFNDEmKjAqPiVLCnpIfTlrNU5mKSlQPX5RNWBs
UilIfUJLWUl8TWtzJDNYZHR8eWJwam1WPF9udzV5Kz95RyhafHJuPVEtNFE8KHZ+Iwp6e2tMOH1K
a0RxYGxUQD5SUDtLPj16Syh5QFleZXxYUUlZemwxVjVqNTBqcTgjO19kKVpYbTItcFohPFljSUxe
ZjkKej9BM28jWmxuYnZRemdIUldkSSE0b3N9ano4NXghSng5NStkI3Y4eEtKZFdCQXhhbU8+aVZm
cGFTYmVBPTtJcX4kCnpYS0c+K3B8bmA+QkY+VUNNITlzfVZRRzJ2NitrPjVDe21ROXF2WF5Wa1lj
e2p8OWApVU05JGljWihaU2tMdn5PIwp6OVpreVl4bEYxSU9AWlJIZilvPUB4SyQ2KldOay1+XlQ9
NGBSOG9Be1hiLTYxb2R3SjcqbzMjMSFpTDc0XnV0YDkKemlCPVNtWmpANz1LK3I0Ry1pYGwqQWFy
dzdQP0VlPmJmUipOVEphI3tpaGp5P25+a31zenAtfCVZI2xPUTtQP35YCnpRVGQzVEpRUX1OZnQh
dDJjSyllRDl0YWhTIW5JYzhwZXpYb2JCJURHKHdtKHhnfHVTRVBmfW5fXz15LSgyKjckQgp6bGMy
UG1vTiYySWY2MXh4Uzg5OGs/U3M/YCpSZTlrSn50PzFraC1xRnxNdHk0PXJqcHUmezw3X0k2dlV6
KDk3ezMKekxkMlJnellqX0lDJCpQUCpxVihjP28wciU/KmM4QWhlU2xmeylnNE9Acm9oeWNIWUdq
KX5OJDc0MUtzYlNsSk5zCnp4XyomYTJoTWR1QDZJQTBIQjVqLTFQdHE8YEJfUHkrbkxka04yTn5B
Y3hfVmBwcWB4XjlaJFBnMWd4aEQ0dGI0JAp6bDNPcT52RmlZI3tpSCtQbk5Mc1MpRn0mNFNKMjVl
VDNySSVLP1N4WXRMO0lIR0FwIUgqU2xRRXRkKFN2UDxDUGIKejFlP0wlbCtpP2poMkV0RVBmU3xH
ZyorTyQ/c1dDQXJZMzVZSXNad05KR1hpVkdATEA8KUN+NkdNaVNDZCt4Mms2CnpEIWhzI0NjM0tJ
VCgmRUdxJCFSIT8lQil7WHNGNj0/TWw3bnQ8UUBDSl9PeWliNyZ9Vy1XfktHMjdfc0V0cD44dgp6
Mj49RjVkRS0oJS1kM3NQVnM9WkhHcn4wVCpWZiszSChGX0lFdHk+PmtKUis5ZUBFS1VgY1RnemN7
JHxyQkFVVjMKejNmSUpPMnF0NXJZbzheVEpMeWNzNz16QjJAMilmbmFecWRiJVY8akBkKkhRe216
NGFueDd9U1dhTnVEej55S3czCnpfdWNHWW0pQEZ3YEBIVEJsa2ZtMnZjWnlAYGI5TiU5VnF9IVlO
LVctam5Ldz5eM2xuVE9Ne2lnejI5RXpNVTdAUQp6eEJfQ3hkM2t5Xnk2JldfP2Fufms2PHp5NlUj
d2opPDl6VXVpODhHKyoteSZxYWl7dWhBVXUzPURCaCROeCpBTFIKelN6TkY9Q0VnekpBZTM4QDBJ
Nn5FYUBeSW51TkRXJl5MeDlaNj95dlpUPVRBcGVxMSMhI0prQztuSENxQFBwVkw+Cno0MnlCJTl3
M2gyPHF8dHRJYDZoV3JZcUloRD0zfC1yKj45WHpQak9fTzxSSGpnTDNnVEczZTtDcFlCOVdpN3hf
dQp6SDAjP2VAQGdDTThUJW8xJFpDKzs+KkNOfmZAISgySlc2dW0yTVZnUFJLMGUjTz5YOzRUMVpp
SUtmc2s3Vkl9LU4KenlEKHc+b2ZiKHZSVT1YcjI9JChkezJGMVVrPU55TnZaX0JNQ3V3QVdkK30o
fjNJcEN6PTxCU1J7KlZpZj9NVyZtCnpEd3V1bHR2NGhlIVk8ODJsVmtSSmppaEpSdFR2MDAmYzZu
dHh4Rj0pQU0xMHdDYWM9bztyellCR3Z+U2NRcHA0Uwp6ejhMIWs0XlBoe3lzfG1WUjVKVCVQbUlr
e2Y/YH15a0xqaE9USVF0MTVQcj0yK0YhP081P20kb0FFP2VKYH1ke0MKenB0Tmc/ZUFqMm1fU1kl
WHVGTVRRSUl0LTRzI2x4a0JVfnkqQDBrTWZ0K3ElO2omMG0ja3ViKTRJJGUoIUB7KypTCnpvaWVm
fmIpQXhNVGw2O3RweDc8JVUqQX5yQkNJNn1mfTRWKyZpZW8jMHlRdW0pOylYSExNUkRiekxse2k7
UUAkKQp6Y0c2ZmxPOGBAPWMlbStjUGBpc3hnOFozSFJ1P0Y/aEM/WjdYK3FeLUxHNHV+QGFRI19y
PT9CJnkoWThhaCo2clkKem4jO3BaTD9mZFhLKillZGl8dDN2R0xtWjhYOXskUUx+TG5gTFMwejF6
SyNeVzZldDB0NnMwVjVVUlNnWHdkJDxqCnptZFJOUk8ma29DaVpgRGxiMCUmUkI0Wj1yQlF6emtt
KGk3dG9FbTI4JW9jbVd3cndsdmxXN3luVWh1Nl5XY3xXWgp6bG5RZ09UPEhveExaWmpKT1ZEN0hy
eE0mNUtJaj4lI3ZIUnNIfURzT1NZd0xVWVFNLUt5RHRzNipfWH1geUl3Wm8KemRVQ0V3Zm1RKShh
X1B+QFQ7c3dZUWNKNTI4fCFrMmdPbThgOTs8TW9obmAhQDYlWnAoNmZTXkpWQXNseF9fOzZVCnpU
ITw4P0AhTVBsaXtWN0ZxUCp2UHVZODBLRm0xcUNNQFpgN1k5RnZvaEprJUI2cXRHayp0X20xemF7
Smw3RndhXwp6KChvPTJpaiV9Pz56KUV8ISRkO0xvUUhVdFQjLW01aHghcz44emhWKj1xWjQ7TyNz
bX1KWUghSlN6QktaNWxqPmIKejhPQVF2eWEpcFJ3OVgqTkhDVVFjYDRHQGJ1JUF9M2xIRXxpTGZa
YFAhKkgjTWQlSGBxSTZ6UzByTS0oPXsoSE1MCnpfdVV4Qmc/QCo4UkhmU2xscXxIMmAwYzxIdmN6
aUJeSW5rJj9neCU4THNjPiVEZE1KTzlON2lxbkw8IzFVRCsoNQp6P0s2dnVeekwjMzF2b0B1MHtk
bDZoViowMyYkQ24jd29QUUB1SFFYfGN9dk8xZ3tNcUk+TzxlWDx6YGpyQE4jPyoKejxjMXxjRzZa
NTZedUliY3M+SEZjREN+T0ptXmF7KEJ3QHBISE5sVlcrMn48PSopQmlgM2RIS3I4b3Rlemw5QTZx
CnooQDw4ZWYycm07VnZ1ZkFnTmJyJl95LX4zcmlBJiNtVEg1b2YmPiQlNHt4KXRMX1R+JkpPUGV4
TFlUUVcwQjlNcgp6QT9raTA8QE5FJUZkaTlFRkkrRSNPXiYkUDNjQyg7T20obUgtUU5xTl8rfTdC
V0FhSUFJNjY9TyQqU29UNVRNI20KeiZRMVY1XyRAXndCdEAhQ3smLUo9aE0+UFJsbzVFMDsxdVRl
M00hNUZlNyYxNUZ5UDgzWDxZRkJGMXotM1FhM0tzCno8NU84IT0zTDFtYlpSO0hPNCN8e0xOVEtw
YE1JM3AwMitSVEdPYmRJdWgtWTJxTT5SeilKZlA9JkJ9Rzs9MV9gaAp6UTdQIWU3RDswRF5YSiQ1
T0t4dUJldjJKYXI7NE9HK2d8P1ZOeEQlNSZjUntzIVQwQWNnITVwNGAkNk56WTRjfi0KenYoTX01
KDdVMXctMyNsJm5EYUo0VzR0ZnxyK3VgUllRSCFQZEpmKD00Q3BtVyZRIV5KTVJ3U1JRZExee29q
bjw5CnpVdHBsYFJaPTAhK2RSe1RDTzt2N252JTFtVHdLVkxNTWw8LWlwIXBNPHhfKGIhREAjUjJw
eX1hc3F5YkV4REg7WAp6ajxfVXRpcC1LWlBQeWhiYnloTjNePnE0Q2woQ2NPSDdCPkBQbClZKkZC
OHBqTi1lWG1ie1ZkKG45MERYPTNJRU8KekZRUUBSVXVZd1BVM1pGYV9SQCVZb0g4WUxodmxrakhx
KFBxa1VycVRUQ0d9N0xGfnlMOWoqV35NKShaI3hveWRaCnpjTWg+PyVJQCRtdVpNSVVjKWsyYXMo
b2lZVEA2KXlxWlE7bXVxIz89elcpTX4rRDZAZDtVd2RRRCZNQiFicCt5OQp6JUM2QVEyISE1TyNf
O24kOWxFYTduZzk9YWFwfT1rWTdsdXFZJD1iKzQxNzc4I2xHd3thYmgyI2JWTnQ5YF8/fi0Kem9k
XiFaYmd0cmQrJiFAVDNFKnUrbGw+WngrTVluV2tqSlAxTG5sVWw7VnJ7Jj17ZXJ8SVd1Vkd2YCsq
dTcjYyl+Cnp4WH5hZmZoTyFNOytGI0VhPzF9RERJLSsqWEhRJUJ1YWJsejs/WlFZb0tHdHR0YW9s
czU7KVNAN25wV1RxTjhOTwp6e3VDaFdXb1NmJXNGMyomVlBoNHVCbEpoO1J9NSRJeCZ2YnYyUmRu
MTN6eDhAMkdibm9mcChZWVpiQTs7NEE7aGsKel5XIzw1X1JhbXVCPURXOC0kdUNIYU5NP2VzN09l
WEtlZGtxJT1VYDAybk1HbFFnVTY/YioxZ3pKe3ZyO0lSS1A8CnpQWFVhd2NFM3B9RmRNZ1NBN25g
cEYoTFNFMDwrd0hlfV5yfWNRJiYjVF8tWmQ0b0lUaDtIXzZzTWR7aiFSVWwpfQp6SShXaztsekBg
Yk99I0xJdEQoOUN0aT9sVXEtQUFRZnQ/MzZqSnImazdGbTx2UEQ7Pj5MQ3QwTCU1IS0zakZBS08K
endudX4pa309KWFiVURFNiE7bzwwUDZJfShLdW1ORiVAWE56TURZMmU7SEtoYzYrYyRpU1VZRyRA
S3U3Ul5rXytUCno0YHhiN0N1JH0jWll7SFR3WiNyMEJYNioxd05gRztXfllrcXotTUF5JSpFUzJQ
aGQ2YDtWV2NsTnlhPTVhNCRZUwp6VUwpK2c2K3I1ak09JklKSn4kVnFMUXlrZl5Ldz1ScGA2YFR5
KURVb15fJTtqQ0g+d0kmTGQrRl9PQDJjWTA/NH0KenJZMXZmRSNseWJaJFVWbyM+WVB6a2FPeVBK
VE1CQUNSPUNoVW5VOUFJaU9SMGluPHkxVW5lQ0s8Z2U4YGJ+ZXwlCnowNm4xUHooaT1nQG1+eF9F
P2xuK2p9fTcpJXhJeH53LT9JY2laZm58Z1g5aDw8eitIPjVZKD54MEwlISUtPDN+TAp6KzR+bW9S
RzdoQlFVQyQ5MkBOREYwT1Q0MENaRXVsJmohekZzQkx2WEN0PHYmOT9IZUExUz88YUYlZlN+P2JN
TUwKeiNkO2hJXntgPnJzb3BXbGA4ITtDOHVPMyF3ZVAzY2puKVQmJn1CVEVrPUFBOTw9a2NaWjNA
JjMrMHIyTGIxbV9sCnpyaC1fdDstSXlJPWxEcz8jLUF4SW59QmowZWdaaHg4ei0zWUd6QzNPWW9i
RUsxbGN8czZCOUd1eFZ1ZkdkSD0ybQp6JUhMaHIxP2IhYWBHTGRlQUE8P293dURPMUhyODBeR0U+
UjgwN2U5IU5aSUQwaUs+MFdtRn44TWZya0duVDAxXmMKejFSdlApNCFYamZ6SWxUZC1SfkhYbmQj
SzEtZEheREdnMUNQKFVLSlV5MypoTCkwX1pia20lTXttPUdBUD1wbUdUCnpjQ3F5aFJ+dDcxYkhk
PnUtfUk2TTA+TGZLXyU2VzZ6b3djfTdCIz4lcDsoZl45XjBiSz5DP2M4a0YkeSg8PmVSTAp6Qm1l
VVo7NlFnRmE3fCFgXzU3PlJJUSN0U1JuMmVEZWZEUS0tbXVSYlA2KE91cDAmUSVjeHFqflphel9x
WUl4UT4KemVZbSVMdHl3S0E7VHkmUG5aQlNmdjJMbmV0STEjRyN3Xnd5Sys7NUhOVHdsfDhHK2xg
U1JxbFRKNW5GRHBaJCNgCnpzam01OHpEUChFdmd4RkRMWSVUJTJAb3NHJFE1eU1AeVoyOz1MfW8w
d0x5T09aZ3BVVUY1M3NhaVpFWilhK2JNOwp6QTJXcE1gTilCKGNfX1NfKHp3PXcxY2VOeUVwWUdk
VHZIaFFQZXRReUFCfDI9eTVaXlkkdkdHR1dMN3ooaE1rSj8KektYfS05ZzJyaFpWSnNveDAhMEZD
RHJuKHhyO0VacUcwYiVIbFY7MD4qcWtve3gxdU5+WCtQYUx2Xnl6QlJEaEhLCnpWdiN1TE0oSU0x
MEd2V2M4aUJiNVh2NCQtY2tydkIqWT84OTE4T0gjPGYqKT9DNUpqQXNqNHRAIT8/WCZoUyszfgp6
R2BJI2hScVdsayFDJmBRQ0hHYzAjdismY2lsO0lHZUx6OEtifXpSbkUmWmFxUFR5WUEmP1NGIytU
S2t7MkNSZSoKenp8NjQ9aVFhYDhYSVI0OU9HS2phYnEwT29QJlh9aTF8fGVvNUNNYkdKYD5SQFNu
NXNfWmJ5U2RvJkR0SCpHbn1GCnpiclVuTTJLPDNCVXF6eFloTVNCY29OU0dFLT0pKVZkdFB9WFFN
dnZUVig2TGFYP1p8R1NhT3V0cHp6Yy1HenFSRgp6MGZtVz17OzB0PFIoezJHOW8keXVMMmszRmo+
PWp8JGg7dVM8MXJPO2QzYVRqLTdwVEBnVnw2VSpkViZTKzlkYk8KenZvckphcnwwRmN8QT03TGNW
VnskZTh3TCNBaz9fdlNmdmY8eHs7a3BJYkklfkpSKkgtNVAkMX5lM0cyWUZnV19FCnp3OTBsRWhw
cl5Kd19VNjl4WElWRkhxfFomLUdmMnlWQV4qfHxLKyZBYSt+fkVtPktzIWBxWkdEOV9NXmRvRUp6
aAp6dSZCRXxvP3BjIVhgWX18VH5IdlB2QWZgY1EtVlAtWGgqemRMcjV7JCZ8YnVDUk9HTmVVUURe
dmRKaWBCZzZgdkwKel9VdCQ4bXZnSSlpOSk3eGthT1Y1IXVub2JpS2t8eGNTWk0+Pis5TmtFM01J
KSs8SndmMz8xP1p4bHY5MjZjcCpXCnpvekB3YzJHY3spSjNuQUR3NVM3UFZaUTZ9WEZNOTE9ZyFQ
ZU00bFY8WW1HYVQrSXdsPVJSX142SzZTeFk3Wit+SAp6Pzd5bkNNTXZFd3dlWFJNUzVZTEUyb3dz
e0NHaUMhQl9rQG9uZEktQnAzYSh+aCYreXZYfi03Ky07O2BlO3UheV8KenxGVml4Pz9CcUtUSnhY
ZFk7Wk1PXyFnbVJzQz8lajtfSjlUSTJkPXRlKDdIQWlBWGpZe3RFRns9ZyhoIXtPIUx5Cno3fCpj
cnc3JV9OeXVRaSFIWT5IMUBzZ292T3cjbV5TcTFFeVJAPUFWQ35eWXBVcVpsTXJBXndvQmd2ZlZ5
ODJ9NAp6QDFNVHFraHV+ZloxQGZ0V0RwSTtwckl+QDRPMzI0OTlxdyZUQHRhSW8pUVFySXlnOShu
d2wwM14+cnlzXihpRXgKejU7djZgQlY9NzdXVEIzZlU7MTx5aENZcGREbUd0T1pWLUpQcTs/LVYk
WTZVLT50NTZ2JVE+fkxyfil9PDVvSXlLCnpDY2VzQmxYTFU0anlAU1NpJj5TPWVHUihLV2k+dEJf
c3BkSjMmdDV8MStOViNfNkphN2xNbHw2Qm9HV1plXktjXgp6ajQ8UmxXYFhnPFAtbEhZT183NjdT
QU14RGxFc2BSO0JZOCNtaWctZiFWckM3U2x9IXlEdy1DNSNxY0BWc3VnaCsKejZANGcmKHk9OG88
bHVgbnV0bk4jWiY4YD9aRXB6I2w7S2IwJCh7WUAhbjM2PGdtQnAtT3VKajZkZGErTSUtUExHCnpA
b092eW5ZPyNfKEw0NzgxVSghVkdZYVBEYn5fP0RxTll4NWtfZDd8bWRjJjNWRDY7bW9+ZC01aTJB
SWV1MWAxVwp6X3hoJUxhIU4ydV5zI1R3UU4rKWcoaVNyNlNOeFI8Jn15c3JfSGUtPEwhMGNAJjRZ
bkYkZVhvS3pySGQoQE18dSsKemlQKElWOHFjMihaSWQjLWVxX0Y8UTNZfjxsSitpOE0mWVM0Z2A4
UVZWbjNVeVo+eTdweTU0ajJoRTdzJCktaWtjCnpmUEsjejR8K2Ved2tqNm40THBEN1MhaWxtKjg3
NzdIOCY2JGQ1Q0A0bTZAQnYqSnZAc3lfKGBoez1sOXsxNVFtdwp6NDcrNWNGTiEoa0lfWXZtdVNN
NmM8O0JzNEI+bShyclZDfCRUNlVJNUAwM01wWDwwN2VDWj0mNF5EOz5oTCVFWDgKenc5JGU1OTh2
TT5OcCtnaWF4enxZRUYrcTJkMkpEYHszTkRXSVhSaGZaOTZBdGBAQypebEhzUl44R1p2TTFnc1p6
CnpDJGpZT1BWRi0pJjJRZF4qZUxuNzBLUztWe3kqY3UlVHdKenI3U3A5Xn11ZFYmKERVWFdLP0VX
VnQjZ1QqSXpTeQp6bCpjP0Fue34qWDV4b1BhdCFyb0pYQXs9dTZVSlRUKHlpUHpua0ZNZUxMbFMw
UUtmSz1mPDxIJiZxYSF7NnY5QmcKekFvZmVoVkd7eFNuVSg0SXtObjg1aVJVcXUqXn5FWGJxeDw+
R0xxSypFQjFuWiNyfGVMWW98SDg/TEtxPipOYVpLCnpFamAxcEtWR2pKN30oWDwpdDVhYj91PkdF
WGtgRVhkQioxKjU8NkdCPCspdnMjbEI5a29pWjQ5a3U/bWBpPENLVgp6NHI5bnUoNSo0bzxCPm5K
cGJMZSRGZ0dBSnVYdWhuKjExTXljS1VER3Q5aWYoTiR4NT91dVU8MXAoKz1eVkhCTSEKekpIP0gj
SCVyXis7OWdTYyFnTFpoRnJ1P0h4Uz94b1NrfDlfTXI2MWVWaD80ck5oKExAeDljU0h7aDd6R2xs
UjllCnpPaTtGMDRNaUFoek4+ZSQpO3tGdm1adD9WVkJHN1VpYikzR3JUbD1ZYUVWYmIxfUZYSlYt
c3UoPmlLJX0hP0F+MAp6NVZLbWExfitMUk5PbWxpT3g5MHRPSCMoeT1TalV1UWExZ2dVUmpuOyh3
YzZsJHMmUmVwWDFoV0dPVDBDQE1SUF8KemZFdyU7QilkM240e0pONWd2Yn5DQmMmYmU5dkpuVDQ1
V3lOUEtvX0dnKnZsQE17aFZrKEFMdVh2fV48Mmc3IUxsCnoyUGFlaSZlPF45KytgS2E+fTxSZCtq
NDR0KjNYJXJLdVAmZHc0Sm00O3RzNzEoZ1pAd0FGbVh9Q2dJfDJAMHxGeQp6ZX5AZ0o+IXAoWWQz
UyFXdUdOSX47dHZUcmU2RTU2SXJpeDIxQm02RExLZ2NGVSE0NChhZ2RldjR1dTNeQnVucEwKek1f
PD1iYnpPSVRfcW5ePmxQQFE7UG9nLWhCQEoxdDg4fip4XyUkT0Q4RExLdWJKbTdAaGtEb0xrZGMj
LXRnPmZaCnpRIThMN15JKjBSVT87PnZAfCFZRE52U2dWLUJeYmw4c042Jnl0cTVFbTk7QjE+eVh8
QF4hZklyTUpjOHZkaD5PRQp6Y0wla1l4TzRocWBvd3gjKjBHUCpydlBrMG9nbXZ5MmRoNEdoWUEx
dXYrbX58TEl3cz43Tns7WD5IfiVMdyNAMWcKeiQzSmpDT1dHbmd2TzltcXltS0hgNXdBR1ZRO3pK
IysjOG8xXjJMJW51S2tnfSY7O0BfdlIjO3tiSi1YRG8mT0hXCnpINGsoezB+fFNXbk87VXJVYXdx
OUV5IXsjUlVqZytqJTg1fjh3cnx3aT12YTBSVGNoaDNiMiN4T3xHUj9aT15pPAp6R1M+VmhmT0hw
ITN9dkE8VkU2VVhLYk88YigkOEkoJUN6bHJ8Rk1De3dfNX0kNnJnISZocSh+c1NYamZqLTZ8d0kK
em03MCtXbDNLO2JHWURsSHJ7WXRWYnZ4ckAhe0J+QFdpaGZmeiE3b2VYck0keWY3V2c4c30kJiFS
cnxsbGYhJV4rCnpIPkp+UVpCPD9mYkcxS0d5NjVlJis+KzhWYnpPcnQ8bzxUTjwqKmxWZEZXVlQl
IV5PVSZQY0lIelNHcytVJCp0Swp6PiohTD82Vz57S210M3lFZGt5cXdFR2ZPfmI0YVhYa1VZNCMj
Sn58SHlyUG48KjlrJGhWUiVkTmNgMlp5JCYjPHAKej1pTzAlOVQqTWtePC03O3tAblp5OEZ2dnhu
R28rZ0hVRVBkXk01cFZ7eDUjZChKclZkLT14JFkyKzI+SCpXWTcyCnpKbDtIJjV3bGBpR3dzb1lt
Y0lLVUM5dGMlcEdSR251aiN0fF47I0lMaSNfPz5WNnVHcEJrezRsU3tVMzhHKTsoQwp6MDZwNS1K
akN9YipfKHxxTSpsY1Z8Q2F8JnxGP0Q7QTc5VGpHYXxhWHlEZ0t8Wnc5Q3hKVWh1OU5NfUUwS2B8
IXUKelh3MmM2RmhIS1gpS080Vj5RfnJQelBoNUBgTkNVSSRsdmd5Vld2XjgzRnEjVGEyYT0yPlpY
dChiIVkhdW9hbkFaCnpKPjA5VHRqcm87b2JCRkw+PClScT1HRHZSR3xjQXxrJkB3YWNgWVRJMyg2
RE9ZdnF6RGBmOU0heTshWHRQbzBXQQp6RUh1Uig4MVVgOWltPztGbFE+KUh5N3ppKDU0NCFvdDFX
fHUyZXctNEp7USZocXJTQWc8IU58T19mTXtzOHo4djsKeipaTVNDNzJmaUhUVWVQfHBTUFgqZV5I
KyE+YztXT3hRdV5TPWxANjVgQ25aOHxHeGNTelVLNGFBQ210VE1FKGZYCnpYPSlARG5sQWlOJipO
ODhmMTQzLT9uPVBXVjV7LVpjbTdqNHtAKkE2VyFDY1Zrby1GJmU9RHpEVCZUbkMhVmBDSQpUUFFm
NEdBdWckRnxDMEIhI3FJd0VAfWdlaQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NzhkNDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGVyZSBzaG91bGQgYmUgb25lIGJpZyBzcXVhcmUgYmVs
b3cgY29udGFpbmluZyBmb3VyIHNxdWFyZXMuIFRvcCBsZWZ0IHNxdWFyZSBzaG91bGQgYmUgZmls
bGVkIHdpdGggMyByb3dzIG9mIDMgY2lyY2xlcy4gVG9wIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2
ZSBvbmUgY29sdW1uIG9mIDMgY2lyY2xlcy4gVGhlIGJvdHRvbSBsZWZ0IHNxdWFyZSBzaG91bGQg
aGF2ZSBvbmUgcm93IHdpdGggdGhyZWUgY2lyY2xlcy4gVGhlIGJvdHRvbSByaWdodCBzcXVhcmUg
c2hvdWxkIGhhdmUgb25lIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzNjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1sCkBAIC0wLDAgKzEsNTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorIDxoZWFkPgorICA8dGl0bGU+
Y3JlYXRlUGF0dGVybiByZXBlYXQgdGVzdDwvdGl0bGU+CisgIDxzdHlsZT4gY2FudmFzIHsgYm9y
ZGVyOnNvbGlkICMwMDAgfSA8L3N0eWxlPgorICA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICB9CisgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KXsKKyAgICB2YXIgaSA9IG5ldyBJbWFnZSgpOworICAgIGkuc3JjID0gImRhdGE6aW1hZ2Uvc3Zn
K3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzUwJyBo
ZWlnaHQ9JzUwJz48Y2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScxMCcgZmlsbD0nZ3JlZW4nIC8+
PC9zdmc+IjsKKyAgICBpLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGN0eCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcp
OworICAgICAgdmFyIHA7CisgICAgCisgICAgICAvL2N0eC5zdHJva2VXaWR0aCgxLjApOworICAg
ICAgcCA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJyZXBlYXQiKTsKKyAgICAgIGN0eC5maWxsU3R5
bGUgPSBwOworICAgICAgY3R4LnRyYW5zbGF0ZSgxMCwgMTApOworICAgICAgY3R4LnN0cm9rZVJl
Y3QoMCwgMCwgMTUwLCAxNTApOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDE1MCwgMTUwKTsK
KyAgICAKKyAgICAgIHB4ID0gY3R4LmNyZWF0ZVBhdHRlcm4oaSwgInJlcGVhdC14Iik7CisgICAg
ICBjdHguZmlsbFN0eWxlID0gcHg7CisgICAgICBjdHgudHJhbnNsYXRlKDAsIDE2MCk7CisgICAg
ICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgMTUwLCAxNTApOworICAgIAorICAgICAgcG4gPSBjdHguY3JlYXRlUGF0dGVybihpLCAibm8t
cmVwZWF0Iik7CisgICAgICBjdHguZmlsbFN0eWxlID0gcG47CisgICAgICBjdHgudHJhbnNsYXRl
KDE2MCwgMCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBj
dHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgIAorICAgICAgcHkgPSBjdHguY3JlYXRl
UGF0dGVybihpLCAicmVwZWF0LXkiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBweTsKKyAgICAg
IGN0eC50cmFuc2xhdGUoMCwgLTE2MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAs
IDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgICAgCisgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgfQorICAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgIDxw
PlRoZXJlIHNob3VsZCBiZSBvbmUgYmlnIHNxdWFyZSBiZWxvdyBjb250YWluaW5nIGZvdXIgc3F1
YXJlcy4gVG9wIGxlZnQgc3F1YXJlIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAzIHJvd3Mgb2YgMyBj
aXJjbGVzLiBUb3AgcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjb2x1bW4gb2YgMyBjaXJj
bGVzLiBUaGUgYm90dG9tIGxlZnQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSByb3cgd2l0aCB0aHJl
ZSBjaXJjbGVzLiBUaGUgYm90dG9tIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2ZSBvbmUgY2lyY2xl
IGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPC9wPgorICA8cD48Y2FudmFzIGhlaWdodD0iMzMwIiB3
aWR0aD0iMzMwIj48L2NhbnZhcz48L3A+CisgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDg5MWIyNjguLmUzZmUyNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDEzLTAz
LTI4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICBSZWdyZXNzaW9uKHIxNDI3NjUpIEJyb2tlIEN1c3RvbSBTVkcgY3Vyc29ycyBhbmQgU1ZH
IGNhbnZhcyBkcmF3aW5nIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBOYXRpdmVJbWFnZVB0ciBieSBQYXNzUmVmUHRy
PE5hdGl2ZUltYWdlPi4gRm9yIG5vdywgb25seSBTa2lhIGNvZGUKKyAgICAgICAgaGFzIGJlZW4g
cG9ydGVkIGFzIGl0IHJlcXVpcmVzIHRoZSBOYXRpdmVJbWFnZSB0eXBlIHRvIGJlIFJlZkNvdW50
ZWQuCisgICAgICAgIFRoaXMgaXMgbGVzcyBlcnJvciBwcm9uZSBhcyBtZXRob2RzIHRoYXQgcmV0
dXJuIGEgTmF0aXZlSW1hZ2VQdHIgc29tZXRpbWVzCisgICAgICAgIHBhc3Mgb3duZXJzaGlwIHRv
IHRoZSBjYWxsZXIuCisKKyAgICAgICAgUHJvdmlkZSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIGltcGxlbWVudGF0aW9uIGZvciBTVkdJbWFnZS4KKyAgICAgICAgU1ZHSW1hZ2UgZG9lcyBu
b3QgaG9sZCB0aGUgbmF0aXZlIGltYWdlIGludGVybmFsbHkgdG8gc2F2ZSBtZW1vcnkuIEl0IGlz
CisgICAgICAgIHRoZXJlZm9yZSBjcmVhdGVkIHdoZW4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSBpcyBjYWxsZWQgYW5kCisgICAgICAgIG93bmVyc2hpcCBpcyBwYXNzZWQgdG8gdGhlIGNh
bGxlci4KKworICAgICAgICBUZXN0OiBzdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKToKKyAg
ICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKEljb25EYXRhYmFz
ZSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlQmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVS
TCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
OgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpj
cmVhdGUpOgorICAgICAgICAoQml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFnZUV4dHJhY3Rvcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0
ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6
cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U2tpYSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWE6OmRlY29kZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNr
aWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OkJp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL05hdGl2ZUltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZVNr
aWE6Ok5hdGl2ZUltYWdlU2tpYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSk6CisgICAgICAgIChO
YXRpdmVJbWFnZVNraWEpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjbG9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpwbGF0Zm9ybVBhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoSW1hZ2VGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWU6OnNldFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OmdldFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmhlaWdodCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFy
UGl4ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpzZXRIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTdGF0
dXMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisKIDIwMTMtMDMtMjcg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENQVSBwcm9maWxlci4gU3dhcCBGbGFtZUNoYXJ0IHdpdGggRGF0YSBHcmlkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggM2NiMTM5
Ni4uZjJiOGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJ
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY28KICAgICByZXR1
cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEljb25EYXRh
YmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2ZUltYWdlUGFzc1B0ciBJY29u
RGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24g
PSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAg
aWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRl
eCAwYTcyNDIyLi5kNjMzZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldElj
b25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdl
VVJMKTsKIAogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIHN5
bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2lu
YWwsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIFN0cmluZyBzeW5jaHJvbm91c0ljb25V
UkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91
c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgSWNv
bkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uMjQzZWRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc5LDcgKzE3OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9y
SWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgSWNv
bkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9hZE5vOyB9CiAgICAgdmlydHVh
bCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJ
bnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIHN5bmNocm9ub3Vz
TmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0
dXJuIDA7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJl
cGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAK
aW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1h
Z2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRt
YXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRi
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9h
cmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFz
dGVib2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
cik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcCA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYg
KCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGNmNDMwNzMuLjEzZGM1ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAg
LTI5OSw3ICsyOTksNyBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNp
emVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitOYXRpdmVJbWFnZVBhc3NQdHIgQml0
bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFlbnN1cmVG
cmFtZUlzQ2FjaGVkKGluZGV4KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMjAsNyArMzIwLDcg
QEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
ICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFn
ZVBhc3NQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAg
ICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDY2NGVlMmEuLmJmZDQ5
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtOTAsNyArOTAsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyNpZiBVU0UoU0tJQSkKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG1fZnJhbWU7CisjZWxzZQogICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7
CisjZW5kaWYKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CiAgICAgZmxvYXQg
bV9kdXJhdGlvbjsKICAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKQEAgLTEwOSw3ICsxMTMs
NyBAQCBjbGFzcyBCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNz
IEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQYXNz
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZl
cikpOwogICAgIH0KQEAgLTE3Nyw3ICsxODEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmFz
X09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIE5h
dGl2ZUltYWdlUGFzc1B0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOwor
CiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURF
OwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmllbnRhdGlvbigpOwpAQCAt
MTk4LDcgKzIwMyw3IEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBl
dGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIEJpdG1h
cEltYWdlKE5hdGl2ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOworICAgIEJpdG1hcElt
YWdlKE5hdGl2ZUltYWdlUGFzc1B0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKICAgICBCaXRtYXBJ
bWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogI2lmIFBMQVRGT1JNKFdYKQogICAgIEJpdG1hcElt
YWdlKGNvbnN0IHd4Qml0bWFwJik7CkBAIC0yMTksNyArMjI0LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9
CiAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZy
YW1lQXRJbmRleChzaXplX3QpOworICAgIE5hdGl2ZUltYWdlUGFzc1B0ciBmcmFtZUF0SW5kZXgo
c2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGVhM2E3MjguLjVkYTI5NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aApAQCAtOTIzLDggKzkyMyw4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsK
IAogI2lmIFVTRShTS0lBKQotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2
ZUltYWdlOwotICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG1fc2tpYUltYWdlOworICAgICAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOworICAgICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBtX3NraWFJbWFnZTsKICNlbGlmIFVTRShDQUlSTykKICAgICAgICAgSW1h
Z2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9p
bWFnZVN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRl
eCA2Mzc2NDNkLi5mNmJlMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsg
U3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2
aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAv
LyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDkxNzQwMGUuLmVjNmRi
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6
IDA7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCmluZGV4IDY2YThhMGEuLjRiZTgwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigp
IHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJv
dmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAg
TmF0aXZlSW1hZ2VQYXNzUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOwogCiAgICAgZmxv
YXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFB
dEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2Vk
IGFueSBhbHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZVB0ci5oCmluZGV4IDFhZDViZTkuLmQyZjRhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtNTYsNiArNTYsOCBA
QCBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJ
WE1FOiBOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBSZWZDb3VudGVkCisv
LyBOYXRpdmVJbWFnZS4KICNpZiBVU0UoQ0cpCiB0eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1h
Z2VQdHI7CiAjZWxpZiBQTEFURk9STShRVCkKQEAgLTcyLDcgKzc0LDcgQEAgdHlwZWRlZiB3eEJp
dG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlQ2Fpcm8qIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFNLSUEpCi10eXBl
ZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYSogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIE5h
dGl2ZUltYWdlU2tpYSBOYXRpdmVJbWFnZTsKIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VTa2lhKiwgV1RGOjpNZW1vcnlPYmplY3RJbmZvKik7CiAjZWxpZiBPUyhXSU5D
RSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CkBAIC04MCw2
ICs4MiwxMiBAQCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwog
dHlwZWRlZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCisjaWYgVVNFKFNLSUEpCit0
eXBlZGVmIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlUGFzc1B0cjsKKyNlbHNl
Cit0eXBlZGVmIE5hdGl2ZUltYWdlUHRyIE5hdGl2ZUltYWdlUGFzc1B0cjsKKyNlbmRpZgorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjAz
ZDE5ZS4uM2U2YWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5n
ZWQgPSBmYWxzZTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIDogMDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAgaWYgKG1f
Y29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAgICAgICAg
ICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3Np
dG9yU3VwcG9ydCgpLT5jcmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5j
cHAKaW5kZXggNjRlNTM1OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBA
IC03Miw4ICs3Miw4IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFJl
ZlB0cjxJbWFnZT4gZm9yZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kID0gaW4y
LT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVNraWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91bmQtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiYWNrZ3Jv
dW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZv
cmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUltYWdlIHx8
ICFiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9y
TWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJv
b2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RVbnJlZjxT
a0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5k
YXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAK
aW5kZXggYjBmODBjZS4uNGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25l
bnRUcmFuc2ZlclNraWEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25lbnRUcmFu
c2Zlcjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3Bs
YWNlbWVudE1hcFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4uMWJlNDU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKQEAgLTcx
LDggKzcxLDggQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgIFJlZlB0cjxJbWFnZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBpbjItPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAotICAgIE5h
dGl2ZUltYWdlU2tpYSogY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFnZSA9IGRp
c3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdlID0gZGlz
cGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9yTmF0aXZl
SW1hZ2UgfHwgIWRpc3BsTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxp
Z2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0
aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJ
bWFnZSgpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAppbmRleCBmYjY2
MTU1Li5iODA5YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcApA
QCAtMTEsMTIgKzExLDEyIEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmlzQml0
bWFwSW1hZ2UoKSBjb25zdAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmJp
dG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmlz
T3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OnNpemUo
KSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lk
dGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFNp
emUobV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFw
KCkuaGVpZ2h0KCkpOwogfQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBvbmx5IGhhdmUgdGhlIG9u
ZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3LDE5ICsyNywxOSBAQCB2
b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBk
ZXN0cm95QWxsKQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZGVjb2Rl
ZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmRlY29kZWRTaXplKCk7
CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7CiB9CiAKIC8vIFdlIG9u
bHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQYXNzUmVmUHRyPE5hdGl2
ZUltYWdlPiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKQogewotICAgIHJldHVybiAmbV9uYXRpdmVJbWFnZTsKKyAgICByZXR1cm4gbV9uYXRp
dmVJbWFnZTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIGJvb2wgQml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdl
LmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhlaWdodCgp
ICE9IDE7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgIT0gMSB8
fCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA1NmViZTNhLi41YWUyZDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBAIC00Miw4ICs0Miw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9ic2VydmVycywgYW5pbWF0aW9uLCBtdWx0aXBsZSBmcmFt
ZXMsIG9yIG5vbi1kZWNvZGVkIGRhdGEuCiAvLyBUaGVyZWZvcmUgdHJpbW1pbmcgdGhlIGRlY29k
ZWQgZGF0YSAoZGVzdHJveURlY29kZWREYXRhKCkpIGhhcyBubyBlZmZlY3QuCiAvLwotLy8gVGhl
IGRpZmZpY3VsdHkgd2l0aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRp
dmVJbWFnZVB0cikKLS8vIGlzIHRoYXQgTmF0aXZlSW1hZ2VQdHIgPSBOYXRpdmVJbWFnZVNraWEs
IHlldCBjYWxsZXJzIGhhdmUgU2tCaXRtYXAuCisvLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1dHRp
bmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+KQor
Ly8gaXMgdGhhdCBOYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2
ZSBTa0JpdG1hcC4KIGNsYXNzIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhIDogcHVibGljIElt
YWdlIHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVu
IFNrQml0bWFwLiAgSWYgImNvcHlQaXhlbHMiIGlzIHRydWUsIGEKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsKIAogICAg
IC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVBhc3NQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpOwpAQCAtNzMsNyArNzMsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAogcHJp
dmF0ZToKLSAgICBOYXRpdmVJbWFnZVNraWEgbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOwogCiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBJbWFn
ZSBmcm9tIHRoZSBnaXZlbiBTa0JpdG1hcCwgdXNpbmcgYSBzaGFsbG93IGNvcHkuCiAgICAgQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCmluZGV4IDNiMWM4ZjIuLjhhYzZk
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0M0RTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c3RhdHVz
KCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaGFzQWxwaGEgPSBmcmFtZS0+aGFzQWxwaGEoKTsKLSAgICAgICAgbV9uYXRp
dmVJbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgICAgICBt
X25hdGl2ZUltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKCFt
X25hdGl2ZUltYWdlLmdldCgpIHx8ICFtX25hdGl2ZUltYWdlLT5pc0RhdGFDb21wbGV0ZSgpIHx8
ICFtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS53aWR0aCgpIHx8ICFtX25hdGl2ZUltYWdlLT5iaXRt
YXAoKS5oZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU2tCaXRt
YXA6OkNvbmZpZyBza2lhQ29uZmlnID0gbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuY29uZmlnKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdl
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tp
YS5jcHAKaW5kZXggMWRlYzFlZS4uMmQxNzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcApAQCAtNDUwLDEwICs0NTAsOCBA
QCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50
YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAgIGlmIChtX2ZyYW1lKSB7Ci0g
ICAgICAgIC8vIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoKSBhbGxvY2F0ZWQgfG1f
ZnJhbWV8IGFuZCBwYXNzZWQKLSAgICAgICAgLy8gb3duZXJzaGlwIHRvIEJpdG1hcEltYWdlOyB3
ZSBtdXN0IGRlbGV0ZSBpdCBoZXJlLgotICAgICAgICBkZWxldGUgbV9mcmFtZTsKLSAgICAgICAg
bV9mcmFtZSA9IDA7CisgICAgICAgIG1fZnJhbWUuY2xlYXIoKTsKKwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDcxLDcgKzQ2OSw3IEBAIHZvaWQg
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICNpZiBQTEFURk9S
TShDSFJPTUlVTSkKICAgICBUUkFDRV9FVkVOVDAoInNraWEiLCAiSW1hZ2U6OmRyYXdQYXR0ZXJu
Iik7CiAjZW5kaWYKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC01NzIsNyArNTcwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xp
ZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhKiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsKIAogICAg
IGlmIChmcmFtZSAmJiBzaXplKCkud2lkdGgoKSA9PSAxICYmIHNpemUoKS5oZWlnaHQoKSA9PSAx
KSB7CiAgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhmcmFtZS0+Yml0bWFwKCkpOwpAQCAt
NTk5LDcgKzU5Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgLy8gY2F1c2luZyBm
bGlja2VyIGFuZCB3YXN0aW5nIENQVS4KICAgICBzdGFydEFuaW1hdGlvbigpOwogCi0gICAgTmF0
aXZlSW1hZ2VTa2lhKiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlU2tpYT4gYm0gPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwog
ICAgIGlmICghYm0pCiAgICAgICAgIHJldHVybjsgLy8gSXQncyB0b28gZWFybHkgYW5kIHdlIGRv
bid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogCkBAIC02NTEsMTMgKzY0OSwxMyBAQCB2b2lkIEJpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKIHsKICAg
ICBGbG9hdFJlY3Qgbm9ybURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZs
b2F0UmVjdCBub3JtU3JjUmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7Ci0gICAgbm9ybVNy
Y1JlY3QuaW50ZXJzZWN0KEZsb2F0UmVjdCgwLCAwLCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndp
ZHRoKCksIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkpKTsKKyAgICBub3JtU3JjUmVj
dC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRo
KCksIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKSk7CiAKICAgICBpZiAobm9ybVNy
Y1JlY3QuaXNFbXB0eSgpIHx8IG5vcm1Ec3RSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OyAvLyBOb3RoaW5nIHRvIGRyYXcuCiAKICAgICBwYWludFNrQml0bWFwKGN0eHQtPnBsYXRmb3Jt
Q29udGV4dCgpLAotICAgICAgICBtX25hdGl2ZUltYWdlLAorICAgICAgICAqbV9uYXRpdmVJbWFn
ZSwKICAgICAgICAgbm9ybVNyY1JlY3QsCiAgICAgICAgIG5vcm1Ec3RSZWN0LAogICAgICAgICBX
ZWJDb3JlQ29tcG9zaXRlVG9Ta2lhQ29tcG9zaXRlKGNvbXBvc2l0ZU9wKSk7CkBAIC02NjcsNyAr
NjY1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGN0eHQsCiB9CiAKIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpCi0gICAgOiBtX25hdGl2ZUltYWdlKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKQorICAg
IDogbV9uYXRpdmVJbWFnZShOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRtYXAsIHJlc29sdXRp
b25TY2FsZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAppbmRleCAwZGMwZjllLi42NTlhNTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2
ZUltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9OYXRpdmVJbWFnZVNraWEuY3BwCkBAIC02MCw2ICs2MCwxNSBAQCBOYXRpdmVJbWFnZVNraWE6
Ok5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYgb3RoZXIsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSkKIHsKIH0KIAorTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tC
aXRtYXAmIGltYWdlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFNrQml0bWFwJiByZXNp
emVkSW1hZ2UsIGNvbnN0IENhY2hlZEltYWdlSW5mbyYgY2FjaGVkSW1hZ2VJbmZvLCBpbnQgcmVz
aXplUmVxdWVzdHMpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZXNvbHV0aW9uU2Nh
bGUocmVzb2x1dGlvblNjYWxlKQorICAgICwgbV9yZXNpemVkSW1hZ2UocmVzaXplZEltYWdlKQor
ICAgICwgbV9jYWNoZWRJbWFnZUluZm8oY2FjaGVkSW1hZ2VJbmZvKQorICAgICwgbV9yZXNpemVS
ZXF1ZXN0cyhyZXNpemVSZXF1ZXN0cykKK3sKK30KKwogTmF0aXZlSW1hZ2VTa2lhOjp+TmF0aXZl
SW1hZ2VTa2lhKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCmluZGV4IDhiNzk1ZTIuLjZiZTBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1h
Z2VTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRp
dmVJbWFnZVNraWEuaApAQCAtMzUsMjEgKzM1LDMyIEBACiAjaW5jbHVkZSAiU2tSZWN0LmgiCiAj
aW5jbHVkZSAiU2tTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBvYmplY3QgaXMgdXNlZCBhcyB0aGUgIm5hdGl2ZSBpbWFn
ZSIgaW4gb3VyIHBvcnQuIFdoZW4gV2ViS2l0IHVzZXMKLS8vICJOYXRpdmVJbWFnZVB0ciIsIGl0
IGlzIGEgcG9pbnRlciB0byB0aGlzIHR5cGUuIEl0IGhhcyBhbiBTa0JpdG1hcCwgYW5kIGFsc28K
Ky8vICJOYXRpdmVJbWFnZSIsIGl0IGlzIGEgdHlwZWRlZiB0byB0aGlzIHR5cGUuIEl0IGhhcyBh
biBTa0JpdG1hcCwgYW5kIGFsc28KIC8vIHN0b3JlcyBhIGNhY2hlZCByZXNpemVkIGltYWdlLgot
Y2xhc3MgTmF0aXZlSW1hZ2VTa2lhIHsKK2NsYXNzIE5hdGl2ZUltYWdlU2tpYSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5hdGl2ZUltYWdlU2tpYT4gewogcHVibGljOgotICAgIE5hdGl2ZUltYWdlU2tp
YSgpOwotICAgIH5OYXRpdmVJbWFnZVNraWEoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICB9CiAKLSAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGRv
ZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBTa0JpdG1hcCAoaWUuLCBpdAotICAg
IC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBhbmQgYnVtcHMgdGhlIHJlZmNvdW50
KS4gIFVzZSBvbmx5IHdoZW4KLSAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGljcy4KLSAg
ICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKGNvbnN0IFNr
Qml0bWFwJiBiaXRtYXAsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxl
KSk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNsb25lKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKG1f
aW1hZ2UsIG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc2l6ZWRJbWFnZSwgbV9jYWNoZWRJbWFnZUlu
Zm8sIG1fcmVzaXplUmVxdWVzdHMpKTsKKyAgICB9CisKKyAgICB+TmF0aXZlSW1hZ2VTa2lhKCk7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgaW1hZ2UgZGF0YS4gVGhp
cyBpbmNsdWRlcyB0aGUgY2FjaGVkCiAgICAgLy8gcmVzaXplZCB2ZXJzaW9uIGlmIHRoZXJlIGlz
IG9uZS4KQEAgLTg4LDYgKzk5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBOYXRpdmVJbWFn
ZVNraWEoKTsKKworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZG9lcyBhIHNoYWxsb3cgY29weSBv
ZiB0aGUgcGFzc2VkLWluIFNrQml0bWFwIChpZS4sIGl0CisgICAgLy8gcmVmZXJlbmNlcyB0aGUg
c2FtZSBwaXhlbCBkYXRhIGFuZCBidW1wcyB0aGUgcmVmY291bnQpLiBVc2Ugb25seSB3aGVuCisg
ICAgLy8geW91IHdhbnQgc2hhcmluZyBzZW1hbnRpY3MuCisgICAgTmF0aXZlSW1hZ2VTa2lhKGNv
bnN0IFNrQml0bWFwJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKwogICAgIC8vIENhY2hlZElt
YWdlSW5mbyBpcyB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGNhY2hlZCBvciByZXF1ZXN0ZWQg
aW1hZ2UKICAgICAvLyByZXNpemVzLgogICAgIC8vIEltYWdlIHJlc2l6ZSBpcyBpZGVudGlmaWVk
IGJ5IHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZSBhbmQgc2NhbGVkIGltYWdlIHN1YnNldC4KQEAgLTEw
Miw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAgICAgICBTa0lSZWN0IHJlY3RJblN1YnNldChjb25z
dCBTa0lSZWN0JiBvdGhlclNjYWxlZEltYWdlUmVjdCk7CiAgICAgfTsKIAorICAgIE5hdGl2ZUlt
YWdlU2tpYShjb25zdCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgU2tCaXRtYXAmIHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiwgaW50IHJl
c2l6ZVJlcXVlc3RzKTsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVzaXpl
IG9wZXJhdGlvbiBzaG91bGQgZWl0aGVyIHJlc2l6ZSB0aGUgd2hvbGUKICAgICAvLyBpbWFnZSBh
bmQgY2FjaGUgaXQsIG9yIHJlc2l6ZSBqdXN0IHRoZSBwYXJ0IGl0IG5lZWRzIGFuZCB0aHJvdyB0
aGUgcmVzdWx0CiAgICAgLy8gYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKaW5kZXggMmFlNGRkNi4uZmEwYWE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJu
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0
ZXJuU2tpYS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUGxhdGZvcm1QYXR0ZXJuUHRyIFBhdHRlcm46
OnBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2YKICAg
ICAvLyBhbmQgZXhwYW5kZWQgc2NhbGUgYW5kIHNrZXcgaW46CiAgICAgLy8gTGF5b3V0VGVzdHMv
c3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDYtYi5zdmcKIAotICAgIGNvbnN0IE5hdGl2
ZUltYWdlU2tpYSogaW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fdGlsZUltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBi
aXRtYXAsIHJldHVybiBhIHRyYW5zcGFyZW50IHNoYWRlci4KICAgICBpZiAoIWltYWdlKQogICAg
ICAgICBtX3BhdHRlcm4gPSBuZXcgU2tDb2xvclNoYWRlcihTa0NvbG9yU2V0QVJHQigwLCAwLCAw
LCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5oCmluZGV4IDEwNDI0YTUuLjE0YjdiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0x
MTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEg
Y2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEu
CiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBC
aXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4K
LSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAg
ICBOYXRpdmVJbWFnZVBhc3NQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxG
cmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CkBAIC0xNDEs
NyArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRh
KiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAg
ICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmdldEFkZHIzMih4LCB5KTsKKyAgICAgICAg
ICAgIHJldHVybiBtX2JpdG1hcC0+Yml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwogI2Vsc2UKICAg
ICAgICAgICAgIHJldHVybiBtX2J5dGVzICsgKHkgKiB3aWR0aCgpKSArIHg7CiAjZW5kaWYKQEAg
LTE1MCwxMiArMTUwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJP
TUlVTSkKICAgICAgICAgdm9pZCBzZXRTa0JpdG1hcChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUltYWdlU2tpYShiaXRtYXAs
IDEpOworICAgICAgICAgICAgbV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRt
YXAsIDEpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU2tCaXRtYXAmIGdldFNrQml0bWFw
KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgp
OworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgc2V0TWVtb3J5QWxsb2NhdG9yKFNrQml0bWFwOjpBbGxvY2F0b3IqIGFsbG9j
YXRvcikKQEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlu
dCB3aWR0aCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKLSAgICAgICAgICAgIHJl
dHVybiBtX2JpdG1hcC5iaXRtYXAoKS53aWR0aCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0
bWFwLT5iaXRtYXAoKS53aWR0aCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX3NpemUu
d2lkdGgoKTsKICNlbmRpZgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKICAgICAgICAgewogI2lmIFVTRShTS0lBKQot
ICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmhlaWdodCgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5oZWlnaHQoKTsKICNlbHNlCiAgICAgICAgICAg
ICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwogI2VuZGlmCiAgICAgICAgIH0KIAogI2lmIFVTRShT
S0lBKQotICAgICAgICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7CisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZVNraWE+IG1fYml0bWFwOwogICAgICAgICBTa0JpdG1hcDo6QWxsb2NhdG9yKiBt
X2FsbG9jYXRvcjsKICNlbHNlCiAgICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
c2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKaW5kZXggNjI0M2I4Ni4uYTg2ODY3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tp
YS9JbWFnZURlY29kZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQotICAgIDogbV9h
bGxvY2F0b3IoMCkKKyAgICA6IG1fYml0bWFwKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCkpCisg
ICAgLCBtX2FsbG9jYXRvcigwKQogICAgICwgbV9oYXNBbHBoYShmYWxzZSkKICAgICAsIG1fc3Rh
dHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCkBAIC00NiwxMCArNDcsMTAgQEAg
SW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVy
KQogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAg
bV9iaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2JpdG1hcCA9IG90aGVyLm1fYml0bWFw
LT5jbG9uZSgpOwogICAgIC8vIEtlZXAgdGhlIHBpeGVscyBsb2NrZWQgc2luY2Ugd2Ugd2lsbCBi
ZSB3cml0aW5nIGRpcmVjdGx5IGludG8gdGhlCiAgICAgLy8gYml0bWFwIHRocm91Z2hvdXQgdGhp
cyBvYmplY3QncyBsaWZldGltZS4KLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7
CisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLmxvY2tQaXhlbHMoKTsKICAgICBzZXRNZW1vcnlBbGxv
Y2F0b3Iob3RoZXIuYWxsb2NhdG9yKCkpOwogICAgIHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVy
Lm9yaWdpbmFsRnJhbWVSZWN0KCkpOwogICAgIHNldFN0YXR1cyhvdGhlci5zdGF0dXMoKSk7CkBA
IC02NCw3ICs2NSw3IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJ
bWFnZUZyYW1lJiBvdGhlcikKIAogdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7
Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCku
cmVzZXQoKTsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9URTogRG8gbm90
IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkKICAgICAv
LyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rpb25z
IGxpa2UKQEAgLTc0LDcgKzc1LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgp
CiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQogewotICAgIG1fYml0bWFw
LmJpdG1hcCgpLmVyYXNlQVJHQigwLCAwLCAwLCAwKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCku
ZXJhc2VBUkdCKDAsIDAsIDAsIDApOwogICAgIG1faGFzQWxwaGEgPSB0cnVlOwogfQogCkBAIC04
NCw5ICs4NSw5IEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VG
cmFtZSYgb3RoZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbV9oYXNBbHBoYSA9IG90
aGVyLm1faGFzQWxwaGE7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsKLSAgICBjb25z
dCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0gb3RoZXIubV9iaXRtYXA7Ci0gICAgcmV0
dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAuYml0bWFwKCksIG90aGVy
Qml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkucmVzZXQo
KTsKKyAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEqIG90aGVyQml0bWFwID0gb3RoZXIubV9iaXRt
YXAuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyQml0bWFwLT5iaXRtYXAoKS5jb3B5VG8oJm1fYml0
bWFwLT5iaXRtYXAoKSwgb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNvbmZpZygpKTsKIH0KIAogYm9v
bCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKQEAgLTk0
LDE3ICs5NSwxNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQg
bmV3SGVpZ2h0KQogICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwg
aXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdo
dCgpKTsKIAotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0Jf
ODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwotICAgIGlmICghbV9iaXRtYXAuYml0
bWFwKCkuYWxsb2NQaXhlbHMobV9hbGxvY2F0b3IsIDApKQorICAgIG1fYml0bWFwLT5iaXRtYXAo
KS5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBuZXdXaWR0aCwgbmV3SGVp
Z2h0KTsKKyAgICBpZiAoIW1fYml0bWFwLT5iaXRtYXAoKS5hbGxvY1BpeGVscyhtX2FsbG9jYXRv
ciwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgTmF0aXZlSW1hZ2VTa2lhKG1f
Yml0bWFwKTsKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNsb25lKCk7CiB9CiAKIGJvb2wgSW1hZ2VG
cmFtZTo6aGFzQWxwaGEoKSBjb25zdApAQCAtMTIyLDcgKzEyMyw3IEBAIHZvaWQgSW1hZ2VGcmFt
ZTo6c2V0SGFzQWxwaGEoYm9vbCBhbHBoYSkKICAgICBib29sIGlzT3BhcXVlID0gIW1faGFzQWxw
aGE7CiAgICAgaWYgKG1fc3RhdHVzICE9IEZyYW1lQ29tcGxldGUpCiAgICAgICAgIGlzT3BhcXVl
ID0gZmFsc2U7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0SXNPcGFxdWUoaXNPcGFxdWUpOwor
ICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJc09wYXF1ZShpc09wYXF1ZSk7CiB9CiAKIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9m
aWxlKQpAQCAtMTM1LDggKzEzNiw4IEBAIHZvaWQgSW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1l
U3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsKICAgICBpZiAobV9zdGF0
dXMgPT0gRnJhbWVDb21wbGV0ZSkgewotICAgICAgICBtX2JpdG1hcC5iaXRtYXAoKS5zZXRJc09w
YXF1ZSghbV9oYXNBbHBoYSk7Ci0gICAgICAgIG1fYml0bWFwLnNldERhdGFDb21wbGV0ZSgpOyAg
Ly8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4KKyAgICAgICAgbV9iaXRtYXAtPmJpdG1hcCgp
LnNldElzT3BhcXVlKCFtX2hhc0FscGhhKTsKKyAgICAgICAgbV9iaXRtYXAtPnNldERhdGFDb21w
bGV0ZSgpOyAvLyBUZWxsIHRoZSBiaXRtYXAgaXQncyBkb25lLgogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMjk2YzM0ZC4uNjUxZTdjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNDEsNiArMTQx
LDI0IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNl
cnZlcik7CiB9CiAKKyNpZiBVU0UoU0tJQSkKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIE5h
dGl2ZUltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQYXNzUHRyIG5lZWRzCisvLyB0
byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KK05hdGl2ZUltYWdlUGFzc1B0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxs
b2NhdGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4
dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShD
b3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmMDlhMmIx
Li5lNGVhYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjIs
NiArNjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVTRShTS0lBKQorICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
T1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VD
aHJvbWVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwpAQCAt
ODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNp
emVfdCkgeyByZXR1cm4gMDsgfQotCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJl
IGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDEwNWI1ZDAuLmQ1MTkxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMtMDMtMjggIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1l
ekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2Ug
Q3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29k
ZSBub3cgdGhhdCBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBhbmQKKyAgICAg
ICAgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIHJldHVybiBhIHNtYXJ0IHBvaW50ZXIg
aW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VEZWNvZGVyOjpnZXRGcmFtZUF0
SW5kZXgpOgorICAgICAgICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJhbWVz
RnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiB0ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToK
KyAgICAgICAgKiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoVGVzdEltYWdlKToKKwog
MjAxMy0wMy0yNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmVuYW1lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5IHRvIGlzUmVhZE9ubHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4IDEw
NGFiMTMuLjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkltYWdlIFdlYkltYWdlRGVjb2Rl
cjo6Z2V0RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNvbnN0CiAgICAgSW1hZ2VGcmFtZSog
Y29uc3QgZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7
CiAgICAgaWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Ci0gICAg
T3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZUJ1ZmZlci0+YXNO
ZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZy
YW1lQnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgcmV0dXJuIFdlYkltYWdlKGltYWdl
LT5iaXRtYXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNr
aWEuY3BwCmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJJbWFnZSBXZWJJbWFn
ZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNp
emUpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLSAgICBP
d25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2
ZUltYWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFz
TmV3TmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV2ViSW1h
Z2UoKTsKIApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3RvcjxXZWJJbWFnZT4gV2ViSW1hZ2U6
OmZyYW1lc0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEpCiAgICAgICAgIGlmICghZnJhbWUp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lh
PiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOwotICAgICAgICBp
ZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkpCisgICAgICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAg
ICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQogICAgICAgICAgICAg
ZnJhbWVzLmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpKTsKICAgICB9CiAKQEAgLTE1
Nyw4ICsxNTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29uc3QgUGFzc1JlZlB0cjxJbWFnZT4m
IGltYWdlKQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
PEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcDsKLSAgICBpZiAoaW1hZ2Uu
Z2V0KCkgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAoaW1hZ2UgJiYgKHAgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAgIGFzc2lnbihwLT5iaXRtYXAo
KSk7CiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCmluZGV4IDdm
MTkwMGIuLjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBw
cm90ZWN0ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQ
aWN0dXJlKQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1f
bGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX2xhenlEZWNvZGVyLT5mcmFt
ZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBFWFBFQ1RfRVEoMSwg
aW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFw
KCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkp
OwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRy
YXdJbnRvU2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3
U2NhbGVkSW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFn
ZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0
aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5
RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAg
U2tCaXRtYXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6ZWRCaXRtYXAoU2tJU2l6ZTo6TWFr
ZSg1MCwgNTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNj
YWxlZEJpdG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlzSW1t
dXRhYmxlKCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QsIGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xh
enlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVC
dWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQRUNUX0VRKDEsIGlt
YWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgp
LmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCmluZGV4
IGE5NDY1ZTYuLmFlMjBiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRHJhZ0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9E
cmFnSW1hZ2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1h
Z2UoMCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1h
Z2UgPSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUlt
YWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+
Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7
CkBAIC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAg
IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogICAgIHsKICAgICAgICAgaWYgKG1fc2l6ZS5pc1plcm8oKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlLmdldCgpOwor
ICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZTsKICAgICB9CiAKICAgICAvLyBTdHViIGltcGxl
bWVudGF0aW9ucyBvZiBwdXJlIHZpcnR1YWwgSW1hZ2UgZnVuY3Rpb25zLgpAQCAtOTcsNyArOTcs
NyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZl
SW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2
ZUltYWdlOwogfTsKIAogVEVTVChEcmFnSW1hZ2VUZXN0LCBOdWxsSGFuZGxpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCA0ZGI0MjhjLi4wYmRkMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgICAgICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUp
CiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdl
U2tpYSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRl
KCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6
a0FSR0JfODg4OF9Db25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUlt
YWdlLT5iaXRtYXAoKS5hbGxvY1BpeGVscygpOwpAQCAtNzcsMTIgKzc3LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAg
IGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7
CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIElt
YWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6
ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChJbWFnZUxh
eWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195560</attachid>
            <date>2013-03-28 06:50:34 -0700</date>
            <delta_ts>2013-03-28 09:00:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>73739</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYWI4ODc4Li5kZWViMDhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MjggIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjggIFpvbHRhbiBBcnZhaSAgPHphcnZh
aUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XVtXSzJdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLiBSZWJhc2VsaW5pbmcgYWZ0ZXIgcjE0NzA4Ni4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4
cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy9jYW52
YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODExYzU5ZGM1
Y2VmMWQzMWE2YmQ2NmRmOWQ1YzYxZTFhN2Y0YTEwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
NDI1NAp6Y21lSHVYSVJ0dXdyPG8+VzxYP1NYZH40Yk1HeW89PkQ/SXpRQmFUPzFWV0deTlI8Kj1m
R3tkRFFXZDJyTytscGgKelA5T21zejxfe0E9dU0+ZW51SHFlaWFMQXQtZ0VaN19rMXxfb2NsYUdB
TzIkYW10V1J6dCNgZmV5VGJqZSs4VjZQCnpKakA2TGc3d25IVS1TQCYxSUd9RXtsO0pKaGolelJJ
RUNTI1F5JUtaOSMoY1hSdTFrTUN4b29yOEppbWxhekNEeAp6bTl8IzZBdUE8cWJMUlJEOChDQFRB
SjUyMi0+XlBnKlprI08xbVlPdChsMCs1Y3FjM2o7bGQwa0hFUSUla3NwfEUKemhoJDVuMVI1TSVW
WnhXIzEofGZlPTtyTS1oJSZkREdjXjRtSVEtJiVfbDgoKnJiSyE4TyV3TDU9ancmQz5oWDwmCnoo
JFFUVUJDSzV2TSFBS30/QFhTKD1lKVlJPT07O1RPKDl8JUVwbn05P01adnY2UkJkUXJKKk1lbzV0
QU87Izgofgp6MH1eVDVaP0gqOVFjNi1INW8yRT4wJmc4Yzt0X35JOW9+SGBoK3t3Z1J+IW1iX0Jt
WDJaSFc8Jm0lak9+bVc9ZDQKekg8KDxrQGpzPmBlKlZKSVNhYVZRMWIzJXg0Ykt+JXFucVpXcSk9
d3QrNHBzS3lvUDtqdHIpTWR5LWxeZl5yKUEhCno+V3hxSkZCSjwoPHxee2ZEd149Rlg+MWZIPz5Z
dUo5NE9aMDcoVXVeYkdHKV4xTGNFbVQ1ISR6XlJJSFE2P2Y7Twp6TX1xVVY0R1hvKCtvTk5OX0NZ
M3YrY1Z+OWt1bWJ0Tns2dC00PFJZbyNtY0VpSTt4ay0jXmleSXhJTDhENVR8O18KeiZHZl89Un0x
NTQ4ZkklSUotekhMblFZKl9lSjt1NTk/ei1OcEtCQ0RFanZCUFRYWShjPXJRdlNoNCltVWtvQSp5
Cno9V1ZsNVpSY0pheU5saXw4JjVNI0thYkxJdXAwZXhzJW8pfFUjK3gmYUI5azlrKzhqKHJXTHo1
Z3J+aD9RYDtmdwp6MWV+PkxldFpuWVdIQTRaS2R8fEhadHQhfnshJW1AVFB4bF8/SzcyRj8kREZC
aGZDakV6KXJPI1A5PUhgKHw1Ty0Kej1FdWRCdlc7MFglaHw+PVo4OUY3Nih3Z0VYVm1IRUlqZjh7
aEFaOEFlfnkjb0pNV19vK0NyQHspZ2BPSlJveFF4CnpoY1A5eFQ7XntveUFPRnN6dmVnQio1OVRy
d1U0TjdqejFFY3NaISVHNip9fjZee1NZcytSeip9dCsmITM7UCN5Owp6cWFzIXd2VV8+Rz5IZCYw
QDFeMEk7fV5vZD5fUWZEPkE1V1I9IT5Ccm9iP1NHdWJ1MDxNdD1RVG43JEg7T1RmYEwKejRSZFQ/
S2xuYkZQNExMRFcyd2FiVkphYHheMGwrTDlKJWsySVImZUtvdDA3fmB8eyY1OUhYYnQ1TnFzYmdT
Z0UlCnptUzM/RT42Q24wP3dzNUQ9emNOVj14SmlKKSk1UUw1flc3MzdaVnA4PSUhfnA+YTVHKkcr
NSFmd0xXdVBCVnVQbAp6NjhCYFYhZXhYb21ydGJrVDFEMEAqUiNrdV9JfTs4UWVATHxRWVVHcl81
ZlJnVGwxO3B5YDNxMitSWEwzK1hxPSQKelMkb1hmdWpGLS0yX05MbXRHIStJXipiKktDemprQXRz
aEw8KVI9SVlpdHdGJFZoYjFoNFoxZHxLeGlgNDE9ViNtCnpHQDJmdCgkfChCejAwXik8JCN0Xmw4
TjVne1ZwfD5aZj9TSSg4Sj56c3ZHYWAqcCRWWEdgPnNJWUZDJl91Kk5SKgp6bXZXPjFSdG0xYSVC
ITR3ZFdWVEVNaz5tY3VlYGgqZVhIJnUjTD45YXpLZDBFQFdDMG9OWSQ8QkMkPm9uOUBCM04KenQo
eGNgeFFWfVFPVUZZVT4/bVR4I3Y4K1ZBTjQhcTdzey0kNVl7R3N1UipJdzcwPUVxYXpia1Q8dTIl
ZTkqOHR5CnpFSjcobGpsU3tuPDshM0otOzhwMTU2SV99dHBVNHBYZFY5V0w5LVZFTnhQajxvayh2
c0BpbHdOZ2pBRD82TUVhTgp6RjsldnMkNDtYT2UkOV9oeG0yJC1rfjgoO1VpOUREYiojJmNqTHFw
K1g+c2MmLSZNYD8ldnc2VjVnZ3MmJXFoNU0KenhuUnY8KVllPkpPXlNOYURYP2JoeFczQS0+Z1BS
Rmdgb3wpeDkwfj92Zz95eTRpOWFXY303PTlhPlJHO15xblRJCnokfnkoazd1cnVHQldLOzdzPD9M
NV53OHZrcVN6OUh4WChBKlVuTE5qYXlIa2RtVTtgVkhkaU9FVCk5RkRGQ1BpbQp6OSphflg7UCZW
P0Vpb3c5MjJOTUxXV1FDQ0V7RHFZZH54TGc3VDhSM2hIa3Y5bFN6XkZDSGhjKUt8VGBnUGlhQloK
elNJZTlSPSp6KXNlN0t6eiQ/RH53YElfTFFXYDBVTGokWFdjcX1wd3dTPC0oLSVaMGQwam8/P0JZ
KWRxQ3tLbl9RCnplUFFaK1UtOSk8X3B+R2AkN2otJEM1bChjUUheMG9BQ1phditmPUFqU3l8YmJK
YD8rK21tRWsoeFhyejw3b0IoZQp6cC1CTWlOUDZmOGFkeGhwaGBBQ2s+JVV5YilZe3JnVDQqQEwk
V2haV00rTldZX28wI21kQ1Q4X3RJI1IjJWRVSGEKek5tUHRscy1YP1hvdzJJSTt+KThKRD1uMWQ8
Pmtwb2xzZ2FrX1ROblIteHYqNnNpSnA4MjYmQTQoLXNFR1R7PT9LCnpaSWdVJTJ1X09adCV+c2R2
NlhId0M1ZzF2ZH1fVHlHY3MyenJDPW5BblJjMX51RC1Ue1ApSkc7My1AQXc+RClzMwp6MnFUcXho
bGk2b09zR016e1Z0ZWIzSCZ8WllyTzhjNlpzWkZ5cU9EK1B2P3ZgS2pePCUqZklEMGVHZ3BAUnNt
KTIKemxAQVJuMFZlWUl7bXQ9M09VRS0/OHloNWhxTjFCX2lkajI5VntSQTJENn1TMyVucnxDNk1p
Tkl3fjw0aT89KilkCno+MFZQeEpENmlWX1YpUkMkYUMkb01feDVUX3QqcGwoclpldFJwX3V5QzFE
cnFnSUx5Wj17Z0d6bFcoNURtU35vNwp6aTw+LUZqXl5nUkNnI3A3VyFxKig0RGNfaWFpNDBsNDg3
PSNnPj5xQ2N9MHd8NTMzc1E7a0swdlFNcVhgZzs0OCoKejMkS0ZOYmRya3VATG4jbkVuUHYhZWE2
RCZDZChsQyQxRnAmb3cwbExVQkp7XlQzVDhMPDNyIzJEfWBEelAzcXsrCnpqemo7Tz5kKzdqQUtO
SkhHM1MtR3lTbUVLeD1TMHVeYE57c0p5aW1CSHUjbDEqRERIPD8mTDlSWX1mXjcyfGMhVQp6YGMx
Uk9eJEQ2ZXkoPytBQGklK2F3P1ZyeDJIc3FtY001RlZsWGdfbHhMcnpkeVEpJVo9eyQ+TT40O19l
a0lTQHwKelRQUis0cnBlRm8paTxVeDslakVUJmIkRW00WTVVPHhpO01XaXJzZjc8SlB5Xil0KXZa
OHFINVMlPyQ8OGIwMWA4Cno4eDx5dz45SGUrdT5PKHlCQWFpWV9AMSQ1YkdjP34oNT5CWXo9JSNn
KTVORjArRHJDZGI/UGdjOzJxZyR7UVcqVgp6K0lKPWBqQnQ7WXcreG5LamlvSVBSbypEKGVoM2dE
eUM/cHU1Y2s2YU9oPUBwcjV8N08kPTRMXkdidWRsUipzdWUKejhyZDlXISZTZik+QiN8IzZxVEBg
O3xqaigofTFaUW8pMWslZDBuY3tfOzBPT3g9KT9OZUs0KUM2fCNOa3BVSl5YCnpWKGVxSFNib15w
I3l3dT0zUUQpQkJ5bmR8SzA+bk17cTBoUjk8RE4zPig+d0pkQUJ8TGVvd25fZTAhT2s5RnN1VQp6
TiE+RUBXYjNMciFNclY9eHFRMCQ9dmBRbEhRR2R8QyZNeG8kP2BFP0UhQjVrbDw4fDw3ZWR+UFN9
N2t0Zjc4fT4KejNTaEhITT9CQUJwX3ZmKlNTcjBIUn5adkArU0IjTWxHenctT0pNSGAzWDg/WiNH
SkNPd1pEMGpHXyl+Py1jekpOCnpYcVoqQGNHa3c0QkhJX3wlODkjOU1NRmJGeyhVeUY2UH5ZZ2VS
Vmt8X0V2MjlucWJGPSNQWH03OUdDaF8jbWRoWQp6PllMWDFWaXV6KlFQSC1LQURpR2o5VTdXbjQt
c3koSzBQWFIxNDRLQ3NyMWM7NVk4YSs2UlIzLT4oZD0xe1o3fXEKenJOTioodmFUT35BTG5qQEQm
QHclLX0yKz9pYDZXQUk5VHA3IWV9VjJWfnlAQDNKZ3ZHY1hgdHNFdGFtNm9hRmw8CnpKVWwlMzI+
LTBCUlghQVM8OXheVGBDM3MwfDRqfGJnMXpLUmxofEpaaChlcjY+VyM8NzFwPylxMmp3eGQ8Z2pr
ZAp6SmwoIWpOUXpJTEdzY0pNbDJkdkB5PUxDd1hyPiZYOVZvdypoUTQkeldWSShKS0pzeiNFbFN4
Y25YezwzO1lwMnEKel97YmJ+TS1IPSl0NmkoO0h2U3NEeDc4eU9WdmIhWGclVDIkYk03a3d3OCU5
cloqKDIoPkhAeGxVbjF9fXQ8VlV4Cno4VjB5UUQoUj9oVDFSeVE1KUZ4anRuT0t0Kyk3UzVzTlY2
UkFyIWpvdCNfQSVaUHFGOHY/TFJLQ1pGSW9UaE1ATAp6YDhDeDM5eUNyeCE0Q3F9NS1UfVVYci1+
NT4wczNxO1NhbmVNWl8xdEZOI1p8WDhtMChJPX1+PlAoSXtvJUFzITYKejcmZkNAYGBiNml4eGBJ
TUFjdDliV3o5U34pUFgyfGduKzFXKWV7dXI5KTBfJG03KEBnUWYyajhvMDJQXlBMaV5NCnpMWitv
fW1eRUxNKz5sM1N0SzNNbig/RDZHbEdtYGBUNUR4P2BtTUpnPFcpIVN2ZDVnaFIpbUBCX0YwPWA7
MlYkXwp6fEczc3dDTW4kMGtTb3I3UDAlPG5UM1JpVXhTY1dpaF5hU0VxP2B2VTR6aDUpTlRMSHk7
R3RuYXRueUtLUz12YDsKellNIVAoS09hb2tfeis1Wl5lIW0lVlNGaDBSV1opUVo3YkB6SWklMnF6
RCN6Y3loaUQqT0J+ZXI/PWh7VUA5djYoCnpJMEhxMXslJHdkb3J+VVZNbHVWJlV6NXpXYlREd3ZT
UUQ8e3granMhME9VMGRjYHhFP09ybmFDNEh1VmYtcj4hYgp6OF9vZnQ7cFNQM2k7RkopYkVkRjFM
NDYlQCstSm5saShoYl5wPUw0Sz5LaiZyUTZKNiQxKjtFUCohKDN8PTAzSz4KejI4bng/Kip8Uytl
dnZjMSpFUUJDRmQqb14tVTBuQjdeM1JiVSRSNGR0MXVRTzw7S2Rqc05Yd3dKV34wckp2bjNpCnpn
SUc2YHVaZX4wRypCRk5NKGYpPExWJHBVZXxQNENkLUFyfkQhdnxnNFZJNHJNWVMrcislQk54SVVt
OSkpfX1hQAp6R3FTdHJyTlpuREFiaklaKyFARS1mPXZETiQtTlRtaUE8cXJIS1UyZzRAY0BEc1Ay
M0czVTFAVGJgdzs5MWk+Q2AKeiRCKnBYMENyQzRLX35BJF4lI0JEO0hyJEg/fkp8Kk0jSWk0Y2BZ
VVlDa0MkNTUhYG5nX2haWUdMSFVTZT8rXkZ5CnotTWFeUyt+N0ptSmdmQE9nNCM9T1F9XjxzT35q
JnktQGc2djxMNjV+Z15TMztGSUtWWkQ2ZWN6Q0FXVlVFPGxUQAp6PU05eGZRdD8rZ2EkNUZTTG1x
V1VWWWI4M1B+dmBsZmJFO09oYkdyWXpuazA+IUYmeEZgdTxsWVhrN3VvXz1SIUwKemtVNGVhUnAw
ZSF3VkJjJUomd3c3OzdkWVM0TkFLayE8NXRgPm08OWlOJWJHek0xUE03a2gmbjVVUnNJKWV3S1A2
Cnp5bFE4KTF6NGg1ZGZVYShwPEVYUzxta2NmXk5zYWchT2RlT29KQ0R4PEheWHpIZG9lPklyc0Rq
Qld8UHBydF84fQp6V2p2NGJAMlVGeXd6fDghZ2N8YDhWLXQod1F0eUNwajZnQzJncSgyTTYrPlV+
VW5KYGF5PFZwVGAmT1RAZT0qNSgKej5Pak9IZSomSSR4cXElRFkzXk0jKCEzSVlYUG87UHErQ1g3
PktMSCl5ZGV2eiNnSWZpVCtwMUp1U09tZD5LR2QwCnpTSnokNTNFPUQrZDszI2oqMHtNXnR3YTd1
KSRCV3xjSUNDc1dWJVB8UXlCbSQ5c3I7bzA8fjBkPVJLMmZsREZsaQp6XyY3bmNeV2N4bXFSOW1N
KXlVWGkhcFVhR1pFOEU3TWQxZSFgOEU1dzVhJXErZkF8OU48PmxKX2U+dm98P2VBdWcKekArKGl0
ZzVvY1ImMyhMTnZQMDU2bSozWVpFbWFwNkdHMXBreUNaKTheI0J1dFBCa18qIWNKYyt6OUVEVEhJ
Mn1jCnp0U05iO2F6MnNyPzg4PktgVzRob3EwbSNaY1Z5YVRiPy0xUVJvQyM4fDAteW1lRmZMQC02
JjdLdlU7LUcwZkghbAp6U1RRQE8/eWgoMG83Jm1paSZvZEhGNGBMdnhfKlprKmB3MjlCflZxTXNu
VX50TVFQJXt5N0RtKVBBZ1ZvMj1CRU4KekVFdXJ5RDAjO2tDfitQQjImUCs/VzV+VC1XZkw4WDJR
bXN0Ql5IdUdLdU83OSh4VW0mRVR4UmNhcyk4WGt6KzxKCnpjTnxOPCUzQm84RksofmY4aEBuMiFe
MHoqUzs+JVIkWUU0IylgIWUrS3thfUFgUzh7b1RVQ0FJY2hKY240WDhwSAp6R0dzI21EcCt4RHR6
QiZvbDJ8fi0tcnpBVWpUUF4/QEtuS2w1YEBpZ3UqQjk/Vnx1TG0tUUE+XnNEfC0mM3gwcH4KenUm
JmdZMzVnZU9qayFvQVdONnBQM2RgdThjfk9IOExpTz95Kj51akVuPTtUcXdzWmRPYDlNMGNLe0tM
VEk0JDRKCnppQzk2dTwrfUglU29pSjt2byNtTz04ZEFeMl8reTxqOWVxSUk9Vnp8SEwxfWJSYExI
cnZVSFAqOCFHS2V0elYxfgp6KnlQcUR4ejJVOThDc1dxQn5pTE04KU5XdVczZWU8aE1rPlYjcEZ8
bVJXQW5AN3ZsVGRFRW1HUUU0MSYqMCo+JUsKekh9OWs1TmYpKVA9flE1YGxSKUh9QktZSXxNa3Mk
M1hkdHx5YnBqbVY8X253NXkrP3lHKFp8cm49US00UTwodn4jCnp7a0w4fUprRHFgbFRAPlJQO0s+
PXpLKHlAWV5lfFhRSVl6bDFWNWo1MGpxOCM7X2QpWlhtMi1wWiE8WWNJTF5mOQp6P0EzbyNabG5i
dlF6Z0hSV2RJITRvc31qejg1eCFKeDk1K2Qjdjh4S0pkV0JBeGFtTz5pVmZwYVNiZUE9O0lxfiQK
elhLRz4rcHxuYD5CRj5VQ00hOXN9VlFHMnY2K2s+NUN7bVE5cXZYXlZrWWN7anw5YClVTTkkaWNa
KFpTa0x2fk8jCno5Wmt5WXhsRjFJT0BaUkhmKW89QHhLJDYqV05rLX5eVD00YFI4b0F7WGItNjFv
ZHdKNypvMyMxIWlMNzRedXRgOQp6aUI9U21aakA3PUsrcjRHLWlgbCpBYXJ3N1A/RWU+YmZSKk5U
SmEje2loank/bn5rfXN6cC18JVkjbE9RO1A/flgKelFUZDNUSlFRfU5mdCF0MmNLKWVEOXRhaFMh
bkljOHBlelhvYkIlREcod20oeGd8dVNFUGZ9bl9fPXktKDIqNyRCCnpsYzJQbW9OJjJJZjYxeHhT
ODk4az9Tcz9gKlJlOWtKfnQ/MWtoLXFGfE10eTQ9cmpwdSZ7PDdfSTZ2VXooOTd7Mwp6TGQyUmd6
WWpfSUMkKlBQKnFWKGM/bzByJT8qYzhBaGVTbGZ7KWc0T0Byb2h5Y0hZR2opfk4kNzQxS3NiU2xK
TnMKenhfKiZhMmhNZHVANklBMEhCNWotMVB0cTxgQl9QeStuTGRrTjJOfkFjeF9WYHBxYHheOVok
UGcxZ3hoRDR0YjQkCnpsM09xPnZGaVkje2lIK1BuTkxzUylGfSY0U0oyNWVUM3JJJUs/U3hZdEw7
SUhHQXAhSCpTbFFFdGQoU3ZQPENQYgp6MWU/TCVsK2k/amgyRXRFUGZTfEdnKitPJD9zV0NBclkz
NVlJc1p3TkpHWGlWR0BMQDwpQ342R01pU0NkK3gyazYKekQhaHMjQ2MzS0lUKCZFR3EkIVIhPyVC
KXtYc0Y2PT9NbDdudDxRQENKX095aWI3Jn1XLVd+S0cyN19zRXRwPjh2CnoyPj1GNWRFLSglLWQz
c1BWcz1aSEdyfjBUKlZmKzNIKEZfSUV0eT4+a0pSKzllQEVLVWBjVGd6Y3skfHJCQVVWMwp6M2ZJ
Sk8ycXQ1cllvOF5USkx5Y3M3PXpCMkAyKWZuYV5xZGIlVjxqQGQqSFF7bXo0YW54N31TV2FOdUR6
PnlLdzMKel91Y0dZbSlARndgQEhUQmxrZm0ydmNaeUBgYjlOJTlWcX0hWU4tVy1qbkt3Pl4zbG5U
T017aWd6MjlFek1VN0BRCnp4Ql9DeGQza3leeTYmV18/YW5+azY8enk2VSN3aik8OXpVdWk4OEcr
Ki15JnFhaXt1aEFVdTM9REJoJE54KkFMUgp6U3pORj1DRWd6SkFlMzhAMEk2fkVhQF5JbnVORFcm
Xkx4OVo2P3l2WlQ9VEFwZXExIyEjSmtDO25IQ3FAUHBWTD4KejQyeUIlOXczaDI8cXx0dElgNmhX
cllxSWhEPTN8LXIqPjlYelBqT19PPFJIamdMM2dURzNlO0NwWUI5V2k3eF91CnpIMCM/ZUBAZ0NN
OFQlbzEkWkMrOz4qQ05+ZkAhKDJKVzZ1bTJNVmdQUkswZSNPPlg7NFQxWmlJS2ZzazdWSX0tTgp6
eUQodz5vZmIodlJVPVhyMj0kKGR7MkYxVWs9TnlOdlpfQk1DdXdBV2QrfSh+M0lwQ3o9PEJTUnsq
VmlmP01XJm0KekR3dXVsdHY0aGUhWTw4MmxWa1JKamloSlJ0VHYwMCZjNm50eHhGPSlBTTEwd0Nh
Yz1vO3J6WUJHdn5TY1FwcDRTCnp6OEwhazReUGh7eXN8bVZSNUpUJVBtSWt7Zj9gfXlrTGpoT1RJ
UXQxNVByPTIrRiE/TzU/bSRvQUU/ZUpgfWR7Qwp6cHROZz9lQWoybV9TWSVYdUZNVFFJSXQtNHMj
bHhrQlV+eSpAMGtNZnQrcSU7aiYwbSNrdWIpNEkkZSghQHsrKlMKem9pZWZ+YilBeE1UbDY7dHB4
NzwlVSpBfnJCQ0k2fWZ9NFYrJmllbyMweVF1bSk7KVhITE1SRGJ6TGx7aTtRQCQpCnpjRzZmbE84
YEA9YyVtK2NQYGlzeGc4WjNIUnU/Rj9oQz9aN1grcV4tTEc0dX5AYVEjX3I9P0ImeShZOGFoKjZy
WQp6biM7cFpMP2ZkWEsqKWVkaXx0M3ZHTG1aOFg5eyRRTH5MbmBMUzB6MXpLI15XNmV0MHQ2czBW
NVVSU2dYd2QkPGoKem1kUk5STyZrb0NpWmBEbGIwJSZSQjRaPXJCUXp6a20oaTd0b0VtMjglb2Nt
V3dyd2x2bFc3eW5VaHU2XldjfFdaCnpsblFnT1Q8SG94TFpaakpPVkQ3SHJ4TSY1S0lqPiUjdkhS
c0h9RHNPU1l3TFVZUU0tS3lEdHM2Kl9YfWB5SXdabwp6ZFVDRXdmbVEpKGFfUH5AVDtzd1lRY0o1
Mjh8IWsyZ09tOGA5OzxNb2huYCFANiVacCg2ZlNeSlZBc2x4X187NlUKelQhPDg/QCFNUGxpe1Y3
RnFQKnZQdVk4MEtGbTFxQ01AWmA3WTlGdm9oSmslQjZxdEdrKnRfbTF6YXtKbDdGd2FfCnooKG89
MmlqJX0/PnopRXwhJGQ7TG9RSFV0VCMtbTVoeCFzPjh6aFYqPXFaNDtPI3NtfUpZSCFKU3pCS1o1
bGo+Ygp6OE9BUXZ5YSlwUnc5WCpOSENVUWNgNEdAYnUlQX0zbEhFfGlMZlpgUCEqSCNNZCVIYHFJ
NnpTMHJNLSg9eyhITUwKel91VXhCZz9AKjhSSGZTbGxxfEgyYDBjPEh2Y3ppQl5JbmsmP2d4JThM
c2M+JURkTUpPOU43aXFuTDwjMVVEKyg1Cno/SzZ2dV56TCMzMXZvQHUwe2RsNmhWKjAzJiRDbiN3
b1BRQHVIUVh8Y312TzFne01xST5PPGVYPHpganJATiM/Kgp6PGMxfGNHNlo1Nl51SWJjcz5IRmNE
Q35PSm1eYXsoQndAcEhITmxWVysyfjw9KilCaWAzZEhLcjhvdGV6bDlBNnEKeihAPDhlZjJybTtW
dnVmQWdOYnImX3ktfjNyaUEmI21USDVvZiY+JCU0e3gpdExfVH4mSk9QZXhMWVRRVzBCOU1yCnpB
P2tpMDxATkUlRmRpOUVGSStFI09eJiRQM2NDKDtPbShtSC1RTnFOXyt9N0JXQWFJQUk2Nj1PJCpT
b1Q1VE0jbQp6JlExVjVfJEBed0J0QCFDeyYtSj1oTT5QUmxvNUUwOzF1VGUzTSE1RmU3JjE1RnlQ
ODNYPFlGQkYxei0zUWEzS3MKejw1TzghPTNMMW1iWlI7SE80I3x7TE5US3BgTUkzcDAyK1JUR09i
ZEl1aC1ZMnFNPlJ6KUpmUD0mQn1HOz0xX2BoCnpRN1AhZTdEOzBEXlhKJDVPS3h1QmV2Mkphcjs0
T0crZ3w/Vk54RCU1JmNSe3MhVDBBY2chNXA0YCQ2TnpZNGN+LQp6dihNfTUoN1Uxdy0zI2wmbkRh
SjRXNHRmfHIrdWBSWVFIIVBkSmYoPTRDcG1XJlEhXkpNUndTUlFkTF57b2puPDkKelV0cGxgUlo9
MCErZFJ7VENPO3Y3bnYlMW1Ud0tWTE1NbDwtaXAhcE08eF8oYiFEQCNSMnB5fWFzcXliRXhESDtY
CnpqPF9VdGlwLUtaUFB5aGJieWhOM14+cTRDbChDY09IN0I+QFBsKVkqRkI4cGpOLWVYbWJ7VmQo
bjkwRFg9M0lFTwp6RlFRQFJVdVl3UFUzWkZhX1JAJVlvSDhZTGh2bGtqSHEoUHFrVXJxVFRDR303
TEZ+eUw5aipXfk0pKFojeG95ZFoKemNNaD4/JUlAJG11Wk1JVWMpazJhcyhvaVlUQDYpeXFaUTtt
dXEjPz16VylNfitENkBkO1V3ZFFEJk1CIWJwK3k5CnolQzZBUTIhITVPI187biQ5bEVhN25nOT1h
YXB9PWtZN2x1cVkkPWIrNDE3NzgjbEd3e2FiaDIjYlZOdDlgXz9+LQp6b2ReIVpiZ3RyZCsmIUBU
M0UqdStsbD5aeCtNWW5Xa2pKUDFMbmxVbDtWcnsmPXtlcnxJV3VWR3ZgKyp1NyNjKX4KenhYfmFm
ZmhPIU07K0YjRWE/MX1EREktKypYSFElQnVhYmx6Oz9aUVlvS0d0dHRhb2xzNTspU0A3bnBXVHFO
OE5PCnp7dUNoV1dvU2Ylc0YzKiZWUGg0dUJsSmg7Un01JEl4JnZidjJSZG4xM3p4OEAyR2Jub2Zw
KFlZWmJBOzs0QTtoawp6XlcjPDVfUmFtdUI9RFc4LSR1Q0hhTk0/ZXM3T2VYS2Vka3ElPVVgMDJu
TUdsUWdVNj9iKjFnekp7dnI7SVJLUDwKelBYVWF3Y0UzcH1GZE1nU0E3bmBwRihMU0UwPCt3SGV9
XnJ9Y1EmJiNUXy1aZDRvSVRoO0hfNnNNZHtqIVJVbCl9CnpJKFdrO2x6QGBiT30jTEl0RCg5Q3Rp
P2xVcS1BQVFmdD8zNmpKciZrN0ZtPHZQRDs+PkxDdDBMJTUhLTNqRkFLTwp6d251filrfT0pYWJV
REU2ITtvPDBQNkl9KEt1bU5GJUBYTnpNRFkyZTtIS2hjNitjJGlTVVlHJEBLdTdSXmtfK1QKejRg
eGI3Q3UkfSNaWXtIVHdaI3IwQlg2KjF3TmBHO1d+WWtxei1NQXklKkVTMlBoZDZgO1ZXY2xOeWE9
NWE0JFlTCnpVTCkrZzYrcjVqTT0mSUpKfiRWcUxReWtmXkt3PVJwYDZgVHkpRFVvXl8lO2pDSD53
SSZMZCtGX09AMmNZMD80fQp6clkxdmZFI2x5YlokVVZvIz5ZUHprYU95UEpUTUJBQ1I9Q2hVblU5
QUlpT1IwaW48eTFVbmVDSzxnZThgYn5lfCUKejA2bjFQeihpPWdAbX54X0U/bG4ran19NykleEl4
fnctP0ljaVpmbnxnWDloPDx6K0g+NVkoPngwTCUhJS08M35MCnorNH5tb1JHN2hCUVVDJDkyQE5E
RjBPVDQwQ1pFdWwmaiF6RnNCTHZYQ3Q8diY5P0hlQTFTPzxhRiVmU34/Yk1NTAp6I2Q7aElee2A+
cnNvcFdsYDghO0M4dU8zIXdlUDNjam4pVCYmfUJURWs9QUE5PD1rY1paM0AmMyswcjJMYjFtX2wK
enJoLV90Oy1JeUk9bERzPyMtQXhJbn1CajBlZ1poeDh6LTNZR3pDM09Zb2JFSzFsY3xzNkI5R3V4
VnVmR2RIPTJtCnolSExocjE/YiFhYEdMZGVBQTw/b3d1RE8xSHI4MF5HRT5SODA3ZTkhTlpJRDBp
Sz4wV21GfjhNZnJrR25UMDFeYwp6MVJ2UCk0IVhqZnpJbFRkLVJ+SFhuZCNLMS1kSF5ER2cxQ1Ao
VUtKVXkzKmhMKTBfWmJrbSVNe209R0FQPXBtR1QKemNDcXloUn50NzFiSGQ+dS19STZNMD5MZktf
JTZXNnpvd2N9N0IjPiVwOyhmXjleMGJLPkM/YzhrRiR5KDw+ZVJMCnpCbWVVWjs2UWdGYTd8IWBf
NTc+UklRI3RTUm4yZURlZkRRLS1tdVJiUDYoT3VwMCZRJWN4cWp+WmF6X3FZSXhRPgp6ZVltJUx0
eXdLQTtUeSZQblpCU2Z2MkxuZXRJMSNHI3ded3lLKzs1SE5Ud2x8OEcrbGBTUnFsVEo1bkZEcFok
I2AKenNqbTU4ekRQKEV2Z3hGRExZJVQlMkBvc0ckUTV5TUB5WjI7PUx9bzB3THlPT1pncFVVRjUz
c2FpWkVaKWErYk07CnpBMldwTWBOKUIoY19fU18oenc9dzFjZU55RXBZR2RUdkhoUVBldFF5QUJ8
Mj15NVpeWSR2R0dHV0w3eihoTWtKPwp6S1h9LTlnMnJoWlZKc294MCEwRkNEcm4oeHI7RVpxRzBi
JUhsVjswPipxa297eDF1Tn5YK1BhTHZeeXpCUkRoSEsKelZ2I3VMTShJTTEwR3ZXYzhpQmI1WHY0
JC1ja3J2QipZPzg5MThPSCM8ZiopP0M1SmpBc2o0dEAhPz9YJmhTKzN+CnpHYEkjaFJxV2xrIUMm
YFFDSEdjMCN2KyZjaWw7SUdlTHo4S2J9elJuRSZaYXFQVHlZQSY/U0YjK1RLa3syQ1JlKgp6enw2
ND1pUWFgOFhJUjQ5T0dLamFicTBPb1AmWH1pMXx8ZW81Q01iR0pgPlJAU241c19aYnlTZG8mRHRI
KkdufUYKemJyVW5NMks8M0JVcXp4WWhNU0Jjb05TR0UtPSkpVmR0UH1YUU12dlRWKDZMYVg/WnxH
U2FPdXRwenpjLUd6cVJGCnowZm1XPXs7MHQ8Uih7Mkc5byR5dUwyazNGaj49anwkaDt1Uzwxck87
ZDNhVGotN3BUQGdWfDZVKmRWJlMrOWRiTwp6dm9ySmFyfDBGY3xBPTdMY1ZWeyRlOHdMI0FrP192
U2Z2Zjx4eztrcEliSSV+SlIqSC01UCQxfmUzRzJZRmdXX0UKenc5MGxFaHByXkp3X1U2OXhYSVZG
SHF8WiYtR2YyeVZBXip8fEsrJkFhK35+RW0+S3MhYHFaR0Q5X01eZG9FSnpoCnp1JkJFfG8/cGMh
WGBZfXxUfkh2UHZBZmBjUS1WUC1YaCp6ZExyNXskJnxidUNST0dOZVVRRF52ZEppYEJnNmB2TAp6
X1V0JDhtdmdJKWk5KTd4a2FPVjUhdW5vYmlLa3x4Y1NaTT4+KzlOa0UzTUkpKzxKd2YzPzE/Wnhs
djkyNmNwKlcKem96QHdjMkdjeylKM25BRHc1UzdQVlpRNn1YRk05MT1nIVBlTTRsVjxZbUdhVCtJ
d2w9UlJfXjZLNlN4WTdaK35ICno/N3luQ01NdkV3d2VYUk1TNVlMRTJvd3N7Q0dpQyFCX2tAb25k
SS1CcDNhKH5oJit5dlh+LTcrLTs7YGU7dSF5Xwp6fEZWaXg/P0JxS1RKeFhkWTtaTU9fIWdtUnND
PyVqO19KOVRJMmQ9dGUoN0hBaUFYall7dEVGez1nKGghe08hTHkKejd8KmNydzclX055dVFpIUhZ
PkgxQHNnb3ZPdyNtXlNxMUV5UkA9QVZDfl5ZcFVxWmxNckFed29CZ3ZmVnk4Mn00CnpAMU1UcWto
dX5mWjFAZnRXRHBJO3BySX5ANE8zMjQ5OXF3JlRAdGFJbylRUXJJeWc5KG53bDAzXj5yeXNeKGlF
eAp6NTt2NmBCVj03N1dUQjNmVTsxPHloQ1lwZERtR3RPWlYtSlBxOz8tViRZNlUtPnQ1NnYlUT5+
THJ+KX08NW9JeUsKekNjZXNCbFhMVTRqeUBTU2kmPlM9ZUdSKEtXaT50Ql9zcGRKMyZ0NXwxK05W
I182SmE3bE1sfDZCb0dXWmVeS2NeCnpqNDxSbFdgWGc8UC1sSFlPXzc2N1NBTXhEbEVzYFI7Qlk4
I21pZy1mIVZyQzdTbH0heUR3LUM1I3FjQFZzdWdoKwp6NkA0ZyYoeT04bzxsdWBudXRuTiNaJjhg
P1pFcHojbDtLYjAkKHtZQCFuMzY8Z21CcC1PdUpqNmRkYStNJS1QTEcKekBvT3Z5blk/I18oTDQ3
ODFVKCFWR1lhUERifl8/RHFOWXg1a19kN3xtZGMmM1ZENjttb35kLTVpMkFJZXUxYDFXCnpfeGgl
TGEhTjJ1XnMjVHdRTispZyhpU3I2U054UjwmfXlzcl9IZS08TCEwY0AmNFluRiRlWG9LenJIZChA
TXx1Kwp6aVAoSVY4cWMyKFpJZCMtZXFfRjxRM1l+PGxKK2k4TSZZUzRnYDhRVlZuM1V5Wj55N3B5
NTRqMmhFN3MkKS1pa2MKemZQSyN6NHwrZV53a2o2bjRMcEQ3UyFpbG0qODc3N0g4JjYkZDVDQDRt
NkBCdipKdkBzeV8oYGh7PWw5ezE1UW13Cno0Nys1Y0ZOIShrSV9Zdm11U002Yzw7QnM0Qj5tKHJy
VkN8JFQ2VUk1QDAzTXBYPDA3ZUNaPSY0XkQ7PmhMJUVYOAp6dzkkZTU5OHZNPk5wK2dpYXh6fFlF
RitxMmQySkRgezNORFdJWFJoZlo5NkF0YEBDKl5sSHNSXjhHWnZNMWdzWnoKekMkallPUFZGLSkm
MlFkXiplTG43MEtTO1Z7eSpjdSVUd0p6cjdTcDlefXVkViYoRFVYV0s/RVdWdCNnVCpJelN5Cnps
KmM/QW57fipYNXhvUGF0IXJvSlhBez11NlVKVFQoeWlQem5rRk1lTExsUzBRS2ZLPWY8PEgmJnFh
IXs2djlCZwp6QW9mZWhWR3t4U25VKDRJe05uODVpUlVxdSpefkVYYnF4PD5HTHFLKkVCMW5aI3J8
ZUxZb3xIOD9MS3E+Kk5hWksKekVqYDFwS1ZHako3fShYPCl0NWFiP3U+R0VYa2BFWGRCKjEqNTw2
R0I8Kyl2cyNsQjlrb2laNDlrdT9tYGk8Q0tWCno0cjludSg1KjRvPEI+bkpwYkxlJEZnR0FKdVh1
aG4qMTFNeWNLVURHdDlpZihOJHg1P3V1VTwxcCgrPV5WSEJNIQp6Skg/SCNIJXJeKzs5Z1NjIWdM
WmhGcnU/SHhTP3hvU2t8OV9NcjYxZVZoPzRyTmgoTEB4OWNTSHtoN3pHbGxSOWUKek9pO0YwNE1p
QWh6Tj5lJCk7e0Z2bVp0P1ZWQkc3VWliKTNHclRsPVlhRVZiYjF9RlhKVi1zdSg+aUslfSE/QX4w
Cno1VkttYTF+K0xSTk9tbGlPeDkwdE9IIyh5PVNqVXVRYTFnZ1VSam47KHdjNmwkcyZSZXBYMWhX
R09UMENATVJQXwp6ZkV3JTtCKWQzbjR7Sk41Z3ZifkNCYyZiZTl2Sm5UNDVXeU5QS29fR2cqdmxA
TXtoVmsoQUx1WHZ9XjwyZzchTGwKejJQYWVpJmU8XjkrK2BLYT59PFJkK2o0NHQqM1glckt1UCZk
dzRKbTQ7dHM3MShnWkB3QUZtWH1DZ0l8MkAwfEZ5CnplfkBnSj4hcChZZDNTIVd1R05Jfjt0dlRy
ZTZFNTZJcml4MjFCbTZETEtnY0ZVITQ0KGFnZGV2NHV1M15CdW5wTAp6TV88PWJiek9JVF9xbl4+
bFBAUTtQb2ctaEJASjF0ODh+KnhfJSRPRDhETEt1YkptN0Boa0RvTGtkYyMtdGc+ZloKelEhOEw3
XkkqMFJVPzs+dkB8IVlETnZTZ1YtQl5ibDhzTjYmeXRxNUVtOTtCMT55WHxAXiFmSXJNSmM4dmRo
Pk9FCnpjTCVrWXhPNGhxYG93eCMqMEdQKnJ2UGswb2dtdnkyZGg0R2hZQTF1dittfnxMSXdzPjdO
eztYPkh+JUx3I0AxZwp6JDNKakNPV0duZ3ZPOW1xeW1LSGA1d0FHVlE7ekojKyM4bzFeMkwlbnVL
a2d9Jjs7QF92UiM7e2JKLVhEbyZPSFcKekg0ayh7MH58U1duTztVclVhd3E5RXkheyNSVWpnK2ol
ODV+OHdyfHdpPXZhMFJUY2hoM2IyI3hPfEdSP1pPXmk8CnpHUz5WaGZPSHAhM312QTxWRTZVWEti
TzxiKCQ4SSglQ3pscnxGTUN7d181fSQ2cmchJmhxKH5zU1hqZmotNnx3SQp6bTcwK1dsM0s7YkdZ
RGxIcntZdFZidnhyQCF7Qn5AV2loZmZ6ITdvZVhyTSR5ZjdXZzhzfSQmIVJyfGxsZiElXisKekg+
Sn5RWkI8P2ZiRzFLR3k2NWUmKz4rOFZiek9ydDxvPFROPCoqbFZkRldWVCUhXk9VJlBjSUh6U0dz
K1UkKnRLCno+KiFMPzZXPntLbXQzeUVka3lxd0VHZk9+YjRhWFhrVVk0IyNKfnxIeXJQbjwqOWsk
aFZSJWROY2AyWnkkJiM8cAp6PWlPMCU5VCpNa148LTc7e0BuWnk4RnZ2eG5HbytnSFVFUGReTTVw
Vnt4NSNkKEpyVmQtPXgkWTIrMj5IKldZNzIKekpsO0gmNXdsYGlHd3NvWW1jSUtVQzl0YyVwR1JH
bnVqI3R8XjsjSUxpI18/PlY2dUdwQmt7NGxTe1UzOEcpOyhDCnowNnA1LUpqQ31iKl8ofHFNKmxj
VnxDYXwmfEY/RDtBNzlUakdhfGFYeURnS3xadzlDeEpVaHU5Tk19RTBLYHwhdQp6WHcyYzZGaEhL
WClLTzRWPlF+clB6UGg1QGBOQ1VJJGx2Z3lWV3ZeODNGcSNUYTJhPTI+Wlh0KGIhWSF1b2FuQVoK
eko+MDlUdGpybztvYkJGTD48KVJxPUdEdlJHfGNBfGsmQHdhY2BZVEkzKDZET1l2cXpEYGY5TSF5
OyFYdFBvMFdBCnpFSHVSKDgxVWA5aW0/O0ZsUT4pSHk3emkoNTQ0IW90MVd8dTJldy00SntRJmhx
clNBZzwhTnxPX2ZNe3M4ejh2Owp6KlpNU0M3MmZpSFRVZVB8cFNQWCplXkgrIT5jO1dPeFF1XlM9
bEA2NWBDblo4fEd4Y1N6VUs0YUFDbXRUTUUoZlgKelg9KUBEbmxBaU4mKk44OGYxNDMtP249UFdW
NXstWmNtN2o0e0AqQTZXIUNjVmtvLUYmZT1EekRUJlRuQyFWYENJClRQUWY0R0F1ZyRGfEMwQiEj
cUl3RUB9Z2VpCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg3OGQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK1RoZXJlIHNob3VsZCBiZSBvbmUgYmlnIHNxdWFyZSBiZWxvdyBjb250YWluaW5n
IGZvdXIgc3F1YXJlcy4gVG9wIGxlZnQgc3F1YXJlIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAzIHJv
d3Mgb2YgMyBjaXJjbGVzLiBUb3AgcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjb2x1bW4g
b2YgMyBjaXJjbGVzLiBUaGUgYm90dG9tIGxlZnQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSByb3cg
d2l0aCB0aHJlZSBjaXJjbGVzLiBUaGUgYm90dG9tIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2ZSBv
bmUgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbCBiL0xheW91dFRlc3RzL3N2
Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmM3M2NlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9j
YW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisgPGhlYWQ+CisgIDx0aXRsZT5jcmVhdGVQYXR0ZXJu
IHJlcGVhdCB0ZXN0PC90aXRsZT4KKyAgPHN0eWxlPiBjYW52YXMgeyBib3JkZXI6c29saWQgIzAw
MCB9IDwvc3R5bGU+CisgIDxzY3JpcHQ+CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgIH0KKyAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeworICAgIHZhciBp
ID0gbmV3IEltYWdlKCk7CisgICAgaS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNTAnIGhlaWdodD0nNTAnPjxj
aXJjbGUgY3g9JzEwJyBjeT0nMTAnIHI9JzEwJyBmaWxsPSdncmVlbicgLz48L3N2Zz4iOworICAg
IGkub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdLmdldENvbnRleHQoJzJkJyk7CisgICAgICB2YXIg
cDsKKyAgICAKKyAgICAgIC8vY3R4LnN0cm9rZVdpZHRoKDEuMCk7CisgICAgICBwID0gY3R4LmNy
ZWF0ZVBhdHRlcm4oaSwgInJlcGVhdCIpOworICAgICAgY3R4LmZpbGxTdHlsZSA9IHA7CisgICAg
ICBjdHgudHJhbnNsYXRlKDEwLCAxMCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAs
IDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgIAorICAgICAg
cHggPSBjdHguY3JlYXRlUGF0dGVybihpLCAicmVwZWF0LXgiKTsKKyAgICAgIGN0eC5maWxsU3R5
bGUgPSBweDsKKyAgICAgIGN0eC50cmFuc2xhdGUoMCwgMTYwKTsKKyAgICAgIGN0eC5zdHJva2VS
ZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7
CisgICAgCisgICAgICBwbiA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJuby1yZXBlYXQiKTsKKyAg
ICAgIGN0eC5maWxsU3R5bGUgPSBwbjsKKyAgICAgIGN0eC50cmFuc2xhdGUoMTYwLCAwKTsKKyAg
ICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgw
LCAwLCAxNTAsIDE1MCk7CisgICAgCisgICAgICBweSA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJy
ZXBlYXQteSIpOworICAgICAgY3R4LmZpbGxTdHlsZSA9IHB5OworICAgICAgY3R4LnRyYW5zbGF0
ZSgwLCAtMTYwKTsKKyAgICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAg
IGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICAKKyAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICB9
CisgICB9CisgIDwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgPHA+VGhlcmUgc2hvdWxk
IGJlIG9uZSBiaWcgc3F1YXJlIGJlbG93IGNvbnRhaW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVm
dCBzcXVhcmUgc2hvdWxkIGJlIGZpbGxlZCB3aXRoIDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCBy
aWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNvbHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0
b20gbGVmdCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRo
ZSBib3R0b20gcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1s
ZWZ0IGNvcm5lci48L3A+CisgIDxwPjxjYW52YXMgaGVpZ2h0PSIzMzAiIHdpZHRoPSIzMzAiPjwv
Y2FudmFzPjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1ZWExZS4uZTE4
NWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxMy0wMy0yOCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lv
bihyMTQyNzY1KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgYW5kIFNWRyBjYW52YXMgZHJhd2lu
ZyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgTmF0aXZlSW1hZ2VQdHIgYnkgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4u
IEZvciBub3csIG9ubHkgU2tpYSBjb2RlCisgICAgICAgIGhhcyBiZWVuIHBvcnRlZCBhcyBpdCBy
ZXF1aXJlcyB0aGUgTmF0aXZlSW1hZ2UgdHlwZSB0byBiZSBSZWZDb3VudGVkLgorICAgICAgICBU
aGlzIGlzIGxlc3MgZXJyb3IgcHJvbmUgYXMgbWV0aG9kcyB0aGF0IHJldHVybiBhIE5hdGl2ZUlt
YWdlUHRyIHNvbWV0aW1lcworICAgICAgICBwYXNzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVyLgor
CisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbXBsZW1lbnRh
dGlvbiBmb3IgU1ZHSW1hZ2UuCisgICAgICAgIFNWR0ltYWdlIGRvZXMgbm90IGhvbGQgdGhlIG5h
dGl2ZSBpbWFnZSBpbnRlcm5hbGx5IHRvIHNhdmUgbWVtb3J5LiBJdCBpcworICAgICAgICB0aGVy
ZWZvcmUgY3JlYXRlZCB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaXMgY2FsbGVk
IGFuZAorICAgICAgICBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZSBjYWxsZXIuCisKKyAgICAg
ICAgVGVzdDogc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbAorCisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgIChJY29uRGF0YWJhc2UpOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25E
YXRhYmFzZUJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoQml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAoSW1hZ2VFeHRyYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6
CisgICAgICAgIChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tp
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2Vt
ZW50TWFwU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6cGxh
dGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUxpZ2h0aW5nU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0
Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNv
ZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaDoKKyAgICAgICAg
KFN0aWxsSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZGVjb2RlZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpub3RT
b2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y3Jl
YXRlKToKKyAgICAgICAgKE5hdGl2ZUltYWdlU2tpYSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZVNraWE6OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bh
dHRlcm5Ta2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OnBsYXRmb3JtUGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdl
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpnZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp3
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpoZWlnaHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6
OmNsZWFyUGl4ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxs
UGl4ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpzZXRIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpz
ZXRTdGF0dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVj
b2Rlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisKIDIwMTMtMDMtMjgg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogU2ltcGxpZnkgUmVzb3VyY2VTY3JpcHRGaWxlIHNvIHRoYXQgaXQgc3RvcmVzIGhh
c0RpdmVyZ2VkIHN0YXRlIGluIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKaW5kZXggM2NiMTM5Ni4uZjJiOGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSW1hZ2UqIElj
b25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkxPcmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K05hdGl2ZUltYWdlUGFzc1B0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VV
UkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5kNjMzZjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKIAogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNo
cm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpOwotICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAg
IHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0
cmluZyYpOwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNp
c2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0
Ny4uMjQzZWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZUJhc2UuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3lu
Y2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNp
c2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJ
Y29uTG9hZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZl
SW1hZ2VQYXNzUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBj
YWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0lt
YWdlQ2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ry
YWdJbWFnZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJv
bWl1bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lh
KiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0u
Y3BwCmluZGV4IDA3ZmE5YTkuLjU1MjRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5h
dGl2ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IGNmNDMwNzMuLjEzZGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBib29sIEJpdG1hcEltYWdl
OjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgp
CitOYXRpdmVJbWFnZVBhc3NQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCiB7CiAgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0zMjAsNyArMzIwLDcgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVBhc3NQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCmluZGV4IDY2NGVlMmEuLjExYTBmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIEJpdG1h
cEltYWdlIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQpAQCAt
MTc3LDcgKzE3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFz
T2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAgICBJbWFnZU9y
aWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyArMTk5LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQgaXMg
a25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgQml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQ
YXNzUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gMCk7CiAjaWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRt
YXAmKTsKQEAgLTIxOSw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgY3VycmVu
dEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KICAgICB2aXJ0dWFsIHNp
emVfdCBmcmFtZUNvdW50KCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVf
dCk7CisgICAgTmF0aXZlSW1hZ2VQYXNzUHRyIGZyYW1lQXRJbmRleChzaXplX3QpOwogICAgIGJv
b2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCA1YmM4ODgxLi43N2I0ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjczLDcgKzI3Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAg
ICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2VQYXNzUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uKTsKIAogICAgICAgICAvLyBBbGxvdyBmb250IHNtb290aGluZyAoTENEIGFudGlhbGlhc2lu
ZykuIE5vdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzdGF0ZS4KICAgICAgICAgdm9pZCBzZXRBbGxv
d3NGb250U21vb3RoaW5nKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IG1f
bmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7CisgICAg
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAgICAg
ICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CmluZGV4IDYzNzY0M2QuLmY2YmUxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1
bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAot
ICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZTRlNWQ0Li43NmVj
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRl
OgogI2lmIFVTRShDRykKLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKKyAgICAgICAgTmF0aXZl
SW1hZ2VQYXNzUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSkgY29uc3Q7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWM2ZGIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpCitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5k
ZXggNjZhOGEwYS4uNGJlODAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8g
Q2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBh
IGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAg
ICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBOYXRpdmVJ
bWFnZVBhc3NQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CiAKICAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFs
cGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKaW5kZXggMWFkNWJlOS4uZjJmNGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC01Niw2ICs1Niw4IEBAIGNsYXNz
IE1lbW9yeU9iamVjdEluZm87CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IE5h
dGl2ZUltYWdlUHRyIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJlZkNvdW50ZWQKKy8vIE5hdGl2
ZUltYWdlLgogI2lmIFVTRShDRykKIHR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsK
ICNlbGlmIFBMQVRGT1JNKFFUKQpAQCAtNzIsNyArNzQsNyBAQCB0eXBlZGVmIHd4Qml0bWFwKiBO
YXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VDYWlybyogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoU0tJQSkKLXR5cGVkZWYgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VTa2lhKiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgTmF0aXZlSW1h
Z2VTa2lhIE5hdGl2ZUltYWdlOwogdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBOYXRpdmVJ
bWFnZVNraWEqLCBXVEY6Ok1lbW9yeU9iamVjdEluZm8qKTsKICNlbGlmIE9TKFdJTkNFKQogdHlw
ZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKQEAgLTgwLDYgKzgyLDEz
IEBAIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiB0eXBlZGVm
IHZvaWQqIE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAKKyNpZiBVU0UoU0tJQSkKK3R5cGVkZWYg
UGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2VQYXNzUHRyOwordHlwZWRlZiBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlUHRyOworI2Vsc2UKK3R5cGVkZWYgTmF0aXZlSW1h
Z2VQdHIgTmF0aXZlSW1hZ2VQYXNzUHRyOworI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0ltYWdlQmxhY2tCZXJyeS5jcHAKaW5kZXggYjEwNWQ1YS4uMjFmOGZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4g
aW1nLnJlbGVhc2UoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRp
dmVJbWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRp
dmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5ldyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OlRpbGVkSW1hZ2UobV9zaXplLCBtX2J5dGVzKTsKIH0KQEAgLTczLDcgKzczLDcg
QEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAs
IG1fZnJhbWVzKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZTRkYzg5NS4uYjg1YmE5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5z
Zm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQYXNzUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKGlt
YWdlUHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBlNTczNzMyLi45YzkzZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApA
QCAtMjM1LDcgKzIzNSw3IEBAIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5
SW1hZ2VNb2RlKCkKICAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IpIGNvbnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBD
R0ltYWdlUmVmIGltYWdlID0gMDsKICAgICBpZiAoIW1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENv
bnRleHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjAz
ZDE5ZS4uM2U2YWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC00ODcsNyArNDg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5n
ZWQgPSBmYWxzZTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIDogMDsKICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKICAgICAgICAgaWYgKG1f
Y29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CiAgICAgICAg
ICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3Np
dG9yU3VwcG9ydCgpLT5jcmVhdGVJbWFnZUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5j
cHAKaW5kZXggNjRlNTM1OC4uMmU5ZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBA
IC03Miw4ICs3Miw4IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFJl
ZlB0cjxJbWFnZT4gZm9yZWdyb3VuZCA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kID0gaW4y
LT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVNraWEqIGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZvcmVncm91bmQtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiYWNrZ3Jv
dW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZvcmVncm91bmROYXRpdmVJbWFnZSA9IGZv
cmVncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghZm9yZWdyb3VuZE5hdGl2ZUltYWdlIHx8
ICFiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9y
TWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDMyMjhjZDguLjI5MTlkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJv
b2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIFNrQXV0b1RVbnJlZjxT
a0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5k
YXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAK
aW5kZXggYjBmODBjZS4uNGE0MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25l
bnRUcmFuc2ZlclNraWEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRkVDb21wb25lbnRUcmFu
c2Zlcjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3Bs
YWNlbWVudE1hcFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKaW5kZXggMjJmMWI3My4uMWJlNDU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAKQEAgLTcx
LDggKzcxLDggQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgIFJlZlB0cjxJbWFnZT4gY29sb3IgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gZGlzcGwgPSBpbjItPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAotICAgIE5h
dGl2ZUltYWdlU2tpYSogY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogZGlzcGxOYXRpdmVJbWFnZSA9IGRp
c3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBkaXNwbE5hdGl2ZUltYWdlID0gZGlz
cGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWNvbG9yTmF0aXZl
SW1hZ2UgfHwgIWRpc3BsTmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxp
Z2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IGQ3MDg3ZDQuLjNhMGI3NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0
aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJ
bWFnZSgpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSog
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VEZWNvZGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VEZWNvZGVyUXQuY3BwCmluZGV4IGE3ZDlmNzUuLjc3NzI4YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAK
QEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEltYWdlRGVjb2RlclF0OjpjbGVhclBvaW50ZXJzKCkK
ICAgICBtX2J1ZmZlci5jbGVhcigpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQ7CiAg
ICAgaWYgKG1faGFzQWxwaGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAppbmRleCAwZjQwN2MxLi5kYzhjYWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5j
cHAKQEAgLTYyLDkgKzYyLDkgQEAgSW50U2l6ZSBTdGlsbEltYWdlOjpzaXplKCkgY29uc3QKICAg
ICByZXR1cm4gSW50U2l6ZShtX3BpeG1hcC0+d2lkdGgoKSwgbV9waXhtYXAtPmhlaWdodCgpKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQorTmF0aXZlSW1hZ2VQYXNzUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZVB0cj4obV9waXht
YXApOworICAgIHJldHVybiBjb25zdF9jYXN0PE5hdGl2ZUltYWdlUGFzc1B0cj4obV9waXhtYXAp
OwogfQogCiB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmgKaW5kZXggNTA1YjE5MC4uZDQyNDBlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKQEAgLTUy
LDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgICAgIHZpcnR1YWwgSW50
U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWEuY3BwCmluZGV4IGZiNjYxNTUuLmI4MDliYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCkBAIC0xMSwxMiArMTEsMTIgQEAgYm9vbCBCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6aXNCaXRtYXBJbWFnZSgpIGNvbnN0CiAKIGJvb2wgQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0g
ICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkuaXNPcGFxdWUoKTsKKyAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsKIH0KIAogSW50U2l6ZSBCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFNpemUo
bV9uYXRpdmVJbWFnZS5iaXRtYXAoKS53aWR0aCgpLCBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmhl
aWdodCgpKTsKKyAgICByZXR1cm4gSW50U2l6ZShtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS53aWR0
aCgpLCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSk7CiB9CiAKIC8vIERvIG5vdGhp
bmcsIGFzIHdlIG9ubHkgaGF2ZSB0aGUgb25lIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEgKGRlY29k
ZWQpLgpAQCAtMjcsMTkgKzI3LDE5IEBAIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAKIHVuc2lnbmVkIEJpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhOjpkZWNvZGVkU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
bmF0aXZlSW1hZ2UuZGVjb2RlZFNpemUoKTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+ZGVj
b2RlZFNpemUoKTsKIH0KIAogLy8gV2Ugb25seSBoYXZlIGEgc2luZ2xlIGZyYW1lLgotTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKK1Bhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuICZtX25hdGl2
ZUltYWdlOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogfQogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogYm9vbCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcigpCiB7
Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lkdGgoKSAhPSAxIHx8IG1fbmF0
aXZlSW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkgIT0gMTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFn
ZS0+Yml0bWFwKCkud2lkdGgoKSAhPSAxIHx8IG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdo
dCgpICE9IDE7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5o
CmluZGV4IDU2ZWJlM2EuLjVhZTJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhLmgKQEAgLTQyLDggKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gb2JzZXJ2ZXJz
LCBhbmltYXRpb24sIG11bHRpcGxlIGZyYW1lcywgb3Igbm9uLWRlY29kZWQgZGF0YS4KIC8vIFRo
ZXJlZm9yZSB0cmltbWluZyB0aGUgZGVjb2RlZCBkYXRhIChkZXN0cm95RGVjb2RlZERhdGEoKSkg
aGFzIG5vIGVmZmVjdC4KIC8vCi0vLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1dHRpbmcgdGhpcyBp
biBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlUHRyKQotLy8gaXMgdGhhdCBOYXRpdmVJ
bWFnZVB0ciA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2ZSBTa0JpdG1hcC4KKy8v
IFRoZSBkaWZmaWN1bHR5IHdpdGggcHV0dGluZyB0aGlzIGluIEJpdG1hcEltYWdlOjpjcmVhdGUo
UGFzc1JlZlB0cjxOYXRpdmVJbWFnZT4pCisvLyBpcyB0aGF0IE5hdGl2ZUltYWdlID0gTmF0aXZl
SW1hZ2VTa2lhLCB5ZXQgY2FsbGVycyBoYXZlIFNrQml0bWFwLgogY2xhc3MgQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWEgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgogICAgIC8vIENyZWF0ZXMg
YSBuZXcgSW1hZ2UgZnJvbSB0aGUgZ2l2ZW4gU2tCaXRtYXAuICBJZiAiY29weVBpeGVscyIgaXMg
dHJ1ZSwgYQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBk
ZWNvZGVkU2l6ZSgpIGNvbnN0OwogCiAgICAgLy8gV2Ugb25seSBoYXZlIGEgc2luZ2xlIGZyYW1l
LgotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUGFzc1B0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xp
ZENvbG9yKCk7CkBAIC03Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25h
dGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAK
ICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdlIGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2lu
ZyBhIHNoYWxsb3cgY29weS4KICAgICBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBT
a0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tp
YS5jcHAKaW5kZXggM2IxYzhmMi4uOGFjNmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lh
LmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBp
ZiAoIWZyYW1lIHx8IGZyYW1lLT5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5o
YXNBbHBoYSgpOwotICAgICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3
TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRp
dmVJbWFnZSgpOwogICAgICAgICBpZiAoIW1fbmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZl
SW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRo
KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2
ZUltYWdlLT5iaXRtYXAoKS5jb25maWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCAxZGVjMWVlLi4yZDE3NWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNr
aWEuY3BwCkBAIC00NTAsMTAgKzQ1MCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNs
ZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
OwogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9mcmFtZXwgYW5kIHBhc3NlZAotICAgICAgICAvLyBv
d25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdlIG11c3QgZGVsZXRlIGl0IGhlcmUuCi0gICAgICAg
IGRlbGV0ZSBtX2ZyYW1lOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZS5j
bGVhcigpOworCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CkBAIC00NzEsNyArNDY5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFRSQUNFX0VWRU5UMCgi
c2tpYSIsICJJbWFnZTo6ZHJhd1BhdHRlcm4iKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlU2tp
YSogYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKQEAgLTU3Miw3ICs1NzAsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkg
PiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIGZy
YW1lID0gZnJhbWVBdEluZGV4KDApOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1l
ID0gZnJhbWVBdEluZGV4KDApOwogCiAgICAgaWYgKGZyYW1lICYmIHNpemUoKS53aWR0aCgpID09
IDEgJiYgc2l6ZSgpLmhlaWdodCgpID09IDEpIHsKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBs
b2NrKGZyYW1lLT5iaXRtYXAoKSk7CkBAIC01OTksNyArNTk3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmwKICAgICAvLyBjYXVzaW5nIGZsaWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0
YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJtID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBibSA9IG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFibSkKICAgICAgICAgcmV0dXJuOyAv
LyBJdCdzIHRvbyBlYXJseSBhbmQgd2UgZG9uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAKQEAgLTY1
MSwxMyArNjQ5LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LAogewogICAgIEZsb2F0UmVjdCBub3JtRHN0UmVjdCA9IG5vcm1h
bGl6ZVJlY3QoZHN0UmVjdCk7CiAgICAgRmxvYXRSZWN0IG5vcm1TcmNSZWN0ID0gbm9ybWFsaXpl
UmVjdChzcmNSZWN0KTsKLSAgICBub3JtU3JjUmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAs
IG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5o
ZWlnaHQoKSkpOworICAgIG5vcm1TcmNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoMCwgMCwgbV9u
YXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVp
Z2h0KCkpKTsKIAogICAgIGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZHJhdy4KIAogICAgIHBh
aW50U2tCaXRtYXAoY3R4dC0+cGxhdGZvcm1Db250ZXh0KCksCi0gICAgICAgIG1fbmF0aXZlSW1h
Z2UsCisgICAgICAgICptX25hdGl2ZUltYWdlLAogICAgICAgICBub3JtU3JjUmVjdCwKICAgICAg
ICAgbm9ybURzdFJlY3QsCiAgICAgICAgIFdlYkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUo
Y29tcG9zaXRlT3ApKTsKQEAgLTY2Nyw3ICs2NjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKIH0KIAogQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWE6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhKGNvbnN0IFNrQml0bWFw
JiBiaXRtYXAsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKLSAgICA6IG1fbmF0aXZlSW1hZ2UoYml0
bWFwLCByZXNvbHV0aW9uU2NhbGUpCisgICAgOiBtX25hdGl2ZUltYWdlKE5hdGl2ZUltYWdlU2tp
YTo6Y3JlYXRlKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEu
Y3BwCmluZGV4IDBkYzBmOWUuLjY1OWE1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHAKQEAgLTYwLDYg
KzYwLDE1IEBAIE5hdGl2ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFw
JiBvdGhlciwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewogfQogCitOYXRpdmVJbWFnZVNraWE6
Ok5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgY29uc3QgU2tCaXRtYXAmIHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZv
JiBjYWNoZWRJbWFnZUluZm8sIGludCByZXNpemVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2UoaW1h
Z2UpCisgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBtX3Jl
c2l6ZWRJbWFnZShyZXNpemVkSW1hZ2UpCisgICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNoZWRJ
bWFnZUluZm8pCisgICAgLCBtX3Jlc2l6ZVJlcXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQoreworfQor
CiBOYXRpdmVJbWFnZVNraWE6On5OYXRpdmVJbWFnZVNraWEoKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgK
aW5kZXggOGI3OTVlMi4uNmJlMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCkBAIC0zNSwyMSArMzUsMzIg
QEAKICNpbmNsdWRlICJTa1JlY3QuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIG9iamVjdCBp
cyB1c2VkIGFzIHRoZSAibmF0aXZlIGltYWdlIiBpbiBvdXIgcG9ydC4gV2hlbiBXZWJLaXQgdXNl
cwotLy8gIk5hdGl2ZUltYWdlUHRyIiwgaXQgaXMgYSBwb2ludGVyIHRvIHRoaXMgdHlwZS4gSXQg
aGFzIGFuIFNrQml0bWFwLCBhbmQgYWxzbworLy8gIk5hdGl2ZUltYWdlIiwgaXQgaXMgYSB0eXBl
ZGVmIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFuIFNrQml0bWFwLCBhbmQgYWxzbwogLy8gc3RvcmVz
IGEgY2FjaGVkIHJlc2l6ZWQgaW1hZ2UuCi1jbGFzcyBOYXRpdmVJbWFnZVNraWEgeworY2xhc3Mg
TmF0aXZlSW1hZ2VTa2lhIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2VTa2lhPiB7CiBw
dWJsaWM6Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKCk7Ci0gICAgfk5hdGl2ZUltYWdlU2tpYSgpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgIH0KIAot
ICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZG9lcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFzc2Vk
LWluIFNrQml0bWFwIChpZS4sIGl0Ci0gICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhlbCBk
YXRhIGFuZCBidW1wcyB0aGUgcmVmY291bnQpLiAgVXNlIG9ubHkgd2hlbgotICAgIC8vIHlvdSB3
YW50IHNoYXJpbmcgc2VtYW50aWNzLgotICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1h
cCYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZl
SW1hZ2VTa2lhPiBjcmVhdGUoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNr
aWEoYml0bWFwLCByZXNvbHV0aW9uU2NhbGUpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEobV9pbWFnZSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVz
aXplZEltYWdlLCBtX2NhY2hlZEltYWdlSW5mbywgbV9yZXNpemVSZXF1ZXN0cykpOworICAgIH0K
KworICAgIH5OYXRpdmVJbWFnZVNraWEoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBieXRlcyBvZiBpbWFnZSBkYXRhLiBUaGlzIGluY2x1ZGVzIHRoZSBjYWNoZWQKICAgICAvLyBy
ZXNpemVkIHZlcnNpb24gaWYgdGhlcmUgaXMgb25lLgpAQCAtODgsNiArOTksMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgorICAgIE5hdGl2ZUltYWdlU2tpYSgpOworCisgICAgLy8gVGhpcyBjb25zdHJ1
Y3RvciBkb2VzIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBwYXNzZWQtaW4gU2tCaXRtYXAgKGllLiwg
aXQKKyAgICAvLyByZWZlcmVuY2VzIHRoZSBzYW1lIHBpeGVsIGRhdGEgYW5kIGJ1bXBzIHRoZSBy
ZWZjb3VudCkuIFVzZSBvbmx5IHdoZW4KKyAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGlj
cy4KKyAgICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpOworCiAgICAgLy8gQ2FjaGVkSW1hZ2VJbmZvIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRl
bnRpZnkgY2FjaGVkIG9yIHJlcXVlc3RlZCBpbWFnZQogICAgIC8vIHJlc2l6ZXMuCiAgICAgLy8g
SW1hZ2UgcmVzaXplIGlzIGlkZW50aWZpZWQgYnkgdGhlIHNjYWxlZCBpbWFnZSBzaXplIGFuZCBz
Y2FsZWQgaW1hZ2Ugc3Vic2V0LgpAQCAtMTAyLDYgKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IFNrSVJlY3QgcmVjdEluU3Vic2V0KGNvbnN0IFNrSVJlY3QmIG90aGVyU2NhbGVkSW1hZ2VSZWN0
KTsKICAgICB9OwogCisgICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBTa0JpdG1hcCYgcmVzaXplZEltYWdlLCBjb25z
dCBDYWNoZWRJbWFnZUluZm8mLCBpbnQgcmVzaXplUmVxdWVzdHMpOworCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiByZXNpemUgb3BlcmF0aW9uIHNob3VsZCBlaXRoZXIgcmVzaXpl
IHRoZSB3aG9sZQogICAgIC8vIGltYWdlIGFuZCBjYWNoZSBpdCwgb3IgcmVzaXplIGp1c3QgdGhl
IHBhcnQgaXQgbmVlZHMgYW5kIHRocm93IHRoZSByZXN1bHQKICAgICAvLyBhd2F5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNw
cAppbmRleCAyYWU0ZGQ2Li5mYTBhYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCBQ
bGF0Zm9ybVBhdHRlcm5QdHIgUGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZgogICAgIC8vIGFuZCBleHBhbmRlZCBzY2FsZSBhbmQgc2tl
dyBpbjoKICAgICAvLyBMYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0w
Ni1iLnN2ZwogCi0gICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhKiBpbWFnZSA9IG1fdGlsZUltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IGltYWdlID0gbV90aWxlSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGJpdG1hcCwgcmV0dXJuIGEgdHJhbnNwYXJlbnQgc2hh
ZGVyLgogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIG1fcGF0dGVybiA9IG5ldyBTa0NvbG9yU2hh
ZGVyKFNrQ29sb3JTZXRBUkdCKDAsIDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKaW5kZXggYTI4ZDE0OS4u
MGNkM2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvSW1hZ2VXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvSW1hZ2VXaW5DRS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gU2hhcmVkQml0bWFwOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1f
c2l6ZSwgaGFzQWxwaGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDEwNDI0YTUuLjE0YjdiMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0
aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2ls
bCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVE
YXRhOjpjbGVhcigpKS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgp
IGNvbnN0OworICAgICAgICBOYXRpdmVJbWFnZVBhc3NQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50
UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVS
ZWN0OyB9CkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBp
bmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewogI2lmIFVT
RShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmdldEFkZHIzMih4
LCB5KTsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC0+Yml0bWFwKCkuZ2V0QWRkcjMyKHgs
IHkpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX2J5dGVzICsgKHkgKiB3aWR0aCgpKSAr
IHg7CiAjZW5kaWYKQEAgLTE1MCwxMiArMTUwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgdm9pZCBzZXRTa0JpdG1hcChjb25zdCBTa0Jp
dG1hcCYgYml0bWFwKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUlt
YWdlU2tpYShiaXRtYXAsIDEpOworICAgICAgICAgICAgbV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNr
aWE6OmNyZWF0ZShiaXRtYXAsIDEpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU2tCaXRt
YXAmIGdldFNrQml0bWFwKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
Yml0bWFwLmJpdG1hcCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5QWxsb2NhdG9yKFNrQml0bWFwOjpB
bGxvY2F0b3IqIGFsbG9jYXRvcikKQEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGludCB3aWR0aCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkK
LSAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS53aWR0aCgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS53aWR0aCgpOwogI2Vsc2UKICAgICAgICAgICAg
IHJldHVybiBtX3NpemUud2lkdGgoKTsKICNlbmRpZgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKICAgICAgICAgewog
I2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmhlaWdo
dCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5oZWlnaHQoKTsKICNl
bHNlCiAgICAgICAgICAgICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwogI2VuZGlmCiAgICAgICAg
IH0KIAogI2lmIFVTRShTS0lBKQotICAgICAgICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7Cisg
ICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fYml0bWFwOwogICAgICAgICBTa0JpdG1h
cDo6QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICNlbHNlCiAgICAgICAgIFZlY3RvcjxQaXhlbERh
dGE+IG1fYmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmlu
ZGV4IDQxNzYyOGQuLjQ2YjY1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFz
c1B0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bmV3IE5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4
ZWxEYXRhKj4obV9ieXRlcykpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvb3BlbnZnL0ltYWdlRGVjb2Rlck9wZW5WRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNw
cAppbmRleCBkMjkzMTdhLi41ODgzNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVy
T3BlblZHLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZl
SW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAg
IHN0YXRpYyBjb25zdCBWR0ltYWdlRm9ybWF0IGJ1ZmZlckZvcm1hdCA9IFZHX3NBUkdCXzg4ODhf
UFJFOwogICAgIC8vIFNhdmUgbWVtb3J5IGJ5IHVzaW5nIDE2LWJpdCBpbWFnZXMgZm9yIGZ1bGx5
IG9wYXF1ZSBpbWFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQz
Yjg2Li5hODY4NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTMyLDcg
KzMyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgp
Ci0gICAgOiBtX2FsbG9jYXRvcigwKQorICAgIDogbV9iaXRtYXAoTmF0aXZlSW1hZ2VTa2lhOjpj
cmVhdGUoKSkKKyAgICAsIG1fYWxsb2NhdG9yKDApCiAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQog
ICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAgICAsIG1fZHVyYXRpb24oMCkKQEAgLTQ2LDEw
ICs0NywxMCBAQCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VG
cmFtZSYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRo
aXM7CiAKLSAgICBtX2JpdG1hcCA9IG90aGVyLm1fYml0bWFwOworICAgIG1fYml0bWFwID0gb3Ro
ZXIubV9iaXRtYXAtPmNsb25lKCk7CiAgICAgLy8gS2VlcCB0aGUgcGl4ZWxzIGxvY2tlZCBzaW5j
ZSB3ZSB3aWxsIGJlIHdyaXRpbmcgZGlyZWN0bHkgaW50byB0aGUKICAgICAvLyBiaXRtYXAgdGhy
b3VnaG91dCB0aGlzIG9iamVjdCdzIGxpZmV0aW1lLgotICAgIG1fYml0bWFwLmJpdG1hcCgpLmxv
Y2tQaXhlbHMoKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkubG9ja1BpeGVscygpOwogICAgIHNl
dE1lbW9yeUFsbG9jYXRvcihvdGhlci5hbGxvY2F0b3IoKSk7CiAgICAgc2V0T3JpZ2luYWxGcmFt
ZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJlY3QoKSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0
YXR1cygpKTsKQEAgLTY0LDcgKzY1LDcgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0
b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4
ZWxEYXRhKCkKIHsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fYml0bWFw
LT5iaXRtYXAoKS5yZXNldCgpOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBO
T1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoKQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhl
ciBmdW5jdGlvbnMgbGlrZQpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFy
UGl4ZWxEYXRhKCkKIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0g
ICAgbV9iaXRtYXAuYml0bWFwKCkuZXJhc2VBUkdCKDAsIDAsIDAsIDApOworICAgIG1fYml0bWFw
LT5iaXRtYXAoKS5lcmFzZUFSR0IoMCwgMCwgMCwgMCk7CiAgICAgbV9oYXNBbHBoYSA9IHRydWU7
CiB9CiAKQEAgLTg0LDkgKzg1LDkgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShj
b25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX2hh
c0FscGhhID0gb3RoZXIubV9oYXNBbHBoYTsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgp
OwotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1h
cDsKLSAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2JpdG1hcC5iaXRt
YXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkpOworICAgIG1fYml0bWFwLT5iaXRt
YXAoKS5yZXNldCgpOworICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSogb3RoZXJCaXRtYXAgPSBv
dGhlci5tX2JpdG1hcC5nZXQoKTsKKyAgICByZXR1cm4gb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNv
cHlUbygmbV9iaXRtYXAtPmJpdG1hcCgpLCBvdGhlckJpdG1hcC0+Yml0bWFwKCkuY29uZmlnKCkp
OwogfQogCiBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVp
Z2h0KQpAQCAtOTQsMTcgKzk1LDE3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3
V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgo
KSAmJiAhaGVpZ2h0KCkpOwogCi0gICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgaWYgKCFt
X2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscyhtX2FsbG9jYXRvciwgMCkpCisgICAgbV9iaXRt
YXAtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dp
ZHRoLCBuZXdIZWlnaHQpOworICAgIGlmICghbV9iaXRtYXAtPmJpdG1hcCgpLmFsbG9jUGl4ZWxz
KG1fYWxsb2NhdG9yLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgemVyb0ZpbGxQ
aXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5ldyBOYXRpdmVJ
bWFnZVNraWEobV9iaXRtYXApOworICAgIHJldHVybiBtX2JpdG1hcC0+Y2xvbmUoKTsKIH0KIAog
Ym9vbCBJbWFnZUZyYW1lOjpoYXNBbHBoYSgpIGNvbnN0CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9p
ZCBJbWFnZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIGJvb2wgaXNPcGFxdWUg
PSAhbV9oYXNBbHBoYTsKICAgICBpZiAobV9zdGF0dXMgIT0gRnJhbWVDb21wbGV0ZSkKICAgICAg
ICAgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5zZXRJc09wYXF1ZShp
c09wYXF1ZSk7CisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldElzT3BhcXVlKGlzT3BhcXVlKTsK
IH0KIAogdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxl
JiBjb2xvclByb2ZpbGUpCkBAIC0xMzUsOCArMTM2LDggQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRT
dGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVzID0gc3RhdHVzOwogICAg
IGlmIChtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRlKSB7Ci0gICAgICAgIG1fYml0bWFwLmJpdG1h
cCgpLnNldElzT3BhcXVlKCFtX2hhc0FscGhhKTsKLSAgICAgICAgbV9iaXRtYXAuc2V0RGF0YUNv
bXBsZXRlKCk7ICAvLyBUZWxsIHRoZSBiaXRtYXAgaXQncyBkb25lLgorICAgICAgICBtX2JpdG1h
cC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoIW1faGFzQWxwaGEpOworICAgICAgICBtX2JpdG1hcC0+
c2V0RGF0YUNvbXBsZXRlKCk7IC8vIFRlbGwgdGhlIGJpdG1hcCBpdCdzIGRvbmUuCiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
eC9JbWFnZURlY29kZXJXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHAKaW5kZXggMGUwNDc5ZS4uNjYwYWY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNv
ZGVyV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4
L0ltYWdlRGVjb2Rlcld4LmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25z
dAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25z
dAogewogICAgIHd4Qml0bWFwKiBibXAgPSBuZXcgd3hCaXRtYXAod2lkdGgoKSwgaGVpZ2h0KCks
IDMyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMjk2
YzM0ZC4uNjUxZTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CkBAIC0xNDEsNiArMTQxLDI0IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiAgICAgc2V0SW1h
Z2VPYnNlcnZlcihvYnNlcnZlcik7CiB9CiAKKyNpZiBVU0UoU0tJQSkKKy8vIFBhc3NlcyBvd25l
cnNoaXAgb2YgdGhlIE5hdGl2ZUltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQYXNz
UHRyIG5lZWRzCisvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KK05hdGl2ZUltYWdlUGFz
c1B0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAv
LyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3
KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIHJldHVybiBidWZm
ZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKK30KKyNlbmRpZgorCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXpl
LCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAppbmRleCBmMDlhMmIxLi5lNGVhYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lm
IFVTRShTS0lBKQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9y
Q29udGFpbmVyOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
ZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQotCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRkYmUwNjkuLjY1MWY4NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMtMDMtMjggIENocmlzdG9waGUg
RHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24o
cjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdpbmcg
Zm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgY29kZSBub3cgdGhhdCBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSBhbmQKKyAgICAgICAgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIHJldHVybiBh
IHNtYXJ0IHBvaW50ZXIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAg
KiBzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VEZWNv
ZGVyOjpnZXRGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbWFnZTo6ZnJhbWVzRnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKiB0ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9EcmFnSW1hZ2VUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAg
ICAoVGVzdEltYWdlKToKKyAgICAgICAgKiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6VGVzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAo
VGVzdEltYWdlKToKKwogMjAxMy0wMy0yNyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSB0b3VjaCBldmVudHMgaW4gUGFnZVBv
cHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAxMDRhYjEzLi4yNjUxMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkltYWdlRGVjb2Rlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbWFnZSBXZWJJbWFn
ZURlY29kZXI6OmdldEZyYW1lQXRJbmRleChpbnQgaW5kZXggPSAwKSBjb25zdAogICAgIEltYWdl
RnJhbWUqIGNvbnN0IGZyYW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZlckF0SW5kZXgo
aW5kZXgpOwogICAgIGlmICghZnJhbWVCdWZmZXIpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgp
OwotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gYWRvcHRQdHIoZnJhbWVCdWZm
ZXItPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1h
Z2UgPSBmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIHJldHVybiBXZWJJbWFn
ZShpbWFnZS0+Yml0bWFwKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW1hZ2VTa2lhLmNwcAppbmRleCA2ZDU1NTU1Li4yYjc2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSW1hZ2Ug
V2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRl
c2lyZWRTaXplKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgpOwog
Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+YXNO
ZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZy
YW1lLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IFdlYkltYWdlKCk7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBXZWJWZWN0b3I8V2ViSW1hZ2U+IFdl
YkltYWdlOjpmcmFtZXNGcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhKQogICAgICAgICBpZiAo
IWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRyPE5hdGl2ZUlt
YWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKLSAg
ICAgICAgaWYgKGltYWdlLmdldCgpICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQorICAgICAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lLT5hc05ld05hdGl2ZUltYWdl
KCk7CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNEYXRhQ29tcGxldGUoKSkKICAgICAg
ICAgICAgIGZyYW1lcy5hcHBlbmQoV2ViSW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKSk7CiAgICAgfQog
CkBAIC0xNTcsOCArMTU3LDggQEAgV2ViSW1hZ2U6OldlYkltYWdlKGNvbnN0IFBhc3NSZWZQdHI8
SW1hZ2U+JiBpbWFnZSkKIAogV2ViSW1hZ2UmIFdlYkltYWdlOjpvcGVyYXRvcj0oY29uc3QgUGFz
c1JlZlB0cjxJbWFnZT4mIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIHA7Ci0gICAgaWYg
KGltYWdlLmdldCgpICYmIChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
KQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IHA7CisgICAgaWYgKGltYWdlICYmIChwID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKQogICAgICAgICBhc3NpZ24ocC0+
Yml0bWFwKCkpOwogICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcApp
bmRleCA3ZjE5MDBiLi42NGY4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgcHJvdGVjdGVkOgogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3
SW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9w
dFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1h
Z2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rl
ci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQRUNU
X0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2Ut
PmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlz
TnVsbCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJU
ZXN0LCBkcmF3SW50b1NrUGljdHVyZSkKIAogVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVyVGVz
dCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiB7Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tp
YT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5h
c05ld05hdGl2ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9
IG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgp
OwogICAgIFNrQml0bWFwIHNjYWxlZEJpdG1hcCA9IGltYWdlLT5yZXNpemVkQml0bWFwKFNrSVNp
emU6Ok1ha2UoNTAsIDUxKSwgU2tJUmVjdDo6TWFrZVdIKDUwLCA1MSkpOwogICAgIEVYUEVDVF9G
QUxTRShzY2FsZWRCaXRtYXAuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKHNjYWxlZEJpdG1h
cC5pc0ltbXV0YWJsZSgpKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUX0YoRGVmZXJyZWRJbWFn
ZURlY29kZXJUZXN0LCBkZWNvZGVPbk90aGVyVGhyZWFkKQogewogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UoYWRvcHRQ
dHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdl
KCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fbGF6eURlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIEVYUEVDVF9F
USgxLCBpbWFnZS0+Yml0bWFwKCkud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VRKDEsIGltYWdlLT5i
aXRtYXAoKS5oZWlnaHQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGltYWdlLT5iaXRtYXAoKS5pc051
bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFn
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNw
cAppbmRleCBhOTQ2NWU2Li5hZTIwYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAg
ICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBtX25h
dGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAgICAgbV9u
YXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbmF0aXZl
SW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxvY1Bp
eGVscygpOwpAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2l6
ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1
YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTk3
LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRy
PE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bV9uYXRpdmVJbWFnZTsKIH07CiAKIFRFU1QoRHJhZ0ltYWdlVGVzdCwgTnVsbEhhbmRsaW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggNGRiNDI4Yy4uMGJkZDM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBJbWFnZSgwKQogICAgICAgICAsIG1fc2l6
ZShzaXplKQogICAgIHsKLSAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGFkb3B0UHRyKG5ldyBOYXRp
dmVJbWFnZVNraWEoKSk7CisgICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBOYXRpdmVJbWFnZVNraWE6
OmNyZWF0ZSgpOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5zZXRDb25maWcoU2tC
aXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwKTsKICAgICAgICAgbV9u
YXRpdmVJbWFnZS0+Yml0bWFwKCkuYWxsb2NQaXhlbHMoKTsKQEAgLTc3LDEyICs3NywxMiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NpemU7CiAgICAgfQogCi0gICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgewog
ICAgICAgICBpZiAobV9zaXplLmlzWmVybygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX25hdGl2
ZUltYWdlOwogICAgIH0KIAogICAgIC8vIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHB1cmUgdmly
dHVhbCBJbWFnZSBmdW5jdGlvbnMuCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAg
IEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUlt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKIH07CiAKIFRFU1Qo
SW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVlSW1hZ2VzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195580</attachid>
            <date>2013-03-28 09:00:19 -0700</date>
            <delta_ts>2013-03-31 02:42:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>74108</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYWI4ODc4Li5kZWViMDhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MjggIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjggIFpvbHRhbiBBcnZhaSAgPHphcnZh
aUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XVtXSzJdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLiBSZWJhc2VsaW5pbmcgYWZ0ZXIgcjE0NzA4Ni4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4
cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy9jYW52
YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODExYzU5ZGM1
Y2VmMWQzMWE2YmQ2NmRmOWQ1YzYxZTFhN2Y0YTEwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
NDI1NAp6Y21lSHVYSVJ0dXdyPG8+VzxYP1NYZH40Yk1HeW89PkQ/SXpRQmFUPzFWV0deTlI8Kj1m
R3tkRFFXZDJyTytscGgKelA5T21zejxfe0E9dU0+ZW51SHFlaWFMQXQtZ0VaN19rMXxfb2NsYUdB
TzIkYW10V1J6dCNgZmV5VGJqZSs4VjZQCnpKakA2TGc3d25IVS1TQCYxSUd9RXtsO0pKaGolelJJ
RUNTI1F5JUtaOSMoY1hSdTFrTUN4b29yOEppbWxhekNEeAp6bTl8IzZBdUE8cWJMUlJEOChDQFRB
SjUyMi0+XlBnKlprI08xbVlPdChsMCs1Y3FjM2o7bGQwa0hFUSUla3NwfEUKemhoJDVuMVI1TSVW
WnhXIzEofGZlPTtyTS1oJSZkREdjXjRtSVEtJiVfbDgoKnJiSyE4TyV3TDU9ancmQz5oWDwmCnoo
JFFUVUJDSzV2TSFBS30/QFhTKD1lKVlJPT07O1RPKDl8JUVwbn05P01adnY2UkJkUXJKKk1lbzV0
QU87Izgofgp6MH1eVDVaP0gqOVFjNi1INW8yRT4wJmc4Yzt0X35JOW9+SGBoK3t3Z1J+IW1iX0Jt
WDJaSFc8Jm0lak9+bVc9ZDQKekg8KDxrQGpzPmBlKlZKSVNhYVZRMWIzJXg0Ykt+JXFucVpXcSk9
d3QrNHBzS3lvUDtqdHIpTWR5LWxeZl5yKUEhCno+V3hxSkZCSjwoPHxee2ZEd149Rlg+MWZIPz5Z
dUo5NE9aMDcoVXVeYkdHKV4xTGNFbVQ1ISR6XlJJSFE2P2Y7Twp6TX1xVVY0R1hvKCtvTk5OX0NZ
M3YrY1Z+OWt1bWJ0Tns2dC00PFJZbyNtY0VpSTt4ay0jXmleSXhJTDhENVR8O18KeiZHZl89Un0x
NTQ4ZkklSUotekhMblFZKl9lSjt1NTk/ei1OcEtCQ0RFanZCUFRYWShjPXJRdlNoNCltVWtvQSp5
Cno9V1ZsNVpSY0pheU5saXw4JjVNI0thYkxJdXAwZXhzJW8pfFUjK3gmYUI5azlrKzhqKHJXTHo1
Z3J+aD9RYDtmdwp6MWV+PkxldFpuWVdIQTRaS2R8fEhadHQhfnshJW1AVFB4bF8/SzcyRj8kREZC
aGZDakV6KXJPI1A5PUhgKHw1Ty0Kej1FdWRCdlc7MFglaHw+PVo4OUY3Nih3Z0VYVm1IRUlqZjh7
aEFaOEFlfnkjb0pNV19vK0NyQHspZ2BPSlJveFF4CnpoY1A5eFQ7XntveUFPRnN6dmVnQio1OVRy
d1U0TjdqejFFY3NaISVHNip9fjZee1NZcytSeip9dCsmITM7UCN5Owp6cWFzIXd2VV8+Rz5IZCYw
QDFeMEk7fV5vZD5fUWZEPkE1V1I9IT5Ccm9iP1NHdWJ1MDxNdD1RVG43JEg7T1RmYEwKejRSZFQ/
S2xuYkZQNExMRFcyd2FiVkphYHheMGwrTDlKJWsySVImZUtvdDA3fmB8eyY1OUhYYnQ1TnFzYmdT
Z0UlCnptUzM/RT42Q24wP3dzNUQ9emNOVj14SmlKKSk1UUw1flc3MzdaVnA4PSUhfnA+YTVHKkcr
NSFmd0xXdVBCVnVQbAp6NjhCYFYhZXhYb21ydGJrVDFEMEAqUiNrdV9JfTs4UWVATHxRWVVHcl81
ZlJnVGwxO3B5YDNxMitSWEwzK1hxPSQKelMkb1hmdWpGLS0yX05MbXRHIStJXipiKktDemprQXRz
aEw8KVI9SVlpdHdGJFZoYjFoNFoxZHxLeGlgNDE9ViNtCnpHQDJmdCgkfChCejAwXik8JCN0Xmw4
TjVne1ZwfD5aZj9TSSg4Sj56c3ZHYWAqcCRWWEdgPnNJWUZDJl91Kk5SKgp6bXZXPjFSdG0xYSVC
ITR3ZFdWVEVNaz5tY3VlYGgqZVhIJnUjTD45YXpLZDBFQFdDMG9OWSQ8QkMkPm9uOUBCM04KenQo
eGNgeFFWfVFPVUZZVT4/bVR4I3Y4K1ZBTjQhcTdzey0kNVl7R3N1UipJdzcwPUVxYXpia1Q8dTIl
ZTkqOHR5CnpFSjcobGpsU3tuPDshM0otOzhwMTU2SV99dHBVNHBYZFY5V0w5LVZFTnhQajxvayh2
c0BpbHdOZ2pBRD82TUVhTgp6RjsldnMkNDtYT2UkOV9oeG0yJC1rfjgoO1VpOUREYiojJmNqTHFw
K1g+c2MmLSZNYD8ldnc2VjVnZ3MmJXFoNU0KenhuUnY8KVllPkpPXlNOYURYP2JoeFczQS0+Z1BS
Rmdgb3wpeDkwfj92Zz95eTRpOWFXY303PTlhPlJHO15xblRJCnokfnkoazd1cnVHQldLOzdzPD9M
NV53OHZrcVN6OUh4WChBKlVuTE5qYXlIa2RtVTtgVkhkaU9FVCk5RkRGQ1BpbQp6OSphflg7UCZW
P0Vpb3c5MjJOTUxXV1FDQ0V7RHFZZH54TGc3VDhSM2hIa3Y5bFN6XkZDSGhjKUt8VGBnUGlhQloK
elNJZTlSPSp6KXNlN0t6eiQ/RH53YElfTFFXYDBVTGokWFdjcX1wd3dTPC0oLSVaMGQwam8/P0JZ
KWRxQ3tLbl9RCnplUFFaK1UtOSk8X3B+R2AkN2otJEM1bChjUUheMG9BQ1phditmPUFqU3l8YmJK
YD8rK21tRWsoeFhyejw3b0IoZQp6cC1CTWlOUDZmOGFkeGhwaGBBQ2s+JVV5YilZe3JnVDQqQEwk
V2haV00rTldZX28wI21kQ1Q4X3RJI1IjJWRVSGEKek5tUHRscy1YP1hvdzJJSTt+KThKRD1uMWQ8
Pmtwb2xzZ2FrX1ROblIteHYqNnNpSnA4MjYmQTQoLXNFR1R7PT9LCnpaSWdVJTJ1X09adCV+c2R2
NlhId0M1ZzF2ZH1fVHlHY3MyenJDPW5BblJjMX51RC1Ue1ApSkc7My1AQXc+RClzMwp6MnFUcXho
bGk2b09zR016e1Z0ZWIzSCZ8WllyTzhjNlpzWkZ5cU9EK1B2P3ZgS2pePCUqZklEMGVHZ3BAUnNt
KTIKemxAQVJuMFZlWUl7bXQ9M09VRS0/OHloNWhxTjFCX2lkajI5VntSQTJENn1TMyVucnxDNk1p
Tkl3fjw0aT89KilkCno+MFZQeEpENmlWX1YpUkMkYUMkb01feDVUX3QqcGwoclpldFJwX3V5QzFE
cnFnSUx5Wj17Z0d6bFcoNURtU35vNwp6aTw+LUZqXl5nUkNnI3A3VyFxKig0RGNfaWFpNDBsNDg3
PSNnPj5xQ2N9MHd8NTMzc1E7a0swdlFNcVhgZzs0OCoKejMkS0ZOYmRya3VATG4jbkVuUHYhZWE2
RCZDZChsQyQxRnAmb3cwbExVQkp7XlQzVDhMPDNyIzJEfWBEelAzcXsrCnpqemo7Tz5kKzdqQUtO
SkhHM1MtR3lTbUVLeD1TMHVeYE57c0p5aW1CSHUjbDEqRERIPD8mTDlSWX1mXjcyfGMhVQp6YGMx
Uk9eJEQ2ZXkoPytBQGklK2F3P1ZyeDJIc3FtY001RlZsWGdfbHhMcnpkeVEpJVo9eyQ+TT40O19l
a0lTQHwKelRQUis0cnBlRm8paTxVeDslakVUJmIkRW00WTVVPHhpO01XaXJzZjc8SlB5Xil0KXZa
OHFINVMlPyQ8OGIwMWA4Cno4eDx5dz45SGUrdT5PKHlCQWFpWV9AMSQ1YkdjP34oNT5CWXo9JSNn
KTVORjArRHJDZGI/UGdjOzJxZyR7UVcqVgp6K0lKPWBqQnQ7WXcreG5LamlvSVBSbypEKGVoM2dE
eUM/cHU1Y2s2YU9oPUBwcjV8N08kPTRMXkdidWRsUipzdWUKejhyZDlXISZTZik+QiN8IzZxVEBg
O3xqaigofTFaUW8pMWslZDBuY3tfOzBPT3g9KT9OZUs0KUM2fCNOa3BVSl5YCnpWKGVxSFNib15w
I3l3dT0zUUQpQkJ5bmR8SzA+bk17cTBoUjk8RE4zPig+d0pkQUJ8TGVvd25fZTAhT2s5RnN1VQp6
TiE+RUBXYjNMciFNclY9eHFRMCQ9dmBRbEhRR2R8QyZNeG8kP2BFP0UhQjVrbDw4fDw3ZWR+UFN9
N2t0Zjc4fT4KejNTaEhITT9CQUJwX3ZmKlNTcjBIUn5adkArU0IjTWxHenctT0pNSGAzWDg/WiNH
SkNPd1pEMGpHXyl+Py1jekpOCnpYcVoqQGNHa3c0QkhJX3wlODkjOU1NRmJGeyhVeUY2UH5ZZ2VS
Vmt8X0V2MjlucWJGPSNQWH03OUdDaF8jbWRoWQp6PllMWDFWaXV6KlFQSC1LQURpR2o5VTdXbjQt
c3koSzBQWFIxNDRLQ3NyMWM7NVk4YSs2UlIzLT4oZD0xe1o3fXEKenJOTioodmFUT35BTG5qQEQm
QHclLX0yKz9pYDZXQUk5VHA3IWV9VjJWfnlAQDNKZ3ZHY1hgdHNFdGFtNm9hRmw8CnpKVWwlMzI+
LTBCUlghQVM8OXheVGBDM3MwfDRqfGJnMXpLUmxofEpaaChlcjY+VyM8NzFwPylxMmp3eGQ8Z2pr
ZAp6SmwoIWpOUXpJTEdzY0pNbDJkdkB5PUxDd1hyPiZYOVZvdypoUTQkeldWSShKS0pzeiNFbFN4
Y25YezwzO1lwMnEKel97YmJ+TS1IPSl0NmkoO0h2U3NEeDc4eU9WdmIhWGclVDIkYk03a3d3OCU5
cloqKDIoPkhAeGxVbjF9fXQ8VlV4Cno4VjB5UUQoUj9oVDFSeVE1KUZ4anRuT0t0Kyk3UzVzTlY2
UkFyIWpvdCNfQSVaUHFGOHY/TFJLQ1pGSW9UaE1ATAp6YDhDeDM5eUNyeCE0Q3F9NS1UfVVYci1+
NT4wczNxO1NhbmVNWl8xdEZOI1p8WDhtMChJPX1+PlAoSXtvJUFzITYKejcmZkNAYGBiNml4eGBJ
TUFjdDliV3o5U34pUFgyfGduKzFXKWV7dXI5KTBfJG03KEBnUWYyajhvMDJQXlBMaV5NCnpMWitv
fW1eRUxNKz5sM1N0SzNNbig/RDZHbEdtYGBUNUR4P2BtTUpnPFcpIVN2ZDVnaFIpbUBCX0YwPWA7
MlYkXwp6fEczc3dDTW4kMGtTb3I3UDAlPG5UM1JpVXhTY1dpaF5hU0VxP2B2VTR6aDUpTlRMSHk7
R3RuYXRueUtLUz12YDsKellNIVAoS09hb2tfeis1Wl5lIW0lVlNGaDBSV1opUVo3YkB6SWklMnF6
RCN6Y3loaUQqT0J+ZXI/PWh7VUA5djYoCnpJMEhxMXslJHdkb3J+VVZNbHVWJlV6NXpXYlREd3ZT
UUQ8e3granMhME9VMGRjYHhFP09ybmFDNEh1VmYtcj4hYgp6OF9vZnQ7cFNQM2k7RkopYkVkRjFM
NDYlQCstSm5saShoYl5wPUw0Sz5LaiZyUTZKNiQxKjtFUCohKDN8PTAzSz4KejI4bng/Kip8Uytl
dnZjMSpFUUJDRmQqb14tVTBuQjdeM1JiVSRSNGR0MXVRTzw7S2Rqc05Yd3dKV34wckp2bjNpCnpn
SUc2YHVaZX4wRypCRk5NKGYpPExWJHBVZXxQNENkLUFyfkQhdnxnNFZJNHJNWVMrcislQk54SVVt
OSkpfX1hQAp6R3FTdHJyTlpuREFiaklaKyFARS1mPXZETiQtTlRtaUE8cXJIS1UyZzRAY0BEc1Ay
M0czVTFAVGJgdzs5MWk+Q2AKeiRCKnBYMENyQzRLX35BJF4lI0JEO0hyJEg/fkp8Kk0jSWk0Y2BZ
VVlDa0MkNTUhYG5nX2haWUdMSFVTZT8rXkZ5CnotTWFeUyt+N0ptSmdmQE9nNCM9T1F9XjxzT35q
JnktQGc2djxMNjV+Z15TMztGSUtWWkQ2ZWN6Q0FXVlVFPGxUQAp6PU05eGZRdD8rZ2EkNUZTTG1x
V1VWWWI4M1B+dmBsZmJFO09oYkdyWXpuazA+IUYmeEZgdTxsWVhrN3VvXz1SIUwKemtVNGVhUnAw
ZSF3VkJjJUomd3c3OzdkWVM0TkFLayE8NXRgPm08OWlOJWJHek0xUE03a2gmbjVVUnNJKWV3S1A2
Cnp5bFE4KTF6NGg1ZGZVYShwPEVYUzxta2NmXk5zYWchT2RlT29KQ0R4PEheWHpIZG9lPklyc0Rq
Qld8UHBydF84fQp6V2p2NGJAMlVGeXd6fDghZ2N8YDhWLXQod1F0eUNwajZnQzJncSgyTTYrPlV+
VW5KYGF5PFZwVGAmT1RAZT0qNSgKej5Pak9IZSomSSR4cXElRFkzXk0jKCEzSVlYUG87UHErQ1g3
PktMSCl5ZGV2eiNnSWZpVCtwMUp1U09tZD5LR2QwCnpTSnokNTNFPUQrZDszI2oqMHtNXnR3YTd1
KSRCV3xjSUNDc1dWJVB8UXlCbSQ5c3I7bzA8fjBkPVJLMmZsREZsaQp6XyY3bmNeV2N4bXFSOW1N
KXlVWGkhcFVhR1pFOEU3TWQxZSFgOEU1dzVhJXErZkF8OU48PmxKX2U+dm98P2VBdWcKekArKGl0
ZzVvY1ImMyhMTnZQMDU2bSozWVpFbWFwNkdHMXBreUNaKTheI0J1dFBCa18qIWNKYyt6OUVEVEhJ
Mn1jCnp0U05iO2F6MnNyPzg4PktgVzRob3EwbSNaY1Z5YVRiPy0xUVJvQyM4fDAteW1lRmZMQC02
JjdLdlU7LUcwZkghbAp6U1RRQE8/eWgoMG83Jm1paSZvZEhGNGBMdnhfKlprKmB3MjlCflZxTXNu
VX50TVFQJXt5N0RtKVBBZ1ZvMj1CRU4KekVFdXJ5RDAjO2tDfitQQjImUCs/VzV+VC1XZkw4WDJR
bXN0Ql5IdUdLdU83OSh4VW0mRVR4UmNhcyk4WGt6KzxKCnpjTnxOPCUzQm84RksofmY4aEBuMiFe
MHoqUzs+JVIkWUU0IylgIWUrS3thfUFgUzh7b1RVQ0FJY2hKY240WDhwSAp6R0dzI21EcCt4RHR6
QiZvbDJ8fi0tcnpBVWpUUF4/QEtuS2w1YEBpZ3UqQjk/Vnx1TG0tUUE+XnNEfC0mM3gwcH4KenUm
JmdZMzVnZU9qayFvQVdONnBQM2RgdThjfk9IOExpTz95Kj51akVuPTtUcXdzWmRPYDlNMGNLe0tM
VEk0JDRKCnppQzk2dTwrfUglU29pSjt2byNtTz04ZEFeMl8reTxqOWVxSUk9Vnp8SEwxfWJSYExI
cnZVSFAqOCFHS2V0elYxfgp6KnlQcUR4ejJVOThDc1dxQn5pTE04KU5XdVczZWU8aE1rPlYjcEZ8
bVJXQW5AN3ZsVGRFRW1HUUU0MSYqMCo+JUsKekh9OWs1TmYpKVA9flE1YGxSKUh9QktZSXxNa3Mk
M1hkdHx5YnBqbVY8X253NXkrP3lHKFp8cm49US00UTwodn4jCnp7a0w4fUprRHFgbFRAPlJQO0s+
PXpLKHlAWV5lfFhRSVl6bDFWNWo1MGpxOCM7X2QpWlhtMi1wWiE8WWNJTF5mOQp6P0EzbyNabG5i
dlF6Z0hSV2RJITRvc31qejg1eCFKeDk1K2Qjdjh4S0pkV0JBeGFtTz5pVmZwYVNiZUE9O0lxfiQK
elhLRz4rcHxuYD5CRj5VQ00hOXN9VlFHMnY2K2s+NUN7bVE5cXZYXlZrWWN7anw5YClVTTkkaWNa
KFpTa0x2fk8jCno5Wmt5WXhsRjFJT0BaUkhmKW89QHhLJDYqV05rLX5eVD00YFI4b0F7WGItNjFv
ZHdKNypvMyMxIWlMNzRedXRgOQp6aUI9U21aakA3PUsrcjRHLWlgbCpBYXJ3N1A/RWU+YmZSKk5U
SmEje2loank/bn5rfXN6cC18JVkjbE9RO1A/flgKelFUZDNUSlFRfU5mdCF0MmNLKWVEOXRhaFMh
bkljOHBlelhvYkIlREcod20oeGd8dVNFUGZ9bl9fPXktKDIqNyRCCnpsYzJQbW9OJjJJZjYxeHhT
ODk4az9Tcz9gKlJlOWtKfnQ/MWtoLXFGfE10eTQ9cmpwdSZ7PDdfSTZ2VXooOTd7Mwp6TGQyUmd6
WWpfSUMkKlBQKnFWKGM/bzByJT8qYzhBaGVTbGZ7KWc0T0Byb2h5Y0hZR2opfk4kNzQxS3NiU2xK
TnMKenhfKiZhMmhNZHVANklBMEhCNWotMVB0cTxgQl9QeStuTGRrTjJOfkFjeF9WYHBxYHheOVok
UGcxZ3hoRDR0YjQkCnpsM09xPnZGaVkje2lIK1BuTkxzUylGfSY0U0oyNWVUM3JJJUs/U3hZdEw7
SUhHQXAhSCpTbFFFdGQoU3ZQPENQYgp6MWU/TCVsK2k/amgyRXRFUGZTfEdnKitPJD9zV0NBclkz
NVlJc1p3TkpHWGlWR0BMQDwpQ342R01pU0NkK3gyazYKekQhaHMjQ2MzS0lUKCZFR3EkIVIhPyVC
KXtYc0Y2PT9NbDdudDxRQENKX095aWI3Jn1XLVd+S0cyN19zRXRwPjh2CnoyPj1GNWRFLSglLWQz
c1BWcz1aSEdyfjBUKlZmKzNIKEZfSUV0eT4+a0pSKzllQEVLVWBjVGd6Y3skfHJCQVVWMwp6M2ZJ
Sk8ycXQ1cllvOF5USkx5Y3M3PXpCMkAyKWZuYV5xZGIlVjxqQGQqSFF7bXo0YW54N31TV2FOdUR6
PnlLdzMKel91Y0dZbSlARndgQEhUQmxrZm0ydmNaeUBgYjlOJTlWcX0hWU4tVy1qbkt3Pl4zbG5U
T017aWd6MjlFek1VN0BRCnp4Ql9DeGQza3leeTYmV18/YW5+azY8enk2VSN3aik8OXpVdWk4OEcr
Ki15JnFhaXt1aEFVdTM9REJoJE54KkFMUgp6U3pORj1DRWd6SkFlMzhAMEk2fkVhQF5JbnVORFcm
Xkx4OVo2P3l2WlQ9VEFwZXExIyEjSmtDO25IQ3FAUHBWTD4KejQyeUIlOXczaDI8cXx0dElgNmhX
cllxSWhEPTN8LXIqPjlYelBqT19PPFJIamdMM2dURzNlO0NwWUI5V2k3eF91CnpIMCM/ZUBAZ0NN
OFQlbzEkWkMrOz4qQ05+ZkAhKDJKVzZ1bTJNVmdQUkswZSNPPlg7NFQxWmlJS2ZzazdWSX0tTgp6
eUQodz5vZmIodlJVPVhyMj0kKGR7MkYxVWs9TnlOdlpfQk1DdXdBV2QrfSh+M0lwQ3o9PEJTUnsq
VmlmP01XJm0KekR3dXVsdHY0aGUhWTw4MmxWa1JKamloSlJ0VHYwMCZjNm50eHhGPSlBTTEwd0Nh
Yz1vO3J6WUJHdn5TY1FwcDRTCnp6OEwhazReUGh7eXN8bVZSNUpUJVBtSWt7Zj9gfXlrTGpoT1RJ
UXQxNVByPTIrRiE/TzU/bSRvQUU/ZUpgfWR7Qwp6cHROZz9lQWoybV9TWSVYdUZNVFFJSXQtNHMj
bHhrQlV+eSpAMGtNZnQrcSU7aiYwbSNrdWIpNEkkZSghQHsrKlMKem9pZWZ+YilBeE1UbDY7dHB4
NzwlVSpBfnJCQ0k2fWZ9NFYrJmllbyMweVF1bSk7KVhITE1SRGJ6TGx7aTtRQCQpCnpjRzZmbE84
YEA9YyVtK2NQYGlzeGc4WjNIUnU/Rj9oQz9aN1grcV4tTEc0dX5AYVEjX3I9P0ImeShZOGFoKjZy
WQp6biM7cFpMP2ZkWEsqKWVkaXx0M3ZHTG1aOFg5eyRRTH5MbmBMUzB6MXpLI15XNmV0MHQ2czBW
NVVSU2dYd2QkPGoKem1kUk5STyZrb0NpWmBEbGIwJSZSQjRaPXJCUXp6a20oaTd0b0VtMjglb2Nt
V3dyd2x2bFc3eW5VaHU2XldjfFdaCnpsblFnT1Q8SG94TFpaakpPVkQ3SHJ4TSY1S0lqPiUjdkhS
c0h9RHNPU1l3TFVZUU0tS3lEdHM2Kl9YfWB5SXdabwp6ZFVDRXdmbVEpKGFfUH5AVDtzd1lRY0o1
Mjh8IWsyZ09tOGA5OzxNb2huYCFANiVacCg2ZlNeSlZBc2x4X187NlUKelQhPDg/QCFNUGxpe1Y3
RnFQKnZQdVk4MEtGbTFxQ01AWmA3WTlGdm9oSmslQjZxdEdrKnRfbTF6YXtKbDdGd2FfCnooKG89
MmlqJX0/PnopRXwhJGQ7TG9RSFV0VCMtbTVoeCFzPjh6aFYqPXFaNDtPI3NtfUpZSCFKU3pCS1o1
bGo+Ygp6OE9BUXZ5YSlwUnc5WCpOSENVUWNgNEdAYnUlQX0zbEhFfGlMZlpgUCEqSCNNZCVIYHFJ
NnpTMHJNLSg9eyhITUwKel91VXhCZz9AKjhSSGZTbGxxfEgyYDBjPEh2Y3ppQl5JbmsmP2d4JThM
c2M+JURkTUpPOU43aXFuTDwjMVVEKyg1Cno/SzZ2dV56TCMzMXZvQHUwe2RsNmhWKjAzJiRDbiN3
b1BRQHVIUVh8Y312TzFne01xST5PPGVYPHpganJATiM/Kgp6PGMxfGNHNlo1Nl51SWJjcz5IRmNE
Q35PSm1eYXsoQndAcEhITmxWVysyfjw9KilCaWAzZEhLcjhvdGV6bDlBNnEKeihAPDhlZjJybTtW
dnVmQWdOYnImX3ktfjNyaUEmI21USDVvZiY+JCU0e3gpdExfVH4mSk9QZXhMWVRRVzBCOU1yCnpB
P2tpMDxATkUlRmRpOUVGSStFI09eJiRQM2NDKDtPbShtSC1RTnFOXyt9N0JXQWFJQUk2Nj1PJCpT
b1Q1VE0jbQp6JlExVjVfJEBed0J0QCFDeyYtSj1oTT5QUmxvNUUwOzF1VGUzTSE1RmU3JjE1RnlQ
ODNYPFlGQkYxei0zUWEzS3MKejw1TzghPTNMMW1iWlI7SE80I3x7TE5US3BgTUkzcDAyK1JUR09i
ZEl1aC1ZMnFNPlJ6KUpmUD0mQn1HOz0xX2BoCnpRN1AhZTdEOzBEXlhKJDVPS3h1QmV2Mkphcjs0
T0crZ3w/Vk54RCU1JmNSe3MhVDBBY2chNXA0YCQ2TnpZNGN+LQp6dihNfTUoN1Uxdy0zI2wmbkRh
SjRXNHRmfHIrdWBSWVFIIVBkSmYoPTRDcG1XJlEhXkpNUndTUlFkTF57b2puPDkKelV0cGxgUlo9
MCErZFJ7VENPO3Y3bnYlMW1Ud0tWTE1NbDwtaXAhcE08eF8oYiFEQCNSMnB5fWFzcXliRXhESDtY
CnpqPF9VdGlwLUtaUFB5aGJieWhOM14+cTRDbChDY09IN0I+QFBsKVkqRkI4cGpOLWVYbWJ7VmQo
bjkwRFg9M0lFTwp6RlFRQFJVdVl3UFUzWkZhX1JAJVlvSDhZTGh2bGtqSHEoUHFrVXJxVFRDR303
TEZ+eUw5aipXfk0pKFojeG95ZFoKemNNaD4/JUlAJG11Wk1JVWMpazJhcyhvaVlUQDYpeXFaUTtt
dXEjPz16VylNfitENkBkO1V3ZFFEJk1CIWJwK3k5CnolQzZBUTIhITVPI187biQ5bEVhN25nOT1h
YXB9PWtZN2x1cVkkPWIrNDE3NzgjbEd3e2FiaDIjYlZOdDlgXz9+LQp6b2ReIVpiZ3RyZCsmIUBU
M0UqdStsbD5aeCtNWW5Xa2pKUDFMbmxVbDtWcnsmPXtlcnxJV3VWR3ZgKyp1NyNjKX4KenhYfmFm
ZmhPIU07K0YjRWE/MX1EREktKypYSFElQnVhYmx6Oz9aUVlvS0d0dHRhb2xzNTspU0A3bnBXVHFO
OE5PCnp7dUNoV1dvU2Ylc0YzKiZWUGg0dUJsSmg7Un01JEl4JnZidjJSZG4xM3p4OEAyR2Jub2Zw
KFlZWmJBOzs0QTtoawp6XlcjPDVfUmFtdUI9RFc4LSR1Q0hhTk0/ZXM3T2VYS2Vka3ElPVVgMDJu
TUdsUWdVNj9iKjFnekp7dnI7SVJLUDwKelBYVWF3Y0UzcH1GZE1nU0E3bmBwRihMU0UwPCt3SGV9
XnJ9Y1EmJiNUXy1aZDRvSVRoO0hfNnNNZHtqIVJVbCl9CnpJKFdrO2x6QGBiT30jTEl0RCg5Q3Rp
P2xVcS1BQVFmdD8zNmpKciZrN0ZtPHZQRDs+PkxDdDBMJTUhLTNqRkFLTwp6d251filrfT0pYWJV
REU2ITtvPDBQNkl9KEt1bU5GJUBYTnpNRFkyZTtIS2hjNitjJGlTVVlHJEBLdTdSXmtfK1QKejRg
eGI3Q3UkfSNaWXtIVHdaI3IwQlg2KjF3TmBHO1d+WWtxei1NQXklKkVTMlBoZDZgO1ZXY2xOeWE9
NWE0JFlTCnpVTCkrZzYrcjVqTT0mSUpKfiRWcUxReWtmXkt3PVJwYDZgVHkpRFVvXl8lO2pDSD53
SSZMZCtGX09AMmNZMD80fQp6clkxdmZFI2x5YlokVVZvIz5ZUHprYU95UEpUTUJBQ1I9Q2hVblU5
QUlpT1IwaW48eTFVbmVDSzxnZThgYn5lfCUKejA2bjFQeihpPWdAbX54X0U/bG4ran19NykleEl4
fnctP0ljaVpmbnxnWDloPDx6K0g+NVkoPngwTCUhJS08M35MCnorNH5tb1JHN2hCUVVDJDkyQE5E
RjBPVDQwQ1pFdWwmaiF6RnNCTHZYQ3Q8diY5P0hlQTFTPzxhRiVmU34/Yk1NTAp6I2Q7aElee2A+
cnNvcFdsYDghO0M4dU8zIXdlUDNjam4pVCYmfUJURWs9QUE5PD1rY1paM0AmMyswcjJMYjFtX2wK
enJoLV90Oy1JeUk9bERzPyMtQXhJbn1CajBlZ1poeDh6LTNZR3pDM09Zb2JFSzFsY3xzNkI5R3V4
VnVmR2RIPTJtCnolSExocjE/YiFhYEdMZGVBQTw/b3d1RE8xSHI4MF5HRT5SODA3ZTkhTlpJRDBp
Sz4wV21GfjhNZnJrR25UMDFeYwp6MVJ2UCk0IVhqZnpJbFRkLVJ+SFhuZCNLMS1kSF5ER2cxQ1Ao
VUtKVXkzKmhMKTBfWmJrbSVNe209R0FQPXBtR1QKemNDcXloUn50NzFiSGQ+dS19STZNMD5MZktf
JTZXNnpvd2N9N0IjPiVwOyhmXjleMGJLPkM/YzhrRiR5KDw+ZVJMCnpCbWVVWjs2UWdGYTd8IWBf
NTc+UklRI3RTUm4yZURlZkRRLS1tdVJiUDYoT3VwMCZRJWN4cWp+WmF6X3FZSXhRPgp6ZVltJUx0
eXdLQTtUeSZQblpCU2Z2MkxuZXRJMSNHI3ded3lLKzs1SE5Ud2x8OEcrbGBTUnFsVEo1bkZEcFok
I2AKenNqbTU4ekRQKEV2Z3hGRExZJVQlMkBvc0ckUTV5TUB5WjI7PUx9bzB3THlPT1pncFVVRjUz
c2FpWkVaKWErYk07CnpBMldwTWBOKUIoY19fU18oenc9dzFjZU55RXBZR2RUdkhoUVBldFF5QUJ8
Mj15NVpeWSR2R0dHV0w3eihoTWtKPwp6S1h9LTlnMnJoWlZKc294MCEwRkNEcm4oeHI7RVpxRzBi
JUhsVjswPipxa297eDF1Tn5YK1BhTHZeeXpCUkRoSEsKelZ2I3VMTShJTTEwR3ZXYzhpQmI1WHY0
JC1ja3J2QipZPzg5MThPSCM8ZiopP0M1SmpBc2o0dEAhPz9YJmhTKzN+CnpHYEkjaFJxV2xrIUMm
YFFDSEdjMCN2KyZjaWw7SUdlTHo4S2J9elJuRSZaYXFQVHlZQSY/U0YjK1RLa3syQ1JlKgp6enw2
ND1pUWFgOFhJUjQ5T0dLamFicTBPb1AmWH1pMXx8ZW81Q01iR0pgPlJAU241c19aYnlTZG8mRHRI
KkdufUYKemJyVW5NMks8M0JVcXp4WWhNU0Jjb05TR0UtPSkpVmR0UH1YUU12dlRWKDZMYVg/WnxH
U2FPdXRwenpjLUd6cVJGCnowZm1XPXs7MHQ8Uih7Mkc5byR5dUwyazNGaj49anwkaDt1Uzwxck87
ZDNhVGotN3BUQGdWfDZVKmRWJlMrOWRiTwp6dm9ySmFyfDBGY3xBPTdMY1ZWeyRlOHdMI0FrP192
U2Z2Zjx4eztrcEliSSV+SlIqSC01UCQxfmUzRzJZRmdXX0UKenc5MGxFaHByXkp3X1U2OXhYSVZG
SHF8WiYtR2YyeVZBXip8fEsrJkFhK35+RW0+S3MhYHFaR0Q5X01eZG9FSnpoCnp1JkJFfG8/cGMh
WGBZfXxUfkh2UHZBZmBjUS1WUC1YaCp6ZExyNXskJnxidUNST0dOZVVRRF52ZEppYEJnNmB2TAp6
X1V0JDhtdmdJKWk5KTd4a2FPVjUhdW5vYmlLa3x4Y1NaTT4+KzlOa0UzTUkpKzxKd2YzPzE/Wnhs
djkyNmNwKlcKem96QHdjMkdjeylKM25BRHc1UzdQVlpRNn1YRk05MT1nIVBlTTRsVjxZbUdhVCtJ
d2w9UlJfXjZLNlN4WTdaK35ICno/N3luQ01NdkV3d2VYUk1TNVlMRTJvd3N7Q0dpQyFCX2tAb25k
SS1CcDNhKH5oJit5dlh+LTcrLTs7YGU7dSF5Xwp6fEZWaXg/P0JxS1RKeFhkWTtaTU9fIWdtUnND
PyVqO19KOVRJMmQ9dGUoN0hBaUFYall7dEVGez1nKGghe08hTHkKejd8KmNydzclX055dVFpIUhZ
PkgxQHNnb3ZPdyNtXlNxMUV5UkA9QVZDfl5ZcFVxWmxNckFed29CZ3ZmVnk4Mn00CnpAMU1UcWto
dX5mWjFAZnRXRHBJO3BySX5ANE8zMjQ5OXF3JlRAdGFJbylRUXJJeWc5KG53bDAzXj5yeXNeKGlF
eAp6NTt2NmBCVj03N1dUQjNmVTsxPHloQ1lwZERtR3RPWlYtSlBxOz8tViRZNlUtPnQ1NnYlUT5+
THJ+KX08NW9JeUsKekNjZXNCbFhMVTRqeUBTU2kmPlM9ZUdSKEtXaT50Ql9zcGRKMyZ0NXwxK05W
I182SmE3bE1sfDZCb0dXWmVeS2NeCnpqNDxSbFdgWGc8UC1sSFlPXzc2N1NBTXhEbEVzYFI7Qlk4
I21pZy1mIVZyQzdTbH0heUR3LUM1I3FjQFZzdWdoKwp6NkA0ZyYoeT04bzxsdWBudXRuTiNaJjhg
P1pFcHojbDtLYjAkKHtZQCFuMzY8Z21CcC1PdUpqNmRkYStNJS1QTEcKekBvT3Z5blk/I18oTDQ3
ODFVKCFWR1lhUERifl8/RHFOWXg1a19kN3xtZGMmM1ZENjttb35kLTVpMkFJZXUxYDFXCnpfeGgl
TGEhTjJ1XnMjVHdRTispZyhpU3I2U054UjwmfXlzcl9IZS08TCEwY0AmNFluRiRlWG9LenJIZChA
TXx1Kwp6aVAoSVY4cWMyKFpJZCMtZXFfRjxRM1l+PGxKK2k4TSZZUzRnYDhRVlZuM1V5Wj55N3B5
NTRqMmhFN3MkKS1pa2MKemZQSyN6NHwrZV53a2o2bjRMcEQ3UyFpbG0qODc3N0g4JjYkZDVDQDRt
NkBCdipKdkBzeV8oYGh7PWw5ezE1UW13Cno0Nys1Y0ZOIShrSV9Zdm11U002Yzw7QnM0Qj5tKHJy
VkN8JFQ2VUk1QDAzTXBYPDA3ZUNaPSY0XkQ7PmhMJUVYOAp6dzkkZTU5OHZNPk5wK2dpYXh6fFlF
RitxMmQySkRgezNORFdJWFJoZlo5NkF0YEBDKl5sSHNSXjhHWnZNMWdzWnoKekMkallPUFZGLSkm
MlFkXiplTG43MEtTO1Z7eSpjdSVUd0p6cjdTcDlefXVkViYoRFVYV0s/RVdWdCNnVCpJelN5Cnps
KmM/QW57fipYNXhvUGF0IXJvSlhBez11NlVKVFQoeWlQem5rRk1lTExsUzBRS2ZLPWY8PEgmJnFh
IXs2djlCZwp6QW9mZWhWR3t4U25VKDRJe05uODVpUlVxdSpefkVYYnF4PD5HTHFLKkVCMW5aI3J8
ZUxZb3xIOD9MS3E+Kk5hWksKekVqYDFwS1ZHako3fShYPCl0NWFiP3U+R0VYa2BFWGRCKjEqNTw2
R0I8Kyl2cyNsQjlrb2laNDlrdT9tYGk8Q0tWCno0cjludSg1KjRvPEI+bkpwYkxlJEZnR0FKdVh1
aG4qMTFNeWNLVURHdDlpZihOJHg1P3V1VTwxcCgrPV5WSEJNIQp6Skg/SCNIJXJeKzs5Z1NjIWdM
WmhGcnU/SHhTP3hvU2t8OV9NcjYxZVZoPzRyTmgoTEB4OWNTSHtoN3pHbGxSOWUKek9pO0YwNE1p
QWh6Tj5lJCk7e0Z2bVp0P1ZWQkc3VWliKTNHclRsPVlhRVZiYjF9RlhKVi1zdSg+aUslfSE/QX4w
Cno1VkttYTF+K0xSTk9tbGlPeDkwdE9IIyh5PVNqVXVRYTFnZ1VSam47KHdjNmwkcyZSZXBYMWhX
R09UMENATVJQXwp6ZkV3JTtCKWQzbjR7Sk41Z3ZifkNCYyZiZTl2Sm5UNDVXeU5QS29fR2cqdmxA
TXtoVmsoQUx1WHZ9XjwyZzchTGwKejJQYWVpJmU8XjkrK2BLYT59PFJkK2o0NHQqM1glckt1UCZk
dzRKbTQ7dHM3MShnWkB3QUZtWH1DZ0l8MkAwfEZ5CnplfkBnSj4hcChZZDNTIVd1R05Jfjt0dlRy
ZTZFNTZJcml4MjFCbTZETEtnY0ZVITQ0KGFnZGV2NHV1M15CdW5wTAp6TV88PWJiek9JVF9xbl4+
bFBAUTtQb2ctaEJASjF0ODh+KnhfJSRPRDhETEt1YkptN0Boa0RvTGtkYyMtdGc+ZloKelEhOEw3
XkkqMFJVPzs+dkB8IVlETnZTZ1YtQl5ibDhzTjYmeXRxNUVtOTtCMT55WHxAXiFmSXJNSmM4dmRo
Pk9FCnpjTCVrWXhPNGhxYG93eCMqMEdQKnJ2UGswb2dtdnkyZGg0R2hZQTF1dittfnxMSXdzPjdO
eztYPkh+JUx3I0AxZwp6JDNKakNPV0duZ3ZPOW1xeW1LSGA1d0FHVlE7ekojKyM4bzFeMkwlbnVL
a2d9Jjs7QF92UiM7e2JKLVhEbyZPSFcKekg0ayh7MH58U1duTztVclVhd3E5RXkheyNSVWpnK2ol
ODV+OHdyfHdpPXZhMFJUY2hoM2IyI3hPfEdSP1pPXmk8CnpHUz5WaGZPSHAhM312QTxWRTZVWEti
TzxiKCQ4SSglQ3pscnxGTUN7d181fSQ2cmchJmhxKH5zU1hqZmotNnx3SQp6bTcwK1dsM0s7YkdZ
RGxIcntZdFZidnhyQCF7Qn5AV2loZmZ6ITdvZVhyTSR5ZjdXZzhzfSQmIVJyfGxsZiElXisKekg+
Sn5RWkI8P2ZiRzFLR3k2NWUmKz4rOFZiek9ydDxvPFROPCoqbFZkRldWVCUhXk9VJlBjSUh6U0dz
K1UkKnRLCno+KiFMPzZXPntLbXQzeUVka3lxd0VHZk9+YjRhWFhrVVk0IyNKfnxIeXJQbjwqOWsk
aFZSJWROY2AyWnkkJiM8cAp6PWlPMCU5VCpNa148LTc7e0BuWnk4RnZ2eG5HbytnSFVFUGReTTVw
Vnt4NSNkKEpyVmQtPXgkWTIrMj5IKldZNzIKekpsO0gmNXdsYGlHd3NvWW1jSUtVQzl0YyVwR1JH
bnVqI3R8XjsjSUxpI18/PlY2dUdwQmt7NGxTe1UzOEcpOyhDCnowNnA1LUpqQ31iKl8ofHFNKmxj
VnxDYXwmfEY/RDtBNzlUakdhfGFYeURnS3xadzlDeEpVaHU5Tk19RTBLYHwhdQp6WHcyYzZGaEhL
WClLTzRWPlF+clB6UGg1QGBOQ1VJJGx2Z3lWV3ZeODNGcSNUYTJhPTI+Wlh0KGIhWSF1b2FuQVoK
eko+MDlUdGpybztvYkJGTD48KVJxPUdEdlJHfGNBfGsmQHdhY2BZVEkzKDZET1l2cXpEYGY5TSF5
OyFYdFBvMFdBCnpFSHVSKDgxVWA5aW0/O0ZsUT4pSHk3emkoNTQ0IW90MVd8dTJldy00SntRJmhx
clNBZzwhTnxPX2ZNe3M4ejh2Owp6KlpNU0M3MmZpSFRVZVB8cFNQWCplXkgrIT5jO1dPeFF1XlM9
bEA2NWBDblo4fEd4Y1N6VUs0YUFDbXRUTUUoZlgKelg9KUBEbmxBaU4mKk44OGYxNDMtP249UFdW
NXstWmNtN2o0e0AqQTZXIUNjVmtvLUYmZT1EekRUJlRuQyFWYENJClRQUWY0R0F1ZyRGfEMwQiEj
cUl3RUB9Z2VpCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg3OGQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK1RoZXJlIHNob3VsZCBiZSBvbmUgYmlnIHNxdWFyZSBiZWxvdyBjb250YWluaW5n
IGZvdXIgc3F1YXJlcy4gVG9wIGxlZnQgc3F1YXJlIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAzIHJv
d3Mgb2YgMyBjaXJjbGVzLiBUb3AgcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjb2x1bW4g
b2YgMyBjaXJjbGVzLiBUaGUgYm90dG9tIGxlZnQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSByb3cg
d2l0aCB0aHJlZSBjaXJjbGVzLiBUaGUgYm90dG9tIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2ZSBv
bmUgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbCBiL0xheW91dFRlc3RzL3N2
Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmM3M2NlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9j
YW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisgPGhlYWQ+CisgIDx0aXRsZT5jcmVhdGVQYXR0ZXJu
IHJlcGVhdCB0ZXN0PC90aXRsZT4KKyAgPHN0eWxlPiBjYW52YXMgeyBib3JkZXI6c29saWQgIzAw
MCB9IDwvc3R5bGU+CisgIDxzY3JpcHQ+CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgIH0KKyAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeworICAgIHZhciBp
ID0gbmV3IEltYWdlKCk7CisgICAgaS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNTAnIGhlaWdodD0nNTAnPjxj
aXJjbGUgY3g9JzEwJyBjeT0nMTAnIHI9JzEwJyBmaWxsPSdncmVlbicgLz48L3N2Zz4iOworICAg
IGkub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdLmdldENvbnRleHQoJzJkJyk7CisgICAgICB2YXIg
cDsKKyAgICAKKyAgICAgIC8vY3R4LnN0cm9rZVdpZHRoKDEuMCk7CisgICAgICBwID0gY3R4LmNy
ZWF0ZVBhdHRlcm4oaSwgInJlcGVhdCIpOworICAgICAgY3R4LmZpbGxTdHlsZSA9IHA7CisgICAg
ICBjdHgudHJhbnNsYXRlKDEwLCAxMCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAs
IDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgIAorICAgICAg
cHggPSBjdHguY3JlYXRlUGF0dGVybihpLCAicmVwZWF0LXgiKTsKKyAgICAgIGN0eC5maWxsU3R5
bGUgPSBweDsKKyAgICAgIGN0eC50cmFuc2xhdGUoMCwgMTYwKTsKKyAgICAgIGN0eC5zdHJva2VS
ZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7
CisgICAgCisgICAgICBwbiA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJuby1yZXBlYXQiKTsKKyAg
ICAgIGN0eC5maWxsU3R5bGUgPSBwbjsKKyAgICAgIGN0eC50cmFuc2xhdGUoMTYwLCAwKTsKKyAg
ICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgw
LCAwLCAxNTAsIDE1MCk7CisgICAgCisgICAgICBweSA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJy
ZXBlYXQteSIpOworICAgICAgY3R4LmZpbGxTdHlsZSA9IHB5OworICAgICAgY3R4LnRyYW5zbGF0
ZSgwLCAtMTYwKTsKKyAgICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAg
IGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICAKKyAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICB9
CisgICB9CisgIDwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgPHA+VGhlcmUgc2hvdWxk
IGJlIG9uZSBiaWcgc3F1YXJlIGJlbG93IGNvbnRhaW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVm
dCBzcXVhcmUgc2hvdWxkIGJlIGZpbGxlZCB3aXRoIDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCBy
aWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNvbHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0
b20gbGVmdCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRo
ZSBib3R0b20gcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1s
ZWZ0IGNvcm5lci48L3A+CisgIDxwPjxjYW52YXMgaGVpZ2h0PSIzMzAiIHdpZHRoPSIzMzAiPjwv
Y2FudmFzPjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1ZWExZS4uZWY3
MGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMy0wMy0yOCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lv
bihyMTQyNzY1KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgYW5kIFNWRyBjYW52YXMgZHJhd2lu
ZyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBhIE5hdGl2ZUltYWdlUGFzc1B0ciB0eXBlZGVmIHRoYXQgaXMgdXNl
ZCBpbiBwbGFjZSBvZiBOYXRpdmVJbWFnZVB0cgorICAgICAgICBmb3IgbWV0aG9kIGFyZ3VtZW50
cyBhbmQgcmV0dXJuIHZhbHVlcy4gVGhpcyBpcyBuZWVkZWQgYXMgU2tpYSBub3cgbWFwcworICAg
ICAgICBOYXRpdmVJbWFnZVB0ciB0byBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBhbmQgTmF0aXZl
SW1hZ2VQYXNzUHRyIHRvCisgICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPi4gV2Ug
bW92ZSB0b3dhcmRzIHJlZiBjb3VudGVkIHNtYXJ0IHBvaW50ZXJzIHNvIHRoYXQKKyAgICAgICAg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgY2FuIHRyYW5zZmVyIG93bmVy
c2hpcCBvZiB0aGUgbmF0aXZlCisgICAgICAgIGltYWdlIHRvIHRoZSBjYWxsZXIgaWYgbmVlZGVk
IChlLmcuIGZvciBTVkdJbWFnZSkuCisKKyAgICAgICAgUHJvdmlkZSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIGltcGxlbWVudGF0aW9uIGZvciBTVkdJbWFnZS4gU1ZHSW1hZ2Ugbm8KKyAg
ICAgICAgbG9uZ2VyIGhvbGRzIHRoZSBuYXRpdmUgaW1hZ2UgaW50ZXJuYWxseSwgdG8gc2F2ZSBt
ZW1vcnkuIEl0IGlzIHRoZXJlZm9yZSBjcmVhdGVkCisgICAgICAgIHdoZW4gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSBpcyBjYWxsZWQgYW5kIG93bmVyc2hpcCBpcyBwYXNzZWQgdG8gdGhl
CisgICAgICAgIGNhbGxlci4gRm9yIG5vdywgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBvbmx5IGVu
YWJsZWQgZm9yIFNraWEgYXMgb3RoZXJzIGFyZSB1c2luZworICAgICAgICByYXcgcG9pbnRlcnMg
Zm9yIE5hdGl2ZUltYWdlUGFzc1B0ci4KKworICAgICAgICBUZXN0OiBzdmcvY2FudmFzL2NhbnZh
cy1wYXR0ZXJuLXN2Zy5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUlj
b25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAg
ICAgICAgKEljb25EYXRhYmFzZSk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlQmFzZTo6c3luY2hyb25vdXNO
YXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0lt
YWdlQ2hyb21pdW1Ta2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0
ZSk6CisgICAgICAgIChCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFnZUV4
dHJhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKEltYWdlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVCbGVuZFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZv
cm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbG9yTWF0cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4Ojpw
bGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29t
cG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L1N0aWxsSW1hZ2VRdC5oOgorICAgICAgICAoU3RpbGxJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhOjpkZWNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0
cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRp
dmVJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpOYXRp
dmVJbWFnZVNraWEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUpOgorICAgICAgICAoTmF0aXZlSW1h
Z2VTa2lhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y2xvbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoSW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lOjpnZXRBZGRyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNl
dFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmdldFNrQml0bWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmhlaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
b3BlbnZnL0ltYWdlRGVjb2Rlck9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldEhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFN0YXR1cyk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaDoKKwogMjAxMy0wMy0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSBSZXNvdXJj
ZVNjcmlwdEZpbGUgc28gdGhhdCBpdCBzdG9yZXMgaGFzRGl2ZXJnZWQgc3RhdGUgaW4gaXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCAzY2IxMzk2
Li5mMmI4YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHAKQEAgLTI5OSw3ICsyOTksNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0lj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVy
biBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFi
YXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQorTmF0aXZlSW1hZ2VQYXNzUHRyIEljb25E
YXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBh
Z2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBJbWFnZSogaWNvbiA9
IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTE9yaWdpbmFsLCBzaXplKTsKICAgICBp
ZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCmluZGV4
IDBhNzI0MjIuLmQ2MzNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SWNv
blVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkwpOwogCiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJik7Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBz
eW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdp
bmFsLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgc3lu
Y2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5h
bCwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVS
TEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9ub3Vz
SWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBJY29u
TG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJp
bmcmLCBEb2N1bWVudExvYWRlciopOyAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwNDBmYzQ3Li4yNDNlZGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCkBAIC0xNzksNyArMTc5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJ
Y29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29u
TG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJp
bmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFs
IEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IElu
dFNpemUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJv
bm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgc3luY2hyb25vdXNO
YXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1
cm4gMDsgfQogCiAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIHdlIHNob3VsZCB1c2UgdG8gcmVw
bGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcApp
bmRleCAxYjBkOTJhLi5iNjhkNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHAKQEAgLTEwNSw3ICsx
MDUsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFn
ZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1h
cCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFw
KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggMDdmYTlhOS4uMTMzZmJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2Fy
ZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0
ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVy
KTsKICAgICBBU1NFUlQoaW1hZ2UpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgYml0bWFwID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGNmNDMwNzMuLjEzZGM1ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
QEAgLTI5OSw3ICsyOTksNyBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVk
KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitOYXRpdmVJbWFnZVBhc3NQdHIg
Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMjAsNyArMzIw
LDcgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRl
eCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJ
bWFnZVBhc3NQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsK
ICAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDY2NGVlMmEuLjEx
YTBmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIEJpdG1hcEltYWdlIDogcHVibGljIEltYWdl
IHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
aXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2Uo
bmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTc3LDcgKzE3Nyw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKTsKICNlbmRp
ZgogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFt
ZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyArMTk5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgQ2Vy
dGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4K
ICAgICB9OwogCi0gICAgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIq
ID0gMCk7CisgICAgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQYXNzUHRyLCBJbWFnZU9ic2VydmVy
KiA9IDApOwogICAgIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CiAjaWYgUExBVEZP
Uk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmKTsKQEAgLTIxOSw3ICsyMjAs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50RnJhbWU7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7Ci0g
ICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgTmF0aXZlSW1hZ2VQ
YXNzUHRyIGZyYW1lQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA1YmM4ODgxLi43
N2I0ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMjczLDcgKzI3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgICAgIHZvaWQgZHJhd1BhdGgoY29u
c3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAg
ICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQYXNzUHRyLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1h
Z2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgICAgICAvLyBB
bGxvdyBmb250IHNtb290aGluZyAoTENEIGFudGlhbGlhc2luZykuIE5vdCBwYXJ0IG9mIHRoZSBn
cmFwaGljcyBzdGF0ZS4KICAgICAgICAgdm9pZCBzZXRBbGxvd3NGb250U21vb3RoaW5nKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC05MjMsOCArOTIz
LDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEp
Ci0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAg
IE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1f
c2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNv
ZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDYzNzY0M2QuLmY2YmUx
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91
bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJl
dHVybiAwOyB9CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEFjY2Vzc29ycyBmb3Ig
bmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZTRlNWQ0Li43NmVjNmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEzMiw3ICsxMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKLSAgICAg
ICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlKSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQYXNzUHRyIGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CiAjZW5k
aWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uZWM2ZGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHNp
emVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rl
ciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitOYXRpdmVJbWFnZVBh
c3NQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAg
ICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNjZhOGEwYS4uNGJlODAyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBOYXRpdmVJbWFnZVBhc3NQdHIgY3JlYXRlRnJh
bWVBdEluZGV4KHNpemVfdCk7CiAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBv
ciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKaW5kZXggMWFkNWJlOS4u
NTg3MWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZVB0ci5oCkBAIC01Niw2ICs1Niw4IEBAIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IE5hdGl2ZUltYWdlUHRyIGFuZCBOYXRp
dmVJbWFnZVBhc3NQdHIgc2hvdWxkIGJlIHNtYXJ0CisvLyBwb2ludGVycyAoc2VlIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0UoQ0cpCiB0eXBlZGVmIENH
SW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBQTEFURk9STShRVCkKQEAgLTcyLDcgKzc0
LDggQEAgdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8p
CiB0eXBlZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fpcm8qIE5hdGl2ZUltYWdlUHRyOwogI2Vs
aWYgVVNFKFNLSUEpCi10eXBlZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYSogTmF0aXZlSW1h
Z2VQdHI7Cit0eXBlZGVmIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IE5hdGl2ZUltYWdlUHRyOwor
dHlwZWRlZiBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gTmF0aXZlSW1hZ2VQYXNzUHRyOwog
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBOYXRpdmVJbWFnZVNraWEqLCBXVEY6Ok1lbW9y
eU9iamVjdEluZm8qKTsKICNlbGlmIE9TKFdJTkNFKQogdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKQEAgLTgwLDYgKzgzLDEwIEBAIHR5cGVkZWYgUmVmUHRyPFNo
YXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiB0eXBlZGVmIHZvaWQqIE5hdGl2ZUltYWdlUHRy
OwogI2VuZGlmCiAKKyNpZiAhVVNFKFNLSUEpCit0eXBlZGVmIE5hdGl2ZUltYWdlUHRyIE5hdGl2
ZUltYWdlUGFzc1B0cjsKKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNr
QmVycnkuY3BwCmluZGV4IGIxMDVkNWEuLjIxZjhmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW1hZ2VCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tC
ZXJyeS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIGltZy5yZWxlYXNl
KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAogewogICAgIHJldHVybiBuZXcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpU
aWxlZEltYWdlKG1fc2l6ZSwgbV9ieXRlcyk7CiB9CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgRnJh
bWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUlt
YWdlUGFzc1B0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJ
bWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGU0ZGM4OTUuLmI4NWJhOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBs
YXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRv
QmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUGFzc1B0ciBpbWFnZVB0ciwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggZTU3MzczMi4uOWM5M2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgp
CiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
KSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgQ0dJbWFnZVJlZiBp
bWFnZSA9IDA7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIwM2QxOWUuLjNlNmFj
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNDg3LDcgKzQ4
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1JlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+
IG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSA6IDA7CiAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgewogICAgICAgICAgICAgbV9pbWFn
ZUxheWVyID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQo
KS0+Y3JlYXRlSW1hZ2VMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCmluZGV4IDY0
ZTUzNTguLjJlOWQ4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcApAQCAtNzIsOCArNzIs
OCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBSZWZQdHI8SW1hZ2U+
IGZvcmVncm91bmQgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gYmFja2dyb3VuZCA9IGluMi0+YXNJbWFnZUJ1
ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCi0gICAgTmF0aXZlSW1h
Z2VTa2lhKiBmb3JlZ3JvdW5kTmF0aXZlSW1hZ2UgPSBmb3JlZ3JvdW5kLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogYmFja2dyb3VuZE5hdGl2ZUlt
YWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3JlZ3JvdW5kTmF0aXZlSW1hZ2UgPSBmb3JlZ3JvdW5kLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+
IGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAKICAgICBpZiAoIWZvcmVncm91bmROYXRpdmVJbWFnZSB8fCAhYmFja2dyb3Vu
ZE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29s
b3JNYXRyaXhTa2lhLmNwcAppbmRleCAzMjI4Y2Q4Li4yOTE5ZDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIEZFQ29sb3JN
YXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRl
cj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwCmluZGV4IGIwZjgw
Y2UuLjRhNDBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJT
a2lhLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRm
b3JtQXBwbHlTa2lhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFu
YXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RURpc3BsYWNlbWVudE1hcFNraWEuY3BwCmluZGV4IDIyZjFiNzMuLjFiZTQ1NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3Bs
YWNlbWVudE1hcFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwCkBAIC03MSw4ICs3MSw4IEBA
IGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBSZWZQdHI8
SW1hZ2U+IGNvbG9yID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGRpc3BsID0gaW4yLT5hc0ltYWdlQnVmZmVy
KCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAgICBOYXRpdmVJbWFnZVNr
aWEqIGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIGRpc3BsTmF0aXZlSW1hZ2UgPSBkaXNwbC0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjb2xv
ck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZGlzcGxOYXRpdmVJbWFnZSA9IGRpc3BsLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYgKCFjb2xvck5hdGl2ZUltYWdlIHx8ICFk
aXNwbE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGln
aHRpbmdTa2lhLmNwcAppbmRleCBkNzA4N2Q0Li4zYTBiNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxp
Z2h0aW5nU2tpYS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9y
bUFwcGx5U2tpYSgpCiAgICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CiAK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcAppbmRleCBhN2Q5Zjc1Li43NzcyOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0yNjQsNyAr
MjY0LDcgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJQb2ludGVycygpCiAgICAgbV9idWZm
ZXIuY2xlYXIoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CiB7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0OwogICAgIGlmIChtX2hh
c0FscGhhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
U3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHAKaW5kZXggMGY0MDdjMS4uZGM4Y2FiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCkBAIC02Miw5
ICs2Miw5IEBAIEludFNpemUgU3RpbGxJbWFnZTo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIElu
dFNpemUobV9waXhtYXAtPndpZHRoKCksIG1fcGl4bWFwLT5oZWlnaHQoKSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2
ZUltYWdlUGFzc1B0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7
Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TmF0aXZlSW1hZ2VQdHI+KG1fcGl4bWFwKTsKKyAgICBy
ZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZVBhc3NQdHI+KG1fcGl4bWFwKTsKIH0KIAogdm9p
ZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5oCmluZGV4IDUwNWIxOTAuLmQ0MjQwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCkBAIC01Miw3ICs1Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgp
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lh
LmNwcAppbmRleCBmYjY2MTU1Li4yNjA5OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmNwcApAQCAtMTEsMTIgKzExLDEyIEBAIGJvb2wgQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWE6OmlzQml0bWFwSW1hZ2UoKSBjb25zdAogCiBib29sIEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVybiBt
X25hdGl2ZUltYWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLmlzT3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWE6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1h
Z2UuYml0bWFwKCkud2lkdGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSk7Cisg
ICAgcmV0dXJuIEludFNpemUobV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbV9uYXRp
dmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogfQogCiAvLyBEbyBub3RoaW5nLCBhcyB3ZSBv
bmx5IGhhdmUgdGhlIG9uZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhIChkZWNvZGVkKS4KQEAgLTI3
LDE5ICsyNywxOSBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6ZGVjb2RlZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX25hdGl2ZUltYWdl
LmRlY29kZWRTaXplKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmRlY29kZWRTaXplKCk7
CiB9CiAKIC8vIFdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBmcmFtZS4KLU5hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitQ
YXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4gJm1fbmF0aXZlSW1hZ2U7
CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBi
b29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpub3RTb2xpZENvbG9yKCkKIHsKLSAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS53aWR0aCgpICE9IDEgfHwgbV9uYXRpdmVJbWFn
ZS5iaXRtYXAoKS5oZWlnaHQoKSAhPSAxOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5iaXRt
YXAoKS53aWR0aCgpICE9IDEgfHwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkgIT0g
MTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKaW5kZXgg
NTZlYmUzYS4uMzQxOGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaApA
QCAtNDIsOCArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBvYnNlcnZlcnMsIGFuaW1h
dGlvbiwgbXVsdGlwbGUgZnJhbWVzLCBvciBub24tZGVjb2RlZCBkYXRhLgogLy8gVGhlcmVmb3Jl
IHRyaW1taW5nIHRoZSBkZWNvZGVkIGRhdGEgKGRlc3Ryb3lEZWNvZGVkRGF0YSgpKSBoYXMgbm8g
ZWZmZWN0LgogLy8KLS8vIFRoZSBkaWZmaWN1bHR5IHdpdGggcHV0dGluZyB0aGlzIGluIEJpdG1h
cEltYWdlOjpjcmVhdGUoTmF0aXZlSW1hZ2VQdHIpCi0vLyBpcyB0aGF0IE5hdGl2ZUltYWdlUHRy
ID0gTmF0aXZlSW1hZ2VTa2lhLCB5ZXQgY2FsbGVycyBoYXZlIFNrQml0bWFwLgorLy8gVGhlIGRp
ZmZpY3VsdHkgd2l0aCBwdXR0aW5nIHRoaXMgaW4gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJ
bWFnZVBhc3NQdHIpCisvLyBpcyB0aGF0IE5hdGl2ZUltYWdlUGFzc1B0ciA9IFBhc3NSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiwgeWV0IGNhbGxlcnMgaGF2ZQorLy8gU2tCaXRtYXAuCiBjbGFzcyBC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6CiAgICAg
Ly8gQ3JlYXRlcyBhIG5ldyBJbWFnZSBmcm9tIHRoZSBnaXZlbiBTa0JpdG1hcC4gIElmICJjb3B5
UGl4ZWxzIiBpcyB0cnVlLCBhCkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Q7CiAKICAgICAvLyBXZSBvbmx5IGhhdmUgYSBz
aW5nbGUgZnJhbWUuCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdmlydHVhbCBi
b29sIG5vdFNvbGlkQ29sb3IoKTsKQEAgLTczLDcgKzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhIG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9uYXRp
dmVJbWFnZTsKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgSW1hZ2UgZnJvbSB0aGUgZ2l2ZW4gU2tC
aXRtYXAsIHVzaW5nIGEgc2hhbGxvdyBjb3B5LgogICAgIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhKGNvbnN0IFNrQml0bWFwJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3ND
b250ZXh0M0RTa2lhLmNwcAppbmRleCAzYjFjOGYyLi44YWM2ZDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHQzRFNraWEuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
CiAgICAgICAgIGlmICghZnJhbWUgfHwgZnJhbWUtPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhh
ID0gZnJhbWUtPmhhc0FscGhhKCk7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihm
cmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGZyYW1l
LT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9uYXRpdmVJbWFnZS5nZXQoKSB8
fCAhbV9uYXRpdmVJbWFnZS0+aXNEYXRhQ29tcGxldGUoKSB8fCAhbV9uYXRpdmVJbWFnZS0+Yml0
bWFwKCkud2lkdGgoKSB8fCAhbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFNrQml0bWFwOjpDb25maWcgc2tpYUNvbmZp
ZyA9IG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmNvbmZpZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCmluZGV4IDFkZWMxZWUu
LjJkMTc1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlU2tpYS5jcHAKQEAgLTQ1MCwxMCArNDUwLDggQEAgYm9vbCBGcmFtZURhdGE6OmNs
ZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdl
T3JpZW50YXRpb247CiAKICAgICBpZiAobV9mcmFtZSkgewotICAgICAgICAvLyBJbWFnZVNvdXJj
ZTo6Y3JlYXRlRnJhbWVBdEluZGV4KCkgYWxsb2NhdGVkIHxtX2ZyYW1lfCBhbmQgcGFzc2VkCi0g
ICAgICAgIC8vIG93bmVyc2hpcCB0byBCaXRtYXBJbWFnZTsgd2UgbXVzdCBkZWxldGUgaXQgaGVy
ZS4KLSAgICAgICAgZGVsZXRlIG1fZnJhbWU7Ci0gICAgICAgIG1fZnJhbWUgPSAwOworICAgICAg
ICBtX2ZyYW1lLmNsZWFyKCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQ3MSw3ICs0NjksNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgVFJB
Q0VfRVZFTlQwKCJza2lhIiwgIkltYWdlOjpkcmF3UGF0dGVybiIpOwogI2VuZGlmCi0gICAgTmF0
aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApAQCAtNTcyLDcgKzU3
MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZy
YW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlU2tpYSogZnJhbWUgPSBmcmFtZUF0SW5kZXgoMCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gZnJhbWUgPSBmcmFtZUF0SW5kZXgoMCk7CiAKICAgICBpZiAoZnJhbWUgJiYgc2l6ZSgp
LndpZHRoKCkgPT0gMSAmJiBzaXplKCkuaGVpZ2h0KCkgPT0gMSkgewogICAgICAgICBTa0F1dG9M
b2NrUGl4ZWxzIGxvY2soZnJhbWUtPmJpdG1hcCgpKTsKQEAgLTU5OSw3ICs1OTcsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbAogICAgIC8vIGNhdXNpbmcgZmxpY2tlciBhbmQgd2FzdGluZyBD
UFUuCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIE5hdGl2ZUltYWdlU2tpYSogYm0gPSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+
IGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJtKQogICAgICAg
ICByZXR1cm47IC8vIEl0J3MgdG9vIGVhcmx5IGFuZCB3ZSBkb24ndCBoYXZlIGFuIGltYWdlIHll
dC4KIApAQCAtNjUxLDEzICs2NDksMTMgQEAgdm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsCiB7CiAgICAgRmxvYXRSZWN0IG5vcm1Ec3RS
ZWN0ID0gbm9ybWFsaXplUmVjdChkc3RSZWN0KTsKICAgICBGbG9hdFJlY3Qgbm9ybVNyY1JlY3Qg
PSBub3JtYWxpemVSZWN0KHNyY1JlY3QpOwotICAgIG5vcm1TcmNSZWN0LmludGVyc2VjdChGbG9h
dFJlY3QoMCwgMCwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS53aWR0aCgpLCBtX25hdGl2ZUltYWdl
LmJpdG1hcCgpLmhlaWdodCgpKSk7CisgICAgbm9ybVNyY1JlY3QuaW50ZXJzZWN0KEZsb2F0UmVj
dCgwLCAwLCBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS53aWR0aCgpLCBtX25hdGl2ZUltYWdlLT5i
aXRtYXAoKS5oZWlnaHQoKSkpOwogCiAgICAgaWYgKG5vcm1TcmNSZWN0LmlzRW1wdHkoKSB8fCBu
b3JtRHN0UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkcmF3
LgogCiAgICAgcGFpbnRTa0JpdG1hcChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKLSAgICAgICAg
bV9uYXRpdmVJbWFnZSwKKyAgICAgICAgKm1fbmF0aXZlSW1hZ2UsCiAgICAgICAgIG5vcm1TcmNS
ZWN0LAogICAgICAgICBub3JtRHN0UmVjdCwKICAgICAgICAgV2ViQ29yZUNvbXBvc2l0ZVRvU2tp
YUNvbXBvc2l0ZShjb21wb3NpdGVPcCkpOwpAQCAtNjY3LDcgKzY2NSw3IEBAIHZvaWQgQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAogfQogCiBC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEoY29u
c3QgU2tCaXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQotICAgIDogbV9uYXRp
dmVJbWFnZShiaXRtYXAsIHJlc29sdXRpb25TY2FsZSkKKyAgICA6IG1fbmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2VTa2lhOjpjcmVhdGUoYml0bWFwLCByZXNvbHV0aW9uU2NhbGUpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUlt
YWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2
ZUltYWdlU2tpYS5jcHAKaW5kZXggMGRjMGY5ZS4uNjU5YTU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNw
cApAQCAtNjAsNiArNjAsMTUgQEAgTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29u
c3QgU2tCaXRtYXAmIG90aGVyLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCiB7CiB9CiAKK05hdGl2
ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBTa0JpdG1hcCYgcmVzaXplZEltYWdlLCBjb25zdCBDYWNo
ZWRJbWFnZUluZm8mIGNhY2hlZEltYWdlSW5mbywgaW50IHJlc2l6ZVJlcXVlc3RzKQorICAgIDog
bV9pbWFnZShpbWFnZSkKKyAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkK
KyAgICAsIG1fcmVzaXplZEltYWdlKHJlc2l6ZWRJbWFnZSkKKyAgICAsIG1fY2FjaGVkSW1hZ2VJ
bmZvKGNhY2hlZEltYWdlSW5mbykKKyAgICAsIG1fcmVzaXplUmVxdWVzdHMocmVzaXplUmVxdWVz
dHMpCit7Cit9CisKIE5hdGl2ZUltYWdlU2tpYTo6fk5hdGl2ZUltYWdlU2tpYSgpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUlt
YWdlU2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJ
bWFnZVNraWEuaAppbmRleCA4Yjc5NWUyLi42YmUwYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKQEAgLTM1
LDIxICszNSwzMiBAQAogI2luY2x1ZGUgIlNrUmVjdC5oIgogI2luY2x1ZGUgIlNrU2l6ZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRo
aXMgb2JqZWN0IGlzIHVzZWQgYXMgdGhlICJuYXRpdmUgaW1hZ2UiIGluIG91ciBwb3J0LiBXaGVu
IFdlYktpdCB1c2VzCi0vLyAiTmF0aXZlSW1hZ2VQdHIiLCBpdCBpcyBhIHBvaW50ZXIgdG8gdGhp
cyB0eXBlLiBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNvCisvLyAiTmF0aXZlSW1hZ2UiLCBp
dCBpcyBhIHR5cGVkZWYgdG8gdGhpcyB0eXBlLiBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNv
CiAvLyBzdG9yZXMgYSBjYWNoZWQgcmVzaXplZCBpbWFnZS4KLWNsYXNzIE5hdGl2ZUltYWdlU2tp
YSB7CitjbGFzcyBOYXRpdmVJbWFnZVNraWEgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFn
ZVNraWE+IHsKIHB1YmxpYzoKLSAgICBOYXRpdmVJbWFnZVNraWEoKTsKLSAgICB+TmF0aXZlSW1h
Z2VTa2lhKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEoKSk7
CisgICAgfQogCi0gICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBkb2VzIGEgc2hhbGxvdyBjb3B5IG9m
IHRoZSBwYXNzZWQtaW4gU2tCaXRtYXAgKGllLiwgaXQKLSAgICAvLyByZWZlcmVuY2VzIHRoZSBz
YW1lIHBpeGVsIGRhdGEgYW5kIGJ1bXBzIHRoZSByZWZjb3VudCkuICBVc2Ugb25seSB3aGVuCi0g
ICAgLy8geW91IHdhbnQgc2hhcmluZyBzZW1hbnRpY3MuCi0gICAgTmF0aXZlSW1hZ2VTa2lhKGNv
bnN0IFNrQml0bWFwJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNyZWF0ZShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5h
dGl2ZUltYWdlU2tpYShiaXRtYXAsIHJlc29sdXRpb25TY2FsZSkpOworICAgIH0KKworICAgIFBh
c3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYShtX2ltYWdlLCBtX3Jlc29sdXRpb25T
Y2FsZSwgbV9yZXNpemVkSW1hZ2UsIG1fY2FjaGVkSW1hZ2VJbmZvLCBtX3Jlc2l6ZVJlcXVlc3Rz
KSk7CisgICAgfQorCisgICAgfk5hdGl2ZUltYWdlU2tpYSgpOwogCiAgICAgLy8gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGltYWdlIGRhdGEuIFRoaXMgaW5jbHVkZXMgdGhlIGNhY2hl
ZAogICAgIC8vIHJlc2l6ZWQgdmVyc2lvbiBpZiB0aGVyZSBpcyBvbmUuCkBAIC04OCw2ICs5OSwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2VTa2lhKCk7CisKKyAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBTa0Jp
dG1hcCAoaWUuLCBpdAorICAgIC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBhbmQg
YnVtcHMgdGhlIHJlZmNvdW50KS4gVXNlIG9ubHkgd2hlbgorICAgIC8vIHlvdSB3YW50IHNoYXJp
bmcgc2VtYW50aWNzLgorICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSk7CisKICAgICAvLyBDYWNoZWRJbWFnZUluZm8gaXMgdXNlZCB0byB1
bmlxdWVseSBpZGVudGlmeSBjYWNoZWQgb3IgcmVxdWVzdGVkIGltYWdlCiAgICAgLy8gcmVzaXpl
cy4KICAgICAvLyBJbWFnZSByZXNpemUgaXMgaWRlbnRpZmllZCBieSB0aGUgc2NhbGVkIGltYWdl
IHNpemUgYW5kIHNjYWxlZCBpbWFnZSBzdWJzZXQuCkBAIC0xMDIsNiArMTIwLDggQEAgcHJpdmF0
ZToKICAgICAgICAgU2tJUmVjdCByZWN0SW5TdWJzZXQoY29uc3QgU2tJUmVjdCYgb3RoZXJTY2Fs
ZWRJbWFnZVJlY3QpOwogICAgIH07CiAKKyAgICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRt
YXAmIGltYWdlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFNrQml0bWFwJiByZXNpemVk
SW1hZ2UsIGNvbnN0IENhY2hlZEltYWdlSW5mbyYsIGludCByZXNpemVSZXF1ZXN0cyk7CisKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJlc2l6ZSBvcGVyYXRpb24gc2hvdWxkIGVp
dGhlciByZXNpemUgdGhlIHdob2xlCiAgICAgLy8gaW1hZ2UgYW5kIGNhY2hlIGl0LCBvciByZXNp
emUganVzdCB0aGUgcGFydCBpdCBuZWVkcyBhbmQgdGhyb3cgdGhlIHJlc3VsdAogICAgIC8vIGF3
YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bh
dHRlcm5Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0
dGVyblNraWEuY3BwCmluZGV4IDJhZTRkZDYuLmZhMGFhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIFBsYXRmb3JtUGF0dGVyblB0ciBQYXR0ZXJuOjpwbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmCiAgICAgLy8gYW5kIGV4cGFuZGVkIHNj
YWxlIGFuZCBza2V3IGluOgogICAgIC8vIExheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9wc2Vy
dmVycy1ncmFkLTA2LWIuc3ZnCiAKLSAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEqIGltYWdlID0g
bV90aWxlSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgYml0bWFwLCByZXR1cm4gYSB0cmFu
c3BhcmVudCBzaGFkZXIuCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgbV9wYXR0ZXJuID0gbmV3
IFNrQ29sb3JTaGFkZXIoU2tDb2xvclNldEFSR0IoMCwgMCwgMCwgMCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcAppbmRl
eCBhMjhkMTQ5Li4wY2QzYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZl
SW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZl
SW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBTaGFyZWRCaXRtYXA6OmNyZWF0ZShtX2JhY2tp
bmdTdG9yZSwgbV9zaXplLCBoYXNBbHBoYSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggMTA0MjRhNS4u
MTRiN2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRlciB0byB0aGUgdW5k
ZXJseWluZyBuYXRpdmUgaW1hZ2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVhbCB1c2U6IFRoaXMg
cG9pbnRlciB3aWxsIGJlIG93bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVlZCBpbgogICAgICAg
ICAvLyBGcmFtZURhdGE6OmNsZWFyKCkpLgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05h
dGl2ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIE5hdGl2ZUltYWdlUGFzc1B0ciBhc05ld05hdGl2
ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgICAg
ICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luYWxGcmFtZVJlY3Q7IH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5KQogICAgICAg
ICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCku
Z2V0QWRkcjMyKHgsIHkpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5n
ZXRBZGRyMzIoeCwgeSk7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAq
IHdpZHRoKCkpICsgeDsKICNlbmRpZgpAQCAtMTUwLDEyICsxNTAsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICB2b2lkIHNldFNrQml0bWFw
KGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYml0bWFw
ID0gTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgMSk7CisgICAgICAgICAgICBtX2JpdG1hcCA9IE5h
dGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGJpdG1hcCwgMSk7CiAgICAgICAgIH0KIAogICAgICAgICBj
b25zdCBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAt
PmJpdG1hcCgpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRNZW1vcnlBbGxvY2F0b3Io
U2tCaXRtYXA6OkFsbG9jYXRvciogYWxsb2NhdG9yKQpAQCAtMjAyLDcgKzIwMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHdpZHRoKCkgY29uc3QKICAgICAgICAgewogI2lm
IFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLndpZHRoKCk7
CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpLndpZHRoKCk7CiAjZWxzZQog
ICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOwogI2VuZGlmCkBAIC0yMTEsMTQgKzIx
MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBoZWlnaHQoKSBjb25zdAog
ICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0
bWFwKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpLmhl
aWdodCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX3NpemUuaGVpZ2h0KCk7CiAjZW5k
aWYKICAgICAgICAgfQogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSBt
X2JpdG1hcDsKKyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9iaXRtYXA7CiAgICAg
ICAgIFNrQml0bWFwOjpBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogI2Vsc2UKICAgICAgICAgVmVj
dG9yPFBpeGVsRGF0YT4gbV9iYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJD
YWlyby5jcHAKaW5kZXggNDE3NjI4ZC4uNDZiNjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVj
b2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0
aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewog
ICAgIHJldHVybiBuZXcgTmF0aXZlSW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29u
c3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29k
ZXJPcGVuVkcuY3BwCmluZGV4IGQyOTMxN2EuLjU4ODM1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9J
bWFnZURlY29kZXJPcGVuVkcuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IFZHSW1hZ2VGb3JtYXQgYnVmZmVyRm9ybWF0ID0gVkdf
c0FSR0JfODg4OF9QUkU7CiAgICAgLy8gU2F2ZSBtZW1vcnkgYnkgdXNpbmcgMTYtYml0IGltYWdl
cyBmb3IgZnVsbHkgb3BhcXVlIGltYWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3Bw
CmluZGV4IDYyNDNiODYuLmE4Njg2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNw
cApAQCAtMzIsNyArMzIsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUZyYW1lOjpJ
bWFnZUZyYW1lKCkKLSAgICA6IG1fYWxsb2NhdG9yKDApCisgICAgOiBtX2JpdG1hcChOYXRpdmVJ
bWFnZVNraWE6OmNyZWF0ZSgpKQorICAgICwgbV9hbGxvY2F0b3IoMCkKICAgICAsIG1faGFzQWxw
aGEoZmFsc2UpCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAgICwgbV9kdXJhdGlvbigw
KQpAQCAtNDYsMTAgKzQ3LDEwIEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShj
b25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAg
IHJldHVybiAqdGhpczsKIAotICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRtYXA7CisgICAgbV9i
aXRtYXAgPSBvdGhlci5tX2JpdG1hcC0+Y2xvbmUoKTsKICAgICAvLyBLZWVwIHRoZSBwaXhlbHMg
bG9ja2VkIHNpbmNlIHdlIHdpbGwgYmUgd3JpdGluZyBkaXJlY3RseSBpbnRvIHRoZQogICAgIC8v
IGJpdG1hcCB0aHJvdWdob3V0IHRoaXMgb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgbV9iaXRtYXAu
Yml0bWFwKCkubG9ja1BpeGVscygpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5sb2NrUGl4ZWxz
KCk7CiAgICAgc2V0TWVtb3J5QWxsb2NhdG9yKG90aGVyLmFsbG9jYXRvcigpKTsKICAgICBzZXRP
cmlnaW5hbEZyYW1lUmVjdChvdGhlci5vcmlnaW5hbEZyYW1lUmVjdCgpKTsKICAgICBzZXRTdGF0
dXMob3RoZXIuc3RhdHVzKCkpOwpAQCAtNjQsNyArNjUsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZy
YW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAKIHZvaWQgSW1hZ2VGcmFt
ZTo6Y2xlYXJQaXhlbERhdGEoKQogewotICAgIG1fYml0bWFwLmJpdG1hcCgpLnJlc2V0KCk7Cisg
ICAgbV9iaXRtYXAtPmJpdG1hcCgpLnJlc2V0KCk7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5
OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJh
bWVCdWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0
YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03NCw3ICs3NSw3IEBAIHZvaWQgSW1hZ2VG
cmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogCiB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxE
YXRhKCkKIHsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5lcmFzZUFSR0IoMCwgMCwgMCwgMCk7Cisg
ICAgbV9iaXRtYXAtPmJpdG1hcCgpLmVyYXNlQVJHQigwLCAwLCAwLCAwKTsKICAgICBtX2hhc0Fs
cGhhID0gdHJ1ZTsKIH0KIApAQCAtODQsOSArODUsOSBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlC
aXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1faGFzQWxwaGEgPSBvdGhlci5tX2hhc0FscGhhOwotICAgIG1fYml0bWFwLmJpdG1h
cCgpLnJlc2V0KCk7Ci0gICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhJiBvdGhlckJpdG1hcCA9IG90
aGVyLm1fYml0bWFwOwotICAgIHJldHVybiBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb3B5VG8oJm1f
Yml0bWFwLmJpdG1hcCgpLCBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb25maWcoKSk7CisgICAgbV9i
aXRtYXAtPmJpdG1hcCgpLnJlc2V0KCk7CisgICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhKiBvdGhl
ckJpdG1hcCA9IG90aGVyLm1fYml0bWFwLmdldCgpOworICAgIHJldHVybiBvdGhlckJpdG1hcC0+
Yml0bWFwKCkuY29weVRvKCZtX2JpdG1hcC0+Yml0bWFwKCksIG90aGVyQml0bWFwLT5iaXRtYXAo
KS5jb25maWcoKSk7CiB9CiAKIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgs
IGludCBuZXdIZWlnaHQpCkBAIC05NCwxNyArOTUsMTcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRT
aXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICAvLyBzZXRTaXplKCkgc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIG9uY2UsIGl0IGxlYWtzIG1lbW9yeSBvdGhlcndpc2UuCiAgICAgQVNT
RVJUKCF3aWR0aCgpICYmICFoZWlnaHQoKSk7CiAKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5zZXRD
b25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsK
LSAgICBpZiAoIW1fYml0bWFwLmJpdG1hcCgpLmFsbG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkK
KyAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0Nv
bmZpZywgbmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgaWYgKCFtX2JpdG1hcC0+Yml0bWFwKCku
YWxsb2NQaXhlbHMobV9hbGxvY2F0b3IsIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFz
c1B0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bmV3IE5hdGl2ZUltYWdlU2tpYShtX2JpdG1hcCk7CisgICAgcmV0dXJuIG1fYml0bWFwLT5jbG9u
ZSgpOwogfQogCiBib29sIEltYWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKQEAgLTEyMiw3ICsx
MjMsNyBAQCB2b2lkIEltYWdlRnJhbWU6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgYm9v
bCBpc09wYXF1ZSA9ICFtX2hhc0FscGhhOwogICAgIGlmIChtX3N0YXR1cyAhPSBGcmFtZUNvbXBs
ZXRlKQogICAgICAgICBpc09wYXF1ZSA9IGZhbHNlOwotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNl
dElzT3BhcXVlKGlzT3BhcXVlKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUo
aXNPcGFxdWUpOwogfQogCiB2b2lkIEltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZShjb25zdCBD
b2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKQEAgLTEzNSw4ICsxMzYsOCBAQCB2b2lkIEltYWdl
RnJhbWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBz
dGF0dXM7CiAgICAgaWYgKG1fc3RhdHVzID09IEZyYW1lQ29tcGxldGUpIHsKLSAgICAgICAgbV9i
aXRtYXAuYml0bWFwKCkuc2V0SXNPcGFxdWUoIW1faGFzQWxwaGEpOwotICAgICAgICBtX2JpdG1h
cC5zZXREYXRhQ29tcGxldGUoKTsgIC8vIFRlbGwgdGhlIGJpdG1hcCBpdCdzIGRvbmUuCisgICAg
ICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJc09wYXF1ZSghbV9oYXNBbHBoYSk7CisgICAgICAg
IG1fYml0bWFwLT5zZXREYXRhQ29tcGxldGUoKTsgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9u
ZS4KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcAppbmRleCAwZTA0NzllLi42NjBh
ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
eC9JbWFnZURlY29kZXJXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CiB7CiAgICAgd3hCaXRtYXAqIGJtcCA9IG5ldyB3eEJpdG1hcCh3aWR0aCgp
LCBoZWlnaHQoKSwgMzIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCAyOTZjMzRkLi42NTFlN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTE0MSw2ICsxNDEsMjQgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkK
ICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KIAorI2lmIFVTRShTS0lBKQorLy8g
UGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgTmF0aXZlSW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRp
dmVJbWFnZVBhc3NQdHIgbmVlZHMKKy8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgorTmF0
aXZlSW1hZ2VQYXNzUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7
CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CisgICAgaWYg
KCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworCisgICAg
cmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworfQorI2VuZGlmCisKIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNv
bnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCmluZGV4IGYwOWEyYjEuLmU0ZWFiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJS
SURFOwogCisjaWYgVVNFKFNLSUEpCisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKICAgICBmcmllbmQgY2xhc3Mg
U1ZHSW1hZ2VGb3JDb250YWluZXI7CkBAIC04Miw4ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sKSB7IH0KICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KSB7IHJldHVybiAwOyB9Ci0KICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVh
bCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGRiZTA2OS4uNjUxZjg1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0yOCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
UmVncmVzc2lvbihyMTQyNzY1KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgYW5kIFNWRyBjYW52
YXMgZHJhd2luZyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIG5vdyB0aGF0IEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIGFuZAorICAgICAgICBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdl
KCkgcmV0dXJuIGEgc21hcnQgcG9pbnRlciBpbnN0ZWFkCisgICAgICAgIG9mIGEgcmF3IG9uZS4K
KworICAgICAgICAqIHNyYy9XZWJJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleCk6CisgICAgICAgICogc3JjL1dlYkltYWdl
U2tpYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpmcmFtZXNGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkltYWdlOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHRlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVy
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0Ry
YWdJbWFnZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0SW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChUZXN0SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6
CisgICAgICAgIChUZXN0SW1hZ2UpOgorCiAyMDEzLTAzLTI3ICBLZWlzaGkgSGF0dG9yaSAgPGtl
aXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRW5hYmxlIHRvdWNoIGV2ZW50
cyBpbiBQYWdlUG9wdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURl
Y29kZXIuY3BwCmluZGV4IDEwNGFiMTMuLjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYklt
YWdlIFdlYkltYWdlRGVjb2Rlcjo6Z2V0RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNvbnN0
CiAgICAgSW1hZ2VGcmFtZSogY29uc3QgZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1lQnVm
ZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IFdlYkltYWdlKCk7Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0
cihmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBpbWFnZSA9IGZyYW1lQnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgcmV0
dXJuIFdlYkltYWdlKGltYWdlLT5iaXRtYXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUsNyBA
QCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3Qg
V2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkltYWdlKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRy
KGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+
IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKIApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3RvcjxX
ZWJJbWFnZT4gV2ViSW1hZ2U6OmZyYW1lc0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEpCiAg
ICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25Q
dHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUlt
YWdlKCkpOwotICAgICAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRl
KCkpCisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3
TmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21wbGV0
ZSgpKQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkp
KTsKICAgICB9CiAKQEAgLTE1Nyw4ICsxNTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29uc3Qg
UGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
cDsKLSAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAoaW1h
Z2UgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAg
IGFzc2lnbihwLT5iaXRtYXAoKSk7CiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QuY3BwCmluZGV4IDdmMTkwMGIuLjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+
IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNO
ZXdOYXRpdmVJbWFnZSgpKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBt
X2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKTsK
ICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVDVF9F
USgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFnZS0+
Yml0bWFwKCkuaXNOdWxsKCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJlZElt
YWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJbWFn
ZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0
aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0
SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05h
dGl2ZUltYWdlKCk7CiAgICAgU2tCaXRtYXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6ZWRC
aXRtYXAoU2tJU2l6ZTo6TWFrZSg1MCwgNTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHNjYWxlZEJpdG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUo
c2NhbGVkQml0bWFwLmlzSW1tdXRhYmxlKCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1RfRihE
ZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAgV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3
TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9s
YXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAg
ICAgRVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEo
MSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJp
dG1hcCgpLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRHJhZ0ltYWdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJ
bWFnZVRlc3QuY3BwCmluZGV4IGE5NDY1ZTYuLjZiZjE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogSW1hZ2UoMCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0g
ICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOwor
ICAgICAgICBtX25hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAg
ICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4
X0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmFsbG9jUGl4ZWxzKCk7CkBAIC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zaXplOwogICAgIH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmICht
X3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAg
fQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1
bmN0aW9ucy4KQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXpl
OwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiB9OwogCiBURVNUKERyYWdJbWFnZVRl
c3QsIE51bGxIYW5kbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDRkYjQyOGMuLjY0OGRiZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hy
b21pdW1UZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2Uo
MCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2Ug
PSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdl
ID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0
bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBA
IC03NywxMiArNzcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAgIH0K
IAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsK
KyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBs
ZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsx
MDUsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0
aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
bV9uYXRpdmVJbWFnZTsKIH07CiAKIFRFU1QoSW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVl
SW1hZ2VzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195891</attachid>
            <date>2013-03-31 02:42:41 -0700</date>
            <delta_ts>2013-04-02 11:32:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>80990</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NDcwN2JhLi5lZTAxNmE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MzEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMzAgIFRvbSBTZXBleiAgPHRzZXBlekBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jvc3MtT3JpZ2luIGNvcHkmcGFzdGUgLyBkcmFnJmRy
b3AgYWxsb3dpbmcgWFNTIHZpYSBzcmNkb2MgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1z
dmctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3Zn
L2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4MTFj
NTlkYzVjZWYxZDMxYTZiZDY2ZGY5ZDVjNjFlMWE3ZjRhMTAKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDE0MjU0CnpjbWVIdVhJUnR1d3I8bz5XPFg/U1hkfjRiTUd5bz0+RD9JelFCYVQ/MVZXR15O
UjwqPWZHe2REUVdkMnJPK2xwaAp6UDlPbXN6PF97QT11TT5lbnVIcWVpYUxBdC1nRVo3X2sxfF9v
Y2xhR0FPMiRhbXRXUnp0I2BmZXlUYmplKzhWNlAKekpqQDZMZzd3bkhVLVNAJjFJR31Fe2w7Skpo
aiV6UklFQ1MjUXklS1o5IyhjWFJ1MWtNQ3hvb3I4SmltbGF6Q0R4CnptOXwjNkF1QTxxYkxSUkQ4
KENAVEFKNTIyLT5eUGcqWmsjTzFtWU90KGwwKzVjcWMzajtsZDBrSEVRJSVrc3B8RQp6aGgkNW4x
UjVNJVZaeFcjMSh8ZmU9O3JNLWglJmRER2NeNG1JUS0mJV9sOCgqcmJLIThPJXdMNT1qdyZDPmhY
PCYKeigkUVRVQkNLNXZNIUFLfT9AWFMoPWUpWUk9PTs7VE8oOXwlRXBufTk/TVp2djZSQmRRckoq
TWVvNXRBTzsjOCh+CnowfV5UNVo/SCo5UWM2LUg1bzJFPjAmZzhjO3Rffkk5b35IYGgre3dnUn4h
bWJfQm1YMlpIVzwmbSVqT35tVz1kNAp6SDwoPGtAanM+YGUqVkpJU2FhVlExYjMleDRiS34lcW5x
WldxKT13dCs0cHNLeW9QO2p0cilNZHktbF5mXnIpQSEKej5XeHFKRkJKPCg8fF57ZkR3Xj1GWD4x
Zkg/Pll1Sjk0T1owNyhVdV5iR0cpXjFMY0VtVDUhJHpeUklIUTY/ZjtPCnpNfXFVVjRHWG8oK29O
Tk5fQ1kzditjVn45a3VtYnROezZ0LTQ8UllvI21jRWlJO3hrLSNeaV5JeElMOEQ1VHw7Xwp6Jkdm
Xz1SfTE1NDhmSSVJSi16SExuUVkqX2VKO3U1OT96LU5wS0JDREVqdkJQVFhZKGM9clF2U2g0KW1V
a29BKnkKej1XVmw1WlJjSmF5TmxpfDgmNU0jS2FiTEl1cDBleHMlbyl8VSMreCZhQjlrOWsrOGoo
cldMejVncn5oP1FgO2Z3CnoxZX4+TGV0Wm5ZV0hBNFpLZHx8SFp0dCF+eyElbUBUUHhsXz9LNzJG
PyRERkJoZkNqRXopck8jUDk9SGAofDVPLQp6PUV1ZEJ2VzswWCVofD49Wjg5Rjc2KHdnRVhWbUhF
SWpmOHtoQVo4QWV+eSNvSk1XX28rQ3JAeylnYE9KUm94UXgKemhjUDl4VDtee295QU9Gc3p2ZWdC
KjU5VHJ3VTRON2p6MUVjc1ohJUc2Kn1+Nl57U1lzK1J6Kn10KyYhMztQI3k7CnpxYXMhd3ZVXz5H
PkhkJjBAMV4wSTt9Xm9kPl9RZkQ+QTVXUj0hPkJyb2I/U0d1YnUwPE10PVFUbjckSDtPVGZgTAp6
NFJkVD9LbG5iRlA0TExEVzJ3YWJWSmFgeF4wbCtMOUolazJJUiZlS290MDd+YHx7JjU5SFhidDVO
cXNiZ1NnRSUKem1TMz9FPjZDbjA/d3M1RD16Y05WPXhKaUopKTVRTDV+VzczN1pWcDg9JSF+cD5h
NUcqRys1IWZ3TFd1UEJWdVBsCno2OEJgViFleFhvbXJ0YmtUMUQwQCpSI2t1X0l9OzhRZUBMfFFZ
VUdyXzVmUmdUbDE7cHlgM3EyK1JYTDMrWHE9JAp6UyRvWGZ1akYtLTJfTkxtdEchK0leKmIqS0N6
amtBdHNoTDwpUj1JWWl0d0YkVmhiMWg0WjFkfEt4aWA0MT1WI20KekdAMmZ0KCR8KEJ6MDBeKTwk
I3RebDhONWd7VnB8PlpmP1NJKDhKPnpzdkdhYCpwJFZYR2A+c0lZRkMmX3UqTlIqCnptdlc+MVJ0
bTFhJUIhNHdkV1ZURU1rPm1jdWVgaCplWEgmdSNMPjlhektkMEVAV0Mwb05ZJDxCQyQ+b245QEIz
Tgp6dCh4Y2B4UVZ9UU9VRllVPj9tVHgjdjgrVkFONCFxN3N7LSQ1WXtHc3VSKkl3NzA9RXFhemJr
VDx1MiVlOSo4dHkKekVKNyhsamxTe248OyEzSi07OHAxNTZJX310cFU0cFhkVjlXTDktVkVOeFBq
PG9rKHZzQGlsd05nakFEPzZNRWFOCnpGOyV2cyQ0O1hPZSQ5X2h4bTIkLWt+OCg7VWk5RERiKiMm
Y2pMcXArWD5zYyYtJk1gPyV2dzZWNWdncyYlcWg1TQp6eG5SdjwpWWU+Sk9eU05hRFg/Ymh4VzNB
LT5nUFJGZ2BvfCl4OTB+P3ZnP3l5NGk5YVdjfTc9OWE+Ukc7XnFuVEkKeiR+eShrN3VydUdCV0s7
N3M8P0w1Xnc4dmtxU3o5SHhYKEEqVW5MTmpheUhrZG1VO2BWSGRpT0VUKTlGREZDUGltCno5KmF+
WDtQJlY/RWlvdzkyMk5NTFdXUUNDRXtEcVlkfnhMZzdUOFIzaEhrdjlsU3peRkNIaGMpS3xUYGdQ
aWFCWgp6U0llOVI9Knopc2U3S3p6JD9EfndgSV9MUVdgMFVMaiRYV2NxfXB3d1M8LSgtJVowZDBq
bz8/QlkpZHFDe0tuX1EKemVQUVorVS05KTxfcH5HYCQ3ai0kQzVsKGNRSF4wb0FDWmF2K2Y9QWpT
eXxiYkpgPysrbW1Fayh4WHJ6PDdvQihlCnpwLUJNaU5QNmY4YWR4aHBoYEFDaz4lVXliKVl7cmdU
NCpATCRXaFpXTStOV1lfbzAjbWRDVDhfdEkjUiMlZFVIYQp6Tm1QdGxzLVg/WG93MklJO34pOEpE
PW4xZDw+a3BvbHNnYWtfVE5uUi14dio2c2lKcDgyNiZBNCgtc0VHVHs9P0sKelpJZ1UlMnVfT1p0
JX5zZHY2WEh3QzVnMXZkfV9UeUdjczJ6ckM9bkFuUmMxfnVELVR7UClKRzszLUBBdz5EKXMzCnoy
cVRxeGhsaTZvT3NHTXp7VnRlYjNIJnxaWXJPOGM2WnNaRnlxT0QrUHY/dmBLal48JSpmSUQwZUdn
cEBSc20pMgp6bEBBUm4wVmVZSXttdD0zT1VFLT84eWg1aHFOMUJfaWRqMjlWe1JBMkQ2fVMzJW5y
fEM2TWlOSXd+PDRpPz0qKWQKej4wVlB4SkQ2aVZfVilSQyRhQyRvTV94NVRfdCpwbChyWmV0UnBf
dXlDMURycWdJTHlaPXtnR3psVyg1RG1Tfm83CnppPD4tRmpeXmdSQ2cjcDdXIXEqKDREY19pYWk0
MGw0ODc9I2c+PnFDY30wd3w1MzNzUTtrSzB2UU1xWGBnOzQ4Kgp6MyRLRk5iZHJrdUBMbiNuRW5Q
diFlYTZEJkNkKGxDJDFGcCZvdzBsTFVCSnteVDNUOEw8M3IjMkR9YER6UDNxeysKemp6ajtPPmQr
N2pBS05KSEczUy1HeVNtRUt4PVMwdV5gTntzSnlpbUJIdSNsMSpEREg8PyZMOVJZfWZeNzJ8YyFV
CnpgYzFST14kRDZleSg/K0FAaSUrYXc/VnJ4MkhzcW1jTTVGVmxYZ19seExyemR5USklWj17JD5N
PjQ7X2VrSVNAfAp6VFBSKzRycGVGbylpPFV4OyVqRVQmYiRFbTRZNVU8eGk7TVdpcnNmNzxKUHle
KXQpdlo4cUg1UyU/JDw4YjAxYDgKejh4PHl3PjlIZSt1Pk8oeUJBYWlZX0AxJDViR2M/fig1PkJZ
ej0lI2cpNU5GMCtEckNkYj9QZ2M7MnFnJHtRVypWCnorSUo9YGpCdDtZdyt4bktqaW9JUFJvKkQo
ZWgzZ0R5Qz9wdTVjazZhT2g9QHByNXw3TyQ9NExeR2J1ZGxSKnN1ZQp6OHJkOVchJlNmKT5CI3wj
NnFUQGA7fGpqKCh9MVpRbykxayVkMG5je187ME9PeD0pP05lSzQpQzZ8I05rcFVKXlgKelYoZXFI
U2JvXnAjeXd1PTNRRClCQnluZHxLMD5uTXtxMGhSOTxETjM+KD53SmRBQnxMZW93bl9lMCFPazlG
c3VVCnpOIT5FQFdiM0xyIU1yVj14cVEwJD12YFFsSFFHZHxDJk14byQ/YEU/RSFCNWtsPDh8PDdl
ZH5QU303a3RmNzh9Pgp6M1NoSEhNP0JBQnBfdmYqU1NyMEhSflp2QCtTQiNNbEd6dy1PSk1IYDNY
OD9aI0dKQ093WkQwakdfKX4/LWN6Sk4KelhxWipAY0drdzRCSElffCU4OSM5TU1GYkZ7KFV5RjZQ
fllnZVJWa3xfRXYyOW5xYkY9I1BYfTc5R0NoXyNtZGhZCno+WUxYMVZpdXoqUVBILUtBRGlHajlV
N1duNC1zeShLMFBYUjE0NEtDc3IxYzs1WThhKzZSUjMtPihkPTF7Wjd9cQp6ck5OKih2YVRPfkFM
bmpARCZAdyUtfTIrP2lgNldBSTlUcDchZX1WMlZ+eUBAM0pndkdjWGB0c0V0YW02b2FGbDwKekpV
bCUzMj4tMEJSWCFBUzw5eF5UYEMzczB8NGp8YmcxektSbGh8SlpoKGVyNj5XIzw3MXA/KXEyand4
ZDxnamtkCnpKbCghak5ReklMR3NjSk1sMmR2QHk9TEN3WHI+Jlg5Vm93KmhRNCR6V1ZJKEpLSnN6
I0VsU3hjblh7PDM7WXAycQp6X3tiYn5NLUg9KXQ2aSg7SHZTc0R4Nzh5T1Z2YiFYZyVUMiRiTTdr
d3c4JTlyWiooMig+SEB4bFVuMX19dDxWVXgKejhWMHlRRChSP2hUMVJ5UTUpRnhqdG5PS3QrKTdT
NXNOVjZSQXIham90I19BJVpQcUY4dj9MUktDWkZJb1RoTUBMCnpgOEN4Mzl5Q3J4ITRDcX01LVR9
VVhyLX41PjBzM3E7U2FuZU1aXzF0Rk4jWnxYOG0wKEk9fX4+UChJe28lQXMhNgp6NyZmQ0BgYGI2
aXh4YElNQWN0OWJXejlTfilQWDJ8Z24rMVcpZXt1cjkpMF8kbTcoQGdRZjJqOG8wMlBeUExpXk0K
ekxaK299bV5FTE0rPmwzU3RLM01uKD9ENkdsR21gYFQ1RHg/YG1NSmc8VykhU3ZkNWdoUiltQEJf
RjA9YDsyViRfCnp8RzNzd0NNbiQwa1NvcjdQMCU8blQzUmlVeFNjV2loXmFTRXE/YHZVNHpoNSlO
VExIeTtHdG5hdG55S0tTPXZgOwp6WU0hUChLT2Fva196KzVaXmUhbSVWU0ZoMFJXWilRWjdiQHpJ
aSUycXpEI3pjeWhpRCpPQn5lcj89aHtVQDl2NigKekkwSHExeyUkd2Rvcn5VVk1sdVYmVXo1eldi
VER3dlNRRDx7eCtqcyEwT1UwZGNgeEU/T3JuYUM0SHVWZi1yPiFiCno4X29mdDtwU1AzaTtGSili
RWRGMUw0NiVAKy1KbmxpKGhiXnA9TDRLPktqJnJRNko2JDEqO0VQKiEoM3w9MDNLPgp6MjhueD8q
KnxTK2V2dmMxKkVRQkNGZCpvXi1VMG5CN14zUmJVJFI0ZHQxdVFPPDtLZGpzTlh3d0pXfjBySnZu
M2kKemdJRzZgdVplfjBHKkJGTk0oZik8TFYkcFVlfFA0Q2QtQXJ+RCF2fGc0Vkk0ck1ZUytyKyVC
TnhJVW05KSl9fWFACnpHcVN0cnJOWm5EQWJqSVorIUBFLWY9dkROJC1OVG1pQTxxckhLVTJnNEBj
QERzUDIzRzNVMUBUYmB3OzkxaT5DYAp6JEIqcFgwQ3JDNEtffkEkXiUjQkQ7SHIkSD9+SnwqTSNJ
aTRjYFlVWUNrQyQ1NSFgbmdfaFpZR0xIVVNlPyteRnkKei1NYV5TK343Sm1KZ2ZAT2c0Iz1PUX1e
PHNPfmomeS1AZzZ2PEw2NX5nXlMzO0ZJS1ZaRDZlY3pDQVdWVUU8bFRACno9TTl4ZlF0PytnYSQ1
RlNMbXFXVVZZYjgzUH52YGxmYkU7T2hiR3JZem5rMD4hRiZ4RmB1PGxZWGs3dW9fPVIhTAp6a1U0
ZWFScDBlIXdWQmMlSiZ3dzc7N2RZUzROQUtrITw1dGA+bTw5aU4lYkd6TTFQTTdraCZuNVVSc0kp
ZXdLUDYKenlsUTgpMXo0aDVkZlVhKHA8RVhTPG1rY2ZeTnNhZyFPZGVPb0pDRHg8SF5Yekhkb2U+
SXJzRGpCV3xQcHJ0Xzh9CnpXanY0YkAyVUZ5d3p8OCFnY3xgOFYtdCh3UXR5Q3BqNmdDMmdxKDJN
Nis+VX5VbkpgYXk8VnBUYCZPVEBlPSo1KAp6Pk9qT0hlKiZJJHhxcSVEWTNeTSMoITNJWVhQbztQ
cStDWDc+S0xIKXlkZXZ6I2dJZmlUK3AxSnVTT21kPktHZDAKelNKeiQ1M0U9RCtkOzMjaiowe01e
dHdhN3UpJEJXfGNJQ0NzV1YlUHxReUJtJDlzcjtvMDx+MGQ9UksyZmxERmxpCnpfJjduY15XY3ht
cVI5bU0peVVYaSFwVWFHWkU4RTdNZDFlIWA4RTV3NWElcStmQXw5Tjw+bEpfZT52b3w/ZUF1Zwp6
QCsoaXRnNW9jUiYzKExOdlAwNTZtKjNZWkVtYXA2R0cxcGt5Q1opOF4jQnV0UEJrXyohY0pjK3o5
RURUSEkyfWMKenRTTmI7YXoyc3I/ODg+S2BXNGhvcTBtI1pjVnlhVGI/LTFRUm9DIzh8MC15bWVG
ZkxALTYmN0t2VTstRzBmSCFsCnpTVFFATz95aCgwbzcmbWlpJm9kSEY0YEx2eF8qWmsqYHcyOUJ+
VnFNc25VfnRNUVAle3k3RG0pUEFnVm8yPUJFTgp6RUV1cnlEMCM7a0N+K1BCMiZQKz9XNX5ULVdm
TDhYMlFtc3RCXkh1R0t1Tzc5KHhVbSZFVHhSY2FzKThYa3orPEoKemNOfE48JTNCbzhGSyh+Zjho
QG4yIV4weipTOz4lUiRZRTQjKWAhZStLe2F9QWBTOHtvVFVDQUljaEpjbjRYOHBICnpHR3MjbURw
K3hEdHpCJm9sMnx+LS1yekFValRQXj9AS25LbDVgQGlndSpCOT9WfHVMbS1RQT5ec0R8LSYzeDBw
fgp6dSYmZ1kzNWdlT2prIW9BV042cFAzZGB1OGN+T0g4TGlPP3kqPnVqRW49O1Rxd3NaZE9gOU0w
Y0t7S0xUSTQkNEoKemlDOTZ1PCt9SCVTb2lKO3ZvI21PPThkQV4yXyt5PGo5ZXFJST1WenxITDF9
YlJgTEhydlVIUCo4IUdLZXR6VjF+CnoqeVBxRHh6MlU5OENzV3FCfmlMTTgpTld1VzNlZTxoTWs+
ViNwRnxtUldBbkA3dmxUZEVFbUdRRTQxJiowKj4lSwp6SH05azVOZikpUD1+UTVgbFIpSH1CS1lJ
fE1rcyQzWGR0fHlicGptVjxfbnc1eSs/eUcoWnxybj1RLTRRPCh2fiMKentrTDh9SmtEcWBsVEA+
UlA7Sz49eksoeUBZXmV8WFFJWXpsMVY1ajUwanE4IztfZClaWG0yLXBaITxZY0lMXmY5Cno/QTNv
I1psbmJ2UXpnSFJXZEkhNG9zfWp6ODV4IUp4OTUrZCN2OHhLSmRXQkF4YW1PPmlWZnBhU2JlQT07
SXF+JAp6WEtHPitwfG5gPkJGPlVDTSE5c31WUUcydjYraz41Q3ttUTlxdlheVmtZY3tqfDlgKVVN
OSRpY1ooWlNrTHZ+TyMKejlaa3lZeGxGMUlPQFpSSGYpbz1AeEskNipXTmstfl5UPTRgUjhvQXtY
Yi02MW9kd0o3Km8zIzEhaUw3NF51dGA5CnppQj1TbVpqQDc9SytyNEctaWBsKkFhcnc3UD9FZT5i
ZlIqTlRKYSN7aWhqeT9ufmt9c3pwLXwlWSNsT1E7UD9+WAp6UVRkM1RKUVF9TmZ0IXQyY0spZUQ5
dGFoUyFuSWM4cGV6WG9iQiVERyh3bSh4Z3x1U0VQZn1uX189eS0oMio3JEIKemxjMlBtb04mMklm
NjF4eFM4OThrP1NzP2AqUmU5a0p+dD8xa2gtcUZ8TXR5ND1yanB1Jns8N19JNnZVeig5N3szCnpM
ZDJSZ3pZal9JQyQqUFAqcVYoYz9vMHIlPypjOEFoZVNsZnspZzRPQHJvaHljSFlHail+TiQ3NDFL
c2JTbEpOcwp6eF8qJmEyaE1kdUA2SUEwSEI1ai0xUHRxPGBCX1B5K25MZGtOMk5+QWN4X1ZgcHFg
eF45WiRQZzFneGhENHRiNCQKemwzT3E+dkZpWSN7aUgrUG5OTHNTKUZ9JjRTSjI1ZVQzckklSz9T
eFl0TDtJSEdBcCFIKlNsUUV0ZChTdlA8Q1BiCnoxZT9MJWwraT9qaDJFdEVQZlN8R2cqK08kP3NX
Q0FyWTM1WUlzWndOSkdYaVZHQExAPClDfjZHTWlTQ2QreDJrNgp6RCFocyNDYzNLSVQoJkVHcSQh
UiE/JUIpe1hzRjY9P01sN250PFFAQ0pfT3lpYjcmfVctV35LRzI3X3NFdHA+OHYKejI+PUY1ZEUt
KCUtZDNzUFZzPVpIR3J+MFQqVmYrM0goRl9JRXR5Pj5rSlIrOWVARUtVYGNUZ3pjeyR8ckJBVVYz
CnozZklKTzJxdDVyWW84XlRKTHljczc9ekIyQDIpZm5hXnFkYiVWPGpAZCpIUXttejRhbng3fVNX
YU51RHo+eUt3Mwp6X3VjR1ltKUBGd2BASFRCbGtmbTJ2Y1p5QGBiOU4lOVZxfSFZTi1XLWpuS3c+
XjNsblRPTXtpZ3oyOUV6TVU3QFEKenhCX0N4ZDNreV55NiZXXz9hbn5rNjx6eTZVI3dqKTw5elV1
aTg4RysqLXkmcWFpe3VoQVV1Mz1EQmgkTngqQUxSCnpTek5GPUNFZ3pKQWUzOEAwSTZ+RWFAXklu
dU5EVyZeTHg5WjY/eXZaVD1UQXBlcTEjISNKa0M7bkhDcUBQcFZMPgp6NDJ5QiU5dzNoMjxxfHR0
SWA2aFdyWXFJaEQ9M3wtcio+OVh6UGpPX088UkhqZ0wzZ1RHM2U7Q3BZQjlXaTd4X3UKekgwIz9l
QEBnQ004VCVvMSRaQys7PipDTn5mQCEoMkpXNnVtMk1WZ1BSSzBlI08+WDs0VDFaaUlLZnNrN1ZJ
fS1OCnp5RCh3Pm9mYih2UlU9WHIyPSQoZHsyRjFVaz1OeU52Wl9CTUN1d0FXZCt9KH4zSXBDej08
QlNSeypWaWY/TVcmbQp6RHd1dWx0djRoZSFZPDgybFZrUkpqaWhKUnRUdjAwJmM2bnR4eEY9KUFN
MTB3Q2FjPW87cnpZQkd2flNjUXBwNFMKeno4TCFrNF5QaHt5c3xtVlI1SlQlUG1Ja3tmP2B9eWtM
amhPVElRdDE1UHI9MitGIT9PNT9tJG9BRT9lSmB9ZHtDCnpwdE5nP2VBajJtX1NZJVh1Rk1UUUlJ
dC00cyNseGtCVX55KkAwa01mdCtxJTtqJjBtI2t1Yik0SSRlKCFAeysqUwp6b2llZn5iKUF4TVRs
Njt0cHg3PCVVKkF+ckJDSTZ9Zn00VismaWVvIzB5UXVtKTspWEhMTVJEYnpMbHtpO1FAJCkKemNH
NmZsTzhgQD1jJW0rY1BgaXN4ZzhaM0hSdT9GP2hDP1o3WCtxXi1MRzR1fkBhUSNfcj0/QiZ5KFk4
YWgqNnJZCnpuIztwWkw/ZmRYSyopZWRpfHQzdkdMbVo4WDl7JFFMfkxuYExTMHoxeksjXlc2ZXQw
dDZzMFY1VVJTZ1h3ZCQ8agp6bWRSTlJPJmtvQ2laYERsYjAlJlJCNFo9ckJRenprbShpN3RvRW0y
OCVvY21Xd3J3bHZsVzd5blVodTZeV2N8V1oKemxuUWdPVDxIb3hMWlpqSk9WRDdIcnhNJjVLSWo+
JSN2SFJzSH1Ec09TWXdMVVlRTS1LeUR0czYqX1h9YHlJd1pvCnpkVUNFd2ZtUSkoYV9QfkBUO3N3
WVFjSjUyOHwhazJnT204YDk7PE1vaG5gIUA2JVpwKDZmU15KVkFzbHhfXzs2VQp6VCE8OD9AIU1Q
bGl7VjdGcVAqdlB1WTgwS0ZtMXFDTUBaYDdZOUZ2b2hKayVCNnF0R2sqdF9tMXphe0psN0Z3YV8K
eigobz0yaWolfT8+eilFfCEkZDtMb1FIVXRUIy1tNWh4IXM+OHpoVio9cVo0O08jc219SllIIUpT
ekJLWjVsaj5iCno4T0FRdnlhKXBSdzlYKk5IQ1VRY2A0R0BidSVBfTNsSEV8aUxmWmBQISpII01k
JUhgcUk2elMwck0tKD17KEhNTAp6X3VVeEJnP0AqOFJIZlNsbHF8SDJgMGM8SHZjemlCXkluayY/
Z3glOExzYz4lRGRNSk85TjdpcW5MPCMxVUQrKDUKej9LNnZ1XnpMIzMxdm9AdTB7ZGw2aFYqMDMm
JENuI3dvUFFAdUhRWHxjfXZPMWd7TXFJPk88ZVg8emBqckBOIz8qCno8YzF8Y0c2WjU2XnVJYmNz
PkhGY0RDfk9KbV5heyhCd0BwSEhObFZXKzJ+PD0qKUJpYDNkSEtyOG90ZXpsOUE2cQp6KEA8OGVm
MnJtO1Z2dWZBZ05iciZfeS1+M3JpQSYjbVRINW9mJj4kJTR7eCl0TF9UfiZKT1BleExZVFFXMEI5
TXIKekE/a2kwPEBORSVGZGk5RUZJK0UjT14mJFAzY0MoO09tKG1ILVFOcU5fK303QldBYUlBSTY2
PU8kKlNvVDVUTSNtCnomUTFWNV8kQF53QnRAIUN7Ji1KPWhNPlBSbG81RTA7MXVUZTNNITVGZTcm
MTVGeVA4M1g8WUZCRjF6LTNRYTNLcwp6PDVPOCE9M0wxbWJaUjtITzQjfHtMTlRLcGBNSTNwMDIr
UlRHT2JkSXVoLVkycU0+UnopSmZQPSZCfUc7PTFfYGgKelE3UCFlN0Q7MEReWEokNU9LeHVCZXYy
SmFyOzRPRytnfD9WTnhEJTUmY1J7cyFUMEFjZyE1cDRgJDZOelk0Y34tCnp2KE19NSg3VTF3LTMj
bCZuRGFKNFc0dGZ8cit1YFJZUUghUGRKZig9NENwbVcmUSFeSk1Sd1NSUWRMXntvam48OQp6VXRw
bGBSWj0wIStkUntUQ087djdudiUxbVR3S1ZMTU1sPC1pcCFwTTx4XyhiIURAI1IycHl9YXNxeWJF
eERIO1gKemo8X1V0aXAtS1pQUHloYmJ5aE4zXj5xNENsKENjT0g3Qj5AUGwpWSpGQjhwak4tZVht
YntWZChuOTBEWD0zSUVPCnpGUVFAUlV1WXdQVTNaRmFfUkAlWW9IOFlMaHZsa2pIcShQcWtVcnFU
VENHfTdMRn55TDlqKld+TSkoWiN4b3lkWgp6Y01oPj8lSUAkbXVaTUlVYylrMmFzKG9pWVRANil5
cVpRO211cSM/PXpXKU1+K0Q2QGQ7VXdkUUQmTUIhYnAreTkKeiVDNkFRMiEhNU8jXztuJDlsRWE3
bmc5PWFhcH09a1k3bHVxWSQ9Yis0MTc3OCNsR3d7YWJoMiNiVk50OWBfP34tCnpvZF4hWmJndHJk
KyYhQFQzRSp1K2xsPlp4K01ZbldrakpQMUxubFVsO1ZyeyY9e2VyfElXdVZHdmArKnU3I2Mpfgp6
eFh+YWZmaE8hTTsrRiNFYT8xfURESS0rKlhIUSVCdWFibHo7P1pRWW9LR3R0dGFvbHM1OylTQDdu
cFdUcU44Tk8Kent1Q2hXV29TZiVzRjMqJlZQaDR1QmxKaDtSfTUkSXgmdmJ2MlJkbjEzeng4QDJH
Ym5vZnAoWVlaYkE7OzRBO2hrCnpeVyM8NV9SYW11Qj1EVzgtJHVDSGFOTT9lczdPZVhLZWRrcSU9
VWAwMm5NR2xRZ1U2P2IqMWd6Snt2cjtJUktQPAp6UFhVYXdjRTNwfUZkTWdTQTduYHBGKExTRTA8
K3dIZX1ecn1jUSYmI1RfLVpkNG9JVGg7SF82c01ke2ohUlVsKX0KekkoV2s7bHpAYGJPfSNMSXRE
KDlDdGk/bFVxLUFBUWZ0PzM2akpyJms3Rm08dlBEOz4+TEN0MEwlNSEtM2pGQUtPCnp3bnV+KWt9
PSlhYlVERTYhO288MFA2SX0oS3VtTkYlQFhOek1EWTJlO0hLaGM2K2MkaVNVWUckQEt1N1Jea18r
VAp6NGB4YjdDdSR9I1pZe0hUd1ojcjBCWDYqMXdOYEc7V35Za3F6LU1BeSUqRVMyUGhkNmA7Vldj
bE55YT01YTQkWVMKelVMKStnNityNWpNPSZJSkp+JFZxTFF5a2ZeS3c9UnBgNmBUeSlEVW9eXyU7
akNIPndJJkxkK0ZfT0AyY1kwPzR9CnpyWTF2ZkUjbHliWiRVVm8jPllQemthT3lQSlRNQkFDUj1D
aFVuVTlBSWlPUjBpbjx5MVVuZUNLPGdlOGBifmV8JQp6MDZuMVB6KGk9Z0BtfnhfRT9sbitqfX03
KSV4SXh+dy0/SWNpWmZufGdYOWg8PHorSD41WSg+eDBMJSElLTwzfkwKeis0fm1vUkc3aEJRVUMk
OTJATkRGME9UNDBDWkV1bCZqIXpGc0JMdlhDdDx2Jjk/SGVBMVM/PGFGJWZTfj9iTU1MCnojZDto
SV57YD5yc29wV2xgOCE7Qzh1TzMhd2VQM2NqbilUJiZ9QlRFaz1BQTk8PWtjWlozQCYzKzByMkxi
MW1fbAp6cmgtX3Q7LUl5ST1sRHM/Iy1BeElufUJqMGVnWmh4OHotM1lHekMzT1lvYkVLMWxjfHM2
QjlHdXhWdWZHZEg9Mm0KeiVITGhyMT9iIWFgR0xkZUFBPD9vd3VETzFIcjgwXkdFPlI4MDdlOSFO
WklEMGlLPjBXbUZ+OE1mcmtHblQwMV5jCnoxUnZQKTQhWGpmeklsVGQtUn5IWG5kI0sxLWRIXkRH
ZzFDUChVS0pVeTMqaEwpMF9aYmttJU17bT1HQVA9cG1HVAp6Y0NxeWhSfnQ3MWJIZD51LX1JNk0w
PkxmS18lNlc2em93Y303QiM+JXA7KGZeOV4wYks+Qz9jOGtGJHkoPD5lUkwKekJtZVVaOzZRZ0Zh
N3whYF81Nz5SSVEjdFNSbjJlRGVmRFEtLW11UmJQNihPdXAwJlElY3hxan5aYXpfcVlJeFE+Cnpl
WW0lTHR5d0tBO1R5JlBuWkJTZnYyTG5ldEkxI0cjd153eUsrOzVITlR3bHw4RytsYFNScWxUSjVu
RkRwWiQjYAp6c2ptNTh6RFAoRXZneEZETFklVCUyQG9zRyRRNXlNQHlaMjs9TH1vMHdMeU9PWmdw
VVVGNTNzYWlaRVopYStiTTsKekEyV3BNYE4pQihjX19TXyh6dz13MWNlTnlFcFlHZFR2SGhRUGV0
UXlBQnwyPXk1Wl5ZJHZHR0dXTDd6KGhNa0o/CnpLWH0tOWcycmhaVkpzb3gwITBGQ0Rybih4cjtF
WnFHMGIlSGxWOzA+KnFrb3t4MXVOflgrUGFMdl55ekJSRGhISwp6VnYjdUxNKElNMTBHdldjOGlC
YjVYdjQkLWNrcnZCKlk/ODkxOE9IIzxmKik/QzVKakFzajR0QCE/P1gmaFMrM34KekdgSSNoUnFX
bGshQyZgUUNIR2MwI3YrJmNpbDtJR2VMejhLYn16Um5FJlphcVBUeVlBJj9TRiMrVEtrezJDUmUq
Cnp6fDY0PWlRYWA4WElSNDlPR0tqYWJxME9vUCZYfWkxfHxlbzVDTWJHSmA+UkBTbjVzX1pieVNk
byZEdEgqR259Rgp6YnJVbk0ySzwzQlVxenhZaE1TQmNvTlNHRS09KSlWZHRQfVhRTXZ2VFYoNkxh
WD9afEdTYU91dHB6emMtR3pxUkYKejBmbVc9ezswdDxSKHsyRzlvJHl1TDJrM0ZqPj1qfCRoO3VT
PDFyTztkM2FUai03cFRAZ1Z8NlUqZFYmUys5ZGJPCnp2b3JKYXJ8MEZjfEE9N0xjVlZ7JGU4d0wj
QWs/X3ZTZnZmPHh7O2twSWJJJX5KUipILTVQJDF+ZTNHMllGZ1dfRQp6dzkwbEVocHJeSndfVTY5
eFhJVkZIcXxaJi1HZjJ5VkFeKnx8SysmQWErfn5FbT5LcyFgcVpHRDlfTV5kb0VKemgKenUmQkV8
bz9wYyFYYFl9fFR+SHZQdkFmYGNRLVZQLVhoKnpkTHI1eyQmfGJ1Q1JPR05lVVFEXnZkSmlgQmc2
YHZMCnpfVXQkOG12Z0kpaTkpN3hrYU9WNSF1bm9iaUtrfHhjU1pNPj4rOU5rRTNNSSkrPEp3ZjM/
MT9aeGx2OTI2Y3AqVwp6b3pAd2MyR2N7KUozbkFEdzVTN1BWWlE2fVhGTTkxPWchUGVNNGxWPFlt
R2FUK0l3bD1SUl9eNks2U3hZN1orfkgKej83eW5DTU12RXd3ZVhSTVM1WUxFMm93c3tDR2lDIUJf
a0BvbmRJLUJwM2EofmgmK3l2WH4tNystOztgZTt1IXlfCnp8RlZpeD8/QnFLVEp4WGRZO1pNT18h
Z21Sc0M/JWo7X0o5VEkyZD10ZSg3SEFpQVhqWXt0RUZ7PWcoaCF7TyFMeQp6N3wqY3J3NyVfTnl1
UWkhSFk+SDFAc2dvdk93I21eU3ExRXlSQD1BVkN+XllwVXFabE1yQV53b0JndmZWeTgyfTQKekAx
TVRxa2h1fmZaMUBmdFdEcEk7cHJJfkA0TzMyNDk5cXcmVEB0YUlvKVFRckl5ZzkobndsMDNePnJ5
c14oaUV4Cno1O3Y2YEJWPTc3V1RCM2ZVOzE8eWhDWXBkRG1HdE9aVi1KUHE7Py1WJFk2VS0+dDU2
diVRPn5Mcn4pfTw1b0l5Swp6Q2Nlc0JsWExVNGp5QFNTaSY+Uz1lR1IoS1dpPnRCX3NwZEozJnQ1
fDErTlYjXzZKYTdsTWx8NkJvR1daZV5LY14Kemo0PFJsV2BYZzxQLWxIWU9fNzY3U0FNeERsRXNg
UjtCWTgjbWlnLWYhVnJDN1NsfSF5RHctQzUjcWNAVnN1Z2grCno2QDRnJih5PThvPGx1YG51dG5O
I1omOGA/WkVweiNsO0tiMCQoe1lAIW4zNjxnbUJwLU91Smo2ZGRhK00lLVBMRwp6QG9PdnluWT8j
XyhMNDc4MVUoIVZHWWFQRGJ+Xz9EcU5ZeDVrX2Q3fG1kYyYzVkQ2O21vfmQtNWkyQUlldTFgMVcK
el94aCVMYSFOMnVecyNUd1FOKylnKGlTcjZTTnhSPCZ9eXNyX0hlLTxMITBjQCY0WW5GJGVYb0t6
ckhkKEBNfHUrCnppUChJVjhxYzIoWklkIy1lcV9GPFEzWX48bEoraThNJllTNGdgOFFWVm4zVXla
Pnk3cHk1NGoyaEU3cyQpLWlrYwp6ZlBLI3o0fCtlXndrajZuNExwRDdTIWlsbSo4Nzc3SDgmNiRk
NUNANG02QEJ2Kkp2QHN5XyhgaHs9bDl7MTVRbXcKejQ3KzVjRk4hKGtJX1l2bXVTTTZjPDtCczRC
Pm0ocnJWQ3wkVDZVSTVAMDNNcFg8MDdlQ1o9JjReRDs+aEwlRVg4Cnp3OSRlNTk4dk0+TnArZ2lh
eHp8WUVGK3EyZDJKRGB7M05EV0lYUmhmWjk2QXRgQEMqXmxIc1JeOEdadk0xZ3Naegp6QyRqWU9Q
VkYtKSYyUWReKmVMbjcwS1M7Vnt5KmN1JVR3SnpyN1NwOV59dWRWJihEVVhXSz9FV1Z0I2dUKkl6
U3kKemwqYz9Bbnt+Klg1eG9QYXQhcm9KWEF7PXU2VUpUVCh5aVB6bmtGTWVMTGxTMFFLZks9Zjw8
SCYmcWEhezZ2OUJnCnpBb2ZlaFZHe3hTblUoNEl7Tm44NWlSVXF1Kl5+RVhicXg8PkdMcUsqRUIx
blojcnxlTFlvfEg4P0xLcT4qTmFaSwp6RWpgMXBLVkdqSjd9KFg8KXQ1YWI/dT5HRVhrYEVYZEIq
MSo1PDZHQjwrKXZzI2xCOWtvaVo0OWt1P21gaTxDS1YKejRyOW51KDUqNG88Qj5uSnBiTGUkRmdH
QUp1WHVobioxMU15Y0tVREd0OWlmKE4keDU/dXVVPDFwKCs9XlZIQk0hCnpKSD9II0glcl4rOzln
U2MhZ0xaaEZydT9IeFM/eG9Ta3w5X01yNjFlVmg/NHJOaChMQHg5Y1NIe2g3ekdsbFI5ZQp6T2k7
RjA0TWlBaHpOPmUkKTt7RnZtWnQ/VlZCRzdVaWIpM0dyVGw9WWFFVmJiMX1GWEpWLXN1KD5pSyV9
IT9BfjAKejVWS21hMX4rTFJOT21saU94OTB0T0gjKHk9U2pVdVFhMWdnVVJqbjsod2M2bCRzJlJl
cFgxaFdHT1QwQ0BNUlBfCnpmRXclO0IpZDNuNHtKTjVndmJ+Q0JjJmJlOXZKblQ0NVd5TlBLb19H
Zyp2bEBNe2hWayhBTHVYdn1ePDJnNyFMbAp6MlBhZWkmZTxeOSsrYEthPn08UmQrajQ0dCozWCVy
S3VQJmR3NEptNDt0czcxKGdaQHdBRm1YfUNnSXwyQDB8RnkKemV+QGdKPiFwKFlkM1MhV3VHTkl+
O3R2VHJlNkU1NklyaXgyMUJtNkRMS2djRlUhNDQoYWdkZXY0dXUzXkJ1bnBMCnpNXzw9YmJ6T0lU
X3FuXj5sUEBRO1BvZy1oQkBKMXQ4OH4qeF8lJE9EOERMS3ViSm03QGhrRG9Ma2RjIy10Zz5mWgp6
USE4TDdeSSowUlU/Oz52QHwhWUROdlNnVi1CXmJsOHNONiZ5dHE1RW05O0IxPnlYfEBeIWZJck1K
Yzh2ZGg+T0UKemNMJWtZeE80aHFgb3d4IyowR1AqcnZQazBvZ212eTJkaDRHaFlBMXV2K21+fExJ
d3M+N057O1g+SH4lTHcjQDFnCnokM0pqQ09XR25ndk85bXF5bUtIYDV3QUdWUTt6SiMrIzhvMV4y
TCVudUtrZ30mOztAX3ZSIzt7YkotWERvJk9IVwp6SDRrKHswfnxTV25PO1VyVWF3cTlFeSF7I1JV
amcraiU4NX44d3J8d2k9dmEwUlRjaGgzYjIjeE98R1I/Wk9eaTwKekdTPlZoZk9IcCEzfXZBPFZF
NlVYS2JPPGIoJDhJKCVDemxyfEZNQ3t3XzV9JDZyZyEmaHEofnNTWGpmai02fHdJCnptNzArV2wz
SztiR1lEbEhye1l0VmJ2eHJAIXtCfkBXaWhmZnohN29lWHJNJHlmN1dnOHN9JCYhUnJ8bGxmISVe
Kwp6SD5KflFaQjw/ZmJHMUtHeTY1ZSYrPis4VmJ6T3J0PG88VE48KipsVmRGV1ZUJSFeT1UmUGNJ
SHpTR3MrVSQqdEsKej4qIUw/Nlc+e0ttdDN5RWRreXF3RUdmT35iNGFYWGtVWTQjI0p+fEh5clBu
PCo5ayRoVlIlZE5jYDJaeSQmIzxwCno9aU8wJTlUKk1rXjwtNzt7QG5aeThGdnZ4bkdvK2dIVUVQ
ZF5NNXBWe3g1I2QoSnJWZC09eCRZMisyPkgqV1k3Mgp6Smw7SCY1d2xgaUd3c29ZbWNJS1VDOXRj
JXBHUkdudWojdHxeOyNJTGkjXz8+VjZ1R3BCa3s0bFN7VTM4Ryk7KEMKejA2cDUtSmpDfWIqXyh8
cU0qbGNWfENhfCZ8Rj9EO0E3OVRqR2F8YVh5RGdLfFp3OUN4SlVodTlOTX1FMEtgfCF1CnpYdzJj
NkZoSEtYKUtPNFY+UX5yUHpQaDVAYE5DVUkkbHZneVZXdl44M0ZxI1RhMmE9Mj5aWHQoYiFZIXVv
YW5BWgp6Sj4wOVR0anJvO29iQkZMPjwpUnE9R0R2Ukd8Y0F8ayZAd2FjYFlUSTMoNkRPWXZxekRg
ZjlNIXk7IVh0UG8wV0EKekVIdVIoODFVYDlpbT87RmxRPilIeTd6aSg1NDQhb3QxV3x1MmV3LTRK
e1EmaHFyU0FnPCFOfE9fZk17czh6OHY7CnoqWk1TQzcyZmlIVFVlUHxwU1BYKmVeSCshPmM7V094
UXVeUz1sQDY1YENuWjh8R3hjU3pVSzRhQUNtdFRNRShmWAp6WD0pQERubEFpTiYqTjg4ZjE0My0/
bj1QV1Y1ey1aY203ajR7QCpBNlchQ2NWa28tRiZlPUR6RFQmVG5DIVZgQ0kKVFBRZjRHQXVnJEZ8
QzBCISNxSXdFQH1nZWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODc4ZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorVGhlcmUgc2hvdWxkIGJlIG9uZSBiaWcgc3F1YXJlIGJlbG93IGNvbnRh
aW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVmdCBzcXVhcmUgc2hvdWxkIGJlIGZpbGxlZCB3aXRo
IDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCByaWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNv
bHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0b20gbGVmdCBzcXVhcmUgc2hvdWxkIGhhdmUgb25l
IHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRoZSBib3R0b20gcmlnaHQgc3F1YXJlIHNob3VsZCBo
YXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNvcm5lci4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1sIGIvTGF5b3V0VGVz
dHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wYTYzMzNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKyA8aGVhZD4KKyAgPHRpdGxlPlRlc3QgZm9y
IFdLMTEzNDIwOiBTVkctYmFzZWQgcGF0dGVybnMgc2hvdWxkIGJlIGRyYXduIGNvcnJlY3RseTwv
dGl0bGU+CisgIDxzdHlsZT4gY2FudmFzIHsgYm9yZGVyOnNvbGlkICMwMDAgfSA8L3N0eWxlPgor
ICA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICB9
CisgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKXsKKyAgICB2YXIgaSA9IG5ldyBJbWFnZSgp
OworICAgIGkuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzUwJyBoZWlnaHQ9JzUwJz48Y2lyY2xlIGN4PScxMCcg
Y3k9JzEwJyByPScxMCcgZmlsbD0nZ3JlZW4nIC8+PC9zdmc+IjsKKyAgICBpLm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpOworCisgICAgICB2YXIgcGF0dGVybiA9IGN0
eC5jcmVhdGVQYXR0ZXJuKGksICJyZXBlYXQiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBwYXR0
ZXJuOworICAgICAgY3R4LnRyYW5zbGF0ZSgxMCwgMTApOworICAgICAgY3R4LnN0cm9rZVJlY3Qo
MCwgMCwgMTUwLCAxNTApOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKwor
ICAgICAgdmFyIHBhdHRlcm5YID0gY3R4LmNyZWF0ZVBhdHRlcm4oaSwgInJlcGVhdC14Iik7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVyblg7CisgICAgICBjdHgudHJhbnNsYXRlKDAsIDE2
MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmls
bFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICB2YXIgcGF0dGVybk4gPSBjdHguY3JlYXRl
UGF0dGVybihpLCAibm8tcmVwZWF0Iik7CisgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVybk47
CisgICAgICBjdHgudHJhbnNsYXRlKDE2MCwgMCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAw
LCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAg
ICB2YXIgcGF0dGVyblkgPSBjdHguY3JlYXRlUGF0dGVybihpLCAicmVwZWF0LXkiKTsKKyAgICAg
IGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuWTsKKyAgICAgIGN0eC50cmFuc2xhdGUoMCwgLTE2MCk7
CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorICAgfQorICA8L3NjcmlwdD4K
KyA8L2hlYWQ+CisgPGJvZHk+CisgIDxwPlRoZXJlIHNob3VsZCBiZSBvbmUgYmlnIHNxdWFyZSBi
ZWxvdyBjb250YWluaW5nIGZvdXIgc3F1YXJlcy4gVG9wIGxlZnQgc3F1YXJlIHNob3VsZCBiZSBm
aWxsZWQgd2l0aCAzIHJvd3Mgb2YgMyBjaXJjbGVzLiBUb3AgcmlnaHQgc3F1YXJlIHNob3VsZCBo
YXZlIG9uZSBjb2x1bW4gb2YgMyBjaXJjbGVzLiBUaGUgYm90dG9tIGxlZnQgc3F1YXJlIHNob3Vs
ZCBoYXZlIG9uZSByb3cgd2l0aCB0aHJlZSBjaXJjbGVzLiBUaGUgYm90dG9tIHJpZ2h0IHNxdWFy
ZSBzaG91bGQgaGF2ZSBvbmUgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPC9wPgorICA8
cD48Y2FudmFzIGhlaWdodD0iMzMwIiB3aWR0aD0iMzMwIj48L2NhbnZhcz48L3A+CisgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNzIzZTUuLjBiMDU4OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNzEgQEAKKzIwMTMtMDMtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBz
aXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3Vz
dG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBO
YXRpdmVJbWFnZVBhc3NQdHIgdHlwZWRlZiB0aGF0IGlzIHVzZWQgaW4gcGxhY2Ugb2YgTmF0aXZl
SW1hZ2VQdHIKKyAgICAgICAgZm9yIG1ldGhvZCBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMu
IFRoaXMgaXMgbmVlZGVkIGFzIFNraWEgbm93IG1hcHMKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIg
dG8gUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYW5kIE5hdGl2ZUltYWdlUGFzc1B0ciB0bworICAg
ICAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4uIFdlIG1vdmUgdG93YXJkcyByZWYgY291
bnRlZCBzbWFydCBwb2ludGVycyBzbyB0aGF0CisgICAgICAgIFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZQor
ICAgICAgICBpbWFnZSB0byB0aGUgY2FsbGVyIGlmIG5lZWRlZCAoZS5nLiBmb3IgU1ZHSW1hZ2Up
LgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbXBsZW1l
bnRhdGlvbiBmb3IgU1ZHSW1hZ2UuIFNWR0ltYWdlIG5vCisgICAgICAgIGxvbmdlciBob2xkcyB0
aGUgbmF0aXZlIGltYWdlIGludGVybmFsbHksIHRvIHNhdmUgbWVtb3J5LiBJdCBpcyB0aGVyZWZv
cmUgY3JlYXRlZAorICAgICAgICB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaXMg
Y2FsbGVkIGFuZCBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZQorICAgICAgICBjYWxsZXIuIEZv
ciBub3csIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgb25seSBlbmFibGVkIGZvciBTa2lhIGFzIG90
aGVycyBhcmUgdXNpbmcKKyAgICAgICAgcmF3IHBvaW50ZXJzIGZvciBOYXRpdmVJbWFnZVBhc3NQ
dHIuCisKKyAgICAgICAgVGVzdDogc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbAor
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAg
ICAgIFJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0ciBpbnN0ZWFkIG9mIE5hdGl2ZUltYWdlUHRy
LgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgIChJY29u
RGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICBSZXR1cm4gYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW5zdGVhZCBv
ZiBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFn
ZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3CisgICAgICAgIG9uZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgU3RvcmUgcmV0
dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPgorICAgICAgICBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuIFdoaWxl
IHRoZXNlIGFyZSBlcXVpdmFsZW50LCB0aGUgZm9ybWVyIGlzIG1vcmUKKyAgICAgICAgcmVhZGFi
bGUgaW4gU2tpYS1zcGVjaWZpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJ
bmRleCk6CisgICAgICAgIFJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0ciBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0
ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0
ZSk6CisgICAgICAgIFRha2UgYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW4gYXJndW1lbnQgaW5zdGVh
ZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIChCaXRtYXBJbWFnZSk6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
IChHcmFwaGljc0NvbnRleHQpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFnZUV4dHJhY3Rvcik6CisgICAgICAg
IEtlZXAgTmF0aXZlSW1hZ2VTa2lhIGluIGEgUmVmUHRyIGluc3RlYWQgb2YgT3duUHRyLCBub3cg
dGhhdCBpdCBpcyByZWZjb3VudGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIFJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0ciBpbnN0ZWFkIG9mIGEgTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoSW1hZ2VCdWZmZXIpOgorICAgICAgICBIYXZlIGNvcHlOYXRpdmVJbWFnZSgp
IHJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToKKyAgICAgICAgUmV0
dXJuIGEgTmF0aXZlSW1hZ2VQYXNzUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIEhhdmUg
Y3JlYXRlRnJhbWVBdEluZGV4KCkgcmV0dXJuIGEgTmF0aXZlSW1hZ2VQYXNzUHRyIGluc3RlYWQg
b2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmg6CisgICAgICAgIE1hcCBOYXRpdmVJbWFnZVB0ciB0byBhIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VTa2lhKiBmb3IgU2tpYS4KKyAgICAg
ICAgSW50cm9kdWNlIG5ldyBOYXRpdmVJbWFnZVBhc3NQdHIgdGhhdCBtYXBzIHRvIFBhc3NSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3IgU2tpYQorICAgICAgICBhbmQgaXMgZXF1aXZhbGVudCB0
byBOYXRpdmVJbWFnZVB0ciBmb3Igb3RoZXIgcG9ydHMuIFdlIG5vdyB1c2Ugc21hcnQgcG9pbnRl
cnMgZm9yCisgICAgICAgIHRoZSBuYXRpdmUgaW1hZ2Ugc28gdGhhdCBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYW4gcGFzcyBvd25lcnNoaXAKKyAgICAgICAgb2YgdGhl
IG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyLCB1bmxpa2UgQml0bWFwSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgTmF0aXZlSW1hZ2VQYXNzUHRy
IGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgVGFrZSBhIE5hdGl2ZUltYWdlUGFzc1B0ciBp
bnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1lbnQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKToKKyAgICAgICAgVGFrZSBhIE5hdGl2ZUlt
YWdlUGFzc1B0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1lbnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50
c1RvSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21w
b25lbnRUcmFuc2ZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFu
c2Zlcjo6cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEpOiBE
aXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICBSZXR1cm4gYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdl
UHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgUmV0dXJuIGEgTmF0aXZlSW1hZ2VQYXNzUHRyIGluc3RlYWQgb2YgYSBOYXRp
dmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VR
dC5oOgorICAgICAgICAoU3RpbGxJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZWNv
ZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICBVcGRhdGUgdXNlIG9m
IG1fbmF0aXZlSW1hZ2Ugbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyIHR5cGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhKToK
KyAgICAgICAgS2VlcCBtX25hdGl2ZUltYWdlIGluIGEgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
aW5zdGVhZCBvZgorICAgICAgICBOYXRpdmVJbWFnZVNraWEsIGFzIE5hdGl2ZUltYWdlU2tpYSBp
cyBub3cgcmVmIGNvdW50ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIE5vIGxvbmdlciBu
ZWVkIHRvIGFkb3B0IHRoZSByZXR1cm4gdmFsdWUgb2YgYXNOZXdOYXRpdmVJbWFnZSgpIG5vdwor
ICAgICAgICB0aGF0IGl0IHJldHVybnMgYSBQYXNzUmVmUHRyIGluc3RlYWQgb2YgYSByYXcgb25l
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIEp1c3QgY2FsbCBjbGVh
cigpIG9uIG1fZnJhbWUgaW5zdGVhZCBvZiBleHBsaWNpdGVseSBkZWxldGluZyBpdCBub3cKKyAg
ICAgICAgdGhhdCBpdCBpcyBhIFJlZlB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUu
CisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgor
ICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgZnJhbWVBdEluZGV4KCkgaW4gYSBSZWZQdHIg
aW5zdGVhZCBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3KToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KToKKyAgICAg
ICAgVXBkYXRlIHVzZSBvZiBtX25hdGl2ZUltYWdlIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlciB0
eXBlLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Qml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYTo6
Y3JlYXRlKCkgdG8gaW5pdGlhbGl6ZSBtX25hdGl2ZUltYWdlIG5vdyB0aGF0CisgICAgICAgIE5h
dGl2ZUltYWdlU2tpYSdzIGNvbnN0cnVjdG9yIGlzIHByaXZhdGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYSk6CisgICAgICAgIEFkZCBuZXcgY29u
c3RydWN0b3IgdGFraW5nIGFsbCBtZW1iZXJzIGluIGFyZ3VtZW50LiBUaGlzIGlzIHVzZWQgZm9y
CisgICAgICAgIGNsb25pbmcgYSBOYXRpdmVJbWFnZVNraWEgb2JqZWN0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUpOgorICAgICAg
ICAoTmF0aXZlSW1hZ2VTa2lhKToKKyAgICAgICAgTWFrZSBOYXRpdmVJbWFnZVNraWEgc3ViY2xh
c3MgUmVmQ291bnRlZC4gTWFrZSB0aGUgY29uc3RydWN0b3IgcHJpdmF0ZQorICAgICAgICBhbmQg
YWRkIGEgZmFjdG9yeSBtZXRob2QgaW5zdGVhZCB0aGF0IHJldHVybnMgYSBQYXNzUmVmUHRyLgor
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWE6OmNsb25lKToKKyAgICAgICAgQWRk
IGEgY2xvbmUoKSBtZXRob2Qgbm93IHRoYXQgTmF0aXZlSW1hZ2VTa2lhIGlzIHJlZmNvdW50ZWQg
YW5kIGlzIG5vCisgICAgICAgIGxvbmdlciBjb3B5YWJsZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVy
bjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBh
IHJhdyBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICBSZXR1cm4gYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUlt
YWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgSGF2ZSBhc05ld05hdGl2ZUltYWdl
KCkgcmV0dXJuIGEgTmF0aXZlSW1hZ2VQYXNzUHRyIGluc3RlYWQgb2YgYQorICAgICAgICBOYXRp
dmVJbWFnZVB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpnZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpoZWlnaHQpOgorICAg
ICAgICBVcGRhdGUgdXNlIG9mIG1fYml0bWFwIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlciB0eXBl
IGFuZCBjYWxsCisgICAgICAgIE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCkgdG8gY29uc3RydWN0
IGEgTmF0aXZlSW1hZ2VTa2lhIG9iamVjdCBub3cKKyAgICAgICAgdGhhdCB0aGUgY29uc3RydWN0
b3IgaXMgcHJpdmF0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW5z
dGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvb3BlbnZnL0ltYWdlRGVjb2Rlck9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIEluaXRpYWxpemUgbV9iaXRt
YXAgaW4gdGhlIGNvbnN0cnVjdG9yIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlcgorICAgICAgICB0
eXBlIGFuZCB3ZSBuZWVkIE5hdGl2ZUltYWdlU2tpYSdzIGRlZmF1bHQgY29uc3RydWN0b3IgdG8g
YmUKKyAgICAgICAgY2FsbGVkLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVy
YXRvcj0pOgorICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYSdzIG5ldyBjbG9uZSgpIG1ldGhv
ZCB0byBjb3B5IG1fYml0bWFwIGFzCisgICAgICAgIE5hdGl2ZUltYWdlU2tpYSBpcyBub3cgUmVm
Q291bnRlZCBhbmQgbm8gbG9uZ2VyIGNvcHlhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6
ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0
bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKToKKyAgICAg
ICAgVXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIgdHlwZS4K
KworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIFJldHVybiBhIE5hdGl2ZUltYWdlUGFzc1B0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQ
dHIuCisgICAgICAgIENhbGwgTmF0aXZlSW1hZ2VTa2lhJ3MgY2xvbmUgbWV0aG9kIG5vdyB0aGF0
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICBjb3B5YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0SGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6
c2V0U3RhdHVzKToKKyAgICAgICAgVXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBp
cyBhIHBvaW50ZXIgdHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4
L0ltYWdlRGVjb2Rlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBOYXRpdmVJbWFnZVBhc3NQdHIgaW5zdGVh
ZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9m
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgZm9yIFNWR0ltYWdlIGFzCisgICAgICAgIGl0
IGlzIG5lZWRlZCBmb3IgU1ZHIGN1c3RvbSBjdXJzb3Igc3VwcG9ydCBhbmQgQ2FudmFzIGRyYXdp
bmcgb2YKKyAgICAgICAgcGF0dGVybnMgY29udGFpbmluZyBTVkcgaW1hZ2VzLiBBcyBTVkdJbWFn
ZSBubyBsb25nZXIga2VlcCB0aGUKKyAgICAgICAgbmF0aXZlIGltYWdlIGludGVybmFsbHkgdG8g
c2F2ZSBtZW1vcnksIHRoZSBpbXBsZW1lbnRhdGlvbiBjcmVhdGVzCisgICAgICAgIHRoZSBuYXRp
dmUgaW1hZ2Ugd2hlbiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGFuZCBwYXNzZXMKKyAg
ICAgICAgaXRzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVyLgorCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmg6CisgICAgICAgIE92ZXJyaWRlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIGFuZCByZW1vdmUgZHVtbXkKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Yg
ZnJhbWVBdEluZGV4KCkgYXMgaXQgaXMgbm90IG5lZWRlZCAvIHVzZWQuCisKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAg
ICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgd2hp
Y2ggbWVyZWx5CisgICAgICAgIGZvcndhcmRzIHRoZSBjYWxsIHRvIHRoZSBJbWFnZSBiZWluZyBj
b250YWluZWQuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aDoKKyAgICAgICAgT3ZlcnJpZGUgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCku
CisKIDIwMTMtMDMtMzAgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ3Jvc3MtT3JpZ2luIGNvcHkmcGFzdGUgLyBkcmFnJmRyb3AgYWxsb3dpbmcgWFNTIHZpYSBz
cmNkb2MgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggM2NiMTM5Ni4uZjJiOGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSW1hZ2UqIEljb25EYXRh
YmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2
ZUltYWdlUGFzc1B0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmln
aW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5kNjMzZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKIAogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQYXNzUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uMjQz
ZWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25v
dXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9h
ZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
YXNzUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29u
c3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3
ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hy
b21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFn
ZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNr
aWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRt
YXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmlu
ZGV4IDA3ZmE5YTkuLjEzM2ZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBj
ZjQzMDczLi4xM2RjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6
ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
TmF0aXZlSW1hZ2VQYXNzUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMzIwLDcgKzMyMCw3IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0
aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQYXNzUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAppbmRleCBhODdjZDU4Li5lNWQ4MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBCaXRtYXBJ
bWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVyYXRl
ZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOwogICAgIH0KQEAgLTE3
Nyw3ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09i
amVjdChFdmFzKik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUGFzc1B0ciBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VPcmll
bnRhdGlvbiBjdXJyZW50RnJhbWVPcmllbnRhdGlvbigpOwpAQCAtMTk4LDcgKzE5OSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtu
b3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIEJpdG1hcEltYWdlKE5hdGl2ZUltYWdl
UHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOworICAgIEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUGFz
c1B0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKICAgICBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVy
KiA9IDApOwogI2lmIFBMQVRGT1JNKFdYKQogICAgIEJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFw
Jik7CkBAIC0yMTksNyArMjIwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXpl
X3QgZnJhbWVDb3VudCgpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3Qp
OworICAgIE5hdGl2ZUltYWdlUGFzc1B0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29s
IGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggNWJjODg4MS4uNzdiNGZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAg
ICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbik7CisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
UGFzc1B0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcp
LiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dz
Rm9udFNtb290aGluZyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGVhM2E3MjguLjVkYTI5NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtOTIzLDggKzkyMyw4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBleHRyYWN0SW1h
Z2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KTsKIAogI2lmIFVTRShTS0lBKQotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25h
dGl2ZUltYWdlOwotICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG1fc2tpYUltYWdlOworICAgICAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOworICAgICAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBtX3NraWFJbWFnZTsKICNlbGlmIFVTRShDQUlSTykKICAgICAgICAg
SW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9pbWFnZVN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApp
bmRleCA2Mzc2NDNkLi5mNmJlMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxl
IHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWU0ZTVkNC4uNzZlYzZk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToK
ICNpZiBVU0UoQ0cpCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CisgICAgICAgIE5hdGl2ZUlt
YWdlUGFzc1B0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0OwogI2VuZGlmCiAgICAgICAgIHZvaWQgY2xpcChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDkxNzQwMGUuLmVjNmRiMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4
IDY2YThhMGEuLjRiZTgwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENh
bGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBo
aWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAg
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgTmF0aXZlSW1h
Z2VQYXNzUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOwogCiAgICAgZmxvYXQgZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBo
YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oCmluZGV4IDFhZDViZTkuLjU4NzFjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtNTYsNiArNTYsOCBAQCBjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJWE1FOiBOYXRp
dmVJbWFnZVB0ciBhbmQgTmF0aXZlSW1hZ2VQYXNzUHRyIHNob3VsZCBiZSBzbWFydAorLy8gcG9p
bnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYg
VVNFKENHKQogdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZP
Uk0oUVQpCkBAIC03Miw3ICs3NCw4IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRy
OwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBO
YXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVNraWEqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lh
PiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IE5h
dGl2ZUltYWdlUGFzc1B0cjsKIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgTmF0aXZlSW1h
Z2VTa2lhKiwgV1RGOjpNZW1vcnlPYmplY3RJbmZvKik7CiAjZWxpZiBPUyhXSU5DRSkKIHR5cGVk
ZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CkBAIC04MCw2ICs4MywxMCBA
QCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiB2
b2lkKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCisjaWYgIVVTRShTS0lBKQordHlwZWRlZiBO
YXRpdmVJbWFnZVB0ciBOYXRpdmVJbWFnZVBhc3NQdHI7CisjZW5kaWYKKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW1hZ2VCbGFja0JlcnJ5LmNwcAppbmRleCA1NWQzZWMzLi4wOWIyZDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdl
QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAg
IHJldHVybiBpbWcucmVsZWFzZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6VGlsZWRJbWFnZShtX3NpemUsIG1fYnl0ZXMpOwogfQpAQCAtNzMs
NyArNzMsNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgw
KQogICAgICwgbV9mcmFtZXMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhMzc0ODUwLi5iNDUx
NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2
aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVBh
c3NQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UoaW1hZ2VQdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGU1NzM3MzIuLjljOTNkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6
ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFnZUJ1ZmZl
cjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAog
ewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAwOwogICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApp
bmRleCA3OTRlYzczLi5mNjI0Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNoaWxk
cmVuQ2hhbmdlZCA9IGZhbHNlOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBp
bWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOwogICAgIGlmIChuYXRpdmVJbWFnZSkgewogICAgICAg
ICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsK
ICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50KCkt
PmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUltYWdlTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxl
bmRTa2lhLmNwcAppbmRleCA2NGU1MzU4Li4yZTlkODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tp
YS5jcHAKQEAgLTcyLDggKzcyLDggQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSgp
CiAgICAgUmVmUHRyPEltYWdlPiBmb3JlZ3JvdW5kID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29w
eUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGJhY2tncm91
bmQgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKIAotICAgIE5hdGl2ZUltYWdlU2tpYSogZm9yZWdyb3VuZE5hdGl2ZUltYWdlID0gZm9yZWdy
b3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBOYXRpdmVJbWFnZVNraWEq
IGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZm9yZWdyb3VuZE5hdGl2ZUlt
YWdlID0gZm9yZWdyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYgKCFmb3JlZ3JvdW5kTmF0aXZl
SW1hZ2UgfHwgIWJhY2tncm91bmROYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMzIyOGNkOC4uMjkxOWQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBAIC0xMjMsNyArMTIz
LDcgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgU2tBdXRv
VFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1f
dmFsdWVzLmRhdGEoKSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJT
a2lhLmNwcAppbmRleCBiMGY4MGNlLi40YTQwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBGRUNvbXBv
bmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAppbmRleCAyMmYxYjcz
Li4xYmU0NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNw
cApAQCAtNzEsOCArNzEsOCBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5
U2tpYSgpCiAgICAgUmVmUHRyPEltYWdlPiBjb2xvciA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBkaXNwbCA9
IGluMi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwog
Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBjb2xvck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBkaXNwbE5hdGl2ZUlt
YWdlID0gZGlzcGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGRpc3BsTmF0aXZlSW1h
Z2UgPSBkaXNwbC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghY29s
b3JOYXRpdmVJbWFnZSB8fCAhZGlzcGxOYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKaW5kZXggZDcwODdkNC4uM2EwYjc3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFTGlnaHRpbmdTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wg
RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHNldElzQWxwaGFJbWFnZShpbi0+
aXNBbHBoYUltYWdlKCkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKaW5kZXggYTdkOWY3NS4uNzc3MjhiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmNsZWFyUG9p
bnRlcnMoKQogICAgIG1fYnVmZmVyLmNsZWFyKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIFFJbWFnZTo6Rm9ybWF0IGZv
cm1hdDsKICAgICBpZiAobV9oYXNBbHBoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDBmNDA3YzEuLmRjOGNhYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJ
bWFnZVF0LmNwcApAQCAtNjIsOSArNjIsOSBAQCBJbnRTaXplIFN0aWxsSW1hZ2U6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBJbnRTaXplKG1fcGl4bWFwLT53aWR0aCgpLCBtX3BpeG1hcC0+aGVp
Z2h0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVBhc3NQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PE5hdGl2ZUltYWdlUHRy
PihtX3BpeG1hcCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TmF0aXZlSW1hZ2VQYXNzUHRyPiht
X3BpeG1hcCk7CiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAppbmRleCA1MDViMTkwLi5kNDI0MGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICAgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUGFzc1B0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKaW5kZXggZmI2NjE1NS4uMjYwOTk2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKQEAgLTExLDEyICsxMSwxMiBAQCBib29s
IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1hcEltYWdlKCkgY29uc3QKIAogYm9v
bCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCkKIHsKLSAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5pc09wYXF1ZSgpOworICAg
IHJldHVybiBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5pc09wYXF1ZSgpOwogfQogCiBJbnRTaXpl
IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
SW50U2l6ZShtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UuYml0
bWFwKCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKIH0KIAogLy8g
RG8gbm90aGluZywgYXMgd2Ugb25seSBoYXZlIHRoZSBvbmUgcmVwcmVzZW50YXRpb24gb2YgZGF0
YSAoZGVjb2RlZCkuCkBAIC0yNywxOSArMjcsMTkgQEAgdm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCkKIAogdW5zaWduZWQg
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRlY29kZWRTaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZS5kZWNvZGVkU2l6ZSgpOworICAgIHJldHVybiBtX25hdGl2ZUlt
YWdlLT5kZWNvZGVkU2l6ZSgpOwogfQogCiAvLyBXZSBvbmx5IGhhdmUgYSBzaW5nbGUgZnJhbWUu
Ci1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0
dXJuICZtX25hdGl2ZUltYWdlOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogfQogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogYm9vbCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29s
aWRDb2xvcigpCiB7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lkdGgoKSAh
PSAxIHx8IG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkgIT0gMTsKKyAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSAhPSAxIHx8IG1fbmF0aXZlSW1hZ2UtPmJp
dG1hcCgpLmhlaWdodCgpICE9IDE7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYS5oCmluZGV4IDU2ZWJlM2EuLjM0MThjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmgKQEAgLTQyLDggKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Ly8gb2JzZXJ2ZXJzLCBhbmltYXRpb24sIG11bHRpcGxlIGZyYW1lcywgb3Igbm9uLWRlY29kZWQg
ZGF0YS4KIC8vIFRoZXJlZm9yZSB0cmltbWluZyB0aGUgZGVjb2RlZCBkYXRhIChkZXN0cm95RGVj
b2RlZERhdGEoKSkgaGFzIG5vIGVmZmVjdC4KIC8vCi0vLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1
dHRpbmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlUHRyKQotLy8gaXMg
dGhhdCBOYXRpdmVJbWFnZVB0ciA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2ZSBT
a0JpdG1hcC4KKy8vIFRoZSBkaWZmaWN1bHR5IHdpdGggcHV0dGluZyB0aGlzIGluIEJpdG1hcElt
YWdlOjpjcmVhdGUoTmF0aXZlSW1hZ2VQYXNzUHRyKQorLy8gaXMgdGhhdCBOYXRpdmVJbWFnZVBh
c3NQdHIgPSBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4sIHlldCBjYWxsZXJzIGhhdmUKKy8v
IFNrQml0bWFwLgogY2xhc3MgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEgOiBwdWJsaWMgSW1h
Z2UgewogcHVibGljOgogICAgIC8vIENyZWF0ZXMgYSBuZXcgSW1hZ2UgZnJvbSB0aGUgZ2l2ZW4g
U2tCaXRtYXAuICBJZiAiY29weVBpeGVscyIgaXMgdHJ1ZSwgYQpAQCAtNjMsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0OwogCiAgICAg
Ly8gV2Ugb25seSBoYXZlIGEgc2luZ2xlIGZyYW1lLgotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UGFzc1B0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03Myw3ICs3NCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2
YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdl
IGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29weS4KICAgICBCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2IxYzhmMi4uOGFjNmQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyArNjksNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zdGF0dXMo
KSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAgICAgICBtX25hdGl2
ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIG1f
bmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgICAgICBpZiAoIW1f
bmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkgfHwg
IW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTa0JpdG1h
cDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5jb25maWcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcAppbmRleCAxZGVjMWVlLi4yZDE3NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTAsMTAgKzQ1MCw4IEBA
IGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRh
dGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAg
ICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9m
cmFtZXwgYW5kIHBhc3NlZAotICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdl
IG11c3QgZGVsZXRlIGl0IGhlcmUuCi0gICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwotICAgICAgICBt
X2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZS5jbGVhcigpOworCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzEsNyArNDY5LDcgQEAgdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIFRSQUNFX0VWRU5UMCgic2tpYSIsICJJbWFnZTo6ZHJhd1BhdHRlcm4i
KTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlU2tpYSogYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1
cm47CiAKQEAgLTU3Miw3ICs1NzAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIGZyYW1lID0gZnJhbWVBdEluZGV4KDApOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gZnJhbWVBdEluZGV4KDApOwogCiAgICAg
aWYgKGZyYW1lICYmIHNpemUoKS53aWR0aCgpID09IDEgJiYgc2l6ZSgpLmhlaWdodCgpID09IDEp
IHsKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGZyYW1lLT5iaXRtYXAoKSk7CkBAIC01
OTksNyArNTk3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICAvLyBjYXVzaW5nIGZs
aWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBOYXRp
dmVJbWFnZVNraWEqIGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgaWYgKCFibSkKICAgICAgICAgcmV0dXJuOyAvLyBJdCdzIHRvbyBlYXJseSBhbmQgd2UgZG9u
J3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAKQEAgLTY1MSwxMyArNjQ5LDEzIEBAIHZvaWQgQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAogewogICAg
IEZsb2F0UmVjdCBub3JtRHN0UmVjdCA9IG5vcm1hbGl6ZVJlY3QoZHN0UmVjdCk7CiAgICAgRmxv
YXRSZWN0IG5vcm1TcmNSZWN0ID0gbm9ybWFsaXplUmVjdChzcmNSZWN0KTsKLSAgICBub3JtU3Jj
UmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lk
dGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSkpOworICAgIG5vcm1TcmNSZWN0
LmludGVyc2VjdChGbG9hdFJlY3QoMCwgMCwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgo
KSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChub3JtU3Jj
UmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
IC8vIE5vdGhpbmcgdG8gZHJhdy4KIAogICAgIHBhaW50U2tCaXRtYXAoY3R4dC0+cGxhdGZvcm1D
b250ZXh0KCksCi0gICAgICAgIG1fbmF0aXZlSW1hZ2UsCisgICAgICAgICptX25hdGl2ZUltYWdl
LAogICAgICAgICBub3JtU3JjUmVjdCwKICAgICAgICAgbm9ybURzdFJlY3QsCiAgICAgICAgIFdl
YkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUoY29tcG9zaXRlT3ApKTsKQEAgLTY2Nyw3ICs2
NjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwKIH0KIAogQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OkJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSkKLSAgICA6IG1fbmF0aXZlSW1hZ2UoYml0bWFwLCByZXNvbHV0aW9uU2NhbGUpCisgICAg
OiBtX25hdGl2ZUltYWdlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGJpdG1hcCwgcmVzb2x1dGlv
blNjYWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCmluZGV4IDBkYzBmOWUuLjY1OWE1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZl
SW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L05hdGl2ZUltYWdlU2tpYS5jcHAKQEAgLTYwLDYgKzYwLDE1IEBAIE5hdGl2ZUltYWdlU2tpYTo6
TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBvdGhlciwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKQogewogfQogCitOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0Jp
dG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tCaXRtYXAmIHJlc2l6
ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiBjYWNoZWRJbWFnZUluZm8sIGludCByZXNp
emVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3Jlc29sdXRpb25TY2Fs
ZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBtX3Jlc2l6ZWRJbWFnZShyZXNpemVkSW1hZ2UpCisg
ICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNoZWRJbWFnZUluZm8pCisgICAgLCBtX3Jlc2l6ZVJl
cXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQoreworfQorCiBOYXRpdmVJbWFnZVNraWE6On5OYXRpdmVJ
bWFnZVNraWEoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKaW5kZXggOGI3OTVlMi4uNmJlMGFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFn
ZVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2
ZUltYWdlU2tpYS5oCkBAIC0zNSwyMSArMzUsMzIgQEAKICNpbmNsdWRlICJTa1JlY3QuaCIKICNp
bmNsdWRlICJTa1NpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHRoZSAibmF0aXZlIGltYWdl
IiBpbiBvdXIgcG9ydC4gV2hlbiBXZWJLaXQgdXNlcwotLy8gIk5hdGl2ZUltYWdlUHRyIiwgaXQg
aXMgYSBwb2ludGVyIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFuIFNrQml0bWFwLCBhbmQgYWxzbwor
Ly8gIk5hdGl2ZUltYWdlIiwgaXQgaXMgYSB0eXBlZGVmIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFu
IFNrQml0bWFwLCBhbmQgYWxzbwogLy8gc3RvcmVzIGEgY2FjaGVkIHJlc2l6ZWQgaW1hZ2UuCi1j
bGFzcyBOYXRpdmVJbWFnZVNraWEgeworY2xhc3MgTmF0aXZlSW1hZ2VTa2lhIDogcHVibGljIFJl
ZkNvdW50ZWQ8TmF0aXZlSW1hZ2VTa2lhPiB7CiBwdWJsaWM6Ci0gICAgTmF0aXZlSW1hZ2VTa2lh
KCk7Ci0gICAgfk5hdGl2ZUltYWdlU2tpYSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2
ZUltYWdlU2tpYT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TmF0aXZlSW1hZ2VTa2lhKCkpOworICAgIH0KIAotICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZG9l
cyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFzc2VkLWluIFNrQml0bWFwIChpZS4sIGl0Ci0gICAg
Ly8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhlbCBkYXRhIGFuZCBidW1wcyB0aGUgcmVmY291bnQp
LiAgVXNlIG9ubHkgd2hlbgotICAgIC8vIHlvdSB3YW50IHNoYXJpbmcgc2VtYW50aWNzLgotICAg
IE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjcmVhdGUoY29uc3QgU2tC
aXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEoYml0bWFwLCByZXNvbHV0aW9uU2NhbGUp
KTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY2xvbmUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEobV9p
bWFnZSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzaXplZEltYWdlLCBtX2NhY2hlZEltYWdlSW5m
bywgbV9yZXNpemVSZXF1ZXN0cykpOworICAgIH0KKworICAgIH5OYXRpdmVJbWFnZVNraWEoKTsK
IAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBpbWFnZSBkYXRhLiBUaGlz
IGluY2x1ZGVzIHRoZSBjYWNoZWQKICAgICAvLyByZXNpemVkIHZlcnNpb24gaWYgdGhlcmUgaXMg
b25lLgpAQCAtODgsNiArOTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgorICAgIE5hdGl2ZUltYWdl
U2tpYSgpOworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBkb2VzIGEgc2hhbGxvdyBjb3B5IG9m
IHRoZSBwYXNzZWQtaW4gU2tCaXRtYXAgKGllLiwgaXQKKyAgICAvLyByZWZlcmVuY2VzIHRoZSBz
YW1lIHBpeGVsIGRhdGEgYW5kIGJ1bXBzIHRoZSByZWZjb3VudCkuIFVzZSBvbmx5IHdoZW4KKyAg
ICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGljcy4KKyAgICBOYXRpdmVJbWFnZVNraWEoY29u
c3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworCiAgICAgLy8gQ2FjaGVkSW1h
Z2VJbmZvIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgY2FjaGVkIG9yIHJlcXVlc3RlZCBp
bWFnZQogICAgIC8vIHJlc2l6ZXMuCiAgICAgLy8gSW1hZ2UgcmVzaXplIGlzIGlkZW50aWZpZWQg
YnkgdGhlIHNjYWxlZCBpbWFnZSBzaXplIGFuZCBzY2FsZWQgaW1hZ2Ugc3Vic2V0LgpAQCAtMTAy
LDYgKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFNrSVJlY3QgcmVjdEluU3Vic2V0KGNvbnN0
IFNrSVJlY3QmIG90aGVyU2NhbGVkSW1hZ2VSZWN0KTsKICAgICB9OwogCisgICAgTmF0aXZlSW1h
Z2VTa2lhKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBTa0JpdG1hcCYgcmVzaXplZEltYWdlLCBjb25zdCBDYWNoZWRJbWFnZUluZm8mLCBpbnQgcmVz
aXplUmVxdWVzdHMpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByZXNpemUg
b3BlcmF0aW9uIHNob3VsZCBlaXRoZXIgcmVzaXplIHRoZSB3aG9sZQogICAgIC8vIGltYWdlIGFu
ZCBjYWNoZSBpdCwgb3IgcmVzaXplIGp1c3QgdGhlIHBhcnQgaXQgbmVlZHMgYW5kIHRocm93IHRo
ZSByZXN1bHQKICAgICAvLyBhd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcAppbmRleCAyYWU0ZGQ2Li5mYTBhYTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5T
a2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRl
cm5Ta2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCBQbGF0Zm9ybVBhdHRlcm5QdHIgUGF0dGVybjo6
cGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZgogICAg
IC8vIGFuZCBleHBhbmRlZCBzY2FsZSBhbmQgc2tldyBpbjoKICAgICAvLyBMYXlvdXRUZXN0cy9z
dmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNi1iLnN2ZwogCi0gICAgY29uc3QgTmF0aXZl
SW1hZ2VTa2lhKiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV90aWxlSW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGJp
dG1hcCwgcmV0dXJuIGEgdHJhbnNwYXJlbnQgc2hhZGVyLgogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIG1fcGF0dGVybiA9IG5ldyBTa0NvbG9yU2hhZGVyKFNrQ29sb3JTZXRBUkdCKDAsIDAsIDAs
IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0ltYWdlV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
SW1hZ2VXaW5DRS5jcHAKaW5kZXggYTI4ZDE0OS4uMGNkM2M0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFn
ZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gU2hhcmVkQml0
bWFwOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fc2l6ZSwgaGFzQWxwaGEoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oCmluZGV4IDEwNDI0YTUuLjE0YjdiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVk
IHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8v
IChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBh
bmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgTmF0
aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBOYXRpdmVJbWFn
ZVBhc3NQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxw
aGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CkBAIC0xNDEsNyArMTQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGlu
dCB4LCBpbnQgeSkKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJu
IG1fYml0bWFwLmJpdG1hcCgpLmdldEFkZHIzMih4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiBt
X2JpdG1hcC0+Yml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwogI2Vsc2UKICAgICAgICAgICAgIHJl
dHVybiBtX2J5dGVzICsgKHkgKiB3aWR0aCgpKSArIHg7CiAjZW5kaWYKQEAgLTE1MCwxMiArMTUw
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAg
ICAgdm9pZCBzZXRTa0JpdG1hcChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUltYWdlU2tpYShiaXRtYXAsIDEpOworICAgICAg
ICAgICAgbV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRtYXAsIDEpOwogICAg
ICAgICB9CiAKICAgICAgICAgY29uc3QgU2tCaXRtYXAmIGdldFNrQml0bWFwKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
c2V0TWVtb3J5QWxsb2NhdG9yKFNrQml0bWFwOjpBbGxvY2F0b3IqIGFsbG9jYXRvcikKQEAgLTIw
Miw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCB3aWR0aCgpIGNv
bnN0CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKLSAgICAgICAgICAgIHJldHVybiBtX2JpdG1h
cC5iaXRtYXAoKS53aWR0aCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAo
KS53aWR0aCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX3NpemUud2lkdGgoKTsKICNl
bmRpZgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBp
bnQgaGVpZ2h0KCkgY29uc3QKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAg
cmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmhlaWdodCgpOworICAgICAgICAgICAgcmV0dXJuIG1f
Yml0bWFwLT5iaXRtYXAoKS5oZWlnaHQoKTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gbV9z
aXplLmhlaWdodCgpOwogI2VuZGlmCiAgICAgICAgIH0KIAogI2lmIFVTRShTS0lBKQotICAgICAg
ICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IG1fYml0bWFwOwogICAgICAgICBTa0JpdG1hcDo6QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsK
ICNlbHNlCiAgICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0b3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VE
ZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDQxNzYyOGQuLjQ2YjY1ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUGFzc1B0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IE5hdGl2ZUltYWdlQ2Fpcm8oY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvb3BlbnZnL0ltYWdl
RGVjb2Rlck9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAppbmRleCBkMjkzMTdhLi41ODgzNWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcv
SW1hZ2VEZWNvZGVyT3BlblZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBWR0ltYWdlRm9ybWF0
IGJ1ZmZlckZvcm1hdCA9IFZHX3NBUkdCXzg4ODhfUFJFOwogICAgIC8vIFNhdmUgbWVtb3J5IGJ5
IHVzaW5nIDE2LWJpdCBpbWFnZXMgZm9yIGZ1bGx5IG9wYXF1ZSBpbWFnZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rl
clNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9J
bWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQzYjg2Li5hODY4NjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEv
SW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCi0gICAgOiBtX2FsbG9jYXRvcigwKQorICAg
IDogbV9iaXRtYXAoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKSkKKyAgICAsIG1fYWxsb2NhdG9y
KDApCiAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkK
ICAgICAsIG1fZHVyYXRpb24oMCkKQEAgLTQ2LDEwICs0NywxMCBAQCBJbWFnZUZyYW1lJiBJbWFn
ZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgaWYgKHRoaXMg
PT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBtX2JpdG1hcCA9IG90aGVy
Lm1fYml0bWFwOworICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRtYXAtPmNsb25lKCk7CiAgICAg
Ly8gS2VlcCB0aGUgcGl4ZWxzIGxvY2tlZCBzaW5jZSB3ZSB3aWxsIGJlIHdyaXRpbmcgZGlyZWN0
bHkgaW50byB0aGUKICAgICAvLyBiaXRtYXAgdGhyb3VnaG91dCB0aGlzIG9iamVjdCdzIGxpZmV0
aW1lLgotICAgIG1fYml0bWFwLmJpdG1hcCgpLmxvY2tQaXhlbHMoKTsKKyAgICBtX2JpdG1hcC0+
Yml0bWFwKCkubG9ja1BpeGVscygpOwogICAgIHNldE1lbW9yeUFsbG9jYXRvcihvdGhlci5hbGxv
Y2F0b3IoKSk7CiAgICAgc2V0T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJl
Y3QoKSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsKQEAgLTY0LDcgKzY1LDcgQEAg
SW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVy
KQogCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKLSAgICBtX2JpdG1hcC5i
aXRtYXAoKS5yZXNldCgpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOwogICAgIG1f
c3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVt
YmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRoaXMgdG8g
ZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAtNzQsNyAr
NzUsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIAogdm9pZCBJbWFnZUZy
YW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkuZXJhc2VB
UkdCKDAsIDAsIDAsIDApOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5lcmFzZUFSR0IoMCwgMCwg
MCwgMCk7CiAgICAgbV9oYXNBbHBoYSA9IHRydWU7CiB9CiAKQEAgLTg0LDkgKzg1LDkgQEAgYm9v
bCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX2hhc0FscGhhID0gb3RoZXIubV9oYXNBbHBoYTsK
LSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOwotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tp
YSYgb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKLSAgICByZXR1cm4gb3RoZXJCaXRtYXAu
Yml0bWFwKCkuY29weVRvKCZtX2JpdG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCku
Y29uZmlnKCkpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOworICAgIGNvbnN0IE5h
dGl2ZUltYWdlU2tpYSogb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcC5nZXQoKTsKKyAgICBy
ZXR1cm4gb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAtPmJpdG1hcCgpLCBv
dGhlckJpdG1hcC0+Yml0bWFwKCkuY29uZmlnKCkpOwogfQogCiBib29sIEltYWdlRnJhbWU6OnNl
dFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQpAQCAtOTQsMTcgKzk1LDE3IEBAIGJv
b2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAg
Ly8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkg
b3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0KCkpOwogCi0gICAgbV9i
aXRtYXAuYml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3
V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVs
cyhtX2FsbG9jYXRvciwgMCkpCisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldENvbmZpZyhTa0Jp
dG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIGlmICgh
bV9iaXRtYXAtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CitOYXRpdmVJbWFnZVBhc3NQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG5ldyBOYXRpdmVJbWFnZVNraWEobV9iaXRtYXApOworICAgIHJl
dHVybiBtX2JpdG1hcC0+Y2xvbmUoKTsKIH0KIAogYm9vbCBJbWFnZUZyYW1lOjpoYXNBbHBoYSgp
IGNvbnN0CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRIYXNBbHBoYShi
b29sIGFscGhhKQogICAgIGJvb2wgaXNPcGFxdWUgPSAhbV9oYXNBbHBoYTsKICAgICBpZiAobV9z
dGF0dXMgIT0gRnJhbWVDb21wbGV0ZSkKICAgICAgICAgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICBt
X2JpdG1hcC5iaXRtYXAoKS5zZXRJc09wYXF1ZShpc09wYXF1ZSk7CisgICAgbV9iaXRtYXAtPmJp
dG1hcCgpLnNldElzT3BhcXVlKGlzT3BhcXVlKTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjpzZXRD
b2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCkBAIC0xMzUsOCAr
MTM2LDggQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQog
ewogICAgIG1fc3RhdHVzID0gc3RhdHVzOwogICAgIGlmIChtX3N0YXR1cyA9PSBGcmFtZUNvbXBs
ZXRlKSB7Ci0gICAgICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKCFtX2hhc0FscGhh
KTsKLSAgICAgICAgbV9iaXRtYXAuc2V0RGF0YUNvbXBsZXRlKCk7ICAvLyBUZWxsIHRoZSBiaXRt
YXAgaXQncyBkb25lLgorICAgICAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoIW1f
aGFzQWxwaGEpOworICAgICAgICBtX2JpdG1hcC0+c2V0RGF0YUNvbXBsZXRlKCk7IC8vIFRlbGwg
dGhlIGJpdG1hcCBpdCdzIGRvbmUuCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHAK
aW5kZXggMGUwNDc5ZS4uNjYwYWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcApAQCAtMzcs
NyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQYXNzUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHd4Qml0bWFwKiBibXAgPSBu
ZXcgd3hCaXRtYXAod2lkdGgoKSwgaGVpZ2h0KCksIDMyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMjk2YzM0ZC4uMDc3OTlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNDEsNiArMTQxLDI1IEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUgY29udGFpCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiB9CiAK
KyNpZiBVU0UoU0tJQSkKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIE5hdGl2ZUltYWdlIHRv
IHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQYXNzUHRyIG5lZWRzCisvLyB0byBiZSBhIHNtYXJ0
IHBvaW50ZXIgdHlwZS4KK05hdGl2ZUltYWdlUGFzc1B0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCks
IHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsKTsKKworICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVz
ZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgorICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFn
ZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKyNl
bmRpZgorCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29t
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmMDlh
MmIxLi5lNGVhYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAt
NjIsNiArNjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVTRShTS0lBKQor
ICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQYXNzUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1h
Z2VDaHJvbWVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwpA
QCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4
KHNpemVfdCkgeyByZXR1cm4gMDsgfQotCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRv
IGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBk
MDc2ZmVhLi5mNTA3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIHZvaWQgU1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKK05hdGl2ZUltYWdl
UGFzc1B0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KQoreworICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApp
bmRleCBiMzIyOGU1Li5jMTJkMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAg
IHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVBhc3NQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZv
ckNvbnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6
ZSwgZmxvYXQgem9vbSkKICAgICAgICAgOiBtX2ltYWdlKGltYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBkMmIxODkwLi5kZGRhY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVt
ZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxNDI3NjUpIEJyb2tl
IEN1c3RvbSBTVkcgY3Vyc29ycyBhbmQgU1ZHIGNhbnZhcyBkcmF3aW5nIGZvciBDaHJvbWl1bQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNv
ZGUgbm93IHRoYXQgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgYW5kCisgICAg
ICAgIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSByZXR1cm4gYSBzbWFydCBwb2ludGVy
IGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgICogc3JjL1dlYkltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlRGVjb2Rlcjo6Z2V0RnJhbWVB
dEluZGV4KToKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VTa2lhLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmZyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmZyYW1l
c0Zyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFRlc3RJbWFnZSk6
CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFRlc3RJbWFnZSk6CisK
IDIwMTMtMDMtMzAgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Vmlldy1zb3VyY2UgaWZyYW1lcyBhcmUgZGFuZ2Vyb3VzIChhbmQgbm90IHZlcnkgdXNlZnVsKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4
IDEwNGFiMTMuLjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkltYWdlIFdlYkltYWdlRGVj
b2Rlcjo6Z2V0RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNvbnN0CiAgICAgSW1hZ2VGcmFt
ZSogY29uc3QgZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1lQnVmZmVyQXRJbmRleChpbmRl
eCk7CiAgICAgaWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Ci0g
ICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZUJ1ZmZlci0+
YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9
IGZyYW1lQnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgcmV0dXJuIFdlYkltYWdlKGlt
YWdlLT5iaXRtYXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZVNraWEuY3BwCmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJJbWFnZSBXZWJJ
bWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJl
ZFNpemUpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLSAg
ICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05h
dGl2ZUltYWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV2Vi
SW1hZ2UoKTsKIApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3RvcjxXZWJJbWFnZT4gV2ViSW1h
Z2U6OmZyYW1lc0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEpCiAgICAgICAgIGlmICghZnJh
bWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VT
a2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOwotICAgICAg
ICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkpCisgICAgICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsK
KyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQogICAgICAgICAg
ICAgZnJhbWVzLmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpKTsKICAgICB9CiAKQEAg
LTE1Nyw4ICsxNTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29uc3QgUGFzc1JlZlB0cjxJbWFn
ZT4mIGltYWdlKQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVm
UHRyPEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcDsKLSAgICBpZiAoaW1h
Z2UuZ2V0KCkgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAoaW1hZ2UgJiYgKHAgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAgIGFzc2lnbihwLT5iaXRt
YXAoKSk7CiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCmluZGV4
IDdmMTkwMGIuLjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRv
U2tQaWN0dXJlKQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRy
KG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgp
KSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX2xhenlEZWNvZGVyLT5m
cmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBFWFBFQ1RfRVEo
MSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0
bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxs
KCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Qs
IGRyYXdJbnRvU2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBk
cmF3U2NhbGVkSW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3
TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9s
YXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAg
ICAgU2tCaXRtYXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6ZWRCaXRtYXAoU2tJU2l6ZTo6
TWFrZSg1MCwgNTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHNjYWxlZEJpdG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlz
SW1tdXRhYmxlKCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVj
b2RlclRlc3QsIGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhy
ZWFkaW5nKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0ciht
X2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJh
bWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQRUNUX0VRKDEs
IGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1h
cCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCmlu
ZGV4IGE5NDY1ZTYuLjZiZjE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9EcmFnSW1hZ2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDog
SW1hZ2UoMCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZl
SW1hZ2UgPSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2
ZUltYWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFn
ZS0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxz
KCk7CkBAIC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1
YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTk3
LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRy
PE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IG1fbmF0aXZlSW1hZ2U7CiB9OwogCiBURVNUKERyYWdJbWFnZVRlc3QsIE51bGxIYW5kbGlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCmluZGV4IDRkYjQyOGMuLjY0OGRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2UoMCkKICAgICAgICAgLCBt
X3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihuZXcg
TmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2VT
a2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuc2V0Q29uZmln
KFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAg
IG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBAIC03NywxMiArNzcsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAgIH0KIAotICAgIHZpcnR1YWwg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
ICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2Yg
cHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1f
bmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9uYXRpdmVJbWFnZTsK
IH07CiAKIFRFU1QoSW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVlSW1hZ2VzKQo=
</data>
<flag name="review"
          id="217855"
          type_id="1"
          status="+"
          setter="pdr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196192</attachid>
            <date>2013-04-02 11:32:42 -0700</date>
            <delta_ts>2013-04-03 14:52:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>81054</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NDcwN2JhLi5lZTAxNmE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MzEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMzAgIFRvbSBTZXBleiAgPHRzZXBlekBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jvc3MtT3JpZ2luIGNvcHkmcGFzdGUgLyBkcmFnJmRy
b3AgYWxsb3dpbmcgWFNTIHZpYSBzcmNkb2MgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1z
dmctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3Zn
L2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4MTFj
NTlkYzVjZWYxZDMxYTZiZDY2ZGY5ZDVjNjFlMWE3ZjRhMTAKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDE0MjU0CnpjbWVIdVhJUnR1d3I8bz5XPFg/U1hkfjRiTUd5bz0+RD9JelFCYVQ/MVZXR15O
UjwqPWZHe2REUVdkMnJPK2xwaAp6UDlPbXN6PF97QT11TT5lbnVIcWVpYUxBdC1nRVo3X2sxfF9v
Y2xhR0FPMiRhbXRXUnp0I2BmZXlUYmplKzhWNlAKekpqQDZMZzd3bkhVLVNAJjFJR31Fe2w7Skpo
aiV6UklFQ1MjUXklS1o5IyhjWFJ1MWtNQ3hvb3I4SmltbGF6Q0R4CnptOXwjNkF1QTxxYkxSUkQ4
KENAVEFKNTIyLT5eUGcqWmsjTzFtWU90KGwwKzVjcWMzajtsZDBrSEVRJSVrc3B8RQp6aGgkNW4x
UjVNJVZaeFcjMSh8ZmU9O3JNLWglJmRER2NeNG1JUS0mJV9sOCgqcmJLIThPJXdMNT1qdyZDPmhY
PCYKeigkUVRVQkNLNXZNIUFLfT9AWFMoPWUpWUk9PTs7VE8oOXwlRXBufTk/TVp2djZSQmRRckoq
TWVvNXRBTzsjOCh+CnowfV5UNVo/SCo5UWM2LUg1bzJFPjAmZzhjO3Rffkk5b35IYGgre3dnUn4h
bWJfQm1YMlpIVzwmbSVqT35tVz1kNAp6SDwoPGtAanM+YGUqVkpJU2FhVlExYjMleDRiS34lcW5x
WldxKT13dCs0cHNLeW9QO2p0cilNZHktbF5mXnIpQSEKej5XeHFKRkJKPCg8fF57ZkR3Xj1GWD4x
Zkg/Pll1Sjk0T1owNyhVdV5iR0cpXjFMY0VtVDUhJHpeUklIUTY/ZjtPCnpNfXFVVjRHWG8oK29O
Tk5fQ1kzditjVn45a3VtYnROezZ0LTQ8UllvI21jRWlJO3hrLSNeaV5JeElMOEQ1VHw7Xwp6Jkdm
Xz1SfTE1NDhmSSVJSi16SExuUVkqX2VKO3U1OT96LU5wS0JDREVqdkJQVFhZKGM9clF2U2g0KW1V
a29BKnkKej1XVmw1WlJjSmF5TmxpfDgmNU0jS2FiTEl1cDBleHMlbyl8VSMreCZhQjlrOWsrOGoo
cldMejVncn5oP1FgO2Z3CnoxZX4+TGV0Wm5ZV0hBNFpLZHx8SFp0dCF+eyElbUBUUHhsXz9LNzJG
PyRERkJoZkNqRXopck8jUDk9SGAofDVPLQp6PUV1ZEJ2VzswWCVofD49Wjg5Rjc2KHdnRVhWbUhF
SWpmOHtoQVo4QWV+eSNvSk1XX28rQ3JAeylnYE9KUm94UXgKemhjUDl4VDtee295QU9Gc3p2ZWdC
KjU5VHJ3VTRON2p6MUVjc1ohJUc2Kn1+Nl57U1lzK1J6Kn10KyYhMztQI3k7CnpxYXMhd3ZVXz5H
PkhkJjBAMV4wSTt9Xm9kPl9RZkQ+QTVXUj0hPkJyb2I/U0d1YnUwPE10PVFUbjckSDtPVGZgTAp6
NFJkVD9LbG5iRlA0TExEVzJ3YWJWSmFgeF4wbCtMOUolazJJUiZlS290MDd+YHx7JjU5SFhidDVO
cXNiZ1NnRSUKem1TMz9FPjZDbjA/d3M1RD16Y05WPXhKaUopKTVRTDV+VzczN1pWcDg9JSF+cD5h
NUcqRys1IWZ3TFd1UEJWdVBsCno2OEJgViFleFhvbXJ0YmtUMUQwQCpSI2t1X0l9OzhRZUBMfFFZ
VUdyXzVmUmdUbDE7cHlgM3EyK1JYTDMrWHE9JAp6UyRvWGZ1akYtLTJfTkxtdEchK0leKmIqS0N6
amtBdHNoTDwpUj1JWWl0d0YkVmhiMWg0WjFkfEt4aWA0MT1WI20KekdAMmZ0KCR8KEJ6MDBeKTwk
I3RebDhONWd7VnB8PlpmP1NJKDhKPnpzdkdhYCpwJFZYR2A+c0lZRkMmX3UqTlIqCnptdlc+MVJ0
bTFhJUIhNHdkV1ZURU1rPm1jdWVgaCplWEgmdSNMPjlhektkMEVAV0Mwb05ZJDxCQyQ+b245QEIz
Tgp6dCh4Y2B4UVZ9UU9VRllVPj9tVHgjdjgrVkFONCFxN3N7LSQ1WXtHc3VSKkl3NzA9RXFhemJr
VDx1MiVlOSo4dHkKekVKNyhsamxTe248OyEzSi07OHAxNTZJX310cFU0cFhkVjlXTDktVkVOeFBq
PG9rKHZzQGlsd05nakFEPzZNRWFOCnpGOyV2cyQ0O1hPZSQ5X2h4bTIkLWt+OCg7VWk5RERiKiMm
Y2pMcXArWD5zYyYtJk1gPyV2dzZWNWdncyYlcWg1TQp6eG5SdjwpWWU+Sk9eU05hRFg/Ymh4VzNB
LT5nUFJGZ2BvfCl4OTB+P3ZnP3l5NGk5YVdjfTc9OWE+Ukc7XnFuVEkKeiR+eShrN3VydUdCV0s7
N3M8P0w1Xnc4dmtxU3o5SHhYKEEqVW5MTmpheUhrZG1VO2BWSGRpT0VUKTlGREZDUGltCno5KmF+
WDtQJlY/RWlvdzkyMk5NTFdXUUNDRXtEcVlkfnhMZzdUOFIzaEhrdjlsU3peRkNIaGMpS3xUYGdQ
aWFCWgp6U0llOVI9Knopc2U3S3p6JD9EfndgSV9MUVdgMFVMaiRYV2NxfXB3d1M8LSgtJVowZDBq
bz8/QlkpZHFDe0tuX1EKemVQUVorVS05KTxfcH5HYCQ3ai0kQzVsKGNRSF4wb0FDWmF2K2Y9QWpT
eXxiYkpgPysrbW1Fayh4WHJ6PDdvQihlCnpwLUJNaU5QNmY4YWR4aHBoYEFDaz4lVXliKVl7cmdU
NCpATCRXaFpXTStOV1lfbzAjbWRDVDhfdEkjUiMlZFVIYQp6Tm1QdGxzLVg/WG93MklJO34pOEpE
PW4xZDw+a3BvbHNnYWtfVE5uUi14dio2c2lKcDgyNiZBNCgtc0VHVHs9P0sKelpJZ1UlMnVfT1p0
JX5zZHY2WEh3QzVnMXZkfV9UeUdjczJ6ckM9bkFuUmMxfnVELVR7UClKRzszLUBBdz5EKXMzCnoy
cVRxeGhsaTZvT3NHTXp7VnRlYjNIJnxaWXJPOGM2WnNaRnlxT0QrUHY/dmBLal48JSpmSUQwZUdn
cEBSc20pMgp6bEBBUm4wVmVZSXttdD0zT1VFLT84eWg1aHFOMUJfaWRqMjlWe1JBMkQ2fVMzJW5y
fEM2TWlOSXd+PDRpPz0qKWQKej4wVlB4SkQ2aVZfVilSQyRhQyRvTV94NVRfdCpwbChyWmV0UnBf
dXlDMURycWdJTHlaPXtnR3psVyg1RG1Tfm83CnppPD4tRmpeXmdSQ2cjcDdXIXEqKDREY19pYWk0
MGw0ODc9I2c+PnFDY30wd3w1MzNzUTtrSzB2UU1xWGBnOzQ4Kgp6MyRLRk5iZHJrdUBMbiNuRW5Q
diFlYTZEJkNkKGxDJDFGcCZvdzBsTFVCSnteVDNUOEw8M3IjMkR9YER6UDNxeysKemp6ajtPPmQr
N2pBS05KSEczUy1HeVNtRUt4PVMwdV5gTntzSnlpbUJIdSNsMSpEREg8PyZMOVJZfWZeNzJ8YyFV
CnpgYzFST14kRDZleSg/K0FAaSUrYXc/VnJ4MkhzcW1jTTVGVmxYZ19seExyemR5USklWj17JD5N
PjQ7X2VrSVNAfAp6VFBSKzRycGVGbylpPFV4OyVqRVQmYiRFbTRZNVU8eGk7TVdpcnNmNzxKUHle
KXQpdlo4cUg1UyU/JDw4YjAxYDgKejh4PHl3PjlIZSt1Pk8oeUJBYWlZX0AxJDViR2M/fig1PkJZ
ej0lI2cpNU5GMCtEckNkYj9QZ2M7MnFnJHtRVypWCnorSUo9YGpCdDtZdyt4bktqaW9JUFJvKkQo
ZWgzZ0R5Qz9wdTVjazZhT2g9QHByNXw3TyQ9NExeR2J1ZGxSKnN1ZQp6OHJkOVchJlNmKT5CI3wj
NnFUQGA7fGpqKCh9MVpRbykxayVkMG5je187ME9PeD0pP05lSzQpQzZ8I05rcFVKXlgKelYoZXFI
U2JvXnAjeXd1PTNRRClCQnluZHxLMD5uTXtxMGhSOTxETjM+KD53SmRBQnxMZW93bl9lMCFPazlG
c3VVCnpOIT5FQFdiM0xyIU1yVj14cVEwJD12YFFsSFFHZHxDJk14byQ/YEU/RSFCNWtsPDh8PDdl
ZH5QU303a3RmNzh9Pgp6M1NoSEhNP0JBQnBfdmYqU1NyMEhSflp2QCtTQiNNbEd6dy1PSk1IYDNY
OD9aI0dKQ093WkQwakdfKX4/LWN6Sk4KelhxWipAY0drdzRCSElffCU4OSM5TU1GYkZ7KFV5RjZQ
fllnZVJWa3xfRXYyOW5xYkY9I1BYfTc5R0NoXyNtZGhZCno+WUxYMVZpdXoqUVBILUtBRGlHajlV
N1duNC1zeShLMFBYUjE0NEtDc3IxYzs1WThhKzZSUjMtPihkPTF7Wjd9cQp6ck5OKih2YVRPfkFM
bmpARCZAdyUtfTIrP2lgNldBSTlUcDchZX1WMlZ+eUBAM0pndkdjWGB0c0V0YW02b2FGbDwKekpV
bCUzMj4tMEJSWCFBUzw5eF5UYEMzczB8NGp8YmcxektSbGh8SlpoKGVyNj5XIzw3MXA/KXEyand4
ZDxnamtkCnpKbCghak5ReklMR3NjSk1sMmR2QHk9TEN3WHI+Jlg5Vm93KmhRNCR6V1ZJKEpLSnN6
I0VsU3hjblh7PDM7WXAycQp6X3tiYn5NLUg9KXQ2aSg7SHZTc0R4Nzh5T1Z2YiFYZyVUMiRiTTdr
d3c4JTlyWiooMig+SEB4bFVuMX19dDxWVXgKejhWMHlRRChSP2hUMVJ5UTUpRnhqdG5PS3QrKTdT
NXNOVjZSQXIham90I19BJVpQcUY4dj9MUktDWkZJb1RoTUBMCnpgOEN4Mzl5Q3J4ITRDcX01LVR9
VVhyLX41PjBzM3E7U2FuZU1aXzF0Rk4jWnxYOG0wKEk9fX4+UChJe28lQXMhNgp6NyZmQ0BgYGI2
aXh4YElNQWN0OWJXejlTfilQWDJ8Z24rMVcpZXt1cjkpMF8kbTcoQGdRZjJqOG8wMlBeUExpXk0K
ekxaK299bV5FTE0rPmwzU3RLM01uKD9ENkdsR21gYFQ1RHg/YG1NSmc8VykhU3ZkNWdoUiltQEJf
RjA9YDsyViRfCnp8RzNzd0NNbiQwa1NvcjdQMCU8blQzUmlVeFNjV2loXmFTRXE/YHZVNHpoNSlO
VExIeTtHdG5hdG55S0tTPXZgOwp6WU0hUChLT2Fva196KzVaXmUhbSVWU0ZoMFJXWilRWjdiQHpJ
aSUycXpEI3pjeWhpRCpPQn5lcj89aHtVQDl2NigKekkwSHExeyUkd2Rvcn5VVk1sdVYmVXo1eldi
VER3dlNRRDx7eCtqcyEwT1UwZGNgeEU/T3JuYUM0SHVWZi1yPiFiCno4X29mdDtwU1AzaTtGSili
RWRGMUw0NiVAKy1KbmxpKGhiXnA9TDRLPktqJnJRNko2JDEqO0VQKiEoM3w9MDNLPgp6MjhueD8q
KnxTK2V2dmMxKkVRQkNGZCpvXi1VMG5CN14zUmJVJFI0ZHQxdVFPPDtLZGpzTlh3d0pXfjBySnZu
M2kKemdJRzZgdVplfjBHKkJGTk0oZik8TFYkcFVlfFA0Q2QtQXJ+RCF2fGc0Vkk0ck1ZUytyKyVC
TnhJVW05KSl9fWFACnpHcVN0cnJOWm5EQWJqSVorIUBFLWY9dkROJC1OVG1pQTxxckhLVTJnNEBj
QERzUDIzRzNVMUBUYmB3OzkxaT5DYAp6JEIqcFgwQ3JDNEtffkEkXiUjQkQ7SHIkSD9+SnwqTSNJ
aTRjYFlVWUNrQyQ1NSFgbmdfaFpZR0xIVVNlPyteRnkKei1NYV5TK343Sm1KZ2ZAT2c0Iz1PUX1e
PHNPfmomeS1AZzZ2PEw2NX5nXlMzO0ZJS1ZaRDZlY3pDQVdWVUU8bFRACno9TTl4ZlF0PytnYSQ1
RlNMbXFXVVZZYjgzUH52YGxmYkU7T2hiR3JZem5rMD4hRiZ4RmB1PGxZWGs3dW9fPVIhTAp6a1U0
ZWFScDBlIXdWQmMlSiZ3dzc7N2RZUzROQUtrITw1dGA+bTw5aU4lYkd6TTFQTTdraCZuNVVSc0kp
ZXdLUDYKenlsUTgpMXo0aDVkZlVhKHA8RVhTPG1rY2ZeTnNhZyFPZGVPb0pDRHg8SF5Yekhkb2U+
SXJzRGpCV3xQcHJ0Xzh9CnpXanY0YkAyVUZ5d3p8OCFnY3xgOFYtdCh3UXR5Q3BqNmdDMmdxKDJN
Nis+VX5VbkpgYXk8VnBUYCZPVEBlPSo1KAp6Pk9qT0hlKiZJJHhxcSVEWTNeTSMoITNJWVhQbztQ
cStDWDc+S0xIKXlkZXZ6I2dJZmlUK3AxSnVTT21kPktHZDAKelNKeiQ1M0U9RCtkOzMjaiowe01e
dHdhN3UpJEJXfGNJQ0NzV1YlUHxReUJtJDlzcjtvMDx+MGQ9UksyZmxERmxpCnpfJjduY15XY3ht
cVI5bU0peVVYaSFwVWFHWkU4RTdNZDFlIWA4RTV3NWElcStmQXw5Tjw+bEpfZT52b3w/ZUF1Zwp6
QCsoaXRnNW9jUiYzKExOdlAwNTZtKjNZWkVtYXA2R0cxcGt5Q1opOF4jQnV0UEJrXyohY0pjK3o5
RURUSEkyfWMKenRTTmI7YXoyc3I/ODg+S2BXNGhvcTBtI1pjVnlhVGI/LTFRUm9DIzh8MC15bWVG
ZkxALTYmN0t2VTstRzBmSCFsCnpTVFFATz95aCgwbzcmbWlpJm9kSEY0YEx2eF8qWmsqYHcyOUJ+
VnFNc25VfnRNUVAle3k3RG0pUEFnVm8yPUJFTgp6RUV1cnlEMCM7a0N+K1BCMiZQKz9XNX5ULVdm
TDhYMlFtc3RCXkh1R0t1Tzc5KHhVbSZFVHhSY2FzKThYa3orPEoKemNOfE48JTNCbzhGSyh+Zjho
QG4yIV4weipTOz4lUiRZRTQjKWAhZStLe2F9QWBTOHtvVFVDQUljaEpjbjRYOHBICnpHR3MjbURw
K3hEdHpCJm9sMnx+LS1yekFValRQXj9AS25LbDVgQGlndSpCOT9WfHVMbS1RQT5ec0R8LSYzeDBw
fgp6dSYmZ1kzNWdlT2prIW9BV042cFAzZGB1OGN+T0g4TGlPP3kqPnVqRW49O1Rxd3NaZE9gOU0w
Y0t7S0xUSTQkNEoKemlDOTZ1PCt9SCVTb2lKO3ZvI21PPThkQV4yXyt5PGo5ZXFJST1WenxITDF9
YlJgTEhydlVIUCo4IUdLZXR6VjF+CnoqeVBxRHh6MlU5OENzV3FCfmlMTTgpTld1VzNlZTxoTWs+
ViNwRnxtUldBbkA3dmxUZEVFbUdRRTQxJiowKj4lSwp6SH05azVOZikpUD1+UTVgbFIpSH1CS1lJ
fE1rcyQzWGR0fHlicGptVjxfbnc1eSs/eUcoWnxybj1RLTRRPCh2fiMKentrTDh9SmtEcWBsVEA+
UlA7Sz49eksoeUBZXmV8WFFJWXpsMVY1ajUwanE4IztfZClaWG0yLXBaITxZY0lMXmY5Cno/QTNv
I1psbmJ2UXpnSFJXZEkhNG9zfWp6ODV4IUp4OTUrZCN2OHhLSmRXQkF4YW1PPmlWZnBhU2JlQT07
SXF+JAp6WEtHPitwfG5gPkJGPlVDTSE5c31WUUcydjYraz41Q3ttUTlxdlheVmtZY3tqfDlgKVVN
OSRpY1ooWlNrTHZ+TyMKejlaa3lZeGxGMUlPQFpSSGYpbz1AeEskNipXTmstfl5UPTRgUjhvQXtY
Yi02MW9kd0o3Km8zIzEhaUw3NF51dGA5CnppQj1TbVpqQDc9SytyNEctaWBsKkFhcnc3UD9FZT5i
ZlIqTlRKYSN7aWhqeT9ufmt9c3pwLXwlWSNsT1E7UD9+WAp6UVRkM1RKUVF9TmZ0IXQyY0spZUQ5
dGFoUyFuSWM4cGV6WG9iQiVERyh3bSh4Z3x1U0VQZn1uX189eS0oMio3JEIKemxjMlBtb04mMklm
NjF4eFM4OThrP1NzP2AqUmU5a0p+dD8xa2gtcUZ8TXR5ND1yanB1Jns8N19JNnZVeig5N3szCnpM
ZDJSZ3pZal9JQyQqUFAqcVYoYz9vMHIlPypjOEFoZVNsZnspZzRPQHJvaHljSFlHail+TiQ3NDFL
c2JTbEpOcwp6eF8qJmEyaE1kdUA2SUEwSEI1ai0xUHRxPGBCX1B5K25MZGtOMk5+QWN4X1ZgcHFg
eF45WiRQZzFneGhENHRiNCQKemwzT3E+dkZpWSN7aUgrUG5OTHNTKUZ9JjRTSjI1ZVQzckklSz9T
eFl0TDtJSEdBcCFIKlNsUUV0ZChTdlA8Q1BiCnoxZT9MJWwraT9qaDJFdEVQZlN8R2cqK08kP3NX
Q0FyWTM1WUlzWndOSkdYaVZHQExAPClDfjZHTWlTQ2QreDJrNgp6RCFocyNDYzNLSVQoJkVHcSQh
UiE/JUIpe1hzRjY9P01sN250PFFAQ0pfT3lpYjcmfVctV35LRzI3X3NFdHA+OHYKejI+PUY1ZEUt
KCUtZDNzUFZzPVpIR3J+MFQqVmYrM0goRl9JRXR5Pj5rSlIrOWVARUtVYGNUZ3pjeyR8ckJBVVYz
CnozZklKTzJxdDVyWW84XlRKTHljczc9ekIyQDIpZm5hXnFkYiVWPGpAZCpIUXttejRhbng3fVNX
YU51RHo+eUt3Mwp6X3VjR1ltKUBGd2BASFRCbGtmbTJ2Y1p5QGBiOU4lOVZxfSFZTi1XLWpuS3c+
XjNsblRPTXtpZ3oyOUV6TVU3QFEKenhCX0N4ZDNreV55NiZXXz9hbn5rNjx6eTZVI3dqKTw5elV1
aTg4RysqLXkmcWFpe3VoQVV1Mz1EQmgkTngqQUxSCnpTek5GPUNFZ3pKQWUzOEAwSTZ+RWFAXklu
dU5EVyZeTHg5WjY/eXZaVD1UQXBlcTEjISNKa0M7bkhDcUBQcFZMPgp6NDJ5QiU5dzNoMjxxfHR0
SWA2aFdyWXFJaEQ9M3wtcio+OVh6UGpPX088UkhqZ0wzZ1RHM2U7Q3BZQjlXaTd4X3UKekgwIz9l
QEBnQ004VCVvMSRaQys7PipDTn5mQCEoMkpXNnVtMk1WZ1BSSzBlI08+WDs0VDFaaUlLZnNrN1ZJ
fS1OCnp5RCh3Pm9mYih2UlU9WHIyPSQoZHsyRjFVaz1OeU52Wl9CTUN1d0FXZCt9KH4zSXBDej08
QlNSeypWaWY/TVcmbQp6RHd1dWx0djRoZSFZPDgybFZrUkpqaWhKUnRUdjAwJmM2bnR4eEY9KUFN
MTB3Q2FjPW87cnpZQkd2flNjUXBwNFMKeno4TCFrNF5QaHt5c3xtVlI1SlQlUG1Ja3tmP2B9eWtM
amhPVElRdDE1UHI9MitGIT9PNT9tJG9BRT9lSmB9ZHtDCnpwdE5nP2VBajJtX1NZJVh1Rk1UUUlJ
dC00cyNseGtCVX55KkAwa01mdCtxJTtqJjBtI2t1Yik0SSRlKCFAeysqUwp6b2llZn5iKUF4TVRs
Njt0cHg3PCVVKkF+ckJDSTZ9Zn00VismaWVvIzB5UXVtKTspWEhMTVJEYnpMbHtpO1FAJCkKemNH
NmZsTzhgQD1jJW0rY1BgaXN4ZzhaM0hSdT9GP2hDP1o3WCtxXi1MRzR1fkBhUSNfcj0/QiZ5KFk4
YWgqNnJZCnpuIztwWkw/ZmRYSyopZWRpfHQzdkdMbVo4WDl7JFFMfkxuYExTMHoxeksjXlc2ZXQw
dDZzMFY1VVJTZ1h3ZCQ8agp6bWRSTlJPJmtvQ2laYERsYjAlJlJCNFo9ckJRenprbShpN3RvRW0y
OCVvY21Xd3J3bHZsVzd5blVodTZeV2N8V1oKemxuUWdPVDxIb3hMWlpqSk9WRDdIcnhNJjVLSWo+
JSN2SFJzSH1Ec09TWXdMVVlRTS1LeUR0czYqX1h9YHlJd1pvCnpkVUNFd2ZtUSkoYV9QfkBUO3N3
WVFjSjUyOHwhazJnT204YDk7PE1vaG5gIUA2JVpwKDZmU15KVkFzbHhfXzs2VQp6VCE8OD9AIU1Q
bGl7VjdGcVAqdlB1WTgwS0ZtMXFDTUBaYDdZOUZ2b2hKayVCNnF0R2sqdF9tMXphe0psN0Z3YV8K
eigobz0yaWolfT8+eilFfCEkZDtMb1FIVXRUIy1tNWh4IXM+OHpoVio9cVo0O08jc219SllIIUpT
ekJLWjVsaj5iCno4T0FRdnlhKXBSdzlYKk5IQ1VRY2A0R0BidSVBfTNsSEV8aUxmWmBQISpII01k
JUhgcUk2elMwck0tKD17KEhNTAp6X3VVeEJnP0AqOFJIZlNsbHF8SDJgMGM8SHZjemlCXkluayY/
Z3glOExzYz4lRGRNSk85TjdpcW5MPCMxVUQrKDUKej9LNnZ1XnpMIzMxdm9AdTB7ZGw2aFYqMDMm
JENuI3dvUFFAdUhRWHxjfXZPMWd7TXFJPk88ZVg8emBqckBOIz8qCno8YzF8Y0c2WjU2XnVJYmNz
PkhGY0RDfk9KbV5heyhCd0BwSEhObFZXKzJ+PD0qKUJpYDNkSEtyOG90ZXpsOUE2cQp6KEA8OGVm
MnJtO1Z2dWZBZ05iciZfeS1+M3JpQSYjbVRINW9mJj4kJTR7eCl0TF9UfiZKT1BleExZVFFXMEI5
TXIKekE/a2kwPEBORSVGZGk5RUZJK0UjT14mJFAzY0MoO09tKG1ILVFOcU5fK303QldBYUlBSTY2
PU8kKlNvVDVUTSNtCnomUTFWNV8kQF53QnRAIUN7Ji1KPWhNPlBSbG81RTA7MXVUZTNNITVGZTcm
MTVGeVA4M1g8WUZCRjF6LTNRYTNLcwp6PDVPOCE9M0wxbWJaUjtITzQjfHtMTlRLcGBNSTNwMDIr
UlRHT2JkSXVoLVkycU0+UnopSmZQPSZCfUc7PTFfYGgKelE3UCFlN0Q7MEReWEokNU9LeHVCZXYy
SmFyOzRPRytnfD9WTnhEJTUmY1J7cyFUMEFjZyE1cDRgJDZOelk0Y34tCnp2KE19NSg3VTF3LTMj
bCZuRGFKNFc0dGZ8cit1YFJZUUghUGRKZig9NENwbVcmUSFeSk1Sd1NSUWRMXntvam48OQp6VXRw
bGBSWj0wIStkUntUQ087djdudiUxbVR3S1ZMTU1sPC1pcCFwTTx4XyhiIURAI1IycHl9YXNxeWJF
eERIO1gKemo8X1V0aXAtS1pQUHloYmJ5aE4zXj5xNENsKENjT0g3Qj5AUGwpWSpGQjhwak4tZVht
YntWZChuOTBEWD0zSUVPCnpGUVFAUlV1WXdQVTNaRmFfUkAlWW9IOFlMaHZsa2pIcShQcWtVcnFU
VENHfTdMRn55TDlqKld+TSkoWiN4b3lkWgp6Y01oPj8lSUAkbXVaTUlVYylrMmFzKG9pWVRANil5
cVpRO211cSM/PXpXKU1+K0Q2QGQ7VXdkUUQmTUIhYnAreTkKeiVDNkFRMiEhNU8jXztuJDlsRWE3
bmc5PWFhcH09a1k3bHVxWSQ9Yis0MTc3OCNsR3d7YWJoMiNiVk50OWBfP34tCnpvZF4hWmJndHJk
KyYhQFQzRSp1K2xsPlp4K01ZbldrakpQMUxubFVsO1ZyeyY9e2VyfElXdVZHdmArKnU3I2Mpfgp6
eFh+YWZmaE8hTTsrRiNFYT8xfURESS0rKlhIUSVCdWFibHo7P1pRWW9LR3R0dGFvbHM1OylTQDdu
cFdUcU44Tk8Kent1Q2hXV29TZiVzRjMqJlZQaDR1QmxKaDtSfTUkSXgmdmJ2MlJkbjEzeng4QDJH
Ym5vZnAoWVlaYkE7OzRBO2hrCnpeVyM8NV9SYW11Qj1EVzgtJHVDSGFOTT9lczdPZVhLZWRrcSU9
VWAwMm5NR2xRZ1U2P2IqMWd6Snt2cjtJUktQPAp6UFhVYXdjRTNwfUZkTWdTQTduYHBGKExTRTA8
K3dIZX1ecn1jUSYmI1RfLVpkNG9JVGg7SF82c01ke2ohUlVsKX0KekkoV2s7bHpAYGJPfSNMSXRE
KDlDdGk/bFVxLUFBUWZ0PzM2akpyJms3Rm08dlBEOz4+TEN0MEwlNSEtM2pGQUtPCnp3bnV+KWt9
PSlhYlVERTYhO288MFA2SX0oS3VtTkYlQFhOek1EWTJlO0hLaGM2K2MkaVNVWUckQEt1N1Jea18r
VAp6NGB4YjdDdSR9I1pZe0hUd1ojcjBCWDYqMXdOYEc7V35Za3F6LU1BeSUqRVMyUGhkNmA7Vldj
bE55YT01YTQkWVMKelVMKStnNityNWpNPSZJSkp+JFZxTFF5a2ZeS3c9UnBgNmBUeSlEVW9eXyU7
akNIPndJJkxkK0ZfT0AyY1kwPzR9CnpyWTF2ZkUjbHliWiRVVm8jPllQemthT3lQSlRNQkFDUj1D
aFVuVTlBSWlPUjBpbjx5MVVuZUNLPGdlOGBifmV8JQp6MDZuMVB6KGk9Z0BtfnhfRT9sbitqfX03
KSV4SXh+dy0/SWNpWmZufGdYOWg8PHorSD41WSg+eDBMJSElLTwzfkwKeis0fm1vUkc3aEJRVUMk
OTJATkRGME9UNDBDWkV1bCZqIXpGc0JMdlhDdDx2Jjk/SGVBMVM/PGFGJWZTfj9iTU1MCnojZDto
SV57YD5yc29wV2xgOCE7Qzh1TzMhd2VQM2NqbilUJiZ9QlRFaz1BQTk8PWtjWlozQCYzKzByMkxi
MW1fbAp6cmgtX3Q7LUl5ST1sRHM/Iy1BeElufUJqMGVnWmh4OHotM1lHekMzT1lvYkVLMWxjfHM2
QjlHdXhWdWZHZEg9Mm0KeiVITGhyMT9iIWFgR0xkZUFBPD9vd3VETzFIcjgwXkdFPlI4MDdlOSFO
WklEMGlLPjBXbUZ+OE1mcmtHblQwMV5jCnoxUnZQKTQhWGpmeklsVGQtUn5IWG5kI0sxLWRIXkRH
ZzFDUChVS0pVeTMqaEwpMF9aYmttJU17bT1HQVA9cG1HVAp6Y0NxeWhSfnQ3MWJIZD51LX1JNk0w
PkxmS18lNlc2em93Y303QiM+JXA7KGZeOV4wYks+Qz9jOGtGJHkoPD5lUkwKekJtZVVaOzZRZ0Zh
N3whYF81Nz5SSVEjdFNSbjJlRGVmRFEtLW11UmJQNihPdXAwJlElY3hxan5aYXpfcVlJeFE+Cnpl
WW0lTHR5d0tBO1R5JlBuWkJTZnYyTG5ldEkxI0cjd153eUsrOzVITlR3bHw4RytsYFNScWxUSjVu
RkRwWiQjYAp6c2ptNTh6RFAoRXZneEZETFklVCUyQG9zRyRRNXlNQHlaMjs9TH1vMHdMeU9PWmdw
VVVGNTNzYWlaRVopYStiTTsKekEyV3BNYE4pQihjX19TXyh6dz13MWNlTnlFcFlHZFR2SGhRUGV0
UXlBQnwyPXk1Wl5ZJHZHR0dXTDd6KGhNa0o/CnpLWH0tOWcycmhaVkpzb3gwITBGQ0Rybih4cjtF
WnFHMGIlSGxWOzA+KnFrb3t4MXVOflgrUGFMdl55ekJSRGhISwp6VnYjdUxNKElNMTBHdldjOGlC
YjVYdjQkLWNrcnZCKlk/ODkxOE9IIzxmKik/QzVKakFzajR0QCE/P1gmaFMrM34KekdgSSNoUnFX
bGshQyZgUUNIR2MwI3YrJmNpbDtJR2VMejhLYn16Um5FJlphcVBUeVlBJj9TRiMrVEtrezJDUmUq
Cnp6fDY0PWlRYWA4WElSNDlPR0tqYWJxME9vUCZYfWkxfHxlbzVDTWJHSmA+UkBTbjVzX1pieVNk
byZEdEgqR259Rgp6YnJVbk0ySzwzQlVxenhZaE1TQmNvTlNHRS09KSlWZHRQfVhRTXZ2VFYoNkxh
WD9afEdTYU91dHB6emMtR3pxUkYKejBmbVc9ezswdDxSKHsyRzlvJHl1TDJrM0ZqPj1qfCRoO3VT
PDFyTztkM2FUai03cFRAZ1Z8NlUqZFYmUys5ZGJPCnp2b3JKYXJ8MEZjfEE9N0xjVlZ7JGU4d0wj
QWs/X3ZTZnZmPHh7O2twSWJJJX5KUipILTVQJDF+ZTNHMllGZ1dfRQp6dzkwbEVocHJeSndfVTY5
eFhJVkZIcXxaJi1HZjJ5VkFeKnx8SysmQWErfn5FbT5LcyFgcVpHRDlfTV5kb0VKemgKenUmQkV8
bz9wYyFYYFl9fFR+SHZQdkFmYGNRLVZQLVhoKnpkTHI1eyQmfGJ1Q1JPR05lVVFEXnZkSmlgQmc2
YHZMCnpfVXQkOG12Z0kpaTkpN3hrYU9WNSF1bm9iaUtrfHhjU1pNPj4rOU5rRTNNSSkrPEp3ZjM/
MT9aeGx2OTI2Y3AqVwp6b3pAd2MyR2N7KUozbkFEdzVTN1BWWlE2fVhGTTkxPWchUGVNNGxWPFlt
R2FUK0l3bD1SUl9eNks2U3hZN1orfkgKej83eW5DTU12RXd3ZVhSTVM1WUxFMm93c3tDR2lDIUJf
a0BvbmRJLUJwM2EofmgmK3l2WH4tNystOztgZTt1IXlfCnp8RlZpeD8/QnFLVEp4WGRZO1pNT18h
Z21Sc0M/JWo7X0o5VEkyZD10ZSg3SEFpQVhqWXt0RUZ7PWcoaCF7TyFMeQp6N3wqY3J3NyVfTnl1
UWkhSFk+SDFAc2dvdk93I21eU3ExRXlSQD1BVkN+XllwVXFabE1yQV53b0JndmZWeTgyfTQKekAx
TVRxa2h1fmZaMUBmdFdEcEk7cHJJfkA0TzMyNDk5cXcmVEB0YUlvKVFRckl5ZzkobndsMDNePnJ5
c14oaUV4Cno1O3Y2YEJWPTc3V1RCM2ZVOzE8eWhDWXBkRG1HdE9aVi1KUHE7Py1WJFk2VS0+dDU2
diVRPn5Mcn4pfTw1b0l5Swp6Q2Nlc0JsWExVNGp5QFNTaSY+Uz1lR1IoS1dpPnRCX3NwZEozJnQ1
fDErTlYjXzZKYTdsTWx8NkJvR1daZV5LY14Kemo0PFJsV2BYZzxQLWxIWU9fNzY3U0FNeERsRXNg
UjtCWTgjbWlnLWYhVnJDN1NsfSF5RHctQzUjcWNAVnN1Z2grCno2QDRnJih5PThvPGx1YG51dG5O
I1omOGA/WkVweiNsO0tiMCQoe1lAIW4zNjxnbUJwLU91Smo2ZGRhK00lLVBMRwp6QG9PdnluWT8j
XyhMNDc4MVUoIVZHWWFQRGJ+Xz9EcU5ZeDVrX2Q3fG1kYyYzVkQ2O21vfmQtNWkyQUlldTFgMVcK
el94aCVMYSFOMnVecyNUd1FOKylnKGlTcjZTTnhSPCZ9eXNyX0hlLTxMITBjQCY0WW5GJGVYb0t6
ckhkKEBNfHUrCnppUChJVjhxYzIoWklkIy1lcV9GPFEzWX48bEoraThNJllTNGdgOFFWVm4zVXla
Pnk3cHk1NGoyaEU3cyQpLWlrYwp6ZlBLI3o0fCtlXndrajZuNExwRDdTIWlsbSo4Nzc3SDgmNiRk
NUNANG02QEJ2Kkp2QHN5XyhgaHs9bDl7MTVRbXcKejQ3KzVjRk4hKGtJX1l2bXVTTTZjPDtCczRC
Pm0ocnJWQ3wkVDZVSTVAMDNNcFg8MDdlQ1o9JjReRDs+aEwlRVg4Cnp3OSRlNTk4dk0+TnArZ2lh
eHp8WUVGK3EyZDJKRGB7M05EV0lYUmhmWjk2QXRgQEMqXmxIc1JeOEdadk0xZ3Naegp6QyRqWU9Q
VkYtKSYyUWReKmVMbjcwS1M7Vnt5KmN1JVR3SnpyN1NwOV59dWRWJihEVVhXSz9FV1Z0I2dUKkl6
U3kKemwqYz9Bbnt+Klg1eG9QYXQhcm9KWEF7PXU2VUpUVCh5aVB6bmtGTWVMTGxTMFFLZks9Zjw8
SCYmcWEhezZ2OUJnCnpBb2ZlaFZHe3hTblUoNEl7Tm44NWlSVXF1Kl5+RVhicXg8PkdMcUsqRUIx
blojcnxlTFlvfEg4P0xLcT4qTmFaSwp6RWpgMXBLVkdqSjd9KFg8KXQ1YWI/dT5HRVhrYEVYZEIq
MSo1PDZHQjwrKXZzI2xCOWtvaVo0OWt1P21gaTxDS1YKejRyOW51KDUqNG88Qj5uSnBiTGUkRmdH
QUp1WHVobioxMU15Y0tVREd0OWlmKE4keDU/dXVVPDFwKCs9XlZIQk0hCnpKSD9II0glcl4rOzln
U2MhZ0xaaEZydT9IeFM/eG9Ta3w5X01yNjFlVmg/NHJOaChMQHg5Y1NIe2g3ekdsbFI5ZQp6T2k7
RjA0TWlBaHpOPmUkKTt7RnZtWnQ/VlZCRzdVaWIpM0dyVGw9WWFFVmJiMX1GWEpWLXN1KD5pSyV9
IT9BfjAKejVWS21hMX4rTFJOT21saU94OTB0T0gjKHk9U2pVdVFhMWdnVVJqbjsod2M2bCRzJlJl
cFgxaFdHT1QwQ0BNUlBfCnpmRXclO0IpZDNuNHtKTjVndmJ+Q0JjJmJlOXZKblQ0NVd5TlBLb19H
Zyp2bEBNe2hWayhBTHVYdn1ePDJnNyFMbAp6MlBhZWkmZTxeOSsrYEthPn08UmQrajQ0dCozWCVy
S3VQJmR3NEptNDt0czcxKGdaQHdBRm1YfUNnSXwyQDB8RnkKemV+QGdKPiFwKFlkM1MhV3VHTkl+
O3R2VHJlNkU1NklyaXgyMUJtNkRMS2djRlUhNDQoYWdkZXY0dXUzXkJ1bnBMCnpNXzw9YmJ6T0lU
X3FuXj5sUEBRO1BvZy1oQkBKMXQ4OH4qeF8lJE9EOERMS3ViSm03QGhrRG9Ma2RjIy10Zz5mWgp6
USE4TDdeSSowUlU/Oz52QHwhWUROdlNnVi1CXmJsOHNONiZ5dHE1RW05O0IxPnlYfEBeIWZJck1K
Yzh2ZGg+T0UKemNMJWtZeE80aHFgb3d4IyowR1AqcnZQazBvZ212eTJkaDRHaFlBMXV2K21+fExJ
d3M+N057O1g+SH4lTHcjQDFnCnokM0pqQ09XR25ndk85bXF5bUtIYDV3QUdWUTt6SiMrIzhvMV4y
TCVudUtrZ30mOztAX3ZSIzt7YkotWERvJk9IVwp6SDRrKHswfnxTV25PO1VyVWF3cTlFeSF7I1JV
amcraiU4NX44d3J8d2k9dmEwUlRjaGgzYjIjeE98R1I/Wk9eaTwKekdTPlZoZk9IcCEzfXZBPFZF
NlVYS2JPPGIoJDhJKCVDemxyfEZNQ3t3XzV9JDZyZyEmaHEofnNTWGpmai02fHdJCnptNzArV2wz
SztiR1lEbEhye1l0VmJ2eHJAIXtCfkBXaWhmZnohN29lWHJNJHlmN1dnOHN9JCYhUnJ8bGxmISVe
Kwp6SD5KflFaQjw/ZmJHMUtHeTY1ZSYrPis4VmJ6T3J0PG88VE48KipsVmRGV1ZUJSFeT1UmUGNJ
SHpTR3MrVSQqdEsKej4qIUw/Nlc+e0ttdDN5RWRreXF3RUdmT35iNGFYWGtVWTQjI0p+fEh5clBu
PCo5ayRoVlIlZE5jYDJaeSQmIzxwCno9aU8wJTlUKk1rXjwtNzt7QG5aeThGdnZ4bkdvK2dIVUVQ
ZF5NNXBWe3g1I2QoSnJWZC09eCRZMisyPkgqV1k3Mgp6Smw7SCY1d2xgaUd3c29ZbWNJS1VDOXRj
JXBHUkdudWojdHxeOyNJTGkjXz8+VjZ1R3BCa3s0bFN7VTM4Ryk7KEMKejA2cDUtSmpDfWIqXyh8
cU0qbGNWfENhfCZ8Rj9EO0E3OVRqR2F8YVh5RGdLfFp3OUN4SlVodTlOTX1FMEtgfCF1CnpYdzJj
NkZoSEtYKUtPNFY+UX5yUHpQaDVAYE5DVUkkbHZneVZXdl44M0ZxI1RhMmE9Mj5aWHQoYiFZIXVv
YW5BWgp6Sj4wOVR0anJvO29iQkZMPjwpUnE9R0R2Ukd8Y0F8ayZAd2FjYFlUSTMoNkRPWXZxekRg
ZjlNIXk7IVh0UG8wV0EKekVIdVIoODFVYDlpbT87RmxRPilIeTd6aSg1NDQhb3QxV3x1MmV3LTRK
e1EmaHFyU0FnPCFOfE9fZk17czh6OHY7CnoqWk1TQzcyZmlIVFVlUHxwU1BYKmVeSCshPmM7V094
UXVeUz1sQDY1YENuWjh8R3hjU3pVSzRhQUNtdFRNRShmWAp6WD0pQERubEFpTiYqTjg4ZjE0My0/
bj1QV1Y1ey1aY203ajR7QCpBNlchQ2NWa28tRiZlPUR6RFQmVG5DIVZgQ0kKVFBRZjRHQXVnJEZ8
QzBCISNxSXdFQH1nZWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODc4ZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorVGhlcmUgc2hvdWxkIGJlIG9uZSBiaWcgc3F1YXJlIGJlbG93IGNvbnRh
aW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVmdCBzcXVhcmUgc2hvdWxkIGJlIGZpbGxlZCB3aXRo
IDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCByaWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNv
bHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0b20gbGVmdCBzcXVhcmUgc2hvdWxkIGhhdmUgb25l
IHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRoZSBib3R0b20gcmlnaHQgc3F1YXJlIHNob3VsZCBo
YXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNvcm5lci4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1sIGIvTGF5b3V0VGVz
dHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wYTYzMzNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKyA8aGVhZD4KKyAgPHRpdGxlPlRlc3QgZm9y
IFdLMTEzNDIwOiBTVkctYmFzZWQgcGF0dGVybnMgc2hvdWxkIGJlIGRyYXduIGNvcnJlY3RseTwv
dGl0bGU+CisgIDxzdHlsZT4gY2FudmFzIHsgYm9yZGVyOnNvbGlkICMwMDAgfSA8L3N0eWxlPgor
ICA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICB9
CisgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKXsKKyAgICB2YXIgaSA9IG5ldyBJbWFnZSgp
OworICAgIGkuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzUwJyBoZWlnaHQ9JzUwJz48Y2lyY2xlIGN4PScxMCcg
Y3k9JzEwJyByPScxMCcgZmlsbD0nZ3JlZW4nIC8+PC9zdmc+IjsKKyAgICBpLm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpOworCisgICAgICB2YXIgcGF0dGVybiA9IGN0
eC5jcmVhdGVQYXR0ZXJuKGksICJyZXBlYXQiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBwYXR0
ZXJuOworICAgICAgY3R4LnRyYW5zbGF0ZSgxMCwgMTApOworICAgICAgY3R4LnN0cm9rZVJlY3Qo
MCwgMCwgMTUwLCAxNTApOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKwor
ICAgICAgdmFyIHBhdHRlcm5YID0gY3R4LmNyZWF0ZVBhdHRlcm4oaSwgInJlcGVhdC14Iik7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVyblg7CisgICAgICBjdHgudHJhbnNsYXRlKDAsIDE2
MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmls
bFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICB2YXIgcGF0dGVybk4gPSBjdHguY3JlYXRl
UGF0dGVybihpLCAibm8tcmVwZWF0Iik7CisgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVybk47
CisgICAgICBjdHgudHJhbnNsYXRlKDE2MCwgMCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAw
LCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAg
ICB2YXIgcGF0dGVyblkgPSBjdHguY3JlYXRlUGF0dGVybihpLCAicmVwZWF0LXkiKTsKKyAgICAg
IGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuWTsKKyAgICAgIGN0eC50cmFuc2xhdGUoMCwgLTE2MCk7
CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorICAgfQorICA8L3NjcmlwdD4K
KyA8L2hlYWQ+CisgPGJvZHk+CisgIDxwPlRoZXJlIHNob3VsZCBiZSBvbmUgYmlnIHNxdWFyZSBi
ZWxvdyBjb250YWluaW5nIGZvdXIgc3F1YXJlcy4gVG9wIGxlZnQgc3F1YXJlIHNob3VsZCBiZSBm
aWxsZWQgd2l0aCAzIHJvd3Mgb2YgMyBjaXJjbGVzLiBUb3AgcmlnaHQgc3F1YXJlIHNob3VsZCBo
YXZlIG9uZSBjb2x1bW4gb2YgMyBjaXJjbGVzLiBUaGUgYm90dG9tIGxlZnQgc3F1YXJlIHNob3Vs
ZCBoYXZlIG9uZSByb3cgd2l0aCB0aHJlZSBjaXJjbGVzLiBUaGUgYm90dG9tIHJpZ2h0IHNxdWFy
ZSBzaG91bGQgaGF2ZSBvbmUgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPC9wPgorICA8
cD48Y2FudmFzIGhlaWdodD0iMzMwIiB3aWR0aD0iMzMwIj48L2NhbnZhcz48L3A+CisgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNzIzZTUuLmMxMmJjZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNzEgQEAKKzIwMTMtMDMtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBz
aXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3Vz
dG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBQ
YXNzTmF0aXZlSW1hZ2VQdHIgdHlwZWRlZiB0aGF0IGlzIHVzZWQgaW4gcGxhY2Ugb2YgTmF0aXZl
SW1hZ2VQdHIKKyAgICAgICAgZm9yIG1ldGhvZCBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMu
IFRoaXMgaXMgbmVlZGVkIGFzIFNraWEgbm93IG1hcHMKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIg
dG8gUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciB0bworICAg
ICAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4uIFdlIG1vdmUgdG93YXJkcyByZWYgY291
bnRlZCBzbWFydCBwb2ludGVycyBzbyB0aGF0CisgICAgICAgIFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZQor
ICAgICAgICBpbWFnZSB0byB0aGUgY2FsbGVyIGlmIG5lZWRlZCAoZS5nLiBmb3IgU1ZHSW1hZ2Up
LgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbXBsZW1l
bnRhdGlvbiBmb3IgU1ZHSW1hZ2UuIFNWR0ltYWdlIG5vCisgICAgICAgIGxvbmdlciBob2xkcyB0
aGUgbmF0aXZlIGltYWdlIGludGVybmFsbHksIHRvIHNhdmUgbWVtb3J5LiBJdCBpcyB0aGVyZWZv
cmUgY3JlYXRlZAorICAgICAgICB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaXMg
Y2FsbGVkIGFuZCBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZQorICAgICAgICBjYWxsZXIuIEZv
ciBub3csIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgb25seSBlbmFibGVkIGZvciBTa2lhIGFzIG90
aGVycyBhcmUgdXNpbmcKKyAgICAgICAgcmF3IHBvaW50ZXJzIGZvciBQYXNzTmF0aXZlSW1hZ2VQ
dHIuCisKKyAgICAgICAgVGVzdDogc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbAor
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCk6CisgICAg
ICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIE5hdGl2ZUltYWdlUHRy
LgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgIChJY29u
RGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBv
ZiBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFn
ZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3CisgICAgICAgIG9uZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgU3RvcmUgcmV0
dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPgorICAgICAgICBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuIFdoaWxl
IHRoZXNlIGFyZSBlcXVpdmFsZW50LCB0aGUgZm9ybWVyIGlzIG1vcmUKKyAgICAgICAgcmVhZGFi
bGUgaW4gU2tpYS1zcGVjaWZpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJ
bmRleCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0
ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0
ZSk6CisgICAgICAgIFRha2UgYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1lbnQgaW5zdGVh
ZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIChCaXRtYXBJbWFnZSk6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
IChHcmFwaGljc0NvbnRleHQpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFnZUV4dHJhY3Rvcik6CisgICAgICAg
IEtlZXAgTmF0aXZlSW1hZ2VTa2lhIGluIGEgUmVmUHRyIGluc3RlYWQgb2YgT3duUHRyLCBub3cg
dGhhdCBpdCBpcyByZWZjb3VudGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoSW1hZ2VCdWZmZXIpOgorICAgICAgICBIYXZlIGNvcHlOYXRpdmVJbWFnZSgp
IHJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToKKyAgICAgICAgUmV0
dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIEhhdmUg
Y3JlYXRlRnJhbWVBdEluZGV4KCkgcmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQg
b2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmg6CisgICAgICAgIE1hcCBOYXRpdmVJbWFnZVB0ciB0byBhIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VTa2lhKiBmb3IgU2tpYS4KKyAgICAg
ICAgSW50cm9kdWNlIG5ldyBQYXNzTmF0aXZlSW1hZ2VQdHIgdGhhdCBtYXBzIHRvIFBhc3NSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3IgU2tpYQorICAgICAgICBhbmQgaXMgZXF1aXZhbGVudCB0
byBOYXRpdmVJbWFnZVB0ciBmb3Igb3RoZXIgcG9ydHMuIFdlIG5vdyB1c2Ugc21hcnQgcG9pbnRl
cnMgZm9yCisgICAgICAgIHRoZSBuYXRpdmUgaW1hZ2Ugc28gdGhhdCBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYW4gcGFzcyBvd25lcnNoaXAKKyAgICAgICAgb2YgdGhl
IG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyLCB1bmxpa2UgQml0bWFwSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRy
IGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgVGFrZSBhIFBhc3NOYXRpdmVJbWFnZVB0ciBp
bnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1lbnQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKToKKyAgICAgICAgVGFrZSBhIFBhc3NOYXRp
dmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1lbnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50
c1RvSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSk6IERpdHRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21w
b25lbnRUcmFuc2ZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFu
c2Zlcjo6cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEpOiBE
aXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdl
UHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRp
dmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VR
dC5oOgorICAgICAgICAoU3RpbGxJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkZWNv
ZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWE6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICBVcGRhdGUgdXNlIG9m
IG1fbmF0aXZlSW1hZ2Ugbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyIHR5cGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhKToK
KyAgICAgICAgS2VlcCBtX25hdGl2ZUltYWdlIGluIGEgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
aW5zdGVhZCBvZgorICAgICAgICBOYXRpdmVJbWFnZVNraWEsIGFzIE5hdGl2ZUltYWdlU2tpYSBp
cyBub3cgcmVmIGNvdW50ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIE5vIGxvbmdlciBu
ZWVkIHRvIGFkb3B0IHRoZSByZXR1cm4gdmFsdWUgb2YgYXNOZXdOYXRpdmVJbWFnZSgpIG5vdwor
ICAgICAgICB0aGF0IGl0IHJldHVybnMgYSBQYXNzUmVmUHRyIGluc3RlYWQgb2YgYSByYXcgb25l
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgIEp1c3QgY2FsbCBjbGVh
cigpIG9uIG1fZnJhbWUgaW5zdGVhZCBvZiBleHBsaWNpdGVseSBkZWxldGluZyBpdCBub3cKKyAg
ICAgICAgdGhhdCBpdCBpcyBhIFJlZlB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUu
CisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgor
ICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgZnJhbWVBdEluZGV4KCkgaW4gYSBSZWZQdHIg
aW5zdGVhZCBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3KToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KToKKyAgICAg
ICAgVXBkYXRlIHVzZSBvZiBtX25hdGl2ZUltYWdlIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlciB0
eXBlLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Qml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYTo6
Y3JlYXRlKCkgdG8gaW5pdGlhbGl6ZSBtX25hdGl2ZUltYWdlIG5vdyB0aGF0CisgICAgICAgIE5h
dGl2ZUltYWdlU2tpYSdzIGNvbnN0cnVjdG9yIGlzIHByaXZhdGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYSk6CisgICAgICAgIEFkZCBuZXcgY29u
c3RydWN0b3IgdGFraW5nIGFsbCBtZW1iZXJzIGluIGFyZ3VtZW50LiBUaGlzIGlzIHVzZWQgZm9y
CisgICAgICAgIGNsb25pbmcgYSBOYXRpdmVJbWFnZVNraWEgb2JqZWN0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUpOgorICAgICAg
ICAoTmF0aXZlSW1hZ2VTa2lhKToKKyAgICAgICAgTWFrZSBOYXRpdmVJbWFnZVNraWEgc3ViY2xh
c3MgUmVmQ291bnRlZC4gTWFrZSB0aGUgY29uc3RydWN0b3IgcHJpdmF0ZQorICAgICAgICBhbmQg
YWRkIGEgZmFjdG9yeSBtZXRob2QgaW5zdGVhZCB0aGF0IHJldHVybnMgYSBQYXNzUmVmUHRyLgor
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWE6OmNsb25lKToKKyAgICAgICAgQWRk
IGEgY2xvbmUoKSBtZXRob2Qgbm93IHRoYXQgTmF0aXZlSW1hZ2VTa2lhIGlzIHJlZmNvdW50ZWQg
YW5kIGlzIG5vCisgICAgICAgIGxvbmdlciBjb3B5YWJsZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVy
bjo6cGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBh
IHJhdyBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUlt
YWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgSGF2ZSBhc05ld05hdGl2ZUltYWdl
KCkgcmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYQorICAgICAgICBOYXRp
dmVJbWFnZVB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpnZXRTa0JpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpoZWlnaHQpOgorICAg
ICAgICBVcGRhdGUgdXNlIG9mIG1fYml0bWFwIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlciB0eXBl
IGFuZCBjYWxsCisgICAgICAgIE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCkgdG8gY29uc3RydWN0
IGEgTmF0aXZlSW1hZ2VTa2lhIG9iamVjdCBub3cKKyAgICAgICAgdGhhdCB0aGUgY29uc3RydWN0
b3IgaXMgcHJpdmF0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5z
dGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvb3BlbnZnL0ltYWdlRGVjb2Rlck9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6CisgICAgICAgIEluaXRpYWxpemUgbV9iaXRt
YXAgaW4gdGhlIGNvbnN0cnVjdG9yIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlcgorICAgICAgICB0
eXBlIGFuZCB3ZSBuZWVkIE5hdGl2ZUltYWdlU2tpYSdzIGRlZmF1bHQgY29uc3RydWN0b3IgdG8g
YmUKKyAgICAgICAgY2FsbGVkLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpvcGVy
YXRvcj0pOgorICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYSdzIG5ldyBjbG9uZSgpIG1ldGhv
ZCB0byBjb3B5IG1fYml0bWFwIGFzCisgICAgICAgIE5hdGl2ZUltYWdlU2tpYSBpcyBub3cgUmVm
Q291bnRlZCBhbmQgbm8gbG9uZ2VyIGNvcHlhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjpjbGVhclBpeGVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp6
ZXJvRmlsbFBpeGVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Qml0
bWFwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTaXplKToKKyAgICAg
ICAgVXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIgdHlwZS4K
KworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQ
dHIuCisgICAgICAgIENhbGwgTmF0aXZlSW1hZ2VTa2lhJ3MgY2xvbmUgbWV0aG9kIG5vdyB0aGF0
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICBjb3B5YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0SGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6
c2V0U3RhdHVzKToKKyAgICAgICAgVXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBp
cyBhIHBvaW50ZXIgdHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4
L0ltYWdlRGVjb2Rlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVh
ZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9m
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgZm9yIFNWR0ltYWdlIGFzCisgICAgICAgIGl0
IGlzIG5lZWRlZCBmb3IgU1ZHIGN1c3RvbSBjdXJzb3Igc3VwcG9ydCBhbmQgQ2FudmFzIGRyYXdp
bmcgb2YKKyAgICAgICAgcGF0dGVybnMgY29udGFpbmluZyBTVkcgaW1hZ2VzLiBBcyBTVkdJbWFn
ZSBubyBsb25nZXIga2VlcCB0aGUKKyAgICAgICAgbmF0aXZlIGltYWdlIGludGVybmFsbHkgdG8g
c2F2ZSBtZW1vcnksIHRoZSBpbXBsZW1lbnRhdGlvbiBjcmVhdGVzCisgICAgICAgIHRoZSBuYXRp
dmUgaW1hZ2Ugd2hlbiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGFuZCBwYXNzZXMKKyAg
ICAgICAgaXRzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVyLgorCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmg6CisgICAgICAgIE92ZXJyaWRlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpIGFuZCByZW1vdmUgZHVtbXkKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Yg
ZnJhbWVBdEluZGV4KCkgYXMgaXQgaXMgbm90IG5lZWRlZCAvIHVzZWQuCisKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAg
ICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgd2hp
Y2ggbWVyZWx5CisgICAgICAgIGZvcndhcmRzIHRoZSBjYWxsIHRvIHRoZSBJbWFnZSBiZWluZyBj
b250YWluZWQuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aDoKKyAgICAgICAgT3ZlcnJpZGUgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCku
CisKIDIwMTMtMDMtMzAgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ3Jvc3MtT3JpZ2luIGNvcHkmcGFzdGUgLyBkcmFnJmRyb3AgYWxsb3dpbmcgWFNTIHZpYSBz
cmNkb2MgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggM2NiMTM5Ni4uNjkxYzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSW1hZ2UqIEljb25EYXRh
YmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NO
YXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmln
aW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5hNjIyNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKIAogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgUGFz
c05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4uZTFm
NjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25v
dXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9h
ZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUlt
YWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29u
c3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3
ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hy
b21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFn
ZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNr
aWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRt
YXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmlu
ZGV4IDA3ZmE5YTkuLjEzM2ZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBj
ZjQzMDczLi5jYjgwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6
ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
UGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMzIwLDcgKzMyMCw3IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0
aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAppbmRleCBhODdjZDU4Li4zMWM5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBCaXRtYXBJ
bWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVyYXRl
ZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOwogICAgIH0KQEAgLTE3
Nyw3ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09i
amVjdChFdmFzKik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VPcmll
bnRhdGlvbiBjdXJyZW50RnJhbWVPcmllbnRhdGlvbigpOwpAQCAtMTk4LDcgKzE5OSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtu
b3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIEJpdG1hcEltYWdlKE5hdGl2ZUltYWdl
UHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOworICAgIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFn
ZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKICAgICBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVy
KiA9IDApOwogI2lmIFBMQVRGT1JNKFdYKQogICAgIEJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFw
Jik7CkBAIC0yMTksNyArMjIwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJlbnRG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBzaXpl
X3QgZnJhbWVDb3VudCgpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3Qp
OworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29s
IGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggNWJjODg4MS4uZDZmNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAg
ICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbik7CisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJ
bWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcp
LiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dz
Rm9udFNtb290aGluZyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGVhM2E3MjguLjVkYTI5NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtOTIzLDggKzkyMyw4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBleHRyYWN0SW1h
Z2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KTsKIAogI2lmIFVTRShTS0lBKQotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25h
dGl2ZUltYWdlOwotICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG1fc2tpYUltYWdlOworICAgICAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOworICAgICAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBtX3NraWFJbWFnZTsKICNlbGlmIFVTRShDQUlSTykKICAgICAgICAg
SW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9pbWFnZVN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApp
bmRleCA2Mzc2NDNkLi45ZjU0NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxl
IHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWU0ZTVkNC4uOWQwYjNl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToK
ICNpZiBVU0UoQ0cpCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CisgICAgICAgIFBhc3NOYXRp
dmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0OwogI2VuZGlmCiAgICAgICAgIHZvaWQgY2xpcChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDkxNzQwMGUuLmMwNjZjZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4
IDY2YThhMGEuLmNhOTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENh
bGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBo
aWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAg
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgUGFzc05hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOwogCiAgICAgZmxvYXQgZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBo
YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oCmluZGV4IDFhZDViZTkuLjczNTMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtNTYsNiArNTYsOCBAQCBjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJWE1FOiBOYXRp
dmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAorLy8gcG9p
bnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYg
VVNFKENHKQogdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZP
Uk0oUVQpCkBAIC03Miw3ICs3NCw4IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdlUHRy
OwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJvKiBO
YXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVNraWEqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lh
PiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IFBh
c3NOYXRpdmVJbWFnZVB0cjsKIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgTmF0aXZlSW1h
Z2VTa2lhKiwgV1RGOjpNZW1vcnlPYmplY3RJbmZvKik7CiAjZWxpZiBPUyhXSU5DRSkKIHR5cGVk
ZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CkBAIC04MCw2ICs4MywxMCBA
QCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiB2
b2lkKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCisjaWYgIVVTRShTS0lBKQordHlwZWRlZiBO
YXRpdmVJbWFnZVB0ciBQYXNzTmF0aXZlSW1hZ2VQdHI7CisjZW5kaWYKKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW1hZ2VCbGFja0JlcnJ5LmNwcAppbmRleCA1NWQzZWMzLi4yNDdmNzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdl
QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAg
IHJldHVybiBpbWcucmVsZWFzZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjph
c05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6VGlsZWRJbWFnZShtX3NpemUsIG1fYnl0ZXMpOwogfQpAQCAtNzMs
NyArNzMsNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgw
KQogICAgICwgbV9mcmFtZXMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhMzc0ODUwLi45ZTE4
ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2
aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1h
Z2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UoaW1hZ2VQdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGU1NzM3MzIuLjA2ODE1NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6
ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZl
cjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAog
ewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAwOwogICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApp
bmRleCA3OTRlYzczLi5mNjI0Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNoaWxk
cmVuQ2hhbmdlZCA9IGZhbHNlOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBp
bWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOwogICAgIGlmIChuYXRpdmVJbWFnZSkgewogICAgICAg
ICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsK
ICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50KCkt
PmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUltYWdlTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxl
bmRTa2lhLmNwcAppbmRleCA2NGU1MzU4Li4yZTlkODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tp
YS5jcHAKQEAgLTcyLDggKzcyLDggQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSgp
CiAgICAgUmVmUHRyPEltYWdlPiBmb3JlZ3JvdW5kID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29w
eUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGJhY2tncm91
bmQgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKIAotICAgIE5hdGl2ZUltYWdlU2tpYSogZm9yZWdyb3VuZE5hdGl2ZUltYWdlID0gZm9yZWdy
b3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBOYXRpdmVJbWFnZVNraWEq
IGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZm9yZWdyb3VuZE5hdGl2ZUlt
YWdlID0gZm9yZWdyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5kLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYgKCFmb3JlZ3JvdW5kTmF0aXZl
SW1hZ2UgfHwgIWJhY2tncm91bmROYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMzIyOGNkOC4uMjkxOWQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBAIC0xMjMsNyArMTIz
LDcgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgU2tBdXRv
VFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1f
dmFsdWVzLmRhdGEoKSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJT
a2lhLmNwcAppbmRleCBiMGY4MGNlLi40YTQwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBGRUNvbXBv
bmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAppbmRleCAyMmYxYjcz
Li4xYmU0NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNw
cApAQCAtNzEsOCArNzEsOCBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5
U2tpYSgpCiAgICAgUmVmUHRyPEltYWdlPiBjb2xvciA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBkaXNwbCA9
IGluMi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwog
Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBjb2xvck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBkaXNwbE5hdGl2ZUlt
YWdlID0gZGlzcGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlU2tpYT4gY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGRpc3BsTmF0aXZlSW1h
Z2UgPSBkaXNwbC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICghY29s
b3JOYXRpdmVJbWFnZSB8fCAhZGlzcGxOYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKaW5kZXggZDcwODdkNC4uM2EwYjc3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFTGlnaHRpbmdTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wg
RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHNldElzQWxwaGFJbWFnZShpbi0+
aXNBbHBoYUltYWdlKCkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdl
QnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKaW5kZXggYTdkOWY3NS4uYTNmNDQ2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmNsZWFyUG9p
bnRlcnMoKQogICAgIG1fYnVmZmVyLmNsZWFyKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIFFJbWFnZTo6Rm9ybWF0IGZv
cm1hdDsKICAgICBpZiAobV9oYXNBbHBoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDBmNDA3YzEuLjNlNTM4N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJ
bWFnZVF0LmNwcApAQCAtNjIsOSArNjIsOSBAQCBJbnRTaXplIFN0aWxsSW1hZ2U6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBJbnRTaXplKG1fcGl4bWFwLT53aWR0aCgpLCBtX3BpeG1hcC0+aGVp
Z2h0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PE5hdGl2ZUltYWdlUHRy
PihtX3BpeG1hcCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UGFzc05hdGl2ZUltYWdlUHRyPiht
X3BpeG1hcCk7CiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAppbmRleCA1MDViMTkwLi4xZTllMjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICAgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICB2aXJ0dWFsIFBhc3NOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKaW5kZXggZmI2NjE1NS4uMjYwOTk2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKQEAgLTExLDEyICsxMSwxMiBAQCBib29s
IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1hcEltYWdlKCkgY29uc3QKIAogYm9v
bCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCkKIHsKLSAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5pc09wYXF1ZSgpOworICAg
IHJldHVybiBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5pc09wYXF1ZSgpOwogfQogCiBJbnRTaXpl
IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
SW50U2l6ZShtX25hdGl2ZUltYWdlLmJpdG1hcCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UuYml0
bWFwKCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRTaXplKG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLndpZHRoKCksIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKIH0KIAogLy8g
RG8gbm90aGluZywgYXMgd2Ugb25seSBoYXZlIHRoZSBvbmUgcmVwcmVzZW50YXRpb24gb2YgZGF0
YSAoZGVjb2RlZCkuCkBAIC0yNywxOSArMjcsMTkgQEAgdm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCkKIAogdW5zaWduZWQg
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRlY29kZWRTaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZS5kZWNvZGVkU2l6ZSgpOworICAgIHJldHVybiBtX25hdGl2ZUlt
YWdlLT5kZWNvZGVkU2l6ZSgpOwogfQogCiAvLyBXZSBvbmx5IGhhdmUgYSBzaW5nbGUgZnJhbWUu
Ci1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQorUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IEJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0
dXJuICZtX25hdGl2ZUltYWdlOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogfQogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogYm9vbCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29s
aWRDb2xvcigpCiB7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lkdGgoKSAh
PSAxIHx8IG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkuaGVpZ2h0KCkgIT0gMTsKKyAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSAhPSAxIHx8IG1fbmF0aXZlSW1hZ2UtPmJp
dG1hcCgpLmhlaWdodCgpICE9IDE7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYS5oCmluZGV4IDU2ZWJlM2EuLmZlNTFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmgKQEAgLTQyLDggKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Ly8gb2JzZXJ2ZXJzLCBhbmltYXRpb24sIG11bHRpcGxlIGZyYW1lcywgb3Igbm9uLWRlY29kZWQg
ZGF0YS4KIC8vIFRoZXJlZm9yZSB0cmltbWluZyB0aGUgZGVjb2RlZCBkYXRhIChkZXN0cm95RGVj
b2RlZERhdGEoKSkgaGFzIG5vIGVmZmVjdC4KIC8vCi0vLyBUaGUgZGlmZmljdWx0eSB3aXRoIHB1
dHRpbmcgdGhpcyBpbiBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlUHRyKQotLy8gaXMg
dGhhdCBOYXRpdmVJbWFnZVB0ciA9IE5hdGl2ZUltYWdlU2tpYSwgeWV0IGNhbGxlcnMgaGF2ZSBT
a0JpdG1hcC4KKy8vIFRoZSBkaWZmaWN1bHR5IHdpdGggcHV0dGluZyB0aGlzIGluIEJpdG1hcElt
YWdlOjpjcmVhdGUoUGFzc05hdGl2ZUltYWdlUHRyKQorLy8gaXMgdGhhdCBQYXNzTmF0aXZlSW1h
Z2VQdHIgPSBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4sIHlldCBjYWxsZXJzIGhhdmUKKy8v
IFNrQml0bWFwLgogY2xhc3MgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEgOiBwdWJsaWMgSW1h
Z2UgewogcHVibGljOgogICAgIC8vIENyZWF0ZXMgYSBuZXcgSW1hZ2UgZnJvbSB0aGUgZ2l2ZW4g
U2tCaXRtYXAuICBJZiAiY29weVBpeGVscyIgaXMgdHJ1ZSwgYQpAQCAtNjMsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0OwogCiAgICAg
Ly8gV2Ugb25seSBoYXZlIGEgc2luZ2xlIGZyYW1lLgotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCk7CkBAIC03Myw3ICs3NCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2
YXRlOgotICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IEltYWdl
IGZyb20gdGhlIGdpdmVuIFNrQml0bWFwLCB1c2luZyBhIHNoYWxsb3cgY29weS4KICAgICBCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggM2IxYzhmMi4uOGFjNmQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjksNyArNjksNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zdGF0dXMo
KSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBoYXNBbHBoYSA9IGZyYW1lLT5oYXNBbHBoYSgpOwotICAgICAgICBtX25hdGl2
ZUltYWdlID0gYWRvcHRQdHIoZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgICAgIG1f
bmF0aXZlSW1hZ2UgPSBmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgICAgICBpZiAoIW1f
bmF0aXZlSW1hZ2UuZ2V0KCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkgfHwg
IW1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkgfHwgIW1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTa0JpdG1h
cDo6Q29uZmlnIHNraWFDb25maWcgPSBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5jb25maWcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcAppbmRleCAxZGVjMWVlLi4yZDE3NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NTAsMTAgKzQ1MCw4IEBA
IGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRh
dGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAg
ICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9m
cmFtZXwgYW5kIHBhc3NlZAotICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdl
IG11c3QgZGVsZXRlIGl0IGhlcmUuCi0gICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwotICAgICAgICBt
X2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZS5jbGVhcigpOworCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzEsNyArNDY5LDcgQEAgdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIFRSQUNFX0VWRU5UMCgic2tpYSIsICJJbWFnZTo6ZHJhd1BhdHRlcm4i
KTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlU2tpYSogYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1
cm47CiAKQEAgLTU3Miw3ICs1NzAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWEqIGZyYW1lID0gZnJhbWVBdEluZGV4KDApOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gZnJhbWVBdEluZGV4KDApOwogCiAgICAg
aWYgKGZyYW1lICYmIHNpemUoKS53aWR0aCgpID09IDEgJiYgc2l6ZSgpLmhlaWdodCgpID09IDEp
IHsKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGZyYW1lLT5iaXRtYXAoKSk7CkBAIC01
OTksNyArNTk3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICAvLyBjYXVzaW5nIGZs
aWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBOYXRp
dmVJbWFnZVNraWEqIGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgaWYgKCFibSkKICAgICAgICAgcmV0dXJuOyAvLyBJdCdzIHRvbyBlYXJseSBhbmQgd2UgZG9u
J3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAKQEAgLTY1MSwxMyArNjQ5LDEzIEBAIHZvaWQgQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAogewogICAg
IEZsb2F0UmVjdCBub3JtRHN0UmVjdCA9IG5vcm1hbGl6ZVJlY3QoZHN0UmVjdCk7CiAgICAgRmxv
YXRSZWN0IG5vcm1TcmNSZWN0ID0gbm9ybWFsaXplUmVjdChzcmNSZWN0KTsKLSAgICBub3JtU3Jj
UmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkud2lk
dGgoKSwgbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5oZWlnaHQoKSkpOworICAgIG5vcm1TcmNSZWN0
LmludGVyc2VjdChGbG9hdFJlY3QoMCwgMCwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgo
KSwgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChub3JtU3Jj
UmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
IC8vIE5vdGhpbmcgdG8gZHJhdy4KIAogICAgIHBhaW50U2tCaXRtYXAoY3R4dC0+cGxhdGZvcm1D
b250ZXh0KCksCi0gICAgICAgIG1fbmF0aXZlSW1hZ2UsCisgICAgICAgICptX25hdGl2ZUltYWdl
LAogICAgICAgICBub3JtU3JjUmVjdCwKICAgICAgICAgbm9ybURzdFJlY3QsCiAgICAgICAgIFdl
YkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUoY29tcG9zaXRlT3ApKTsKQEAgLTY2Nyw3ICs2
NjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwKIH0KIAogQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OkJpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSkKLSAgICA6IG1fbmF0aXZlSW1hZ2UoYml0bWFwLCByZXNvbHV0aW9uU2NhbGUpCisgICAg
OiBtX25hdGl2ZUltYWdlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGJpdG1hcCwgcmVzb2x1dGlv
blNjYWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCmluZGV4IDBkYzBmOWUuLjY1OWE1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZl
SW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L05hdGl2ZUltYWdlU2tpYS5jcHAKQEAgLTYwLDYgKzYwLDE1IEBAIE5hdGl2ZUltYWdlU2tpYTo6
TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBvdGhlciwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKQogewogfQogCitOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0Jp
dG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tCaXRtYXAmIHJlc2l6
ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiBjYWNoZWRJbWFnZUluZm8sIGludCByZXNp
emVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3Jlc29sdXRpb25TY2Fs
ZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBtX3Jlc2l6ZWRJbWFnZShyZXNpemVkSW1hZ2UpCisg
ICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNoZWRJbWFnZUluZm8pCisgICAgLCBtX3Jlc2l6ZVJl
cXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQoreworfQorCiBOYXRpdmVJbWFnZVNraWE6On5OYXRpdmVJ
bWFnZVNraWEoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKaW5kZXggOGI3OTVlMi4uZDEzODdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFn
ZVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2
ZUltYWdlU2tpYS5oCkBAIC0zNSwyMSArMzUsMzIgQEAKICNpbmNsdWRlICJTa1JlY3QuaCIKICNp
bmNsdWRlICJTa1NpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHRoZSAibmF0aXZlIGltYWdl
IiBpbiBvdXIgcG9ydC4gV2hlbiBXZWJLaXQgdXNlcwotLy8gIk5hdGl2ZUltYWdlUHRyIiwgaXQg
aXMgYSBwb2ludGVyIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFuIFNrQml0bWFwLCBhbmQgYWxzbwot
Ly8gc3RvcmVzIGEgY2FjaGVkIHJlc2l6ZWQgaW1hZ2UuCi1jbGFzcyBOYXRpdmVJbWFnZVNraWEg
eworLy8gUGFzc05hdGl2ZUltYWdlUHRyIC8gTmF0aXZlSW1hZ2VQdHIsIGl0IGlzIGEgc21hcnQg
cG9pbnRlciB0byB0aGlzIHR5cGUuCisvLyBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNvIHN0
b3JlcyBhIGNhY2hlZCByZXNpemVkIGltYWdlLgorY2xhc3MgTmF0aXZlSW1hZ2VTa2lhIDogcHVi
bGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2VTa2lhPiB7CiBwdWJsaWM6Ci0gICAgTmF0aXZlSW1h
Z2VTa2lhKCk7Ci0gICAgfk5hdGl2ZUltYWdlU2tpYSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgIH0KIAotICAgIC8vIFRoaXMgY29uc3RydWN0
b3IgZG9lcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFzc2VkLWluIFNrQml0bWFwIChpZS4sIGl0
Ci0gICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhlbCBkYXRhIGFuZCBidW1wcyB0aGUgcmVm
Y291bnQpLiAgVXNlIG9ubHkgd2hlbgotICAgIC8vIHlvdSB3YW50IHNoYXJpbmcgc2VtYW50aWNz
LgotICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjcmVhdGUoY29u
c3QgU2tCaXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNraWEoYml0bWFwLCByZXNvbHV0aW9u
U2NhbGUpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY2xvbmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVJbWFnZVNr
aWEobV9pbWFnZSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzaXplZEltYWdlLCBtX2NhY2hlZElt
YWdlSW5mbywgbV9yZXNpemVSZXF1ZXN0cykpOworICAgIH0KKworICAgIH5OYXRpdmVJbWFnZVNr
aWEoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBpbWFnZSBkYXRh
LiBUaGlzIGluY2x1ZGVzIHRoZSBjYWNoZWQKICAgICAvLyByZXNpemVkIHZlcnNpb24gaWYgdGhl
cmUgaXMgb25lLgpAQCAtODgsNiArOTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgorICAgIE5hdGl2
ZUltYWdlU2tpYSgpOworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBkb2VzIGEgc2hhbGxvdyBj
b3B5IG9mIHRoZSBwYXNzZWQtaW4gU2tCaXRtYXAgKGllLiwgaXQKKyAgICAvLyByZWZlcmVuY2Vz
IHRoZSBzYW1lIHBpeGVsIGRhdGEgYW5kIGJ1bXBzIHRoZSByZWZjb3VudCkuIFVzZSBvbmx5IHdo
ZW4KKyAgICAvLyB5b3Ugd2FudCBzaGFyaW5nIHNlbWFudGljcy4KKyAgICBOYXRpdmVJbWFnZVNr
aWEoY29uc3QgU2tCaXRtYXAmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworCiAgICAgLy8gQ2Fj
aGVkSW1hZ2VJbmZvIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgY2FjaGVkIG9yIHJlcXVl
c3RlZCBpbWFnZQogICAgIC8vIHJlc2l6ZXMuCiAgICAgLy8gSW1hZ2UgcmVzaXplIGlzIGlkZW50
aWZpZWQgYnkgdGhlIHNjYWxlZCBpbWFnZSBzaXplIGFuZCBzY2FsZWQgaW1hZ2Ugc3Vic2V0LgpA
QCAtMTAyLDYgKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFNrSVJlY3QgcmVjdEluU3Vic2V0
KGNvbnN0IFNrSVJlY3QmIG90aGVyU2NhbGVkSW1hZ2VSZWN0KTsKICAgICB9OwogCisgICAgTmF0
aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBpbWFnZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBTa0JpdG1hcCYgcmVzaXplZEltYWdlLCBjb25zdCBDYWNoZWRJbWFnZUluZm8mLCBp
bnQgcmVzaXplUmVxdWVzdHMpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBy
ZXNpemUgb3BlcmF0aW9uIHNob3VsZCBlaXRoZXIgcmVzaXplIHRoZSB3aG9sZQogICAgIC8vIGlt
YWdlIGFuZCBjYWNoZSBpdCwgb3IgcmVzaXplIGp1c3QgdGhlIHBhcnQgaXQgbmVlZHMgYW5kIHRo
cm93IHRoZSByZXN1bHQKICAgICAvLyBhd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcAppbmRleCAyYWU0ZGQ2Li5mYTBh
YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bh
dHRlcm5Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L1BhdHRlcm5Ta2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCBQbGF0Zm9ybVBhdHRlcm5QdHIgUGF0
dGVybjo6cGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
ZgogICAgIC8vIGFuZCBleHBhbmRlZCBzY2FsZSBhbmQgc2tldyBpbjoKICAgICAvLyBMYXlvdXRU
ZXN0cy9zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNi1iLnN2ZwogCi0gICAgY29uc3Qg
TmF0aXZlSW1hZ2VTa2lhKiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV90aWxlSW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhIGJpdG1hcCwgcmV0dXJuIGEgdHJhbnNwYXJlbnQgc2hhZGVyLgogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIG1fcGF0dGVybiA9IG5ldyBTa0NvbG9yU2hhZGVyKFNrQ29sb3JTZXRBUkdCKDAs
IDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ltYWdlV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvSW1hZ2VXaW5DRS5jcHAKaW5kZXggYTI4ZDE0OS4uM2QxY2EyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0
ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gU2hh
cmVkQml0bWFwOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fc2l6ZSwgaGFzQWxwaGEoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oCmluZGV4IDEwNDI0YTUuLmE2N2QyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyAr
MTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVy
LW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAg
ICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJ
bWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAg
ICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wg
aGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CkBAIC0xNDEsNyArMTQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRB
ZGRyKGludCB4LCBpbnQgeSkKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAg
cmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmdldEFkZHIzMih4LCB5KTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2JpdG1hcC0+Yml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwogI2Vsc2UKICAgICAgICAg
ICAgIHJldHVybiBtX2J5dGVzICsgKHkgKiB3aWR0aCgpKSArIHg7CiAjZW5kaWYKQEAgLTE1MCwx
MiArMTUwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkK
ICAgICAgICAgdm9pZCBzZXRTa0JpdG1hcChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUltYWdlU2tpYShiaXRtYXAsIDEpOwor
ICAgICAgICAgICAgbV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShiaXRtYXAsIDEp
OwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU2tCaXRtYXAmIGdldFNrQml0bWFwKCkgY29u
c3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKTsKICAgICAgICAgfQogCiAgICAgICAg
IHZvaWQgc2V0TWVtb3J5QWxsb2NhdG9yKFNrQml0bWFwOjpBbGxvY2F0b3IqIGFsbG9jYXRvcikK
QEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCB3aWR0
aCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKLSAgICAgICAgICAgIHJldHVybiBt
X2JpdG1hcC5iaXRtYXAoKS53aWR0aCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5i
aXRtYXAoKS53aWR0aCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX3NpemUud2lkdGgo
KTsKICNlbmRpZgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAg
ICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmhlaWdodCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5oZWlnaHQoKTsKICNlbHNlCiAgICAgICAgICAgICByZXR1
cm4gbV9zaXplLmhlaWdodCgpOwogI2VuZGlmCiAgICAgICAgIH0KIAogI2lmIFVTRShTS0lBKQot
ICAgICAgICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZVNraWE+IG1fYml0bWFwOwogICAgICAgICBTa0JpdG1hcDo6QWxsb2NhdG9yKiBtX2FsbG9j
YXRvcjsKICNlbHNlCiAgICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1fYmFja2luZ1N0b3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDQxNzYyOGQuLjVjYmRjNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05l
d05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05l
d05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IE5hdGl2ZUltYWdlQ2Fpcm8o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvb3BlbnZn
L0ltYWdlRGVjb2Rlck9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAppbmRleCBkMjkzMTdhLi44MzNl
NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9v
cGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcApAQCAtMzQsNyAr
MzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBWR0ltYWdl
Rm9ybWF0IGJ1ZmZlckZvcm1hdCA9IFZHX3NBUkdCXzg4ODhfUFJFOwogICAgIC8vIFNhdmUgbWVt
b3J5IGJ5IHVzaW5nIDE2LWJpdCBpbWFnZXMgZm9yIGZ1bGx5IG9wYXF1ZSBpbWFnZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdl
RGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
c2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQzYjg2Li5kMDJjODIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVj
b2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCi0gICAgOiBtX2FsbG9jYXRvcigw
KQorICAgIDogbV9iaXRtYXAoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKSkKKyAgICAsIG1fYWxs
b2NhdG9yKDApCiAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQogICAgICwgbV9zdGF0dXMoRnJhbWVF
bXB0eSkKICAgICAsIG1fZHVyYXRpb24oMCkKQEAgLTQ2LDEwICs0NywxMCBAQCBJbWFnZUZyYW1l
JiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgaWYg
KHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBtX2JpdG1hcCA9
IG90aGVyLm1fYml0bWFwOworICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRtYXAtPmNsb25lKCk7
CiAgICAgLy8gS2VlcCB0aGUgcGl4ZWxzIGxvY2tlZCBzaW5jZSB3ZSB3aWxsIGJlIHdyaXRpbmcg
ZGlyZWN0bHkgaW50byB0aGUKICAgICAvLyBiaXRtYXAgdGhyb3VnaG91dCB0aGlzIG9iamVjdCdz
IGxpZmV0aW1lLgotICAgIG1fYml0bWFwLmJpdG1hcCgpLmxvY2tQaXhlbHMoKTsKKyAgICBtX2Jp
dG1hcC0+Yml0bWFwKCkubG9ja1BpeGVscygpOwogICAgIHNldE1lbW9yeUFsbG9jYXRvcihvdGhl
ci5hbGxvY2F0b3IoKSk7CiAgICAgc2V0T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxG
cmFtZVJlY3QoKSk7CiAgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsKQEAgLTY0LDcgKzY1
LDcgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUm
IG90aGVyKQogCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKLSAgICBtX2Jp
dG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOwog
ICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3Ro
ZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRo
aXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAt
NzQsNyArNzUsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIAogdm9pZCBJ
bWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCku
ZXJhc2VBUkdCKDAsIDAsIDAsIDApOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5lcmFzZUFSR0Io
MCwgMCwgMCwgMCk7CiAgICAgbV9oYXNBbHBoYSA9IHRydWU7CiB9CiAKQEAgLTg0LDkgKzg1LDkg
QEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX2hhc0FscGhhID0gb3RoZXIubV9oYXNB
bHBoYTsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOwotICAgIGNvbnN0IE5hdGl2ZUlt
YWdlU2tpYSYgb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKLSAgICByZXR1cm4gb3RoZXJC
aXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2JpdG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0
bWFwKCkuY29uZmlnKCkpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOworICAgIGNv
bnN0IE5hdGl2ZUltYWdlU2tpYSogb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcC5nZXQoKTsK
KyAgICByZXR1cm4gb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAtPmJpdG1h
cCgpLCBvdGhlckJpdG1hcC0+Yml0bWFwKCkuY29uZmlnKCkpOwogfQogCiBib29sIEltYWdlRnJh
bWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQpAQCAtOTQsMTcgKzk1LDE3
IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQp
CiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBpdCBsZWFrcyBt
ZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0KCkpOwogCi0g
ICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgbmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxv
Y1BpeGVscyhtX2FsbG9jYXRvciwgMCkpCisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldENvbmZp
ZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAg
IGlmICghbV9iaXRtYXAtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5ldyBOYXRpdmVJbWFnZVNraWEobV9iaXRtYXApOwor
ICAgIHJldHVybiBtX2JpdG1hcC0+Y2xvbmUoKTsKIH0KIAogYm9vbCBJbWFnZUZyYW1lOjpoYXNB
bHBoYSgpIGNvbnN0CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRIYXNB
bHBoYShib29sIGFscGhhKQogICAgIGJvb2wgaXNPcGFxdWUgPSAhbV9oYXNBbHBoYTsKICAgICBp
ZiAobV9zdGF0dXMgIT0gRnJhbWVDb21wbGV0ZSkKICAgICAgICAgaXNPcGFxdWUgPSBmYWxzZTsK
LSAgICBtX2JpdG1hcC5iaXRtYXAoKS5zZXRJc09wYXF1ZShpc09wYXF1ZSk7CisgICAgbV9iaXRt
YXAtPmJpdG1hcCgpLnNldElzT3BhcXVlKGlzT3BhcXVlKTsKIH0KIAogdm9pZCBJbWFnZUZyYW1l
OjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCkBAIC0x
MzUsOCArMTM2LDggQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3Rh
dHVzKQogewogICAgIG1fc3RhdHVzID0gc3RhdHVzOwogICAgIGlmIChtX3N0YXR1cyA9PSBGcmFt
ZUNvbXBsZXRlKSB7Ci0gICAgICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKCFtX2hh
c0FscGhhKTsKLSAgICAgICAgbV9iaXRtYXAuc2V0RGF0YUNvbXBsZXRlKCk7ICAvLyBUZWxsIHRo
ZSBiaXRtYXAgaXQncyBkb25lLgorICAgICAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFx
dWUoIW1faGFzQWxwaGEpOworICAgICAgICBtX2JpdG1hcC0+c2V0RGF0YUNvbXBsZXRlKCk7IC8v
IFRlbGwgdGhlIGJpdG1hcCBpdCdzIGRvbmUuCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJX
eC5jcHAKaW5kZXggMGUwNDc5ZS4uOWVlYjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcApA
QCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRy
IEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRy
IEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHd4Qml0bWFwKiBi
bXAgPSBuZXcgd3hCaXRtYXAod2lkdGgoKSwgaGVpZ2h0KCksIDMyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMjk2YzM0ZC4uODYzNWE2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNDEsNiArMTQxLDI1IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7
CiB9CiAKKyNpZiBVU0UoU0tJQSkKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBp
bWFnZSB0byB0aGUgY2FsbGVyIHNvIFBhc3NOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gdG8gYmUg
YSBzbWFydCBwb2ludGVyIHR5cGUuCitQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSgpLCAxKTsKKyAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRl
IGltYWdlCisgICAgICAgIHJldHVybiAwOworCisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwg
cmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICAvLyBGSVhNRTogV0soQnVnIDExMzY1Nyk6IFdlIHNo
b3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4KKyAgICByZXR1cm4gYnVmZmVyLT5j
b3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5k
ZXggZjA5YTJiMS4uNWRkMGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKQEAgLTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKKyNpZiBVU0Uo
U0tJQSkKKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFNWR0ltYWdlQ2hyb21lQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUZvckNvbnRh
aW5lcjsKQEAgLTgyLDggKzg2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1l
QXRJbmRleChzaXplX3QpIHsgcmV0dXJuIDA7IH0KLQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZy
YW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAK
aW5kZXggZDA3NmZlYS4uZTllMjcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2b2lk
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QpOwogfQogCitQYXNz
TmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKK3sKKyAgICByZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmgKaW5kZXggYjMyMjhlNS4uYTJmMTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYyLDYgKzYyLDggQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2
ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgU1ZH
SW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRh
aW5lclNpemUsIGZsb2F0IHpvb20pCiAgICAgICAgIDogbV9pbWFnZShpbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZDJiMTg5MC4uZGRkYWNmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0zMSAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMTQyNzY1
KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgYW5kIFNWRyBjYW52YXMgZHJhd2luZyBmb3IgQ2hy
b21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBjb2RlIG5vdyB0aGF0IEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGFu
ZAorICAgICAgICBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgcmV0dXJuIGEgc21hcnQg
cG9pbnRlciBpbnN0ZWFkCisgICAgICAgIG9mIGEgcmF3IG9uZS4KKworICAgICAgICAqIHNyYy9X
ZWJJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZURlY29kZXI6Omdl
dEZyYW1lQXRJbmRleCk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdl
OjpmcmFtZXNGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIHRlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0RyYWdJbWFnZVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChUZXN0
SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChUZXN0SW1h
Z2UpOgorCiAyMDEzLTAzLTMwICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFZpZXctc291cmNlIGlmcmFtZXMgYXJlIGRhbmdlcm91cyAoYW5kIG5vdCB2ZXJ5IHVz
ZWZ1bCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCAxMDRhYjEzLi4yNjUxMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbWFnZSBXZWJJ
bWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleChpbnQgaW5kZXggPSAwKSBjb25zdAogICAgIElt
YWdlRnJhbWUqIGNvbnN0IGZyYW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZlckF0SW5k
ZXgoaW5kZXgpOwogICAgIGlmICghZnJhbWVCdWZmZXIpCiAgICAgICAgIHJldHVybiBXZWJJbWFn
ZSgpOwotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gYWRvcHRQdHIoZnJhbWVC
dWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4g
aW1hZ2UgPSBmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIHJldHVybiBXZWJJ
bWFnZShpbWFnZS0+Yml0bWFwKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW1hZ2VTa2lhLmNwcAppbmRleCA2ZDU1NTU1Li4yYjc2MGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSW1h
Z2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUm
IGRlc2lyZWRTaXplKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgp
OwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+
YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9
IGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIFdlYkltYWdlKCk7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBXZWJWZWN0b3I8V2ViSW1hZ2U+
IFdlYkltYWdlOjpmcmFtZXNGcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhKQogICAgICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRyPE5hdGl2
ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsK
LSAgICAgICAgaWYgKGltYWdlLmdldCgpICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQorICAg
ICAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lLT5hc05ld05hdGl2ZUlt
YWdlKCk7CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNEYXRhQ29tcGxldGUoKSkKICAg
ICAgICAgICAgIGZyYW1lcy5hcHBlbmQoV2ViSW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKSk7CiAgICAg
fQogCkBAIC0xNTcsOCArMTU3LDggQEAgV2ViSW1hZ2U6OldlYkltYWdlKGNvbnN0IFBhc3NSZWZQ
dHI8SW1hZ2U+JiBpbWFnZSkKIAogV2ViSW1hZ2UmIFdlYkltYWdlOjpvcGVyYXRvcj0oY29uc3Qg
UGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIHA7Ci0gICAg
aWYgKGltYWdlLmdldCgpICYmIChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkpKQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IHA7CisgICAgaWYgKGltYWdlICYmIChw
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKQogICAgICAgICBhc3NpZ24o
cC0+Yml0bWFwKCkpOwogICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNw
cAppbmRleCA3ZjE5MDBiLi42NGY4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgcHJvdGVjdGVkOgogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBk
cmF3SW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShh
ZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZl
SW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVj
b2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQ
RUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1h
Z2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgp
LmlzTnVsbCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29k
ZXJUZXN0LCBkcmF3SW50b1NrUGljdHVyZSkKIAogVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVy
VGVzdCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiB7Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdl
U2tpYT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDAp
LT5hc05ld05hdGl2ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFn
ZSA9IG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFn
ZSgpOwogICAgIFNrQml0bWFwIHNjYWxlZEJpdG1hcCA9IGltYWdlLT5yZXNpemVkQml0bWFwKFNr
SVNpemU6Ok1ha2UoNTAsIDUxKSwgU2tJUmVjdDo6TWFrZVdIKDUwLCA1MSkpOwogICAgIEVYUEVD
VF9GQUxTRShzY2FsZWRCaXRtYXAuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKHNjYWxlZEJp
dG1hcC5pc0ltbXV0YWJsZSgpKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUX0YoRGVmZXJyZWRJ
bWFnZURlY29kZXJUZXN0LCBkZWNvZGVPbk90aGVyVGhyZWFkKQogewogICAgIFdURjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UoYWRv
cHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUlt
YWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fbGF6eURlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIEVYUEVD
VF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VRKDEsIGltYWdl
LT5iaXRtYXAoKS5oZWlnaHQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGltYWdlLT5iaXRtYXAoKS5p
c051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJ
bWFnZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0
LmNwcAppbmRleCBhOTQ2NWU2Li42YmYxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
ICAgICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBt
X25hdGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAgICAg
bV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxv
Y1BpeGVscygpOwpAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
c2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgewogICAgICAgICBpZiAobV9zaXplLmlz
WmVybygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZl
SW1hZ2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogICAgIH0KIAogICAg
IC8vIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHB1cmUgdmlydHVhbCBJbWFnZSBmdW5jdGlvbnMu
CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAg
IE93blB0cjxOYXRpdmVJbWFnZVB0cj4gbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChEcmFnSW1hZ2VUZXN0LCBOdWxs
SGFuZGxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdl
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFn
ZUxheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA0ZGI0MjhjLi42NDhkYmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICA6IEltYWdlKDApCiAgICAg
ICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQ
dHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnNl
dENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDApOwog
ICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxvY1BpeGVscygpOwpAQCAtNzcsMTIg
Kzc3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpCiAgICAgewogICAgICAgICBpZiAobV9zaXplLmlzWmVybygpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAg
IHJldHVybiBtX25hdGl2ZUltYWdlOwogICAgIH0KIAogICAgIC8vIFN0dWIgaW1wbGVtZW50YXRp
b25zIG9mIHB1cmUgdmlydHVhbCBJbWFnZSBmdW5jdGlvbnMuCkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdl
UHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZl
SW1hZ2U7CiB9OwogCiBURVNUKEltYWdlTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUltYWdlcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196413</attachid>
            <date>2013-04-03 14:52:42 -0700</date>
            <delta_ts>2013-04-04 00:24:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>82193</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzJjMDdlLi44OTU2YTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDQt
MDMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMDIgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBnZXRfYnlfcG5hbWUgY2FuIGJlY29tZSBj
b25mdXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIG9iamVjdHMgd2l0aCBzdGF0aWMgcHJvcGVydGll
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3ZnL2Nh
bnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI4MTFjNTlkYzVjZWYxZDMxYTZiZDY2ZGY5ZDVjNjFlMWE3ZjRhMTAK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0MjU0CnpjbWVIdVhJUnR1d3I8bz5XPFg/U1hkfjRi
TUd5bz0+RD9JelFCYVQ/MVZXR15OUjwqPWZHe2REUVdkMnJPK2xwaAp6UDlPbXN6PF97QT11TT5l
bnVIcWVpYUxBdC1nRVo3X2sxfF9vY2xhR0FPMiRhbXRXUnp0I2BmZXlUYmplKzhWNlAKekpqQDZM
Zzd3bkhVLVNAJjFJR31Fe2w7SkpoaiV6UklFQ1MjUXklS1o5IyhjWFJ1MWtNQ3hvb3I4SmltbGF6
Q0R4CnptOXwjNkF1QTxxYkxSUkQ4KENAVEFKNTIyLT5eUGcqWmsjTzFtWU90KGwwKzVjcWMzajts
ZDBrSEVRJSVrc3B8RQp6aGgkNW4xUjVNJVZaeFcjMSh8ZmU9O3JNLWglJmRER2NeNG1JUS0mJV9s
OCgqcmJLIThPJXdMNT1qdyZDPmhYPCYKeigkUVRVQkNLNXZNIUFLfT9AWFMoPWUpWUk9PTs7VE8o
OXwlRXBufTk/TVp2djZSQmRRckoqTWVvNXRBTzsjOCh+CnowfV5UNVo/SCo5UWM2LUg1bzJFPjAm
ZzhjO3Rffkk5b35IYGgre3dnUn4hbWJfQm1YMlpIVzwmbSVqT35tVz1kNAp6SDwoPGtAanM+YGUq
VkpJU2FhVlExYjMleDRiS34lcW5xWldxKT13dCs0cHNLeW9QO2p0cilNZHktbF5mXnIpQSEKej5X
eHFKRkJKPCg8fF57ZkR3Xj1GWD4xZkg/Pll1Sjk0T1owNyhVdV5iR0cpXjFMY0VtVDUhJHpeUklI
UTY/ZjtPCnpNfXFVVjRHWG8oK29OTk5fQ1kzditjVn45a3VtYnROezZ0LTQ8UllvI21jRWlJO3hr
LSNeaV5JeElMOEQ1VHw7Xwp6JkdmXz1SfTE1NDhmSSVJSi16SExuUVkqX2VKO3U1OT96LU5wS0JD
REVqdkJQVFhZKGM9clF2U2g0KW1Va29BKnkKej1XVmw1WlJjSmF5TmxpfDgmNU0jS2FiTEl1cDBl
eHMlbyl8VSMreCZhQjlrOWsrOGoocldMejVncn5oP1FgO2Z3CnoxZX4+TGV0Wm5ZV0hBNFpLZHx8
SFp0dCF+eyElbUBUUHhsXz9LNzJGPyRERkJoZkNqRXopck8jUDk9SGAofDVPLQp6PUV1ZEJ2Vzsw
WCVofD49Wjg5Rjc2KHdnRVhWbUhFSWpmOHtoQVo4QWV+eSNvSk1XX28rQ3JAeylnYE9KUm94UXgK
emhjUDl4VDtee295QU9Gc3p2ZWdCKjU5VHJ3VTRON2p6MUVjc1ohJUc2Kn1+Nl57U1lzK1J6Kn10
KyYhMztQI3k7CnpxYXMhd3ZVXz5HPkhkJjBAMV4wSTt9Xm9kPl9RZkQ+QTVXUj0hPkJyb2I/U0d1
YnUwPE10PVFUbjckSDtPVGZgTAp6NFJkVD9LbG5iRlA0TExEVzJ3YWJWSmFgeF4wbCtMOUolazJJ
UiZlS290MDd+YHx7JjU5SFhidDVOcXNiZ1NnRSUKem1TMz9FPjZDbjA/d3M1RD16Y05WPXhKaUop
KTVRTDV+VzczN1pWcDg9JSF+cD5hNUcqRys1IWZ3TFd1UEJWdVBsCno2OEJgViFleFhvbXJ0YmtU
MUQwQCpSI2t1X0l9OzhRZUBMfFFZVUdyXzVmUmdUbDE7cHlgM3EyK1JYTDMrWHE9JAp6UyRvWGZ1
akYtLTJfTkxtdEchK0leKmIqS0N6amtBdHNoTDwpUj1JWWl0d0YkVmhiMWg0WjFkfEt4aWA0MT1W
I20KekdAMmZ0KCR8KEJ6MDBeKTwkI3RebDhONWd7VnB8PlpmP1NJKDhKPnpzdkdhYCpwJFZYR2A+
c0lZRkMmX3UqTlIqCnptdlc+MVJ0bTFhJUIhNHdkV1ZURU1rPm1jdWVgaCplWEgmdSNMPjlhektk
MEVAV0Mwb05ZJDxCQyQ+b245QEIzTgp6dCh4Y2B4UVZ9UU9VRllVPj9tVHgjdjgrVkFONCFxN3N7
LSQ1WXtHc3VSKkl3NzA9RXFhemJrVDx1MiVlOSo4dHkKekVKNyhsamxTe248OyEzSi07OHAxNTZJ
X310cFU0cFhkVjlXTDktVkVOeFBqPG9rKHZzQGlsd05nakFEPzZNRWFOCnpGOyV2cyQ0O1hPZSQ5
X2h4bTIkLWt+OCg7VWk5RERiKiMmY2pMcXArWD5zYyYtJk1gPyV2dzZWNWdncyYlcWg1TQp6eG5S
djwpWWU+Sk9eU05hRFg/Ymh4VzNBLT5nUFJGZ2BvfCl4OTB+P3ZnP3l5NGk5YVdjfTc9OWE+Ukc7
XnFuVEkKeiR+eShrN3VydUdCV0s7N3M8P0w1Xnc4dmtxU3o5SHhYKEEqVW5MTmpheUhrZG1VO2BW
SGRpT0VUKTlGREZDUGltCno5KmF+WDtQJlY/RWlvdzkyMk5NTFdXUUNDRXtEcVlkfnhMZzdUOFIz
aEhrdjlsU3peRkNIaGMpS3xUYGdQaWFCWgp6U0llOVI9Knopc2U3S3p6JD9EfndgSV9MUVdgMFVM
aiRYV2NxfXB3d1M8LSgtJVowZDBqbz8/QlkpZHFDe0tuX1EKemVQUVorVS05KTxfcH5HYCQ3ai0k
QzVsKGNRSF4wb0FDWmF2K2Y9QWpTeXxiYkpgPysrbW1Fayh4WHJ6PDdvQihlCnpwLUJNaU5QNmY4
YWR4aHBoYEFDaz4lVXliKVl7cmdUNCpATCRXaFpXTStOV1lfbzAjbWRDVDhfdEkjUiMlZFVIYQp6
Tm1QdGxzLVg/WG93MklJO34pOEpEPW4xZDw+a3BvbHNnYWtfVE5uUi14dio2c2lKcDgyNiZBNCgt
c0VHVHs9P0sKelpJZ1UlMnVfT1p0JX5zZHY2WEh3QzVnMXZkfV9UeUdjczJ6ckM9bkFuUmMxfnVE
LVR7UClKRzszLUBBdz5EKXMzCnoycVRxeGhsaTZvT3NHTXp7VnRlYjNIJnxaWXJPOGM2WnNaRnlx
T0QrUHY/dmBLal48JSpmSUQwZUdncEBSc20pMgp6bEBBUm4wVmVZSXttdD0zT1VFLT84eWg1aHFO
MUJfaWRqMjlWe1JBMkQ2fVMzJW5yfEM2TWlOSXd+PDRpPz0qKWQKej4wVlB4SkQ2aVZfVilSQyRh
QyRvTV94NVRfdCpwbChyWmV0UnBfdXlDMURycWdJTHlaPXtnR3psVyg1RG1Tfm83CnppPD4tRmpe
XmdSQ2cjcDdXIXEqKDREY19pYWk0MGw0ODc9I2c+PnFDY30wd3w1MzNzUTtrSzB2UU1xWGBnOzQ4
Kgp6MyRLRk5iZHJrdUBMbiNuRW5QdiFlYTZEJkNkKGxDJDFGcCZvdzBsTFVCSnteVDNUOEw8M3Ij
MkR9YER6UDNxeysKemp6ajtPPmQrN2pBS05KSEczUy1HeVNtRUt4PVMwdV5gTntzSnlpbUJIdSNs
MSpEREg8PyZMOVJZfWZeNzJ8YyFVCnpgYzFST14kRDZleSg/K0FAaSUrYXc/VnJ4MkhzcW1jTTVG
VmxYZ19seExyemR5USklWj17JD5NPjQ7X2VrSVNAfAp6VFBSKzRycGVGbylpPFV4OyVqRVQmYiRF
bTRZNVU8eGk7TVdpcnNmNzxKUHleKXQpdlo4cUg1UyU/JDw4YjAxYDgKejh4PHl3PjlIZSt1Pk8o
eUJBYWlZX0AxJDViR2M/fig1PkJZej0lI2cpNU5GMCtEckNkYj9QZ2M7MnFnJHtRVypWCnorSUo9
YGpCdDtZdyt4bktqaW9JUFJvKkQoZWgzZ0R5Qz9wdTVjazZhT2g9QHByNXw3TyQ9NExeR2J1ZGxS
KnN1ZQp6OHJkOVchJlNmKT5CI3wjNnFUQGA7fGpqKCh9MVpRbykxayVkMG5je187ME9PeD0pP05l
SzQpQzZ8I05rcFVKXlgKelYoZXFIU2JvXnAjeXd1PTNRRClCQnluZHxLMD5uTXtxMGhSOTxETjM+
KD53SmRBQnxMZW93bl9lMCFPazlGc3VVCnpOIT5FQFdiM0xyIU1yVj14cVEwJD12YFFsSFFHZHxD
Jk14byQ/YEU/RSFCNWtsPDh8PDdlZH5QU303a3RmNzh9Pgp6M1NoSEhNP0JBQnBfdmYqU1NyMEhS
flp2QCtTQiNNbEd6dy1PSk1IYDNYOD9aI0dKQ093WkQwakdfKX4/LWN6Sk4KelhxWipAY0drdzRC
SElffCU4OSM5TU1GYkZ7KFV5RjZQfllnZVJWa3xfRXYyOW5xYkY9I1BYfTc5R0NoXyNtZGhZCno+
WUxYMVZpdXoqUVBILUtBRGlHajlVN1duNC1zeShLMFBYUjE0NEtDc3IxYzs1WThhKzZSUjMtPihk
PTF7Wjd9cQp6ck5OKih2YVRPfkFMbmpARCZAdyUtfTIrP2lgNldBSTlUcDchZX1WMlZ+eUBAM0pn
dkdjWGB0c0V0YW02b2FGbDwKekpVbCUzMj4tMEJSWCFBUzw5eF5UYEMzczB8NGp8YmcxektSbGh8
SlpoKGVyNj5XIzw3MXA/KXEyand4ZDxnamtkCnpKbCghak5ReklMR3NjSk1sMmR2QHk9TEN3WHI+
Jlg5Vm93KmhRNCR6V1ZJKEpLSnN6I0VsU3hjblh7PDM7WXAycQp6X3tiYn5NLUg9KXQ2aSg7SHZT
c0R4Nzh5T1Z2YiFYZyVUMiRiTTdrd3c4JTlyWiooMig+SEB4bFVuMX19dDxWVXgKejhWMHlRRChS
P2hUMVJ5UTUpRnhqdG5PS3QrKTdTNXNOVjZSQXIham90I19BJVpQcUY4dj9MUktDWkZJb1RoTUBM
CnpgOEN4Mzl5Q3J4ITRDcX01LVR9VVhyLX41PjBzM3E7U2FuZU1aXzF0Rk4jWnxYOG0wKEk9fX4+
UChJe28lQXMhNgp6NyZmQ0BgYGI2aXh4YElNQWN0OWJXejlTfilQWDJ8Z24rMVcpZXt1cjkpMF8k
bTcoQGdRZjJqOG8wMlBeUExpXk0KekxaK299bV5FTE0rPmwzU3RLM01uKD9ENkdsR21gYFQ1RHg/
YG1NSmc8VykhU3ZkNWdoUiltQEJfRjA9YDsyViRfCnp8RzNzd0NNbiQwa1NvcjdQMCU8blQzUmlV
eFNjV2loXmFTRXE/YHZVNHpoNSlOVExIeTtHdG5hdG55S0tTPXZgOwp6WU0hUChLT2Fva196KzVa
XmUhbSVWU0ZoMFJXWilRWjdiQHpJaSUycXpEI3pjeWhpRCpPQn5lcj89aHtVQDl2NigKekkwSHEx
eyUkd2Rvcn5VVk1sdVYmVXo1eldiVER3dlNRRDx7eCtqcyEwT1UwZGNgeEU/T3JuYUM0SHVWZi1y
PiFiCno4X29mdDtwU1AzaTtGSiliRWRGMUw0NiVAKy1KbmxpKGhiXnA9TDRLPktqJnJRNko2JDEq
O0VQKiEoM3w9MDNLPgp6MjhueD8qKnxTK2V2dmMxKkVRQkNGZCpvXi1VMG5CN14zUmJVJFI0ZHQx
dVFPPDtLZGpzTlh3d0pXfjBySnZuM2kKemdJRzZgdVplfjBHKkJGTk0oZik8TFYkcFVlfFA0Q2Qt
QXJ+RCF2fGc0Vkk0ck1ZUytyKyVCTnhJVW05KSl9fWFACnpHcVN0cnJOWm5EQWJqSVorIUBFLWY9
dkROJC1OVG1pQTxxckhLVTJnNEBjQERzUDIzRzNVMUBUYmB3OzkxaT5DYAp6JEIqcFgwQ3JDNEtf
fkEkXiUjQkQ7SHIkSD9+SnwqTSNJaTRjYFlVWUNrQyQ1NSFgbmdfaFpZR0xIVVNlPyteRnkKei1N
YV5TK343Sm1KZ2ZAT2c0Iz1PUX1ePHNPfmomeS1AZzZ2PEw2NX5nXlMzO0ZJS1ZaRDZlY3pDQVdW
VUU8bFRACno9TTl4ZlF0PytnYSQ1RlNMbXFXVVZZYjgzUH52YGxmYkU7T2hiR3JZem5rMD4hRiZ4
RmB1PGxZWGs3dW9fPVIhTAp6a1U0ZWFScDBlIXdWQmMlSiZ3dzc7N2RZUzROQUtrITw1dGA+bTw5
aU4lYkd6TTFQTTdraCZuNVVSc0kpZXdLUDYKenlsUTgpMXo0aDVkZlVhKHA8RVhTPG1rY2ZeTnNh
ZyFPZGVPb0pDRHg8SF5Yekhkb2U+SXJzRGpCV3xQcHJ0Xzh9CnpXanY0YkAyVUZ5d3p8OCFnY3xg
OFYtdCh3UXR5Q3BqNmdDMmdxKDJNNis+VX5VbkpgYXk8VnBUYCZPVEBlPSo1KAp6Pk9qT0hlKiZJ
JHhxcSVEWTNeTSMoITNJWVhQbztQcStDWDc+S0xIKXlkZXZ6I2dJZmlUK3AxSnVTT21kPktHZDAK
elNKeiQ1M0U9RCtkOzMjaiowe01edHdhN3UpJEJXfGNJQ0NzV1YlUHxReUJtJDlzcjtvMDx+MGQ9
UksyZmxERmxpCnpfJjduY15XY3htcVI5bU0peVVYaSFwVWFHWkU4RTdNZDFlIWA4RTV3NWElcStm
QXw5Tjw+bEpfZT52b3w/ZUF1Zwp6QCsoaXRnNW9jUiYzKExOdlAwNTZtKjNZWkVtYXA2R0cxcGt5
Q1opOF4jQnV0UEJrXyohY0pjK3o5RURUSEkyfWMKenRTTmI7YXoyc3I/ODg+S2BXNGhvcTBtI1pj
VnlhVGI/LTFRUm9DIzh8MC15bWVGZkxALTYmN0t2VTstRzBmSCFsCnpTVFFATz95aCgwbzcmbWlp
Jm9kSEY0YEx2eF8qWmsqYHcyOUJ+VnFNc25VfnRNUVAle3k3RG0pUEFnVm8yPUJFTgp6RUV1cnlE
MCM7a0N+K1BCMiZQKz9XNX5ULVdmTDhYMlFtc3RCXkh1R0t1Tzc5KHhVbSZFVHhSY2FzKThYa3or
PEoKemNOfE48JTNCbzhGSyh+ZjhoQG4yIV4weipTOz4lUiRZRTQjKWAhZStLe2F9QWBTOHtvVFVD
QUljaEpjbjRYOHBICnpHR3MjbURwK3hEdHpCJm9sMnx+LS1yekFValRQXj9AS25LbDVgQGlndSpC
OT9WfHVMbS1RQT5ec0R8LSYzeDBwfgp6dSYmZ1kzNWdlT2prIW9BV042cFAzZGB1OGN+T0g4TGlP
P3kqPnVqRW49O1Rxd3NaZE9gOU0wY0t7S0xUSTQkNEoKemlDOTZ1PCt9SCVTb2lKO3ZvI21PPThk
QV4yXyt5PGo5ZXFJST1WenxITDF9YlJgTEhydlVIUCo4IUdLZXR6VjF+CnoqeVBxRHh6MlU5OENz
V3FCfmlMTTgpTld1VzNlZTxoTWs+ViNwRnxtUldBbkA3dmxUZEVFbUdRRTQxJiowKj4lSwp6SH05
azVOZikpUD1+UTVgbFIpSH1CS1lJfE1rcyQzWGR0fHlicGptVjxfbnc1eSs/eUcoWnxybj1RLTRR
PCh2fiMKentrTDh9SmtEcWBsVEA+UlA7Sz49eksoeUBZXmV8WFFJWXpsMVY1ajUwanE4IztfZCla
WG0yLXBaITxZY0lMXmY5Cno/QTNvI1psbmJ2UXpnSFJXZEkhNG9zfWp6ODV4IUp4OTUrZCN2OHhL
SmRXQkF4YW1PPmlWZnBhU2JlQT07SXF+JAp6WEtHPitwfG5gPkJGPlVDTSE5c31WUUcydjYraz41
Q3ttUTlxdlheVmtZY3tqfDlgKVVNOSRpY1ooWlNrTHZ+TyMKejlaa3lZeGxGMUlPQFpSSGYpbz1A
eEskNipXTmstfl5UPTRgUjhvQXtYYi02MW9kd0o3Km8zIzEhaUw3NF51dGA5CnppQj1TbVpqQDc9
SytyNEctaWBsKkFhcnc3UD9FZT5iZlIqTlRKYSN7aWhqeT9ufmt9c3pwLXwlWSNsT1E7UD9+WAp6
UVRkM1RKUVF9TmZ0IXQyY0spZUQ5dGFoUyFuSWM4cGV6WG9iQiVERyh3bSh4Z3x1U0VQZn1uX189
eS0oMio3JEIKemxjMlBtb04mMklmNjF4eFM4OThrP1NzP2AqUmU5a0p+dD8xa2gtcUZ8TXR5ND1y
anB1Jns8N19JNnZVeig5N3szCnpMZDJSZ3pZal9JQyQqUFAqcVYoYz9vMHIlPypjOEFoZVNsZnsp
ZzRPQHJvaHljSFlHail+TiQ3NDFLc2JTbEpOcwp6eF8qJmEyaE1kdUA2SUEwSEI1ai0xUHRxPGBC
X1B5K25MZGtOMk5+QWN4X1ZgcHFgeF45WiRQZzFneGhENHRiNCQKemwzT3E+dkZpWSN7aUgrUG5O
THNTKUZ9JjRTSjI1ZVQzckklSz9TeFl0TDtJSEdBcCFIKlNsUUV0ZChTdlA8Q1BiCnoxZT9MJWwr
aT9qaDJFdEVQZlN8R2cqK08kP3NXQ0FyWTM1WUlzWndOSkdYaVZHQExAPClDfjZHTWlTQ2QreDJr
Ngp6RCFocyNDYzNLSVQoJkVHcSQhUiE/JUIpe1hzRjY9P01sN250PFFAQ0pfT3lpYjcmfVctV35L
RzI3X3NFdHA+OHYKejI+PUY1ZEUtKCUtZDNzUFZzPVpIR3J+MFQqVmYrM0goRl9JRXR5Pj5rSlIr
OWVARUtVYGNUZ3pjeyR8ckJBVVYzCnozZklKTzJxdDVyWW84XlRKTHljczc9ekIyQDIpZm5hXnFk
YiVWPGpAZCpIUXttejRhbng3fVNXYU51RHo+eUt3Mwp6X3VjR1ltKUBGd2BASFRCbGtmbTJ2Y1p5
QGBiOU4lOVZxfSFZTi1XLWpuS3c+XjNsblRPTXtpZ3oyOUV6TVU3QFEKenhCX0N4ZDNreV55NiZX
Xz9hbn5rNjx6eTZVI3dqKTw5elV1aTg4RysqLXkmcWFpe3VoQVV1Mz1EQmgkTngqQUxSCnpTek5G
PUNFZ3pKQWUzOEAwSTZ+RWFAXkludU5EVyZeTHg5WjY/eXZaVD1UQXBlcTEjISNKa0M7bkhDcUBQ
cFZMPgp6NDJ5QiU5dzNoMjxxfHR0SWA2aFdyWXFJaEQ9M3wtcio+OVh6UGpPX088UkhqZ0wzZ1RH
M2U7Q3BZQjlXaTd4X3UKekgwIz9lQEBnQ004VCVvMSRaQys7PipDTn5mQCEoMkpXNnVtMk1WZ1BS
SzBlI08+WDs0VDFaaUlLZnNrN1ZJfS1OCnp5RCh3Pm9mYih2UlU9WHIyPSQoZHsyRjFVaz1OeU52
Wl9CTUN1d0FXZCt9KH4zSXBDej08QlNSeypWaWY/TVcmbQp6RHd1dWx0djRoZSFZPDgybFZrUkpq
aWhKUnRUdjAwJmM2bnR4eEY9KUFNMTB3Q2FjPW87cnpZQkd2flNjUXBwNFMKeno4TCFrNF5QaHt5
c3xtVlI1SlQlUG1Ja3tmP2B9eWtMamhPVElRdDE1UHI9MitGIT9PNT9tJG9BRT9lSmB9ZHtDCnpw
dE5nP2VBajJtX1NZJVh1Rk1UUUlJdC00cyNseGtCVX55KkAwa01mdCtxJTtqJjBtI2t1Yik0SSRl
KCFAeysqUwp6b2llZn5iKUF4TVRsNjt0cHg3PCVVKkF+ckJDSTZ9Zn00VismaWVvIzB5UXVtKTsp
WEhMTVJEYnpMbHtpO1FAJCkKemNHNmZsTzhgQD1jJW0rY1BgaXN4ZzhaM0hSdT9GP2hDP1o3WCtx
Xi1MRzR1fkBhUSNfcj0/QiZ5KFk4YWgqNnJZCnpuIztwWkw/ZmRYSyopZWRpfHQzdkdMbVo4WDl7
JFFMfkxuYExTMHoxeksjXlc2ZXQwdDZzMFY1VVJTZ1h3ZCQ8agp6bWRSTlJPJmtvQ2laYERsYjAl
JlJCNFo9ckJRenprbShpN3RvRW0yOCVvY21Xd3J3bHZsVzd5blVodTZeV2N8V1oKemxuUWdPVDxI
b3hMWlpqSk9WRDdIcnhNJjVLSWo+JSN2SFJzSH1Ec09TWXdMVVlRTS1LeUR0czYqX1h9YHlJd1pv
CnpkVUNFd2ZtUSkoYV9QfkBUO3N3WVFjSjUyOHwhazJnT204YDk7PE1vaG5gIUA2JVpwKDZmU15K
VkFzbHhfXzs2VQp6VCE8OD9AIU1QbGl7VjdGcVAqdlB1WTgwS0ZtMXFDTUBaYDdZOUZ2b2hKayVC
NnF0R2sqdF9tMXphe0psN0Z3YV8Keigobz0yaWolfT8+eilFfCEkZDtMb1FIVXRUIy1tNWh4IXM+
OHpoVio9cVo0O08jc219SllIIUpTekJLWjVsaj5iCno4T0FRdnlhKXBSdzlYKk5IQ1VRY2A0R0Bi
dSVBfTNsSEV8aUxmWmBQISpII01kJUhgcUk2elMwck0tKD17KEhNTAp6X3VVeEJnP0AqOFJIZlNs
bHF8SDJgMGM8SHZjemlCXkluayY/Z3glOExzYz4lRGRNSk85TjdpcW5MPCMxVUQrKDUKej9LNnZ1
XnpMIzMxdm9AdTB7ZGw2aFYqMDMmJENuI3dvUFFAdUhRWHxjfXZPMWd7TXFJPk88ZVg8emBqckBO
Iz8qCno8YzF8Y0c2WjU2XnVJYmNzPkhGY0RDfk9KbV5heyhCd0BwSEhObFZXKzJ+PD0qKUJpYDNk
SEtyOG90ZXpsOUE2cQp6KEA8OGVmMnJtO1Z2dWZBZ05iciZfeS1+M3JpQSYjbVRINW9mJj4kJTR7
eCl0TF9UfiZKT1BleExZVFFXMEI5TXIKekE/a2kwPEBORSVGZGk5RUZJK0UjT14mJFAzY0MoO09t
KG1ILVFOcU5fK303QldBYUlBSTY2PU8kKlNvVDVUTSNtCnomUTFWNV8kQF53QnRAIUN7Ji1KPWhN
PlBSbG81RTA7MXVUZTNNITVGZTcmMTVGeVA4M1g8WUZCRjF6LTNRYTNLcwp6PDVPOCE9M0wxbWJa
UjtITzQjfHtMTlRLcGBNSTNwMDIrUlRHT2JkSXVoLVkycU0+UnopSmZQPSZCfUc7PTFfYGgKelE3
UCFlN0Q7MEReWEokNU9LeHVCZXYySmFyOzRPRytnfD9WTnhEJTUmY1J7cyFUMEFjZyE1cDRgJDZO
elk0Y34tCnp2KE19NSg3VTF3LTMjbCZuRGFKNFc0dGZ8cit1YFJZUUghUGRKZig9NENwbVcmUSFe
Sk1Sd1NSUWRMXntvam48OQp6VXRwbGBSWj0wIStkUntUQ087djdudiUxbVR3S1ZMTU1sPC1pcCFw
TTx4XyhiIURAI1IycHl9YXNxeWJFeERIO1gKemo8X1V0aXAtS1pQUHloYmJ5aE4zXj5xNENsKENj
T0g3Qj5AUGwpWSpGQjhwak4tZVhtYntWZChuOTBEWD0zSUVPCnpGUVFAUlV1WXdQVTNaRmFfUkAl
WW9IOFlMaHZsa2pIcShQcWtVcnFUVENHfTdMRn55TDlqKld+TSkoWiN4b3lkWgp6Y01oPj8lSUAk
bXVaTUlVYylrMmFzKG9pWVRANil5cVpRO211cSM/PXpXKU1+K0Q2QGQ7VXdkUUQmTUIhYnAreTkK
eiVDNkFRMiEhNU8jXztuJDlsRWE3bmc5PWFhcH09a1k3bHVxWSQ9Yis0MTc3OCNsR3d7YWJoMiNi
Vk50OWBfP34tCnpvZF4hWmJndHJkKyYhQFQzRSp1K2xsPlp4K01ZbldrakpQMUxubFVsO1ZyeyY9
e2VyfElXdVZHdmArKnU3I2Mpfgp6eFh+YWZmaE8hTTsrRiNFYT8xfURESS0rKlhIUSVCdWFibHo7
P1pRWW9LR3R0dGFvbHM1OylTQDducFdUcU44Tk8Kent1Q2hXV29TZiVzRjMqJlZQaDR1QmxKaDtS
fTUkSXgmdmJ2MlJkbjEzeng4QDJHYm5vZnAoWVlaYkE7OzRBO2hrCnpeVyM8NV9SYW11Qj1EVzgt
JHVDSGFOTT9lczdPZVhLZWRrcSU9VWAwMm5NR2xRZ1U2P2IqMWd6Snt2cjtJUktQPAp6UFhVYXdj
RTNwfUZkTWdTQTduYHBGKExTRTA8K3dIZX1ecn1jUSYmI1RfLVpkNG9JVGg7SF82c01ke2ohUlVs
KX0KekkoV2s7bHpAYGJPfSNMSXREKDlDdGk/bFVxLUFBUWZ0PzM2akpyJms3Rm08dlBEOz4+TEN0
MEwlNSEtM2pGQUtPCnp3bnV+KWt9PSlhYlVERTYhO288MFA2SX0oS3VtTkYlQFhOek1EWTJlO0hL
aGM2K2MkaVNVWUckQEt1N1Jea18rVAp6NGB4YjdDdSR9I1pZe0hUd1ojcjBCWDYqMXdOYEc7V35Z
a3F6LU1BeSUqRVMyUGhkNmA7VldjbE55YT01YTQkWVMKelVMKStnNityNWpNPSZJSkp+JFZxTFF5
a2ZeS3c9UnBgNmBUeSlEVW9eXyU7akNIPndJJkxkK0ZfT0AyY1kwPzR9CnpyWTF2ZkUjbHliWiRV
Vm8jPllQemthT3lQSlRNQkFDUj1DaFVuVTlBSWlPUjBpbjx5MVVuZUNLPGdlOGBifmV8JQp6MDZu
MVB6KGk9Z0BtfnhfRT9sbitqfX03KSV4SXh+dy0/SWNpWmZufGdYOWg8PHorSD41WSg+eDBMJSEl
LTwzfkwKeis0fm1vUkc3aEJRVUMkOTJATkRGME9UNDBDWkV1bCZqIXpGc0JMdlhDdDx2Jjk/SGVB
MVM/PGFGJWZTfj9iTU1MCnojZDtoSV57YD5yc29wV2xgOCE7Qzh1TzMhd2VQM2NqbilUJiZ9QlRF
az1BQTk8PWtjWlozQCYzKzByMkxiMW1fbAp6cmgtX3Q7LUl5ST1sRHM/Iy1BeElufUJqMGVnWmh4
OHotM1lHekMzT1lvYkVLMWxjfHM2QjlHdXhWdWZHZEg9Mm0KeiVITGhyMT9iIWFgR0xkZUFBPD9v
d3VETzFIcjgwXkdFPlI4MDdlOSFOWklEMGlLPjBXbUZ+OE1mcmtHblQwMV5jCnoxUnZQKTQhWGpm
eklsVGQtUn5IWG5kI0sxLWRIXkRHZzFDUChVS0pVeTMqaEwpMF9aYmttJU17bT1HQVA9cG1HVAp6
Y0NxeWhSfnQ3MWJIZD51LX1JNk0wPkxmS18lNlc2em93Y303QiM+JXA7KGZeOV4wYks+Qz9jOGtG
JHkoPD5lUkwKekJtZVVaOzZRZ0ZhN3whYF81Nz5SSVEjdFNSbjJlRGVmRFEtLW11UmJQNihPdXAw
JlElY3hxan5aYXpfcVlJeFE+CnplWW0lTHR5d0tBO1R5JlBuWkJTZnYyTG5ldEkxI0cjd153eUsr
OzVITlR3bHw4RytsYFNScWxUSjVuRkRwWiQjYAp6c2ptNTh6RFAoRXZneEZETFklVCUyQG9zRyRR
NXlNQHlaMjs9TH1vMHdMeU9PWmdwVVVGNTNzYWlaRVopYStiTTsKekEyV3BNYE4pQihjX19TXyh6
dz13MWNlTnlFcFlHZFR2SGhRUGV0UXlBQnwyPXk1Wl5ZJHZHR0dXTDd6KGhNa0o/CnpLWH0tOWcy
cmhaVkpzb3gwITBGQ0Rybih4cjtFWnFHMGIlSGxWOzA+KnFrb3t4MXVOflgrUGFMdl55ekJSRGhI
Swp6VnYjdUxNKElNMTBHdldjOGlCYjVYdjQkLWNrcnZCKlk/ODkxOE9IIzxmKik/QzVKakFzajR0
QCE/P1gmaFMrM34KekdgSSNoUnFXbGshQyZgUUNIR2MwI3YrJmNpbDtJR2VMejhLYn16Um5FJlph
cVBUeVlBJj9TRiMrVEtrezJDUmUqCnp6fDY0PWlRYWA4WElSNDlPR0tqYWJxME9vUCZYfWkxfHxl
bzVDTWJHSmA+UkBTbjVzX1pieVNkbyZEdEgqR259Rgp6YnJVbk0ySzwzQlVxenhZaE1TQmNvTlNH
RS09KSlWZHRQfVhRTXZ2VFYoNkxhWD9afEdTYU91dHB6emMtR3pxUkYKejBmbVc9ezswdDxSKHsy
RzlvJHl1TDJrM0ZqPj1qfCRoO3VTPDFyTztkM2FUai03cFRAZ1Z8NlUqZFYmUys5ZGJPCnp2b3JK
YXJ8MEZjfEE9N0xjVlZ7JGU4d0wjQWs/X3ZTZnZmPHh7O2twSWJJJX5KUipILTVQJDF+ZTNHMllG
Z1dfRQp6dzkwbEVocHJeSndfVTY5eFhJVkZIcXxaJi1HZjJ5VkFeKnx8SysmQWErfn5FbT5LcyFg
cVpHRDlfTV5kb0VKemgKenUmQkV8bz9wYyFYYFl9fFR+SHZQdkFmYGNRLVZQLVhoKnpkTHI1eyQm
fGJ1Q1JPR05lVVFEXnZkSmlgQmc2YHZMCnpfVXQkOG12Z0kpaTkpN3hrYU9WNSF1bm9iaUtrfHhj
U1pNPj4rOU5rRTNNSSkrPEp3ZjM/MT9aeGx2OTI2Y3AqVwp6b3pAd2MyR2N7KUozbkFEdzVTN1BW
WlE2fVhGTTkxPWchUGVNNGxWPFltR2FUK0l3bD1SUl9eNks2U3hZN1orfkgKej83eW5DTU12RXd3
ZVhSTVM1WUxFMm93c3tDR2lDIUJfa0BvbmRJLUJwM2EofmgmK3l2WH4tNystOztgZTt1IXlfCnp8
RlZpeD8/QnFLVEp4WGRZO1pNT18hZ21Sc0M/JWo7X0o5VEkyZD10ZSg3SEFpQVhqWXt0RUZ7PWco
aCF7TyFMeQp6N3wqY3J3NyVfTnl1UWkhSFk+SDFAc2dvdk93I21eU3ExRXlSQD1BVkN+XllwVXFa
bE1yQV53b0JndmZWeTgyfTQKekAxTVRxa2h1fmZaMUBmdFdEcEk7cHJJfkA0TzMyNDk5cXcmVEB0
YUlvKVFRckl5ZzkobndsMDNePnJ5c14oaUV4Cno1O3Y2YEJWPTc3V1RCM2ZVOzE8eWhDWXBkRG1H
dE9aVi1KUHE7Py1WJFk2VS0+dDU2diVRPn5Mcn4pfTw1b0l5Swp6Q2Nlc0JsWExVNGp5QFNTaSY+
Uz1lR1IoS1dpPnRCX3NwZEozJnQ1fDErTlYjXzZKYTdsTWx8NkJvR1daZV5LY14Kemo0PFJsV2BY
ZzxQLWxIWU9fNzY3U0FNeERsRXNgUjtCWTgjbWlnLWYhVnJDN1NsfSF5RHctQzUjcWNAVnN1Z2gr
Cno2QDRnJih5PThvPGx1YG51dG5OI1omOGA/WkVweiNsO0tiMCQoe1lAIW4zNjxnbUJwLU91Smo2
ZGRhK00lLVBMRwp6QG9PdnluWT8jXyhMNDc4MVUoIVZHWWFQRGJ+Xz9EcU5ZeDVrX2Q3fG1kYyYz
VkQ2O21vfmQtNWkyQUlldTFgMVcKel94aCVMYSFOMnVecyNUd1FOKylnKGlTcjZTTnhSPCZ9eXNy
X0hlLTxMITBjQCY0WW5GJGVYb0t6ckhkKEBNfHUrCnppUChJVjhxYzIoWklkIy1lcV9GPFEzWX48
bEoraThNJllTNGdgOFFWVm4zVXlaPnk3cHk1NGoyaEU3cyQpLWlrYwp6ZlBLI3o0fCtlXndrajZu
NExwRDdTIWlsbSo4Nzc3SDgmNiRkNUNANG02QEJ2Kkp2QHN5XyhgaHs9bDl7MTVRbXcKejQ3KzVj
Rk4hKGtJX1l2bXVTTTZjPDtCczRCPm0ocnJWQ3wkVDZVSTVAMDNNcFg8MDdlQ1o9JjReRDs+aEwl
RVg4Cnp3OSRlNTk4dk0+TnArZ2lheHp8WUVGK3EyZDJKRGB7M05EV0lYUmhmWjk2QXRgQEMqXmxI
c1JeOEdadk0xZ3Naegp6QyRqWU9QVkYtKSYyUWReKmVMbjcwS1M7Vnt5KmN1JVR3SnpyN1NwOV59
dWRWJihEVVhXSz9FV1Z0I2dUKkl6U3kKemwqYz9Bbnt+Klg1eG9QYXQhcm9KWEF7PXU2VUpUVCh5
aVB6bmtGTWVMTGxTMFFLZks9Zjw8SCYmcWEhezZ2OUJnCnpBb2ZlaFZHe3hTblUoNEl7Tm44NWlS
VXF1Kl5+RVhicXg8PkdMcUsqRUIxblojcnxlTFlvfEg4P0xLcT4qTmFaSwp6RWpgMXBLVkdqSjd9
KFg8KXQ1YWI/dT5HRVhrYEVYZEIqMSo1PDZHQjwrKXZzI2xCOWtvaVo0OWt1P21gaTxDS1YKejRy
OW51KDUqNG88Qj5uSnBiTGUkRmdHQUp1WHVobioxMU15Y0tVREd0OWlmKE4keDU/dXVVPDFwKCs9
XlZIQk0hCnpKSD9II0glcl4rOzlnU2MhZ0xaaEZydT9IeFM/eG9Ta3w5X01yNjFlVmg/NHJOaChM
QHg5Y1NIe2g3ekdsbFI5ZQp6T2k7RjA0TWlBaHpOPmUkKTt7RnZtWnQ/VlZCRzdVaWIpM0dyVGw9
WWFFVmJiMX1GWEpWLXN1KD5pSyV9IT9BfjAKejVWS21hMX4rTFJOT21saU94OTB0T0gjKHk9U2pV
dVFhMWdnVVJqbjsod2M2bCRzJlJlcFgxaFdHT1QwQ0BNUlBfCnpmRXclO0IpZDNuNHtKTjVndmJ+
Q0JjJmJlOXZKblQ0NVd5TlBLb19HZyp2bEBNe2hWayhBTHVYdn1ePDJnNyFMbAp6MlBhZWkmZTxe
OSsrYEthPn08UmQrajQ0dCozWCVyS3VQJmR3NEptNDt0czcxKGdaQHdBRm1YfUNnSXwyQDB8RnkK
emV+QGdKPiFwKFlkM1MhV3VHTkl+O3R2VHJlNkU1NklyaXgyMUJtNkRMS2djRlUhNDQoYWdkZXY0
dXUzXkJ1bnBMCnpNXzw9YmJ6T0lUX3FuXj5sUEBRO1BvZy1oQkBKMXQ4OH4qeF8lJE9EOERMS3Vi
Sm03QGhrRG9Ma2RjIy10Zz5mWgp6USE4TDdeSSowUlU/Oz52QHwhWUROdlNnVi1CXmJsOHNONiZ5
dHE1RW05O0IxPnlYfEBeIWZJck1KYzh2ZGg+T0UKemNMJWtZeE80aHFgb3d4IyowR1AqcnZQazBv
Z212eTJkaDRHaFlBMXV2K21+fExJd3M+N057O1g+SH4lTHcjQDFnCnokM0pqQ09XR25ndk85bXF5
bUtIYDV3QUdWUTt6SiMrIzhvMV4yTCVudUtrZ30mOztAX3ZSIzt7YkotWERvJk9IVwp6SDRrKHsw
fnxTV25PO1VyVWF3cTlFeSF7I1JVamcraiU4NX44d3J8d2k9dmEwUlRjaGgzYjIjeE98R1I/Wk9e
aTwKekdTPlZoZk9IcCEzfXZBPFZFNlVYS2JPPGIoJDhJKCVDemxyfEZNQ3t3XzV9JDZyZyEmaHEo
fnNTWGpmai02fHdJCnptNzArV2wzSztiR1lEbEhye1l0VmJ2eHJAIXtCfkBXaWhmZnohN29lWHJN
JHlmN1dnOHN9JCYhUnJ8bGxmISVeKwp6SD5KflFaQjw/ZmJHMUtHeTY1ZSYrPis4VmJ6T3J0PG88
VE48KipsVmRGV1ZUJSFeT1UmUGNJSHpTR3MrVSQqdEsKej4qIUw/Nlc+e0ttdDN5RWRreXF3RUdm
T35iNGFYWGtVWTQjI0p+fEh5clBuPCo5ayRoVlIlZE5jYDJaeSQmIzxwCno9aU8wJTlUKk1rXjwt
Nzt7QG5aeThGdnZ4bkdvK2dIVUVQZF5NNXBWe3g1I2QoSnJWZC09eCRZMisyPkgqV1k3Mgp6Smw7
SCY1d2xgaUd3c29ZbWNJS1VDOXRjJXBHUkdudWojdHxeOyNJTGkjXz8+VjZ1R3BCa3s0bFN7VTM4
Ryk7KEMKejA2cDUtSmpDfWIqXyh8cU0qbGNWfENhfCZ8Rj9EO0E3OVRqR2F8YVh5RGdLfFp3OUN4
SlVodTlOTX1FMEtgfCF1CnpYdzJjNkZoSEtYKUtPNFY+UX5yUHpQaDVAYE5DVUkkbHZneVZXdl44
M0ZxI1RhMmE9Mj5aWHQoYiFZIXVvYW5BWgp6Sj4wOVR0anJvO29iQkZMPjwpUnE9R0R2Ukd8Y0F8
ayZAd2FjYFlUSTMoNkRPWXZxekRgZjlNIXk7IVh0UG8wV0EKekVIdVIoODFVYDlpbT87RmxRPilI
eTd6aSg1NDQhb3QxV3x1MmV3LTRKe1EmaHFyU0FnPCFOfE9fZk17czh6OHY7CnoqWk1TQzcyZmlI
VFVlUHxwU1BYKmVeSCshPmM7V094UXVeUz1sQDY1YENuWjh8R3hjU3pVSzRhQUNtdFRNRShmWAp6
WD0pQERubEFpTiYqTjg4ZjE0My0/bj1QV1Y1ey1aY203ajR7QCpBNlchQ2NWa28tRiZlPUR6RFQm
VG5DIVZgQ0kKVFBRZjRHQXVnJEZ8QzBCISNxSXdFQH1nZWkKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3Zn
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3Zn
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODc4ZDQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVy
bi1zdmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhlcmUgc2hvdWxkIGJlIG9uZSBi
aWcgc3F1YXJlIGJlbG93IGNvbnRhaW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVmdCBzcXVhcmUg
c2hvdWxkIGJlIGZpbGxlZCB3aXRoIDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCByaWdodCBzcXVh
cmUgc2hvdWxkIGhhdmUgb25lIGNvbHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0b20gbGVmdCBz
cXVhcmUgc2hvdWxkIGhhdmUgb25lIHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRoZSBib3R0b20g
cmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNvcm5l
ci4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LXN2Zy5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTYzMzNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApA
QCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKyA8aGVh
ZD4KKyAgPHRpdGxlPlRlc3QgZm9yIFdLMTEzNDIwOiBTVkctYmFzZWQgcGF0dGVybnMgc2hvdWxk
IGJlIGRyYXduIGNvcnJlY3RseTwvdGl0bGU+CisgIDxzdHlsZT4gY2FudmFzIHsgYm9yZGVyOnNv
bGlkICMwMDAgfSA8L3N0eWxlPgorICA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICB9CisgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKXsKKyAg
ICB2YXIgaSA9IG5ldyBJbWFnZSgpOworICAgIGkuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCw8
c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzUwJyBoZWlnaHQ9
JzUwJz48Y2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScxMCcgZmlsbD0nZ3JlZW4nIC8+PC9zdmc+
IjsKKyAgICBpLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGN0eCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpOworCisg
ICAgICB2YXIgcGF0dGVybiA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJyZXBlYXQiKTsKKyAgICAg
IGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuOworICAgICAgY3R4LnRyYW5zbGF0ZSgxMCwgMTApOwor
ICAgICAgY3R4LnN0cm9rZVJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIDE1MCwgMTUwKTsKKworICAgICAgdmFyIHBhdHRlcm5YID0gY3R4LmNyZWF0ZVBhdHRl
cm4oaSwgInJlcGVhdC14Iik7CisgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVyblg7CisgICAg
ICBjdHgudHJhbnNsYXRlKDAsIDE2MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAs
IDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICB2YXIg
cGF0dGVybk4gPSBjdHguY3JlYXRlUGF0dGVybihpLCAibm8tcmVwZWF0Iik7CisgICAgICBjdHgu
ZmlsbFN0eWxlID0gcGF0dGVybk47CisgICAgICBjdHgudHJhbnNsYXRlKDE2MCwgMCk7CisgICAg
ICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgMTUwLCAxNTApOworCisgICAgICB2YXIgcGF0dGVyblkgPSBjdHguY3JlYXRlUGF0dGVybihp
LCAicmVwZWF0LXkiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuWTsKKyAgICAgIGN0
eC50cmFuc2xhdGUoMCwgLTE2MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1
MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fQorICAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgIDxwPlRoZXJlIHNob3Vs
ZCBiZSBvbmUgYmlnIHNxdWFyZSBiZWxvdyBjb250YWluaW5nIGZvdXIgc3F1YXJlcy4gVG9wIGxl
ZnQgc3F1YXJlIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAzIHJvd3Mgb2YgMyBjaXJjbGVzLiBUb3Ag
cmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjb2x1bW4gb2YgMyBjaXJjbGVzLiBUaGUgYm90
dG9tIGxlZnQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSByb3cgd2l0aCB0aHJlZSBjaXJjbGVzLiBU
aGUgYm90dG9tIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2ZSBvbmUgY2lyY2xlIGluIHRoZSB0b3At
bGVmdCBjb3JuZXIuPC9wPgorICA8cD48Y2FudmFzIGhlaWdodD0iMzMwIiB3aWR0aD0iMzMwIj48
L2NhbnZhcz48L3A+CisgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4MzBhMjUuLjRm
NmExZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNjMgQEAKIDIwMTMtMDQtMDMgIENocmlzdG9w
aGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCisgICAgICAgIFJlZ3Jlc3Np
b24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdp
bmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbnRyb2R1Y2UgYSBQYXNzTmF0aXZlSW1hZ2VQdHIgdHlwZWRlZiB0aGF0IGlzIHVz
ZWQgaW4gcGxhY2Ugb2YgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgZm9yIG1ldGhvZCBhcmd1bWVu
dHMgYW5kIHJldHVybiB2YWx1ZXMuIFRoaXMgaXMgbmVlZGVkIGFzIFNraWEgbm93IG1hcHMKKyAg
ICAgICAgTmF0aXZlSW1hZ2VQdHIgdG8gUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciB0bworICAgICAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4uIFdl
IG1vdmUgdG93YXJkcyByZWYgY291bnRlZCBzbWFydCBwb2ludGVycyBzbyB0aGF0CisgICAgICAg
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGNhbiB0cmFuc2ZlciBvd25l
cnNoaXAgb2YgdGhlIG5hdGl2ZQorICAgICAgICBpbWFnZSB0byB0aGUgY2FsbGVyIGlmIG5lZWRl
ZCAoZS5nLiBmb3IgU1ZHSW1hZ2UpLgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1ZHSW1hZ2UuIFNWR0ltYWdlIG5vCisg
ICAgICAgIGxvbmdlciBob2xkcyB0aGUgbmF0aXZlIGltYWdlIGludGVybmFsbHksIHRvIHNhdmUg
bWVtb3J5LiBJdCBpcyB0aGVyZWZvcmUgY3JlYXRlZAorICAgICAgICB3aGVuIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgaXMgY2FsbGVkIGFuZCBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRo
ZQorICAgICAgICBjYWxsZXIuIEZvciBub3csIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgb25seSBl
bmFibGVkIGZvciBTa2lhIGFzIG90aGVycyBhcmUgdXNpbmcKKyAgICAgICAgcmF3IHBvaW50ZXJz
IGZvciBQYXNzTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgVGVzdDogc3ZnL2NhbnZhcy9jYW52
YXMtcGF0dGVybi1zdmcuaHRtbAorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJ
Y29uRm9yUGFnZVVSTCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0
ZWFkIG9mIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgIChJY29uRGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25EYXRhYmFzZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2U6OnN5
bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0
aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUg
b2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEg
cmF3CisgICAgICAgIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9h
cmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgaW4gYSBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPgorICAgICAgICBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuIFdoaWxlIHRoZXNlIGFyZSBlcXVpdmFsZW50LCB0aGUgZm9ybWVyIGlz
IG1vcmUKKyAgICAgICAgcmVhZGFibGUgaW4gU2tpYS1zcGVjaWZpYyBjb2RlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJ
bWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVy
biBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIFRha2UgYSBQYXNzTmF0aXZlSW1hZ2VQ
dHIgaW4gYXJndW1lbnQgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIChC
aXRtYXBJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFn
ZUV4dHJhY3Rvcik6CisgICAgICAgIEtlZXAgTmF0aXZlSW1hZ2VTa2lhIGluIGEgUmVmUHRyIGlu
c3RlYWQgb2YgT3duUHRyLCBub3cgdGhhdCBpdCBpcyByZWZjb3VudGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFn
ZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoSW1hZ2VCdWZmZXIpOgorICAgICAgICBI
YXZlIGNvcHlOYXRpdmVJbWFnZSgpIHJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFk
IG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2Yg
YSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIEhhdmUgY3JlYXRlRnJhbWVBdEluZGV4KCkgcmV0dXJuIGEgUGFzc05h
dGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1hcCBOYXRpdmVJbWFn
ZVB0ciB0byBhIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VT
a2lhKiBmb3IgU2tpYS4KKyAgICAgICAgSW50cm9kdWNlIG5ldyBQYXNzTmF0aXZlSW1hZ2VQdHIg
dGhhdCBtYXBzIHRvIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3IgU2tpYQorICAgICAg
ICBhbmQgaXMgZXF1aXZhbGVudCB0byBOYXRpdmVJbWFnZVB0ciBmb3Igb3RoZXIgcG9ydHMuIFdl
IG5vdyB1c2Ugc21hcnQgcG9pbnRlcnMgZm9yCisgICAgICAgIHRoZSBuYXRpdmUgaW1hZ2Ugc28g
dGhhdCBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYW4gcGFzcyBvd25l
cnNoaXAKKyAgICAgICAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyLCB1bmxpa2Ug
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJu
IGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgVGFrZSBh
IFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1l
bnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKToKKyAg
ICAgICAgVGFrZSBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQ
dHIgaW4gYXJndW1lbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFs
dWUgb2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9m
IGEgcmF3IG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUJsZW5kU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5
U2tpYSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFQ29sb3JNYXRyaXhTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1h
cFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3Jt
QXBwbHlTa2lhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6
cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlRGVjb2RlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5z
dGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdl
UHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oOgorICAgICAgICAoU3RpbGxJbWFnZSk6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBObyBsb25nZXIgbmVlZCB0byBhZG9wdCB0aGUgcmV0
dXJuIHZhbHVlIG9mIGFzTmV3TmF0aXZlSW1hZ2UoKSBub3cKKyAgICAgICAgdGhhdCBpdCByZXR1
cm5zIGEgUGFzc1JlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgQ2FsbCBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSgpIGZhY3RvcnkgbWV0aG9kIG5vdyB0
aGF0IHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBpcyBwcml2YXRlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVEYXRhOjpjbGVhcik6CisgICAgICAgIEp1c3QgY2FsbCBjbGVhcigpIG9uIG1fZnJhbWUgaW5z
dGVhZCBvZiBleHBsaWNpdGVseSBkZWxldGluZyBpdCBub3cKKyAgICAgICAgdGhhdCBpdCBpcyBh
IFJlZlB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4g
YSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9m
IGZyYW1lQXRJbmRleCgpIGluIGEgUmVmUHRyIGluc3RlYWQgb2YgYSByYXcgb25lLgorCisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIFN0b3JlIHJldHVybiB2
YWx1ZSBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGluIGEgUmVmUHRyIGluc3RlYWQK
KyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9OYXRpdmVJbWFnZVNraWEuY3BwOgorICAgICAgICBBZGQgbmV3IGNvbnN0cnVjdG9yIHRha2lu
ZyBhbGwgbWVtYmVycyBpbiBhcmd1bWVudC4gVGhpcyBpcyB1c2VkIGZvcgorICAgICAgICBjbG9u
aW5nIGEgTmF0aXZlSW1hZ2VTa2lhIG9iamVjdC4KKworICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
SW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1h
Z2VTa2lhOjpkZWVwU2tCaXRtYXBDb3B5KToKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIG1ha2UgYSBkZWVwIGNvcHkgb2YgYSBTa0JpdG1hcC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKToKKyAgICAgICAgKE5h
dGl2ZUltYWdlU2tpYSk6CisgICAgICAgIE1ha2UgTmF0aXZlSW1hZ2VTa2lhIHN1YmNsYXNzIFJl
ZkNvdW50ZWQuIE1ha2UgdGhlIGNvbnN0cnVjdG9yIHByaXZhdGUKKyAgICAgICAgYW5kIGFkZCBh
IGZhY3RvcnkgbWV0aG9kIGluc3RlYWQgdGhhdCByZXR1cm5zIGEgUGFzc1JlZlB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjbG9uZSk6CisgICAgICAgIEFkZCBhIGNs
b25lKCkgbWV0aG9kIG5vdyB0aGF0IE5hdGl2ZUltYWdlU2tpYSBpcyByZWZjb3VudGVkIGFuZCBp
cyBubworICAgICAgICBsb25nZXIgY29weWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OnBs
YXRmb3JtUGF0dGVybik6CisgICAgICAgIFN0b3JlIHJldHVybiB2YWx1ZSBvZiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIGluIGEgUmVmUHRyIGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcg
b25lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAg
ICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgor
ICAgICAgICAoSW1hZ2VGcmFtZSk6CisgICAgICAgIEhhdmUgYXNOZXdOYXRpdmVJbWFnZSgpIHJl
dHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgTmF0aXZlSW1h
Z2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Z2V0U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6
d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGVpZ2h0KToKKyAgICAgICAg
VXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIgdHlwZSBhbmQg
Y2FsbAorICAgICAgICBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSgpIHRvIGNvbnN0cnVjdCBhIE5h
dGl2ZUltYWdlU2tpYSBvYmplY3Qgbm93CisgICAgICAgIHRoYXQgdGhlIGNvbnN0cnVjdG9yIGlz
IHByaXZhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05h
dGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQg
b2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICBJbml0aWFsaXplIG1fYml0bWFwIGlu
IHRoZSBjb25zdHJ1Y3RvciBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIKKyAgICAgICAgdHlwZSBh
bmQgd2UgbmVlZCBOYXRpdmVJbWFnZVNraWEncyBkZWZhdWx0IGNvbnN0cnVjdG9yIHRvIGJlCisg
ICAgICAgIGNhbGxlZC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgQ2FsbCBOYXRpdmVJbWFnZVNraWEncyBuZXcgY2xvbmUoKSBtZXRob2QgdG8g
Y29weSBtX2JpdG1hcCBhcworICAgICAgICBOYXRpdmVJbWFnZVNraWEgaXMgbm93IFJlZkNvdW50
ZWQgYW5kIG5vIGxvbmdlciBjb3B5YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0Zp
bGxQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgIFVw
ZGF0ZSB1c2Ugb2YgbV9iaXRtYXAgbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyIHR5cGUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBS
ZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgor
ICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYSdzIGNsb25lIG1ldGhvZCBub3cgdGhhdCBpdCBp
cyBubyBsb25nZXIKKyAgICAgICAgY29weWFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OnNldEhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFN0
YXR1cyk6CisgICAgICAgIFVwZGF0ZSB1c2Ugb2YgbV9iaXRtYXAgbm93IHRoYXQgaXQgaXMgYSBw
b2ludGVyIHR5cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFn
ZURlY29kZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2Yg
YSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGZvciBTVkdJbWFnZSBhcworICAgICAgICBpdCBpcyBu
ZWVkZWQgZm9yIFNWRyBjdXN0b20gY3Vyc29yIHN1cHBvcnQgYW5kIENhbnZhcyBkcmF3aW5nIG9m
CisgICAgICAgIHBhdHRlcm5zIGNvbnRhaW5pbmcgU1ZHIGltYWdlcy4gQXMgU1ZHSW1hZ2Ugbm8g
bG9uZ2VyIGtlZXAgdGhlCisgICAgICAgIG5hdGl2ZSBpbWFnZSBpbnRlcm5hbGx5IHRvIHNhdmUg
bWVtb3J5LCB0aGUgaW1wbGVtZW50YXRpb24gY3JlYXRlcworICAgICAgICB0aGUgbmF0aXZlIGlt
YWdlIHdoZW4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBhbmQgcGFzc2VzCisgICAgICAg
IGl0cyBvd25lcnNoaXAgdG8gdGhlIGNhbGxlci4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICBPdmVycmlkZSBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSBhbmQgcmVtb3ZlIGR1bW15CisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGZyYW1l
QXRJbmRleCgpIGFzIGl0IGlzIG5vdCBuZWVkZWQgLyB1c2VkLgorCisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHdoaWNoIG1l
cmVseQorICAgICAgICBmb3J3YXJkcyB0aGUgY2FsbCB0byB0aGUgSW1hZ2UgYmVpbmcgY29udGFp
bmVkLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6Cisg
ICAgICAgIE92ZXJyaWRlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLgorCisy
MDEzLTA0LTAzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4K
KwogICAgICAgICBbQ2hyb21pdW1dIEJhZCBjYXN0IGZyb20gQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEgdG8gQml0bWFwSW1hZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzQ5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCAzY2IxMzk2Li42OTFjNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBJbWFnZSogSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQor
UGFzc05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVS
TE9yaWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5oCmluZGV4IDBhNzI0MjIuLmE2MjI2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwogCiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hy
b25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJik7Ci0gICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVh
bCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwg
U3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAg
dmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3Ry
aW5nJik7CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lz
aW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopOyAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwNDBmYzQ3
Li5lMWY2M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzeW5j
aHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lz
aW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIElj
b25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVh
bCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQXN5bmNocm9ub3VzIGNh
bGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1h
Z2VDaHJvbWl1bVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJh
Z0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAppbmRleCAxYjBkOTJhLi5iNjhkNDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9t
aXVtU2tpYS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEq
IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggMDdmYTlhOS4uMTMzZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBBU1NFUlQoaW1hZ2UpOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGNmNDMwNzMuLmNiODBhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBib29sIEJpdG1hcElt
YWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0zMjAsNyArMzIwLDcgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
ZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRG
cmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCmluZGV4IGE4N2NkNTguLjMxYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIEJp
dG1hcEltYWdlIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2Vu
ZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQpA
QCAtMTc3LDcgKzE3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRF
dmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFs
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAgICBJbWFn
ZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyArMTk5LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQg
aXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgQml0bWFwSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAgQml0bWFwSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwogICAgIEJpdG1hcEltYWdlKEltYWdlT2Jz
ZXJ2ZXIqID0gMCk7CiAjaWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hC
aXRtYXAmKTsKQEAgLTIxOSw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgY3Vy
cmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KICAgICB2aXJ0dWFs
IHNpemVfdCBmcmFtZUNvdW50KCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNp
emVfdCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpOwogICAg
IGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCA1YmM4ODgxLi5kNmY2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjczLDcgKzI3Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAg
ICAgICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uKTsKIAogICAgICAgICAvLyBBbGxvdyBmb250IHNtb290aGluZyAoTENEIGFudGlhbGlh
c2luZykuIE5vdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzdGF0ZS4KICAgICAgICAgdm9pZCBzZXRB
bGxvd3NGb250U21vb3RoaW5nKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+
IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7Cisg
ICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAg
ICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDYzNzY0M2QuLjlmNTQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGls
ZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsK
IAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CiAgICAgCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZTRlNWQ0Li45
ZDBiM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2
YXRlOgogI2lmIFVTRShDRykKLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKKyAgICAgICAgUGFz
c05hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSkgY29uc3Q7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uYzA2NmNlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cApAQCAtMTQxLDcgKzE0MSw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXpl
X3QgaW5kZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
aW5kZXggNjZhOGEwYS4uY2E5OTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CiAKICAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55
IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKaW5kZXggMWFkNWJlOS4uNzM1MzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC01Niw2ICs1Niw4IEBAIGNs
YXNzIE1lbW9yeU9iamVjdEluZm87CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6
IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNtYXJ0Cisv
LyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4K
ICNpZiBVU0UoQ0cpCiB0eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBQ
TEFURk9STShRVCkKQEAgLTcyLDcgKzc0LDggQEAgdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1h
Z2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fp
cm8qIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFNLSUEpCi10eXBlZGVmIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlU2tpYSogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gUGFzc05hdGl2ZUltYWdlUHRyOwogdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBOYXRp
dmVJbWFnZVNraWEqLCBXVEY6Ok1lbW9yeU9iamVjdEluZm8qKTsKICNlbGlmIE9TKFdJTkNFKQog
dHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKQEAgLTgwLDYgKzgz
LDEwIEBAIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiB0eXBl
ZGVmIHZvaWQqIE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAKKyNpZiAhVVNFKFNLSUEpCit0eXBl
ZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKKyNlbmRpZgorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwCmluZGV4IDU1ZDNlYzMuLjI0N2Y3NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1Jl
ZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUp
CiAgICAgcmV0dXJuIGltZy5yZWxlYXNlKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBuZXcgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpUaWxlZEltYWdlKG1fc2l6ZSwgbV9ieXRlcyk7CiB9CkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZy
YW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGEzNzQ4NTAu
LjllMTg4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2Vy
VG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZShpbWFnZVB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZTU3MzczMi4uMDY4MTU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVm
ZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3Jl
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IDA7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDc5NGVjNzMuLmY2MjRmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wg
Y2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFn
ZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CiAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CiAg
ICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFn
ZSkgewogICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJl
bnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlSW1hZ2VMYXllcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5k
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVCbGVuZFNraWEuY3BwCmluZGV4IDY0ZTUzNTguLjJlOWQ4MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxl
bmRTa2lhLmNwcApAQCAtNzIsOCArNzIsOCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
a2lhKCkKICAgICBSZWZQdHI8SW1hZ2U+IGZvcmVncm91bmQgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gYmFj
a2dyb3VuZCA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBmb3JlZ3JvdW5kTmF0aXZlSW1hZ2UgPSBm
b3JlZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3JlZ3JvdW5kTmF0
aXZlSW1hZ2UgPSBmb3JlZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91
bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWZvcmVncm91bmRO
YXRpdmVJbWFnZSB8fCAhYmFja2dyb3VuZE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAppbmRleCAzMjI4Y2Q4Li4y
OTE5ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBT
a0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlw
ZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRp
dmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFu
c2ZlclNraWEuY3BwCmluZGV4IGIwZjgwY2UuLjRhNDBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVy
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIEZF
Q29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwCmluZGV4IDIy
ZjFiNzMuLjFiZTQ1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNr
aWEuY3BwCkBAIC03MSw4ICs3MSw4IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3Jt
QXBwbHlTa2lhKCkKICAgICBSZWZQdHI8SW1hZ2U+IGNvbG9yID0gaW4tPmFzSW1hZ2VCdWZmZXIo
KS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGRp
c3BsID0gaW4yLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIGRpc3BsTmF0
aXZlSW1hZ2UgPSBkaXNwbC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBjb2xvck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZGlzcGxOYXRp
dmVJbWFnZSA9IGRpc3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYg
KCFjb2xvck5hdGl2ZUltYWdlIHx8ICFkaXNwbE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcAppbmRleCBkNzA4N2Q0Li4zYTBi
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgc2V0SXNBbHBoYUltYWdl
KGluLT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRp
dmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAppbmRleCBhN2Q5Zjc1Li5hM2Y0NDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29k
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xl
YXJQb2ludGVycygpCiAgICAgbV9idWZmZXIuY2xlYXIoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgUUltYWdlOjpGb3Jt
YXQgZm9ybWF0OwogICAgIGlmIChtX2hhc0FscGhhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggMGY0MDdjMS4uM2U1
Mzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCkBAIC02Miw5ICs2Miw5IEBAIEludFNpemUgU3RpbGxJbWFnZTo6c2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUobV9waXhtYXAtPndpZHRoKCksIG1fcGl4bWFw
LT5oZWlnaHQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TmF0aXZlSW1h
Z2VQdHI+KG1fcGl4bWFwKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxQYXNzTmF0aXZlSW1hZ2VQ
dHI+KG1fcGl4bWFwKTsKIH0KIAogdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCmluZGV4IDUwNWIxOTAuLjFlOWUyMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgICAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIHZpcnR1YWwgUGFz
c05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQz
RFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwCmluZGV4IDNiMWM4ZjIuLjhhYzZkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dDNEU2tpYS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wKICAgICAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaGFzQWxw
aGEgPSBmcmFtZS0+aGFzQWxwaGEoKTsKLSAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGFkb3B0UHRy
KGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0gZnJh
bWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKCFtX25hdGl2ZUltYWdlLmdldCgp
IHx8ICFtX25hdGl2ZUltYWdlLT5pc0RhdGFDb21wbGV0ZSgpIHx8ICFtX25hdGl2ZUltYWdlLT5i
aXRtYXAoKS53aWR0aCgpIHx8ICFtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU2tCaXRtYXA6OkNvbmZpZyBza2lhQ29u
ZmlnID0gbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuY29uZmlnKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAK
aW5kZXggZjYxZGVjYi4uZmFlYTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcApAQCAtMjA1LDcgKzIw
NSw3IEBAIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogUGFz
c1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU3RhcnQg
aG9ub3JpbmcgU2NhbGVCZWhhdmlvciB0byBzY2FsZSAyeCBidWZmZXJzIGRvd24gdG8gMXguCi0g
ICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUltYWdlU2tpYSgqbV9kYXRh
Lm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdT
dG9yZSA/IE5hdGl2ZUltYWdlU2tpYTo6Q29weVBpeGVscyA6IE5hdGl2ZUltYWdlU2tpYTo6RG9O
b3RDb3B5UGl4ZWxzLCBtX3Jlc29sdXRpb25TY2FsZSkpOworICAgIHJldHVybiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRl
eHQuYml0bWFwKCksIGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlID8gTmF0aXZlSW1h
Z2VTa2lhOjpDb3B5UGl4ZWxzIDogTmF0aXZlSW1hZ2VTa2lhOjpEb05vdENvcHlQaXhlbHMsIG1f
cmVzb2x1dGlvblNjYWxlKSk7CiB9CiAKIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZh
c3RDb3B5SW1hZ2VNb2RlKCkKQEAgLTI1OSwxNCArMjU5LDE0IEBAIHN0YXRpYyBOYXRpdmVJbWFn
ZVNraWE6OkNvcHlCZWhhdmlvciBkcmF3TmVlZHNDb3B5KEdyYXBoaWNzQ29udGV4dCogc3JjLCBH
cmFwaGljCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZlSW1hZ2VTa2lhKCptX2RhdGEubV9wbGF0
Zm9ybUNvbnRleHQuYml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250ZXh0LmdldCgpLCBjb250
ZXh0KSkpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5h
dGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCks
IGRyYXdOZWVkc0NvcHkobV9jb250ZXh0LmdldCgpLCBjb250ZXh0KSkpOwogICAgIGNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBOYXRpdmVJbWFnZVNraWEoKm1fZGF0YS5t
X3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKSwgZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0KCks
IGNvbnRleHQpKSk7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5iaXRt
YXAoKSwgZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0KCksIGNvbnRleHQpKSk7CiAgICAgaW1h
Z2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCBjYjkyMzky
Li4xM2NjZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NDksMTAgKzQ0OSw4IEBAIGJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uOwogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgLy8gSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9mcmFtZXwgYW5kIHBhc3NlZAot
ICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdlIG11c3QgZGVsZXRlIGl0IGhl
cmUuCi0gICAgICAgIGRlbGV0ZSBtX2ZyYW1lOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAg
ICAgbV9mcmFtZS5jbGVhcigpOworCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00NzAsNyArNDY4LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIFRS
QUNFX0VWRU5UMCgic2tpYSIsICJJbWFnZTo6ZHJhd1BhdHRlcm4iKTsKICNlbmRpZgotICAgIE5h
dGl2ZUltYWdlU2tpYSogYml0bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKQEAgLTU1OSw3ICs1
NTcsNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
CiAKIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgZ28gdG8gQml0bWFwSW1hZ2VTa2lhLmNwcAogCi1C
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSwgSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zaXplKG5hdGl2ZUltYWdlLT5iaXRtYXAo
KS53aWR0aCgpLCBuYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpCiAgICAgLCBtX2N1cnJl
bnRGcmFtZSgwKQpAQCAtNTg0LDggKzU4Miw4IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShO
YXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAg
ICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBtX2ZyYW1lcy5n
cm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKICAgICBtX2Zy
YW1lc1swXS5tX2hhc0FscGhhID0gIW5hdGl2ZUltYWdlLT5iaXRtYXAoKS5pc09wYXF1ZSgpOwor
ICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKICAgICBtX2ZyYW1lc1swXS5t
X2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKQEAgLTYw
Myw3ICs2MDEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpO
YXRpdmVJbWFnZVNraWEqIGZyYW1lID0gZnJhbWVBdEluZGV4KDApOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZVNraWE+IGZyYW1lID0gZnJhbWVBdEluZGV4KDApOwogCiAgICAgaWYgKGZyYW1lICYm
IHNpemUoKS53aWR0aCgpID09IDEgJiYgc2l6ZSgpLmhlaWdodCgpID09IDEpIHsKICAgICAgICAg
U2tBdXRvTG9ja1BpeGVscyBsb2NrKGZyYW1lLT5iaXRtYXAoKSk7CkBAIC02MjcsNyArNjI1LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICAvLyBjYXVzaW5nIGZsaWNrZXIgYW5kIHdh
c3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEq
IGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFibSkK
ICAgICAgICAgcmV0dXJuOyAvLyBJdCdzIHRvbyBlYXJseSBhbmQgd2UgZG9uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAppbmRleCAyMWViZjViLi43NTUzY2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdl
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRp
dmVJbWFnZVNraWEuY3BwCkBAIC00OCwyMCArNDgsMzQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoKQotICAgIDogbV9yZXNvbHV0aW9u
U2NhbGUoMSksCi0gICAgICBtX3Jlc2l6ZVJlcXVlc3RzKDApCisgICAgOiBtX3Jlc29sdXRpb25T
Y2FsZSgxKQorICAgICwgIG1fcmVzaXplUmVxdWVzdHMoMCkKIHsKIH0KIAotTmF0aXZlSW1hZ2VT
a2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmIG90aGVyLCBDb3B5QmVoYXZpb3Ig
Y29weUJlaGF2aW9yLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCi0gICAgOiBtX3Jlc29sdXRpb25T
Y2FsZShyZXNvbHV0aW9uU2NhbGUpLAotICAgICAgbV9yZXNpemVSZXF1ZXN0cygwKQorU2tCaXRt
YXAgTmF0aXZlSW1hZ2VTa2lhOjpkZWVwU2tCaXRtYXBDb3B5KGNvbnN0IFNrQml0bWFwJiBiaXRt
YXApCit7CisgICAgU2tCaXRtYXAgdG1wOworICAgIGlmICghYml0bWFwLmRlZXBDb3B5VG8oJnRt
cCwgYml0bWFwLmNvbmZpZygpKSkKKyAgICAgICAgYml0bWFwLmNvcHlUbygmdG1wLCBiaXRtYXAu
Y29uZmlnKCkpOworCisgICAgcmV0dXJuIHRtcDsKK30KKworTmF0aXZlSW1hZ2VTa2lhOjpOYXRp
dmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmIG90aGVyLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUp
CisgICAgOiBtX2ltYWdlKG90aGVyKQorICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlv
blNjYWxlKQorICAgICwgbV9yZXNpemVSZXF1ZXN0cygwKQoreworfQorCitOYXRpdmVJbWFnZVNr
aWE6Ok5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgU2tCaXRtYXAmIHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJ
bmZvJiBjYWNoZWRJbWFnZUluZm8sIGludCByZXNpemVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2Uo
aW1hZ2UpCisgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBt
X3Jlc2l6ZWRJbWFnZShyZXNpemVkSW1hZ2UpCisgICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNo
ZWRJbWFnZUluZm8pCisgICAgLCBtX3Jlc2l6ZVJlcXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQogewot
ICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weVBpeGVscykgewotICAgICAgICBpZiAoIW90aGVy
LmRlZXBDb3B5VG8oJm1faW1hZ2UsIG90aGVyLmNvbmZpZygpKSkKLSAgICAgICAgICAgIG90aGVy
LmNvcHlUbygmbV9pbWFnZSwgb3RoZXIuY29uZmlnKCkpOwotICAgIH0gZWxzZQotICAgICAgICBt
X2ltYWdlID0gb3RoZXI7CiB9CiAKIE5hdGl2ZUltYWdlU2tpYTo6fk5hdGl2ZUltYWdlU2tpYSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2
ZUltYWdlU2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRp
dmVJbWFnZVNraWEuaAppbmRleCA4OWUzMjZhLi45ODIzMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKQEAg
LTM1LDIwICszNSwzNCBAQAogI2luY2x1ZGUgIlNrUmVjdC5oIgogI2luY2x1ZGUgIlNrU2l6ZS5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMgdGhlICJuYXRpdmUgaW1hZ2UiIGluIG91ciBwb3J0LiBX
aGVuIFdlYktpdCB1c2VzCi0vLyAiTmF0aXZlSW1hZ2VQdHIiLCBpdCBpcyBhIHBvaW50ZXIgdG8g
dGhpcyB0eXBlLiBJdCBoYXMgYW4gU2tCaXRtYXAsIGFuZCBhbHNvCi0vLyBzdG9yZXMgYSBjYWNo
ZWQgcmVzaXplZCBpbWFnZS4KLWNsYXNzIE5hdGl2ZUltYWdlU2tpYSB7CisvLyBQYXNzTmF0aXZl
SW1hZ2VQdHIgLyBOYXRpdmVJbWFnZVB0ciwgaXQgaXMgYSBzbWFydCBwb2ludGVyIHRvIHRoaXMg
dHlwZS4KKy8vIEl0IGhhcyBhbiBTa0JpdG1hcCwgYW5kIGFsc28gc3RvcmVzIGEgY2FjaGVkIHJl
c2l6ZWQgaW1hZ2UuCitjbGFzcyBOYXRpdmVJbWFnZVNraWEgOiBwdWJsaWMgUmVmQ291bnRlZDxO
YXRpdmVJbWFnZVNraWE+IHsKIHB1YmxpYzoKICAgICBlbnVtIENvcHlCZWhhdmlvciB7IENvcHlQ
aXhlbHMsIERvTm90Q29weVBpeGVscyB9OwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKCk7Ci0gICAg
fk5hdGl2ZUltYWdlU2tpYSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1h
Z2VTa2lhKCkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gY3JlYXRlKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIENvcHlCZWhhdmlvciBjb3B5QmVoYXZp
b3IsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYShjb3B5QmVoYXZpb3IgPT0gQ29weVBpeGVscyA/IGRl
ZXBTa0JpdG1hcENvcHkoYml0bWFwKSA6IGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSk7CisgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiwgQ29weUJlaGF2aW9yLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxKTsKKyAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gY2xvbmUoQ29weUJlaGF2aW9yIGNvcHlCZWhhdmlvcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKGNvcHlCZWhhdmlvciA9PSBDb3B5
UGl4ZWxzID8gZGVlcFNrQml0bWFwQ29weShtX2ltYWdlKSA6IG1faW1hZ2UsIG1fcmVzb2x1dGlv
blNjYWxlLCBtX3Jlc2l6ZWRJbWFnZSwgbV9jYWNoZWRJbWFnZUluZm8sIG1fcmVzaXplUmVxdWVz
dHMpKTsKKyAgICB9CisKKyAgICB+TmF0aXZlSW1hZ2VTa2lhKCk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgaW1hZ2UgZGF0YS4gVGhpcyBpbmNsdWRlcyB0aGUgY2Fj
aGVkCiAgICAgLy8gcmVzaXplZCB2ZXJzaW9uIGlmIHRoZXJlIGlzIG9uZS4KQEAgLTg3LDYgKzEw
MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2VTa2lhKCk7CisKKyAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBhc3NlZC1pbiBT
a0JpdG1hcCAoaWUuLCBpdAorICAgIC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBh
bmQgYnVtcHMgdGhlIHJlZmNvdW50KS4gVXNlIG9ubHkgd2hlbgorICAgIC8vIHlvdSB3YW50IHNo
YXJpbmcgc2VtYW50aWNzLgorICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0JpdG1hcCYsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSk7CisKKyAgICBzdGF0aWMgU2tCaXRtYXAgZGVlcFNrQml0bWFw
Q29weShjb25zdCBTa0JpdG1hcCYpOworCiAgICAgLy8gQ2FjaGVkSW1hZ2VJbmZvIGlzIHVzZWQg
dG8gdW5pcXVlbHkgaWRlbnRpZnkgY2FjaGVkIG9yIHJlcXVlc3RlZCBpbWFnZQogICAgIC8vIHJl
c2l6ZXMuCiAgICAgLy8gSW1hZ2UgcmVzaXplIGlzIGlkZW50aWZpZWQgYnkgdGhlIHNjYWxlZCBp
bWFnZSBzaXplIGFuZCBzY2FsZWQgaW1hZ2Ugc3Vic2V0LgpAQCAtMTAxLDYgKzEyNCw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFNrSVJlY3QgcmVjdEluU3Vic2V0KGNvbnN0IFNrSVJlY3QmIG90aGVy
U2NhbGVkSW1hZ2VSZWN0KTsKICAgICB9OwogCisgICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNr
Qml0bWFwJiBpbWFnZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBTa0JpdG1hcCYgcmVz
aXplZEltYWdlLCBjb25zdCBDYWNoZWRJbWFnZUluZm8mLCBpbnQgcmVzaXplUmVxdWVzdHMpOwor
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByZXNpemUgb3BlcmF0aW9uIHNob3Vs
ZCBlaXRoZXIgcmVzaXplIHRoZSB3aG9sZQogICAgIC8vIGltYWdlIGFuZCBjYWNoZSBpdCwgb3Ig
cmVzaXplIGp1c3QgdGhlIHBhcnQgaXQgbmVlZHMgYW5kIHRocm93IHRoZSByZXN1bHQKICAgICAv
LyBhd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QYXR0ZXJuU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L1BhdHRlcm5Ta2lhLmNwcAppbmRleCAyYWU0ZGQ2Li5mYTBhYTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcApAQCAt
NzEsNyArNzEsNyBAQCBQbGF0Zm9ybVBhdHRlcm5QdHIgUGF0dGVybjo6cGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZgogICAgIC8vIGFuZCBleHBhbmRl
ZCBzY2FsZSBhbmQgc2tldyBpbjoKICAgICAvLyBMYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjEv
cHNlcnZlcnMtZ3JhZC0wNi1iLnN2ZwogCi0gICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhKiBpbWFn
ZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV90aWxlSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGJpdG1hcCwgcmV0dXJuIGEg
dHJhbnNwYXJlbnQgc2hhZGVyLgogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIG1fcGF0dGVybiA9
IG5ldyBTa0NvbG9yU2hhZGVyKFNrQ29sb3JTZXRBUkdCKDAsIDAsIDAsIDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAK
aW5kZXggYTI4ZDE0OS4uM2QxY2EyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05h
dGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05h
dGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gU2hhcmVkQml0bWFwOjpjcmVhdGUobV9i
YWNraW5nU3RvcmUsIG1fc2l6ZSwgaGFzQWxwaGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDI5MTE2
N2IuLjU0ODY2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhl
IHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBU
aGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAg
ICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgYXNOZXdO
YXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAg
ICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbmFsRnJhbWVSZWN0OyB9CkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKICAg
ICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1h
cCgpLmdldEFkZHIzMih4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC0+Yml0bWFw
KCkuZ2V0QWRkcjMyKHgsIHkpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX2J5dGVzICsg
KHkgKiB3aWR0aCgpKSArIHg7CiAjZW5kaWYKQEAgLTE1MCwxMiArMTUwLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgdm9pZCBzZXRTa0Jp
dG1hcChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2Jp
dG1hcCA9IE5hdGl2ZUltYWdlU2tpYShiaXRtYXAsIE5hdGl2ZUltYWdlU2tpYTo6RG9Ob3RDb3B5
UGl4ZWxzKTsKKyAgICAgICAgICAgIG1fYml0bWFwID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUo
Yml0bWFwLCBOYXRpdmVJbWFnZVNraWE6OkRvTm90Q29weVBpeGVscyk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjb25zdCBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCk7CisgICAgICAgICAgICByZXR1cm4g
bV9iaXRtYXAtPmJpdG1hcCgpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRNZW1vcnlB
bGxvY2F0b3IoU2tCaXRtYXA6OkFsbG9jYXRvciogYWxsb2NhdG9yKQpAQCAtMjAyLDcgKzIwMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHdpZHRoKCkgY29uc3QKICAgICAg
ICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgp
LndpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpLndpZHRoKCk7
CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOwogI2VuZGlmCkBAIC0y
MTEsMTQgKzIxMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBoZWlnaHQo
KSBjb25zdAogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAgICByZXR1cm4gbV9i
aXRtYXAuYml0bWFwKCkuaGVpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJp
dG1hcCgpLmhlaWdodCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBtX3NpemUuaGVpZ2h0
KCk7CiAjZW5kaWYKICAgICAgICAgfQogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE5hdGl2ZUlt
YWdlU2tpYSBtX2JpdG1hcDsKKyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9iaXRt
YXA7CiAgICAgICAgIFNrQml0bWFwOjpBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogI2Vsc2UKICAg
ICAgICAgVmVjdG9yPFBpeGVsRGF0YT4gbV9iYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZURlY29kZXJDYWlyby5jcHAKaW5kZXggNDE3NjI4ZC4uNWNiZGM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAogewogICAgIHJldHVybiBuZXcgTmF0aXZlSW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJm
YWNlX2NyZWF0ZV9mb3JfZGF0YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBj
aGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3Bl
blZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9J
bWFnZURlY29kZXJPcGVuVkcuY3BwCmluZGV4IGQyOTMxN2EuLjgzM2U1MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29k
ZXJPcGVuVkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IFZHSW1hZ2VGb3JtYXQgYnVmZmVyRm9y
bWF0ID0gVkdfc0FSR0JfODg4OF9QUkU7CiAgICAgLy8gU2F2ZSBtZW1vcnkgYnkgdXNpbmcgMTYt
Yml0IGltYWdlcyBmb3IgZnVsbHkgb3BhcXVlIGltYWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rl
clNraWEuY3BwCmluZGV4IDYyNDNiODYuLjQ0ZGE2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29k
ZXJTa2lhLmNwcApAQCAtMjcsMTIgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQotICAgIDogbV9hbGxvY2F0b3IoMCkK
KyAgICA6IG1fYml0bWFwKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCkpCisgICAgLCBtX2FsbG9j
YXRvcigwKQogICAgICwgbV9oYXNBbHBoYShmYWxzZSkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1w
dHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCkBAIC00NiwxMCArNDgsMTAgQEAgSW1hZ2VGcmFtZSYg
SW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgIGlmICh0
aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgbV9iaXRtYXAgPSBv
dGhlci5tX2JpdG1hcDsKKyAgICBtX2JpdG1hcCA9IG90aGVyLm1fYml0bWFwLT5jbG9uZShOYXRp
dmVJbWFnZVNraWE6OkRvTm90Q29weVBpeGVscyk7CiAgICAgLy8gS2VlcCB0aGUgcGl4ZWxzIGxv
Y2tlZCBzaW5jZSB3ZSB3aWxsIGJlIHdyaXRpbmcgZGlyZWN0bHkgaW50byB0aGUKICAgICAvLyBi
aXRtYXAgdGhyb3VnaG91dCB0aGlzIG9iamVjdCdzIGxpZmV0aW1lLgotICAgIG1fYml0bWFwLmJp
dG1hcCgpLmxvY2tQaXhlbHMoKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkubG9ja1BpeGVscygp
OwogICAgIHNldE1lbW9yeUFsbG9jYXRvcihvdGhlci5hbGxvY2F0b3IoKSk7CiAgICAgc2V0T3Jp
Z2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJlY3QoKSk7CiAgICAgc2V0U3RhdHVz
KG90aGVyLnN0YXR1cygpKTsKQEAgLTY0LDcgKzY2LDcgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFt
ZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiB2b2lkIEltYWdlRnJhbWU6
OmNsZWFyUGl4ZWxEYXRhKCkKIHsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAg
IG1fYml0bWFwLT5iaXRtYXAoKS5yZXNldCgpOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsK
ICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1l
QnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEs
IGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAtNzQsNyArNzYsNyBAQCB2b2lkIEltYWdlRnJh
bWU6OmNsZWFyUGl4ZWxEYXRhKCkKIAogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0
YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkuZXJhc2VBUkdCKDAsIDAsIDAsIDApOworICAg
IG1fYml0bWFwLT5iaXRtYXAoKS5lcmFzZUFSR0IoMCwgMCwgMCwgMCk7CiAgICAgbV9oYXNBbHBo
YSA9IHRydWU7CiB9CiAKQEAgLTg0LDkgKzg2LDkgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0
bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBtX2hhc0FscGhhID0gb3RoZXIubV9oYXNBbHBoYTsKLSAgICBtX2JpdG1hcC5iaXRtYXAo
KS5yZXNldCgpOwotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXJCaXRtYXAgPSBvdGhl
ci5tX2JpdG1hcDsKLSAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2Jp
dG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkpOworICAgIG1fYml0
bWFwLT5iaXRtYXAoKS5yZXNldCgpOworICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSogb3RoZXJC
aXRtYXAgPSBvdGhlci5tX2JpdG1hcC5nZXQoKTsKKyAgICByZXR1cm4gb3RoZXJCaXRtYXAtPmJp
dG1hcCgpLmNvcHlUbygmbV9iaXRtYXAtPmJpdG1hcCgpLCBvdGhlckJpdG1hcC0+Yml0bWFwKCku
Y29uZmlnKCkpOwogfQogCiBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBp
bnQgbmV3SGVpZ2h0KQpAQCAtOTQsMTcgKzk2LDE3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6
ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VS
VCghd2lkdGgoKSAmJiAhaGVpZ2h0KCkpOwogCi0gICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0Q29u
ZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0g
ICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscyhtX2FsbG9jYXRvciwgMCkpCisg
ICAgbV9iaXRtYXAtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIGlmICghbV9iaXRtYXAtPmJpdG1hcCgpLmFs
bG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
emVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5l
dyBOYXRpdmVJbWFnZVNraWEobV9iaXRtYXApOworICAgIHJldHVybiBtX2JpdG1hcC0+Y2xvbmUo
TmF0aXZlSW1hZ2VTa2lhOjpEb05vdENvcHlQaXhlbHMpOwogfQogCiBib29sIEltYWdlRnJhbWU6
Omhhc0FscGhhKCkgY29uc3QKQEAgLTEyMiw3ICsxMjQsNyBAQCB2b2lkIEltYWdlRnJhbWU6OnNl
dEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgYm9vbCBpc09wYXF1ZSA9ICFtX2hhc0FscGhhOwog
ICAgIGlmIChtX3N0YXR1cyAhPSBGcmFtZUNvbXBsZXRlKQogICAgICAgICBpc09wYXF1ZSA9IGZh
bHNlOwotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKGlzT3BhcXVlKTsKKyAgICBt
X2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoaXNPcGFxdWUpOwogfQogCiB2b2lkIEltYWdl
RnJhbWU6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkK
QEAgLTEzNSw4ICsxMzcsOCBAQCB2b2lkIEltYWdlRnJhbWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1
cyBzdGF0dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBzdGF0dXM7CiAgICAgaWYgKG1fc3RhdHVzID09
IEZyYW1lQ29tcGxldGUpIHsKLSAgICAgICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0SXNPcGFxdWUo
IW1faGFzQWxwaGEpOwotICAgICAgICBtX2JpdG1hcC5zZXREYXRhQ29tcGxldGUoKTsgIC8vIFRl
bGwgdGhlIGJpdG1hcCBpdCdzIGRvbmUuCisgICAgICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJ
c09wYXF1ZSghbV9oYXNBbHBoYSk7CisgICAgICAgIG1fYml0bWFwLT5zZXREYXRhQ29tcGxldGUo
KTsgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVj
b2Rlcld4LmNwcAppbmRleCAwZTA0NzllLi45ZWViNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3gu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgd3hCaXRt
YXAqIGJtcCA9IG5ldyB3eEJpdG1hcCh3aWR0aCgpLCBoZWlnaHQoKSwgMzIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAyOTZjMzRkLi44NjM1YTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE0MSw2ICsxNDEs
MjUgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2Vy
dmVyKTsKIH0KIAorI2lmIFVTRShTS0lBKQorLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0
aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyB0
byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KK1Bhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxs
b2NhdGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4
dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTog
V2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgorICAgIHJldHVybiBidWZm
ZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKK30KKyNlbmRpZgorCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXpl
LCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAppbmRleCBmMDlhMmIxLi41ZGQwZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAorI2lm
IFVTRShTS0lBKQorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9y
Q29udGFpbmVyOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
ZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQotCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcAppbmRleCBkMDc2ZmVhLi5lOWUyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBA
IHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250
YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAK
K1Bhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQoreworICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaAppbmRleCBiMzIyOGU1Li5hMmYxNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjIsNiArNjIsOCBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2Vy
dmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAg
ICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
Y29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSkKICAgICAgICAgOiBtX2ltYWdlKGltYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MDViNGNhLi45OWJhNmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTA0LTAzICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAorICAgICAgICBSZWdyZXNzaW9uKHIx
NDI3NjUpIEJyb2tlIEN1c3RvbSBTVkcgY3Vyc29ycyBhbmQgU1ZHIGNhbnZhcyBkcmF3aW5nIGZv
ciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIGNvZGUgbm93IHRoYXQgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgYW5kCisgICAgICAgIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSByZXR1cm4gYSBz
bWFydCBwb2ludGVyIGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgICog
c3JjL1dlYkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlRGVjb2Rl
cjo6Z2V0RnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmZyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2U6OmZyYW1lc0Zyb21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6Om9wZXJh
dG9yPSk6CisgICAgICAgICogdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFRlc3RJbWFnZSk6CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRlc3RJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFRl
c3RJbWFnZSk6CisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKKzIwMTMtMDQtMDMgIENocmlzdG9waGUgRHVtZXog
IDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCiAgICAgICAgIFtDaHJvbWl1bV0gQmFkIGNh
c3QgZnJvbSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSB0byBCaXRtYXBJbWFnZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDkyCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCmluZGV4IDEwNGFi
MTMuLjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkltYWdlIFdlYkltYWdlRGVjb2Rlcjo6
Z2V0RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNvbnN0CiAgICAgSW1hZ2VGcmFtZSogY29u
c3QgZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAg
ICAgaWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Ci0gICAgT3du
UHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZUJ1ZmZlci0+YXNOZXdO
YXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1l
QnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgcmV0dXJuIFdlYkltYWdlKGltYWdlLT5i
aXRtYXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEu
Y3BwCmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6
ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUp
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLSAgICBPd25Q
dHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUlt
YWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3
TmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2Uo
KTsKIApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3RvcjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmZy
YW1lc0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEpCiAgICAgICAgIGlmICghZnJhbWUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOwotICAgICAgICBpZiAo
aW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBsZXRlKCkpCisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICAg
ICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgpKQogICAgICAgICAgICAgZnJh
bWVzLmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpKTsKICAgICB9CiAKQEAgLTE1Nyw4
ICsxNTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29uc3QgUGFzc1JlZlB0cjxJbWFnZT4mIGlt
YWdlKQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPElt
YWdlPiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcDsKLSAgICBpZiAoaW1hZ2UuZ2V0
KCkgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAoaW1hZ2UgJiYgKHAgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAgIGFzc2lnbihwLT5iaXRtYXAoKSk7
CiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCmluZGV4IDdmMTkw
MGIuLjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcm90
ZWN0ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0
dXJlKQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6
eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX2xhenlEZWNvZGVyLT5mcmFtZUJ1
ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1h
Z2UtPmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCku
aGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwpA
QCAtMTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJ
bnRvU2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2Nh
bGVkSW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShh
ZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZl
SW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVj
b2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgU2tC
aXRtYXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6ZWRCaXRtYXAoU2tJU2l6ZTo6TWFrZSg1
MCwgNTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHNjYWxl
ZEJpdG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlzSW1tdXRh
YmxlKCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRl
c3QsIGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlE
ZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZm
ZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgRVhQRUNUX0VRKDEsIGltYWdl
LT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLmhl
aWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCmluZGV4IGE5
NDY1ZTYuLjZiZjE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RHJhZ0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFn
SW1hZ2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2Uo
MCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2Ug
PSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdl
ID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0
bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBA
IC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAgIH0K
IAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsK
KyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBs
ZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTk3LDcgKzk3
LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRyPE5hdGl2
ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1f
bmF0aXZlSW1hZ2U7CiB9OwogCiBURVNUKERyYWdJbWFnZVRlc3QsIE51bGxIYW5kbGluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IDRkYjQyOGMuLjY0OGRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1hZ2UoMCkKICAgICAgICAgLCBtX3NpemUo
c2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihuZXcgTmF0aXZl
SW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpj
cmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBAIC03NywxMiArNzcsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAgIH0KIAotICAgIHZpcnR1YWwgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7
CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0
aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2
aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAg
ICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZl
SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9uYXRpdmVJbWFnZTsKIH07CiAK
IFRFU1QoSW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVlSW1hZ2VzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNw
cAppbmRleCAzNzQzMjhiLi44ZTUxYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtNTQ5LDE0ICs1
NDksMTQgQEAgVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVJbWFnZVRl
c3QpCiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBkcmF3Qml0bWFwLmhlaWdodCgpOyArK3kpCiAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZHJhd0JpdG1hcC53aWR0aCgpOyArK3gpCiAgICAg
ICAgICAgICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOwotICAgIFJl
ZlB0cjxCaXRtYXBJbWFnZT4gb3BhcXVlSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBO
YXRpdmVJbWFnZVNraWEoZHJhd0JpdG1hcCwgTmF0aXZlSW1hZ2VTa2lhOjpDb3B5UGl4ZWxzKSk7
CisgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBvcGFxdWVJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoZHJhd0JpdG1hcCwgTmF0aXZlSW1hZ2VTa2lhOjpD
b3B5UGl4ZWxzKSk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlSW1hZ2UtPmN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpKTsKIAogICAgIGRyYXdCaXRtYXAuc2V0SXNPcGFxdWUoZmFsc2UpOwog
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZHJhd0JpdG1hcC5oZWlnaHQoKTsgKyt5KQogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IGRyYXdCaXRtYXAud2lkdGgoKTsgKyt4KQogICAgICAgICAg
ICAgKmRyYXdCaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID0gMHgwMDAwMDAwMDsKLSAgICBSZWZQdHI8
Qml0bWFwSW1hZ2U+IGFscGhhSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBOYXRpdmVJ
bWFnZVNraWEoZHJhd0JpdG1hcCwgTmF0aXZlSW1hZ2VTa2lhOjpDb3B5UGl4ZWxzKSk7CisgICAg
UmVmUHRyPEJpdG1hcEltYWdlPiBhbHBoYUltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRp
dmVJbWFnZVNraWE6OmNyZWF0ZShkcmF3Qml0bWFwLCBOYXRpdmVJbWFnZVNraWE6OkNvcHlQaXhl
bHMpKTsKICAgICBFWFBFQ1RfRkFMU0UoYWxwaGFJbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwg
OTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwo=
</data>
<flag name="review"
          id="218479"
          type_id="1"
          status="-"
          setter="senorblanco"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196448</attachid>
            <date>2013-04-04 00:24:31 -0700</date>
            <delta_ts>2013-04-04 03:39:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>83521</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzJjMDdlLi44OTU2YTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDQt
MDMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBkcmF3aW5n
IGNhbnZhcyBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMgd29ya3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0
dGVybi1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMDIgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBnZXRfYnlfcG5hbWUgY2FuIGJlY29tZSBj
b25mdXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIG9iamVjdHMgd2l0aCBzdGF0aWMgcHJvcGVydGll
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3ZnL2Nh
bnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmctZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI4MTFjNTlkYzVjZWYxZDMxYTZiZDY2ZGY5ZDVjNjFlMWE3ZjRhMTAK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0MjU0CnpjbWVIdVhJUnR1d3I8bz5XPFg/U1hkfjRi
TUd5bz0+RD9JelFCYVQ/MVZXR15OUjwqPWZHe2REUVdkMnJPK2xwaAp6UDlPbXN6PF97QT11TT5l
bnVIcWVpYUxBdC1nRVo3X2sxfF9vY2xhR0FPMiRhbXRXUnp0I2BmZXlUYmplKzhWNlAKekpqQDZM
Zzd3bkhVLVNAJjFJR31Fe2w7SkpoaiV6UklFQ1MjUXklS1o5IyhjWFJ1MWtNQ3hvb3I4SmltbGF6
Q0R4CnptOXwjNkF1QTxxYkxSUkQ4KENAVEFKNTIyLT5eUGcqWmsjTzFtWU90KGwwKzVjcWMzajts
ZDBrSEVRJSVrc3B8RQp6aGgkNW4xUjVNJVZaeFcjMSh8ZmU9O3JNLWglJmRER2NeNG1JUS0mJV9s
OCgqcmJLIThPJXdMNT1qdyZDPmhYPCYKeigkUVRVQkNLNXZNIUFLfT9AWFMoPWUpWUk9PTs7VE8o
OXwlRXBufTk/TVp2djZSQmRRckoqTWVvNXRBTzsjOCh+CnowfV5UNVo/SCo5UWM2LUg1bzJFPjAm
ZzhjO3Rffkk5b35IYGgre3dnUn4hbWJfQm1YMlpIVzwmbSVqT35tVz1kNAp6SDwoPGtAanM+YGUq
VkpJU2FhVlExYjMleDRiS34lcW5xWldxKT13dCs0cHNLeW9QO2p0cilNZHktbF5mXnIpQSEKej5X
eHFKRkJKPCg8fF57ZkR3Xj1GWD4xZkg/Pll1Sjk0T1owNyhVdV5iR0cpXjFMY0VtVDUhJHpeUklI
UTY/ZjtPCnpNfXFVVjRHWG8oK29OTk5fQ1kzditjVn45a3VtYnROezZ0LTQ8UllvI21jRWlJO3hr
LSNeaV5JeElMOEQ1VHw7Xwp6JkdmXz1SfTE1NDhmSSVJSi16SExuUVkqX2VKO3U1OT96LU5wS0JD
REVqdkJQVFhZKGM9clF2U2g0KW1Va29BKnkKej1XVmw1WlJjSmF5TmxpfDgmNU0jS2FiTEl1cDBl
eHMlbyl8VSMreCZhQjlrOWsrOGoocldMejVncn5oP1FgO2Z3CnoxZX4+TGV0Wm5ZV0hBNFpLZHx8
SFp0dCF+eyElbUBUUHhsXz9LNzJGPyRERkJoZkNqRXopck8jUDk9SGAofDVPLQp6PUV1ZEJ2Vzsw
WCVofD49Wjg5Rjc2KHdnRVhWbUhFSWpmOHtoQVo4QWV+eSNvSk1XX28rQ3JAeylnYE9KUm94UXgK
emhjUDl4VDtee295QU9Gc3p2ZWdCKjU5VHJ3VTRON2p6MUVjc1ohJUc2Kn1+Nl57U1lzK1J6Kn10
KyYhMztQI3k7CnpxYXMhd3ZVXz5HPkhkJjBAMV4wSTt9Xm9kPl9RZkQ+QTVXUj0hPkJyb2I/U0d1
YnUwPE10PVFUbjckSDtPVGZgTAp6NFJkVD9LbG5iRlA0TExEVzJ3YWJWSmFgeF4wbCtMOUolazJJ
UiZlS290MDd+YHx7JjU5SFhidDVOcXNiZ1NnRSUKem1TMz9FPjZDbjA/d3M1RD16Y05WPXhKaUop
KTVRTDV+VzczN1pWcDg9JSF+cD5hNUcqRys1IWZ3TFd1UEJWdVBsCno2OEJgViFleFhvbXJ0YmtU
MUQwQCpSI2t1X0l9OzhRZUBMfFFZVUdyXzVmUmdUbDE7cHlgM3EyK1JYTDMrWHE9JAp6UyRvWGZ1
akYtLTJfTkxtdEchK0leKmIqS0N6amtBdHNoTDwpUj1JWWl0d0YkVmhiMWg0WjFkfEt4aWA0MT1W
I20KekdAMmZ0KCR8KEJ6MDBeKTwkI3RebDhONWd7VnB8PlpmP1NJKDhKPnpzdkdhYCpwJFZYR2A+
c0lZRkMmX3UqTlIqCnptdlc+MVJ0bTFhJUIhNHdkV1ZURU1rPm1jdWVgaCplWEgmdSNMPjlhektk
MEVAV0Mwb05ZJDxCQyQ+b245QEIzTgp6dCh4Y2B4UVZ9UU9VRllVPj9tVHgjdjgrVkFONCFxN3N7
LSQ1WXtHc3VSKkl3NzA9RXFhemJrVDx1MiVlOSo4dHkKekVKNyhsamxTe248OyEzSi07OHAxNTZJ
X310cFU0cFhkVjlXTDktVkVOeFBqPG9rKHZzQGlsd05nakFEPzZNRWFOCnpGOyV2cyQ0O1hPZSQ5
X2h4bTIkLWt+OCg7VWk5RERiKiMmY2pMcXArWD5zYyYtJk1gPyV2dzZWNWdncyYlcWg1TQp6eG5S
djwpWWU+Sk9eU05hRFg/Ymh4VzNBLT5nUFJGZ2BvfCl4OTB+P3ZnP3l5NGk5YVdjfTc9OWE+Ukc7
XnFuVEkKeiR+eShrN3VydUdCV0s7N3M8P0w1Xnc4dmtxU3o5SHhYKEEqVW5MTmpheUhrZG1VO2BW
SGRpT0VUKTlGREZDUGltCno5KmF+WDtQJlY/RWlvdzkyMk5NTFdXUUNDRXtEcVlkfnhMZzdUOFIz
aEhrdjlsU3peRkNIaGMpS3xUYGdQaWFCWgp6U0llOVI9Knopc2U3S3p6JD9EfndgSV9MUVdgMFVM
aiRYV2NxfXB3d1M8LSgtJVowZDBqbz8/QlkpZHFDe0tuX1EKemVQUVorVS05KTxfcH5HYCQ3ai0k
QzVsKGNRSF4wb0FDWmF2K2Y9QWpTeXxiYkpgPysrbW1Fayh4WHJ6PDdvQihlCnpwLUJNaU5QNmY4
YWR4aHBoYEFDaz4lVXliKVl7cmdUNCpATCRXaFpXTStOV1lfbzAjbWRDVDhfdEkjUiMlZFVIYQp6
Tm1QdGxzLVg/WG93MklJO34pOEpEPW4xZDw+a3BvbHNnYWtfVE5uUi14dio2c2lKcDgyNiZBNCgt
c0VHVHs9P0sKelpJZ1UlMnVfT1p0JX5zZHY2WEh3QzVnMXZkfV9UeUdjczJ6ckM9bkFuUmMxfnVE
LVR7UClKRzszLUBBdz5EKXMzCnoycVRxeGhsaTZvT3NHTXp7VnRlYjNIJnxaWXJPOGM2WnNaRnlx
T0QrUHY/dmBLal48JSpmSUQwZUdncEBSc20pMgp6bEBBUm4wVmVZSXttdD0zT1VFLT84eWg1aHFO
MUJfaWRqMjlWe1JBMkQ2fVMzJW5yfEM2TWlOSXd+PDRpPz0qKWQKej4wVlB4SkQ2aVZfVilSQyRh
QyRvTV94NVRfdCpwbChyWmV0UnBfdXlDMURycWdJTHlaPXtnR3psVyg1RG1Tfm83CnppPD4tRmpe
XmdSQ2cjcDdXIXEqKDREY19pYWk0MGw0ODc9I2c+PnFDY30wd3w1MzNzUTtrSzB2UU1xWGBnOzQ4
Kgp6MyRLRk5iZHJrdUBMbiNuRW5QdiFlYTZEJkNkKGxDJDFGcCZvdzBsTFVCSnteVDNUOEw8M3Ij
MkR9YER6UDNxeysKemp6ajtPPmQrN2pBS05KSEczUy1HeVNtRUt4PVMwdV5gTntzSnlpbUJIdSNs
MSpEREg8PyZMOVJZfWZeNzJ8YyFVCnpgYzFST14kRDZleSg/K0FAaSUrYXc/VnJ4MkhzcW1jTTVG
VmxYZ19seExyemR5USklWj17JD5NPjQ7X2VrSVNAfAp6VFBSKzRycGVGbylpPFV4OyVqRVQmYiRF
bTRZNVU8eGk7TVdpcnNmNzxKUHleKXQpdlo4cUg1UyU/JDw4YjAxYDgKejh4PHl3PjlIZSt1Pk8o
eUJBYWlZX0AxJDViR2M/fig1PkJZej0lI2cpNU5GMCtEckNkYj9QZ2M7MnFnJHtRVypWCnorSUo9
YGpCdDtZdyt4bktqaW9JUFJvKkQoZWgzZ0R5Qz9wdTVjazZhT2g9QHByNXw3TyQ9NExeR2J1ZGxS
KnN1ZQp6OHJkOVchJlNmKT5CI3wjNnFUQGA7fGpqKCh9MVpRbykxayVkMG5je187ME9PeD0pP05l
SzQpQzZ8I05rcFVKXlgKelYoZXFIU2JvXnAjeXd1PTNRRClCQnluZHxLMD5uTXtxMGhSOTxETjM+
KD53SmRBQnxMZW93bl9lMCFPazlGc3VVCnpOIT5FQFdiM0xyIU1yVj14cVEwJD12YFFsSFFHZHxD
Jk14byQ/YEU/RSFCNWtsPDh8PDdlZH5QU303a3RmNzh9Pgp6M1NoSEhNP0JBQnBfdmYqU1NyMEhS
flp2QCtTQiNNbEd6dy1PSk1IYDNYOD9aI0dKQ093WkQwakdfKX4/LWN6Sk4KelhxWipAY0drdzRC
SElffCU4OSM5TU1GYkZ7KFV5RjZQfllnZVJWa3xfRXYyOW5xYkY9I1BYfTc5R0NoXyNtZGhZCno+
WUxYMVZpdXoqUVBILUtBRGlHajlVN1duNC1zeShLMFBYUjE0NEtDc3IxYzs1WThhKzZSUjMtPihk
PTF7Wjd9cQp6ck5OKih2YVRPfkFMbmpARCZAdyUtfTIrP2lgNldBSTlUcDchZX1WMlZ+eUBAM0pn
dkdjWGB0c0V0YW02b2FGbDwKekpVbCUzMj4tMEJSWCFBUzw5eF5UYEMzczB8NGp8YmcxektSbGh8
SlpoKGVyNj5XIzw3MXA/KXEyand4ZDxnamtkCnpKbCghak5ReklMR3NjSk1sMmR2QHk9TEN3WHI+
Jlg5Vm93KmhRNCR6V1ZJKEpLSnN6I0VsU3hjblh7PDM7WXAycQp6X3tiYn5NLUg9KXQ2aSg7SHZT
c0R4Nzh5T1Z2YiFYZyVUMiRiTTdrd3c4JTlyWiooMig+SEB4bFVuMX19dDxWVXgKejhWMHlRRChS
P2hUMVJ5UTUpRnhqdG5PS3QrKTdTNXNOVjZSQXIham90I19BJVpQcUY4dj9MUktDWkZJb1RoTUBM
CnpgOEN4Mzl5Q3J4ITRDcX01LVR9VVhyLX41PjBzM3E7U2FuZU1aXzF0Rk4jWnxYOG0wKEk9fX4+
UChJe28lQXMhNgp6NyZmQ0BgYGI2aXh4YElNQWN0OWJXejlTfilQWDJ8Z24rMVcpZXt1cjkpMF8k
bTcoQGdRZjJqOG8wMlBeUExpXk0KekxaK299bV5FTE0rPmwzU3RLM01uKD9ENkdsR21gYFQ1RHg/
YG1NSmc8VykhU3ZkNWdoUiltQEJfRjA9YDsyViRfCnp8RzNzd0NNbiQwa1NvcjdQMCU8blQzUmlV
eFNjV2loXmFTRXE/YHZVNHpoNSlOVExIeTtHdG5hdG55S0tTPXZgOwp6WU0hUChLT2Fva196KzVa
XmUhbSVWU0ZoMFJXWilRWjdiQHpJaSUycXpEI3pjeWhpRCpPQn5lcj89aHtVQDl2NigKekkwSHEx
eyUkd2Rvcn5VVk1sdVYmVXo1eldiVER3dlNRRDx7eCtqcyEwT1UwZGNgeEU/T3JuYUM0SHVWZi1y
PiFiCno4X29mdDtwU1AzaTtGSiliRWRGMUw0NiVAKy1KbmxpKGhiXnA9TDRLPktqJnJRNko2JDEq
O0VQKiEoM3w9MDNLPgp6MjhueD8qKnxTK2V2dmMxKkVRQkNGZCpvXi1VMG5CN14zUmJVJFI0ZHQx
dVFPPDtLZGpzTlh3d0pXfjBySnZuM2kKemdJRzZgdVplfjBHKkJGTk0oZik8TFYkcFVlfFA0Q2Qt
QXJ+RCF2fGc0Vkk0ck1ZUytyKyVCTnhJVW05KSl9fWFACnpHcVN0cnJOWm5EQWJqSVorIUBFLWY9
dkROJC1OVG1pQTxxckhLVTJnNEBjQERzUDIzRzNVMUBUYmB3OzkxaT5DYAp6JEIqcFgwQ3JDNEtf
fkEkXiUjQkQ7SHIkSD9+SnwqTSNJaTRjYFlVWUNrQyQ1NSFgbmdfaFpZR0xIVVNlPyteRnkKei1N
YV5TK343Sm1KZ2ZAT2c0Iz1PUX1ePHNPfmomeS1AZzZ2PEw2NX5nXlMzO0ZJS1ZaRDZlY3pDQVdW
VUU8bFRACno9TTl4ZlF0PytnYSQ1RlNMbXFXVVZZYjgzUH52YGxmYkU7T2hiR3JZem5rMD4hRiZ4
RmB1PGxZWGs3dW9fPVIhTAp6a1U0ZWFScDBlIXdWQmMlSiZ3dzc7N2RZUzROQUtrITw1dGA+bTw5
aU4lYkd6TTFQTTdraCZuNVVSc0kpZXdLUDYKenlsUTgpMXo0aDVkZlVhKHA8RVhTPG1rY2ZeTnNh
ZyFPZGVPb0pDRHg8SF5Yekhkb2U+SXJzRGpCV3xQcHJ0Xzh9CnpXanY0YkAyVUZ5d3p8OCFnY3xg
OFYtdCh3UXR5Q3BqNmdDMmdxKDJNNis+VX5VbkpgYXk8VnBUYCZPVEBlPSo1KAp6Pk9qT0hlKiZJ
JHhxcSVEWTNeTSMoITNJWVhQbztQcStDWDc+S0xIKXlkZXZ6I2dJZmlUK3AxSnVTT21kPktHZDAK
elNKeiQ1M0U9RCtkOzMjaiowe01edHdhN3UpJEJXfGNJQ0NzV1YlUHxReUJtJDlzcjtvMDx+MGQ9
UksyZmxERmxpCnpfJjduY15XY3htcVI5bU0peVVYaSFwVWFHWkU4RTdNZDFlIWA4RTV3NWElcStm
QXw5Tjw+bEpfZT52b3w/ZUF1Zwp6QCsoaXRnNW9jUiYzKExOdlAwNTZtKjNZWkVtYXA2R0cxcGt5
Q1opOF4jQnV0UEJrXyohY0pjK3o5RURUSEkyfWMKenRTTmI7YXoyc3I/ODg+S2BXNGhvcTBtI1pj
VnlhVGI/LTFRUm9DIzh8MC15bWVGZkxALTYmN0t2VTstRzBmSCFsCnpTVFFATz95aCgwbzcmbWlp
Jm9kSEY0YEx2eF8qWmsqYHcyOUJ+VnFNc25VfnRNUVAle3k3RG0pUEFnVm8yPUJFTgp6RUV1cnlE
MCM7a0N+K1BCMiZQKz9XNX5ULVdmTDhYMlFtc3RCXkh1R0t1Tzc5KHhVbSZFVHhSY2FzKThYa3or
PEoKemNOfE48JTNCbzhGSyh+ZjhoQG4yIV4weipTOz4lUiRZRTQjKWAhZStLe2F9QWBTOHtvVFVD
QUljaEpjbjRYOHBICnpHR3MjbURwK3hEdHpCJm9sMnx+LS1yekFValRQXj9AS25LbDVgQGlndSpC
OT9WfHVMbS1RQT5ec0R8LSYzeDBwfgp6dSYmZ1kzNWdlT2prIW9BV042cFAzZGB1OGN+T0g4TGlP
P3kqPnVqRW49O1Rxd3NaZE9gOU0wY0t7S0xUSTQkNEoKemlDOTZ1PCt9SCVTb2lKO3ZvI21PPThk
QV4yXyt5PGo5ZXFJST1WenxITDF9YlJgTEhydlVIUCo4IUdLZXR6VjF+CnoqeVBxRHh6MlU5OENz
V3FCfmlMTTgpTld1VzNlZTxoTWs+ViNwRnxtUldBbkA3dmxUZEVFbUdRRTQxJiowKj4lSwp6SH05
azVOZikpUD1+UTVgbFIpSH1CS1lJfE1rcyQzWGR0fHlicGptVjxfbnc1eSs/eUcoWnxybj1RLTRR
PCh2fiMKentrTDh9SmtEcWBsVEA+UlA7Sz49eksoeUBZXmV8WFFJWXpsMVY1ajUwanE4IztfZCla
WG0yLXBaITxZY0lMXmY5Cno/QTNvI1psbmJ2UXpnSFJXZEkhNG9zfWp6ODV4IUp4OTUrZCN2OHhL
SmRXQkF4YW1PPmlWZnBhU2JlQT07SXF+JAp6WEtHPitwfG5gPkJGPlVDTSE5c31WUUcydjYraz41
Q3ttUTlxdlheVmtZY3tqfDlgKVVNOSRpY1ooWlNrTHZ+TyMKejlaa3lZeGxGMUlPQFpSSGYpbz1A
eEskNipXTmstfl5UPTRgUjhvQXtYYi02MW9kd0o3Km8zIzEhaUw3NF51dGA5CnppQj1TbVpqQDc9
SytyNEctaWBsKkFhcnc3UD9FZT5iZlIqTlRKYSN7aWhqeT9ufmt9c3pwLXwlWSNsT1E7UD9+WAp6
UVRkM1RKUVF9TmZ0IXQyY0spZUQ5dGFoUyFuSWM4cGV6WG9iQiVERyh3bSh4Z3x1U0VQZn1uX189
eS0oMio3JEIKemxjMlBtb04mMklmNjF4eFM4OThrP1NzP2AqUmU5a0p+dD8xa2gtcUZ8TXR5ND1y
anB1Jns8N19JNnZVeig5N3szCnpMZDJSZ3pZal9JQyQqUFAqcVYoYz9vMHIlPypjOEFoZVNsZnsp
ZzRPQHJvaHljSFlHail+TiQ3NDFLc2JTbEpOcwp6eF8qJmEyaE1kdUA2SUEwSEI1ai0xUHRxPGBC
X1B5K25MZGtOMk5+QWN4X1ZgcHFgeF45WiRQZzFneGhENHRiNCQKemwzT3E+dkZpWSN7aUgrUG5O
THNTKUZ9JjRTSjI1ZVQzckklSz9TeFl0TDtJSEdBcCFIKlNsUUV0ZChTdlA8Q1BiCnoxZT9MJWwr
aT9qaDJFdEVQZlN8R2cqK08kP3NXQ0FyWTM1WUlzWndOSkdYaVZHQExAPClDfjZHTWlTQ2QreDJr
Ngp6RCFocyNDYzNLSVQoJkVHcSQhUiE/JUIpe1hzRjY9P01sN250PFFAQ0pfT3lpYjcmfVctV35L
RzI3X3NFdHA+OHYKejI+PUY1ZEUtKCUtZDNzUFZzPVpIR3J+MFQqVmYrM0goRl9JRXR5Pj5rSlIr
OWVARUtVYGNUZ3pjeyR8ckJBVVYzCnozZklKTzJxdDVyWW84XlRKTHljczc9ekIyQDIpZm5hXnFk
YiVWPGpAZCpIUXttejRhbng3fVNXYU51RHo+eUt3Mwp6X3VjR1ltKUBGd2BASFRCbGtmbTJ2Y1p5
QGBiOU4lOVZxfSFZTi1XLWpuS3c+XjNsblRPTXtpZ3oyOUV6TVU3QFEKenhCX0N4ZDNreV55NiZX
Xz9hbn5rNjx6eTZVI3dqKTw5elV1aTg4RysqLXkmcWFpe3VoQVV1Mz1EQmgkTngqQUxSCnpTek5G
PUNFZ3pKQWUzOEAwSTZ+RWFAXkludU5EVyZeTHg5WjY/eXZaVD1UQXBlcTEjISNKa0M7bkhDcUBQ
cFZMPgp6NDJ5QiU5dzNoMjxxfHR0SWA2aFdyWXFJaEQ9M3wtcio+OVh6UGpPX088UkhqZ0wzZ1RH
M2U7Q3BZQjlXaTd4X3UKekgwIz9lQEBnQ004VCVvMSRaQys7PipDTn5mQCEoMkpXNnVtMk1WZ1BS
SzBlI08+WDs0VDFaaUlLZnNrN1ZJfS1OCnp5RCh3Pm9mYih2UlU9WHIyPSQoZHsyRjFVaz1OeU52
Wl9CTUN1d0FXZCt9KH4zSXBDej08QlNSeypWaWY/TVcmbQp6RHd1dWx0djRoZSFZPDgybFZrUkpq
aWhKUnRUdjAwJmM2bnR4eEY9KUFNMTB3Q2FjPW87cnpZQkd2flNjUXBwNFMKeno4TCFrNF5QaHt5
c3xtVlI1SlQlUG1Ja3tmP2B9eWtMamhPVElRdDE1UHI9MitGIT9PNT9tJG9BRT9lSmB9ZHtDCnpw
dE5nP2VBajJtX1NZJVh1Rk1UUUlJdC00cyNseGtCVX55KkAwa01mdCtxJTtqJjBtI2t1Yik0SSRl
KCFAeysqUwp6b2llZn5iKUF4TVRsNjt0cHg3PCVVKkF+ckJDSTZ9Zn00VismaWVvIzB5UXVtKTsp
WEhMTVJEYnpMbHtpO1FAJCkKemNHNmZsTzhgQD1jJW0rY1BgaXN4ZzhaM0hSdT9GP2hDP1o3WCtx
Xi1MRzR1fkBhUSNfcj0/QiZ5KFk4YWgqNnJZCnpuIztwWkw/ZmRYSyopZWRpfHQzdkdMbVo4WDl7
JFFMfkxuYExTMHoxeksjXlc2ZXQwdDZzMFY1VVJTZ1h3ZCQ8agp6bWRSTlJPJmtvQ2laYERsYjAl
JlJCNFo9ckJRenprbShpN3RvRW0yOCVvY21Xd3J3bHZsVzd5blVodTZeV2N8V1oKemxuUWdPVDxI
b3hMWlpqSk9WRDdIcnhNJjVLSWo+JSN2SFJzSH1Ec09TWXdMVVlRTS1LeUR0czYqX1h9YHlJd1pv
CnpkVUNFd2ZtUSkoYV9QfkBUO3N3WVFjSjUyOHwhazJnT204YDk7PE1vaG5gIUA2JVpwKDZmU15K
VkFzbHhfXzs2VQp6VCE8OD9AIU1QbGl7VjdGcVAqdlB1WTgwS0ZtMXFDTUBaYDdZOUZ2b2hKayVC
NnF0R2sqdF9tMXphe0psN0Z3YV8Keigobz0yaWolfT8+eilFfCEkZDtMb1FIVXRUIy1tNWh4IXM+
OHpoVio9cVo0O08jc219SllIIUpTekJLWjVsaj5iCno4T0FRdnlhKXBSdzlYKk5IQ1VRY2A0R0Bi
dSVBfTNsSEV8aUxmWmBQISpII01kJUhgcUk2elMwck0tKD17KEhNTAp6X3VVeEJnP0AqOFJIZlNs
bHF8SDJgMGM8SHZjemlCXkluayY/Z3glOExzYz4lRGRNSk85TjdpcW5MPCMxVUQrKDUKej9LNnZ1
XnpMIzMxdm9AdTB7ZGw2aFYqMDMmJENuI3dvUFFAdUhRWHxjfXZPMWd7TXFJPk88ZVg8emBqckBO
Iz8qCno8YzF8Y0c2WjU2XnVJYmNzPkhGY0RDfk9KbV5heyhCd0BwSEhObFZXKzJ+PD0qKUJpYDNk
SEtyOG90ZXpsOUE2cQp6KEA8OGVmMnJtO1Z2dWZBZ05iciZfeS1+M3JpQSYjbVRINW9mJj4kJTR7
eCl0TF9UfiZKT1BleExZVFFXMEI5TXIKekE/a2kwPEBORSVGZGk5RUZJK0UjT14mJFAzY0MoO09t
KG1ILVFOcU5fK303QldBYUlBSTY2PU8kKlNvVDVUTSNtCnomUTFWNV8kQF53QnRAIUN7Ji1KPWhN
PlBSbG81RTA7MXVUZTNNITVGZTcmMTVGeVA4M1g8WUZCRjF6LTNRYTNLcwp6PDVPOCE9M0wxbWJa
UjtITzQjfHtMTlRLcGBNSTNwMDIrUlRHT2JkSXVoLVkycU0+UnopSmZQPSZCfUc7PTFfYGgKelE3
UCFlN0Q7MEReWEokNU9LeHVCZXYySmFyOzRPRytnfD9WTnhEJTUmY1J7cyFUMEFjZyE1cDRgJDZO
elk0Y34tCnp2KE19NSg3VTF3LTMjbCZuRGFKNFc0dGZ8cit1YFJZUUghUGRKZig9NENwbVcmUSFe
Sk1Sd1NSUWRMXntvam48OQp6VXRwbGBSWj0wIStkUntUQ087djdudiUxbVR3S1ZMTU1sPC1pcCFw
TTx4XyhiIURAI1IycHl9YXNxeWJFeERIO1gKemo8X1V0aXAtS1pQUHloYmJ5aE4zXj5xNENsKENj
T0g3Qj5AUGwpWSpGQjhwak4tZVhtYntWZChuOTBEWD0zSUVPCnpGUVFAUlV1WXdQVTNaRmFfUkAl
WW9IOFlMaHZsa2pIcShQcWtVcnFUVENHfTdMRn55TDlqKld+TSkoWiN4b3lkWgp6Y01oPj8lSUAk
bXVaTUlVYylrMmFzKG9pWVRANil5cVpRO211cSM/PXpXKU1+K0Q2QGQ7VXdkUUQmTUIhYnAreTkK
eiVDNkFRMiEhNU8jXztuJDlsRWE3bmc5PWFhcH09a1k3bHVxWSQ9Yis0MTc3OCNsR3d7YWJoMiNi
Vk50OWBfP34tCnpvZF4hWmJndHJkKyYhQFQzRSp1K2xsPlp4K01ZbldrakpQMUxubFVsO1ZyeyY9
e2VyfElXdVZHdmArKnU3I2Mpfgp6eFh+YWZmaE8hTTsrRiNFYT8xfURESS0rKlhIUSVCdWFibHo7
P1pRWW9LR3R0dGFvbHM1OylTQDducFdUcU44Tk8Kent1Q2hXV29TZiVzRjMqJlZQaDR1QmxKaDtS
fTUkSXgmdmJ2MlJkbjEzeng4QDJHYm5vZnAoWVlaYkE7OzRBO2hrCnpeVyM8NV9SYW11Qj1EVzgt
JHVDSGFOTT9lczdPZVhLZWRrcSU9VWAwMm5NR2xRZ1U2P2IqMWd6Snt2cjtJUktQPAp6UFhVYXdj
RTNwfUZkTWdTQTduYHBGKExTRTA8K3dIZX1ecn1jUSYmI1RfLVpkNG9JVGg7SF82c01ke2ohUlVs
KX0KekkoV2s7bHpAYGJPfSNMSXREKDlDdGk/bFVxLUFBUWZ0PzM2akpyJms3Rm08dlBEOz4+TEN0
MEwlNSEtM2pGQUtPCnp3bnV+KWt9PSlhYlVERTYhO288MFA2SX0oS3VtTkYlQFhOek1EWTJlO0hL
aGM2K2MkaVNVWUckQEt1N1Jea18rVAp6NGB4YjdDdSR9I1pZe0hUd1ojcjBCWDYqMXdOYEc7V35Z
a3F6LU1BeSUqRVMyUGhkNmA7VldjbE55YT01YTQkWVMKelVMKStnNityNWpNPSZJSkp+JFZxTFF5
a2ZeS3c9UnBgNmBUeSlEVW9eXyU7akNIPndJJkxkK0ZfT0AyY1kwPzR9CnpyWTF2ZkUjbHliWiRV
Vm8jPllQemthT3lQSlRNQkFDUj1DaFVuVTlBSWlPUjBpbjx5MVVuZUNLPGdlOGBifmV8JQp6MDZu
MVB6KGk9Z0BtfnhfRT9sbitqfX03KSV4SXh+dy0/SWNpWmZufGdYOWg8PHorSD41WSg+eDBMJSEl
LTwzfkwKeis0fm1vUkc3aEJRVUMkOTJATkRGME9UNDBDWkV1bCZqIXpGc0JMdlhDdDx2Jjk/SGVB
MVM/PGFGJWZTfj9iTU1MCnojZDtoSV57YD5yc29wV2xgOCE7Qzh1TzMhd2VQM2NqbilUJiZ9QlRF
az1BQTk8PWtjWlozQCYzKzByMkxiMW1fbAp6cmgtX3Q7LUl5ST1sRHM/Iy1BeElufUJqMGVnWmh4
OHotM1lHekMzT1lvYkVLMWxjfHM2QjlHdXhWdWZHZEg9Mm0KeiVITGhyMT9iIWFgR0xkZUFBPD9v
d3VETzFIcjgwXkdFPlI4MDdlOSFOWklEMGlLPjBXbUZ+OE1mcmtHblQwMV5jCnoxUnZQKTQhWGpm
eklsVGQtUn5IWG5kI0sxLWRIXkRHZzFDUChVS0pVeTMqaEwpMF9aYmttJU17bT1HQVA9cG1HVAp6
Y0NxeWhSfnQ3MWJIZD51LX1JNk0wPkxmS18lNlc2em93Y303QiM+JXA7KGZeOV4wYks+Qz9jOGtG
JHkoPD5lUkwKekJtZVVaOzZRZ0ZhN3whYF81Nz5SSVEjdFNSbjJlRGVmRFEtLW11UmJQNihPdXAw
JlElY3hxan5aYXpfcVlJeFE+CnplWW0lTHR5d0tBO1R5JlBuWkJTZnYyTG5ldEkxI0cjd153eUsr
OzVITlR3bHw4RytsYFNScWxUSjVuRkRwWiQjYAp6c2ptNTh6RFAoRXZneEZETFklVCUyQG9zRyRR
NXlNQHlaMjs9TH1vMHdMeU9PWmdwVVVGNTNzYWlaRVopYStiTTsKekEyV3BNYE4pQihjX19TXyh6
dz13MWNlTnlFcFlHZFR2SGhRUGV0UXlBQnwyPXk1Wl5ZJHZHR0dXTDd6KGhNa0o/CnpLWH0tOWcy
cmhaVkpzb3gwITBGQ0Rybih4cjtFWnFHMGIlSGxWOzA+KnFrb3t4MXVOflgrUGFMdl55ekJSRGhI
Swp6VnYjdUxNKElNMTBHdldjOGlCYjVYdjQkLWNrcnZCKlk/ODkxOE9IIzxmKik/QzVKakFzajR0
QCE/P1gmaFMrM34KekdgSSNoUnFXbGshQyZgUUNIR2MwI3YrJmNpbDtJR2VMejhLYn16Um5FJlph
cVBUeVlBJj9TRiMrVEtrezJDUmUqCnp6fDY0PWlRYWA4WElSNDlPR0tqYWJxME9vUCZYfWkxfHxl
bzVDTWJHSmA+UkBTbjVzX1pieVNkbyZEdEgqR259Rgp6YnJVbk0ySzwzQlVxenhZaE1TQmNvTlNH
RS09KSlWZHRQfVhRTXZ2VFYoNkxhWD9afEdTYU91dHB6emMtR3pxUkYKejBmbVc9ezswdDxSKHsy
RzlvJHl1TDJrM0ZqPj1qfCRoO3VTPDFyTztkM2FUai03cFRAZ1Z8NlUqZFYmUys5ZGJPCnp2b3JK
YXJ8MEZjfEE9N0xjVlZ7JGU4d0wjQWs/X3ZTZnZmPHh7O2twSWJJJX5KUipILTVQJDF+ZTNHMllG
Z1dfRQp6dzkwbEVocHJeSndfVTY5eFhJVkZIcXxaJi1HZjJ5VkFeKnx8SysmQWErfn5FbT5LcyFg
cVpHRDlfTV5kb0VKemgKenUmQkV8bz9wYyFYYFl9fFR+SHZQdkFmYGNRLVZQLVhoKnpkTHI1eyQm
fGJ1Q1JPR05lVVFEXnZkSmlgQmc2YHZMCnpfVXQkOG12Z0kpaTkpN3hrYU9WNSF1bm9iaUtrfHhj
U1pNPj4rOU5rRTNNSSkrPEp3ZjM/MT9aeGx2OTI2Y3AqVwp6b3pAd2MyR2N7KUozbkFEdzVTN1BW
WlE2fVhGTTkxPWchUGVNNGxWPFltR2FUK0l3bD1SUl9eNks2U3hZN1orfkgKej83eW5DTU12RXd3
ZVhSTVM1WUxFMm93c3tDR2lDIUJfa0BvbmRJLUJwM2EofmgmK3l2WH4tNystOztgZTt1IXlfCnp8
RlZpeD8/QnFLVEp4WGRZO1pNT18hZ21Sc0M/JWo7X0o5VEkyZD10ZSg3SEFpQVhqWXt0RUZ7PWco
aCF7TyFMeQp6N3wqY3J3NyVfTnl1UWkhSFk+SDFAc2dvdk93I21eU3ExRXlSQD1BVkN+XllwVXFa
bE1yQV53b0JndmZWeTgyfTQKekAxTVRxa2h1fmZaMUBmdFdEcEk7cHJJfkA0TzMyNDk5cXcmVEB0
YUlvKVFRckl5ZzkobndsMDNePnJ5c14oaUV4Cno1O3Y2YEJWPTc3V1RCM2ZVOzE8eWhDWXBkRG1H
dE9aVi1KUHE7Py1WJFk2VS0+dDU2diVRPn5Mcn4pfTw1b0l5Swp6Q2Nlc0JsWExVNGp5QFNTaSY+
Uz1lR1IoS1dpPnRCX3NwZEozJnQ1fDErTlYjXzZKYTdsTWx8NkJvR1daZV5LY14Kemo0PFJsV2BY
ZzxQLWxIWU9fNzY3U0FNeERsRXNgUjtCWTgjbWlnLWYhVnJDN1NsfSF5RHctQzUjcWNAVnN1Z2gr
Cno2QDRnJih5PThvPGx1YG51dG5OI1omOGA/WkVweiNsO0tiMCQoe1lAIW4zNjxnbUJwLU91Smo2
ZGRhK00lLVBMRwp6QG9PdnluWT8jXyhMNDc4MVUoIVZHWWFQRGJ+Xz9EcU5ZeDVrX2Q3fG1kYyYz
VkQ2O21vfmQtNWkyQUlldTFgMVcKel94aCVMYSFOMnVecyNUd1FOKylnKGlTcjZTTnhSPCZ9eXNy
X0hlLTxMITBjQCY0WW5GJGVYb0t6ckhkKEBNfHUrCnppUChJVjhxYzIoWklkIy1lcV9GPFEzWX48
bEoraThNJllTNGdgOFFWVm4zVXlaPnk3cHk1NGoyaEU3cyQpLWlrYwp6ZlBLI3o0fCtlXndrajZu
NExwRDdTIWlsbSo4Nzc3SDgmNiRkNUNANG02QEJ2Kkp2QHN5XyhgaHs9bDl7MTVRbXcKejQ3KzVj
Rk4hKGtJX1l2bXVTTTZjPDtCczRCPm0ocnJWQ3wkVDZVSTVAMDNNcFg8MDdlQ1o9JjReRDs+aEwl
RVg4Cnp3OSRlNTk4dk0+TnArZ2lheHp8WUVGK3EyZDJKRGB7M05EV0lYUmhmWjk2QXRgQEMqXmxI
c1JeOEdadk0xZ3Naegp6QyRqWU9QVkYtKSYyUWReKmVMbjcwS1M7Vnt5KmN1JVR3SnpyN1NwOV59
dWRWJihEVVhXSz9FV1Z0I2dUKkl6U3kKemwqYz9Bbnt+Klg1eG9QYXQhcm9KWEF7PXU2VUpUVCh5
aVB6bmtGTWVMTGxTMFFLZks9Zjw8SCYmcWEhezZ2OUJnCnpBb2ZlaFZHe3hTblUoNEl7Tm44NWlS
VXF1Kl5+RVhicXg8PkdMcUsqRUIxblojcnxlTFlvfEg4P0xLcT4qTmFaSwp6RWpgMXBLVkdqSjd9
KFg8KXQ1YWI/dT5HRVhrYEVYZEIqMSo1PDZHQjwrKXZzI2xCOWtvaVo0OWt1P21gaTxDS1YKejRy
OW51KDUqNG88Qj5uSnBiTGUkRmdHQUp1WHVobioxMU15Y0tVREd0OWlmKE4keDU/dXVVPDFwKCs9
XlZIQk0hCnpKSD9II0glcl4rOzlnU2MhZ0xaaEZydT9IeFM/eG9Ta3w5X01yNjFlVmg/NHJOaChM
QHg5Y1NIe2g3ekdsbFI5ZQp6T2k7RjA0TWlBaHpOPmUkKTt7RnZtWnQ/VlZCRzdVaWIpM0dyVGw9
WWFFVmJiMX1GWEpWLXN1KD5pSyV9IT9BfjAKejVWS21hMX4rTFJOT21saU94OTB0T0gjKHk9U2pV
dVFhMWdnVVJqbjsod2M2bCRzJlJlcFgxaFdHT1QwQ0BNUlBfCnpmRXclO0IpZDNuNHtKTjVndmJ+
Q0JjJmJlOXZKblQ0NVd5TlBLb19HZyp2bEBNe2hWayhBTHVYdn1ePDJnNyFMbAp6MlBhZWkmZTxe
OSsrYEthPn08UmQrajQ0dCozWCVyS3VQJmR3NEptNDt0czcxKGdaQHdBRm1YfUNnSXwyQDB8RnkK
emV+QGdKPiFwKFlkM1MhV3VHTkl+O3R2VHJlNkU1NklyaXgyMUJtNkRMS2djRlUhNDQoYWdkZXY0
dXUzXkJ1bnBMCnpNXzw9YmJ6T0lUX3FuXj5sUEBRO1BvZy1oQkBKMXQ4OH4qeF8lJE9EOERMS3Vi
Sm03QGhrRG9Ma2RjIy10Zz5mWgp6USE4TDdeSSowUlU/Oz52QHwhWUROdlNnVi1CXmJsOHNONiZ5
dHE1RW05O0IxPnlYfEBeIWZJck1KYzh2ZGg+T0UKemNMJWtZeE80aHFgb3d4IyowR1AqcnZQazBv
Z212eTJkaDRHaFlBMXV2K21+fExJd3M+N057O1g+SH4lTHcjQDFnCnokM0pqQ09XR25ndk85bXF5
bUtIYDV3QUdWUTt6SiMrIzhvMV4yTCVudUtrZ30mOztAX3ZSIzt7YkotWERvJk9IVwp6SDRrKHsw
fnxTV25PO1VyVWF3cTlFeSF7I1JVamcraiU4NX44d3J8d2k9dmEwUlRjaGgzYjIjeE98R1I/Wk9e
aTwKekdTPlZoZk9IcCEzfXZBPFZFNlVYS2JPPGIoJDhJKCVDemxyfEZNQ3t3XzV9JDZyZyEmaHEo
fnNTWGpmai02fHdJCnptNzArV2wzSztiR1lEbEhye1l0VmJ2eHJAIXtCfkBXaWhmZnohN29lWHJN
JHlmN1dnOHN9JCYhUnJ8bGxmISVeKwp6SD5KflFaQjw/ZmJHMUtHeTY1ZSYrPis4VmJ6T3J0PG88
VE48KipsVmRGV1ZUJSFeT1UmUGNJSHpTR3MrVSQqdEsKej4qIUw/Nlc+e0ttdDN5RWRreXF3RUdm
T35iNGFYWGtVWTQjI0p+fEh5clBuPCo5ayRoVlIlZE5jYDJaeSQmIzxwCno9aU8wJTlUKk1rXjwt
Nzt7QG5aeThGdnZ4bkdvK2dIVUVQZF5NNXBWe3g1I2QoSnJWZC09eCRZMisyPkgqV1k3Mgp6Smw7
SCY1d2xgaUd3c29ZbWNJS1VDOXRjJXBHUkdudWojdHxeOyNJTGkjXz8+VjZ1R3BCa3s0bFN7VTM4
Ryk7KEMKejA2cDUtSmpDfWIqXyh8cU0qbGNWfENhfCZ8Rj9EO0E3OVRqR2F8YVh5RGdLfFp3OUN4
SlVodTlOTX1FMEtgfCF1CnpYdzJjNkZoSEtYKUtPNFY+UX5yUHpQaDVAYE5DVUkkbHZneVZXdl44
M0ZxI1RhMmE9Mj5aWHQoYiFZIXVvYW5BWgp6Sj4wOVR0anJvO29iQkZMPjwpUnE9R0R2Ukd8Y0F8
ayZAd2FjYFlUSTMoNkRPWXZxekRgZjlNIXk7IVh0UG8wV0EKekVIdVIoODFVYDlpbT87RmxRPilI
eTd6aSg1NDQhb3QxV3x1MmV3LTRKe1EmaHFyU0FnPCFOfE9fZk17czh6OHY7CnoqWk1TQzcyZmlI
VFVlUHxwU1BYKmVeSCshPmM7V094UXVeUz1sQDY1YENuWjh8R3hjU3pVSzRhQUNtdFRNRShmWAp6
WD0pQERubEFpTiYqTjg4ZjE0My0/bj1QV1Y1ey1aY203ajR7QCpBNlchQ2NWa28tRiZlPUR6RFQm
VG5DIVZgQ0kKVFBRZjRHQXVnJEZ8QzBCISNxSXdFQH1nZWkKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3Zn
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3Zn
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODc4ZDQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVy
bi1zdmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhlcmUgc2hvdWxkIGJlIG9uZSBi
aWcgc3F1YXJlIGJlbG93IGNvbnRhaW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVmdCBzcXVhcmUg
c2hvdWxkIGJlIGZpbGxlZCB3aXRoIDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCByaWdodCBzcXVh
cmUgc2hvdWxkIGhhdmUgb25lIGNvbHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0b20gbGVmdCBz
cXVhcmUgc2hvdWxkIGhhdmUgb25lIHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRoZSBib3R0b20g
cmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNvcm5l
ci4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LXN2Zy5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTYzMzNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmcuaHRtbApA
QCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKyA8aGVh
ZD4KKyAgPHRpdGxlPlRlc3QgZm9yIFdLMTEzNDIwOiBTVkctYmFzZWQgcGF0dGVybnMgc2hvdWxk
IGJlIGRyYXduIGNvcnJlY3RseTwvdGl0bGU+CisgIDxzdHlsZT4gY2FudmFzIHsgYm9yZGVyOnNv
bGlkICMwMDAgfSA8L3N0eWxlPgorICA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICB9CisgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKXsKKyAg
ICB2YXIgaSA9IG5ldyBJbWFnZSgpOworICAgIGkuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCw8
c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzUwJyBoZWlnaHQ9
JzUwJz48Y2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScxMCcgZmlsbD0nZ3JlZW4nIC8+PC9zdmc+
IjsKKyAgICBpLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGN0eCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpOworCisg
ICAgICB2YXIgcGF0dGVybiA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJyZXBlYXQiKTsKKyAgICAg
IGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuOworICAgICAgY3R4LnRyYW5zbGF0ZSgxMCwgMTApOwor
ICAgICAgY3R4LnN0cm9rZVJlY3QoMCwgMCwgMTUwLCAxNTApOworICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIDE1MCwgMTUwKTsKKworICAgICAgdmFyIHBhdHRlcm5YID0gY3R4LmNyZWF0ZVBhdHRl
cm4oaSwgInJlcGVhdC14Iik7CisgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVyblg7CisgICAg
ICBjdHgudHJhbnNsYXRlKDAsIDE2MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAs
IDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICB2YXIg
cGF0dGVybk4gPSBjdHguY3JlYXRlUGF0dGVybihpLCAibm8tcmVwZWF0Iik7CisgICAgICBjdHgu
ZmlsbFN0eWxlID0gcGF0dGVybk47CisgICAgICBjdHgudHJhbnNsYXRlKDE2MCwgMCk7CisgICAg
ICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgMTUwLCAxNTApOworCisgICAgICB2YXIgcGF0dGVyblkgPSBjdHguY3JlYXRlUGF0dGVybihp
LCAicmVwZWF0LXkiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuWTsKKyAgICAgIGN0
eC50cmFuc2xhdGUoMCwgLTE2MCk7CisgICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1
MCk7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTUwLCAxNTApOworCisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fQorICAgfQorICA8L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgIDxwPlRoZXJlIHNob3Vs
ZCBiZSBvbmUgYmlnIHNxdWFyZSBiZWxvdyBjb250YWluaW5nIGZvdXIgc3F1YXJlcy4gVG9wIGxl
ZnQgc3F1YXJlIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAzIHJvd3Mgb2YgMyBjaXJjbGVzLiBUb3Ag
cmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjb2x1bW4gb2YgMyBjaXJjbGVzLiBUaGUgYm90
dG9tIGxlZnQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSByb3cgd2l0aCB0aHJlZSBjaXJjbGVzLiBU
aGUgYm90dG9tIHJpZ2h0IHNxdWFyZSBzaG91bGQgaGF2ZSBvbmUgY2lyY2xlIGluIHRoZSB0b3At
bGVmdCBjb3JuZXIuPC9wPgorICA8cD48Y2FudmFzIGhlaWdodD0iMzMwIiB3aWR0aD0iMzMwIj48
L2NhbnZhcz48L3A+CisgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4MzBhMjUuLjRm
NmExZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNjMgQEAKIDIwMTMtMDQtMDMgIENocmlzdG9w
aGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCisgICAgICAgIFJlZ3Jlc3Np
b24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcgY2FudmFzIGRyYXdp
bmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbnRyb2R1Y2UgYSBQYXNzTmF0aXZlSW1hZ2VQdHIgdHlwZWRlZiB0aGF0IGlzIHVz
ZWQgaW4gcGxhY2Ugb2YgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgZm9yIG1ldGhvZCBhcmd1bWVu
dHMgYW5kIHJldHVybiB2YWx1ZXMuIFRoaXMgaXMgbmVlZGVkIGFzIFNraWEgbm93IG1hcHMKKyAg
ICAgICAgTmF0aXZlSW1hZ2VQdHIgdG8gUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciB0bworICAgICAgICBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4uIFdl
IG1vdmUgdG93YXJkcyByZWYgY291bnRlZCBzbWFydCBwb2ludGVycyBzbyB0aGF0CisgICAgICAg
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGNhbiB0cmFuc2ZlciBvd25l
cnNoaXAgb2YgdGhlIG5hdGl2ZQorICAgICAgICBpbWFnZSB0byB0aGUgY2FsbGVyIGlmIG5lZWRl
ZCAoZS5nLiBmb3IgU1ZHSW1hZ2UpLgorCisgICAgICAgIFByb3ZpZGUgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1ZHSW1hZ2UuIFNWR0ltYWdlIG5vCisg
ICAgICAgIGxvbmdlciBob2xkcyB0aGUgbmF0aXZlIGltYWdlIGludGVybmFsbHksIHRvIHNhdmUg
bWVtb3J5LiBJdCBpcyB0aGVyZWZvcmUgY3JlYXRlZAorICAgICAgICB3aGVuIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgaXMgY2FsbGVkIGFuZCBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRo
ZQorICAgICAgICBjYWxsZXIuIEZvciBub3csIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgb25seSBl
bmFibGVkIGZvciBTa2lhIGFzIG90aGVycyBhcmUgdXNpbmcKKyAgICAgICAgcmF3IHBvaW50ZXJz
IGZvciBQYXNzTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgVGVzdDogc3ZnL2NhbnZhcy9jYW52
YXMtcGF0dGVybi1zdmcuaHRtbAorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJ
Y29uRm9yUGFnZVVSTCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0
ZWFkIG9mIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgIChJY29uRGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25EYXRhYmFzZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2U6OnN5
bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0
aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUg
b2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEg
cmF3CisgICAgICAgIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9h
cmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgaW4gYSBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPgorICAgICAgICBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuIFdoaWxlIHRoZXNlIGFyZSBlcXVpdmFsZW50LCB0aGUgZm9ybWVyIGlz
IG1vcmUKKyAgICAgICAgcmVhZGFibGUgaW4gU2tpYS1zcGVjaWZpYyBjb2RlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJ
bWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVy
biBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIFRha2UgYSBQYXNzTmF0aXZlSW1hZ2VQ
dHIgaW4gYXJndW1lbnQgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIChC
aXRtYXBJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChJbWFn
ZUV4dHJhY3Rvcik6CisgICAgICAgIEtlZXAgTmF0aXZlSW1hZ2VTa2lhIGluIGEgUmVmUHRyIGlu
c3RlYWQgb2YgT3duUHRyLCBub3cgdGhhdCBpdCBpcyByZWZjb3VudGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFn
ZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoSW1hZ2VCdWZmZXIpOgorICAgICAgICBI
YXZlIGNvcHlOYXRpdmVJbWFnZSgpIHJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFk
IG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2Yg
YSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIEhhdmUgY3JlYXRlRnJhbWVBdEluZGV4KCkgcmV0dXJuIGEgUGFzc05h
dGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1hcCBOYXRpdmVJbWFn
ZVB0ciB0byBhIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VT
a2lhKiBmb3IgU2tpYS4KKyAgICAgICAgSW50cm9kdWNlIG5ldyBQYXNzTmF0aXZlSW1hZ2VQdHIg
dGhhdCBtYXBzIHRvIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3IgU2tpYQorICAgICAg
ICBhbmQgaXMgZXF1aXZhbGVudCB0byBOYXRpdmVJbWFnZVB0ciBmb3Igb3RoZXIgcG9ydHMuIFdl
IG5vdyB1c2Ugc21hcnQgcG9pbnRlcnMgZm9yCisgICAgICAgIHRoZSBuYXRpdmUgaW1hZ2Ugc28g
dGhhdCBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYW4gcGFzcyBvd25l
cnNoaXAKKyAgICAgICAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyLCB1bmxpa2Ug
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJu
IGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgVGFrZSBh
IFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIgaW4gYXJndW1l
bnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKToKKyAg
ICAgICAgVGFrZSBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQ
dHIgaW4gYXJndW1lbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFs
dWUgb2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9m
IGEgcmF3IG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUJsZW5kU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5
U2tpYSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFQ29sb3JNYXRyaXhTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1h
cFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3Jt
QXBwbHlTa2lhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6
cGxhdGZvcm1BcHBseVNraWEpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlRGVjb2RlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5z
dGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdl
UHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oOgorICAgICAgICAoU3RpbGxJbWFnZSk6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBObyBsb25nZXIgbmVlZCB0byBhZG9wdCB0aGUgcmV0
dXJuIHZhbHVlIG9mIGFzTmV3TmF0aXZlSW1hZ2UoKSBub3cKKyAgICAgICAgdGhhdCBpdCByZXR1
cm5zIGEgUGFzc1JlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgQ2FsbCBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSgpIGZhY3RvcnkgbWV0aG9kIG5vdyB0
aGF0IHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBpcyBwcml2YXRlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVEYXRhOjpjbGVhcik6CisgICAgICAgIEp1c3QgY2FsbCBjbGVhcigpIG9uIG1fZnJhbWUgaW5z
dGVhZCBvZiBleHBsaWNpdGVseSBkZWxldGluZyBpdCBub3cKKyAgICAgICAgdGhhdCBpdCBpcyBh
IFJlZlB0ci4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4g
YSBSZWZQdHIgaW5zdGVhZAorICAgICAgICBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9m
IGZyYW1lQXRJbmRleCgpIGluIGEgUmVmUHRyIGluc3RlYWQgb2YgYSByYXcgb25lLgorCisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIFN0b3JlIHJldHVybiB2
YWx1ZSBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGluIGEgUmVmUHRyIGluc3RlYWQK
KyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9OYXRpdmVJbWFnZVNraWEuY3BwOgorICAgICAgICBBZGQgbmV3IGNvbnN0cnVjdG9yIHRha2lu
ZyBhbGwgbWVtYmVycyBpbiBhcmd1bWVudC4gVGhpcyBpcyB1c2VkIGZvcgorICAgICAgICBjbG9u
aW5nIGEgTmF0aXZlSW1hZ2VTa2lhIG9iamVjdC4KKworICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
SW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1h
Z2VTa2lhOjpkZWVwU2tCaXRtYXBDb3B5KToKKyAgICAgICAgQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIG1ha2UgYSBkZWVwIGNvcHkgb2YgYSBTa0JpdG1hcC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKToKKyAgICAgICAgKE5h
dGl2ZUltYWdlU2tpYSk6CisgICAgICAgIE1ha2UgTmF0aXZlSW1hZ2VTa2lhIHN1YmNsYXNzIFJl
ZkNvdW50ZWQuIE1ha2UgdGhlIGNvbnN0cnVjdG9yIHByaXZhdGUKKyAgICAgICAgYW5kIGFkZCBh
IGZhY3RvcnkgbWV0aG9kIGluc3RlYWQgdGhhdCByZXR1cm5zIGEgUGFzc1JlZlB0ci4KKworICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhOjpjbG9uZSk6CisgICAgICAgIEFkZCBhIGNs
b25lKCkgbWV0aG9kIG5vdyB0aGF0IE5hdGl2ZUltYWdlU2tpYSBpcyByZWZjb3VudGVkIGFuZCBp
cyBubworICAgICAgICBsb25nZXIgY29weWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OnBs
YXRmb3JtUGF0dGVybik6CisgICAgICAgIFN0b3JlIHJldHVybiB2YWx1ZSBvZiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIGluIGEgUmVmUHRyIGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcg
b25lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAg
ICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgor
ICAgICAgICAoSW1hZ2VGcmFtZSk6CisgICAgICAgIEhhdmUgYXNOZXdOYXRpdmVJbWFnZSgpIHJl
dHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgTmF0aXZlSW1h
Z2VQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmdldEFkZHIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6Z2V0U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6
d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6aGVpZ2h0KToKKyAgICAgICAg
VXBkYXRlIHVzZSBvZiBtX2JpdG1hcCBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIgdHlwZSBhbmQg
Y2FsbAorICAgICAgICBOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSgpIHRvIGNvbnN0cnVjdCBhIE5h
dGl2ZUltYWdlU2tpYSBvYmplY3Qgbm93CisgICAgICAgIHRoYXQgdGhlIGNvbnN0cnVjdG9yIGlz
IHByaXZhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05h
dGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQg
b2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICBJbml0aWFsaXplIG1fYml0bWFwIGlu
IHRoZSBjb25zdHJ1Y3RvciBub3cgdGhhdCBpdCBpcyBhIHBvaW50ZXIKKyAgICAgICAgdHlwZSBh
bmQgd2UgbmVlZCBOYXRpdmVJbWFnZVNraWEncyBkZWZhdWx0IGNvbnN0cnVjdG9yIHRvIGJlCisg
ICAgICAgIGNhbGxlZC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgQ2FsbCBOYXRpdmVJbWFnZVNraWEncyBuZXcgY2xvbmUoKSBtZXRob2QgdG8g
Y29weSBtX2JpdG1hcCBhcworICAgICAgICBOYXRpdmVJbWFnZVNraWEgaXMgbm93IFJlZkNvdW50
ZWQgYW5kIG5vIGxvbmdlciBjb3B5YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0Zp
bGxQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgIFVw
ZGF0ZSB1c2Ugb2YgbV9iaXRtYXAgbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyIHR5cGUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICBS
ZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgor
ICAgICAgICBDYWxsIE5hdGl2ZUltYWdlU2tpYSdzIGNsb25lIG1ldGhvZCBub3cgdGhhdCBpdCBp
cyBubyBsb25nZXIKKyAgICAgICAgY29weWFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OnNldEhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFN0
YXR1cyk6CisgICAgICAgIFVwZGF0ZSB1c2Ugb2YgbV9iaXRtYXAgbm93IHRoYXQgaXQgaXMgYSBw
b2ludGVyIHR5cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFn
ZURlY29kZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2Yg
YSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGZvciBTVkdJbWFnZSBhcworICAgICAgICBpdCBpcyBu
ZWVkZWQgZm9yIFNWRyBjdXN0b20gY3Vyc29yIHN1cHBvcnQgYW5kIENhbnZhcyBkcmF3aW5nIG9m
CisgICAgICAgIHBhdHRlcm5zIGNvbnRhaW5pbmcgU1ZHIGltYWdlcy4gQXMgU1ZHSW1hZ2Ugbm8g
bG9uZ2VyIGtlZXAgdGhlCisgICAgICAgIG5hdGl2ZSBpbWFnZSBpbnRlcm5hbGx5IHRvIHNhdmUg
bWVtb3J5LCB0aGUgaW1wbGVtZW50YXRpb24gY3JlYXRlcworICAgICAgICB0aGUgbmF0aXZlIGlt
YWdlIHdoZW4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBhbmQgcGFzc2VzCisgICAgICAg
IGl0cyBvd25lcnNoaXAgdG8gdGhlIGNhbGxlci4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICBPdmVycmlkZSBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSBhbmQgcmVtb3ZlIGR1bW15CisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGZyYW1l
QXRJbmRleCgpIGFzIGl0IGlzIG5vdCBuZWVkZWQgLyB1c2VkLgorCisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHdoaWNoIG1l
cmVseQorICAgICAgICBmb3J3YXJkcyB0aGUgY2FsbCB0byB0aGUgSW1hZ2UgYmVpbmcgY29udGFp
bmVkLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6Cisg
ICAgICAgIE92ZXJyaWRlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLgorCisy
MDEzLTA0LTAzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4K
KwogICAgICAgICBbQ2hyb21pdW1dIEJhZCBjYXN0IGZyb20gQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEgdG8gQml0bWFwSW1hZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzQ5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCAzY2IxMzk2Li42OTFjNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBJbWFnZSogSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQor
UGFzc05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVS
TE9yaWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5oCmluZGV4IDBhNzI0MjIuLmE2MjI2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwogCiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hy
b25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJik7Ci0gICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVh
bCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwg
U3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAg
dmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3Ry
aW5nJik7CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lz
aW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopOyAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwNDBmYzQ3
Li5lMWY2M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzeW5j
aHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lz
aW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIElj
b25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVh
bCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQXN5bmNocm9ub3VzIGNh
bGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1h
Z2VDaHJvbWl1bVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJh
Z0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAppbmRleCAxYjBkOTJhLi5iNjhkNDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9t
aXVtU2tpYS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEq
IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggMDdmYTlhOS4uMTMzZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBBU1NFUlQoaW1hZ2UpOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGNmNDMwNzMuLmNiODBhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBib29sIEJpdG1hcElt
YWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0zMjAsNyArMzIwLDcgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
ZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRG
cmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCmluZGV4IGE4N2NkNTguLjMxYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIEJp
dG1hcEltYWdlIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2Vu
ZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CiAgICAgfQpA
QCAtMTc3LDcgKzE3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRF
dmFzT2JqZWN0KEV2YXMqKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFs
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZFUlJJREU7CiAKICAgICBJbWFn
ZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CkBAIC0xOTgsNyArMTk5LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQg
aXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgQml0bWFwSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAgQml0bWFwSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwogICAgIEJpdG1hcEltYWdlKEltYWdlT2Jz
ZXJ2ZXIqID0gMCk7CiAjaWYgUExBVEZPUk0oV1gpCiAgICAgQml0bWFwSW1hZ2UoY29uc3Qgd3hC
aXRtYXAmKTsKQEAgLTIxOSw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgY3Vy
cmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KICAgICB2aXJ0dWFs
IHNpemVfdCBmcmFtZUNvdW50KCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNp
emVfdCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpOwogICAg
IGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCA1YmM4ODgxLi5kNmY2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjczLDcgKzI3Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAg
ICAgICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uKTsKIAogICAgICAgICAvLyBBbGxvdyBmb250IHNtb290aGluZyAoTENEIGFudGlhbGlh
c2luZykuIE5vdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzdGF0ZS4KICAgICAgICAgdm9pZCBzZXRB
bGxvd3NGb250U21vb3RoaW5nKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZWEzYTcyOC4uNWRhMjk2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC05MjMsOCArOTIzLDggQEAgcHVibGljOgogICAgICAgICBib29sIGV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUpOwogCiAjaWYgVVNFKFNLSUEpCi0gICAgICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+
IG1fbmF0aXZlSW1hZ2U7Ci0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSogbV9za2lhSW1hZ2U7Cisg
ICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CisgICAgICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fc2tpYUltYWdlOwogI2VsaWYgVVNFKENBSVJPKQogICAg
ICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX2ltYWdlU3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDYzNzY0M2QuLjlmNTQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGls
ZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsK
IAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CiAgICAgCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZTRlNWQ0Li45
ZDBiM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2
YXRlOgogI2lmIFVTRShDRykKLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKKyAgICAgICAgUGFz
c05hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSkgY29uc3Q7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTE3NDAwZS4uYzA2NmNlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cApAQCAtMTQxLDcgKzE0MSw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXpl
X3QgaW5kZXgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
aW5kZXggNjZhOGEwYS4uY2E5OTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CiAKICAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55
IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKaW5kZXggMWFkNWJlOS4uNzM1MzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC01Niw2ICs1Niw4IEBAIGNs
YXNzIE1lbW9yeU9iamVjdEluZm87CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6
IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNtYXJ0Cisv
LyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4K
ICNpZiBVU0UoQ0cpCiB0eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBQ
TEFURk9STShRVCkKQEAgLTcyLDcgKzc0LDggQEAgdHlwZWRlZiB3eEJpdG1hcCogTmF0aXZlSW1h
Z2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFdlYkNvcmU6Ok5hdGl2ZUltYWdlQ2Fp
cm8qIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFNLSUEpCi10eXBlZGVmIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlU2tpYSogTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gUGFzc05hdGl2ZUltYWdlUHRyOwogdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBOYXRp
dmVJbWFnZVNraWEqLCBXVEY6Ok1lbW9yeU9iamVjdEluZm8qKTsKICNlbGlmIE9TKFdJTkNFKQog
dHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKQEAgLTgwLDYgKzgz
LDEwIEBAIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiB0eXBl
ZGVmIHZvaWQqIE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAKKyNpZiAhVVNFKFNLSUEpCit0eXBl
ZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKKyNlbmRpZgorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwCmluZGV4IDU1ZDNlYzMuLjI0N2Y3NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
SW1hZ2VCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0ltYWdlQmxhY2tCZXJyeS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1Jl
ZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUp
CiAgICAgcmV0dXJuIGltZy5yZWxlYXNlKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBuZXcgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpUaWxlZEltYWdlKG1fc2l6ZSwgbV9ieXRlcyk7CiB9CkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZy
YW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGEzNzQ4NTAu
LjllMTg4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2Vy
VG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZShpbWFnZVB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZTU3MzczMi4uMDY4MTU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVm
ZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3Jl
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IDA7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDc5NGVjNzMuLmY2MjRmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wg
Y2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFn
ZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CiAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CiAg
ICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFn
ZSkgewogICAgICAgICAgICAgbV9pbWFnZUxheWVyID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJl
bnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlSW1hZ2VMYXllcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5k
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVCbGVuZFNraWEuY3BwCmluZGV4IDY0ZTUzNTguLjJlOWQ4MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxl
bmRTa2lhLmNwcApAQCAtNzIsOCArNzIsOCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
a2lhKCkKICAgICBSZWZQdHI8SW1hZ2U+IGZvcmVncm91bmQgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIFJlZlB0cjxJbWFnZT4gYmFj
a2dyb3VuZCA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBmb3JlZ3JvdW5kTmF0aXZlSW1hZ2UgPSBm
b3JlZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIE5hdGl2ZUltYWdl
U2tpYSogYmFja2dyb3VuZE5hdGl2ZUltYWdlID0gYmFja2dyb3VuZC0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmb3JlZ3JvdW5kTmF0
aXZlSW1hZ2UgPSBmb3JlZ3JvdW5kLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91
bmQtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIWZvcmVncm91bmRO
YXRpdmVJbWFnZSB8fCAhYmFja2dyb3VuZE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAppbmRleCAzMjI4Y2Q4Li4y
OTE5ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBT
a0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlw
ZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRp
dmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFu
c2ZlclNraWEuY3BwCmluZGV4IGIwZjgwY2UuLjRhNDBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVy
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIEZF
Q29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwCmluZGV4IDIy
ZjFiNzMuLjFiZTQ1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRURpc3BsYWNlbWVudE1hcFNr
aWEuY3BwCkBAIC03MSw4ICs3MSw4IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3Jt
QXBwbHlTa2lhKCkKICAgICBSZWZQdHI8SW1hZ2U+IGNvbG9yID0gaW4tPmFzSW1hZ2VCdWZmZXIo
KS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGRp
c3BsID0gaW4yLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEqIGNvbG9yTmF0aXZlSW1hZ2UgPSBjb2xvci0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIGRpc3BsTmF0
aXZlSW1hZ2UgPSBkaXNwbC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBjb2xvck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZGlzcGxOYXRp
dmVJbWFnZSA9IGRpc3BsLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYg
KCFjb2xvck5hdGl2ZUltYWdlIHx8ICFkaXNwbE5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcAppbmRleCBkNzA4N2Q0Li4zYTBi
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgc2V0SXNBbHBoYUltYWdl
KGluLT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFz
SW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBOYXRp
dmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAppbmRleCBhN2Q5Zjc1Li5hM2Y0NDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29k
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xl
YXJQb2ludGVycygpCiAgICAgbV9idWZmZXIuY2xlYXIoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgUUltYWdlOjpGb3Jt
YXQgZm9ybWF0OwogICAgIGlmIChtX2hhc0FscGhhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggMGY0MDdjMS4uM2U1
Mzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCkBAIC02Miw5ICs2Miw5IEBAIEludFNpemUgU3RpbGxJbWFnZTo6c2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUobV9waXhtYXAtPndpZHRoKCksIG1fcGl4bWFw
LT5oZWlnaHQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TmF0aXZlSW1h
Z2VQdHI+KG1fcGl4bWFwKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxQYXNzTmF0aXZlSW1hZ2VQ
dHI+KG1fcGl4bWFwKTsKIH0KIAogdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCmluZGV4IDUwNWIxOTAuLjFlOWUyMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgICAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIHZpcnR1YWwgUGFz
c05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQz
RFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwCmluZGV4IDNiMWM4ZjIuLjhhYzZkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dDNEU2tpYS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wKICAgICAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaGFzQWxw
aGEgPSBmcmFtZS0+aGFzQWxwaGEoKTsKLSAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGFkb3B0UHRy
KGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgICAgICBtX25hdGl2ZUltYWdlID0gZnJh
bWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKCFtX25hdGl2ZUltYWdlLmdldCgp
IHx8ICFtX25hdGl2ZUltYWdlLT5pc0RhdGFDb21wbGV0ZSgpIHx8ICFtX25hdGl2ZUltYWdlLT5i
aXRtYXAoKS53aWR0aCgpIHx8ICFtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU2tCaXRtYXA6OkNvbmZpZyBza2lhQ29u
ZmlnID0gbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuY29uZmlnKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAK
aW5kZXggZjYxZGVjYi4uYzY0ZDhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcApAQCAtMjAyLDEwICsy
MDIsMjAgQEAgR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIH0KIAorc3RhdGljIFNrQml0bWFwIGRlZXBTa0Jp
dG1hcENvcHkoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKK3sKKyAgICBTa0JpdG1hcCB0bXA7Cisg
ICAgaWYgKCFiaXRtYXAuZGVlcENvcHlUbygmdG1wLCBiaXRtYXAuY29uZmlnKCkpKQorICAgICAg
ICBiaXRtYXAuY29weVRvKCZ0bXAsIGJpdG1hcC5jb25maWcoKSk7CisKKyAgICByZXR1cm4gdG1w
OworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yKSBjb25zdAogeworICAgIGNvbnN0
IFNrQml0bWFwJiBiaXRtYXAgPSAqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpOwog
ICAgIC8vIEZJWE1FOiBTdGFydCBob25vcmluZyBTY2FsZUJlaGF2aW9yIHRvIHNjYWxlIDJ4IGJ1
ZmZlcnMgZG93biB0byAxeC4KLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0
aXZlSW1hZ2VTa2lhKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGNvcHlCZWhh
dmlvciA9PSBDb3B5QmFja2luZ1N0b3JlID8gTmF0aXZlSW1hZ2VTa2lhOjpDb3B5UGl4ZWxzIDog
TmF0aXZlSW1hZ2VTa2lhOjpEb05vdENvcHlQaXhlbHMsIG1fcmVzb2x1dGlvblNjYWxlKSk7Cisg
ICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoY29w
eUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUgPyBkZWVwU2tCaXRtYXBDb3B5KGJpdG1hcCkg
OiBiaXRtYXAsIG1fcmVzb2x1dGlvblNjYWxlKSk7CiB9CiAKIEJhY2tpbmdTdG9yZUNvcHkgSW1h
Z2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKQEAgLTI1MSwyMiArMjYxLDI0IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpIGNvbnN0CiAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmJlZ2luTGF5
ZXJDbGlwcGVkVG9JbWFnZShyZWN0LCB0aGlzKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlU2tp
YTo6Q29weUJlaGF2aW9yIGRyYXdOZWVkc0NvcHkoR3JhcGhpY3NDb250ZXh0KiBzcmMsIEdyYXBo
aWNzQ29udGV4dCogZHN0KQorc3RhdGljIGJvb2wgZHJhd05lZWRzQ29weShHcmFwaGljc0NvbnRl
eHQqIHNyYywgR3JhcGhpY3NDb250ZXh0KiBkc3QpCiB7Ci0gICAgcmV0dXJuIChkc3QtPnBsYXRm
b3JtQ29udGV4dCgpLT5pc0RlZmVycmVkKCkgfHwgc3JjID09IGRzdCkgPyBOYXRpdmVJbWFnZVNr
aWE6OkNvcHlQaXhlbHMgOiBOYXRpdmVJbWFnZVNraWE6OkRvTm90Q29weVBpeGVsczsKKyAgICBy
ZXR1cm4gKGRzdC0+cGxhdGZvcm1Db250ZXh0KCktPmlzRGVmZXJyZWQoKSB8fCBzcmMgPT0gZHN0
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUltYWdlU2tpYSgqbV9kYXRhLm1fcGxh
dGZvcm1Db250ZXh0LmJpdG1hcCgpLCBkcmF3TmVlZHNDb3B5KG1fY29udGV4dC5nZXQoKSwgY29u
dGV4dCkpKTsKKyAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gKm1fZGF0YS5tX3BsYXRmb3Jt
Q29udGV4dC5iaXRtYXAoKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZShOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShkcmF3TmVlZHNDb3B5KG1fY29udGV4dC5n
ZXQoKSwgY29udGV4dCkgPyBkZWVwU2tCaXRtYXBDb3B5KGJpdG1hcCkgOiBiaXRtYXApKTsKICAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0aXZlSW1hZ2VTa2lh
KCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250
ZXh0LmdldCgpLCBjb250ZXh0KSkpOworICAgIGNvbnN0IFNrQml0bWFwJiBiaXRtYXAgPSAqbV9k
YXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGRyYXdOZWVkc0Nv
cHkobV9jb250ZXh0LmdldCgpLCBjb250ZXh0KSA/IGRlZXBTa0JpdG1hcENvcHkoYml0bWFwKSA6
IGJpdG1hcCkpOwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdl
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tp
YS5jcHAKaW5kZXggY2I5MjM5Mi4uMTNjY2YxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcApAQCAtNDQ5LDEwICs0NDksOCBA
QCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50
YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAgIGlmIChtX2ZyYW1lKSB7Ci0g
ICAgICAgIC8vIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoKSBhbGxvY2F0ZWQgfG1f
ZnJhbWV8IGFuZCBwYXNzZWQKLSAgICAgICAgLy8gb3duZXJzaGlwIHRvIEJpdG1hcEltYWdlOyB3
ZSBtdXN0IGRlbGV0ZSBpdCBoZXJlLgotICAgICAgICBkZWxldGUgbV9mcmFtZTsKLSAgICAgICAg
bV9mcmFtZSA9IDA7CisgICAgICAgIG1fZnJhbWUuY2xlYXIoKTsKKwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDcwLDcgKzQ2OCw3IEBAIHZvaWQg
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICNpZiBQTEFURk9S
TShDSFJPTUlVTSkKICAgICBUUkFDRV9FVkVOVDAoInNraWEiLCAiSW1hZ2U6OmRyYXdQYXR0ZXJu
Iik7CiAjZW5kaWYKLSAgICBOYXRpdmVJbWFnZVNraWEqIGJpdG1hcCA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYml0bWFwID0gbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC01NTksNyArNTU3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LAogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGdvIHRvIEJpdG1h
cEltYWdlU2tpYS5jcHAKIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlU2tp
YSogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fc2l6ZShu
YXRpdmVJbWFnZS0+Yml0bWFwKCkud2lkdGgoKSwgbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdo
dCgpKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKQEAgLTU4NCw4ICs1ODIsOCBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiAgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
OwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0
aXZlSW1hZ2U7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9ICFuYXRpdmVJbWFnZS0+Yml0
bWFwKCkuaXNPcGFxdWUoKTsKKyAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7
CiAgICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCiAgICAgY2hlY2tGb3JT
b2xpZENvbG9yKCk7CkBAIC02MDMsNyArNjAxLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tG
b3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VTa2lhKiBmcmFtZSA9IGZyYW1lQXRJbmRleCgw
KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGZyYW1lQXRJbmRleCgwKTsK
IAogICAgIGlmIChmcmFtZSAmJiBzaXplKCkud2lkdGgoKSA9PSAxICYmIHNpemUoKS5oZWlnaHQo
KSA9PSAxKSB7CiAgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhmcmFtZS0+Yml0bWFwKCkp
OwpAQCAtNjI3LDcgKzYyNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgLy8gY2F1
c2luZyBmbGlja2VyIGFuZCB3YXN0aW5nIENQVS4KICAgICBzdGFydEFuaW1hdGlvbigpOwogCi0g
ICAgTmF0aXZlSW1hZ2VTa2lhKiBibSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gYm0gPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwogICAgIGlmICghYm0pCiAgICAgICAgIHJldHVybjsgLy8gSXQncyB0b28gZWFybHkgYW5k
IHdlIGRvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHAKaW5kZXggMjFl
YmY1Yi4uZTY4OWQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcApAQCAtNDgsMjAgKzQ4LDI1IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5hdGl2ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKCkK
LSAgICA6IG1fcmVzb2x1dGlvblNjYWxlKDEpLAotICAgICAgbV9yZXNpemVSZXF1ZXN0cygwKQor
ICAgIDogbV9yZXNvbHV0aW9uU2NhbGUoMSkKKyAgICAsIG1fcmVzaXplUmVxdWVzdHMoMCkKIHsK
IH0KIAotTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmIG90
aGVyLCBDb3B5QmVoYXZpb3IgY29weUJlaGF2aW9yLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCi0g
ICAgOiBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpLAotICAgICAgbV9yZXNpemVS
ZXF1ZXN0cygwKQorTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRt
YXAmIG90aGVyLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCisgICAgOiBtX2ltYWdlKG90aGVyKQor
ICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQorICAgICwgbV9yZXNpemVS
ZXF1ZXN0cygwKQoreworfQorCitOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYShjb25z
dCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tCaXRtYXAm
IHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiBjYWNoZWRJbWFnZUluZm8sIGlu
dCByZXNpemVSZXF1ZXN0cykKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3Jlc29sdXRp
b25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCisgICAgLCBtX3Jlc2l6ZWRJbWFnZShyZXNpemVkSW1h
Z2UpCisgICAgLCBtX2NhY2hlZEltYWdlSW5mbyhjYWNoZWRJbWFnZUluZm8pCisgICAgLCBtX3Jl
c2l6ZVJlcXVlc3RzKHJlc2l6ZVJlcXVlc3RzKQogewotICAgIGlmIChjb3B5QmVoYXZpb3IgPT0g
Q29weVBpeGVscykgewotICAgICAgICBpZiAoIW90aGVyLmRlZXBDb3B5VG8oJm1faW1hZ2UsIG90
aGVyLmNvbmZpZygpKSkKLSAgICAgICAgICAgIG90aGVyLmNvcHlUbygmbV9pbWFnZSwgb3RoZXIu
Y29uZmlnKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2ltYWdlID0gb3RoZXI7CiB9CiAKIE5h
dGl2ZUltYWdlU2tpYTo6fk5hdGl2ZUltYWdlU2tpYSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaAppbmRleCA4OWUz
MjZhLi45ZmU0YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKQEAgLTM1LDIxICszNSwzOSBAQAogI2luY2x1
ZGUgIlNrUmVjdC5oIgogI2luY2x1ZGUgIlNrU2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMg
dGhlICJuYXRpdmUgaW1hZ2UiIGluIG91ciBwb3J0LiBXaGVuIFdlYktpdCB1c2VzCi0vLyAiTmF0
aXZlSW1hZ2VQdHIiLCBpdCBpcyBhIHBvaW50ZXIgdG8gdGhpcyB0eXBlLiBJdCBoYXMgYW4gU2tC
aXRtYXAsIGFuZCBhbHNvCi0vLyBzdG9yZXMgYSBjYWNoZWQgcmVzaXplZCBpbWFnZS4KLWNsYXNz
IE5hdGl2ZUltYWdlU2tpYSB7CisvLyBQYXNzTmF0aXZlSW1hZ2VQdHIgLyBOYXRpdmVJbWFnZVB0
ciwgaXQgaXMgYSBzbWFydCBwb2ludGVyIHRvIHRoaXMgdHlwZS4KKy8vIEl0IGhhcyBhbiBTa0Jp
dG1hcCwgYW5kIGFsc28gc3RvcmVzIGEgY2FjaGVkIHJlc2l6ZWQgaW1hZ2UuCitjbGFzcyBOYXRp
dmVJbWFnZVNraWEgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZVNraWE+IHsKIHB1Ymxp
YzoKLSAgICBlbnVtIENvcHlCZWhhdmlvciB7IENvcHlQaXhlbHMsIERvTm90Q29weVBpeGVscyB9
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgIH0K
KworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZG9lcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgcGFz
c2VkLWluIFNrQml0bWFwIChpZS4sIGl0CisgICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhl
bCBkYXRhIGFuZCBidW1wcyB0aGUgcmVmY291bnQpLiBVc2Ugb25seSB3aGVuCisgICAgLy8geW91
IHdhbnQgc2hhcmluZyBzZW1hbnRpY3MuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmF0aXZlSW1h
Z2VTa2lhPiBjcmVhdGUoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlID0gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VT
a2lhKGJpdG1hcCwgcmVzb2x1dGlvblNjYWxlKSk7CisgICAgfQorCisgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBkb2VzIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBpbnRlcm5hbCBTa0JpdG1hcCAoaWUu
LCBpdAorICAgIC8vIHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4ZWwgZGF0YSBhbmQgYnVtcHMgdGhl
IHJlZmNvdW50KS4gVXNlIG9ubHkgd2hlbgorICAgIC8vIHlvdSB3YW50IHNoYXJpbmcgc2VtYW50
aWNzLgorICAgIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBjbG9uZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYShtX2ltYWdlLCBt
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNpemVkSW1hZ2UsIG1fY2FjaGVkSW1hZ2VJbmZvLCBtX3Jl
c2l6ZVJlcXVlc3RzKSk7CisgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKCk7CiAgICAgfk5h
dGl2ZUltYWdlU2tpYSgpOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiwg
Q29weUJlaGF2aW9yLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxKTsKLQogICAgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBpbWFnZSBkYXRhLiBUaGlzIGluY2x1ZGVzIHRoZSBj
YWNoZWQKICAgICAvLyByZXNpemVkIHZlcnNpb24gaWYgdGhlcmUgaXMgb25lLgogICAgIGludCBk
ZWNvZGVkU2l6ZSgpIGNvbnN0OwpAQCAtODcsNiArMTA1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToK
KyAgICBOYXRpdmVJbWFnZVNraWEoKTsKKworICAgIE5hdGl2ZUltYWdlU2tpYShjb25zdCBTa0Jp
dG1hcCYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CisKICAgICAvLyBDYWNoZWRJbWFnZUluZm8g
aXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSBjYWNoZWQgb3IgcmVxdWVzdGVkIGltYWdlCiAg
ICAgLy8gcmVzaXplcy4KICAgICAvLyBJbWFnZSByZXNpemUgaXMgaWRlbnRpZmllZCBieSB0aGUg
c2NhbGVkIGltYWdlIHNpemUgYW5kIHNjYWxlZCBpbWFnZSBzdWJzZXQuCkBAIC0xMDEsNiArMTIz
LDggQEAgcHJpdmF0ZToKICAgICAgICAgU2tJUmVjdCByZWN0SW5TdWJzZXQoY29uc3QgU2tJUmVj
dCYgb3RoZXJTY2FsZWRJbWFnZVJlY3QpOwogICAgIH07CiAKKyAgICBOYXRpdmVJbWFnZVNraWEo
Y29uc3QgU2tCaXRtYXAmIGltYWdlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFNrQml0
bWFwJiByZXNpemVkSW1hZ2UsIGNvbnN0IENhY2hlZEltYWdlSW5mbyYsIGludCByZXNpemVSZXF1
ZXN0cyk7CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJlc2l6ZSBvcGVyYXRp
b24gc2hvdWxkIGVpdGhlciByZXNpemUgdGhlIHdob2xlCiAgICAgLy8gaW1hZ2UgYW5kIGNhY2hl
IGl0LCBvciByZXNpemUganVzdCB0aGUgcGFydCBpdCBuZWVkcyBhbmQgdGhyb3cgdGhlIHJlc3Vs
dAogICAgIC8vIGF3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1BhdHRlcm5Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGF0dGVyblNraWEuY3BwCmluZGV4IDJhZTRkZDYuLmZhMGFhODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGF0dGVyblNraWEu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIFBsYXRmb3JtUGF0dGVyblB0ciBQYXR0ZXJuOjpwbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmCiAgICAgLy8gYW5k
IGV4cGFuZGVkIHNjYWxlIGFuZCBza2V3IGluOgogICAgIC8vIExheW91dFRlc3RzL3N2Zy9XM0Mt
U1ZHLTEuMS9wc2VydmVycy1ncmFkLTA2LWIuc3ZnCiAKLSAgICBjb25zdCBOYXRpdmVJbWFnZVNr
aWEqIGltYWdlID0gbV90aWxlSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgYml0bWFwLCBy
ZXR1cm4gYSB0cmFuc3BhcmVudCBzaGFkZXIuCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgbV9w
YXR0ZXJuID0gbmV3IFNrQ29sb3JTaGFkZXIoU2tDb2xvclNldEFSR0IoMCwgMCwgMCwgMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VX
aW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdp
bkNFLmNwcAppbmRleCBhMjhkMTQ5Li4zZDFjYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcApAQCAtNDEsNyArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6
OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6
OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBTaGFyZWRCaXRtYXA6OmNy
ZWF0ZShtX2JhY2tpbmdTdG9yZSwgbV9zaXplLCBoYXNBbHBoYSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMjkxMTY3Yi4uYTRlNzA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRl
ciB0byB0aGUgdW5kZXJseWluZyBuYXRpdmUgaW1hZ2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVh
bCB1c2U6IFRoaXMgcG9pbnRlciB3aWxsIGJlIG93bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVl
ZCBpbgogICAgICAgICAvLyBGcmFtZURhdGE6OmNsZWFyKCkpLgotICAgICAgICBOYXRpdmVJbWFn
ZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNv
bnN0OwogICAgICAgICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGlu
dCB5KQogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCi0gICAgICAgICAgICByZXR1cm4gbV9iaXRt
YXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFw
LT5iaXRtYXAoKS5nZXRBZGRyMzIoeCwgeSk7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1f
Ynl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICNlbmRpZgpAQCAtMTUwLDEyICsxNTAsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICB2b2lk
IHNldFNrQml0bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYml0bWFwID0gTmF0aXZlSW1hZ2VTa2lhKGJpdG1hcCwgTmF0aXZlSW1hZ2VTa2lhOjpE
b05vdENvcHlQaXhlbHMpOworICAgICAgICAgICAgbV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNraWE6
OmNyZWF0ZShiaXRtYXApOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU2tCaXRtYXAmIGdl
dFNrQml0bWFwKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFw
LmJpdG1hcCgpOworICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5QWxsb2NhdG9yKFNrQml0bWFwOjpBbGxvY2F0
b3IqIGFsbG9jYXRvcikKQEAgLTIwMiw3ICsyMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGludCB3aWR0aCgpIGNvbnN0CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKLSAgICAg
ICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS53aWR0aCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fYml0bWFwLT5iaXRtYXAoKS53aWR0aCgpOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVy
biBtX3NpemUud2lkdGgoKTsKICNlbmRpZgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBpbnQgaGVpZ2h0KCkgY29uc3QKICAgICAgICAgewogI2lmIFVT
RShTS0lBKQotICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLmhlaWdodCgpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fYml0bWFwLT5iaXRtYXAoKS5oZWlnaHQoKTsKICNlbHNlCiAg
ICAgICAgICAgICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwogI2VuZGlmCiAgICAgICAgIH0KIAog
I2lmIFVTRShTS0lBKQotICAgICAgICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7CisgICAgICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fYml0bWFwOwogICAgICAgICBTa0JpdG1hcDo6QWxs
b2NhdG9yKiBtX2FsbG9jYXRvcjsKICNlbHNlCiAgICAgICAgIFZlY3RvcjxQaXhlbERhdGE+IG1f
YmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDQx
NzYyOGQuLjVjYmRjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJ
bWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IE5h
dGl2ZUltYWdlQ2Fpcm8oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCiAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRh
Kj4obV9ieXRlcykpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvb3BlbnZnL0ltYWdlRGVjb2Rlck9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAppbmRl
eCBkMjkzMTdhLi44MzNlNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZH
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUlt
YWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUlt
YWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHN0YXRp
YyBjb25zdCBWR0ltYWdlRm9ybWF0IGJ1ZmZlckZvcm1hdCA9IFZHX3NBUkdCXzg4ODhfUFJFOwog
ICAgIC8vIFNhdmUgbWVtb3J5IGJ5IHVzaW5nIDE2LWJpdCBpbWFnZXMgZm9yIGZ1bGx5IG9wYXF1
ZSBpbWFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCA2MjQzYjg2Li5j
MjU0MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTI3LDEyICsyNywx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUZyYW1lOjpJbWFn
ZUZyYW1lKCkKLSAgICA6IG1fYWxsb2NhdG9yKDApCisgICAgOiBtX2JpdG1hcChOYXRpdmVJbWFn
ZVNraWE6OmNyZWF0ZSgpKQorICAgICwgbV9hbGxvY2F0b3IoMCkKICAgICAsIG1faGFzQWxwaGEo
ZmFsc2UpCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAgICwgbV9kdXJhdGlvbigwKQpA
QCAtNDYsMTAgKzQ4LDEwIEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25z
dCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJl
dHVybiAqdGhpczsKIAotICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRtYXA7CisgICAgbV9iaXRt
YXAgPSBvdGhlci5tX2JpdG1hcC0+Y2xvbmUoKTsKICAgICAvLyBLZWVwIHRoZSBwaXhlbHMgbG9j
a2VkIHNpbmNlIHdlIHdpbGwgYmUgd3JpdGluZyBkaXJlY3RseSBpbnRvIHRoZQogICAgIC8vIGJp
dG1hcCB0aHJvdWdob3V0IHRoaXMgb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgbV9iaXRtYXAuYml0
bWFwKCkubG9ja1BpeGVscygpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7
CiAgICAgc2V0TWVtb3J5QWxsb2NhdG9yKG90aGVyLmFsbG9jYXRvcigpKTsKICAgICBzZXRPcmln
aW5hbEZyYW1lUmVjdChvdGhlci5vcmlnaW5hbEZyYW1lUmVjdCgpKTsKICAgICBzZXRTdGF0dXMo
b3RoZXIuc3RhdHVzKCkpOwpAQCAtNjQsNyArNjYsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1l
OjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6
Y2xlYXJQaXhlbERhdGEoKQogewotICAgIG1fYml0bWFwLmJpdG1hcCgpLnJlc2V0KCk7CisgICAg
bV9iaXRtYXAtPmJpdG1hcCgpLnJlc2V0KCk7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5Owog
ICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVC
dWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwg
YnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03NCw3ICs3Niw3IEBAIHZvaWQgSW1hZ2VGcmFt
ZTo6Y2xlYXJQaXhlbERhdGEoKQogCiB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRh
KCkKIHsKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5lcmFzZUFSR0IoMCwgMCwgMCwgMCk7CisgICAg
bV9iaXRtYXAtPmJpdG1hcCgpLmVyYXNlQVJHQigwLCAwLCAwLCAwKTsKICAgICBtX2hhc0FscGhh
ID0gdHJ1ZTsKIH0KIApAQCAtODQsOSArODYsOSBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIG1faGFzQWxwaGEgPSBvdGhlci5tX2hhc0FscGhhOwotICAgIG1fYml0bWFwLmJpdG1hcCgp
LnJlc2V0KCk7Ci0gICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhJiBvdGhlckJpdG1hcCA9IG90aGVy
Lm1fYml0bWFwOwotICAgIHJldHVybiBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb3B5VG8oJm1fYml0
bWFwLmJpdG1hcCgpLCBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb25maWcoKSk7CisgICAgbV9iaXRt
YXAtPmJpdG1hcCgpLnJlc2V0KCk7CisgICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhKiBvdGhlckJp
dG1hcCA9IG90aGVyLm1fYml0bWFwLmdldCgpOworICAgIHJldHVybiBvdGhlckJpdG1hcC0+Yml0
bWFwKCkuY29weVRvKCZtX2JpdG1hcC0+Yml0bWFwKCksIG90aGVyQml0bWFwLT5iaXRtYXAoKS5j
b25maWcoKSk7CiB9CiAKIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGlu
dCBuZXdIZWlnaHQpCkBAIC05NCwxNyArOTYsMTcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXpl
KGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICAvLyBzZXRTaXplKCkgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIG9uY2UsIGl0IGxlYWtzIG1lbW9yeSBvdGhlcndpc2UuCiAgICAgQVNTRVJU
KCF3aWR0aCgpICYmICFoZWlnaHQoKSk7CiAKLSAgICBtX2JpdG1hcC5iaXRtYXAoKS5zZXRDb25m
aWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKLSAg
ICBpZiAoIW1fYml0bWFwLmJpdG1hcCgpLmFsbG9jUGl4ZWxzKG1fYWxsb2NhdG9yLCAwKSkKKyAg
ICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgbmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgaWYgKCFtX2JpdG1hcC0+Yml0bWFwKCkuYWxs
b2NQaXhlbHMobV9hbGxvY2F0b3IsIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB6
ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0
ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3
IE5hdGl2ZUltYWdlU2tpYShtX2JpdG1hcCk7CisgICAgcmV0dXJuIG1fYml0bWFwLT5jbG9uZSgp
OwogfQogCiBib29sIEltYWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKQEAgLTEyMiw3ICsxMjQs
NyBAQCB2b2lkIEltYWdlRnJhbWU6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgYm9vbCBp
c09wYXF1ZSA9ICFtX2hhc0FscGhhOwogICAgIGlmIChtX3N0YXR1cyAhPSBGcmFtZUNvbXBsZXRl
KQogICAgICAgICBpc09wYXF1ZSA9IGZhbHNlOwotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElz
T3BhcXVlKGlzT3BhcXVlKTsKKyAgICBtX2JpdG1hcC0+Yml0bWFwKCkuc2V0SXNPcGFxdWUoaXNP
cGFxdWUpOwogfQogCiB2b2lkIEltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xv
clByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKQEAgLTEzNSw4ICsxMzcsOCBAQCB2b2lkIEltYWdlRnJh
bWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBzdGF0
dXM7CiAgICAgaWYgKG1fc3RhdHVzID09IEZyYW1lQ29tcGxldGUpIHsKLSAgICAgICAgbV9iaXRt
YXAuYml0bWFwKCkuc2V0SXNPcGFxdWUoIW1faGFzQWxwaGEpOwotICAgICAgICBtX2JpdG1hcC5z
ZXREYXRhQ29tcGxldGUoKTsgIC8vIFRlbGwgdGhlIGJpdG1hcCBpdCdzIGRvbmUuCisgICAgICAg
IG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJc09wYXF1ZSghbV9oYXNBbHBoYSk7CisgICAgICAgIG1f
Yml0bWFwLT5zZXREYXRhQ29tcGxldGUoKTsgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcAppbmRleCAwZTA0NzllLi45ZWViNzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9J
bWFnZURlY29kZXJXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0CiB7CiAgICAgd3hCaXRtYXAqIGJtcCA9IG5ldyB3eEJpdG1hcCh3aWR0aCgpLCBo
ZWlnaHQoKSwgMzIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApp
bmRleCAyOTZjMzRkLi44NjM1YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKQEAgLTE0MSw2ICsxNDEsMjUgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkKICAg
ICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KIAorI2lmIFVTRShTS0lBKQorLy8gUGFz
c2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05h
dGl2ZUltYWdlUHRyIG5lZWRzCisvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KK1Bhc3NO
YXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIGlmICgh
YnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIC8v
IEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9y
ZSBoZXJlLgorICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKyNlbmRpZgorCiB2b2lkIFNWR0ltYWdl
OjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmMDlhMmIxLi41ZGQwZTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKIAorI2lmIFVTRShTS0lBKQorICAgIHZpcnR1YWwgUGFzc05hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgT1ZFUlJJREU7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiAgICAg
ZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwpAQCAtODIsOCArODYsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgeyB9CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsg
fQotCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZl
LgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBkMDc2ZmVhLi5lOWUyNzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9p
bWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBt
X3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21w
b3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKK1Bhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIHJldHVybiBtX2lt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBiMzIyOGU1Li5hMmYxNWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBP
VkVSUklERTsKKwogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFnZSog
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSkKICAgICAg
ICAgOiBtX2ltYWdlKGltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MDViNGNh
Li45OWJhNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAy
MDEzLTA0LTAzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4K
IAorICAgICAgICBSZWdyZXNzaW9uKHIxNDI3NjUpIEJyb2tlIEN1c3RvbSBTVkcgY3Vyc29ycyBh
bmQgU1ZHIGNhbnZhcyBkcmF3aW5nIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgbm93IHRoYXQgSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgYW5kCisgICAgICAgIEltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UoKSByZXR1cm4gYSBzbWFydCBwb2ludGVyIGluc3RlYWQKKyAgICAgICAgb2Yg
YSByYXcgb25lLgorCisgICAgICAgICogc3JjL1dlYkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlRGVjb2Rlcjo6Z2V0RnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBz
cmMvV2ViSW1hZ2VTa2lhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmZyb21EYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmZyYW1lc0Zyb21EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW1hZ2U6Om9wZXJhdG9yPSk6CisgICAgICAgICogdGVzdHMvRGVmZXJyZWRJ
bWFnZURlY29kZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisgICAgICAg
ICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6
OlRlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFRlc3RJbWFnZSk6CisgICAgICAgICogdGVzdHMvSW1h
Z2VMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OlRl
c3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFRlc3RJbWFnZSk6CisgICAgICAgICogdGVzdHMvUGxhdGZv
cm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKKzIwMTMt
MDQtMDMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCiAg
ICAgICAgIFtDaHJvbWl1bV0gQmFkIGNhc3QgZnJvbSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YSB0byBCaXRtYXBJbWFnZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEzNDkyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDEwNGFiMTMuLjI2NTEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdl
YkltYWdlIFdlYkltYWdlRGVjb2Rlcjo6Z2V0RnJhbWVBdEluZGV4KGludCBpbmRleCA9IDApIGNv
bnN0CiAgICAgSW1hZ2VGcmFtZSogY29uc3QgZnJhbWVCdWZmZXIgPSBtX3ByaXZhdGUtPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIFdlYkltYWdlKCk7Ci0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9w
dFB0cihmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lQnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAg
cmV0dXJuIFdlYkltYWdlKGltYWdlLT5iaXRtYXAoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IDZkNTU1NTUuLjJiNzYwYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtODUsNyArODUs
NyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29u
c3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IFdlYkltYWdlKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0
UHRyKGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNr
aWE+IGltYWdlID0gZnJhbWUtPmFzTmV3TmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKIApAQCAtMTIyLDggKzEyMiw4IEBAIFdlYlZlY3Rv
cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmZyYW1lc0Zyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEp
CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBP
d25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGFkb3B0UHRyKGZyYW1lLT5hc05ld05hdGl2
ZUltYWdlKCkpOwotICAgICAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzRGF0YUNvbXBs
ZXRlKCkpCisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gZnJhbWUtPmFz
TmV3TmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0RhdGFDb21w
bGV0ZSgpKQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChXZWJJbWFnZShpbWFnZS0+Yml0bWFw
KCkpKTsKICAgICB9CiAKQEAgLTE1Nyw4ICsxNTcsOCBAQCBXZWJJbWFnZTo6V2ViSW1hZ2UoY29u
c3QgUGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogCiBXZWJJbWFnZSYgV2ViSW1hZ2U6Om9wZXJh
dG9yPShjb25zdCBQYXNzUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQ
dHIgcDsKLSAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSkpCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gcDsKKyAgICBpZiAo
aW1hZ2UgJiYgKHAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAg
ICAgIGFzc2lnbihwLT5iaXRtYXAoKSk7CiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVj
b2RlclRlc3QuY3BwCmluZGV4IDdmMTkwMGIuLjY0ZjhlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVj
b2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogewotICAgIE93blB0cjxOYXRpdmVJbWFnZVNr
aWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+
YXNOZXdOYXRpdmVJbWFnZSgpKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2Ug
PSBtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2Uo
KTsKICAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwogICAgIEVYUEVD
VF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFn
ZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRFU1RfRihEZWZlcnJl
ZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogCiBURVNUX0YoRGVmZXJyZWRJ
bWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8
TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoMCktPmFzTmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZVNraWE+IGltYWdlID0gbV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05l
d05hdGl2ZUltYWdlKCk7CiAgICAgU2tCaXRtYXAgc2NhbGVkQml0bWFwID0gaW1hZ2UtPnJlc2l6
ZWRCaXRtYXAoU2tJU2l6ZTo6TWFrZSg1MCwgNTEpLCBTa0lSZWN0OjpNYWtlV0goNTAsIDUxKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHNjYWxlZEJpdG1hcC5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RS
VUUoc2NhbGVkQml0bWFwLmlzSW1tdXRhYmxlKCkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIFRFU1Rf
RihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRlY29kZU9uT3RoZXJUaHJlYWQpCiB7CiAgICAg
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lh
PiBpbWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFz
TmV3TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0g
bV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7
CiAgICAgRVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1Rf
RVEoMSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2Ut
PmJpdG1hcCgpLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Ry
YWdJbWFnZVRlc3QuY3BwCmluZGV4IGE5NDY1ZTYuLjZiZjE4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIDogSW1hZ2UoMCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7
Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkp
OworICAgICAgICBtX25hdGl2ZUltYWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAg
ICAgICAgbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84
ODg4X0NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJp
dG1hcCgpLmFsbG9jUGl4ZWxzKCk7CkBAIC02NCwxMiArNjQsMTIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9zaXplOwogICAgIH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJ
bWFnZVNraWE+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlm
IChtX3NpemUuaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1
cm4gbV9uYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAg
ICAgfQogCiAgICAgLy8gU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdl
IGZ1bmN0aW9ucy4KQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9z
aXplOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1fbmF0aXZlSW1hZ2U7CiB9OwogCiBURVNUKERyYWdJbWFn
ZVRlc3QsIE51bGxIYW5kbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDRkYjQyOGMuLjY0OGRiZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9t
aXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSW1h
Z2UoMCkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIG1fbmF0aXZlSW1h
Z2UgPSBhZG9wdFB0cihuZXcgTmF0aXZlSW1hZ2VTa2lhKCkpOworICAgICAgICBtX25hdGl2ZUlt
YWdlID0gTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKICAgICAgICAgbV9uYXRpdmVJbWFnZS0+
Yml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgMCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCk7
CkBAIC03NywxMiArNzcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zaXplOwogICAg
IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNaZXJvKCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7CiAgICAgfQogCiAgICAgLy8gU3R1YiBp
bXBsZW1lbnRhdGlvbnMgb2YgcHVyZSB2aXJ0dWFsIEltYWdlIGZ1bmN0aW9ucy4KQEAgLTEwNSw3
ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBPd25QdHI8
TmF0aXZlSW1hZ2VQdHI+IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tp
YT4gbV9uYXRpdmVJbWFnZTsKIH07CiAKIFRFU1QoSW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3Bh
cXVlSW1hZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0
Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Bs
YXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRleCAzNzQzMjhiLi43NjAxNDRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNr
aWFUZXN0LmNwcApAQCAtNTQxLDIyICs1NDEsMjYgQEAgVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lh
VGVzdCwgdHJhY2tPcGFxdWVJbWFnZVRlc3QpCiAgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOwogICAgIENvbG9yIGFscGhhKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwog
Ci0gICAgU2tCaXRtYXAgZHJhd0JpdG1hcDsKLSAgICBkcmF3Qml0bWFwLnNldENvbmZpZyhTa0Jp
dG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDEwLCAxMCk7Ci0gICAgZHJhd0JpdG1hcC5hbGxvY1Bp
eGVscygpOwotCi0gICAgZHJhd0JpdG1hcC5zZXRJc09wYXF1ZSh0cnVlKTsKLSAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGRyYXdCaXRtYXAuaGVpZ2h0KCk7ICsreSkKLSAgICAgICAgZm9yIChpbnQg
eCA9IDA7IHggPCBkcmF3Qml0bWFwLndpZHRoKCk7ICsreCkKLSAgICAgICAgICAgICpkcmF3Qml0
bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4RkZGRkZGRkY7Ci0gICAgUmVmUHRyPEJpdG1hcEltYWdl
PiBvcGFxdWVJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUltYWdlU2tpYShk
cmF3Qml0bWFwLCBOYXRpdmVJbWFnZVNraWE6OkNvcHlQaXhlbHMpKTsKKyAgICBTa0JpdG1hcCBv
cGFxdWVCaXRtYXA7CisgICAgb3BhcXVlQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0Jf
ODg4OF9Db25maWcsIDEwLCAxMCk7CisgICAgb3BhcXVlQml0bWFwLmFsbG9jUGl4ZWxzKCk7CisK
KyAgICBvcGFxdWVCaXRtYXAuc2V0SXNPcGFxdWUodHJ1ZSk7CisgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBvcGFxdWVCaXRtYXAuaGVpZ2h0KCk7ICsreSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBvcGFxdWVCaXRtYXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAgKm9wYXF1ZUJpdG1h
cC5nZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4g
b3BhcXVlSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRl
KG9wYXF1ZUJpdG1hcCkpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUltYWdlLT5jdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSk7CiAKLSAgICBkcmF3Qml0bWFwLnNldElzT3BhcXVlKGZhbHNl
KTsKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGRyYXdCaXRtYXAuaGVpZ2h0KCk7ICsreSkKLSAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBkcmF3Qml0bWFwLndpZHRoKCk7ICsreCkKLSAgICAg
ICAgICAgICpkcmF3Qml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4MDAwMDAwMDA7Ci0gICAgUmVm
UHRyPEJpdG1hcEltYWdlPiBhbHBoYUltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShuZXcgTmF0
aXZlSW1hZ2VTa2lhKGRyYXdCaXRtYXAsIE5hdGl2ZUltYWdlU2tpYTo6Q29weVBpeGVscykpOwor
ICAgIFNrQml0bWFwIGFscGhhQml0bWFwOworICAgIGFscGhhQml0bWFwLnNldENvbmZpZyhTa0Jp
dG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDEwLCAxMCk7CisgICAgYWxwaGFCaXRtYXAuYWxsb2NQ
aXhlbHMoKTsKKworICAgIGFscGhhQml0bWFwLnNldElzT3BhcXVlKGZhbHNlKTsKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGFscGhhQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgYWxwaGFCaXRtYXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAgKmFs
cGhhQml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4MDAwMDAwMDA7CisgICAgUmVmUHRyPEJpdG1h
cEltYWdlPiBhbHBoYUltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZVNraWE6
OmNyZWF0ZShhbHBoYUJpdG1hcCkpOwogICAgIEVYUEVDVF9GQUxTRShhbHBoYUltYWdlLT5jdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9z
aXRlU291cmNlT3Zlcik7Cg==
</data>
<flag name="review"
          id="218522"
          type_id="1"
          status="+"
          setter="senorblanco"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196464</attachid>
            <date>2013-04-04 03:37:51 -0700</date>
            <delta_ts>2013-04-04 05:03:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>113420_svgimage_refcount.patch</filename>
            <type>text/plain</type>
            <size>83516</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzJjMDdlLi4yNzVjYjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDQt
MDMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBTVkcg
Y2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBTdGVwaGVu
IFdoaXRlLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IGRyYXdpbmcg
Y2FudmFzIHBhdHRlcm5zIGNvbnRhaW5pbmcgU1ZHIGltYWdlcyB3b3Jrcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4tc3ZnLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1z
dmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY2FudmFzL2NhbnZhcy1wYXR0
ZXJuLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAxMy0wNC0wMiAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIGdldF9ieV9wbmFtZSBjYW4gYmVjb21lIGNv
bmZ1c2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIgb2JqZWN0cyB3aXRoIHN0YXRpYyBwcm9wZXJ0aWVz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvY2Fu
dmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjgxMWM1OWRjNWNlZjFkMzFhNmJkNjZkZjlkNWM2MWUxYTdmNGExMApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTQyNTQKemNtZUh1WElSdHV3cjxvPlc8WD9TWGR+NGJN
R3lvPT5EP0l6UUJhVD8xVldHXk5SPCo9Zkd7ZERRV2Qyck8rbHBoCnpQOU9tc3o8X3tBPXVNPmVu
dUhxZWlhTEF0LWdFWjdfazF8X29jbGFHQU8yJGFtdFdSenQjYGZleVRiamUrOFY2UAp6SmpANkxn
N3duSFUtU0AmMUlHfUV7bDtKSmhqJXpSSUVDUyNReSVLWjkjKGNYUnUxa01DeG9vcjhKaW1sYXpD
RHgKem05fCM2QXVBPHFiTFJSRDgoQ0BUQUo1MjItPl5QZypaayNPMW1ZT3QobDArNWNxYzNqO2xk
MGtIRVElJWtzcHxFCnpoaCQ1bjFSNU0lVlp4VyMxKHxmZT07ck0taCUmZERHY140bUlRLSYlX2w4
KCpyYkshOE8ld0w1PWp3JkM+aFg8Jgp6KCRRVFVCQ0s1dk0hQUt9P0BYUyg9ZSlZST09OztUTyg5
fCVFcG59OT9NWnZ2NlJCZFFySipNZW81dEFPOyM4KH4KejB9XlQ1Wj9IKjlRYzYtSDVvMkU+MCZn
OGM7dF9+STlvfkhgaCt7d2dSfiFtYl9CbVgyWkhXPCZtJWpPfm1XPWQ0CnpIPCg8a0Bqcz5gZSpW
SklTYWFWUTFiMyV4NGJLfiVxbnFaV3EpPXd0KzRwc0t5b1A7anRyKU1keS1sXmZecilBIQp6Pld4
cUpGQko8KDx8XntmRHdePUZYPjFmSD8+WXVKOTRPWjA3KFV1XmJHRyleMUxjRW1UNSEkel5SSUhR
Nj9mO08Kek19cVVWNEdYbygrb05OTl9DWTN2K2NWfjlrdW1idE57NnQtNDxSWW8jbWNFaUk7eGst
I15pXkl4SUw4RDVUfDtfCnomR2ZfPVJ9MTU0OGZJJUlKLXpITG5RWSpfZUo7dTU5P3otTnBLQkNE
RWp2QlBUWFkoYz1yUXZTaDQpbVVrb0EqeQp6PVdWbDVaUmNKYXlObGl8OCY1TSNLYWJMSXVwMGV4
cyVvKXxVIyt4JmFCOWs5ays4aihyV0x6NWdyfmg/UWA7ZncKejFlfj5MZXRabllXSEE0WktkfHxI
WnR0IX57ISVtQFRQeGxfP0s3MkY/JERGQmhmQ2pFeilyTyNQOT1IYCh8NU8tCno9RXVkQnZXOzBY
JWh8Pj1aODlGNzYod2dFWFZtSEVJamY4e2hBWjhBZX55I29KTVdfbytDckB7KWdgT0pSb3hReAp6
aGNQOXhUO157b3lBT0ZzenZlZ0IqNTlUcndVNE43anoxRWNzWiElRzYqfX42XntTWXMrUnoqfXQr
JiEzO1AjeTsKenFhcyF3dlVfPkc+SGQmMEAxXjBJO31eb2Q+X1FmRD5BNVdSPSE+QnJvYj9TR3Vi
dTA8TXQ9UVRuNyRIO09UZmBMCno0UmRUP0tsbmJGUDRMTERXMndhYlZKYWB4XjBsK0w5SiVrMklS
JmVLb3QwN35gfHsmNTlIWGJ0NU5xc2JnU2dFJQp6bVMzP0U+NkNuMD93czVEPXpjTlY9eEppSikp
NVFMNX5XNzM3WlZwOD0lIX5wPmE1RypHKzUhZndMV3VQQlZ1UGwKejY4QmBWIWV4WG9tcnRia1Qx
RDBAKlIja3VfSX07OFFlQEx8UVlVR3JfNWZSZ1RsMTtweWAzcTIrUlhMMytYcT0kCnpTJG9YZnVq
Ri0tMl9OTG10RyErSV4qYipLQ3pqa0F0c2hMPClSPUlZaXR3RiRWaGIxaDRaMWR8S3hpYDQxPVYj
bQp6R0AyZnQoJHwoQnowMF4pPCQjdF5sOE41Z3tWcHw+WmY/U0koOEo+enN2R2FgKnAkVlhHYD5z
SVlGQyZfdSpOUioKem12Vz4xUnRtMWElQiE0d2RXVlRFTWs+bWN1ZWBoKmVYSCZ1I0w+OWF6S2Qw
RUBXQzBvTlkkPEJDJD5vbjlAQjNOCnp0KHhjYHhRVn1RT1VGWVU+P21UeCN2OCtWQU40IXE3c3st
JDVZe0dzdVIqSXc3MD1FcWF6YmtUPHUyJWU5Kjh0eQp6RUo3KGxqbFN7bjw7ITNKLTs4cDE1Nklf
fXRwVTRwWGRWOVdMOS1WRU54UGo8b2sodnNAaWx3TmdqQUQ/Nk1FYU4KekY7JXZzJDQ7WE9lJDlf
aHhtMiQta344KDtVaTlERGIqIyZjakxxcCtYPnNjJi0mTWA/JXZ3NlY1Z2dzJiVxaDVNCnp4blJ2
PClZZT5KT15TTmFEWD9iaHhXM0EtPmdQUkZnYG98KXg5MH4/dmc/eXk0aTlhV2N9Nz05YT5SRzte
cW5USQp6JH55KGs3dXJ1R0JXSzs3czw/TDVedzh2a3FTejlIeFgoQSpVbkxOamF5SGtkbVU7YFZI
ZGlPRVQpOUZERkNQaW0KejkqYX5YO1AmVj9FaW93OTIyTk1MV1dRQ0NFe0RxWWR+eExnN1Q4UjNo
SGt2OWxTel5GQ0hoYylLfFRgZ1BpYUJaCnpTSWU5Uj0qeilzZTdLenokP0R+d2BJX0xRV2AwVUxq
JFhXY3F9cHd3UzwtKC0lWjBkMGpvPz9CWSlkcUN7S25fUQp6ZVBRWitVLTkpPF9wfkdgJDdqLSRD
NWwoY1FIXjBvQUNaYXYrZj1BalN5fGJiSmA/KyttbUVrKHhYcno8N29CKGUKenAtQk1pTlA2Zjhh
ZHhocGhgQUNrPiVVeWIpWXtyZ1Q0KkBMJFdoWldNK05XWV9vMCNtZENUOF90SSNSIyVkVUhhCnpO
bVB0bHMtWD9Yb3cySUk7fik4SkQ9bjFkPD5rcG9sc2dha19UTm5SLXh2KjZzaUpwODI2JkE0KC1z
RUdUez0/Swp6WklnVSUydV9PWnQlfnNkdjZYSHdDNWcxdmR9X1R5R2NzMnpyQz1uQW5SYzF+dUQt
VHtQKUpHOzMtQEF3PkQpczMKejJxVHF4aGxpNm9Pc0dNentWdGViM0gmfFpZck84YzZac1pGeXFP
RCtQdj92YEtqXjwlKmZJRDBlR2dwQFJzbSkyCnpsQEFSbjBWZVlJe210PTNPVUUtPzh5aDVocU4x
Ql9pZGoyOVZ7UkEyRDZ9UzMlbnJ8QzZNaU5Jd348NGk/PSopZAp6PjBWUHhKRDZpVl9WKVJDJGFD
JG9NX3g1VF90KnBsKHJaZXRScF91eUMxRHJxZ0lMeVo9e2dHemxXKDVEbVN+bzcKemk8Pi1Gal5e
Z1JDZyNwN1chcSooNERjX2lhaTQwbDQ4Nz0jZz4+cUNjfTB3fDUzM3NRO2tLMHZRTXFYYGc7NDgq
CnozJEtGTmJkcmt1QExuI25FblB2IWVhNkQmQ2QobEMkMUZwJm93MGxMVUJKe15UM1Q4TDwzciMy
RH1gRHpQM3F7Kwp6anpqO08+ZCs3akFLTkpIRzNTLUd5U21FS3g9UzB1XmBOe3NKeWltQkh1I2wx
KkRESDw/Jkw5Ull9Zl43MnxjIVUKemBjMVJPXiRENmV5KD8rQUBpJSthdz9WcngySHNxbWNNNUZW
bFhnX2x4THJ6ZHlRKSVaPXskPk0+NDtfZWtJU0B8CnpUUFIrNHJwZUZvKWk8VXg7JWpFVCZiJEVt
NFk1VTx4aTtNV2lyc2Y3PEpQeV4pdCl2WjhxSDVTJT8kPDhiMDFgOAp6OHg8eXc+OUhlK3U+Tyh5
QkFhaVlfQDEkNWJHYz9+KDU+Qll6PSUjZyk1TkYwK0RyQ2RiP1BnYzsycWcke1FXKlYKeitJSj1g
akJ0O1l3K3huS2ppb0lQUm8qRChlaDNnRHlDP3B1NWNrNmFPaD1AcHI1fDdPJD00TF5HYnVkbFIq
c3VlCno4cmQ5VyEmU2YpPkIjfCM2cVRAYDt8amooKH0xWlFvKTFrJWQwbmN7XzswT094PSk/TmVL
NClDNnwjTmtwVUpeWAp6VihlcUhTYm9ecCN5d3U9M1FEKUJCeW5kfEswPm5Ne3EwaFI5PEROMz4o
PndKZEFCfExlb3duX2UwIU9rOUZzdVUKek4hPkVAV2IzTHIhTXJWPXhxUTAkPXZgUWxIUUdkfEMm
TXhvJD9gRT9FIUI1a2w8OHw8N2VkflBTfTdrdGY3OH0+CnozU2hISE0/QkFCcF92ZipTU3IwSFJ+
WnZAK1NCI01sR3p3LU9KTUhgM1g4P1ojR0pDT3daRDBqR18pfj8tY3pKTgp6WHFaKkBjR2t3NEJI
SV98JTg5IzlNTUZiRnsoVXlGNlB+WWdlUlZrfF9FdjI5bnFiRj0jUFh9NzlHQ2hfI21kaFkKej5Z
TFgxVml1eipRUEgtS0FEaUdqOVU3V240LXN5KEswUFhSMTQ0S0NzcjFjOzVZOGErNlJSMy0+KGQ9
MXtaN31xCnpyTk4qKHZhVE9+QUxuakBEJkB3JS19Mis/aWA2V0FJOVRwNyFlfVYyVn55QEAzSmd2
R2NYYHRzRXRhbTZvYUZsPAp6SlVsJTMyPi0wQlJYIUFTPDl4XlRgQzNzMHw0anxiZzF6S1JsaHxK
WmgoZXI2PlcjPDcxcD8pcTJqd3hkPGdqa2QKekpsKCFqTlF6SUxHc2NKTWwyZHZAeT1MQ3dYcj4m
WDlWb3cqaFE0JHpXVkkoSktKc3ojRWxTeGNuWHs8MztZcDJxCnpfe2Jifk0tSD0pdDZpKDtIdlNz
RHg3OHlPVnZiIVhnJVQyJGJNN2t3dzglOXJaKigyKD5IQHhsVW4xfX10PFZVeAp6OFYweVFEKFI/
aFQxUnlRNSlGeGp0bk9LdCspN1M1c05WNlJBciFqb3QjX0ElWlBxRjh2P0xSS0NaRklvVGhNQEwK
emA4Q3gzOXlDcnghNENxfTUtVH1VWHItfjU+MHMzcTtTYW5lTVpfMXRGTiNafFg4bTAoST19fj5Q
KEl7byVBcyE2Cno3JmZDQGBgYjZpeHhgSU1BY3Q5Yld6OVN+KVBYMnxnbisxVylle3VyOSkwXyRt
NyhAZ1FmMmo4bzAyUF5QTGleTQp6TForb31tXkVMTSs+bDNTdEszTW4oP0Q2R2xHbWBgVDVEeD9g
bU1KZzxXKSFTdmQ1Z2hSKW1AQl9GMD1gOzJWJF8KenxHM3N3Q01uJDBrU29yN1AwJTxuVDNSaVV4
U2NXaWheYVNFcT9gdlU0emg1KU5UTEh5O0d0bmF0bnlLS1M9dmA7CnpZTSFQKEtPYW9rX3orNVpe
ZSFtJVZTRmgwUldaKVFaN2JAeklpJTJxekQjemN5aGlEKk9CfmVyPz1oe1VAOXY2KAp6STBIcTF7
JSR3ZG9yflVWTWx1ViZVejV6V2JURHd2U1FEPHt4K2pzITBPVTBkY2B4RT9Pcm5hQzRIdVZmLXI+
IWIKejhfb2Z0O3BTUDNpO0ZKKWJFZEYxTDQ2JUArLUpubGkoaGJecD1MNEs+S2omclE2SjYkMSo7
RVAqISgzfD0wM0s+CnoyOG54PyoqfFMrZXZ2YzEqRVFCQ0ZkKm9eLVUwbkI3XjNSYlUkUjRkdDF1
UU88O0tkanNOWHd3Sld+MHJKdm4zaQp6Z0lHNmB1WmV+MEcqQkZOTShmKTxMViRwVWV8UDRDZC1B
cn5EIXZ8ZzRWSTRyTVlTK3IrJUJOeElVbTkpKX19YUAKekdxU3Ryck5abkRBYmpJWishQEUtZj12
RE4kLU5UbWlBPHFySEtVMmc0QGNARHNQMjNHM1UxQFRiYHc7OTFpPkNgCnokQipwWDBDckM0S19+
QSReJSNCRDtIciRIP35KfCpNI0lpNGNgWVVZQ2tDJDU1IWBuZ19oWllHTEhVU2U/K15GeQp6LU1h
XlMrfjdKbUpnZkBPZzQjPU9RfV48c09+aiZ5LUBnNnY8TDY1fmdeUzM7RklLVlpENmVjekNBV1ZV
RTxsVEAKej1NOXhmUXQ/K2dhJDVGU0xtcVdVVlliODNQfnZgbGZiRTtPaGJHcll6bmswPiFGJnhG
YHU8bFlYazd1b189UiFMCnprVTRlYVJwMGUhd1ZCYyVKJnd3Nzs3ZFlTNE5BS2shPDV0YD5tPDlp
TiViR3pNMVBNN2toJm41VVJzSSlld0tQNgp6eWxROCkxejRoNWRmVWEocDxFWFM8bWtjZl5Oc2Fn
IU9kZU9vSkNEeDxIXlh6SGRvZT5JcnNEakJXfFBwcnRfOH0KeldqdjRiQDJVRnl3enw4IWdjfGA4
Vi10KHdRdHlDcGo2Z0MyZ3EoMk02Kz5VflVuSmBheTxWcFRgJk9UQGU9KjUoCno+T2pPSGUqJkkk
eHFxJURZM15NIyghM0lZWFBvO1BxK0NYNz5LTEgpeWRldnojZ0lmaVQrcDFKdVNPbWQ+S0dkMAp6
U0p6JDUzRT1EK2Q7MyNqKjB7TV50d2E3dSkkQld8Y0lDQ3NXViVQfFF5Qm0kOXNyO28wPH4wZD1S
SzJmbERGbGkKel8mN25jXldjeG1xUjltTSl5VVhpIXBVYUdaRThFN01kMWUhYDhFNXc1YSVxK2ZB
fDlOPD5sSl9lPnZvfD9lQXVnCnpAKyhpdGc1b2NSJjMoTE52UDA1Nm0qM1laRW1hcDZHRzFwa3lD
Wik4XiNCdXRQQmtfKiFjSmMrejlFRFRISTJ9Ywp6dFNOYjthejJzcj84OD5LYFc0aG9xMG0jWmNW
eWFUYj8tMVFSb0MjOHwwLXltZUZmTEAtNiY3S3ZVOy1HMGZIIWwKelNUUUBPP3loKDBvNyZtaWkm
b2RIRjRgTHZ4XypaaypgdzI5Qn5WcU1zblV+dE1RUCV7eTdEbSlQQWdWbzI9QkVOCnpFRXVyeUQw
IztrQ34rUEIyJlArP1c1flQtV2ZMOFgyUW1zdEJeSHVHS3VPNzkoeFVtJkVUeFJjYXMpOFhreis8
Sgp6Y058TjwlM0JvOEZLKH5mOGhAbjIhXjB6KlM7PiVSJFlFNCMpYCFlK0t7YX1BYFM4e29UVUNB
SWNoSmNuNFg4cEgKekdHcyNtRHAreER0ekImb2wyfH4tLXJ6QVVqVFBeP0BLbktsNWBAaWd1KkI5
P1Z8dUxtLVFBPl5zRHwtJjN4MHB+Cnp1JiZnWTM1Z2VPamshb0FXTjZwUDNkYHU4Y35PSDhMaU8/
eSo+dWpFbj07VHF3c1pkT2A5TTBjS3tLTFRJNCQ0Sgp6aUM5NnU8K31IJVNvaUo7dm8jbU89OGRB
XjJfK3k8ajllcUlJPVZ6fEhMMX1iUmBMSHJ2VUhQKjghR0tldHpWMX4Keip5UHFEeHoyVTk4Q3NX
cUJ+aUxNOClOV3VXM2VlPGhNaz5WI3BGfG1SV0FuQDd2bFRkRUVtR1FFNDEmKjAqPiVLCnpIfTlr
NU5mKSlQPX5RNWBsUilIfUJLWUl8TWtzJDNYZHR8eWJwam1WPF9udzV5Kz95RyhafHJuPVEtNFE8
KHZ+Iwp6e2tMOH1Ka0RxYGxUQD5SUDtLPj16Syh5QFleZXxYUUlZemwxVjVqNTBqcTgjO19kKVpY
bTItcFohPFljSUxeZjkKej9BM28jWmxuYnZRemdIUldkSSE0b3N9ano4NXghSng5NStkI3Y4eEtK
ZFdCQXhhbU8+aVZmcGFTYmVBPTtJcX4kCnpYS0c+K3B8bmA+QkY+VUNNITlzfVZRRzJ2NitrPjVD
e21ROXF2WF5Wa1lje2p8OWApVU05JGljWihaU2tMdn5PIwp6OVpreVl4bEYxSU9AWlJIZilvPUB4
SyQ2KldOay1+XlQ9NGBSOG9Be1hiLTYxb2R3SjcqbzMjMSFpTDc0XnV0YDkKemlCPVNtWmpANz1L
K3I0Ry1pYGwqQWFydzdQP0VlPmJmUipOVEphI3tpaGp5P25+a31zenAtfCVZI2xPUTtQP35YCnpR
VGQzVEpRUX1OZnQhdDJjSyllRDl0YWhTIW5JYzhwZXpYb2JCJURHKHdtKHhnfHVTRVBmfW5fXz15
LSgyKjckQgp6bGMyUG1vTiYySWY2MXh4Uzg5OGs/U3M/YCpSZTlrSn50PzFraC1xRnxNdHk0PXJq
cHUmezw3X0k2dlV6KDk3ezMKekxkMlJnellqX0lDJCpQUCpxVihjP28wciU/KmM4QWhlU2xmeyln
NE9Acm9oeWNIWUdqKX5OJDc0MUtzYlNsSk5zCnp4XyomYTJoTWR1QDZJQTBIQjVqLTFQdHE8YEJf
UHkrbkxka04yTn5BY3hfVmBwcWB4XjlaJFBnMWd4aEQ0dGI0JAp6bDNPcT52RmlZI3tpSCtQbk5M
c1MpRn0mNFNKMjVlVDNySSVLP1N4WXRMO0lIR0FwIUgqU2xRRXRkKFN2UDxDUGIKejFlP0wlbCtp
P2poMkV0RVBmU3xHZyorTyQ/c1dDQXJZMzVZSXNad05KR1hpVkdATEA8KUN+NkdNaVNDZCt4Mms2
CnpEIWhzI0NjM0tJVCgmRUdxJCFSIT8lQil7WHNGNj0/TWw3bnQ8UUBDSl9PeWliNyZ9Vy1XfktH
Mjdfc0V0cD44dgp6Mj49RjVkRS0oJS1kM3NQVnM9WkhHcn4wVCpWZiszSChGX0lFdHk+PmtKUis5
ZUBFS1VgY1RnemN7JHxyQkFVVjMKejNmSUpPMnF0NXJZbzheVEpMeWNzNz16QjJAMilmbmFecWRi
JVY8akBkKkhRe216NGFueDd9U1dhTnVEej55S3czCnpfdWNHWW0pQEZ3YEBIVEJsa2ZtMnZjWnlA
YGI5TiU5VnF9IVlOLVctam5Ldz5eM2xuVE9Ne2lnejI5RXpNVTdAUQp6eEJfQ3hkM2t5Xnk2Jldf
P2Fufms2PHp5NlUjd2opPDl6VXVpODhHKyoteSZxYWl7dWhBVXUzPURCaCROeCpBTFIKelN6TkY9
Q0VnekpBZTM4QDBJNn5FYUBeSW51TkRXJl5MeDlaNj95dlpUPVRBcGVxMSMhI0prQztuSENxQFBw
Vkw+Cno0MnlCJTl3M2gyPHF8dHRJYDZoV3JZcUloRD0zfC1yKj45WHpQak9fTzxSSGpnTDNnVEcz
ZTtDcFlCOVdpN3hfdQp6SDAjP2VAQGdDTThUJW8xJFpDKzs+KkNOfmZAISgySlc2dW0yTVZnUFJL
MGUjTz5YOzRUMVppSUtmc2s3Vkl9LU4KenlEKHc+b2ZiKHZSVT1YcjI9JChkezJGMVVrPU55TnZa
X0JNQ3V3QVdkK30ofjNJcEN6PTxCU1J7KlZpZj9NVyZtCnpEd3V1bHR2NGhlIVk8ODJsVmtSSmpp
aEpSdFR2MDAmYzZudHh4Rj0pQU0xMHdDYWM9bztyellCR3Z+U2NRcHA0Uwp6ejhMIWs0XlBoe3lz
fG1WUjVKVCVQbUlre2Y/YH15a0xqaE9USVF0MTVQcj0yK0YhP081P20kb0FFP2VKYH1ke0MKenB0
Tmc/ZUFqMm1fU1klWHVGTVRRSUl0LTRzI2x4a0JVfnkqQDBrTWZ0K3ElO2omMG0ja3ViKTRJJGUo
IUB7KypTCnpvaWVmfmIpQXhNVGw2O3RweDc8JVUqQX5yQkNJNn1mfTRWKyZpZW8jMHlRdW0pOylY
SExNUkRiekxse2k7UUAkKQp6Y0c2ZmxPOGBAPWMlbStjUGBpc3hnOFozSFJ1P0Y/aEM/WjdYK3Fe
LUxHNHV+QGFRI19yPT9CJnkoWThhaCo2clkKem4jO3BaTD9mZFhLKillZGl8dDN2R0xtWjhYOXsk
UUx+TG5gTFMwejF6SyNeVzZldDB0NnMwVjVVUlNnWHdkJDxqCnptZFJOUk8ma29DaVpgRGxiMCUm
UkI0Wj1yQlF6emttKGk3dG9FbTI4JW9jbVd3cndsdmxXN3luVWh1Nl5XY3xXWgp6bG5RZ09UPEhv
eExaWmpKT1ZEN0hyeE0mNUtJaj4lI3ZIUnNIfURzT1NZd0xVWVFNLUt5RHRzNipfWH1geUl3Wm8K
emRVQ0V3Zm1RKShhX1B+QFQ7c3dZUWNKNTI4fCFrMmdPbThgOTs8TW9obmAhQDYlWnAoNmZTXkpW
QXNseF9fOzZVCnpUITw4P0AhTVBsaXtWN0ZxUCp2UHVZODBLRm0xcUNNQFpgN1k5RnZvaEprJUI2
cXRHayp0X20xemF7Smw3RndhXwp6KChvPTJpaiV9Pz56KUV8ISRkO0xvUUhVdFQjLW01aHghcz44
emhWKj1xWjQ7TyNzbX1KWUghSlN6QktaNWxqPmIKejhPQVF2eWEpcFJ3OVgqTkhDVVFjYDRHQGJ1
JUF9M2xIRXxpTGZaYFAhKkgjTWQlSGBxSTZ6UzByTS0oPXsoSE1MCnpfdVV4Qmc/QCo4UkhmU2xs
cXxIMmAwYzxIdmN6aUJeSW5rJj9neCU4THNjPiVEZE1KTzlON2lxbkw8IzFVRCsoNQp6P0s2dnVe
ekwjMzF2b0B1MHtkbDZoViowMyYkQ24jd29QUUB1SFFYfGN9dk8xZ3tNcUk+TzxlWDx6YGpyQE4j
PyoKejxjMXxjRzZaNTZedUliY3M+SEZjREN+T0ptXmF7KEJ3QHBISE5sVlcrMn48PSopQmlgM2RI
S3I4b3Rlemw5QTZxCnooQDw4ZWYycm07VnZ1ZkFnTmJyJl95LX4zcmlBJiNtVEg1b2YmPiQlNHt4
KXRMX1R+JkpPUGV4TFlUUVcwQjlNcgp6QT9raTA8QE5FJUZkaTlFRkkrRSNPXiYkUDNjQyg7T20o
bUgtUU5xTl8rfTdCV0FhSUFJNjY9TyQqU29UNVRNI20KeiZRMVY1XyRAXndCdEAhQ3smLUo9aE0+
UFJsbzVFMDsxdVRlM00hNUZlNyYxNUZ5UDgzWDxZRkJGMXotM1FhM0tzCno8NU84IT0zTDFtYlpS
O0hPNCN8e0xOVEtwYE1JM3AwMitSVEdPYmRJdWgtWTJxTT5SeilKZlA9JkJ9Rzs9MV9gaAp6UTdQ
IWU3RDswRF5YSiQ1T0t4dUJldjJKYXI7NE9HK2d8P1ZOeEQlNSZjUntzIVQwQWNnITVwNGAkNk56
WTRjfi0KenYoTX01KDdVMXctMyNsJm5EYUo0VzR0ZnxyK3VgUllRSCFQZEpmKD00Q3BtVyZRIV5K
TVJ3U1JRZExee29qbjw5CnpVdHBsYFJaPTAhK2RSe1RDTzt2N252JTFtVHdLVkxNTWw8LWlwIXBN
PHhfKGIhREAjUjJweX1hc3F5YkV4REg7WAp6ajxfVXRpcC1LWlBQeWhiYnloTjNePnE0Q2woQ2NP
SDdCPkBQbClZKkZCOHBqTi1lWG1ie1ZkKG45MERYPTNJRU8KekZRUUBSVXVZd1BVM1pGYV9SQCVZ
b0g4WUxodmxrakhxKFBxa1VycVRUQ0d9N0xGfnlMOWoqV35NKShaI3hveWRaCnpjTWg+PyVJQCRt
dVpNSVVjKWsyYXMob2lZVEA2KXlxWlE7bXVxIz89elcpTX4rRDZAZDtVd2RRRCZNQiFicCt5OQp6
JUM2QVEyISE1TyNfO24kOWxFYTduZzk9YWFwfT1rWTdsdXFZJD1iKzQxNzc4I2xHd3thYmgyI2JW
TnQ5YF8/fi0Kem9kXiFaYmd0cmQrJiFAVDNFKnUrbGw+WngrTVluV2tqSlAxTG5sVWw7VnJ7Jj17
ZXJ8SVd1Vkd2YCsqdTcjYyl+Cnp4WH5hZmZoTyFNOytGI0VhPzF9RERJLSsqWEhRJUJ1YWJsejs/
WlFZb0tHdHR0YW9sczU7KVNAN25wV1RxTjhOTwp6e3VDaFdXb1NmJXNGMyomVlBoNHVCbEpoO1J9
NSRJeCZ2YnYyUmRuMTN6eDhAMkdibm9mcChZWVpiQTs7NEE7aGsKel5XIzw1X1JhbXVCPURXOC0k
dUNIYU5NP2VzN09lWEtlZGtxJT1VYDAybk1HbFFnVTY/YioxZ3pKe3ZyO0lSS1A8CnpQWFVhd2NF
M3B9RmRNZ1NBN25gcEYoTFNFMDwrd0hlfV5yfWNRJiYjVF8tWmQ0b0lUaDtIXzZzTWR7aiFSVWwp
fQp6SShXaztsekBgYk99I0xJdEQoOUN0aT9sVXEtQUFRZnQ/MzZqSnImazdGbTx2UEQ7Pj5MQ3Qw
TCU1IS0zakZBS08KendudX4pa309KWFiVURFNiE7bzwwUDZJfShLdW1ORiVAWE56TURZMmU7SEto
YzYrYyRpU1VZRyRAS3U3Ul5rXytUCno0YHhiN0N1JH0jWll7SFR3WiNyMEJYNioxd05gRztXfllr
cXotTUF5JSpFUzJQaGQ2YDtWV2NsTnlhPTVhNCRZUwp6VUwpK2c2K3I1ak09JklKSn4kVnFMUXlr
Zl5Ldz1ScGA2YFR5KURVb15fJTtqQ0g+d0kmTGQrRl9PQDJjWTA/NH0KenJZMXZmRSNseWJaJFVW
byM+WVB6a2FPeVBKVE1CQUNSPUNoVW5VOUFJaU9SMGluPHkxVW5lQ0s8Z2U4YGJ+ZXwlCnowNm4x
UHooaT1nQG1+eF9FP2xuK2p9fTcpJXhJeH53LT9JY2laZm58Z1g5aDw8eitIPjVZKD54MEwlISUt
PDN+TAp6KzR+bW9SRzdoQlFVQyQ5MkBOREYwT1Q0MENaRXVsJmohekZzQkx2WEN0PHYmOT9IZUEx
Uz88YUYlZlN+P2JNTUwKeiNkO2hJXntgPnJzb3BXbGA4ITtDOHVPMyF3ZVAzY2puKVQmJn1CVEVr
PUFBOTw9a2NaWjNAJjMrMHIyTGIxbV9sCnpyaC1fdDstSXlJPWxEcz8jLUF4SW59QmowZWdaaHg4
ei0zWUd6QzNPWW9iRUsxbGN8czZCOUd1eFZ1ZkdkSD0ybQp6JUhMaHIxP2IhYWBHTGRlQUE8P293
dURPMUhyODBeR0U+UjgwN2U5IU5aSUQwaUs+MFdtRn44TWZya0duVDAxXmMKejFSdlApNCFYamZ6
SWxUZC1SfkhYbmQjSzEtZEheREdnMUNQKFVLSlV5MypoTCkwX1pia20lTXttPUdBUD1wbUdUCnpj
Q3F5aFJ+dDcxYkhkPnUtfUk2TTA+TGZLXyU2VzZ6b3djfTdCIz4lcDsoZl45XjBiSz5DP2M4a0Yk
eSg8PmVSTAp6Qm1lVVo7NlFnRmE3fCFgXzU3PlJJUSN0U1JuMmVEZWZEUS0tbXVSYlA2KE91cDAm
USVjeHFqflphel9xWUl4UT4KemVZbSVMdHl3S0E7VHkmUG5aQlNmdjJMbmV0STEjRyN3Xnd5Sys7
NUhOVHdsfDhHK2xgU1JxbFRKNW5GRHBaJCNgCnpzam01OHpEUChFdmd4RkRMWSVUJTJAb3NHJFE1
eU1AeVoyOz1MfW8wd0x5T09aZ3BVVUY1M3NhaVpFWilhK2JNOwp6QTJXcE1gTilCKGNfX1NfKHp3
PXcxY2VOeUVwWUdkVHZIaFFQZXRReUFCfDI9eTVaXlkkdkdHR1dMN3ooaE1rSj8KektYfS05ZzJy
aFpWSnNveDAhMEZDRHJuKHhyO0VacUcwYiVIbFY7MD4qcWtve3gxdU5+WCtQYUx2Xnl6QlJEaEhL
CnpWdiN1TE0oSU0xMEd2V2M4aUJiNVh2NCQtY2tydkIqWT84OTE4T0gjPGYqKT9DNUpqQXNqNHRA
IT8/WCZoUyszfgp6R2BJI2hScVdsayFDJmBRQ0hHYzAjdismY2lsO0lHZUx6OEtifXpSbkUmWmFx
UFR5WUEmP1NGIytUS2t7MkNSZSoKenp8NjQ9aVFhYDhYSVI0OU9HS2phYnEwT29QJlh9aTF8fGVv
NUNNYkdKYD5SQFNuNXNfWmJ5U2RvJkR0SCpHbn1GCnpiclVuTTJLPDNCVXF6eFloTVNCY29OU0dF
LT0pKVZkdFB9WFFNdnZUVig2TGFYP1p8R1NhT3V0cHp6Yy1HenFSRgp6MGZtVz17OzB0PFIoezJH
OW8keXVMMmszRmo+PWp8JGg7dVM8MXJPO2QzYVRqLTdwVEBnVnw2VSpkViZTKzlkYk8KenZvckph
cnwwRmN8QT03TGNWVnskZTh3TCNBaz9fdlNmdmY8eHs7a3BJYkklfkpSKkgtNVAkMX5lM0cyWUZn
V19FCnp3OTBsRWhwcl5Kd19VNjl4WElWRkhxfFomLUdmMnlWQV4qfHxLKyZBYSt+fkVtPktzIWBx
WkdEOV9NXmRvRUp6aAp6dSZCRXxvP3BjIVhgWX18VH5IdlB2QWZgY1EtVlAtWGgqemRMcjV7JCZ8
YnVDUk9HTmVVUURedmRKaWBCZzZgdkwKel9VdCQ4bXZnSSlpOSk3eGthT1Y1IXVub2JpS2t8eGNT
Wk0+Pis5TmtFM01JKSs8SndmMz8xP1p4bHY5MjZjcCpXCnpvekB3YzJHY3spSjNuQUR3NVM3UFZa
UTZ9WEZNOTE9ZyFQZU00bFY8WW1HYVQrSXdsPVJSX142SzZTeFk3Wit+SAp6Pzd5bkNNTXZFd3dl
WFJNUzVZTEUyb3dze0NHaUMhQl9rQG9uZEktQnAzYSh+aCYreXZYfi03Ky07O2BlO3UheV8KenxG
Vml4Pz9CcUtUSnhYZFk7Wk1PXyFnbVJzQz8lajtfSjlUSTJkPXRlKDdIQWlBWGpZe3RFRns9Zyho
IXtPIUx5Cno3fCpjcnc3JV9OeXVRaSFIWT5IMUBzZ292T3cjbV5TcTFFeVJAPUFWQ35eWXBVcVps
TXJBXndvQmd2ZlZ5ODJ9NAp6QDFNVHFraHV+ZloxQGZ0V0RwSTtwckl+QDRPMzI0OTlxdyZUQHRh
SW8pUVFySXlnOShud2wwM14+cnlzXihpRXgKejU7djZgQlY9NzdXVEIzZlU7MTx5aENZcGREbUd0
T1pWLUpQcTs/LVYkWTZVLT50NTZ2JVE+fkxyfil9PDVvSXlLCnpDY2VzQmxYTFU0anlAU1NpJj5T
PWVHUihLV2k+dEJfc3BkSjMmdDV8MStOViNfNkphN2xNbHw2Qm9HV1plXktjXgp6ajQ8UmxXYFhn
PFAtbEhZT183NjdTQU14RGxFc2BSO0JZOCNtaWctZiFWckM3U2x9IXlEdy1DNSNxY0BWc3VnaCsK
ejZANGcmKHk9OG88bHVgbnV0bk4jWiY4YD9aRXB6I2w7S2IwJCh7WUAhbjM2PGdtQnAtT3VKajZk
ZGErTSUtUExHCnpAb092eW5ZPyNfKEw0NzgxVSghVkdZYVBEYn5fP0RxTll4NWtfZDd8bWRjJjNW
RDY7bW9+ZC01aTJBSWV1MWAxVwp6X3hoJUxhIU4ydV5zI1R3UU4rKWcoaVNyNlNOeFI8Jn15c3Jf
SGUtPEwhMGNAJjRZbkYkZVhvS3pySGQoQE18dSsKemlQKElWOHFjMihaSWQjLWVxX0Y8UTNZfjxs
SitpOE0mWVM0Z2A4UVZWbjNVeVo+eTdweTU0ajJoRTdzJCktaWtjCnpmUEsjejR8K2Ved2tqNm40
THBEN1MhaWxtKjg3NzdIOCY2JGQ1Q0A0bTZAQnYqSnZAc3lfKGBoez1sOXsxNVFtdwp6NDcrNWNG
TiEoa0lfWXZtdVNNNmM8O0JzNEI+bShyclZDfCRUNlVJNUAwM01wWDwwN2VDWj0mNF5EOz5oTCVF
WDgKenc5JGU1OTh2TT5OcCtnaWF4enxZRUYrcTJkMkpEYHszTkRXSVhSaGZaOTZBdGBAQypebEhz
Ul44R1p2TTFnc1p6CnpDJGpZT1BWRi0pJjJRZF4qZUxuNzBLUztWe3kqY3UlVHdKenI3U3A5Xn11
ZFYmKERVWFdLP0VXVnQjZ1QqSXpTeQp6bCpjP0Fue34qWDV4b1BhdCFyb0pYQXs9dTZVSlRUKHlp
UHpua0ZNZUxMbFMwUUtmSz1mPDxIJiZxYSF7NnY5QmcKekFvZmVoVkd7eFNuVSg0SXtObjg1aVJV
cXUqXn5FWGJxeDw+R0xxSypFQjFuWiNyfGVMWW98SDg/TEtxPipOYVpLCnpFamAxcEtWR2pKN30o
WDwpdDVhYj91PkdFWGtgRVhkQioxKjU8NkdCPCspdnMjbEI5a29pWjQ5a3U/bWBpPENLVgp6NHI5
bnUoNSo0bzxCPm5KcGJMZSRGZ0dBSnVYdWhuKjExTXljS1VER3Q5aWYoTiR4NT91dVU8MXAoKz1e
VkhCTSEKekpIP0gjSCVyXis7OWdTYyFnTFpoRnJ1P0h4Uz94b1NrfDlfTXI2MWVWaD80ck5oKExA
eDljU0h7aDd6R2xsUjllCnpPaTtGMDRNaUFoek4+ZSQpO3tGdm1adD9WVkJHN1VpYikzR3JUbD1Z
YUVWYmIxfUZYSlYtc3UoPmlLJX0hP0F+MAp6NVZLbWExfitMUk5PbWxpT3g5MHRPSCMoeT1TalV1
UWExZ2dVUmpuOyh3YzZsJHMmUmVwWDFoV0dPVDBDQE1SUF8KemZFdyU7QilkM240e0pONWd2Yn5D
QmMmYmU5dkpuVDQ1V3lOUEtvX0dnKnZsQE17aFZrKEFMdVh2fV48Mmc3IUxsCnoyUGFlaSZlPF45
KytgS2E+fTxSZCtqNDR0KjNYJXJLdVAmZHc0Sm00O3RzNzEoZ1pAd0FGbVh9Q2dJfDJAMHxGeQp6
ZX5AZ0o+IXAoWWQzUyFXdUdOSX47dHZUcmU2RTU2SXJpeDIxQm02RExLZ2NGVSE0NChhZ2RldjR1
dTNeQnVucEwKek1fPD1iYnpPSVRfcW5ePmxQQFE7UG9nLWhCQEoxdDg4fip4XyUkT0Q4RExLdWJK
bTdAaGtEb0xrZGMjLXRnPmZaCnpRIThMN15JKjBSVT87PnZAfCFZRE52U2dWLUJeYmw4c042Jnl0
cTVFbTk7QjE+eVh8QF4hZklyTUpjOHZkaD5PRQp6Y0wla1l4TzRocWBvd3gjKjBHUCpydlBrMG9n
bXZ5MmRoNEdoWUExdXYrbX58TEl3cz43Tns7WD5IfiVMdyNAMWcKeiQzSmpDT1dHbmd2TzltcXlt
S0hgNXdBR1ZRO3pKIysjOG8xXjJMJW51S2tnfSY7O0BfdlIjO3tiSi1YRG8mT0hXCnpINGsoezB+
fFNXbk87VXJVYXdxOUV5IXsjUlVqZytqJTg1fjh3cnx3aT12YTBSVGNoaDNiMiN4T3xHUj9aT15p
PAp6R1M+VmhmT0hwITN9dkE8VkU2VVhLYk88YigkOEkoJUN6bHJ8Rk1De3dfNX0kNnJnISZocSh+
c1NYamZqLTZ8d0kKem03MCtXbDNLO2JHWURsSHJ7WXRWYnZ4ckAhe0J+QFdpaGZmeiE3b2VYck0k
eWY3V2c4c30kJiFScnxsbGYhJV4rCnpIPkp+UVpCPD9mYkcxS0d5NjVlJis+KzhWYnpPcnQ8bzxU
TjwqKmxWZEZXVlQlIV5PVSZQY0lIelNHcytVJCp0Swp6PiohTD82Vz57S210M3lFZGt5cXdFR2ZP
fmI0YVhYa1VZNCMjSn58SHlyUG48KjlrJGhWUiVkTmNgMlp5JCYjPHAKej1pTzAlOVQqTWtePC03
O3tAblp5OEZ2dnhuR28rZ0hVRVBkXk01cFZ7eDUjZChKclZkLT14JFkyKzI+SCpXWTcyCnpKbDtI
JjV3bGBpR3dzb1ltY0lLVUM5dGMlcEdSR251aiN0fF47I0lMaSNfPz5WNnVHcEJrezRsU3tVMzhH
KTsoQwp6MDZwNS1KakN9YipfKHxxTSpsY1Z8Q2F8JnxGP0Q7QTc5VGpHYXxhWHlEZ0t8Wnc5Q3hK
VWh1OU5NfUUwS2B8IXUKelh3MmM2RmhIS1gpS080Vj5RfnJQelBoNUBgTkNVSSRsdmd5Vld2Xjgz
RnEjVGEyYT0yPlpYdChiIVkhdW9hbkFaCnpKPjA5VHRqcm87b2JCRkw+PClScT1HRHZSR3xjQXxr
JkB3YWNgWVRJMyg2RE9ZdnF6RGBmOU0heTshWHRQbzBXQQp6RUh1Uig4MVVgOWltPztGbFE+KUh5
N3ppKDU0NCFvdDFXfHUyZXctNEp7USZocXJTQWc8IU58T19mTXtzOHo4djsKeipaTVNDNzJmaUhU
VWVQfHBTUFgqZV5IKyE+YztXT3hRdV5TPWxANjVgQ25aOHxHeGNTelVLNGFBQ210VE1FKGZYCnpY
PSlARG5sQWlOJipOODhmMTQzLT9uPVBXVjV7LVpjbTdqNHtAKkE2VyFDY1Zrby1GJmU9RHpEVCZU
bkMhVmBDSQpUUFFmNEdBdWckRnxDMEIhI3FJd0VAfWdlaQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtcGF0dGVybi1zdmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NzhkNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LXN2Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGVyZSBzaG91bGQgYmUgb25lIGJp
ZyBzcXVhcmUgYmVsb3cgY29udGFpbmluZyBmb3VyIHNxdWFyZXMuIFRvcCBsZWZ0IHNxdWFyZSBz
aG91bGQgYmUgZmlsbGVkIHdpdGggMyByb3dzIG9mIDMgY2lyY2xlcy4gVG9wIHJpZ2h0IHNxdWFy
ZSBzaG91bGQgaGF2ZSBvbmUgY29sdW1uIG9mIDMgY2lyY2xlcy4gVGhlIGJvdHRvbSBsZWZ0IHNx
dWFyZSBzaG91bGQgaGF2ZSBvbmUgcm93IHdpdGggdGhyZWUgY2lyY2xlcy4gVGhlIGJvdHRvbSBy
aWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29ybmVy
LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLXBhdHRlcm4t
c3ZnLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjMzM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXN2Zy5odG1sCkBA
IC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorIDxoZWFk
PgorICA8dGl0bGU+VGVzdCBmb3IgV0sxMTM0MjA6IFNWRy1iYXNlZCBwYXR0ZXJucyBzaG91bGQg
YmUgZHJhd24gY29ycmVjdGx5PC90aXRsZT4KKyAgPHN0eWxlPiBjYW52YXMgeyBib3JkZXI6c29s
aWQgIzAwMCB9IDwvc3R5bGU+CisgIDxzY3JpcHQ+CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgIH0KKyAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeworICAg
IHZhciBpID0gbmV3IEltYWdlKCk7CisgICAgaS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLDxz
dmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNTAnIGhlaWdodD0n
NTAnPjxjaXJjbGUgY3g9JzEwJyBjeT0nMTAnIHI9JzEwJyBmaWxsPSdncmVlbicgLz48L3N2Zz4i
OworICAgIGkub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdLmdldENvbnRleHQoJzJkJyk7CisKKyAg
ICAgIHZhciBwYXR0ZXJuID0gY3R4LmNyZWF0ZVBhdHRlcm4oaSwgInJlcGVhdCIpOworICAgICAg
Y3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47CisgICAgICBjdHgudHJhbnNsYXRlKDEwLCAxMCk7Cisg
ICAgICBjdHguc3Ryb2tlUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisgICAgICBjdHguZmlsbFJlY3Qo
MCwgMCwgMTUwLCAxNTApOworCisgICAgICB2YXIgcGF0dGVyblggPSBjdHguY3JlYXRlUGF0dGVy
bihpLCAicmVwZWF0LXgiKTsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSBwYXR0ZXJuWDsKKyAgICAg
IGN0eC50cmFuc2xhdGUoMCwgMTYwKTsKKyAgICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwg
MTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisKKyAgICAgIHZhciBw
YXR0ZXJuTiA9IGN0eC5jcmVhdGVQYXR0ZXJuKGksICJuby1yZXBlYXQiKTsKKyAgICAgIGN0eC5m
aWxsU3R5bGUgPSBwYXR0ZXJuTjsKKyAgICAgIGN0eC50cmFuc2xhdGUoMTYwLCAwKTsKKyAgICAg
IGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUwKTsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCAxNTAsIDE1MCk7CisKKyAgICAgIHZhciBwYXR0ZXJuWSA9IGN0eC5jcmVhdGVQYXR0ZXJuKGks
ICJyZXBlYXQteSIpOworICAgICAgY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm5ZOworICAgICAgY3R4
LnRyYW5zbGF0ZSgwLCAtMTYwKTsKKyAgICAgIGN0eC5zdHJva2VSZWN0KDAsIDAsIDE1MCwgMTUw
KTsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxNTAsIDE1MCk7CisKKyAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9
CisgICB9CisgIDwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgPHA+VGhlcmUgc2hvdWxk
IGJlIG9uZSBiaWcgc3F1YXJlIGJlbG93IGNvbnRhaW5pbmcgZm91ciBzcXVhcmVzLiBUb3AgbGVm
dCBzcXVhcmUgc2hvdWxkIGJlIGZpbGxlZCB3aXRoIDMgcm93cyBvZiAzIGNpcmNsZXMuIFRvcCBy
aWdodCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIGNvbHVtbiBvZiAzIGNpcmNsZXMuIFRoZSBib3R0
b20gbGVmdCBzcXVhcmUgc2hvdWxkIGhhdmUgb25lIHJvdyB3aXRoIHRocmVlIGNpcmNsZXMuIFRo
ZSBib3R0b20gcmlnaHQgc3F1YXJlIHNob3VsZCBoYXZlIG9uZSBjaXJjbGUgaW4gdGhlIHRvcC1s
ZWZ0IGNvcm5lci48L3A+CisgIDxwPjxjYW52YXMgaGVpZ2h0PSIzMzAiIHdpZHRoPSIzMzAiPjwv
Y2FudmFzPjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgzMGEyNS4uYTRk
MzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2MyBAQAogMjAxMy0wNC0wMyAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKKyAgICAgICAgUmVncmVzc2lv
bihyMTQyNzY1KSBCcm9rZSBDdXN0b20gU1ZHIGN1cnNvcnMgYW5kIFNWRyBjYW52YXMgZHJhd2lu
ZyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hpdGUuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUGFzc05hdGl2ZUltYWdlUHRyIHR5cGVkZWYgdGhhdCBpcyB1c2Vk
IGluIHBsYWNlIG9mIE5hdGl2ZUltYWdlUHRyCisgICAgICAgIGZvciBtZXRob2QgYXJndW1lbnRz
IGFuZCByZXR1cm4gdmFsdWVzLiBUaGlzIGlzIG5lZWRlZCBhcyBTa2lhIG5vdyBtYXBzCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyIHRvIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGFuZCBQYXNzTmF0
aXZlSW1hZ2VQdHIgdG8KKyAgICAgICAgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+LiBXZSBt
b3ZlIHRvd2FyZHMgcmVmIGNvdW50ZWQgc21hcnQgcG9pbnRlcnMgc28gdGhhdAorICAgICAgICBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYW4gdHJhbnNmZXIgb3duZXJz
aGlwIG9mIHRoZSBuYXRpdmUKKyAgICAgICAgaW1hZ2UgdG8gdGhlIGNhbGxlciBpZiBuZWVkZWQg
KGUuZy4gZm9yIFNWR0ltYWdlKS4KKworICAgICAgICBQcm92aWRlIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkgaW1wbGVtZW50YXRpb24gZm9yIFNWR0ltYWdlLiBTVkdJbWFnZSBubworICAg
ICAgICBsb25nZXIgaG9sZHMgdGhlIG5hdGl2ZSBpbWFnZSBpbnRlcm5hbGx5LCB0byBzYXZlIG1l
bW9yeS4gSXQgaXMgdGhlcmVmb3JlIGNyZWF0ZWQKKyAgICAgICAgd2hlbiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIGlzIGNhbGxlZCBhbmQgb3duZXJzaGlwIGlzIHBhc3NlZCB0byB0aGUK
KyAgICAgICAgY2FsbGVyLiBGb3Igbm93LCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG9ubHkgZW5h
YmxlZCBmb3IgU2tpYSBhcyBvdGhlcnMgYXJlIHVzaW5nCisgICAgICAgIHJhdyBwb2ludGVycyBm
b3IgUGFzc05hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jYW52YXMvY2FudmFz
LXBhdHRlcm4tc3ZnLmh0bWwKKworICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNv
bkZvclBhZ2VVUkwpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVh
ZCBvZiBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5oOgorICAgICAgICAoSWNvbkRhdGFiYXNlKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VCYXNlOjpzeW5j
aHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2
ZUltYWdlUHRyIGluc3RlYWQgb2YgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVlIG9m
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZCBvZiBhIHJh
dworICAgICAgICBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJk
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6
CisgICAgICAgIFN0b3JlIHJldHVybiB2YWx1ZSBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIGluIGEgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4KKyAgICAgICAgaW5zdGVhZCBvZiBhIE5h
dGl2ZUltYWdlUHRyLiBXaGlsZSB0aGVzZSBhcmUgZXF1aXZhbGVudCwgdGhlIGZvcm1lciBpcyBt
b3JlCisgICAgICAgIHJlYWRhYmxlIGluIFNraWEtc3BlY2lmaWMgY29kZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1h
Z2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICBSZXR1cm4g
YSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICBUYWtlIGEgUGFzc05hdGl2ZUltYWdlUHRy
IGluIGFyZ3VtZW50IGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAoQml0
bWFwSW1hZ2UpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0KTogRGl0dG8uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoSW1hZ2VF
eHRyYWN0b3IpOgorICAgICAgICBLZWVwIE5hdGl2ZUltYWdlU2tpYSBpbiBhIFJlZlB0ciBpbnN0
ZWFkIG9mIE93blB0ciwgbm93IHRoYXQgaXQgaXMgcmVmY291bnRlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICBSZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQ
dHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKEltYWdlQnVmZmVyKToKKyAgICAgICAgSGF2
ZSBjb3B5TmF0aXZlSW1hZ2UoKSByZXR1cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBv
ZiBhIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleCk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oOgorICAgICAgICBIYXZlIGNyZWF0ZUZyYW1lQXRJbmRleCgpIHJldHVybiBhIFBhc3NOYXRp
dmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYXAgTmF0aXZlSW1hZ2VQ
dHIgdG8gYSBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbnN0ZWFkIG9mIE5hdGl2ZUltYWdlU2tp
YSogZm9yIFNraWEuCisgICAgICAgIEludHJvZHVjZSBuZXcgUGFzc05hdGl2ZUltYWdlUHRyIHRo
YXQgbWFwcyB0byBQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZm9yIFNraWEKKyAgICAgICAg
YW5kIGlzIGVxdWl2YWxlbnQgdG8gTmF0aXZlSW1hZ2VQdHIgZm9yIG90aGVyIHBvcnRzLiBXZSBu
b3cgdXNlIHNtYXJ0IHBvaW50ZXJzIGZvcgorICAgICAgICB0aGUgbmF0aXZlIGltYWdlIHNvIHRo
YXQgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgY2FuIHBhc3Mgb3duZXJz
aGlwCisgICAgICAgIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciwgdW5saWtlIEJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAgIFJldHVybiBh
IFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIFRha2UgYSBQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRyIGluIGFyZ3VtZW50
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBE
aXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAg
ICAgIFRha2UgYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhIE5hdGl2ZUltYWdlUHRy
IGluIGFyZ3VtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgU3RvcmUgcmV0dXJuIHZhbHVl
IG9mIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgaW4gYSBSZWZQdHIgaW5zdGVhZCBvZiBh
IHJhdyBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVC
bGVuZFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNr
aWEpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbG9yTWF0cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4Ojpw
bGF0Zm9ybUFwcGx5U2tpYSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFw
cGx5U2tpYSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBs
YXRmb3JtQXBwbHlTa2lhKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZURlY29kZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05l
d05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3Rl
YWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L1N0aWxsSW1hZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0
ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuaDoKKyAgICAgICAgKFN0aWxsSW1hZ2UpOiBEaXR0by4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgTm8gbG9uZ2VyIG5lZWQgdG8gYWRvcHQgdGhlIHJldHVy
biB2YWx1ZSBvZiBhc05ld05hdGl2ZUltYWdlKCkgbm93CisgICAgICAgIHRoYXQgaXQgcmV0dXJu
cyBhIFBhc3NSZWZQdHIgaW5zdGVhZCBvZiBhIHJhdyBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y29weUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpk
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAg
ICAgIENhbGwgTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKSBmYWN0b3J5IG1ldGhvZCBub3cgdGhh
dCB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgaXMgcHJpdmF0ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
RGF0YTo6Y2xlYXIpOgorICAgICAgICBKdXN0IGNhbGwgY2xlYXIoKSBvbiBtX2ZyYW1lIGluc3Rl
YWQgb2YgZXhwbGljaXRlbHkgZGVsZXRpbmcgaXQgbm93CisgICAgICAgIHRoYXQgaXQgaXMgYSBS
ZWZQdHIuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IFN0b3JlIHJldHVybiB2YWx1ZSBvZiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIGluIGEg
UmVmUHRyIGluc3RlYWQKKyAgICAgICAgb2YgYSByYXcgb25lLgorCisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIFN0b3JlIHJldHVybiB2YWx1ZSBvZiBm
cmFtZUF0SW5kZXgoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEgcmF3IG9uZS4KKworICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFs
dWUgb2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkCisg
ICAgICAgIG9mIGEgcmF3IG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEv
TmF0aXZlSW1hZ2VTa2lhLmNwcDoKKyAgICAgICAgQWRkIG5ldyBjb25zdHJ1Y3RvciB0YWtpbmcg
YWxsIG1lbWJlcnMgaW4gYXJndW1lbnQuIFRoaXMgaXMgdXNlZCBmb3IKKyAgICAgICAgY2xvbmlu
ZyBhIE5hdGl2ZUltYWdlU2tpYSBvYmplY3QuCisKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
U2tpYTo6ZGVlcFNrQml0bWFwQ29weSk6CisgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlv
biB0byBtYWtlIGEgZGVlcCBjb3B5IG9mIGEgU2tCaXRtYXAuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSk6CisgICAgICAgIChOYXRp
dmVJbWFnZVNraWEpOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlU2tpYSBzdWJjbGFzcyBSZWZD
b3VudGVkLiBNYWtlIHRoZSBjb25zdHJ1Y3RvciBwcml2YXRlCisgICAgICAgIGFuZCBhZGQgYSBm
YWN0b3J5IG1ldGhvZCBpbnN0ZWFkIHRoYXQgcmV0dXJucyBhIFBhc3NSZWZQdHIuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYTo6Y2xvbmUpOgorICAgICAgICBBZGQgYSBjbG9u
ZSgpIG1ldGhvZCBub3cgdGhhdCBOYXRpdmVJbWFnZVNraWEgaXMgcmVmY291bnRlZCBhbmQgaXMg
bm8KKyAgICAgICAgbG9uZ2VyIGNvcHlhYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpwbGF0
Zm9ybVBhdHRlcm4pOgorICAgICAgICBTdG9yZSByZXR1cm4gdmFsdWUgb2YgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSBpbiBhIFJlZlB0ciBpbnN0ZWFkCisgICAgICAgIG9mIGEgcmF3IG9u
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEgTmF0aXZlSW1hZ2VQdHIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKEltYWdlRnJhbWUpOgorICAgICAgICBIYXZlIGFzTmV3TmF0aXZlSW1hZ2UoKSByZXR1
cm4gYSBQYXNzTmF0aXZlSW1hZ2VQdHIgaW5zdGVhZCBvZiBhCisgICAgICAgIE5hdGl2ZUltYWdl
UHRyLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRBZGRyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmdldFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Ondp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmhlaWdodCk6CisgICAgICAgIFVw
ZGF0ZSB1c2Ugb2YgbV9iaXRtYXAgbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyIHR5cGUgYW5kIGNh
bGwKKyAgICAgICAgTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKSB0byBjb25zdHJ1Y3QgYSBOYXRp
dmVJbWFnZVNraWEgb2JqZWN0IG5vdworICAgICAgICB0aGF0IHRoZSBjb25zdHJ1Y3RvciBpcyBw
cml2YXRlLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VE
ZWNvZGVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9m
IGEgTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9v
cGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKToKKyAgICAgICAgSW5pdGlhbGl6ZSBtX2JpdG1hcCBpbiB0
aGUgY29uc3RydWN0b3Igbm93IHRoYXQgaXQgaXMgYSBwb2ludGVyCisgICAgICAgIHR5cGUgYW5k
IHdlIG5lZWQgTmF0aXZlSW1hZ2VTa2lhJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBiZQorICAg
ICAgICBjYWxsZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Om9wZXJhdG9yPSk6
CisgICAgICAgIENhbGwgTmF0aXZlSW1hZ2VTa2lhJ3MgbmV3IGNsb25lKCkgbWV0aG9kIHRvIGNv
cHkgbV9iaXRtYXAgYXMKKyAgICAgICAgTmF0aXZlSW1hZ2VTa2lhIGlzIG5vdyBSZWZDb3VudGVk
IGFuZCBubyBsb25nZXIgY29weWFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6
OmNsZWFyUGl4ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxs
UGl4ZWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFNpemUpOgorICAgICAgICBVcGRh
dGUgdXNlIG9mIG1fYml0bWFwIG5vdyB0aGF0IGl0IGlzIGEgcG9pbnRlciB0eXBlLgorCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgUmV0
dXJuIGEgUGFzc05hdGl2ZUltYWdlUHRyIGluc3RlYWQgb2YgYSBOYXRpdmVJbWFnZVB0ci4KKyAg
ICAgICAgQ2FsbCBOYXRpdmVJbWFnZVNraWEncyBjbG9uZSBtZXRob2Qgbm93IHRoYXQgaXQgaXMg
bm8gbG9uZ2VyCisgICAgICAgIGNvcHlhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpzZXRIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRTdGF0
dXMpOgorICAgICAgICBVcGRhdGUgdXNlIG9mIG1fYml0bWFwIG5vdyB0aGF0IGl0IGlzIGEgcG9p
bnRlciB0eXBlLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VE
ZWNvZGVyV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgIFJldHVybiBhIFBhc3NOYXRpdmVJbWFnZVB0ciBpbnN0ZWFkIG9mIGEg
TmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBmb3IgU1ZHSW1hZ2UgYXMKKyAgICAgICAgaXQgaXMgbmVl
ZGVkIGZvciBTVkcgY3VzdG9tIGN1cnNvciBzdXBwb3J0IGFuZCBDYW52YXMgZHJhd2luZyBvZgor
ICAgICAgICBwYXR0ZXJucyBjb250YWluaW5nIFNWRyBpbWFnZXMuIEFzIFNWR0ltYWdlIG5vIGxv
bmdlciBrZWVwIHRoZQorICAgICAgICBuYXRpdmUgaW1hZ2UgaW50ZXJuYWxseSB0byBzYXZlIG1l
bW9yeSwgdGhlIGltcGxlbWVudGF0aW9uIGNyZWF0ZXMKKyAgICAgICAgdGhlIG5hdGl2ZSBpbWFn
ZSB3aGVuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgYW5kIHBhc3NlcworICAgICAgICBp
dHMgb3duZXJzaGlwIHRvIHRoZSBjYWxsZXIuCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaDoKKyAgICAgICAgT3ZlcnJpZGUgSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgYW5kIHJlbW92ZSBkdW1teQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBmcmFtZUF0
SW5kZXgoKSBhcyBpdCBpcyBub3QgbmVlZGVkIC8gdXNlZC4KKworICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICBBZGQg
aW1wbGVtZW50YXRpb24gb2YgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB3aGljaCBtZXJl
bHkKKyAgICAgICAgZm9yd2FyZHMgdGhlIGNhbGwgdG8gdGhlIEltYWdlIGJlaW5nIGNvbnRhaW5l
ZC4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAg
ICAgICBPdmVycmlkZSBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS4KKworMjAx
My0wNC0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisK
ICAgICAgICAgW0Nocm9taXVtXSBCYWQgY2FzdCBmcm9tIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhIHRvIEJpdG1hcEltYWdlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTM0OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKaW5kZXggM2NiMTM5Ni4uNjkxYzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSW1hZ2UqIEljb25E
YXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxP
cmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bh
c3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxP
cmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAppbmRleCAwYTcyNDIyLi5hNjIyNmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKIAogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpOwotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwg
UGFzc05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIFN0
cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZp
cnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lv
bkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKTsgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDQwZmM0Ny4u
ZTFmNjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJh
c2UuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hy
b25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lv
bkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29u
TG9hZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwg
TmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFzc05hdGl2
ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxs
cyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdl
Q2hyb21pdW1Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJ
bWFnZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMWIwZDkyYS4uYjY4ZDQ0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1
bVNraWEuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBi
aXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBiaXRtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3Bw
CmluZGV4IDA3ZmE5YTkuLjEzM2ZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIE5hdGl2
ZUltYWdlUHRyIGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRl
eCBjZjQzMDczLi5jYjgwYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMzIwLDcgKzMyMCw3IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1
cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJh
bWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAppbmRleCBhODdjZDU4Li4zMWM5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBCaXRt
YXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVy
YXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOwogICAgIH0KQEAg
LTE3Nyw3ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZh
c09iamVjdChFdmFzKik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VP
cmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmllbnRhdGlvbigpOwpAQCAtMTk4LDcgKzE5OSw3IEBA
IHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlz
IGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIEJpdG1hcEltYWdlKE5hdGl2ZUlt
YWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOworICAgIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJ
bWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKICAgICBCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiA9IDApOwogI2lmIFBMQVRGT1JNKFdYKQogICAgIEJpdG1hcEltYWdlKGNvbnN0IHd4Qml0
bWFwJik7CkBAIC0yMTksNyArMjIwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGN1cnJl
bnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgdmlydHVhbCBz
aXplX3QgZnJhbWVDb3VudCgpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXpl
X3QpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBi
b29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggNWJjODg4MS4uZDZmNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAg
ICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbik7CisgICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNp
bmcpLiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxs
b3dzRm9udFNtb290aGluZyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGVhM2E3MjguLjVkYTI5NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtOTIzLDggKzkyMyw4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlKTsKIAogI2lmIFVTRShTS0lBKQotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBt
X25hdGl2ZUltYWdlOwotICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG1fc2tpYUltYWdlOworICAg
ICAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOworICAgICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2VTa2lhPiBtX3NraWFJbWFnZTsKICNlbGlmIFVTRShDQUlSTykKICAgICAg
ICAgSW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbV9pbWFnZVN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCA2Mzc2NDNkLi45ZjU0NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVS
dWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQogICAgIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWU0ZTVkNC4uOWQw
YjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0
ZToKICNpZiBVU0UoQ0cpCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CisgICAgICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0OwogI2VuZGlmCiAgICAgICAgIHZvaWQgY2xpcChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDkxNzQwMGUuLmMwNjZjZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IDY2YThhMGEuLmNhOTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGgg
YSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgUGFzc05h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOwogCiAgICAgZmxvYXQgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBh
bHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCmluZGV4IDFhZDViZTkuLjczNTMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtNTYsNiArNTYsOCBAQCBjbGFz
cyBNZW1vcnlPYmplY3RJbmZvOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZJWE1FOiBO
YXRpdmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAorLy8g
cG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAj
aWYgVVNFKENHKQogdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExB
VEZPUk0oUVQpCkBAIC03Miw3ICs3NCw4IEBAIHR5cGVkZWYgd3hCaXRtYXAqIE5hdGl2ZUltYWdl
UHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBXZWJDb3JlOjpOYXRpdmVJbWFnZUNhaXJv
KiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShTS0lBKQotdHlwZWRlZiBXZWJDb3JlOjpOYXRp
dmVJbWFnZVNraWEqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZWZQdHI8TmF0aXZlSW1hZ2VT
a2lhPiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+
IFBhc3NOYXRpdmVJbWFnZVB0cjsKIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgTmF0aXZl
SW1hZ2VTa2lhKiwgV1RGOjpNZW1vcnlPYmplY3RJbmZvKik7CiAjZWxpZiBPUyhXSU5DRSkKIHR5
cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CkBAIC04MCw2ICs4Mywx
MCBAQCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRl
ZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCisjaWYgIVVTRShTS0lBKQordHlwZWRl
ZiBOYXRpdmVJbWFnZVB0ciBQYXNzTmF0aXZlSW1hZ2VQdHI7CisjZW5kaWYKKwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvSW1hZ2VCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvSW1hZ2VCbGFja0JlcnJ5LmNwcAppbmRleCA1NWQzZWMzLi4yNDdmNzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0lt
YWdlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9JbWFnZUJsYWNrQmVycnkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQ
dHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQog
ICAgIHJldHVybiBpbWcucmVsZWFzZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6VGlsZWRJbWFnZShtX3NpemUsIG1fYnl0ZXMpOwogfQpAQCAt
NzMsNyArNzMsNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJlbnRGcmFt
ZSgwKQogICAgICwgbV9mcmFtZXMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhMzc0ODUwLi45
ZTE4ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRv
RGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2UoaW1hZ2VQdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGU1NzM3MzIuLjA2ODE1NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZl
cjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25z
dAogewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAwOwogICAgIGlmICghbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cAppbmRleCA3OTRlYzczLi5mNjI0Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNo
aWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2Ug
PSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOwogICAgIGlmIChuYXRpdmVJbWFnZSkgewogICAg
ICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2Up
IHsKICAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50
KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUltYWdlTGF5ZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNr
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
QmxlbmRTa2lhLmNwcAppbmRleCA2NGU1MzU4Li4yZTlkODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5k
U2tpYS5jcHAKQEAgLTcyLDggKzcyLDggQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tp
YSgpCiAgICAgUmVmUHRyPEltYWdlPiBmb3JlZ3JvdW5kID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBSZWZQdHI8SW1hZ2U+IGJhY2tn
cm91bmQgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKTsKIAotICAgIE5hdGl2ZUltYWdlU2tpYSogZm9yZWdyb3VuZE5hdGl2ZUltYWdlID0gZm9y
ZWdyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBOYXRpdmVJbWFnZVNr
aWEqIGJhY2tncm91bmROYXRpdmVJbWFnZSA9IGJhY2tncm91bmQtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZm9yZWdyb3VuZE5hdGl2
ZUltYWdlID0gZm9yZWdyb3VuZC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBiYWNrZ3JvdW5kTmF0aXZlSW1hZ2UgPSBiYWNrZ3JvdW5k
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCiAgICAgaWYgKCFmb3JlZ3JvdW5kTmF0
aXZlSW1hZ2UgfHwgIWJhY2tncm91bmROYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMzIyOGNkOC4uMjkx
OWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBAIC0xMjMsNyAr
MTIzLDcgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgU2tB
dXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUs
IG1fdmFsdWVzLmRhdGEoKSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0lt
YWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZl
SW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNm
ZXJTa2lhLmNwcAppbmRleCBiMGY4MGNlLi40YTQwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBGRUNv
bXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFRGlzcGxhY2VtZW50TWFwU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAppbmRleCAyMmYx
YjczLi4xYmU0NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVEaXNwbGFjZW1lbnRNYXBTa2lh
LmNwcApAQCAtNzEsOCArNzEsOCBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFw
cGx5U2tpYSgpCiAgICAgUmVmUHRyPEltYWdlPiBjb2xvciA9IGluLT5hc0ltYWdlQnVmZmVyKCkt
PmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgUmVmUHRyPEltYWdlPiBkaXNw
bCA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OwogCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBjb2xvck5hdGl2ZUltYWdlID0gY29sb3ItPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBkaXNwbE5hdGl2
ZUltYWdlID0gZGlzcGwtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlU2tpYT4gY29sb3JOYXRpdmVJbWFnZSA9IGNvbG9yLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGRpc3BsTmF0aXZl
SW1hZ2UgPSBkaXNwbC0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIGlmICgh
Y29sb3JOYXRpdmVJbWFnZSB8fCAhZGlzcGxOYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKaW5kZXggZDcwODdkNC4uM2EwYjc3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIGJv
b2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHNldElzQWxwaGFJbWFnZShp
bi0+aXNBbHBoYUltYWdlKCkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0lt
YWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZl
SW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKaW5kZXggYTdkOWY3NS4uYTNmNDQ2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVy
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVj
b2RlclF0LmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmNsZWFy
UG9pbnRlcnMoKQogICAgIG1fYnVmZmVyLmNsZWFyKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIFFJbWFnZTo6Rm9ybWF0
IGZvcm1hdDsKICAgICBpZiAobV9oYXNBbHBoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDBmNDA3YzEuLjNlNTM4
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcApAQCAtNjIsOSArNjIsOSBAQCBJbnRTaXplIFN0aWxsSW1hZ2U6OnNpemUo
KSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKG1fcGl4bWFwLT53aWR0aCgpLCBtX3BpeG1hcC0+
aGVpZ2h0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCitQYXNzTmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PE5hdGl2ZUltYWdl
UHRyPihtX3BpeG1hcCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UGFzc05hdGl2ZUltYWdlUHRy
PihtX3BpeG1hcCk7CiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAppbmRleCA1MDViMTkwLi4xZTllMjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICAgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICB2aXJ0dWFsIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3ND
b250ZXh0M0RTa2lhLmNwcAppbmRleCAzYjFjOGYyLi44YWM2ZDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHQzRFNraWEuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
CiAgICAgICAgIGlmICghZnJhbWUgfHwgZnJhbWUtPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZy
YW1lQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhh
ID0gZnJhbWUtPmhhc0FscGhhKCk7Ci0gICAgICAgIG1fbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihm
cmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9IGZyYW1l
LT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmICghbV9uYXRpdmVJbWFnZS5nZXQoKSB8
fCAhbV9uYXRpdmVJbWFnZS0+aXNEYXRhQ29tcGxldGUoKSB8fCAhbV9uYXRpdmVJbWFnZS0+Yml0
bWFwKCkud2lkdGgoKSB8fCAhbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFNrQml0bWFwOjpDb25maWcgc2tpYUNvbmZp
ZyA9IG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmNvbmZpZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmlu
ZGV4IGY2MWRlY2IuLmM2NGQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTIwMiwxMCArMjAy
LDIwIEBAIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogICAg
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAKK3N0YXRpYyBTa0JpdG1hcCBkZWVwU2tCaXRt
YXBDb3B5KGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCit7CisgICAgU2tCaXRtYXAgdG1wOworICAg
IGlmICghYml0bWFwLmRlZXBDb3B5VG8oJnRtcCwgYml0bWFwLmNvbmZpZygpKSkKKyAgICAgICAg
Yml0bWFwLmNvcHlUbygmdG1wLCBiaXRtYXAuY29uZmlnKCkpOworCisgICAgcmV0dXJuIHRtcDsK
K30KKwogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvcikgY29uc3QKIHsKKyAgICBjb25zdCBT
a0JpdG1hcCYgYml0bWFwID0gKm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKTsKICAg
ICAvLyBGSVhNRTogU3RhcnQgaG9ub3JpbmcgU2NhbGVCZWhhdmlvciB0byBzY2FsZSAyeCBidWZm
ZXJzIGRvd24gdG8gMXguCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2
ZUltYWdlU2tpYSgqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBjb3B5QmVoYXZp
b3IgPT0gQ29weUJhY2tpbmdTdG9yZSA/IE5hdGl2ZUltYWdlU2tpYTo6Q29weVBpeGVscyA6IE5h
dGl2ZUltYWdlU2tpYTo6RG9Ob3RDb3B5UGl4ZWxzLCBtX3Jlc29sdXRpb25TY2FsZSkpOworICAg
IHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKGNvcHlC
ZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlID8gZGVlcFNrQml0bWFwQ29weShiaXRtYXApIDog
Yml0bWFwLCBtX3Jlc29sdXRpb25TY2FsZSkpOwogfQogCiBCYWNraW5nU3RvcmVDb3B5IEltYWdl
QnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCkBAIC0yNTEsMjIgKzI2MSwyNCBAQCB2b2lkIElt
YWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KSBjb25zdAogICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5iZWdpbkxheWVy
Q2xpcHBlZFRvSW1hZ2UocmVjdCwgdGhpcyk7CiB9CiAKLXN0YXRpYyBOYXRpdmVJbWFnZVNraWE6
OkNvcHlCZWhhdmlvciBkcmF3TmVlZHNDb3B5KEdyYXBoaWNzQ29udGV4dCogc3JjLCBHcmFwaGlj
c0NvbnRleHQqIGRzdCkKK3N0YXRpYyBib29sIGRyYXdOZWVkc0NvcHkoR3JhcGhpY3NDb250ZXh0
KiBzcmMsIEdyYXBoaWNzQ29udGV4dCogZHN0KQogewotICAgIHJldHVybiAoZHN0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+aXNEZWZlcnJlZCgpIHx8IHNyYyA9PSBkc3QpID8gTmF0aXZlSW1hZ2VTa2lh
OjpDb3B5UGl4ZWxzIDogTmF0aXZlSW1hZ2VTa2lhOjpEb05vdENvcHlQaXhlbHM7CisgICAgcmV0
dXJuIChkc3QtPnBsYXRmb3JtQ29udGV4dCgpLT5pc0RlZmVycmVkKCkgfHwgc3JjID09IGRzdCk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBOYXRpdmVJbWFnZVNraWEoKm1fZGF0YS5tX3BsYXRm
b3JtQ29udGV4dC5iaXRtYXAoKSwgZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0KCksIGNvbnRl
eHQpKSk7CisgICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9ICptX2RhdGEubV9wbGF0Zm9ybUNv
bnRleHQuYml0bWFwKCk7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0
KCksIGNvbnRleHQpID8gZGVlcFNrQml0bWFwQ29weShiaXRtYXApIDogYml0bWFwKSk7CiAgICAg
Y29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUltYWdlU2tpYSgq
bV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBkcmF3TmVlZHNDb3B5KG1fY29udGV4
dC5nZXQoKSwgY29udGV4dCkpKTsKKyAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gKm1fZGF0
YS5tX3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShkcmF3TmVlZHNDb3B5
KG1fY29udGV4dC5nZXQoKSwgY29udGV4dCkgPyBkZWVwU2tCaXRtYXBDb3B5KGJpdG1hcCkgOiBi
aXRtYXApKTsKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNr
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEu
Y3BwCmluZGV4IGNiOTIzOTIuLjEzY2NmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKQEAgLTQ0OSwxMCArNDQ5LDggQEAg
Ym9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVudGF0
aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAKICAgICBpZiAobV9mcmFtZSkgewotICAg
ICAgICAvLyBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KCkgYWxsb2NhdGVkIHxtX2Zy
YW1lfCBhbmQgcGFzc2VkCi0gICAgICAgIC8vIG93bmVyc2hpcCB0byBCaXRtYXBJbWFnZTsgd2Ug
bXVzdCBkZWxldGUgaXQgaGVyZS4KLSAgICAgICAgZGVsZXRlIG1fZnJhbWU7Ci0gICAgICAgIG1f
ZnJhbWUgPSAwOworICAgICAgICBtX2ZyYW1lLmNsZWFyKCk7CisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ3MCw3ICs0NjgsNyBAQCB2b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAjaWYgUExBVEZPUk0o
Q0hST01JVU0pCiAgICAgVFJBQ0VfRVZFTlQwKCJza2lhIiwgIkltYWdlOjpkcmF3UGF0dGVybiIp
OwogI2VuZGlmCi0gICAgTmF0aXZlSW1hZ2VTa2lhKiBiaXRtYXAgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJpdG1hcCA9IG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNTU5LDcgKzU1Nyw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwKIAogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBnbyB0byBCaXRtYXBJ
bWFnZVNraWEuY3BwCiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVNraWEq
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShQYXNzUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gbmF0aXZlSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NpemUobmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCksIG5hdGl2ZUltYWdlLT5iaXRtYXAoKS5oZWlnaHQo
KSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCkBAIC01ODQsOCArNTgyLDggQEAgQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsK
IAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2
ZUltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSAhbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLmlzT3BhcXVlKCk7CisgICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOwog
ICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29s
aWRDb2xvcigpOwpAQCAtNjAzLDcgKzYwMSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9y
U29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlU2tpYSogZnJhbWUgPSBmcmFtZUF0SW5kZXgoMCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlU2tpYT4gZnJhbWUgPSBmcmFtZUF0SW5kZXgoMCk7CiAK
ICAgICBpZiAoZnJhbWUgJiYgc2l6ZSgpLndpZHRoKCkgPT0gMSAmJiBzaXplKCkuaGVpZ2h0KCkg
PT0gMSkgewogICAgICAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2soZnJhbWUtPmJpdG1hcCgpKTsK
QEAgLTYyNyw3ICs2MjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbAogICAgIC8vIGNhdXNp
bmcgZmxpY2tlciBhbmQgd2FzdGluZyBDUFUuCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAg
IE5hdGl2ZUltYWdlU2tpYSogYm0gPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGJtID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBpZiAoIWJtKQogICAgICAgICByZXR1cm47IC8vIEl0J3MgdG9vIGVhcmx5IGFuZCB3
ZSBkb24ndCBoYXZlIGFuIGltYWdlIHlldC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuY3BwCmluZGV4IDIxZWJm
NWIuLmU2ODlkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvTmF0aXZlSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5jcHAKQEAgLTQ4LDIwICs0OCwyNSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBOYXRpdmVJbWFnZVNraWE6Ok5hdGl2ZUltYWdlU2tpYSgpCi0g
ICAgOiBtX3Jlc29sdXRpb25TY2FsZSgxKSwKLSAgICAgIG1fcmVzaXplUmVxdWVzdHMoMCkKKyAg
ICA6IG1fcmVzb2x1dGlvblNjYWxlKDEpCisgICAgLCBtX3Jlc2l6ZVJlcXVlc3RzKDApCiB7CiB9
CiAKLU5hdGl2ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFwJiBvdGhl
ciwgQ29weUJlaGF2aW9yIGNvcHlCZWhhdmlvciwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQotICAg
IDogbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKSwKLSAgICAgIG1fcmVzaXplUmVx
dWVzdHMoMCkKK05hdGl2ZUltYWdlU2tpYTo6TmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFw
JiBvdGhlciwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorICAgIDogbV9pbWFnZShvdGhlcikKKyAg
ICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKKyAgICAsIG1fcmVzaXplUmVx
dWVzdHMoMCkKK3sKK30KKworTmF0aXZlSW1hZ2VTa2lhOjpOYXRpdmVJbWFnZVNraWEoY29uc3Qg
U2tCaXRtYXAmIGltYWdlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFNrQml0bWFwJiBy
ZXNpemVkSW1hZ2UsIGNvbnN0IENhY2hlZEltYWdlSW5mbyYgY2FjaGVkSW1hZ2VJbmZvLCBpbnQg
cmVzaXplUmVxdWVzdHMpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZXNvbHV0aW9u
U2NhbGUocmVzb2x1dGlvblNjYWxlKQorICAgICwgbV9yZXNpemVkSW1hZ2UocmVzaXplZEltYWdl
KQorICAgICwgbV9jYWNoZWRJbWFnZUluZm8oY2FjaGVkSW1hZ2VJbmZvKQorICAgICwgbV9yZXNp
emVSZXF1ZXN0cyhyZXNpemVSZXF1ZXN0cykKIHsKLSAgICBpZiAoY29weUJlaGF2aW9yID09IENv
cHlQaXhlbHMpIHsKLSAgICAgICAgaWYgKCFvdGhlci5kZWVwQ29weVRvKCZtX2ltYWdlLCBvdGhl
ci5jb25maWcoKSkpCi0gICAgICAgICAgICBvdGhlci5jb3B5VG8oJm1faW1hZ2UsIG90aGVyLmNv
bmZpZygpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9pbWFnZSA9IG90aGVyOwogfQogCiBOYXRp
dmVJbWFnZVNraWE6On5OYXRpdmVJbWFnZVNraWEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9OYXRpdmVJbWFnZVNraWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvTmF0aXZlSW1hZ2VTa2lhLmgKaW5kZXggODllMzI2
YS4uMWZhZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9OYXRpdmVJbWFnZVNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL05hdGl2ZUltYWdlU2tpYS5oCkBAIC0zNSwyMSArMzUsMzkgQEAKICNpbmNsdWRl
ICJTa1JlY3QuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHRo
ZSAibmF0aXZlIGltYWdlIiBpbiBvdXIgcG9ydC4gV2hlbiBXZWJLaXQgdXNlcwotLy8gIk5hdGl2
ZUltYWdlUHRyIiwgaXQgaXMgYSBwb2ludGVyIHRvIHRoaXMgdHlwZS4gSXQgaGFzIGFuIFNrQml0
bWFwLCBhbmQgYWxzbwotLy8gc3RvcmVzIGEgY2FjaGVkIHJlc2l6ZWQgaW1hZ2UuCi1jbGFzcyBO
YXRpdmVJbWFnZVNraWEgeworLy8gUGFzc05hdGl2ZUltYWdlUHRyIC8gTmF0aXZlSW1hZ2VQdHIs
IGl0IGlzIGEgc21hcnQgcG9pbnRlciB0byB0aGlzIHR5cGUuCisvLyBJdCBoYXMgYW4gU2tCaXRt
YXAsIGFuZCBhbHNvIHN0b3JlcyBhIGNhY2hlZCByZXNpemVkIGltYWdlLgorY2xhc3MgTmF0aXZl
SW1hZ2VTa2lhIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2VTa2lhPiB7CiBwdWJsaWM6
Ci0gICAgZW51bSBDb3B5QmVoYXZpb3IgeyBDb3B5UGl4ZWxzLCBEb05vdENvcHlQaXhlbHMgfTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICB9CisK
KyAgICAvLyBUaGlzIGZhY3RvcnkgbWV0aG9kIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIHBh
c3NlZC1pbiBTa0JpdG1hcAorICAgIC8vIChpZS4sIGl0IHJlZmVyZW5jZXMgdGhlIHNhbWUgcGl4
ZWwgZGF0YSBhbmQgYnVtcHMgdGhlIHJlZmNvdW50KS4gVXNlCisgICAgLy8gb25seSB3aGVuIHlv
dSB3YW50IHNoYXJpbmcgc2VtYW50aWNzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZUlt
YWdlU2tpYT4gY3JlYXRlKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSA9IDEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZUltYWdl
U2tpYShiaXRtYXAsIHJlc29sdXRpb25TY2FsZSkpOworICAgIH0KKworICAgIC8vIFRoaXMgbWV0
aG9kIGRvZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGludGVybmFsIFNrQml0bWFwIChpZS4sIGl0
CisgICAgLy8gcmVmZXJlbmNlcyB0aGUgc2FtZSBwaXhlbCBkYXRhIGFuZCBidW1wcyB0aGUgcmVm
Y291bnQpLiBVc2Ugb25seSB3aGVuCisgICAgLy8geW91IHdhbnQgc2hhcmluZyBzZW1hbnRpY3Mu
CisgICAgUGFzc1JlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGNsb25lKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlSW1hZ2VTa2lhKG1faW1hZ2UsIG1fcmVz
b2x1dGlvblNjYWxlLCBtX3Jlc2l6ZWRJbWFnZSwgbV9jYWNoZWRJbWFnZUluZm8sIG1fcmVzaXpl
UmVxdWVzdHMpKTsKKyAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVNraWEoKTsKICAgICB+TmF0aXZl
SW1hZ2VTa2lhKCk7CiAKLSAgICBOYXRpdmVJbWFnZVNraWEoY29uc3QgU2tCaXRtYXAmLCBDb3B5
QmVoYXZpb3IsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEpOwotCiAgICAgLy8gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGltYWdlIGRhdGEuIFRoaXMgaW5jbHVkZXMgdGhlIGNhY2hl
ZAogICAgIC8vIHJlc2l6ZWQgdmVyc2lvbiBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaW50IGRlY29k
ZWRTaXplKCkgY29uc3Q7CkBAIC04Nyw2ICsxMDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgorICAg
IE5hdGl2ZUltYWdlU2tpYSgpOworCisgICAgTmF0aXZlSW1hZ2VTa2lhKGNvbnN0IFNrQml0bWFw
JiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKwogICAgIC8vIENhY2hlZEltYWdlSW5mbyBpcyB1
c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGNhY2hlZCBvciByZXF1ZXN0ZWQgaW1hZ2UKICAgICAv
LyByZXNpemVzLgogICAgIC8vIEltYWdlIHJlc2l6ZSBpcyBpZGVudGlmaWVkIGJ5IHRoZSBzY2Fs
ZWQgaW1hZ2Ugc2l6ZSBhbmQgc2NhbGVkIGltYWdlIHN1YnNldC4KQEAgLTEwMSw2ICsxMjMsOCBA
QCBwcml2YXRlOgogICAgICAgICBTa0lSZWN0IHJlY3RJblN1YnNldChjb25zdCBTa0lSZWN0JiBv
dGhlclNjYWxlZEltYWdlUmVjdCk7CiAgICAgfTsKIAorICAgIE5hdGl2ZUltYWdlU2tpYShjb25z
dCBTa0JpdG1hcCYgaW1hZ2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgU2tCaXRtYXAm
IHJlc2l6ZWRJbWFnZSwgY29uc3QgQ2FjaGVkSW1hZ2VJbmZvJiwgaW50IHJlc2l6ZVJlcXVlc3Rz
KTsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVzaXplIG9wZXJhdGlvbiBz
aG91bGQgZWl0aGVyIHJlc2l6ZSB0aGUgd2hvbGUKICAgICAvLyBpbWFnZSBhbmQgY2FjaGUgaXQs
IG9yIHJlc2l6ZSBqdXN0IHRoZSBwYXJ0IGl0IG5lZWRzIGFuZCB0aHJvdyB0aGUgcmVzdWx0CiAg
ICAgLy8gYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGF0dGVyblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QYXR0ZXJuU2tpYS5jcHAKaW5kZXggMmFlNGRkNi4uZmEwYWE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QYXR0ZXJuU2tpYS5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgUGxhdGZvcm1QYXR0ZXJuUHRyIFBhdHRlcm46OnBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2YKICAgICAvLyBhbmQgZXhw
YW5kZWQgc2NhbGUgYW5kIHNrZXcgaW46CiAgICAgLy8gTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkct
MS4xL3BzZXJ2ZXJzLWdyYWQtMDYtYi5zdmcKIAotICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSog
aW1hZ2UgPSBtX3RpbGVJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fdGlsZUltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBiaXRtYXAsIHJldHVy
biBhIHRyYW5zcGFyZW50IHNoYWRlci4KICAgICBpZiAoIWltYWdlKQogICAgICAgICBtX3BhdHRl
cm4gPSBuZXcgU2tDb2xvclNoYWRlcihTa0NvbG9yU2V0QVJHQigwLCAwLCAwLCAwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0Uu
Y3BwCmluZGV4IGEyOGQxNDkuLjNkMWNhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwCkBAIC00MSw3ICs0MSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNoYXJlZEJpdG1hcDo6Y3JlYXRl
KG1fYmFja2luZ1N0b3JlLCBtX3NpemUsIGhhc0FscGhhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCAy
OTExNjdiLi5hNGU3MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRv
IHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAgICAvLyAoQWN0dWFsIHVz
ZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1hZ2UgYW5kIGZyZWVkIGlu
CiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRy
IGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgUGFzc05hdGl2ZUltYWdlUHRyIGFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQpAQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgaW5saW5lIFBpeGVsRGF0YSogZ2V0QWRkcihpbnQgeCwgaW50IHkp
CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKLSAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5i
aXRtYXAoKS5nZXRBZGRyMzIoeCwgeSk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJp
dG1hcCgpLmdldEFkZHIzMih4LCB5KTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gbV9ieXRl
cyArICh5ICogd2lkdGgoKSkgKyB4OwogI2VuZGlmCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIHZvaWQgc2V0
U2tCaXRtYXAoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKICAgICAgICAgewotICAgICAgICAgICAg
bV9iaXRtYXAgPSBOYXRpdmVJbWFnZVNraWEoYml0bWFwLCBOYXRpdmVJbWFnZVNraWE6OkRvTm90
Q29weVBpeGVscyk7CisgICAgICAgICAgICBtX2JpdG1hcCA9IE5hdGl2ZUltYWdlU2tpYTo6Y3Jl
YXRlKGJpdG1hcCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTa0JpdG1hcCYgZ2V0U2tC
aXRtYXAoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0
bWFwKCk7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBzZXRNZW1vcnlBbGxvY2F0b3IoU2tCaXRtYXA6OkFsbG9jYXRvciog
YWxsb2NhdG9yKQpAQCAtMjAyLDcgKzIwMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgaW50IHdpZHRoKCkgY29uc3QKICAgICAgICAgewogI2lmIFVTRShTS0lBKQotICAgICAgICAg
ICAgcmV0dXJuIG1fYml0bWFwLmJpdG1hcCgpLndpZHRoKCk7CisgICAgICAgICAgICByZXR1cm4g
bV9iaXRtYXAtPmJpdG1hcCgpLndpZHRoKCk7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1f
c2l6ZS53aWR0aCgpOwogI2VuZGlmCkBAIC0yMTEsMTQgKzIxMSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGludCBoZWlnaHQoKSBjb25zdAogICAgICAgICB7CiAjaWYgVVNFKFNL
SUEpCi0gICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCkuaGVpZ2h0KCk7CisgICAg
ICAgICAgICByZXR1cm4gbV9iaXRtYXAtPmJpdG1hcCgpLmhlaWdodCgpOwogI2Vsc2UKICAgICAg
ICAgICAgIHJldHVybiBtX3NpemUuaGVpZ2h0KCk7CiAjZW5kaWYKICAgICAgICAgfQogCiAjaWYg
VVNFKFNLSUEpCi0gICAgICAgIE5hdGl2ZUltYWdlU2tpYSBtX2JpdG1hcDsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlU2tpYT4gbV9iaXRtYXA7CiAgICAgICAgIFNrQml0bWFwOjpBbGxvY2F0
b3IqIG1fYWxsb2NhdG9yOwogI2Vsc2UKICAgICAgICAgVmVjdG9yPFBpeGVsRGF0YT4gbV9iYWNr
aW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggNDE3NjI4
ZC4uNWNiZGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdl
RnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBuZXcgTmF0aXZl
SW1hZ2VDYWlybyhjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPiht
X2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9vcGVudmcvSW1hZ2VEZWNvZGVyT3BlblZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwCmluZGV4IGQy
OTMxN2EuLjgzM2U1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL29wZW52Zy9JbWFnZURlY29kZXJPcGVuVkcuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitQYXNzTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNv
bnN0IFZHSW1hZ2VGb3JtYXQgYnVmZmVyRm9ybWF0ID0gVkdfc0FSR0JfODg4OF9QUkU7CiAgICAg
Ly8gU2F2ZSBtZW1vcnkgYnkgdXNpbmcgMTYtYml0IGltYWdlcyBmb3IgZnVsbHkgb3BhcXVlIGlt
YWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCmluZGV4IDYyNDNiODYuLmMyNTQx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Nr
aWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcApAQCAtMjcsMTIgKzI3LDE0IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNs
dWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlRnJhbWU6OkltYWdlRnJh
bWUoKQotICAgIDogbV9hbGxvY2F0b3IoMCkKKyAgICA6IG1fYml0bWFwKE5hdGl2ZUltYWdlU2tp
YTo6Y3JlYXRlKCkpCisgICAgLCBtX2FsbG9jYXRvcigwKQogICAgICwgbV9oYXNBbHBoYShmYWxz
ZSkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCkBAIC00
NiwxMCArNDgsMTAgQEAgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IElt
YWdlRnJhbWUmIG90aGVyKQogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogCi0gICAgbV9iaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2JpdG1hcCA9
IG90aGVyLm1fYml0bWFwLT5jbG9uZSgpOwogICAgIC8vIEtlZXAgdGhlIHBpeGVscyBsb2NrZWQg
c2luY2Ugd2Ugd2lsbCBiZSB3cml0aW5nIGRpcmVjdGx5IGludG8gdGhlCiAgICAgLy8gYml0bWFw
IHRocm91Z2hvdXQgdGhpcyBvYmplY3QncyBsaWZldGltZS4KLSAgICBtX2JpdG1hcC5iaXRtYXAo
KS5sb2NrUGl4ZWxzKCk7CisgICAgbV9iaXRtYXAtPmJpdG1hcCgpLmxvY2tQaXhlbHMoKTsKICAg
ICBzZXRNZW1vcnlBbGxvY2F0b3Iob3RoZXIuYWxsb2NhdG9yKCkpOwogICAgIHNldE9yaWdpbmFs
RnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOwogICAgIHNldFN0YXR1cyhvdGhl
ci5zdGF0dXMoKSk7CkBAIC02NCw3ICs2Niw3IEBAIEltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9w
ZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIAogdm9pZCBJbWFnZUZyYW1lOjpjbGVh
clBpeGVsRGF0YSgpCiB7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsKKyAgICBtX2Jp
dG1hcC0+Yml0bWFwKCkucmVzZXQoKTsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAg
Ly8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKCkKICAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQg
b3RoZXIgZnVuY3Rpb25zIGxpa2UKQEAgLTc0LDcgKzc2LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpj
bGVhclBpeGVsRGF0YSgpCiAKIHZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQog
ewotICAgIG1fYml0bWFwLmJpdG1hcCgpLmVyYXNlQVJHQigwLCAwLCAwLCAwKTsKKyAgICBtX2Jp
dG1hcC0+Yml0bWFwKCkuZXJhc2VBUkdCKDAsIDAsIDAsIDApOwogICAgIG1faGFzQWxwaGEgPSB0
cnVlOwogfQogCkBAIC04NCw5ICs4Niw5IEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
bV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkucmVz
ZXQoKTsKLSAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0gb3RoZXIubV9i
aXRtYXA7Ci0gICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAu
Yml0bWFwKCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKKyAgICBtX2JpdG1hcC0+
Yml0bWFwKCkucmVzZXQoKTsKKyAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEqIG90aGVyQml0bWFw
ID0gb3RoZXIubV9iaXRtYXAuZ2V0KCk7CisgICAgcmV0dXJuIG90aGVyQml0bWFwLT5iaXRtYXAo
KS5jb3B5VG8oJm1fYml0bWFwLT5iaXRtYXAoKSwgb3RoZXJCaXRtYXAtPmJpdG1hcCgpLmNvbmZp
ZygpKTsKIH0KIAogYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5l
d0hlaWdodCkKQEAgLTk0LDE3ICs5NiwxNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50
IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBi
ZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdp
ZHRoKCkgJiYgIWhlaWdodCgpKTsKIAotICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwotICAgIGlm
ICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMobV9hbGxvY2F0b3IsIDApKQorICAgIG1f
Yml0bWFwLT5iaXRtYXAoKS5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBu
ZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBpZiAoIW1fYml0bWFwLT5iaXRtYXAoKS5hbGxvY1Bp
eGVscyhtX2FsbG9jYXRvciwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHplcm9G
aWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorUGFzc05hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgTmF0
aXZlSW1hZ2VTa2lhKG1fYml0bWFwKTsKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNsb25lKCk7CiB9
CiAKIGJvb2wgSW1hZ2VGcmFtZTo6aGFzQWxwaGEoKSBjb25zdApAQCAtMTIyLDcgKzEyNCw3IEBA
IHZvaWQgSW1hZ2VGcmFtZTo6c2V0SGFzQWxwaGEoYm9vbCBhbHBoYSkKICAgICBib29sIGlzT3Bh
cXVlID0gIW1faGFzQWxwaGE7CiAgICAgaWYgKG1fc3RhdHVzICE9IEZyYW1lQ29tcGxldGUpCiAg
ICAgICAgIGlzT3BhcXVlID0gZmFsc2U7Ci0gICAgbV9iaXRtYXAuYml0bWFwKCkuc2V0SXNPcGFx
dWUoaXNPcGFxdWUpOworICAgIG1fYml0bWFwLT5iaXRtYXAoKS5zZXRJc09wYXF1ZShpc09wYXF1
ZSk7CiB9CiAKIHZvaWQgSW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJv
ZmlsZSYgY29sb3JQcm9maWxlKQpAQCAtMTM1LDggKzEzNyw4IEBAIHZvaWQgSW1hZ2VGcmFtZTo6
c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsK
ICAgICBpZiAobV9zdGF0dXMgPT0gRnJhbWVDb21wbGV0ZSkgewotICAgICAgICBtX2JpdG1hcC5i
aXRtYXAoKS5zZXRJc09wYXF1ZSghbV9oYXNBbHBoYSk7Ci0gICAgICAgIG1fYml0bWFwLnNldERh
dGFDb21wbGV0ZSgpOyAgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4KKyAgICAgICAgbV9i
aXRtYXAtPmJpdG1hcCgpLnNldElzT3BhcXVlKCFtX2hhc0FscGhhKTsKKyAgICAgICAgbV9iaXRt
YXAtPnNldERhdGFDb21wbGV0ZSgpOyAvLyBUZWxsIHRoZSBiaXRtYXAgaXQncyBkb25lLgogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3BwCmluZGV4IDBlMDQ3OWUuLjllZWI3NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdl
RGVjb2Rlcld4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93eC9JbWFnZURlY29kZXJXeC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkg
Y29uc3QKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkg
Y29uc3QKIHsKICAgICB3eEJpdG1hcCogYm1wID0gbmV3IHd4Qml0bWFwKHdpZHRoKCksIGhlaWdo
dCgpLCAzMik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4
IDI5NmMzNGQuLjg2MzVhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcApAQCAtMTQxLDYgKzE0MSwyNSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogICAgIHNl
dEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogfQogCisjaWYgVVNFKFNLSUEpCisvLyBQYXNzZXMg
b3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBQYXNzTmF0aXZl
SW1hZ2VQdHIgbmVlZHMKKy8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgorUGFzc05hdGl2
ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7CisgICAg
aWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgT3duUHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CisgICAgaWYgKCFidWZm
ZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworCisgICAgLy8gRklY
TUU6IFdLKEJ1ZyAxMTM2NTcpOiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhl
cmUuCisgICAgcmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorI2VuZGlmCisKIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IGYwOWEyYjEuLjVkZDBlN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0IE9WRVJSSURFOwogCisjaWYgVVNFKFNLSUEpCisgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBPVkVSUklERTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKICAgICBmcmll
bmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CkBAIC04Miw4ICs4Niw2IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sKSB7IH0KICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KSB7IHJldHVybiAwOyB9Ci0K
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGQwNzZmZWEuLmU5ZTI3MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cApAQCAtNDgsNiArNDgsMTEgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBtX2ltYWdl
LT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9v
bSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbG9yU3BhY2UsIGNvbXBvc2l0
ZU9wLCBkc3RSZWN0KTsKIH0KIAorUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCit7CisgICAgcmV0dXJuIG1faW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGIzMjI4ZTUuLmEyZjE1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0
dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIE9WRVJS
SURFOworCiBwcml2YXRlOgogICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tKQogICAgICAgICA6
IG1faW1hZ2UoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgwNWI0Y2EuLmY1
YjhjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTMt
MDQtMDMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCisg
ICAgICAgIFJlZ3Jlc3Npb24ocjE0Mjc2NSkgQnJva2UgQ3VzdG9tIFNWRyBjdXJzb3JzIGFuZCBT
VkcgY2FudmFzIGRyYXdpbmcgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBTdGVw
aGVuIFdoaXRlLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIG5vdyB0aGF0IEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIGFuZAorICAgICAgICBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkgcmV0dXJuIGEgc21hcnQgcG9pbnRlciBpbnN0ZWFkCisgICAgICAgIG9mIGEgcmF3
IG9uZS4KKworICAgICAgICAqIHNyYy9XZWJJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleCk6CisgICAgICAgICogc3JjL1dl
YkltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcmFtZXNGcm9tRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkltYWdlOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHRlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorICAgICAgICAqIHRl
c3RzL0RyYWdJbWFnZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSk6CisgICAgICAgIChUZXN0SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpUZXN0SW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgIChUZXN0SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29u
dGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCisyMDEzLTA0LTAz
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAg
ICBbQ2hyb21pdW1dIEJhZCBjYXN0IGZyb20gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEgdG8g
Qml0bWFwSW1hZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMzQ5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCAxMDRhYjEzLi4yNjUxMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbWFn
ZSBXZWJJbWFnZURlY29kZXI6OmdldEZyYW1lQXRJbmRleChpbnQgaW5kZXggPSAwKSBjb25zdAog
ICAgIEltYWdlRnJhbWUqIGNvbnN0IGZyYW1lQnVmZmVyID0gbV9wcml2YXRlLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJhbWVCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
ZWJJbWFnZSgpOwotICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gYWRvcHRQdHIo
ZnJhbWVCdWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKSk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
U2tpYT4gaW1hZ2UgPSBmcmFtZUJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAgIHJldHVy
biBXZWJJbWFnZShpbWFnZS0+Yml0bWFwKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAppbmRleCA2ZDU1NTU1Li4yYjc2MGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
V2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdl
YlNpemUmIGRlc2lyZWRTaXplKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJ
bWFnZSgpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihm
cmFtZS0+YXNOZXdOYXRpdmVJbWFnZSgpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZSA9IGZyYW1lLT5hc05ld05hdGl2ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBXZWJWZWN0b3I8V2Vi
SW1hZ2U+IFdlYkltYWdlOjpmcmFtZXNGcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhKQogICAg
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgT3duUHRy
PE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UgPSBhZG9wdFB0cihmcmFtZS0+YXNOZXdOYXRpdmVJbWFn
ZSgpKTsKLSAgICAgICAgaWYgKGltYWdlLmdldCgpICYmIGltYWdlLT5pc0RhdGFDb21wbGV0ZSgp
KQorICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IGZyYW1lLT5hc05ld05h
dGl2ZUltYWdlKCk7CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNEYXRhQ29tcGxldGUo
KSkKICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoV2ViSW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKSk7
CiAgICAgfQogCkBAIC0xNTcsOCArMTU3LDggQEAgV2ViSW1hZ2U6OldlYkltYWdlKGNvbnN0IFBh
c3NSZWZQdHI8SW1hZ2U+JiBpbWFnZSkKIAogV2ViSW1hZ2UmIFdlYkltYWdlOjpvcGVyYXRvcj0o
Y29uc3QgUGFzc1JlZlB0cjxJbWFnZT4mIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIHA7
Ci0gICAgaWYgKGltYWdlLmdldCgpICYmIChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpKQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IHA7CisgICAgaWYgKGltYWdl
ICYmIChwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKQogICAgICAgICBh
c3NpZ24ocC0+Yml0bWFwKCkpOwogICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJU
ZXN0LmNwcAppbmRleCA3ZjE5MDBiLi42NGY4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0x
MTcsNyArMTE3LDcgQEAgcHJvdGVjdGVkOgogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJU
ZXN0LCBkcmF3SW50b1NrUGljdHVyZSkKIHsKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBp
bWFnZShhZG9wdFB0cihtX2xhenlEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCktPmFzTmV3
TmF0aXZlSW1hZ2UoKSkpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlID0gbV9s
YXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCk7CiAg
ICAgRVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKICAgICBFWFBFQ1RfRVEo
MSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJp
dG1hcCgpLmlzTnVsbCgpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBURVNUX0YoRGVmZXJyZWRJbWFn
ZURlY29kZXJUZXN0LCBkcmF3SW50b1NrUGljdHVyZSkKIAogVEVTVF9GKERlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiB7Ci0gICAgT3duUHRyPE5hdGl2
ZUltYWdlU2tpYT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdElu
ZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lh
PiBpbWFnZSA9IG1fbGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRp
dmVJbWFnZSgpOwogICAgIFNrQml0bWFwIHNjYWxlZEJpdG1hcCA9IGltYWdlLT5yZXNpemVkQml0
bWFwKFNrSVNpemU6Ok1ha2UoNTAsIDUxKSwgU2tJUmVjdDo6TWFrZVdIKDUwLCA1MSkpOwogICAg
IEVYUEVDVF9GQUxTRShzY2FsZWRCaXRtYXAuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKHNj
YWxlZEJpdG1hcC5pc0ltbXV0YWJsZSgpKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUX0YoRGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkZWNvZGVPbk90aGVyVGhyZWFkKQogewogICAgIFdURjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1h
Z2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApLT5hc05ld05h
dGl2ZUltYWdlKCkpKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBpbWFnZSA9IG1fbGF6
eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpOwogICAg
IEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VRKDEs
IGltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGltYWdlLT5iaXRt
YXAoKS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RyYWdJbWFnZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1h
Z2VUZXN0LmNwcAppbmRleCBhOTQ2NWU2Li42YmYxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICA6IEltYWdlKDApCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAg
ICAgICBtX25hdGl2ZUltYWdlID0gYWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAg
ICAgICAgbV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAg
IG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCksIDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAo
KS5hbGxvY1BpeGVscygpOwpAQCAtNjQsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fc2l6ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VT
a2lhPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgewogICAgICAgICBpZiAobV9z
aXplLmlzWmVybygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgcmV0dXJuIG1f
bmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogICAgIH0K
IAogICAgIC8vIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHB1cmUgdmlydHVhbCBJbWFnZSBmdW5j
dGlvbnMuCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXplIG1fc2l6ZTsK
IAotICAgIE93blB0cjxOYXRpdmVJbWFnZVB0cj4gbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2VTa2lhPiBtX25hdGl2ZUltYWdlOwogfTsKIAogVEVTVChEcmFnSW1hZ2VUZXN0
LCBOdWxsSGFuZGxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA0ZGI0MjhjLi42NDhkYmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9t
aXVtVGVzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICA6IEltYWdlKDAp
CiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlID0g
YWRvcHRQdHIobmV3IE5hdGl2ZUltYWdlU2tpYSgpKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZSA9
IE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbmF0aXZlSW1hZ2UtPmJpdG1h
cCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCks
IDApOwogICAgICAgICBtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5hbGxvY1BpeGVscygpOwpAQCAt
NzcsMTIgKzc3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmF0aXZlSW1hZ2VTa2lhPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCiAgICAgewogICAgICAgICBpZiAobV9zaXplLmlzWmVybygpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlOwogICAgIH0KIAogICAgIC8vIFN0dWIgaW1wbGVt
ZW50YXRpb25zIG9mIHB1cmUgdmlydHVhbCBJbWFnZSBmdW5jdGlvbnMuCkBAIC0xMDUsNyArMTA1
LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgT3duUHRyPE5hdGl2
ZUltYWdlUHRyPiBtX25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZVNraWE+IG1f
bmF0aXZlSW1hZ2U7CiB9OwogCiBURVNUKEltYWdlTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUlt
YWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1D
b250ZXh0U2tpYVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9y
bUNvbnRleHRTa2lhVGVzdC5jcHAKaW5kZXggMzc0MzI4Yi4uNzYwMTQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVz
dC5jcHAKQEAgLTU0MSwyMiArNTQxLDI2IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3Qs
IHRyYWNrT3BhcXVlSW1hZ2VUZXN0KQogICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBm
LCAxLjBmKTsKICAgICBDb2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKIAotICAg
IFNrQml0bWFwIGRyYXdCaXRtYXA7Ci0gICAgZHJhd0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6
OmtBUkdCXzg4ODhfQ29uZmlnLCAxMCwgMTApOwotICAgIGRyYXdCaXRtYXAuYWxsb2NQaXhlbHMo
KTsKLQotICAgIGRyYXdCaXRtYXAuc2V0SXNPcGFxdWUodHJ1ZSk7Ci0gICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBkcmF3Qml0bWFwLmhlaWdodCgpOyArK3kpCi0gICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgZHJhd0JpdG1hcC53aWR0aCgpOyArK3gpCi0gICAgICAgICAgICAqZHJhd0JpdG1hcC5n
ZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gb3Bh
cXVlSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBOYXRpdmVJbWFnZVNraWEoZHJhd0Jp
dG1hcCwgTmF0aXZlSW1hZ2VTa2lhOjpDb3B5UGl4ZWxzKSk7CisgICAgU2tCaXRtYXAgb3BhcXVl
Qml0bWFwOworICAgIG9wYXF1ZUJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhf
Q29uZmlnLCAxMCwgMTApOworICAgIG9wYXF1ZUJpdG1hcC5hbGxvY1BpeGVscygpOworCisgICAg
b3BhcXVlQml0bWFwLnNldElzT3BhcXVlKHRydWUpOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
b3BhcXVlQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
b3BhcXVlQml0bWFwLndpZHRoKCk7ICsreCkKKyAgICAgICAgICAgICpvcGFxdWVCaXRtYXAuZ2V0
QWRkcjMyKHgsIHkpID0gMHhGRkZGRkZGRjsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG9wYXF1
ZUltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZVNraWE6OmNyZWF0ZShvcGFx
dWVCaXRtYXApKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVJbWFnZS0+Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCkpOwogCi0gICAgZHJhd0JpdG1hcC5zZXRJc09wYXF1ZShmYWxzZSk7Ci0g
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBkcmF3Qml0bWFwLmhlaWdodCgpOyArK3kpCi0gICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgZHJhd0JpdG1hcC53aWR0aCgpOyArK3gpCi0gICAgICAgICAg
ICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweDAwMDAwMDAwOwotICAgIFJlZlB0cjxC
aXRtYXBJbWFnZT4gYWxwaGFJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IE5hdGl2ZUlt
YWdlU2tpYShkcmF3Qml0bWFwLCBOYXRpdmVJbWFnZVNraWE6OkNvcHlQaXhlbHMpKTsKKyAgICBT
a0JpdG1hcCBhbHBoYUJpdG1hcDsKKyAgICBhbHBoYUJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6
OmtBUkdCXzg4ODhfQ29uZmlnLCAxMCwgMTApOworICAgIGFscGhhQml0bWFwLmFsbG9jUGl4ZWxz
KCk7CisKKyAgICBhbHBoYUJpdG1hcC5zZXRJc09wYXF1ZShmYWxzZSk7CisgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBhbHBoYUJpdG1hcC5oZWlnaHQoKTsgKyt5KQorICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IGFscGhhQml0bWFwLndpZHRoKCk7ICsreCkKKyAgICAgICAgICAgICphbHBoYUJp
dG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweDAwMDAwMDAwOworICAgIFJlZlB0cjxCaXRtYXBJbWFn
ZT4gYWxwaGFJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoTmF0aXZlSW1hZ2VTa2lhOjpjcmVh
dGUoYWxwaGFCaXRtYXApKTsKICAgICBFWFBFQ1RfRkFMU0UoYWxwaGFJbWFnZS0+Y3VycmVudEZy
YW1lS25vd25Ub0JlT3BhcXVlKCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3Qo
MTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNv
dXJjZU92ZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>