<?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>106966</bug_id>
          
          <creation_ts>2013-01-15 18:00:46 -0800</creation_ts>
          <short_desc>Image::currentFrameHasAlpha should not always return false for SVGImage</short_desc>
          <delta_ts>2013-02-01 13:32:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>junov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
    
    <cc>zeno</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>807878</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-15 18:00:46 -0800</bug_when>
    <thetext>Image::currentFrameHasAlpha is not overridden in SVGImage and always returns false. SVG Images can have alpha too so this needs to return the correct alpha value, or at least return true.

http://trac.webkit.org/changeset/135629 was recently added which takes advantage of the alpha value and probably breaks transparent SVG images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807968</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-15 19:47:20 -0800</bug_when>
    <thetext>I&apos;m not sure why the default base class implementation returns false.  I would think that true is always the conservative response here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813159</commentid>
    <comment_count>2</comment_count>
      <attachid>184009</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-22 10:34:47 -0800</bug_when>
    <thetext>Created attachment 184009
Trivial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813164</commentid>
    <comment_count>3</comment_count>
      <attachid>184009</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-01-22 10:37:21 -0800</bug_when>
    <thetext>Comment on attachment 184009
Trivial patch

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

&gt; Source/WebCore/platform/graphics/Image.h:102
&gt; +    virtual bool currentFrameHasAlpha() { return true; }

Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813168</commentid>
    <comment_count>4</comment_count>
      <attachid>184009</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-22 10:42:10 -0800</bug_when>
    <thetext>Comment on attachment 184009
Trivial patch

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

&gt;&gt; Source/WebCore/platform/graphics/Image.h:102
&gt;&gt; +    virtual bool currentFrameHasAlpha() { return true; }
&gt; 
&gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.

Besides that issue (and I personally would be open to pure virtual for this), I think the function name is wrong. It should be named currentFrameMayHaveAlpha or some other name like that that makes it clear that it does not give a definitive answer for all types of images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813185</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-22 10:48:29 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.

I also think we need to understand the impact of this change. Many of the sites that call this method need to know whether it is safe to assume that the image is opaque in order to apply shortcuts (occlusion culling, skip blending, etc.)  In that context &quot;true&quot; is an appropriate default value since it is safe to have false positives.  Before submitting this, we should make sure that this change is in fact safe for all the call sites.

Also, does this fix any bugs?  If we used to be falsely assuming that SVGimages are always opaque and they&apos;re not, then there is a good chance that this patch fixes a bug.  It would be nice to have a LayoutTest that proves it.

If this was not causing a bug, do we understand why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814446</commentid>
    <comment_count>6</comment_count>
      <attachid>184009</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-23 11:53:34 -0800</bug_when>
    <thetext>Comment on attachment 184009
Trivial patch

Thanks for the reviews! I&apos;m clearing the r? flag while I prepare the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817847</commentid>
    <comment_count>7</comment_count>
      <attachid>185001</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-28 10:13:50 -0800</bug_when>
    <thetext>Created attachment 185001
First pass at addressing reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817853</commentid>
    <comment_count>8</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-28 10:28:04 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 184009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184009&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Image.h:102
&gt; &gt; +    virtual bool currentFrameHasAlpha() { return true; }
&gt; 
&gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.

I agree, and fixing this exposed a small bug: GeneratedImage also needs to implement this. I&apos;ve updated the latest patch to address this.

(In reply to comment #4)
&gt; (From update of attachment 184009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184009&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/Image.h:102
&gt; &gt;&gt; +    virtual bool currentFrameHasAlpha() { return true; }
&gt; &gt; 
&gt; &gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.
&gt; 
&gt; Besides that issue (and I personally would be open to pure virtual for this), I think the function name is wrong. It should be named currentFrameMayHaveAlpha or some other name like that that makes it clear that it does not give a definitive answer for all types of images.

I tried a couple names such as currentFrameMayHaveAlpha and currentFrameMayhaveTransparency but I wasn&apos;t happy with how it looked from the caller&apos;s perspective. As an example, RenderImage::backgroundIsObscured() calls this function but is really looking to know whether the image is fully opaque or not. The latest patch uses &quot;currentFrameIsKnownToBeOpaque&quot;.

(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.
&gt; 
&gt; I also think we need to understand the impact of this change. Many of the sites that call this method need to know whether it is safe to assume that the image is opaque in order to apply shortcuts (occlusion culling, skip blending, etc.)  In that context &quot;true&quot; is an appropriate default value since it is safe to have false positives.  Before submitting this, we should make sure that this change is in fact safe for all the call sites.

I hope the new function name &quot;knownToBeOpaque&quot; clarifies how we handle the unknown case.

&gt; 
&gt; Also, does this fix any bugs?  If we used to be falsely assuming that SVGimages are always opaque and they&apos;re not, then there is a good chance that this patch fixes a bug.  It would be nice to have a LayoutTest that proves it.
&gt; 
&gt; If this was not causing a bug, do we understand why?

This was a tough one--this does not actually fix any bugs! When accessing SVG images we currently go through the SVGImageCache which returns a bitmap image for imageForRenderer. Therefore, in all of the callsites we actually weren&apos;t dealing with an SVG image but instead a rasterized bitmap image of the SVG image. In WK106159 I hope to change this. The latest patch modifies a test that will catch regressions in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817874</commentid>
    <comment_count>9</comment_count>
      <attachid>185001</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 10:55:47 -0800</bug_when>
    <thetext>Comment on attachment 185001
First pass at addressing reviewer comments

Attachment 185001 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16160636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817880</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-01-28 11:00:47 -0800</bug_when>
    <thetext>Thanks very much for taking this on!  Justin and I were discussing how misleading the current situation is, and this is a great improvement.

(In reply to comment #8)
&gt; I tried a couple names such as currentFrameMayHaveAlpha and currentFrameMayhaveTransparency but I wasn&apos;t happy with how it looked from the caller&apos;s perspective. As an example, RenderImage::backgroundIsObscured() calls this function but is really looking to know whether the image is fully opaque or not. The latest patch uses &quot;currentFrameIsKnownToBeOpaque&quot;.

I hate to bikeshed, but could it be simply currentFrameIsOpaque() (and isOpaque())?  They&apos;re shorter, and I think it&apos;s clear that the conservative thing to do is return false if you&apos;re not certain.

&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; 
&gt; &gt; &gt; Do the derived classes that actually do not have alpha all explicitly set it? Personally I would tend to make this pure virtual and have everyone override it, but I have no idea how that would sit with the general community.
&gt; &gt; 
&gt; &gt; I also think we need to understand the impact of this change. Many of the sites that call this method need to know whether it is safe to assume that the image is opaque in order to apply shortcuts (occlusion culling, skip blending, etc.)  In that context &quot;true&quot; is an appropriate default value since it is safe to have false positives.  Before submitting this, we should make sure that this change is in fact safe for all the call sites.
&gt; 
&gt; I hope the new function name &quot;knownToBeOpaque&quot; clarifies how we handle the unknown case.
&gt; 
&gt; &gt; 
&gt; &gt; Also, does this fix any bugs?  If we used to be falsely assuming that SVGimages are always opaque and they&apos;re not, then there is a good chance that this patch fixes a bug.  It would be nice to have a LayoutTest that proves it.
&gt; &gt; 
&gt; &gt; If this was not causing a bug, do we understand why?
&gt; 
&gt; This was a tough one--this does not actually fix any bugs! When accessing SVG images we currently go through the SVGImageCache which returns a bitmap image for imageForRenderer. Therefore, in all of the callsites we actually weren&apos;t dealing with an SVG image but instead a rasterized bitmap image of the SVG image. In WK106159 I hope to change this. The latest patch modifies a test that will catch regressions in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817904</commentid>
    <comment_count>11</comment_count>
      <attachid>185001</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-28 11:21:00 -0800</bug_when>
    <thetext>Comment on attachment 185001
First pass at addressing reviewer comments

Attachment 185001 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16160637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817948</commentid>
    <comment_count>12</comment_count>
      <attachid>185029</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-28 12:01:52 -0800</bug_when>
    <thetext>Created attachment 185029
Update for bot happiness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817984</commentid>
    <comment_count>13</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-28 12:31:18 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I hate to bikeshed, but could it be simply currentFrameIsOpaque() (and isOpaque())?  They&apos;re shorter, and I think it&apos;s clear that the conservative thing to do is return false if you&apos;re not certain.

This is obvious at the moment but a year from now (when I&apos;ve forgotten the details) I would be very surprised to get a non-opaque image that returns true for isOpaque. For that reason I&apos;d like to lean towards keeping it in the function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817989</commentid>
    <comment_count>14</comment_count>
      <attachid>185029</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 12:34:28 -0800</bug_when>
    <thetext>Comment on attachment 185029
Update for bot happiness

Attachment 185029 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16154713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818010</commentid>
    <comment_count>15</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-01-28 12:47:24 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #10)
&gt; &gt; I hate to bikeshed, but could it be simply currentFrameIsOpaque() (and isOpaque())?  They&apos;re shorter, and I think it&apos;s clear that the conservative thing to do is return false if you&apos;re not certain.
&gt; 
&gt; This is obvious at the moment but a year from now (when I&apos;ve forgotten the details) I would be very surprised to get a non-opaque image that returns true for isOpaque. For that reason I&apos;d like to lean towards keeping it in the function name.

Wait.. if that were true, then your current patch would have isKnownToBeOpaque() returning true for a non-opaque image in the above case.  That doesn&apos;t seem right either.

I&apos;m guessing the surprising case is isOpaque() returning false for an opaque image.  isKnownToBeOpaque() returning false for opaque seems less surprising, so I retract my objection to the verbosity.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819344</commentid>
    <comment_count>16</comment_count>
      <attachid>185309</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-29 14:44:41 -0800</bug_when>
    <thetext>Created attachment 185309
Update for bot happines (2)

One last build file update. Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in needed an update for win bot&apos;s happiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820468</commentid>
    <comment_count>17</comment_count>
      <attachid>185309</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-01-30 13:19:42 -0800</bug_when>
    <thetext>Comment on attachment 185309
Update for bot happines (2)

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

Looks good, but Justin wants to take a look.

&gt; Source/WebCore/ChangeLog:13
&gt; +        This patch renames hasAlpha and currentFrameHasAlpha to isKnownOpaque and

Nit:  code says isKnownToBeOpaque, but ChangeLog says isKnownOpaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820474</commentid>
    <comment_count>18</comment_count>
      <attachid>185309</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-30 13:23:32 -0800</bug_when>
    <thetext>Comment on attachment 185309
Update for bot happines (2)

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

Me likes, but I&apos;m no reviewer.

&gt; Source/WebCore/platform/graphics/skia/BitmapImageSingleFrameSkia.cpp:14
&gt; +    return m_nativeImage.bitmap().isOpaque();

Seeing this makes me think we should probably follow the example of this patch in skia and rename isOpaque to knownToBeOpaque, because it has a similar conservative best guess behavior.

&gt; Source/WebCore/svg/graphics/SVGImage.h:85
&gt; +    // FIXME: Implement this be less conservative.

Unclear. Punctuation would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820483</commentid>
    <comment_count>19</comment_count>
      <attachid>185309</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-01-30 13:27:39 -0800</bug_when>
    <thetext>Comment on attachment 185309
Update for bot happines (2)

r=me.  Nits are at your discretion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820522</commentid>
    <comment_count>20</comment_count>
      <attachid>185559</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-30 14:07:20 -0800</bug_when>
    <thetext>Created attachment 185559
Update per reviewer comments

Two small updates: Fix the Hamletian ChangeLog typo and fix the grammar mistake in the FIXMEs.

@Darin
I think this patch is ready to commit but I&apos;d like to double-check that your concerns were addressed. Do you mind taking one more look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823024</commentid>
    <comment_count>21</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-01 11:27:58 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=185559) [details]
&gt; Update per reviewer comments
&gt; 
&gt; Two small updates: Fix the Hamletian ChangeLog typo and fix the grammar mistake in the FIXMEs.
&gt; 
&gt; @Darin
&gt; I think this patch is ready to commit but I&apos;d like to double-check that your concerns were addressed. Do you mind taking one more look?

It has been a couple days so I&apos;m going to send this to the queue before it rots. I am happy to re-open, roll-out, or revisit this at any time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823037</commentid>
    <comment_count>22</comment_count>
      <attachid>185559</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 11:32:07 -0800</bug_when>
    <thetext>Comment on attachment 185559
Update per reviewer comments

Rejecting attachment 185559 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 185559, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
/PlatformContextSkiaTest.cpp
patching file Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/box-shadow/image-box-shadow-expected.html
patching file LayoutTests/fast/box-shadow/image-box-shadow.html
patching file LayoutTests/fast/box-shadow/resources/green.svg

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16306938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823095</commentid>
    <comment_count>23</comment_count>
      <attachid>186098</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-01 12:03:42 -0800</bug_when>
    <thetext>Created attachment 186098
Rebased patch for landing

Looks like the previous patch went stale after all. Attaching an updated, rebased patch that&apos;s ready for the queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823204</commentid>
    <comment_count>24</comment_count>
      <attachid>186098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 13:32:35 -0800</bug_when>
    <thetext>Comment on attachment 186098
Rebased patch for landing

Clearing flags on attachment: 186098

Committed r141637: &lt;http://trac.webkit.org/changeset/141637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823205</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-01 13:32:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184009</attachid>
            <date>2013-01-22 10:34:47 -0800</date>
            <delta_ts>2013-01-28 10:13:50 -0800</delta_ts>
            <desc>Trivial patch</desc>
            <filename>106966.1.patch</filename>
            <type>text/plain</type>
            <size>1591</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDQzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTIyICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgTWFrZSBjdXJyZW50RnJhbWVIYXNB
bHBoYSByZXR1cm4gYSBjb25zZXJ2YXRpdmUgdmFsdWUgYXMgZGVmYXVsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgSW1hZ2U6OmN1
cnJlbnRGcmFtZUhhc0FscGhhIHJldHVybmVkIGZhbHNlIGFzIHRoZSBkZWZhdWx0IHZhbHVlLiBU
aGlzIHBhdGNoCisgICAgICAgIGNoYW5nZXMgdGhpcyBiZWhhdmlvciB0byByZXR1cm4gdHJ1ZSwg
dGhlIGNvbnNlcnZhdGl2ZSByZXNwb25zZS4gQnkgZGVmYXVsdCwgU1ZHIGltYWdlcworICAgICAg
ICB3aWxsIG5vdyByZXR1cm4gdHJ1ZSBmb3IgY3VycmVudEZyYW1lSGFzQWxwaGEuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
dXJyZW50RnJhbWVIYXNBbHBoYSk6CisKIDIwMTMtMDEtMjIgIEp1c3RpbiBTY2h1aCAgPGpzY2h1
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2lsZW5jZSBNU1ZDIDY0LWJpdCBidWlsZCB3YXJu
aW5nIGM0MzA5IGZvciBGcmFtZVRyZWU6OmludmFsaWRDb3VudApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxNDAyMTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3
ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhh
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lSGFzQWxw
aGEoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkIG92
ZXJyaWRlIHRoaXMgaWYgdGhleSBjYW4gYXNzdXJlIHRoYXQgCiAgICAgLy8gdGhlIGltYWdlIGNv
bnRhaW5zIG9ubHkgcmVzb3VyY2VzIGZyb20gaXRzIG93biBzZWN1cml0eSBvcmlnaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185001</attachid>
            <date>2013-01-28 10:13:50 -0800</date>
            <delta_ts>2013-01-28 12:01:52 -0800</delta_ts>
            <desc>First pass at addressing reviewer comments</desc>
            <filename>106966.3.patch</filename>
            <type>text/plain</type>
            <size>38418</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMS0yNyAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBp
c0tub3duT3BhcXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5LCBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEncyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
IHJldHVybmVkIGZhbHNlIHNvIFNWRworICAgICAgICBpbWFnZXMgYWx3YXlzIHJldHVybmVkIGZh
bHNlIGZvciBjdXJyZW50RnJhbWVIYXNBbHBoYS4gQWRkaXRpb25hbGx5LCBjdXJyZW50RnJhbWVI
YXNBbHBoYQorICAgICAgICB3YXMgdHJlYXRlZCBhcyByZXR1cm5pbmcgd2hldGhlciB0aGUgZnJh
bWUgaGFkIGFscGhhIHdoZW4gaXQgd291bGQgYWN0dWFsbHkgY29uc2VydmF0aXZlbHkKKyAgICAg
ICAgcmV0dXJuIHRydWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGhhc0FscGhhIGFu
ZCBjdXJyZW50RnJhbWVIYXNBbHBoYSB0byBpc0tub3duT3BhcXVlIGFuZAorICAgICAgICBjdXJy
ZW50RnJhbWVJc0tub3duT3BhcXVlLCByZXNwZWN0aXZlbHkuIFRoaXMgcmVuYW1lIGJldHRlciBk
ZXNjcmliZXMgdGhlIGFjdHVhbAorICAgICAgICBmdW5jdGlvbmFsaXR5LiBUaGlzIHBhdGNoIGFs
c28gbWFrZXMgSW1hZ2U6OmlzS25vd25PcGFxdWUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rpb24gYW5k
CisgICAgICAgIGNvcnJlY3RseSBpbXBsZW1lbnRzIGl0IGZvciBTVkcgaW1hZ2VzLgorCisgICAg
ICAgIEFsbCB1c2VycyBvZiBpc0tub3duT3BhcXVlIGFjY2VzcyBTVkcgaW1hZ2VzIHVzaW5nIENh
Y2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyIHdoaWNoCisgICAgICAgIGN1cnJlbnRseSByZXR1
cm5zIGEgY2FjaGVkIGJpdG1hcCBpbWFnZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHdpbGwgbm90
IGFmZmVjdCBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5LiBBIHJlZ3Jlc3Npb24gdGVz
dCBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwgY2F0Y2ggaWYgdGhpcyBjaGFuZ2VzIGluIHRoZQor
ICAgICAgICBmdXR1cmUgKGUuZy4sIFdLMTA2MTU5IHdoaWNoIHByb3Bvc2VzIG5vdCByZXR1cm5p
bmcgY2FjaGVkIGJpdG1hcHMpLiBUaGUgbm93IHVubmVjZXNzYXJ5CisgICAgICAgIGlzQml0bWFw
SW1hZ2UoKSBjYWxscyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAg
IGltYWdlLWJveC1zaGFkb3cuaHRtbCBoYXMgYmVlbiBtb2RpZmllZCB0byB0ZXN0IFNWRyBpbWFn
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3ViaW1hZ2VLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jv
c3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSk6CisKKyAgICAgICAgICAgIE1vc3RseSBzdHJh
aWdodGZvcndhcmQgcmVuYW1lIGJ1dCBub3RlIHRoZSBsb2dpYyBoYXMgYmVlbiBzbGlnaHRseSBh
bHRlcmVkOiBBTkQgLT4gT1IuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoK
KyAgICAgICAgKENTU0Nyb3NzZmFkZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjprbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NH
cmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKEJpdG1hcEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAoR2Vu
ZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisKKyAg
ICAgICAgICAgIE5vdGU6IG5vdyBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiEKKworICAgICAgICAo
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHNJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaXNCaXRtYXBJ
bWFnZSgpIGNoZWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVj
ZXNzYXJ5IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1bWVudEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IGlzQml0bWFwSW1hZ2Uo
KSBjaGVja3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaDoKKyAgICAgICAgKFN0aWxsSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5oOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKToKKworICAgICAgICAg
ICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzIGFuZCBzbGlnaHRs
eSByZXdvcmtlZCB0aGUgbG9naWMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlQ2FjaGVk
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaDoKKyAg
ICAgICAgKFN0eWxlQ2FjaGVkSW1hZ2VTZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVk
SW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEzLTAx
LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwNjAyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNyAr
NTIsMTcgQEAgc3RhdGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFsdWUqIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBzdWJpbWFn
ZUtub3duVG9CZU9wYXF1ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiAKICAgICBpZiAodmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRl
cmVyKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVz
b3VyY2VMb2FkZXIpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6
aXNQZW5kaW5nKCkgY29ucwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1
ZS5nZXQoKSkgfHwgc3ViaW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAotYm9v
bCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgY29uc3QKK2Jvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewotICAgIHJldHVybiBzdWJpbWFnZUhhc0Fs
cGhhKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJlcikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3Rv
VmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKKyAgICByZXR1cm4gc3ViaW1hZ2VLbm93blRvQmVPcGFx
dWUobV9mcm9tVmFsdWUuZ2V0KCksIHJlbmRlcmVyKSAmJiBzdWJpbWFnZUtub3duVG9CZU9wYXF1
ZShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKIH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1
ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24g
MTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAg
ICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBsb2Fk
U3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0
NjIsMTMgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0Citib29sIENTU0dyYWRpZW50VmFsdWU6Omtub3duVG9CZU9wYXF1
ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdG9wcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29s
dmVkQ29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciop
IHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVz
UmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTYsMjEgKzE5NiwyMSBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhh
c0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENyb3Nz
ZmFkZUNsYXNzOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRl
VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlzKS0+a25vd25Ub0JlT3BhcXVlKHJl
bmRlcmVyKTsKICAgICBjYXNlIENhbnZhc0NsYXNzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlz
KS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIp
OwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVy
ZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRW
YWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlzaW9u
IDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dDsKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJv
b2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9p
ZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5
IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAvLyBObyBu
ZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJB
cmVuYS4KIH0KIAotYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFn
ZSA/IG1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKSA6IHRydWU7CisgICAgcmV0dXJuIG1faW1h
Z2UgPyBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpIDogZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
cmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKLSAgICBi
b29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsMTIgKzUxNywxMiBAQCB2b2lkIENhY2hl
ZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vCiAjZW5kaWYKIH0KIAotYm9vbCBDYWNoZWRJ
bWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
K2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVy
ZXIocmVuZGVyZXIpOwogICAgIGlmIChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsgLy8gZm9yY2UgZGVjb2RlCi0gICAg
cmV0dXJuIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHJldHVybiBpbWFnZS0+
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZp
c2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGlt
YWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZh
aWxhYmxlIHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFp
bGFibGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9Ci0gICAgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3Qq
KTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3VyZXMgZGVjb2RlZCBpbWFnZSBpcyBpbiBjYWNoZSwgdGhl
cmVmb3JlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFib3V0IHRvIGRyYXcgdGhlIGltYWdl
LgorICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVj
dCopOyAvLyBTaWRlIGVmZmVjdDogZW5zdXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0
aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1h
Z2UuCiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2Un
cyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdl
KCkgY29uc3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOSAr
MzM2LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgocwogICAgIHJl
dHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgQml0
bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdElu
ZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gIWZyYW1lSGFzQWxwaGFBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6Y3VycmVu
dEZyYW1lT3JpZW50YXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUhhc0FscGhhKCk7CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmll
bnRhdGlvbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorCiAgICAgR2VuZXJhdGVkSW1hZ2UoKSB7IH0KIAogICAgIEludFNpemUgbV9zaXplOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxNDA5
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRt
YXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGN1cnJl
bnRGcmFtZUhhc0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPSAwOwogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2Vz
IHNob3VsZCBvdmVycmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IAogICAgIC8vIHRo
ZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBmcm9tIGl0cyBvd24gc2VjdXJpdHkgb3Jp
Z2luLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVU
ZXh0dXJlQ29udGVudHNJZgogICAgIEhhc2hTZXQ8VGlsZUluZGV4PiBmaW5pc2hlZEpvYnM7CiAg
ICAgaWYgKCFyZW5kZXJKb2JzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdl
ID0gbV9sYXllci0+Y29udGVudHMoKSkgewotICAgICAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZh
bHNlOwotICAgICAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgaXNPcGFxdWUgPSAhc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSktPmN1cnJl
bnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAgICAgaWYgKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsK
ICAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0
Q29udGVudHMoYml0bWFwLCBpc09wYXF1ZSkpOwpAQCAtMjM3LDkgKzIzNSw3IEBAIHZvaWQgTGF5
ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKEltYWdlKiBpbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkpIHsKLSAgICAgICAgYm9vbCBp
c09wYXF1ZSA9IGZhbHNlOwotICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKLSAg
ICAgICAgICAgIGlzT3BhcXVlID0gIXN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5j
dXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxp
bmcgYW4gaW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0Jp
dG1hcAogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRl
bnRzKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJ
bWFnZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OkltYWdlRXh0cmFjdG9yOjoKIHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBib29sIGhhc0FscGhhID0gbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpID8g
bV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA6IHRydWU7CisgICAgYm9vbCBoYXNBbHBo
YSA9ICFtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICBpZiAoKGln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBo
YSkpICYmIG1faW1hZ2UtPmRhdGEoKSkgewogICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKElt
YWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVJZ25vcmVkIDogSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBw
bGllZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQREZE
b2N1bWVudEltYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Ci0gICAgICAgIAorCisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBiZSBsZXNzIGNv
bnNlcnZhdGl2ZS4KKyAgICAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgdm9pZCBzZXRDdXJy
ZW50UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYWRqdXN0Q1RNKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldENvbnRlbnRzVAogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBtX2ltYWdlTGF5ZXItPnNldEJpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwotICAgICAgICBtX2ltYWdlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShpbWFn
ZS0+aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7Cisg
ICAgICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5jdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2ltYWdlTGF5ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2
aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsOSBAQCBTdGlsbEltYWdl
Ojp+U3RpbGxJbWFnZSgpCiAgICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0KIAotYm9vbCBTdGls
bEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCitib29sIFN0aWxsSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIG1fcGl4bWFwLT5oYXNBbHBoYSgp
OworICAgIHJldHVybiAhbV9waXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNpemUgU3RpbGxJ
bWFnZTo6c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIAogICAgICAgICAvLyBGSVhNRTog
U3RpbGxJbWFnZXMgYXJlIHVuZGVycmVwb3J0aW5nIGRlY29kZWQgc2l6ZXMgYW5kIHdpbGwgYmUg
dW5hYmxlCiAgICAgICAgIC8vIHRvIHBydW5lIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05LDkgKzksOSBAQCBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1h
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuICFtX25hdGl2ZUlt
YWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFw
KCkuaXNPcGFxdWUoKTsKIH0KIAogSW50U2l6ZSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShy
ZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRh
dGVDb250ZW50cyhUCiAgICAgdGFyZ2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0Lnko
KSk7CiAgICAgaWYgKCFtX3RleHR1cmUpIHsKICAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1h
cHBlci0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJl
Y3Quc2l6ZSgpLCBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0
LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNG
bGFnKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlCiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgY3Jl
YXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRl
eHR1cmVTaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVy
ZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RpbGVz
W2ldLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0
ZUNvbnRlbnRzRmxhZyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSwxMiArNDk5LDExIEBAIGJvb2wg
UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKCkKICAgICBpZiAoKGJhY2tncm91bmRD
bGlwID09IEJvcmRlckZpbGxCb3ggfHwgYmFja2dyb3VuZENsaXAgPT0gUGFkZGluZ0ZpbGxCb3gp
ICYmIHN0eWxlKCktPmhhc1BhZGRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgorICAgIC8vIENoZWNrIGZvciBp
bWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8
IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlt
YWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShj
b25zdCBSZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9jb21wb3NpdGUgPT0g
Q29tcG9zaXRlU291cmNlT3ZlcikKLSAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBoYShy
ZW5kZXJlcik7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVy
ZXIpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5
bGVDYWNoZWRJbWFnZTo6aW1hZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJldHVy
biBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw5ICsxMTYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdl
U2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVyKTsKKyAg
ICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShyZW5k
ZXJlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlU2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVzdEZp
dEltYWdlLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRv
clZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAKLWJvb2wgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wg
U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFz
QWxwaGEocmVuZGVyZXIpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTQw
OTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJS
SURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVk
SW1hZ2VQdHIgZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVG
YWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQ
ZW5kaW5nSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAog
cHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgU1ZH
SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTI3ICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGN1cnJlbnRG
cmFtZUhhc0FscGhhIHRvIGN1cnJlbnRGcmFtZUlzS25vd25PcGFxdWUgYW5kIHJldHVybiBjb3Jy
ZWN0IHZhbHVlcyBmb3IgU1ZHIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkgIDx6
YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1lbnQg
aW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUgWFAg
U1AyLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3Vy
ZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFn
ZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNB
bHBoYSA6IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyk7CisgICAgbV9zdXJmYWNlID0gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCAhbV9pbWFnZS0+Y3VycmVu
dEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxw
aGEgOiBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MpOwogICAgIGlmICghbV9zdXJmYWNlKSB7
CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTM3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0w
MS0yNyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBj
dXJyZW50RnJhbWVIYXNBbHBoYSB0byBjdXJyZW50RnJhbWVJc0tub3duT3BhcXVlIGFuZCByZXR1
cm4gY29ycmVjdCB2YWx1ZXMgZm9yIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSk6CisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTMtMDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDA2MDIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lSGFzQWxwaGEoKQorICAgIHZp
cnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICFtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5pc09wYXF1ZSgpOworICAgICAgICByZXR1
cm4gbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAkocmV2aXNpb24g
MTQwOTE3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRT
a2lhVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCwxNCArNTUwLDE0IEBAIFRFU1QoUGxh
dGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXUKICAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBkcmF3Qml0bWFwLndpZHRoKCk7ICsreCkKICAgICAgICAgICAgICpkcmF3Qml0bWFwLmdl
dEFkZHIzMih4LCB5KSA9IDB4RkZGRkZGRkY7CiAgICAgUmVmUHRyPEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhPiBvcGFxdWVJbWFnZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVh
dGUoZHJhd0JpdG1hcCwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9wYXF1ZUltYWdlLT5jdXJy
ZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvcGFxdWVJbWFnZS0+Y3VycmVu
dEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOwogCiAgICAgZHJhd0JpdG1hcC5zZXRJc09wYXF1ZShm
YWxzZSk7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBkcmF3Qml0bWFwLmhlaWdodCgpOyArK3kp
CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZHJhd0JpdG1hcC53aWR0aCgpOyArK3gpCiAg
ICAgICAgICAgICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweDAwMDAwMDAwOwogICAg
IFJlZlB0cjxCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYT4gYWxwaGFJbWFnZSA9IEJpdG1hcElt
YWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoZHJhd0JpdG1hcCwgdHJ1ZSk7Ci0gICAgRVhQRUNU
X1RSVUUoYWxwaGFJbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGFscGhhSW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAxLTI3ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGhhc0FscGhhIHRvIGlz
S25vd25PcGFxdWUgYW5kIGNvcnJlY3QgdGhlIHJldHVybiB2YWx1ZSBmb3IgU1ZHIGltYWdlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjk2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuIFNWRyBp
bWFnZSBoYXMgYmVlbiBhZGRlZCB0byB0aGlzIHRlc3QgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25z
LgorCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3ctZXhwZWN0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy5odG1sOgor
CisgICAgICAgICAgICBBZGQgYW4gU1ZHIGltYWdlIGFuZCBjb3JyZWN0IGEgc21hbGwgbWlzdGFr
ZSBpbiB0aGUgdGVzdCB0aGF0IHVzZWQgdmFsdWVzIG9mIDI1NgorICAgICAgICAgICAgaW5zdGVh
ZCBvZiAyNTUuCisKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2
ZzogQWRkZWQuCisKIDIwMTMtMDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDA2MDIuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy1leHBlY3Rl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9pbWFnZS1i
b3gtc2hhZG93LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDE0MDkxNykKKysrIExheW91dFRlc3Rz
L2Zhc3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMTAgKzcsMTEgQEAgaW1nIHsKIH0KIGRpdiB7CiAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwotICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NiwwKTsKKyAgICBiYWNrZ3JvdW5k
OiByZ2IoMCwyNTUsMCk7CiAgICAgaGVpZ2h0OiA1MHB4OwogfQogPC9zdHlsZT4KIDxkaXY+PGlt
ZyBzcmM9InJlc291cmNlcy9ncmVlbi1hbHBoYS5wbmciPjwvZGl2PgogPGRpdj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuLnBuZyI+PC9kaXY+CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3Jl
ZW4uanBnIj48L2Rpdj4KKzxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5zdmciPjwvZGl2
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNo
YWRvdy5odG1sCShyZXZpc2lvbiAxNDA5MTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFk
b3cvaW1hZ2UtYm94LXNoYWRvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBA
CiA8IURPQ1RZUEUgaHRtbD4KIDxzdHlsZT4KIGltZyB7Ci0gICAgYmFja2dyb3VuZDogcmdiKDAs
MjU2LDApOworICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NSwwKTsKICAgICB3aWR0aDogNTBweDsK
ICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKLSAgICBib3gtc2hh
ZG93OiAwcHggMjVweCByZ2IoMCwyNTYsMCk7IAorICAgIGJveC1zaGFkb3c6IDBweCAyNXB4IHJn
YigwLDI1NSwwKTsgCiB9CiBkaXYgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKQEAgLTE2
LDMgKzE2LDQgQEAgZGl2IHsKIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi1hbHBoYS5w
bmciPjwvZGl2PgogPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyI+PC9kaXY+CiA8
ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4uanBnIj48L2Rpdj4KKzxkaXY+PGltZyBzcmM9
InJlc291cmNlcy9ncmVlbi5zdmciPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ib3gt
c2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ib3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2ZwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9Im5vIj8+Cis8IURP
Q1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3Lncz
Lm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiPgorICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0icmdiYSgwLDI1NSwwLDAuNSkiIC8+Cis8L3N2Zz4K
</data>
<flag name="commit-queue"
          id="203927"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185029</attachid>
            <date>2013-01-28 12:01:52 -0800</date>
            <delta_ts>2013-01-29 14:44:41 -0800</delta_ts>
            <desc>Update for bot happiness</desc>
            <filename>106966.4.patch</filename>
            <type>text/plain</type>
            <size>39037</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMS0yNyAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBp
c0tub3duT3BhcXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5LCBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEncyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
IHJldHVybmVkIGZhbHNlIHNvIFNWRworICAgICAgICBpbWFnZXMgYWx3YXlzIHJldHVybmVkIGZh
bHNlIGZvciBjdXJyZW50RnJhbWVIYXNBbHBoYS4gQWRkaXRpb25hbGx5LCBjdXJyZW50RnJhbWVI
YXNBbHBoYQorICAgICAgICB3YXMgdHJlYXRlZCBhcyByZXR1cm5pbmcgd2hldGhlciB0aGUgZnJh
bWUgaGFkIGFscGhhIHdoZW4gaXQgd291bGQgYWN0dWFsbHkgY29uc2VydmF0aXZlbHkKKyAgICAg
ICAgcmV0dXJuIHRydWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGhhc0FscGhhIGFu
ZCBjdXJyZW50RnJhbWVIYXNBbHBoYSB0byBpc0tub3duT3BhcXVlIGFuZAorICAgICAgICBjdXJy
ZW50RnJhbWVJc0tub3duT3BhcXVlLCByZXNwZWN0aXZlbHkuIFRoaXMgcmVuYW1lIGJldHRlciBk
ZXNjcmliZXMgdGhlIGFjdHVhbAorICAgICAgICBmdW5jdGlvbmFsaXR5LiBUaGlzIHBhdGNoIGFs
c28gbWFrZXMgSW1hZ2U6OmlzS25vd25PcGFxdWUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rpb24gYW5k
CisgICAgICAgIGNvcnJlY3RseSBpbXBsZW1lbnRzIGl0IGZvciBTVkcgaW1hZ2VzLgorCisgICAg
ICAgIEFsbCB1c2VycyBvZiBpc0tub3duT3BhcXVlIGFjY2VzcyBTVkcgaW1hZ2VzIHVzaW5nIENh
Y2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyIHdoaWNoCisgICAgICAgIGN1cnJlbnRseSByZXR1
cm5zIGEgY2FjaGVkIGJpdG1hcCBpbWFnZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHdpbGwgbm90
IGFmZmVjdCBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5LiBBIHJlZ3Jlc3Npb24gdGVz
dCBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwgY2F0Y2ggaWYgdGhpcyBjaGFuZ2VzIGluIHRoZQor
ICAgICAgICBmdXR1cmUgKGUuZy4sIFdLMTA2MTU5IHdoaWNoIHByb3Bvc2VzIG5vdCByZXR1cm5p
bmcgY2FjaGVkIGJpdG1hcHMpLiBUaGUgbm93IHVubmVjZXNzYXJ5CisgICAgICAgIGlzQml0bWFw
SW1hZ2UoKSBjYWxscyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAg
IGltYWdlLWJveC1zaGFkb3cuaHRtbCBoYXMgYmVlbiBtb2RpZmllZCB0byB0ZXN0IFNWRyBpbWFn
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3ViaW1hZ2VLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jv
c3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSk6CisKKyAgICAgICAgICAgIE1vc3RseSBzdHJh
aWdodGZvcndhcmQgcmVuYW1lIGJ1dCBub3RlIHRoZSBsb2dpYyBoYXMgYmVlbiBzbGlnaHRseSBh
bHRlcmVkOiBBTkQgLT4gT1IuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoK
KyAgICAgICAgKENTU0Nyb3NzZmFkZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjprbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NH
cmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKEJpdG1hcEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAoR2Vu
ZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisKKyAg
ICAgICAgICAgIE5vdGU6IG5vdyBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiEKKworICAgICAgICAo
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHNJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaXNCaXRtYXBJ
bWFnZSgpIGNoZWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVj
ZXNzYXJ5IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1bWVudEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IGlzQml0bWFwSW1hZ2Uo
KSBjaGVja3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaDoKKyAgICAgICAgKFN0aWxsSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5oOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKToKKworICAgICAgICAg
ICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzIGFuZCBzbGlnaHRs
eSByZXdvcmtlZCB0aGUgbG9naWMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlQ2FjaGVk
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaDoKKyAg
ICAgICAgKFN0eWxlQ2FjaGVkSW1hZ2VTZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVk
SW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEzLTAx
LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwNjAyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNyAr
NTIsMTcgQEAgc3RhdGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFsdWUqIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBzdWJpbWFn
ZUtub3duVG9CZU9wYXF1ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiAKICAgICBpZiAodmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRl
cmVyKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVz
b3VyY2VMb2FkZXIpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6
aXNQZW5kaW5nKCkgY29ucwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1
ZS5nZXQoKSkgfHwgc3ViaW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAotYm9v
bCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgY29uc3QKK2Jvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewotICAgIHJldHVybiBzdWJpbWFnZUhhc0Fs
cGhhKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJlcikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3Rv
VmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKKyAgICByZXR1cm4gc3ViaW1hZ2VLbm93blRvQmVPcGFx
dWUobV9mcm9tVmFsdWUuZ2V0KCksIHJlbmRlcmVyKSAmJiBzdWJpbWFnZUtub3duVG9CZU9wYXF1
ZShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKIH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1
ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24g
MTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAg
ICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBsb2Fk
U3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0
NjIsMTMgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0Citib29sIENTU0dyYWRpZW50VmFsdWU6Omtub3duVG9CZU9wYXF1
ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdG9wcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29s
dmVkQ29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciop
IHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVz
UmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTYsMjEgKzE5NiwyMSBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhh
c0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENyb3Nz
ZmFkZUNsYXNzOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRl
VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlzKS0+a25vd25Ub0JlT3BhcXVlKHJl
bmRlcmVyKTsKICAgICBjYXNlIENhbnZhc0NsYXNzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlz
KS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIp
OwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVy
ZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRW
YWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlzaW9u
IDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dDsKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJv
b2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9p
ZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5
IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAvLyBObyBu
ZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJB
cmVuYS4KIH0KIAotYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFn
ZSA/IG1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKSA6IHRydWU7CisgICAgcmV0dXJuIG1faW1h
Z2UgPyBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpIDogZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
cmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKLSAgICBi
b29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsMTIgKzUxNywxMiBAQCB2b2lkIENhY2hl
ZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vCiAjZW5kaWYKIH0KIAotYm9vbCBDYWNoZWRJ
bWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
K2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVy
ZXIocmVuZGVyZXIpOwogICAgIGlmIChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsgLy8gZm9yY2UgZGVjb2RlCi0gICAg
cmV0dXJuIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHJldHVybiBpbWFnZS0+
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZp
c2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGlt
YWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZh
aWxhYmxlIHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFp
bGFibGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9Ci0gICAgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3Qq
KTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3VyZXMgZGVjb2RlZCBpbWFnZSBpcyBpbiBjYWNoZSwgdGhl
cmVmb3JlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFib3V0IHRvIGRyYXcgdGhlIGltYWdl
LgorICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVj
dCopOyAvLyBTaWRlIGVmZmVjdDogZW5zdXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0
aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1h
Z2UuCiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2Un
cyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdl
KCkgY29uc3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOSAr
MzM2LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgocwogICAgIHJl
dHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgQml0
bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdElu
ZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gIWZyYW1lSGFzQWxwaGFBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6Y3VycmVu
dEZyYW1lT3JpZW50YXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUhhc0FscGhhKCk7CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmll
bnRhdGlvbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorCiAgICAgR2VuZXJhdGVkSW1hZ2UoKSB7IH0KIAogICAgIEludFNpemUgbV9zaXplOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxNDA5
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRt
YXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGN1cnJl
bnRGcmFtZUhhc0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPSAwOwogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2Vz
IHNob3VsZCBvdmVycmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IAogICAgIC8vIHRo
ZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBmcm9tIGl0cyBvd24gc2VjdXJpdHkgb3Jp
Z2luLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVU
ZXh0dXJlQ29udGVudHNJZgogICAgIEhhc2hTZXQ8VGlsZUluZGV4PiBmaW5pc2hlZEpvYnM7CiAg
ICAgaWYgKCFyZW5kZXJKb2JzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdl
ID0gbV9sYXllci0+Y29udGVudHMoKSkgewotICAgICAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZh
bHNlOwotICAgICAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgaXNPcGFxdWUgPSAhc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSktPmN1cnJl
bnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAgICAgaWYgKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsK
ICAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0
Q29udGVudHMoYml0bWFwLCBpc09wYXF1ZSkpOwpAQCAtMjM3LDkgKzIzNSw3IEBAIHZvaWQgTGF5
ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKEltYWdlKiBpbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkpIHsKLSAgICAgICAgYm9vbCBp
c09wYXF1ZSA9IGZhbHNlOwotICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKLSAg
ICAgICAgICAgIGlzT3BhcXVlID0gIXN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5j
dXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxp
bmcgYW4gaW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0Jp
dG1hcAogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRl
bnRzKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJ
bWFnZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OkltYWdlRXh0cmFjdG9yOjoKIHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBib29sIGhhc0FscGhhID0gbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpID8g
bV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA6IHRydWU7CisgICAgYm9vbCBoYXNBbHBo
YSA9ICFtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICBpZiAoKGln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBo
YSkpICYmIG1faW1hZ2UtPmRhdGEoKSkgewogICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKElt
YWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVJZ25vcmVkIDogSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBw
bGllZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQREZE
b2N1bWVudEltYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Ci0gICAgICAgIAorCisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBiZSBsZXNzIGNv
bnNlcnZhdGl2ZS4KKyAgICAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgdm9pZCBzZXRDdXJy
ZW50UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYWRqdXN0Q1RNKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldENvbnRlbnRzVAogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBtX2ltYWdlTGF5ZXItPnNldEJpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwotICAgICAgICBtX2ltYWdlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShpbWFn
ZS0+aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7Cisg
ICAgICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5jdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2ltYWdlTGF5ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2
aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsOSBAQCBTdGlsbEltYWdl
Ojp+U3RpbGxJbWFnZSgpCiAgICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0KIAotYm9vbCBTdGls
bEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCitib29sIFN0aWxsSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIG1fcGl4bWFwLT5oYXNBbHBoYSgp
OworICAgIHJldHVybiAhbV9waXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNpemUgU3RpbGxJ
bWFnZTo6c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIAogICAgICAgICAvLyBGSVhNRTog
U3RpbGxJbWFnZXMgYXJlIHVuZGVycmVwb3J0aW5nIGRlY29kZWQgc2l6ZXMgYW5kIHdpbGwgYmUg
dW5hYmxlCiAgICAgICAgIC8vIHRvIHBydW5lIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05LDkgKzksOSBAQCBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1h
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuICFtX25hdGl2ZUlt
YWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFw
KCkuaXNPcGFxdWUoKTsKIH0KIAogSW50U2l6ZSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShy
ZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRh
dGVDb250ZW50cyhUCiAgICAgdGFyZ2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0Lnko
KSk7CiAgICAgaWYgKCFtX3RleHR1cmUpIHsKICAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1h
cHBlci0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJl
Y3Quc2l6ZSgpLCBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0
LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNG
bGFnKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlCiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgY3Jl
YXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRl
eHR1cmVTaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVy
ZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RpbGVz
W2ldLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0
ZUNvbnRlbnRzRmxhZyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSwxMiArNDk5LDExIEBAIGJvb2wg
UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKCkKICAgICBpZiAoKGJhY2tncm91bmRD
bGlwID09IEJvcmRlckZpbGxCb3ggfHwgYmFja2dyb3VuZENsaXAgPT0gUGFkZGluZ0ZpbGxCb3gp
ICYmIHN0eWxlKCktPmhhc1BhZGRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgorICAgIC8vIENoZWNrIGZvciBp
bWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8
IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlt
YWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShj
b25zdCBSZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9jb21wb3NpdGUgPT0g
Q29tcG9zaXRlU291cmNlT3ZlcikKLSAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBoYShy
ZW5kZXJlcik7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVy
ZXIpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5
bGVDYWNoZWRJbWFnZTo6aW1hZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJldHVy
biBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw5ICsxMTYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdl
U2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVyKTsKKyAg
ICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShyZW5k
ZXJlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlU2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVzdEZp
dEltYWdlLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRv
clZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAKLWJvb2wgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wg
U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFz
QWxwaGEocmVuZGVyZXIpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTQw
OTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJS
SURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVk
SW1hZ2VQdHIgZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVG
YWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQ
ZW5kaW5nSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAog
cHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgU1ZH
SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTI3ICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGN1cnJlbnRG
cmFtZUhhc0FscGhhIHRvIGN1cnJlbnRGcmFtZUlzS25vd25PcGFxdWUgYW5kIHJldHVybiBjb3Jy
ZWN0IHZhbHVlcyBmb3IgU1ZHIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkgIDx6
YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1lbnQg
aW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUgWFAg
U1AyLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3Vy
ZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFn
ZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNB
bHBoYSA6IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyk7CisgICAgbV9zdXJmYWNlID0gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCAhbV9pbWFnZS0+Y3VycmVu
dEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxw
aGEgOiBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MpOwogICAgIGlmICghbV9zdXJmYWNlKSB7
CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTM3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0w
MS0yNyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBj
dXJyZW50RnJhbWVIYXNBbHBoYSB0byBjdXJyZW50RnJhbWVJc0tub3duT3BhcXVlIGFuZCByZXR1
cm4gY29ycmVjdCB2YWx1ZXMgZm9yIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSk6CisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTMtMDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDA2MDIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0lt
YWdlVGVzdC5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDB1OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBj
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2Rl
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1U
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdl
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCkKKyAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAh
bV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLmlzT3BhcXVlKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbnRT
aXplIHNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0
Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAJKHJldmlzaW9uIDE0MDkxNykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsMTQgKzU1MCwxNCBAQCBURVNUKFBsYXRmb3JtQ29u
dGV4dFNraWFUZXN0LCB0cmFja09wYXF1CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZHJh
d0JpdG1hcC53aWR0aCgpOyArK3gpCiAgICAgICAgICAgICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIo
eCwgeSkgPSAweEZGRkZGRkZGOwogICAgIFJlZlB0cjxCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YT4gb3BhcXVlSW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKGRyYXdC
aXRtYXAsIHRydWUpOwotICAgIEVYUEVDVF9GQUxTRShvcGFxdWVJbWFnZS0+Y3VycmVudEZyYW1l
SGFzQWxwaGEoKSk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlSW1hZ2UtPmN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpKTsKIAogICAgIGRyYXdCaXRtYXAuc2V0SXNPcGFxdWUoZmFsc2UpOwog
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZHJhd0JpdG1hcC5oZWlnaHQoKTsgKyt5KQogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IGRyYXdCaXRtYXAud2lkdGgoKTsgKyt4KQogICAgICAgICAg
ICAgKmRyYXdCaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID0gMHgwMDAwMDAwMDsKICAgICBSZWZQdHI8
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE+IGFscGhhSW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYTo6Y3JlYXRlKGRyYXdCaXRtYXAsIHRydWUpOwotICAgIEVYUEVDVF9UUlVFKGFs
cGhhSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOworICAgIEVYUEVDVF9GQUxTRShhbHBo
YUltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAKICAgICBjb250ZXh0LmZp
bGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNDA5MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMS0yNyAgUGhpbGlwIFJvZ2VycyAg
PHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBpc0tub3duT3Bh
cXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbiBTVkcgaW1hZ2UgaGFz
IGJlZW4gYWRkZWQgdG8gdGhpcyB0ZXN0IHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4KKworICAg
ICAgICAqIGZhc3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRtbDoKKworICAgICAg
ICAgICAgQWRkIGFuIFNWRyBpbWFnZSBhbmQgY29ycmVjdCBhIHNtYWxsIG1pc3Rha2UgaW4gdGhl
IHRlc3QgdGhhdCB1c2VkIHZhbHVlcyBvZiAyNTYKKyAgICAgICAgICAgIGluc3RlYWQgb2YgMjU1
LgorCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmc6IEFkZGVk
LgorCiAyMDEzLTAxLTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwNjAyLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRv
dy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAxNDA5MTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jv
eC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDEwICs3LDExIEBAIGltZyB7CiB9CiBkaXYgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKLSAgICBiYWNrZ3JvdW5kOiByZ2IoMCwyNTYsMCk7CisgICAgYmFja2dyb3VuZDogcmdiKDAs
MjU1LDApOwogICAgIGhlaWdodDogNTBweDsKIH0KIDwvc3R5bGU+CiA8ZGl2PjxpbWcgc3JjPSJy
ZXNvdXJjZXMvZ3JlZW4tYWxwaGEucG5nIj48L2Rpdj4KIDxkaXY+PGltZyBzcmM9InJlc291cmNl
cy9ncmVlbi5wbmciPjwvZGl2PgogPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLmpwZyI+
PC9kaXY+Cis8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4uc3ZnIj48L2Rpdj4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRt
bAkocmV2aXNpb24gMTQwOTE3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdl
LWJveC1zaGFkb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMSBAQAogPCFET0NU
WVBFIGh0bWw+CiA8c3R5bGU+CiBpbWcgewotICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NiwwKTsK
KyAgICBiYWNrZ3JvdW5kOiByZ2IoMCwyNTUsMCk7CiAgICAgd2lkdGg6IDUwcHg7CiAgICAgaGVp
Z2h0OiAyNXB4OwogICAgIG1hcmdpbi1ib3R0b206IDI1cHg7Ci0gICAgYm94LXNoYWRvdzogMHB4
IDI1cHggcmdiKDAsMjU2LDApOyAKKyAgICBib3gtc2hhZG93OiAwcHggMjVweCByZ2IoMCwyNTUs
MCk7IAogfQogZGl2IHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CkBAIC0xNiwzICsxNiw0
IEBAIGRpdiB7CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tYWxwaGEucG5nIj48L2Rp
dj4KIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciPjwvZGl2PgogPGRpdj48aW1n
IHNyYz0icmVzb3VyY2VzL2dyZWVuLmpwZyI+PC9kaXY+Cis8ZGl2PjxpbWcgc3JjPSJyZXNvdXJj
ZXMvZ3JlZW4uc3ZnIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9y
ZXNvdXJjZXMvZ3JlZW4uc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYm94LXNo
YWRvdy9yZXNvdXJjZXMvZ3JlZW4uc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ib3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PgorPCFET0NUWVBFIHN2
ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjI1Ij4KKyAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiIGZpbGw9InJnYmEoMCwyNTUsMCwwLjUpIiAvPgorPC9zdmc+Cg==
</data>
<flag name="commit-queue"
          id="203963"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185309</attachid>
            <date>2013-01-29 14:44:41 -0800</date>
            <delta_ts>2013-01-30 14:07:20 -0800</delta_ts>
            <desc>Update for bot happines (2)</desc>
            <filename>106966.7.patch</filename>
            <type>text/plain</type>
            <size>41100</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMS0yNyAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBp
c0tub3duT3BhcXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5LCBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEncyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
IHJldHVybmVkIGZhbHNlIHNvIFNWRworICAgICAgICBpbWFnZXMgYWx3YXlzIHJldHVybmVkIGZh
bHNlIGZvciBjdXJyZW50RnJhbWVIYXNBbHBoYS4gQWRkaXRpb25hbGx5LCBjdXJyZW50RnJhbWVI
YXNBbHBoYQorICAgICAgICB3YXMgdHJlYXRlZCBhcyByZXR1cm5pbmcgd2hldGhlciB0aGUgZnJh
bWUgaGFkIGFscGhhIHdoZW4gaXQgd291bGQgYWN0dWFsbHkgY29uc2VydmF0aXZlbHkKKyAgICAg
ICAgcmV0dXJuIHRydWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGhhc0FscGhhIGFu
ZCBjdXJyZW50RnJhbWVIYXNBbHBoYSB0byBpc0tub3duT3BhcXVlIGFuZAorICAgICAgICBjdXJy
ZW50RnJhbWVJc0tub3duT3BhcXVlLCByZXNwZWN0aXZlbHkuIFRoaXMgcmVuYW1lIGJldHRlciBk
ZXNjcmliZXMgdGhlIGFjdHVhbAorICAgICAgICBmdW5jdGlvbmFsaXR5LiBUaGlzIHBhdGNoIGFs
c28gbWFrZXMgSW1hZ2U6OmlzS25vd25PcGFxdWUgYSBwdXJlIHZpcnR1YWwgZnVuY3Rpb24gYW5k
CisgICAgICAgIGNvcnJlY3RseSBpbXBsZW1lbnRzIGl0IGZvciBTVkcgaW1hZ2VzLgorCisgICAg
ICAgIEFsbCB1c2VycyBvZiBpc0tub3duT3BhcXVlIGFjY2VzcyBTVkcgaW1hZ2VzIHVzaW5nIENh
Y2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyIHdoaWNoCisgICAgICAgIGN1cnJlbnRseSByZXR1
cm5zIGEgY2FjaGVkIGJpdG1hcCBpbWFnZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHdpbGwgbm90
IGFmZmVjdCBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5LiBBIHJlZ3Jlc3Npb24gdGVz
dCBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwgY2F0Y2ggaWYgdGhpcyBjaGFuZ2VzIGluIHRoZQor
ICAgICAgICBmdXR1cmUgKGUuZy4sIFdLMTA2MTU5IHdoaWNoIHByb3Bvc2VzIG5vdCByZXR1cm5p
bmcgY2FjaGVkIGJpdG1hcHMpLiBUaGUgbm93IHVubmVjZXNzYXJ5CisgICAgICAgIGlzQml0bWFw
SW1hZ2UoKSBjYWxscyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAg
IGltYWdlLWJveC1zaGFkb3cuaHRtbCBoYXMgYmVlbiBtb2RpZmllZCB0byB0ZXN0IFNWRyBpbWFn
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3ViaW1hZ2VLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jv
c3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSk6CisKKyAgICAgICAgICAgIE1vc3RseSBzdHJh
aWdodGZvcndhcmQgcmVuYW1lIGJ1dCBub3RlIHRoZSBsb2dpYyBoYXMgYmVlbiBzbGlnaHRseSBh
bHRlcmVkOiBBTkQgLT4gT1IuCisKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoK
KyAgICAgICAgKENTU0Nyb3NzZmFkZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjprbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NH
cmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKEJpdG1hcEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAoR2Vu
ZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisKKyAg
ICAgICAgICAgIE5vdGU6IG5vdyBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiEKKworICAgICAgICAo
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHNJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaXNCaXRtYXBJ
bWFnZSgpIGNoZWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVj
ZXNzYXJ5IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1bWVudEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IGlzQml0bWFwSW1hZ2Uo
KSBjaGVja3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaDoKKyAgICAgICAgKFN0aWxsSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5oOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKToKKworICAgICAgICAg
ICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzIGFuZCBzbGlnaHRs
eSByZXdvcmtlZCB0aGUgbG9naWMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlQ2FjaGVk
SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaDoKKyAg
ICAgICAgKFN0eWxlQ2FjaGVkSW1hZ2VTZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVk
SW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEzLTAx
LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwNjAyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNyAr
NTIsMTcgQEAgc3RhdGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFsdWUqIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBzdWJpbWFn
ZUtub3duVG9CZU9wYXF1ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiAKICAgICBpZiAodmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRl
cmVyKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVz
b3VyY2VMb2FkZXIpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6
aXNQZW5kaW5nKCkgY29ucwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1
ZS5nZXQoKSkgfHwgc3ViaW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAotYm9v
bCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgY29uc3QKK2Jvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewotICAgIHJldHVybiBzdWJpbWFnZUhhc0Fs
cGhhKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJlcikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3Rv
VmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKKyAgICByZXR1cm4gc3ViaW1hZ2VLbm93blRvQmVPcGFx
dWUobV9mcm9tVmFsdWUuZ2V0KCksIHJlbmRlcmVyKSAmJiBzdWJpbWFnZUtub3duVG9CZU9wYXF1
ZShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKIH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1
ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24g
MTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAg
ICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBsb2Fk
U3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0
NjIsMTMgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0Citib29sIENTU0dyYWRpZW50VmFsdWU6Omtub3duVG9CZU9wYXF1
ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdG9wcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29s
dmVkQ29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciop
IHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVz
UmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTYsMjEgKzE5NiwyMSBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhh
c0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENyb3Nz
ZmFkZUNsYXNzOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRl
VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlzKS0+a25vd25Ub0JlT3BhcXVlKHJl
bmRlcmVyKTsKICAgICBjYXNlIENhbnZhc0NsYXNzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlz
KS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIp
OwogICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVy
ZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRW
YWx1ZSo+KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlzaW9u
IDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dDsKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJv
b2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9p
ZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5
IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAvLyBObyBu
ZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJB
cmVuYS4KIH0KIAotYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFn
ZSA/IG1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKSA6IHRydWU7CisgICAgcmV0dXJuIG1faW1h
Z2UgPyBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpIDogZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
cmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKLSAgICBi
b29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsMTIgKzUxNywxMiBAQCB2b2lkIENhY2hl
ZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vCiAjZW5kaWYKIH0KIAotYm9vbCBDYWNoZWRJ
bWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
K2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVy
ZXIocmVuZGVyZXIpOwogICAgIGlmIChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsgLy8gZm9yY2UgZGVjb2RlCi0gICAg
cmV0dXJuIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHJldHVybiBpbWFnZS0+
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZp
c2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGlt
YWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZh
aWxhYmxlIHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFp
bGFibGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9Ci0gICAgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3Qq
KTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3VyZXMgZGVjb2RlZCBpbWFnZSBpcyBpbiBjYWNoZSwgdGhl
cmVmb3JlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFib3V0IHRvIGRyYXcgdGhlIGltYWdl
LgorICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVj
dCopOyAvLyBTaWRlIGVmZmVjdDogZW5zdXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0
aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1h
Z2UuCiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2Un
cyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdl
KCkgY29uc3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOSAr
MzM2LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgocwogICAgIHJl
dHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgQml0
bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdElu
ZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gIWZyYW1lSGFzQWxwaGFBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6Y3VycmVu
dEZyYW1lT3JpZW50YXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUhhc0FscGhhKCk7CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmll
bnRhdGlvbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorCiAgICAgR2VuZXJhdGVkSW1hZ2UoKSB7IH0KIAogICAgIEludFNpemUgbV9zaXplOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxNDA5
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRt
YXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGN1cnJl
bnRGcmFtZUhhc0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPSAwOwogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2Vz
IHNob3VsZCBvdmVycmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IAogICAgIC8vIHRo
ZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBmcm9tIGl0cyBvd24gc2VjdXJpdHkgb3Jp
Z2luLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVU
ZXh0dXJlQ29udGVudHNJZgogICAgIEhhc2hTZXQ8VGlsZUluZGV4PiBmaW5pc2hlZEpvYnM7CiAg
ICAgaWYgKCFyZW5kZXJKb2JzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdl
ID0gbV9sYXllci0+Y29udGVudHMoKSkgewotICAgICAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZh
bHNlOwotICAgICAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgaXNPcGFxdWUgPSAhc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSktPmN1cnJl
bnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAgICAgaWYgKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsK
ICAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0
Q29udGVudHMoYml0bWFwLCBpc09wYXF1ZSkpOwpAQCAtMjM3LDkgKzIzNSw3IEBAIHZvaWQgTGF5
ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKEltYWdlKiBpbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkpIHsKLSAgICAgICAgYm9vbCBp
c09wYXF1ZSA9IGZhbHNlOwotICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKLSAg
ICAgICAgICAgIGlzT3BhcXVlID0gIXN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5j
dXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxp
bmcgYW4gaW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0Jp
dG1hcAogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRl
bnRzKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJ
bWFnZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OkltYWdlRXh0cmFjdG9yOjoKIHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBib29sIGhhc0FscGhhID0gbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpID8g
bV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA6IHRydWU7CisgICAgYm9vbCBoYXNBbHBo
YSA9ICFtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICBpZiAoKGln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBo
YSkpICYmIG1faW1hZ2UtPmRhdGEoKSkgewogICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKElt
YWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVJZ25vcmVkIDogSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBw
bGllZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQREZE
b2N1bWVudEltYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Ci0gICAgICAgIAorCisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBiZSBsZXNzIGNv
bnNlcnZhdGl2ZS4KKyAgICAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgdm9pZCBzZXRDdXJy
ZW50UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYWRqdXN0Q1RNKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldENvbnRlbnRzVAogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBtX2ltYWdlTGF5ZXItPnNldEJpdG1hcChuYXRpdmVJbWFnZS0+
Yml0bWFwKCkpOwotICAgICAgICBtX2ltYWdlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShpbWFn
ZS0+aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7Cisg
ICAgICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5jdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2ltYWdlTGF5ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2
aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsOSBAQCBTdGlsbEltYWdl
Ojp+U3RpbGxJbWFnZSgpCiAgICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0KIAotYm9vbCBTdGls
bEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCitib29sIFN0aWxsSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuIG1fcGl4bWFwLT5oYXNBbHBoYSgp
OworICAgIHJldHVybiAhbV9waXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNpemUgU3RpbGxJ
bWFnZTo6c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIAogICAgICAgICAvLyBGSVhNRTog
U3RpbGxJbWFnZXMgYXJlIHVuZGVycmVwb3J0aW5nIGRlY29kZWQgc2l6ZXMgYW5kIHdpbGwgYmUg
dW5hYmxlCiAgICAgICAgIC8vIHRvIHBydW5lIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05LDkgKzksOSBAQCBib29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1h
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuICFtX25hdGl2ZUlt
YWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFw
KCkuaXNPcGFxdWUoKTsKIH0KIAogSW50U2l6ZSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShy
ZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHZpcnR1YWwg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRh
dGVDb250ZW50cyhUCiAgICAgdGFyZ2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0Lnko
KSk7CiAgICAgaWYgKCFtX3RleHR1cmUpIHsKICAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1h
cHBlci0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJl
Y3Quc2l6ZSgpLCBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0
LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNG
bGFnKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlCiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgY3Jl
YXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRl
eHR1cmVTaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBjcmVhdGVP
ckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVy
ZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RpbGVz
W2ldLnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0
ZUNvbnRlbnRzRmxhZyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSwxMiArNDk5LDExIEBAIGJvb2wg
UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKCkKICAgICBpZiAoKGJhY2tncm91bmRD
bGlwID09IEJvcmRlckZpbGxCb3ggfHwgYmFja2dyb3VuZENsaXAgPT0gUGFkZGluZ0ZpbGxCb3gp
ICYmIHN0eWxlKCktPmhhc1BhZGRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgorICAgIC8vIENoZWNrIGZvciBp
bWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8
IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlt
YWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShj
b25zdCBSZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9jb21wb3NpdGUgPT0g
Q29tcG9zaXRlU291cmNlT3ZlcikKLSAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBoYShy
ZW5kZXJlcik7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVy
ZXIpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQwOTE3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5
bGVDYWNoZWRJbWFnZTo6aW1hZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJldHVy
biBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw5ICsxMTYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdl
U2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVyKTsKKyAg
ICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShyZW5k
ZXJlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25z
dDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlU2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVzdEZp
dEltYWdlLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRv
clZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAKLWJvb2wgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wg
U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFz
QWxwaGEocmVuZGVyZXIpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmtub3du
VG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTQw
OTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJS
SURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbWFnZS5oCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVk
SW1hZ2VQdHIgZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVG
YWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQ
ZW5kaW5nSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAog
cHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQwOTE3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgU1ZH
SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTI3ICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGN1cnJlbnRG
cmFtZUhhc0FscGhhIHRvIGN1cnJlbnRGcmFtZUlzS25vd25PcGFxdWUgYW5kIHJldHVybiBjb3Jy
ZWN0IHZhbHVlcyBmb3IgU1ZHIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkgIDx6
YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1lbnQg
aW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUgWFAg
U1AyLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAkocmV2aXNpb24gMTQwOTE3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3Vy
ZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFn
ZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNB
bHBoYSA6IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyk7CisgICAgbV9zdXJmYWNlID0gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCAhbV9pbWFnZS0+Y3VycmVu
dEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxw
aGEgOiBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MpOwogICAgIGlmICghbV9zdXJmYWNlKSB7
CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTM3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0w
MS0yNyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBj
dXJyZW50RnJhbWVIYXNBbHBoYSB0byBjdXJyZW50RnJhbWVJc0tub3duT3BhcXVlIGFuZCByZXR1
cm4gY29ycmVjdCB2YWx1ZXMgZm9yIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSk6CisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTMtMDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDA2MDIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0lt
YWdlVGVzdC5jcHAJKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDB1OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBj
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2Rl
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1U
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdl
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCShyZXZpc2lvbiAxNDA5MTcpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCkKKyAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAh
bV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0
aXZlSW1hZ2UtPmJpdG1hcCgpLmlzT3BhcXVlKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbnRT
aXplIHNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0
Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAJKHJldmlzaW9uIDE0MDkxNykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsMTQgKzU1MCwxNCBAQCBURVNUKFBsYXRmb3JtQ29u
dGV4dFNraWFUZXN0LCB0cmFja09wYXF1CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZHJh
d0JpdG1hcC53aWR0aCgpOyArK3gpCiAgICAgICAgICAgICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIo
eCwgeSkgPSAweEZGRkZGRkZGOwogICAgIFJlZlB0cjxCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YT4gb3BhcXVlSW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKGRyYXdC
aXRtYXAsIHRydWUpOwotICAgIEVYUEVDVF9GQUxTRShvcGFxdWVJbWFnZS0+Y3VycmVudEZyYW1l
SGFzQWxwaGEoKSk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlSW1hZ2UtPmN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpKTsKIAogICAgIGRyYXdCaXRtYXAuc2V0SXNPcGFxdWUoZmFsc2UpOwog
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZHJhd0JpdG1hcC5oZWlnaHQoKTsgKyt5KQogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IGRyYXdCaXRtYXAud2lkdGgoKTsgKyt4KQogICAgICAgICAg
ICAgKmRyYXdCaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID0gMHgwMDAwMDAwMDsKICAgICBSZWZQdHI8
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE+IGFscGhhSW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYTo6Y3JlYXRlKGRyYXdCaXRtYXAsIHRydWUpOwotICAgIEVYUEVDVF9UUlVFKGFs
cGhhSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOworICAgIEVYUEVDVF9GQUxTRShhbHBo
YUltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAKICAgICBjb250ZXh0LmZp
bGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVm
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0MDkxNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRUBY
WgogICAgICAgICA/PzBCaXRtYXBJbWFnZUBXZWJDb3JlQEBJQUVAUEFWSW1hZ2VPYnNlcnZlckAx
QEBaCiAgICAgICAgID9pc0JpdG1hcEltYWdlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVCRV9OWFoK
LSAgICAgICAgP2N1cnJlbnRGcmFtZUhhc0FscGhhQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9O
WFoKKyAgICAgICAgP2N1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZUBCaXRtYXBJbWFnZUBXZWJD
b3JlQEBVQUVfTlhaCiAgICAgICAgID9oYXNTaW5nbGVTZWN1cml0eU9yaWdpbkBCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBVQkVfTlhaCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICA/bm90U29s
aWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaIApAQCAtNzI0LDcgKzcyNCw3IEBA
IEVYUE9SVFMKICAgICAgICAgPz8xQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFQFhaCiAgICAgICAg
ID8/MEJpdG1hcEltYWdlQFdlYkNvcmVAQElBRUBQQVZJbWFnZU9ic2VydmVyQDFAQFoKICAgICAg
ICAgP2lzQml0bWFwSW1hZ2VAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFX05YWgotICAgICAgICA/
Y3VycmVudEZyYW1lSGFzQWxwaGFAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWgorICAgICAg
ICA/Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9O
WFoKICAgICAgICAgP2hhc1NpbmdsZVNlY3VyaXR5T3JpZ2luQEJpdG1hcEltYWdlQFdlYkNvcmVA
QFVCRV9OWFoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgID9ub3RTb2xpZENvbG9yQEJp
dG1hcEltYWdlQFdlYkNvcmVAQFVBRV9OWFogCkBAIC0xMTEwLDcgKzExMTAsNyBAQCBFWFBPUlRT
CiAgICAgICAgID8/MUJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRUBYWgogICAgICAgICA/PzBCaXRt
YXBJbWFnZUBXZWJDb3JlQEBJQUVAUEFWSW1hZ2VPYnNlcnZlckAxQEBaCiAgICAgICAgID9pc0Jp
dG1hcEltYWdlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVCRV9OWFoKLSAgICAgICAgP2N1cnJlbnRG
cmFtZUhhc0FscGhhQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9OWFoKKyAgICAgICAgP2N1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCiAgICAg
ICAgID9oYXNTaW5nbGVTZWN1cml0eU9yaWdpbkBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlha
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICA/bm90U29saWRDb2xvckBCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBVQUVfTlhaIApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgRVhQT1JUUwogICAgICAg
ICA/PzFCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVAWFoKICAgICAgICAgPz8wQml0bWFwSW1hZ2VA
V2ViQ29yZUBASUFFQFBBVkltYWdlT2JzZXJ2ZXJAMUBAWgogICAgICAgICA/aXNCaXRtYXBJbWFn
ZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlhaCi0gICAgICAgID9jdXJyZW50RnJhbWVIYXNB
bHBoYUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCisgICAgICAgID9jdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWgogICAgICAgICA/aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW5AQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFX05YWgogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgP25vdFNvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUFFX05YWiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDkzNykKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAxLTI3ICBQaGls
aXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGhhc0FscGhhIHRv
IGlzS25vd25PcGFxdWUgYW5kIGNvcnJlY3QgdGhlIHJldHVybiB2YWx1ZSBmb3IgU1ZHIGltYWdl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjk2
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuIFNW
RyBpbWFnZSBoYXMgYmVlbiBhZGRlZCB0byB0aGlzIHRlc3QgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Np
b25zLgorCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3ctZXhwZWN0
ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy5odG1s
OgorCisgICAgICAgICAgICBBZGQgYW4gU1ZHIGltYWdlIGFuZCBjb3JyZWN0IGEgc21hbGwgbWlz
dGFrZSBpbiB0aGUgdGVzdCB0aGF0IHVzZWQgdmFsdWVzIG9mIDI1NgorICAgICAgICAgICAgaW5z
dGVhZCBvZiAyNTUuCisKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVu
LnN2ZzogQWRkZWQuCisKIDIwMTMtMDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDA2MDIu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy1leHBl
Y3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9pbWFn
ZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDE0MDkxNykKKysrIExheW91dFRl
c3RzL2Zhc3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTcsMTAgKzcsMTEgQEAgaW1nIHsKIH0KIGRpdiB7CiAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOwotICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NiwwKTsKKyAgICBiYWNrZ3Jv
dW5kOiByZ2IoMCwyNTUsMCk7CiAgICAgaGVpZ2h0OiA1MHB4OwogfQogPC9zdHlsZT4KIDxkaXY+
PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi1hbHBoYS5wbmciPjwvZGl2PgogPGRpdj48aW1nIHNy
Yz0icmVzb3VyY2VzL2dyZWVuLnBuZyI+PC9kaXY+CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMv
Z3JlZW4uanBnIj48L2Rpdj4KKzxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5zdmciPjwv
ZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94
LXNoYWRvdy5odG1sCShyZXZpc2lvbiAxNDA5MTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2JveC1z
aGFkb3cvaW1hZ2UtYm94LXNoYWRvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDEx
IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzdHlsZT4KIGltZyB7Ci0gICAgYmFja2dyb3VuZDogcmdi
KDAsMjU2LDApOworICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NSwwKTsKICAgICB3aWR0aDogNTBw
eDsKICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKLSAgICBib3gt
c2hhZG93OiAwcHggMjVweCByZ2IoMCwyNTYsMCk7IAorICAgIGJveC1zaGFkb3c6IDBweCAyNXB4
IHJnYigwLDI1NSwwKTsgCiB9CiBkaXYgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKQEAg
LTE2LDMgKzE2LDQgQEAgZGl2IHsKIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi1hbHBo
YS5wbmciPjwvZGl2PgogPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnBuZyI+PC9kaXY+
CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4uanBnIj48L2Rpdj4KKzxkaXY+PGltZyBz
cmM9InJlc291cmNlcy9ncmVlbi5zdmciPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9i
b3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ib3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2ZwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9Im5vIj8+Cis8
IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiPgorICA8cmVjdCB4PSIwIiB5PSIwIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0icmdiYSgwLDI1NSwwLDAuNSkiIC8+Cis8L3N2
Zz4K
</data>
<flag name="review"
          id="204320"
          type_id="1"
          status="+"
          setter="senorblanco"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185559</attachid>
            <date>2013-01-30 14:07:20 -0800</date>
            <delta_ts>2013-02-01 12:03:42 -0800</delta_ts>
            <desc>Update per reviewer comments</desc>
            <filename>106966.9.patch</filename>
            <type>text/plain</type>
            <size>41123</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMS0zMCAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBp
c0tub3duVG9CZU9wYXF1ZSBhbmQgY29ycmVjdCB0aGUgcmV0dXJuIHZhbHVlIGZvciBTVkcgaW1h
Z2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
OTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBQcmV2
aW91c2x5LCBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEncyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIHJldHVybmVkIGZhbHNlIHNvIFNWRworICAgICAgICBpbWFnZXMgYWx3YXlzIHJldHVybmVk
IGZhbHNlIGZvciBjdXJyZW50RnJhbWVIYXNBbHBoYS4gQWRkaXRpb25hbGx5LCBjdXJyZW50RnJh
bWVIYXNBbHBoYQorICAgICAgICB3YXMgdHJlYXRlZCBhcyByZXR1cm5pbmcgd2hldGhlciB0aGUg
ZnJhbWUgaGFkIGFscGhhIHdoZW4gaXQgd291bGQgYWN0dWFsbHkgY29uc2VydmF0aXZlbHkKKyAg
ICAgICAgcmV0dXJuIHRydWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGhhc0FscGhh
IGFuZCBjdXJyZW50RnJhbWVIYXNBbHBoYSB0byBpc0tub3duVG9CZU9wYXF1ZSBhbmQKKyAgICAg
ICAgY3VycmVudEZyYW1lSXNLbm93blRvQmVPcGFxdWUsIHJlc3BlY3RpdmVseS4gVGhpcyByZW5h
bWUgYmV0dGVyIGRlc2NyaWJlcyB0aGUgYWN0dWFsCisgICAgICAgIGZ1bmN0aW9uYWxpdHkuIFRo
aXMgcGF0Y2ggYWxzbyBtYWtlcyBJbWFnZTo6aXNLbm93blRvQmVPcGFxdWUgYSBwdXJlIHZpcnR1
YWwgZnVuY3Rpb24gYW5kCisgICAgICAgIGNvcnJlY3RseSBpbXBsZW1lbnRzIGl0IGZvciBTVkcg
aW1hZ2VzLgorCisgICAgICAgIEFsbCB1c2VycyBvZiBpc0tub3duVG9CZU9wYXF1ZSBhY2Nlc3Mg
U1ZHIGltYWdlcyB1c2luZyBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlciB3aGljaAorICAg
ICAgICBjdXJyZW50bHkgcmV0dXJucyBhIGNhY2hlZCBiaXRtYXAgaW1hZ2UuIFRoZXJlZm9yZSwg
dGhpcyBwYXRjaCB3aWxsIG5vdCBhZmZlY3QgZXhpc3RpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0
eS4gQSByZWdyZXNzaW9uIHRlc3QgaGFzIGJlZW4gYWRkZWQgdGhhdCB3aWxsIGNhdGNoIGlmIHRo
aXMgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgZnV0dXJlIChlLmcuLCBXSzEwNjE1OSB3aGljaCBw
cm9wb3NlcyBub3QgcmV0dXJuaW5nIGNhY2hlZCBiaXRtYXBzKS4gVGhlIG5vdyB1bm5lY2Vzc2Fy
eQorICAgICAgICBpc0JpdG1hcEltYWdlKCkgY2FsbHMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhp
cyBwYXRjaC4KKworICAgICAgICBpbWFnZS1ib3gtc2hhZG93Lmh0bWwgaGFzIGJlZW4gbW9kaWZp
ZWQgdG8gdGVzdCBTVkcgaW1hZ2VzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlS25vd25Ub0JlT3BhcXVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorCisgICAg
ICAgICAgICBNb3N0bHkgc3RyYWlnaHRmb3J3YXJkIHJlbmFtZSBidXQgbm90ZSB0aGUgbG9naWMg
aGFzIGJlZW4gc2xpZ2h0bHkgYWx0ZXJlZDogQU5EIC0+IE9SLgorCisgICAgICAgICogY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGll
bnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oOgorICAgICAgICAoQ1NTR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6a25v
d25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAgICAgICAo
Q1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoQ2Fj
aGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAg
IChCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorCisgICAgICAgICAgICBOb3RlOiBub3cgYSBwdXJlIHZpcnR1YWwgZnVu
Y3Rpb24hCisKKyAgICAgICAgKEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6
dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVu
bmVjZXNzYXJ5IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKworICAgICAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAo
UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKworICAgICAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1h
Z2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgIChTdGlsbEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKEJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6
dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNj
dXJlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaXNCaXRtYXBJbWFnZSgp
IGNoZWNrcyBhbmQgc2xpZ2h0bHkgcmV3b3JrZWQgdGhlIGxvZ2ljLgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6
Omhhc09wYXF1ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjprbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmg6Cisg
ICAgICAgIChTdHlsZUNhY2hlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdl
U2V0Ojprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0Lmg6CisgICAgICAgIChTdHlsZUNhY2hlZEltYWdlU2V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChTdHlsZUdlbmVy
YXRlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oOgorICAg
ICAgICAoU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBlbmRpbmdJbWFnZTo6a25vd25Ub0Jl
T3BhcXVlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKFNW
R0ltYWdlKToKKwogMjAxMy0wMS0zMCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0
c2NoZXNAaW50ZWwuY29tPgogCiAgICAgICAgIFtIYXJmQnV6el0gUmVtb3ZlIHRoZSBIYXJmQnV6
ei1vbGQgY29kZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNyArNTIsMTcgQEAgc3RhdGljIGJvb2wgc3Vi
aW1hZ2VJc1BlbmRpbmcoQ1NTVmFsdWUqIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCitzdGF0aWMgYm9vbCBzdWJpbWFnZUtub3duVG9CZU9wYXF1ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVl
LT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlVmFs
dWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENTU0ltYWdlVmFsdWUqPih2YWx1ZSktPmtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiAK
ICAgICBpZiAodmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVu
ZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVyKTsKIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBz
dGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVl
LCBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkBAIC0xMzksOSAr
MTM5LDkgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aXNQZW5kaW5nKCkgY29ucwogICAgIHJl
dHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1ZS5nZXQoKSkgfHwgc3ViaW1hZ2VJc1Bl
bmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAotYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFz
QWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgQ1NTQ3Jvc3Nm
YWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBj
b25zdAogewotICAgIHJldHVybiBzdWJpbWFnZUhhc0FscGhhKG1fZnJvbVZhbHVlLmdldCgpLCBy
ZW5kZXJlcikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsK
KyAgICByZXR1cm4gc3ViaW1hZ2VLbm93blRvQmVPcGFxdWUobV9mcm9tVmFsdWUuZ2V0KCksIHJl
bmRlcmVyKSAmJiBzdWJpbWFnZUtub3duVG9CZU9wYXF1ZShtX3RvVmFsdWUuZ2V0KCksIHJlbmRl
cmVyKTsKIH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwog
CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNl
TG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDEzICs0NjIsMTMgQEAgYm9vbCBDU1NHcmFkaWVu
dFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENT
U0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0Citib29s
IENTU0dyYWRpZW50VmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3IuaGFzQWxwaGEoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ1NTR3JhZGll
bnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgSW50
U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gSW50U2l6
ZSgpOyB9CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAogICAgIHZvaWQgbG9h
ZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQogICAgIFBhc3NSZWZQdHI8Q1NT
R3JhZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMjEgKzE5NiwyMSBAQCBib29sIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIHN3aXRj
aCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIENyb3NzZmFkZUNsYXNzOgotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlzKS0+aGFzQWxwaGEo
cmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRl
VmFsdWUqPih0aGlzKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVyKTsKICAgICBjYXNlIENhbnZh
c0NsYXNzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+
KHRoaXMpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogICAgIGNhc2UgUmFkaWFsR3JhZGll
bnRDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5rbm93blRvQmVP
cGFxdWUocmVuZGVyZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZv
aWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxv
YWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVj
dCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAgICBib29sIGhhc0FscGhhKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0
IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJl
c291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAvLyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFz
IGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJBcmVuYS4KIH0KIAotYm9vbCBDU1NJbWFn
ZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9v
bCBDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2UtPmhhc0FscGhhKHJl
bmRlcmVyKSA6IHRydWU7CisgICAgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5rbm93blRvQmVP
cGFxdWUocmVuZGVyZXIpIDogZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKLSAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9i
amVjdCopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDEyNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MTcsMTIgKzUxNywxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vCiAjZW5kaWYKIH0KIAotYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewog
ICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmIChp
bWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsgLy8gZm9yY2UgZGVjb2RlCi0gICAgcmV0dXJuIGltYWdlLT5jdXJyZW50RnJh
bWVIYXNBbHBoYSgpOworICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhlIG51
bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBJbWFnZSog
aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUgbnVs
bEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0gICAgYm9vbCBjdXJyZW50
RnJhbWVIYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3Vy
ZXMgZGVjb2RlZCBpbWFnZSBpcyBpbiBjYWNoZSwgdGhlcmVmb3JlIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCB3aGVuIGFib3V0IHRvIGRyYXcgdGhlIGltYWdlLgorICAgIGJvb2wgY3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBTaWRlIGVmZmVjdDogZW5z
dXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1hZ2UuCiAKICAgICBzdGQ6OnBhaXI8SW1h
Z2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAv
LyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rv
ci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdlKCkgY29uc3Q7IApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNp
b24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOSArMzM2LDkgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgocwogICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUhh
c0FscGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
CiB7Ci0gICAgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAg
ICByZXR1cm4gIWZyYW1lSGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KIAogSW1h
Z2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lT3JpZW50YXRpb24oKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShy
ZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgdmly
dHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFOwogCiAgICAg
SW1hZ2VPcmllbnRhdGlvbiBjdXJyZW50RnJhbWVPcmllbnRhdGlvbigpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHJl
dmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVy
YXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDkgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwogCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJl
IGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgR2VuZXJhdGVkSW1h
Z2UoKSB7IH0KIAogICAgIEludFNpemUgbV9zaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKCkgPSAwOwogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlz
IGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IAogICAgIC8vIHRoZSBpbWFnZSBjb250YWlucyBvbmx5
IHJlc291cmNlcyBmcm9tIGl0cyBvd24gc2VjdXJpdHkgb3JpZ2luLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
VGlsZXIuY3BwCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQs
OSArMTg0LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZgogICAg
IEhhc2hTZXQ8VGlsZUluZGV4PiBmaW5pc2hlZEpvYnM7CiAgICAgaWYgKCFyZW5kZXJKb2JzLmlz
RW1wdHkoKSkgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gbV9sYXllci0+Y29udGVudHMo
KSkgewotICAgICAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAgICAgICAgaXNPcGFxdWUgPSAhc3Rh
dGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSktPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cisg
ICAgICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpOwogICAgICAgICAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBTa0Jp
dG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCkpOwogICAgICAgICAg
ICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0Q29udGVudHMoYml0bWFwLCBpc09w
YXF1ZSkpOwpAQCAtMjM3LDkgKzIzNSw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVy
ZUNvbnRlbnRzSWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IG1f
bGF5ZXItPmNvbnRlbnRzKCkpIHsKLSAgICAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAg
ICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKLSAgICAgICAgICAgIGlzT3BhcXVlID0g
IXN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgp
OworICAgICAgICBib29sIGlzT3BhcXVlID0gaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpOwogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxpbmcgYW4gaW1hZ2UgbGF5ZXIsIHRo
ZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0JpdG1hcAogICAgICAgICBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCktPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw3ICs5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjoK
IHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGhh
c0FscGhhID0gbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpID8gbV9pbWFnZS0+Y3VycmVudEZyYW1l
SGFzQWxwaGEoKSA6IHRydWU7CisgICAgYm9vbCBoYXNBbHBoYSA9ICFtX2ltYWdlLT5jdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICBpZiAoKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkpICYmIG1faW1hZ2UtPmRhdGEo
KSkgewogICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU5vdFBy
ZW11bHRpcGxpZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkIDog
SW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5oCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQREZEb2N1bWVudEltYWdlKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgICAgIAorCisgICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KKyAgICAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAgdm9pZCBzZXRDdXJyZW50UGFnZShpbnQpOwogICAg
ICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYWRqdXN0Q1RNKEdyYXBo
aWNzQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTYsNyArNDk2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VAogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICBtX2ltYWdlTGF5ZXItPnNldEJpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCkpOwotICAgICAg
ICBtX2ltYWdlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShpbWFnZS0+aXNCaXRtYXBJbWFnZSgp
ICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CisgICAgICAgIG1faW1hZ2VMYXll
ci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
KSk7CiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChtX2ltYWdlTGF5ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2aXNpb24gMTQxMjQxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsOSArNTIsOSBAQCBTdGlsbEltYWdlOjp+U3RpbGxJbWFnZSgpCiAg
ICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0KIAotYm9vbCBTdGlsbEltYWdlOjpjdXJyZW50RnJh
bWVIYXNBbHBoYSgpCitib29sIFN0aWxsSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZSgpCiB7Ci0gICAgcmV0dXJuIG1fcGl4bWFwLT5oYXNBbHBoYSgpOworICAgIHJldHVybiAhbV9w
aXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNpemUgU3RpbGxJbWFnZTo6c2l6ZSgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKTsKIAogICAgICAgICAvLyBGSVhNRTogU3RpbGxJbWFnZXMgYXJlIHVu
ZGVycmVwb3J0aW5nIGRlY29kZWQgc2l6ZXMgYW5kIHdpbGwgYmUgdW5hYmxlCiAgICAgICAgIC8v
IHRvIHBydW5lIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAJKHJldmlzaW9u
IDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksOSBAQCBi
b29sIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjppc0JpdG1hCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUhhc0Fs
cGhhKCkKK2Jvb2wgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmN1cnJlbnRGcmFtZUtub3du
VG9CZU9wYXF1ZSgpCiB7Ci0gICAgcmV0dXJuICFtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmlzT3Bh
cXVlKCk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UuYml0bWFwKCkuaXNPcGFxdWUoKTsKIH0K
IAogSW50U2l6ZSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6c2l6ZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShyZXZpc2lvbiAxNDEyNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAJ
KHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUCiAgICAg
dGFyZ2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CiAgICAgaWYgKCFtX3Rl
eHR1cmUpIHsKICAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+Y3JlYXRlVGV4dHVy
ZSgpOwotICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCBpbWFnZS0+
Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiAw
KTsKKyAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgaW1hZ2UtPmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UsIHRh
cmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKQEAgLTIyNSw3ICsy
MjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlCiAKIHZvaWQg
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxT
aXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRl
bnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJ
Zk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIGltYWdl
LT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVl
ZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5j
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RpbGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RpbGVzW2ldLnVwZGF0ZUNvbnRlbnRz
KHRleHR1cmVNYXBwZXIsIGltYWdlLCBkaXJ0eVJlY3QsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9u
IDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5OSwxMiArNDk5LDExIEBAIGJvb2wgUmVuZGVySW1hZ2U6OmJhY2tn
cm91bmRJc09ic2N1cmVkKCkKICAgICBpZiAoKGJhY2tncm91bmRDbGlwID09IEJvcmRlckZpbGxC
b3ggfHwgYmFja2dyb3VuZENsaXAgPT0gUGFkZGluZ0ZpbGxCb3gpICYmIHN0eWxlKCktPmhhc1Bh
ZGRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gQ2hlY2sgZm9yIGJpdG1h
cCBpbWFnZSB3aXRoIGFscGhhLgorICAgIC8vIENoZWNrIGZvciBpbWFnZSB3aXRoIGFscGhhLgog
ICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAgICBp
ZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5jdXJyZW50RnJh
bWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGltYWdlLT5jdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6bWluaW11bVJl
cGxhY2VkSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMz
NSw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShjb25zdCBSZW4KICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291cmNlT3Zl
cikKLSAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBoYShyZW5kZXJlcik7CisgICAgICAg
IHJldHVybiBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsOSArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6aW1h
ZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAot
Ym9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFnZS0+Y3Vy
cmVudEZyYW1lSGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJldHVybiBtX2ltYWdlLT5jdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHJldmlzaW9u
IDE0MTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGlt
YWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VT
ZXQuY3BwCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw5ICsxMTYs
OSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppCiAgICAgcmV0dXJu
IG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAotYm9vbCBT
dHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iZXN0Rml0SW1h
Z2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICByZXR1cm4gbV9iZXN0Rml0
SW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGlt
YWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGZs
b2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2NhbGVGYWN0b3I7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVzdEZpdEltYWdlLmdldCgpOyB9CiAg
ICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTQxMjQxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5pbWFnZShyZW5k
ZXJlciwgc2l6ZSk7CiB9CiAKLWJvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgU3R5bGVHZW5lcmF0ZWRJbWFn
ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFzQWxwaGEocmVuZGVyZXIpOwor
ICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmtub3duVG9CZU9wYXF1ZShyZW5kZXJl
cik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVj
dCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJpdmF0
ZToKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFn
ZS5oCShyZXZpc2lvbiAxNDEyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IElu
dFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCop
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hl
ZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdlOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAkocmV2
aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVu
ZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBTdHls
ZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQxMjQxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDkgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCkg
eyByZXR1cm4gMDsgfQogCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3Mg
Y29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNl
cnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTMwICBQaGlsaXAgUm9nZXJzICA8
cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIGhhc0FscGhhIHRvIGlzS25vd25Ub0Jl
T3BhcXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKwogMjAx
My0wMS0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAg
ICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAkocmV2aXNpb24gMTQxMjQx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyAr
MTAzLDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1f
aW1hZ2UtPnNpemUoKSwgbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IENvb3JkaW5h
dGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSA6IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyk7
CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6
ZSgpLCAhbV9pbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgPyBDb29yZGluYXRl
ZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEgOiBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MpOwog
ICAgIGlmICghbV9zdXJmYWNlKSB7CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMjQx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxMy0wMS0zMCAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29t
PgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBpc0tub3duVG9CZU9wYXF1ZSBhbmQgY29y
cmVjdCB0aGUgcmV0dXJuIHZhbHVlIGZvciBTVkcgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUpOgorICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEzLTAxLTMwICBEb21pbmlrIFLDtnR0c2No
ZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0hhcmZCdXp6XSBS
ZW1vdmUgdGhlIEhhcmZCdXp6LW9sZCBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDB1OwogICAgIH0KIAor
ICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JT
cGFjZSwKICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwg
V2ViQ29yZTo6QmxlbmRNb2RlKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
bWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCShyZXZpc2lvbiAxNDEyNDEp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhh
KCkKKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAhbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsKKyAg
ICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmlzT3BhcXVlKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAJ
KHJldmlzaW9uIDE0MTI0MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZv
cm1Db250ZXh0U2tpYVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsMTQgKzU1MCwxNCBA
QCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1CiAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgZHJhd0JpdG1hcC53aWR0aCgpOyArK3gpCiAgICAgICAgICAgICAqZHJh
d0JpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOwogICAgIFJlZlB0cjxCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYT4gb3BhcXVlSW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYTo6Y3JlYXRlKGRyYXdCaXRtYXAsIHRydWUpOwotICAgIEVYUEVDVF9GQUxTRShvcGFxdWVJ
bWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlSW1h
Z2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKIAogICAgIGRyYXdCaXRtYXAuc2V0
SXNPcGFxdWUoZmFsc2UpOwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZHJhd0JpdG1hcC5oZWln
aHQoKTsgKyt5KQogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGRyYXdCaXRtYXAud2lkdGgo
KTsgKyt4KQogICAgICAgICAgICAgKmRyYXdCaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID0gMHgwMDAw
MDAwMDsKICAgICBSZWZQdHI8Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE+IGFscGhhSW1hZ2Ug
PSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKGRyYXdCaXRtYXAsIHRydWUpOwot
ICAgIEVYUEVDVF9UUlVFKGFscGhhSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOworICAg
IEVYUEVDVF9GQUxTRShhbHBoYUltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7
CiAKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0MTI0MSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRUBYWgogICAgICAgICA/PzBCaXRtYXBJbWFnZUBXZWJDb3JlQEBJQUVA
UEFWSW1hZ2VPYnNlcnZlckAxQEBaCiAgICAgICAgID9pc0JpdG1hcEltYWdlQEJpdG1hcEltYWdl
QFdlYkNvcmVAQFVCRV9OWFoKLSAgICAgICAgP2N1cnJlbnRGcmFtZUhhc0FscGhhQEJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRV9OWFoKKyAgICAgICAgP2N1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCiAgICAgICAgID9oYXNTaW5nbGVTZWN1cml0
eU9yaWdpbkBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlhaCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICA/bm90U29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaIApA
QCAtNzI1LDcgKzcyNSw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUFFQFhaCiAgICAgICAgID8/MEJpdG1hcEltYWdlQFdlYkNvcmVAQElBRUBQQVZJbWFnZU9i
c2VydmVyQDFAQFoKICAgICAgICAgP2lzQml0bWFwSW1hZ2VAQml0bWFwSW1hZ2VAV2ViQ29yZUBA
VUJFX05YWgotICAgICAgICA/Y3VycmVudEZyYW1lSGFzQWxwaGFAQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUFFX05YWgorICAgICAgICA/Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlQEJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRV9OWFoKICAgICAgICAgP2hhc1NpbmdsZVNlY3VyaXR5T3JpZ2luQEJp
dG1hcEltYWdlQFdlYkNvcmVAQFVCRV9OWFoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ID9ub3RTb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9OWFogCkBAIC0xMTExLDcg
KzExMTEsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRUBY
WgogICAgICAgICA/PzBCaXRtYXBJbWFnZUBXZWJDb3JlQEBJQUVAUEFWSW1hZ2VPYnNlcnZlckAx
QEBaCiAgICAgICAgID9pc0JpdG1hcEltYWdlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVCRV9OWFoK
LSAgICAgICAgP2N1cnJlbnRGcmFtZUhhc0FscGhhQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9O
WFoKKyAgICAgICAgP2N1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZUBCaXRtYXBJbWFnZUBXZWJD
b3JlQEBVQUVfTlhaCiAgICAgICAgID9oYXNTaW5nbGVTZWN1cml0eU9yaWdpbkBCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBVQkVfTlhaCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICA/bm90U29s
aWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaIApAQCAtMTUwMyw3ICsxNTAzLDcg
QEAgRVhQT1JUUwogICAgICAgICA/PzFCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVAWFoKICAgICAg
ICAgPz8wQml0bWFwSW1hZ2VAV2ViQ29yZUBASUFFQFBBVkltYWdlT2JzZXJ2ZXJAMUBAWgogICAg
ICAgICA/aXNCaXRtYXBJbWFnZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlhaCi0gICAgICAg
ID9jdXJyZW50RnJhbWVIYXNBbHBoYUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCisgICAg
ICAgID9jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFF
X05YWgogICAgICAgICA/aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW5AQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUJFX05YWgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgP25vdFNvbGlkQ29sb3JA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTI0MSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEzLTAxLTMwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAg
Q2hhbmdlIGhhc0FscGhhIHRvIGlzS25vd25Ub0JlT3BhcXVlIGFuZCBjb3JyZWN0IHRoZSByZXR1
cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYKKworICAgICAgICBSZXZpZXdlZCBieSBTdGVwaGVuIFdo
aXRlLgorCisgICAgICAgIEFuIFNWRyBpbWFnZSBoYXMgYmVlbiBhZGRlZCB0byB0aGlzIHRlc3Qg
dG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLgorCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L2lt
YWdlLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cv
aW1hZ2UtYm94LXNoYWRvdy5odG1sOgorCisgICAgICAgICAgICBBZGQgYW4gU1ZHIGltYWdlIGFu
ZCBjb3JyZWN0IGEgc21hbGwgbWlzdGFrZSBpbiB0aGUgdGVzdCB0aGF0IHVzZWQgdmFsdWVzIG9m
IDI1NgorICAgICAgICAgICAgaW5zdGVhZCBvZiAyNTUuCisKKyAgICAgICAgKiBmYXN0L2JveC1z
aGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2ZzogQWRkZWQuCisKIDIwMTMtMDEtMzAgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBVbnJldmlld2VkIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRv
dy9pbWFnZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbAkocmV2aXNp
b24gMTQxMjQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFk
b3ctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxMCArNywxMSBAQCBpbWcgewog
fQogZGl2IHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgYmFja2dyb3VuZDogcmdi
KDAsMjU2LDApOworICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NSwwKTsKICAgICBoZWlnaHQ6IDUw
cHg7CiB9CiA8L3N0eWxlPgogPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLWFscGhhLnBu
ZyI+PC9kaXY+CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIj48L2Rpdj4KIDxk
aXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5qcGciPjwvZGl2PgorPGRpdj48aW1nIHNyYz0i
cmVzb3VyY2VzL2dyZWVuLnN2ZyI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1z
aGFkb3cvaW1hZ2UtYm94LXNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93Lmh0bWwJKHJldmlzaW9uIDE0MTI0MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDwhRE9DVFlQRSBodG1sPgogPHN0eWxlPgogaW1n
IHsKLSAgICBiYWNrZ3JvdW5kOiByZ2IoMCwyNTYsMCk7CisgICAgYmFja2dyb3VuZDogcmdiKDAs
MjU1LDApOwogICAgIHdpZHRoOiA1MHB4OwogICAgIGhlaWdodDogMjVweDsKICAgICBtYXJnaW4t
Ym90dG9tOiAyNXB4OwotICAgIGJveC1zaGFkb3c6IDBweCAyNXB4IHJnYigwLDI1NiwwKTsgCisg
ICAgYm94LXNoYWRvdzogMHB4IDI1cHggcmdiKDAsMjU1LDApOyAKIH0KIGRpdiB7CiAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOwpAQCAtMTYsMyArMTYsNCBAQCBkaXYgewogPGRpdj48aW1nIHNy
Yz0icmVzb3VyY2VzL2dyZWVuLWFscGhhLnBuZyI+PC9kaXY+CiA8ZGl2PjxpbWcgc3JjPSJyZXNv
dXJjZXMvZ3JlZW4ucG5nIj48L2Rpdj4KIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5q
cGciPjwvZGl2PgorPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLnN2ZyI+PC9kaXY+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2Zwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvcmVzb3VyY2VzL2dyZWVuLnN2
ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9yZXNvdXJjZXMv
Z3JlZW4uc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBT
VkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzEx
LmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1MCIgaGVpZ2h0PSIyNSI+
CisgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJyZ2Jh
KDAsMjU1LDAsMC41KSIgLz4KKzwvc3ZnPgo=
</data>
<flag name="commit-queue"
          id="205393"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186098</attachid>
            <date>2013-02-01 12:03:42 -0800</date>
            <delta_ts>2013-02-01 13:32:35 -0800</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>106966.10.patch</filename>
            <type>text/plain</type>
            <size>41350</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOSBAQAorMjAxMy0wMi0wMSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBp
c0tub3duVG9CZU9wYXF1ZSBhbmQgY29ycmVjdCB0aGUgcmV0dXJuIHZhbHVlIGZvciBTVkcgaW1h
Z2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
OTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBQcmV2
aW91c2x5LCBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEncyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIHJldHVybmVkIGZhbHNlIHNvIFNWRworICAgICAgICBpbWFnZXMgYWx3YXlzIHJldHVybmVk
IGZhbHNlIGZvciBjdXJyZW50RnJhbWVIYXNBbHBoYS4gQWRkaXRpb25hbGx5LCBjdXJyZW50RnJh
bWVIYXNBbHBoYQorICAgICAgICB3YXMgdHJlYXRlZCBhcyByZXR1cm5pbmcgd2hldGhlciB0aGUg
ZnJhbWUgaGFkIGFscGhhIHdoZW4gaXQgd291bGQgYWN0dWFsbHkgY29uc2VydmF0aXZlbHkKKyAg
ICAgICAgcmV0dXJuIHRydWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGhhc0FscGhh
IGFuZCBjdXJyZW50RnJhbWVIYXNBbHBoYSB0byBpc0tub3duVG9CZU9wYXF1ZSBhbmQKKyAgICAg
ICAgY3VycmVudEZyYW1lSXNLbm93blRvQmVPcGFxdWUsIHJlc3BlY3RpdmVseS4gVGhpcyByZW5h
bWUgYmV0dGVyIGRlc2NyaWJlcyB0aGUgYWN0dWFsCisgICAgICAgIGZ1bmN0aW9uYWxpdHkuIFRo
aXMgcGF0Y2ggYWxzbyBtYWtlcyBJbWFnZTo6aXNLbm93blRvQmVPcGFxdWUgYSBwdXJlIHZpcnR1
YWwgZnVuY3Rpb24gYW5kCisgICAgICAgIGNvcnJlY3RseSBpbXBsZW1lbnRzIGl0IGZvciBTVkcg
aW1hZ2VzLgorCisgICAgICAgIEFsbCB1c2VycyBvZiBpc0tub3duVG9CZU9wYXF1ZSBhY2Nlc3Mg
U1ZHIGltYWdlcyB1c2luZyBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlciB3aGljaAorICAg
ICAgICBjdXJyZW50bHkgcmV0dXJucyBhIGNhY2hlZCBiaXRtYXAgaW1hZ2UuIFRoZXJlZm9yZSwg
dGhpcyBwYXRjaCB3aWxsIG5vdCBhZmZlY3QgZXhpc3RpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0
eS4gQSByZWdyZXNzaW9uIHRlc3QgaGFzIGJlZW4gYWRkZWQgdGhhdCB3aWxsIGNhdGNoIGlmIHRo
aXMgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgZnV0dXJlIChlLmcuLCBXSzEwNjE1OSB3aGljaCBw
cm9wb3NlcyBub3QgcmV0dXJuaW5nIGNhY2hlZCBiaXRtYXBzKS4gVGhlIG5vdyB1bm5lY2Vzc2Fy
eQorICAgICAgICBpc0JpdG1hcEltYWdlKCkgY2FsbHMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhp
cyBwYXRjaC4KKworICAgICAgICBpbWFnZS1ib3gtc2hhZG93Lmh0bWwgaGFzIGJlZW4gbW9kaWZp
ZWQgdG8gdGVzdCBTVkcgaW1hZ2VzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlS25vd25Ub0JlT3BhcXVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorCisgICAg
ICAgICAgICBNb3N0bHkgc3RyYWlnaHRmb3J3YXJkIHJlbmFtZSBidXQgbm90ZSB0aGUgbG9naWMg
aGFzIGJlZW4gc2xpZ2h0bHkgYWx0ZXJlZDogQU5EIC0+IE9SLgorCisgICAgICAgICogY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGll
bnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oOgorICAgICAgICAoQ1NTR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6a25v
d25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAgICAgICAo
Q1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoQ2Fj
aGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAg
IChCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorCisgICAgICAgICAgICBOb3RlOiBub3cgYSBwdXJlIHZpcnR1YWwgZnVu
Y3Rpb24hCisKKyAgICAgICAgKEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6
dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVu
bmVjZXNzYXJ5IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKworICAgICAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAo
UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKworICAgICAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBpc0JpdG1hcEltYWdlKCkgY2hlY2tzLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1h
Z2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgIChTdGlsbEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKEJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6
dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
YmFja2dyb3VuZElzT2JzY3VyZWQpOgorCisgICAgICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5
IGlzQml0bWFwSW1hZ2UoKSBjaGVja3MgYW5kIHNsaWdodGx5IHJld29ya2VkIHRoZSBsb2dpYy4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJ
bWFnZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRJbWFnZS5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVDYWNoZWRJbWFnZVNldDo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFn
ZVNldCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oOgorICAg
ICAgICAoU3R5bGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5n
SW1hZ2U6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Lmg6CisgICAgICAgIChTVkdJbWFnZSk6CisKIDIwMTMtMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU21hcnQgbGluayBjYW4gZXJyb25lb3VzbHkgbW92
ZSBjYXJldCBhZnRlciBhbiBVUkwgd2hlbiB0eXBpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGl0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHJldmlzaW9uIDE0
MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDE3ICs1MiwxNyBAQCBzdGF0aWMgYm9vbCBzdWJpbWFnZUlzUGVuZGlu
ZyhDU1NWYWx1ZSoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHN1YmltYWdl
SGFzQWxwaGEoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
c3RhdGljIGJvb2wgc3ViaW1hZ2VLbm93blRvQmVPcGFxdWUoQ1NTVmFsdWUqIHZhbHVlLCBjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICh2YWx1ZS0+aXNJbWFnZVZhbHVl
KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4odmFsdWUpLT5o
YXNBbHBoYShyZW5kZXJlcik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFnZVZh
bHVlKj4odmFsdWUpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogCiAgICAgaWYgKHZhbHVl
LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPih2YWx1ZSktPmtu
b3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQpAQCAtMTM5LDkgKzEzOSw5IEBAIGJvb2wg
Q1NTQ3Jvc3NmYWRlVmFsdWU6OmlzUGVuZGluZygpIGNvbnMKICAgICByZXR1cm4gc3ViaW1hZ2VJ
c1BlbmRpbmcobV9mcm9tVmFsdWUuZ2V0KCkpIHx8IHN1YmltYWdlSXNQZW5kaW5nKG1fdG9WYWx1
ZS5nZXQoKSk7CiB9CiAKLWJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0Nyb3NzZmFkZVZhbHVlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3ViaW1hZ2VIYXNBbHBoYShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpIHx8IHN1
YmltYWdlSGFzQWxwaGEobV90b1ZhbHVlLmdldCgpLCByZW5kZXJlcik7CisgICAgcmV0dXJuIHN1
YmltYWdlS25vd25Ub0JlT3BhcXVlKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJlcikgJiYgc3Vi
aW1hZ2VLbm93blRvQmVPcGFxdWUobV90b1ZhbHVlLmdldCgpLCByZW5kZXJlcik7CiB9CiAKIHZv
aWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGNhY2hlZFJlc291cmNlTG9hZGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmgJKHJldmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQ
ZW5kaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAxNDE1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2MiwxMyArNDYyLDEzIEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNo
ZWFibGUoKSBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NHcmFkaWVudFZhbHVl
OjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdAorYm9vbCBDU1NHcmFkaWVudFZh
bHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KG1fc3RvcHNbaV0ubV9yZXNvbHZlZENvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENTU0dyYWRpZW50VmFsdWU6OnJlcG9y
dEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHJldmlzaW9u
IDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogCiAgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgYm9vbCBrbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+
IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAJKHJldmlzaW9uIDE0
MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk2LDIxICsxOTYsMjEgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjppc1BlbmRpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBj
b25zdAorYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgp
KSB7CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlKj4odGhpcykt
Pmtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiAgICAgY2FzZSBDYW52YXNDbGFzczoKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIExpbmVhckdy
YWRpZW50Q2xhc3M6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lYXJH
cmFkaWVudFZhbHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlzKS0+a25vd25U
b0JlT3BhcXVlKHJlbmRlcmVyKTsKICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKj4odGhp
cyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IENTU1JhZGlhbEdyYWRpZW50VmFsdWUqPih0aGlzKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVy
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oCShyZXZpc2lvbiAxNDE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJv
b2wgaXNQZW5kaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxNDE1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw5ICsxMTMsOSBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vCiAgICAgLy8gTm8gbmVlZCB0byByZXBvcnQgbV9pbWFnZSBhcyBpdCBpcyBjb3VudGVk
IGFzIHBhcnQgb2YgUmVuZGVyQXJlbmEuCiB9CiAKLWJvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgQ1NTSW1hZ2VWYWx1
ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5oYXNBbHBoYShyZW5kZXJlcikgOiB0cnVl
OworICAgIHJldHVybiBtX2ltYWdlID8gbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVy
KSA6IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCi0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0SW5pdGlhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgeyBtX2lu
aXRpYXRvck5hbWUgPSBuYW1lOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA2LDEyICs1
MDYsMTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtbwogI2VuZGlm
CiB9CiAKLWJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhhKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCitib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBJbWFnZSogaW1h
Z2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoaW1hZ2UtPmlzQml0bWFw
SW1hZ2UoKSkKICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7IC8v
IGZvcmNlIGRlY29kZQotICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsK
KyAgICByZXR1cm4gaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0
aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRo
ZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotICAgIGJvb2wgY3VycmVudEZyYW1lSGFzQWxwaGEo
Y29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFNpZGUgZWZmZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1h
Z2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9yZSBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhYm91
dCB0byBkcmF3IHRoZSBpbWFnZS4KKyAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZShjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3VyZXMgZGVjb2RlZCBp
bWFnZSBpcyBpbiBjYWNoZSwgdGhlcmVmb3JlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFi
b3V0IHRvIGRyYXcgdGhlIGltYWdlLgogCiAgICAgc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+IGJy
b2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsgLy8gUmV0dXJucyBhbiBp
bWFnZSBhbmQgdGhlIGltYWdlJ3MgcmVzb2x1dGlvbiBzY2FsZSBmYWN0b3IuCiAgICAgYm9vbCB3
aWxsUGFpbnRCcm9rZW5JbWFnZSgpIGNvbnN0OyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDE0MTU3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM2LDkgKzMzNiw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxw
aGFBdEluZGV4KHMKICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5k
ZXgpOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCitib29s
IEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJldHVy
biBmcmFtZUhhc0FscGhhQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuICFmcmFt
ZUhhc0FscGhhQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9CiAKIEltYWdlT3JpZW50YXRpb24g
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTQxNTc3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIHZp
cnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERTsKIAogICAgIEltYWdlT3JpZW50YXRp
b24gY3VycmVudEZyYW1lT3JpZW50YXRpb24oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxNDE1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKIAorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIEdlbmVyYXRlZEltYWdlKCkgeyB9CiAKICAg
ICBJbnRTaXplIG1fc2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID0gMDsKIAog
ICAgIC8vIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5IGNhbiBh
c3N1cmUgdGhhdCAKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNvdXJjZXMgZnJv
bSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAkocmV2
aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDkgKzE4NCw3IEBAIHZv
aWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWYKICAgICBIYXNoU2V0PFRpbGVJ
bmRleD4gZmluaXNoZWRKb2JzOwogICAgIGlmICghcmVuZGVySm9icy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkpIHsKLSAgICAgICAg
ICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChpbWFnZS0+aXNCaXRt
YXBJbWFnZSgpKQotICAgICAgICAgICAgICAgIGlzT3BhcXVlID0gIXN0YXRpY19jYXN0PEJpdG1h
cEltYWdlKj4oaW1hZ2UpLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworICAgICAgICAgICAgYm9v
bCBpc09wYXF1ZSA9IGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICAg
ICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0g
U2tCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKICAgICAgICAgICAgICAgICBhZGRUZXh0
dXJlSm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRzKGJpdG1hcCwgaXNPcGFxdWUpKTsKQEAgLTIz
Nyw5ICsyMzUsNyBAQCB2b2lkIExheWVyVGlsZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBtX2xheWVyLT5jb250ZW50
cygpKSB7Ci0gICAgICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICAgICAgaWYgKGltYWdl
LT5pc0JpdG1hcEltYWdlKCkpCi0gICAgICAgICAgICBpc09wYXF1ZSA9ICFzdGF0aWNfY2FzdDxC
aXRtYXBJbWFnZSo+KGltYWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKKyAgICAgICAgYm9v
bCBpc09wYXF1ZSA9IGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICAg
ICAgLy8gTm8gcG9pbnQgaW4gdGlsaW5nIGFuIGltYWdlIGxheWVyLCB0aGUgaW1hZ2UgaXMgYWxy
ZWFkeSBzdG9yZWQgYXMgYW4gU2tCaXRtYXAKICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2xheWVyLT5jb250ZW50cygpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
CShyZXZpc2lvbiAxNDE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6CiB7CiAgICAgaWYgKCFt
X2ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBoYXNBbHBoYSA9IG1faW1h
Z2UtPmlzQml0bWFwSW1hZ2UoKSA/IG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgOiB0
cnVlOworICAgIGJvb2wgaGFzQWxwaGEgPSAhbV9pbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCk7CiAgICAgaWYgKChpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxw
aGEgJiYgIXByZW11bHRpcGx5QWxwaGEpKSAmJiBtX2ltYWdlLT5kYXRhKCkpIHsKICAgICAgICAg
SW1hZ2VTb3VyY2UgZGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8g
SW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpH
YW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24g
MTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgUERGRG9jdW1lbnRJbWFnZSgpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgICAgICAKKworICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCisgICAgICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50KTsKICAgICAgICAgaW50IHBhZ2VD
b3VudCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFkanVzdENUTShHcmFwaGljc0NvbnRleHQqKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkocmV2aXNp
b24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDcgKzQ5Niw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1QKICAgICAgICAgICAg
IGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgbV9pbWFnZUxheWVy
LT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKLSAgICAgICAgbV9pbWFnZUxheWVy
LT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAhaW1hZ2UtPmN1
cnJlbnRGcmFtZUhhc0FscGhhKCkpOworICAgICAgICBtX2ltYWdlTGF5ZXItPmxheWVyKCktPnNl
dE9wYXF1ZShpbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOwogICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9pbWFnZUxh
eWVyKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDkgKzUyLDkgQEAgU3RpbGxJbWFnZTo6flN0aWxsSW1hZ2UoKQogICAgICAgICBkZWxldGUg
bV9waXhtYXA7CiB9CiAKLWJvb2wgU3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQor
Ym9vbCBTdGlsbEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogewotICAgIHJl
dHVybiBtX3BpeG1hcC0+aGFzQWxwaGEoKTsKKyAgICByZXR1cm4gIW1fcGl4bWFwLT5oYXNBbHBo
YSgpOwogfQogCiBJbnRTaXplIFN0aWxsSW1hZ2U6OnNpemUoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHJl
dmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RpbGxJbWFnZShwaXht
YXApKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNB
bHBoYSgpOworICAgICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCk7CiAKICAgICAgICAgLy8gRklYTUU6IFN0aWxsSW1hZ2VzIGFyZSB1bmRlcnJlcG9ydGluZyBk
ZWNvZGVkIHNpemVzIGFuZCB3aWxsIGJlIHVuYWJsZQogICAgICAgICAvLyB0byBwcnVuZSBiZWNh
dXNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCShyZXZpc2lvbiAxNDE1NzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDkgQEAgYm9vbCBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYTo6aXNCaXRtYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEJp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCitib29sIEJp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQog
ewotICAgIHJldHVybiAhbV9uYXRpdmVJbWFnZS5iaXRtYXAoKS5pc09wYXF1ZSgpOworICAgIHJl
dHVybiBtX25hdGl2ZUltYWdlLmJpdG1hcCgpLmlzT3BhcXVlKCk7CiB9CiAKIEludFNpemUgQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OnNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWEuaAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0JpdG1hcEltYWdlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1l
SGFzQWxwaGEoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCShyZXZpc2lvbiAxNDE1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVAogICAgIHRhcmdldFJlY3QubW92
ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwogICAgIGlmICghbV90ZXh0dXJlKSB7CiAgICAg
ICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAg
bV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUhh
c0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisgICAgICAgIG1f
dGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICB9
CiAKICAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3Vy
Y2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZQogCiB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRl
Q29udGVudHNGbGFnKQogewotICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxT
aXplLCB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCBpbWFnZS0+Y3VycmVudEZyYW1l
SGFzQWxwaGEoKSk7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUs
IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksICFpbWFnZS0+Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV90aWxlc1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVy
LCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCShy
ZXZpc2lvbiAxNDE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRl
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEo
KSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSA6IENvb3JkaW5hdGVkU3VyZmFj
ZTo6Tm9GbGFncyk7CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUo
bV9pbWFnZS0+c2l6ZSgpLCAhbV9pbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkg
PyBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEgOiBDb29yZGluYXRlZFN1cmZhY2U6
Ok5vRmxhZ3MpOwogICAgIGlmICghbV9zdXJmYWNlKSB7CiAgICAgICAgIG1faXNEaXJ0eSA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAJKHJldmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSwxMiArNDk5LDExIEBAIGJv
b2wgUmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKCkKICAgICBpZiAoKGJhY2tncm91
bmRDbGlwID09IEJvcmRlckZpbGxCb3ggfHwgYmFja2dyb3VuZENsaXAgPT0gUGFkZGluZ0ZpbGxC
b3gpICYmIHN0eWxlKCktPmhhc1BhZGRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgLy8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgorICAgIC8vIENoZWNrIGZv
ciBpbWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+
aW1hZ2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgp
IHx8IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKIH0KIAogTGF5b3V0VW5pdCBS
ZW5kZXJJbWFnZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDE1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFn
ZShjb25zdCBSZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9jb21wb3NpdGUg
PT0gQ29tcG9zaXRlU291cmNlT3ZlcikKLSAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBo
YShyZW5kZXJlcik7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVu
ZGVyZXIpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQx
NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4g
U3R5bGVDYWNoZWRJbWFnZTo6aW1hZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRl
cmVyKHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJl
dHVybiBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmgJKHJldmlzaW9uIDE0MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICAK
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxNDE1NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw5ICsxMTYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZElt
YWdlU2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVyKTsK
KyAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShy
ZW5kZXJlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2
aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBj
b25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlU2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3Qg
UmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVz
dEZpdEltYWdlLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2
aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIFBhc3NSZWZQ
dHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9pbWFnZUdlbmVy
YXRvclZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAKLWJvb2wgU3R5bGVHZW5lcmF0
ZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jv
b2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+
aGFzQWxwaGEocmVuZGVyZXIpOworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmtu
b3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24g
MTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9W
RVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQ
dHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCShyZXZpc2lvbiAxNDE1NzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJl
bmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFw
cGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2Nh
bGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc0FscGhh
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZElt
YWdlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5n
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVQZW5kaW5nSW1hZ2UuaAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IAogcHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQxNTc3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
ZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDE2
MTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgQ2hhbmdlIGhhc0FscGhhIHRvIGlzS25vd25Ub0JlT3BhcXVlIGFuZCBj
b3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgIChUZXN0SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEzLTAyLTAxICBOaWNvIFdlYmVy
ICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEJ1aWxkIHdlYmtp
dCB3aXRoIGVuYWJsZV93ZWJfaW50ZW50cyBzZXQgdG8gMC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkocmV2aXNpb24gMTQxNTc3KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMHU7CiAg
ICAgfQogCisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIGRy
YXcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9w
ZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHJldmlzaW9u
IDE0MTU3NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9t
aXVtVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1l
SGFzQWxwaGEoKQorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICFtX25hdGl2ZUltYWdlLT5iaXRtYXAoKS5pc09wYXF1
ZSgpOworICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+Yml0bWFwKCkuaXNPcGFxdWUoKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFU
ZXN0LmNwcAkocmV2aXNpb24gMTQxNTc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCwxNCAr
NTUwLDE0IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXUKICAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCBkcmF3Qml0bWFwLndpZHRoKCk7ICsreCkKICAgICAgICAg
ICAgICpkcmF3Qml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4RkZGRkZGRkY7CiAgICAgUmVmUHRy
PEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhPiBvcGFxdWVJbWFnZSA9IEJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpjcmVhdGUoZHJhd0JpdG1hcCwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9wYXF1ZUltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICBFWFBFQ1RfVFJVRShv
cGFxdWVJbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkpOwogCiAgICAgZHJhd0Jp
dG1hcC5zZXRJc09wYXF1ZShmYWxzZSk7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBkcmF3Qml0
bWFwLmhlaWdodCgpOyArK3kpCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZHJhd0JpdG1h
cC53aWR0aCgpOyArK3gpCiAgICAgICAgICAgICAqZHJhd0JpdG1hcC5nZXRBZGRyMzIoeCwgeSkg
PSAweDAwMDAwMDAwOwogICAgIFJlZlB0cjxCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYT4gYWxw
aGFJbWFnZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoZHJhd0JpdG1hcCwg
dHJ1ZSk7Ci0gICAgRVhQRUNUX1RSVUUoYWxwaGFJbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGFscGhhSW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpKTsKIAogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkw
KSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE0MTYxOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgQ2hhbmdlIGhhc0FscGhhIHRvIGlzS25vd25Ub0JlT3BhcXVlIGFuZCBj
b3JyZWN0IHRoZSByZXR1cm4gdmFsdWUgZm9yIFNWRyBpbWFnZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBv
cnRzLmRlZi5pbjoKKwogMjAxMy0wMS0zMSAgQXVyaW1hcyBMaXV0aWthcyAgPGF1cmltYXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEVkaXRvcjo6bV9jb21wb3NpdGlvbk5vZGUgbm90IHVwZGF0
ZWQgb24gSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoKQpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lv
biAxNDE1NzcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAgRVhQT1JUUwogICAg
ICAgICA/PzFCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVAWFoKICAgICAgICAgPz8wQml0bWFwSW1h
Z2VAV2ViQ29yZUBASUFFQFBBVkltYWdlT2JzZXJ2ZXJAMUBAWgogICAgICAgICA/aXNCaXRtYXBJ
bWFnZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlhaCi0gICAgICAgID9jdXJyZW50RnJhbWVI
YXNBbHBoYUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCisgICAgICAgID9jdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWgogICAgICAgICA/
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW5AQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFX05YWgogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgP25vdFNvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2Vi
Q29yZUBAVUFFX05YWiAKQEAgLTcyNSw3ICs3MjUsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUJp
dG1hcEltYWdlQFdlYkNvcmVAQFVBRUBYWgogICAgICAgICA/PzBCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBJQUVAUEFWSW1hZ2VPYnNlcnZlckAxQEBaCiAgICAgICAgID9pc0JpdG1hcEltYWdlQEJpdG1h
cEltYWdlQFdlYkNvcmVAQFVCRV9OWFoKLSAgICAgICAgP2N1cnJlbnRGcmFtZUhhc0FscGhhQEJp
dG1hcEltYWdlQFdlYkNvcmVAQFVBRV9OWFoKKyAgICAgICAgP2N1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlhaCiAgICAgICAgID9oYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbkBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQkVfTlhaCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICA/bm90U29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVf
TlhaIApAQCAtMTExMSw3ICsxMTExLDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBVQUVAWFoKICAgICAgICAgPz8wQml0bWFwSW1hZ2VAV2ViQ29yZUBASUFFQFBB
VkltYWdlT2JzZXJ2ZXJAMUBAWgogICAgICAgICA/aXNCaXRtYXBJbWFnZUBCaXRtYXBJbWFnZUBX
ZWJDb3JlQEBVQkVfTlhaCi0gICAgICAgID9jdXJyZW50RnJhbWVIYXNBbHBoYUBCaXRtYXBJbWFn
ZUBXZWJDb3JlQEBVQUVfTlhaCisgICAgICAgID9jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWVA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWgogICAgICAgICA/aGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW5AQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFX05YWgogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgP25vdFNvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFX05YWiAKQEAg
LTE1MDMsNyArMTUwMyw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUFFQFhaCiAgICAgICAgID8/MEJpdG1hcEltYWdlQFdlYkNvcmVAQElBRUBQQVZJbWFnZU9i
c2VydmVyQDFAQFoKICAgICAgICAgP2lzQml0bWFwSW1hZ2VAQml0bWFwSW1hZ2VAV2ViQ29yZUBA
VUJFX05YWgotICAgICAgICA/Y3VycmVudEZyYW1lSGFzQWxwaGFAQml0bWFwSW1hZ2VAV2ViQ29y
ZUBAVUFFX05YWgorICAgICAgICA/Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlQEJpdG1hcElt
YWdlQFdlYkNvcmVAQFVBRV9OWFoKICAgICAgICAgP2hhc1NpbmdsZVNlY3VyaXR5T3JpZ2luQEJp
dG1hcEltYWdlQFdlYkNvcmVAQFVCRV9OWFoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ID9ub3RTb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVBRV9OWFogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNDE2MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMi0wMSAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUu
Y29tPgorCisgICAgICAgIENoYW5nZSBoYXNBbHBoYSB0byBpc0tub3duVG9CZU9wYXF1ZSBhbmQg
Y29ycmVjdCB0aGUgcmV0dXJuIHZhbHVlIGZvciBTVkcgaW1hZ2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBBbiBTVkcgaW1hZ2UgaGFzIGJlZW4gYWRk
ZWQgdG8gdGhpcyB0ZXN0IHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4KKworICAgICAgICAqIGZh
c3QvYm94LXNoYWRvdy9pbWFnZS1ib3gtc2hhZG93LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRtbDoKKworICAgICAgICAgICAgQWRk
IGFuIFNWRyBpbWFnZSBhbmQgY29ycmVjdCBhIHNtYWxsIG1pc3Rha2UgaW4gdGhlIHRlc3QgdGhh
dCB1c2VkIHZhbHVlcyBvZiAyNTYKKyAgICAgICAgICAgIGluc3RlYWQgb2YgMjU1LgorCisgICAg
ICAgICogZmFzdC9ib3gtc2hhZG93L3Jlc291cmNlcy9ncmVlbi5zdmc6IEFkZGVkLgorCiAyMDEz
LTAyLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNtYXJ0
IGxpbmsgY2FuIGVycm9uZW91c2x5IG1vdmUgY2FyZXQgYWZ0ZXIgYW4gVVJMIHdoZW4gdHlwaW5n
IGltbWVkaWF0ZWx5IGJlZm9yZSBpdApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93
L2ltYWdlLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRvdy1leHBlY3RlZC5odG1sCShyZXZpc2lv
biAxNDE1NzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaW1hZ2UtYm94LXNoYWRv
dy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDEwICs3LDExIEBAIGltZyB7CiB9
CiBkaXYgewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICBiYWNrZ3JvdW5kOiByZ2Io
MCwyNTYsMCk7CisgICAgYmFja2dyb3VuZDogcmdiKDAsMjU1LDApOwogICAgIGhlaWdodDogNTBw
eDsKIH0KIDwvc3R5bGU+CiA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tYWxwaGEucG5n
Ij48L2Rpdj4KIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9ncmVlbi5wbmciPjwvZGl2PgogPGRp
dj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLmpwZyI+PC9kaXY+Cis8ZGl2PjxpbWcgc3JjPSJy
ZXNvdXJjZXMvZ3JlZW4uc3ZnIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYm94LXNo
YWRvdy9pbWFnZS1ib3gtc2hhZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRtbAkocmV2aXNpb24gMTQxNTc3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2ltYWdlLWJveC1zaGFkb3cuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSwxMSBAQAogPCFET0NUWVBFIGh0bWw+CiA8c3R5bGU+CiBpbWcg
ewotICAgIGJhY2tncm91bmQ6IHJnYigwLDI1NiwwKTsKKyAgICBiYWNrZ3JvdW5kOiByZ2IoMCwy
NTUsMCk7CiAgICAgd2lkdGg6IDUwcHg7CiAgICAgaGVpZ2h0OiAyNXB4OwogICAgIG1hcmdpbi1i
b3R0b206IDI1cHg7Ci0gICAgYm94LXNoYWRvdzogMHB4IDI1cHggcmdiKDAsMjU2LDApOyAKKyAg
ICBib3gtc2hhZG93OiAwcHggMjVweCByZ2IoMCwyNTUsMCk7IAogfQogZGl2IHsKICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CkBAIC0xNiwzICsxNiw0IEBAIGRpdiB7CiA8ZGl2PjxpbWcgc3Jj
PSJyZXNvdXJjZXMvZ3JlZW4tYWxwaGEucG5nIj48L2Rpdj4KIDxkaXY+PGltZyBzcmM9InJlc291
cmNlcy9ncmVlbi5wbmciPjwvZGl2PgogPGRpdj48aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuLmpw
ZyI+PC9kaXY+Cis8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW4uc3ZnIj48L2Rpdj4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9yZXNvdXJjZXMvZ3JlZW4uc3ZnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9yZXNvdXJjZXMvZ3JlZW4uc3Zn
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L3Jlc291cmNlcy9n
cmVlbi5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4w
IiBzdGFuZGFsb25lPSJubyI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNW
RyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEu
ZHRkIj4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1Ij4K
KyAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InJnYmEo
MCwyNTUsMCwwLjUpIiAvPgorPC9zdmc+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>