<?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>47196</bug_id>
          
          <creation_ts>2010-10-05 10:38:21 -0700</creation_ts>
          <short_desc>Implement UNPACK_COLORSPACE_CONVERSION_WEBGL</short_desc>
          <delta_ts>2010-11-18 15:56:31 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>pkasting</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289735</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-05 10:38:21 -0700</bug_when>
    <thetext>In a recent WebGL face-to-face meeting it was resolved to provide explicit control over any colorspace conversion the browser may apply during image uploading. This is likely the cause of some of the gamma ramp tests in gl-teximage.html failing. Per the spec, the new pixelStorei parameter UNPACK_COLORSPACE_CONVERSION_WEBGL needs to be implemented, with the default value of BROWSER_DEFAULT_WEBGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306896</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-09 11:32:06 -0800</bug_when>
    <thetext>*** Bug 44568 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306899</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-09 11:34:18 -0800</bug_when>
    <thetext>*** Bug 35050 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307592</commentid>
    <comment_count>3</comment_count>
      <attachid>73547</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-10 15:11:34 -0800</bug_when>
    <thetext>Created attachment 73547
patch

This is the first patch for this bug.  We add constants and methods, but haven&apos;t hooked it up with texture uploading yet.  Also, in order to check in constants.html, we need to remove out-dated constants, and update affected tests correspondingly.

All the tests are in sync with khronos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308151</commentid>
    <comment_count>4</comment_count>
      <attachid>73661</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-11 14:26:26 -0800</bug_when>
    <thetext>Created attachment 73661
revised patch : resync texture-transparant-... test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308173</commentid>
    <comment_count>5</comment_count>
      <attachid>73661</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-11 14:44:38 -0800</bug_when>
    <thetext>Comment on attachment 73661
revised patch : resync texture-transparant-... test.

Looks good to me. Note to any other reviewers: some of the test changes which might seem unrelated are because of the removal of the TRUE and FALSE constants and attendant resyncing of those tests with the Khronos repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308189</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-11 15:04:34 -0800</bug_when>
    <thetext>Committed r71855: &lt;http://trac.webkit.org/changeset/71855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308212</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-11 15:31:46 -0800</bug_when>
    <thetext>Accidentally closed this bug when committing the first patch: it&apos;s not fixed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308254</commentid>
    <comment_count>8</comment_count>
      <attachid>73679</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-11 16:30:05 -0800</bug_when>
    <thetext>Created attachment 73679
patch: hook up UNPACK_COLORSPACE_CONVERSION setting to texture uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308266</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-11 16:50:59 -0800</bug_when>
    <thetext>This second patch fixes the gamma correction behavior.  Once this is reviewed and landed, I&apos;ll upload a third patch to control ICC profiles.  Then this bug should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308901</commentid>
    <comment_count>10</comment_count>
      <attachid>73679</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-12 18:39:30 -0800</bug_when>
    <thetext>Comment on attachment 73679
patch: hook up UNPACK_COLORSPACE_CONVERSION setting to texture uploading.

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

r- for naming inconsistency throughout the code. I think the argument should be more properly named ignoreGammaAndColorProfile.

&gt; WebCore/platform/graphics/qt/ImageDecoderQt.cpp:40
&gt; +ImageDecoder* ImageDecoder::create(const SharedBuffer&amp; data, bool premultiplyAlpha, bool ignoreGamma)

Everywhere else throughout the code this is called &quot;ignoreColorProfile&quot;. The code should be consistent.

&gt; WebCore/platform/graphics/qt/ImageDecoderQt.cpp:46
&gt; +    return new ImageDecoderQt(premultiplyAlpha, ignoreGamma);

Here too.

&gt; WebCore/platform/graphics/qt/ImageDecoderQt.cpp:50
&gt; +ImageDecoderQt::ImageDecoderQt(bool premultiplyAlpha, bool ignoreGamma)
&gt; +    : ImageDecoder(premultiplyAlpha, ignoreGamma)

Here too.

&gt; WebCore/platform/graphics/qt/ImageDecoderQt.h:44
&gt; +    ImageDecoderQt(bool premultiplyAlpha, bool ignoreGamma);

Here too.

&gt; WebKit/chromium/ChangeLog:9
&gt; +        (WebKit::WebImageDecoder::init): Add ignoreColorSpace parameter.

ignoreColorSpace doesn&apos;t match the naming of the argument throughout the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308903</commentid>
    <comment_count>11</comment_count>
      <attachid>73679</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-12 18:56:56 -0800</bug_when>
    <thetext>Comment on attachment 73679
patch: hook up UNPACK_COLORSPACE_CONVERSION setting to texture uploading.

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

What about the ICC information in JPEG?  What about the CoreGraphics image decoders?  It&apos;s lame that you push this all the way down into the decoder instead of doing it in image source.  If the image doesn&apos;t provide an ICC profile, we assume it has a Device color profile (on Mac).  Is that what you want?  Do you want sRGB?

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; +    if (!m_ignoreColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {

This is only the gamma correction.  What about the ICC correction?

&gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; -        m_private = new BMPImageDecoder(true);
&gt; +        m_private = new BMPImageDecoder(true, false);

Isn&apos;t false implicit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309327</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-15 10:00:07 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 73679 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73679&amp;action=review
&gt; 
&gt; What about the ICC information in JPEG?  What about the CoreGraphics image decoders?  It&apos;s lame that you push this all the way down into the decoder instead of doing it in image source.  If the image doesn&apos;t provide an ICC profile, we assume it has a Device color profile (on Mac).  Is that what you want?  Do you want sRGB?

If we don&apos;t push it down to the decoder, gamma correction will be applied and we have to unapply, which won&apos;t be lossless.   For certain WebGL settings, lossless is required.  If there is a way that I fails to see, please enlighten me.

Yes, sRGB seems the correct profile for raw unaltered RGBA data.

As for CoreGraphics image decoder, they don&apos;t apply gamma correction and ICC profiles.  Maybe there is a setting to control that.  I need to do more digging.  It will be a separate patch.

&gt; 
&gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; +    if (!m_ignoreColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; 
&gt; This is only the gamma correction.  What about the ICC correction?

I am going to fix the ICC profile behavior in another patch.

&gt; 
&gt; &gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; &gt; -        m_private = new BMPImageDecoder(true);
&gt; &gt; +        m_private = new BMPImageDecoder(true, false);
&gt; 
&gt; Isn&apos;t false implicit?

No, I only use default values for ImageSource.  All others we need to explicitly express the desired settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309356</commentid>
    <comment_count>13</comment_count>
      <attachid>73913</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-15 10:57:36 -0800</bug_when>
    <thetext>Created attachment 73913
revised patch: fixed the parameter names and also in the comments.

Use ignoreGammaAndColorProfile all over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309450</commentid>
    <comment_count>14</comment_count>
      <attachid>73913</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-15 14:28:42 -0800</bug_when>
    <thetext>Comment on attachment 73913
revised patch: fixed the parameter names and also in the comments.

This looks good to me as a step forward but I&apos;ll wait to r+ it until Adam has a chance to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309859</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-16 12:08:44 -0800</bug_when>
    <thetext>I think Adam is busy for the next couple of days so I&apos;m going to r+ this now and we can fix up any concerns in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309860</commentid>
    <comment_count>16</comment_count>
      <attachid>73913</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-16 12:08:58 -0800</bug_when>
    <thetext>Comment on attachment 73913
revised patch: fixed the parameter names and also in the comments.

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309904</commentid>
    <comment_count>17</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-16 13:24:05 -0800</bug_when>
    <thetext>Committed r72130: &lt;http://trac.webkit.org/changeset/72130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309905</commentid>
    <comment_count>18</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-16 13:25:00 -0800</bug_when>
    <thetext>Forget about --no-close again.  Re-open this bug for ICC profile issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309918</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-16 13:43:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 73679 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73679&amp;action=review
&gt; &gt; 
&gt; &gt; What about the ICC information in JPEG?  What about the CoreGraphics image decoders?  It&apos;s lame that you push this all the way down into the decoder instead of doing it in image source.  If the image doesn&apos;t provide an ICC profile, we assume it has a Device color profile (on Mac).  Is that what you want?  Do you want sRGB?
&gt; 
&gt; If we don&apos;t push it down to the decoder, gamma correction will be applied and we have to unapply, which won&apos;t be lossless.   For certain WebGL settings, lossless is required.  If there is a way that I fails to see, please enlighten me.

How can you have losses JPEG?  That doesn&apos;t make any sense to me.

&gt; Yes, sRGB seems the correct profile for raw unaltered RGBA data.

How can something be both &quot;unaltered&quot; and sRGB?  Doesn&apos;t sRGB imply alteration?  Maybe I don&apos;t understand what you&apos;re trying to do.

&gt; As for CoreGraphics image decoder, they don&apos;t apply gamma correction and ICC profiles.  Maybe there is a setting to control that.  I need to do more digging.  It will be a separate patch.

Huh?  I&apos;m pretty CoreGraphics uses ICC profiles.  Do you have tests?  Are you tests failing in Safari?

&gt; &gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; +    if (!m_ignoreColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; 
&gt; &gt; This is only the gamma correction.  What about the ICC correction?
&gt; 
&gt; I am going to fix the ICC profile behavior in another patch.

Ok.  In the meantime, the code super confusing because m_ignoreColorProfile actually affects the gamma instead of the color profile.  Perhaps we should rename the variable as we go so it actually reflects what it does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309919</commentid>
    <comment_count>20</comment_count>
      <attachid>73913</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-16 13:48:56 -0800</bug_when>
    <thetext>Comment on attachment 73913
revised patch: fixed the parameter names and also in the comments.

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

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; +    if (!m_ignoreGammaAndColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {

This line of code really seems wrong.  m_ignoreGammaAndColorProfile doesn&apos;t ignore color profiles.

&gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; -        m_private = new BMPImageDecoder(true);
&gt; +        m_private = new BMPImageDecoder(true, false);

Please use an enum instead of a bool.  It&apos;s really hard to understand what this line of code does.  If you&apos;d like to improve the premultiply alpha parameter to use an enum too, that would be great.  (Feel free to do both in a follow-up patch.)

&gt; LayoutTests/fast/canvas/webgl/gl-teximage-expected.txt:42
&gt; +Check that gamma settings don&apos;t effect 8bit pngs
&gt; +PASS getError was expected value: NO_ERROR : Should be no errors from setup.

Can we test JPEGs as well as PNG?  I don&apos;t understand how this test passes in Safari.  We should also have tests with color profiles to document that this patch is incomplete.  It&apos;s fine to check in expected.txt files that say FAIL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309925</commentid>
    <comment_count>21</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-16 13:57:30 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (From update of attachment 73679 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73679&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; What about the ICC information in JPEG?  What about the CoreGraphics image decoders?  It&apos;s lame that you push this all the way down into the decoder instead of doing it in image source.  If the image doesn&apos;t provide an ICC profile, we assume it has a Device color profile (on Mac).  Is that what you want?  Do you want sRGB?
&gt; &gt; 
&gt; &gt; If we don&apos;t push it down to the decoder, gamma correction will be applied and we have to unapply, which won&apos;t be lossless.   For certain WebGL settings, lossless is required.  If there is a way that I fails to see, please enlighten me.
&gt; 
&gt; How can you have losses JPEG?  That doesn&apos;t make any sense to me.

Lossless texture is mostly PNG.

&gt; 
&gt; &gt; Yes, sRGB seems the correct profile for raw unaltered RGBA data.
&gt; 
&gt; How can something be both &quot;unaltered&quot; and sRGB?  Doesn&apos;t sRGB imply alteration?  Maybe I don&apos;t understand what you&apos;re trying to do.

We assume the original PNG is in RGB color space.  Otherwise lossless can&apos;t be possible.

&gt; 
&gt; &gt; As for CoreGraphics image decoder, they don&apos;t apply gamma correction and ICC profiles.  Maybe there is a setting to control that.  I need to do more digging.  It will be a separate patch.
&gt; 
&gt; Huh?  I&apos;m pretty CoreGraphics uses ICC profiles.  Do you have tests?  Are you tests failing in Safari?

We tested Gamma correction and it&apos;s not applied in CG decoder (at least not in the way we use it).  We haven&apos;t dealt with ICC profiles yet.

&gt; 
&gt; &gt; &gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; &gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; &gt; +    if (!m_ignoreColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; 
&gt; &gt; &gt; This is only the gamma correction.  What about the ICC correction?
&gt; &gt; 
&gt; &gt; I am going to fix the ICC profile behavior in another patch.
&gt; 
&gt; Ok.  In the meantime, the code super confusing because m_ignoreColorProfile actually affects the gamma instead of the color profile.  Perhaps we should rename the variable as we go so it actually reflects what it does?

I fixed the names already.  Used ignoreGammaAndColorProfile instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309927</commentid>
    <comment_count>22</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-16 14:01:30 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 73913 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73913&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; +    if (!m_ignoreGammaAndColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; 
&gt; This line of code really seems wrong.  m_ignoreGammaAndColorProfile doesn&apos;t ignore color profiles.

It&apos;s not wrong.  Only that we also need to hook m_ignoreGammaAndColorProfile with ICC profiles too, as this parameter controls both.

&gt; 
&gt; &gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; &gt; -        m_private = new BMPImageDecoder(true);
&gt; &gt; +        m_private = new BMPImageDecoder(true, false);
&gt; 
&gt; Please use an enum instead of a bool.  It&apos;s really hard to understand what this line of code does.  If you&apos;d like to improve the premultiply alpha parameter to use an enum too, that would be great.  (Feel free to do both in a follow-up patch.)

Will do.

&gt; 
&gt; &gt; LayoutTests/fast/canvas/webgl/gl-teximage-expected.txt:42
&gt; &gt; +Check that gamma settings don&apos;t effect 8bit pngs
&gt; &gt; +PASS getError was expected value: NO_ERROR : Should be no errors from setup.
&gt; 
&gt; Can we test JPEGs as well as PNG?  I don&apos;t understand how this test passes in Safari.  We should also have tests with color profiles to document that this patch is incomplete.  It&apos;s fine to check in expected.txt files that say FAIL.

Honestly we really don&apos;t care about JPEGs in WebGL, as if a programmer wants lossless data, he should use PNG in RGB colorspace only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310379</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 10:45:26 -0800</bug_when>
    <thetext>&gt; &gt; How can you have losses JPEG?  That doesn&apos;t make any sense to me.
&gt; 
&gt; Lossless texture is mostly PNG.

What does mostly mean?  This patch seems incomplete because it doesn&apos;t handle JPEGs.  That seems like a bug.

&gt; &gt; &gt; Yes, sRGB seems the correct profile for raw unaltered RGBA data.
&gt; &gt; 
&gt; &gt; How can something be both &quot;unaltered&quot; and sRGB?  Doesn&apos;t sRGB imply alteration?  Maybe I don&apos;t understand what you&apos;re trying to do.
&gt; 
&gt; We assume the original PNG is in RGB color space.  Otherwise lossless can&apos;t be possible.

Do you mean sRGB instead of RGB?  I don&apos;t know what lossless means, so I can&apos;t comment on when it is or is not possible.

&gt; &gt; &gt; As for CoreGraphics image decoder, they don&apos;t apply gamma correction and ICC profiles.  Maybe there is a setting to control that.  I need to do more digging.  It will be a separate patch.
&gt; &gt; 
&gt; &gt; Huh?  I&apos;m pretty CoreGraphics uses ICC profiles.  Do you have tests?  Are you tests failing in Safari?
&gt; 
&gt; We tested Gamma correction and it&apos;s not applied in CG decoder (at least not in the way we use it).  We haven&apos;t dealt with ICC profiles yet.

It would good to document all this information with test cases.

&gt; &gt; &gt; I am going to fix the ICC profile behavior in another patch.
&gt; &gt; 
&gt; &gt; Ok.  In the meantime, the code super confusing because m_ignoreColorProfile actually affects the gamma instead of the color profile.  Perhaps we should rename the variable as we go so it actually reflects what it does?
&gt; 
&gt; I fixed the names already.  Used ignoreGammaAndColorProfile instead.

&gt; &gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; +    if (!m_ignoreGammaAndColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; 
&gt; &gt; This line of code really seems wrong.  m_ignoreGammaAndColorProfile doesn&apos;t ignore color profiles.
&gt; 
&gt; It&apos;s not wrong.  Only that we also need to hook m_ignoreGammaAndColorProfile with ICC profiles too, as this parameter controls both.

What I&apos;m saying is that this patch, on its face, is incorrect.  In the future, you plan to make it correct by finishing the job, but between now and then the code will be inaccurate.

&gt; &gt; &gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; &gt; &gt; -        m_private = new BMPImageDecoder(true);
&gt; &gt; &gt; +        m_private = new BMPImageDecoder(true, false);
&gt; &gt; 
&gt; &gt; Please use an enum instead of a bool.  It&apos;s really hard to understand what this line of code does.  If you&apos;d like to improve the premultiply alpha parameter to use an enum too, that would be great.  (Feel free to do both in a follow-up patch.)
&gt; 
&gt; Will do.

Thanks.

&gt; &gt; &gt; LayoutTests/fast/canvas/webgl/gl-teximage-expected.txt:42
&gt; &gt; &gt; +Check that gamma settings don&apos;t effect 8bit pngs
&gt; &gt; &gt; +PASS getError was expected value: NO_ERROR : Should be no errors from setup.
&gt; &gt; 
&gt; &gt; Can we test JPEGs as well as PNG?  I don&apos;t understand how this test passes in Safari.  We should also have tests with color profiles to document that this patch is incomplete.  It&apos;s fine to check in expected.txt files that say FAIL.
&gt; 
&gt; Honestly we really don&apos;t care about JPEGs in WebGL, as if a programmer wants lossless data, he should use PNG in RGB colorspace only.

Should these APIs throw when given a JPEG?  In your patch, it seems like we just have the wrong behavior.  Again, do you mean sRGB instead of RGB?

This patch seems incorrect (or at least incomplete) in multiple dimensions, and I still don&apos;t understand what &quot;lossless&quot; means.

The whole thing just seems like a misfeature.  If you don&apos;t want color management, don&apos;t include a color profile in your image.  The results will be unpredictable, of course, since the result will depend on what color space we choose to interpret the image in.  That varies at least by platform and likely also by how the user has configured their system and what hardware they&apos;re using.

Moving forward, I think we should do the following:

1) Add tests for all the cases discussed above.
2) Change this patch to use accurate variable names.
3) Follow up and finish implementing the feature for all image types and for ICC as well as gamma.

This patch incurs technical debt for the project, which is generally something we&apos;d like to avoid.  I trust you to pay off that debt in short order, but understand the costs you&apos;re imposing on the project because of your schedule pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310390</commentid>
    <comment_count>24</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-17 11:02:52 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; &gt; How can you have losses JPEG?  That doesn&apos;t make any sense to me.
&gt; &gt; 
&gt; &gt; Lossless texture is mostly PNG.
&gt; 
&gt; What does mostly mean?  This patch seems incomplete because it doesn&apos;t handle JPEGs.  That seems like a bug.
&gt; 
&gt; &gt; &gt; &gt; Yes, sRGB seems the correct profile for raw unaltered RGBA data.
&gt; &gt; &gt; 
&gt; &gt; &gt; How can something be both &quot;unaltered&quot; and sRGB?  Doesn&apos;t sRGB imply alteration?  Maybe I don&apos;t understand what you&apos;re trying to do.
&gt; &gt; 
&gt; &gt; We assume the original PNG is in RGB color space.  Otherwise lossless can&apos;t be possible.
&gt; 
&gt; Do you mean sRGB instead of RGB?  I don&apos;t know what lossless means, so I can&apos;t comment on when it is or is not possible.
&gt; 
&gt; &gt; &gt; &gt; As for CoreGraphics image decoder, they don&apos;t apply gamma correction and ICC profiles.  Maybe there is a setting to control that.  I need to do more digging.  It will be a separate patch.
&gt; &gt; &gt; 
&gt; &gt; &gt; Huh?  I&apos;m pretty CoreGraphics uses ICC profiles.  Do you have tests?  Are you tests failing in Safari?
&gt; &gt; 
&gt; &gt; We tested Gamma correction and it&apos;s not applied in CG decoder (at least not in the way we use it).  We haven&apos;t dealt with ICC profiles yet.
&gt; 
&gt; It would good to document all this information with test cases.
&gt; 
&gt; &gt; &gt; &gt; I am going to fix the ICC profile behavior in another patch.
&gt; &gt; &gt; 
&gt; &gt; &gt; Ok.  In the meantime, the code super confusing because m_ignoreColorProfile actually affects the gamma instead of the color profile.  Perhaps we should rename the variable as we go so it actually reflects what it does?
&gt; &gt; 
&gt; &gt; I fixed the names already.  Used ignoreGammaAndColorProfile instead.
&gt; 
&gt; &gt; &gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:299
&gt; &gt; &gt; &gt; -    if (png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; &gt; +    if (!m_ignoreGammaAndColorProfile &amp;&amp; png_get_gAMA(png, info, &amp;gamma)) {
&gt; &gt; &gt; 
&gt; &gt; &gt; This line of code really seems wrong.  m_ignoreGammaAndColorProfile doesn&apos;t ignore color profiles.
&gt; &gt; 
&gt; &gt; It&apos;s not wrong.  Only that we also need to hook m_ignoreGammaAndColorProfile with ICC profiles too, as this parameter controls both.
&gt; 
&gt; What I&apos;m saying is that this patch, on its face, is incorrect.  In the future, you plan to make it correct by finishing the job, but between now and then the code will be inaccurate.
&gt; 
&gt; &gt; &gt; &gt; WebKit/chromium/src/WebImageDecoder.cpp:59
&gt; &gt; &gt; &gt; -        m_private = new BMPImageDecoder(true);
&gt; &gt; &gt; &gt; +        m_private = new BMPImageDecoder(true, false);
&gt; &gt; &gt; 
&gt; &gt; &gt; Please use an enum instead of a bool.  It&apos;s really hard to understand what this line of code does.  If you&apos;d like to improve the premultiply alpha parameter to use an enum too, that would be great.  (Feel free to do both in a follow-up patch.)
&gt; &gt; 
&gt; &gt; Will do.
&gt; 
&gt; Thanks.
&gt; 
&gt; &gt; &gt; &gt; LayoutTests/fast/canvas/webgl/gl-teximage-expected.txt:42
&gt; &gt; &gt; &gt; +Check that gamma settings don&apos;t effect 8bit pngs
&gt; &gt; &gt; &gt; +PASS getError was expected value: NO_ERROR : Should be no errors from setup.
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we test JPEGs as well as PNG?  I don&apos;t understand how this test passes in Safari.  We should also have tests with color profiles to document that this patch is incomplete.  It&apos;s fine to check in expected.txt files that say FAIL.
&gt; &gt; 
&gt; &gt; Honestly we really don&apos;t care about JPEGs in WebGL, as if a programmer wants lossless data, he should use PNG in RGB colorspace only.
&gt; 
&gt; Should these APIs throw when given a JPEG?  In your patch, it seems like we just have the wrong behavior.  Again, do you mean sRGB instead of RGB?
&gt; 
&gt; This patch seems incorrect (or at least incomplete) in multiple dimensions, and I still don&apos;t understand what &quot;lossless&quot; means.
&gt; 
&gt; The whole thing just seems like a misfeature.  If you don&apos;t want color management, don&apos;t include a color profile in your image.  The results will be unpredictable, of course, since the result will depend on what color space we choose to interpret the image in.  That varies at least by platform and likely also by how the user has configured their system and what hardware they&apos;re using.
&gt; 
&gt; Moving forward, I think we should do the following:
&gt; 
&gt; 1) Add tests for all the cases discussed above.
&gt; 2) Change this patch to use accurate variable names.
&gt; 3) Follow up and finish implementing the feature for all image types and for ICC as well as gamma.
&gt; 
&gt; This patch incurs technical debt for the project, which is generally something we&apos;d like to avoid.  I trust you to pay off that debt in short order, but understand the costs you&apos;re imposing on the project because of your schedule pressure.

OK, for the JPEG I&apos;ll create a bug for that and will fix it in the future.

For ICC, I am working on it right now, so this debt will be paid soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310396</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 11:19:52 -0800</bug_when>
    <thetext>&gt; OK, for the JPEG I&apos;ll create a bug for that and will fix it in the future.

The future = ???

&gt; For ICC, I am working on it right now, so this debt will be paid soon.

Thanks.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310414</commentid>
    <comment_count>26</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-17 11:38:51 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; OK, for the JPEG I&apos;ll create a bug for that and will fix it in the future.
&gt; 
&gt; The future = ???

I already created the bug and assigned to myself.  The fact is that for JPEG, ignoreGammaAndColorProfile = true or false doesn&apos;t matter at all in WebGL (and WebGL is the only client that might set ignoreGammaAndColorProfile to true), so it has to wait until more urgent tasks are out of my todo list.

&gt; 
&gt; &gt; For ICC, I am working on it right now, so this debt will be paid soon.
&gt; 
&gt; Thanks.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310444</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 12:25:06 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; &gt; OK, for the JPEG I&apos;ll create a bug for that and will fix it in the future.
&gt; &gt; 
&gt; &gt; The future = ???
&gt; 
&gt; I already created the bug and assigned to myself.  The fact is that for JPEG, ignoreGammaAndColorProfile = true or false doesn&apos;t matter at all in WebGL (and WebGL is the only client that might set ignoreGammaAndColorProfile to true), so it has to wait until more urgent tasks are out of my todo list.

What do you mean by &quot;doesn&apos;t matter at all&quot;?  Do you mean the API isn&apos;t exposed to the web or that you don&apos;t think many folks will run into the bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310458</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-17 12:46:12 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; &gt; OK, for the JPEG I&apos;ll create a bug for that and will fix it in the future.
&gt; &gt; &gt; 
&gt; &gt; &gt; The future = ???
&gt; &gt; 
&gt; &gt; I already created the bug and assigned to myself.  The fact is that for JPEG, ignoreGammaAndColorProfile = true or false doesn&apos;t matter at all in WebGL (and WebGL is the only client that might set ignoreGammaAndColorProfile to true), so it has to wait until more urgent tasks are out of my todo list.
&gt; 
&gt; What do you mean by &quot;doesn&apos;t matter at all&quot;?  Do you mean the API isn&apos;t exposed to the web or that you don&apos;t think many folks will run into the bug?

The WebGL setting to skip colorspace conversions by the browser (which sets this flag to true) is intended to allow authors to load image data untouched by the browser. It&apos;s most often used when loading non-image data, but using images to hold it. Examples include packing vertex data into pixels, or holding certain kinds of normal or light maps where the alpha channel holds additional, non-alpha data. In all of these cases it is basically never the case that the content author would use a lossy format such as JPEG as the container image; PNGs are the only kinds of images on the web today used for this purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310464</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 12:56:31 -0800</bug_when>
    <thetext>So, it sounds like you mean that the API is exposed to the web and will be buggy, but that you don&apos;t think folks will run into this bug in practice.

I don&apos;t think it&apos;s a good idea to ship APIs that we know are buggy.  We should either not ship the API, fix the bug, or change the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310490</commentid>
    <comment_count>30</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-17 13:31:23 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; So, it sounds like you mean that the API is exposed to the web and will be buggy, but that you don&apos;t think folks will run into this bug in practice.
&gt; 
&gt; I don&apos;t think it&apos;s a good idea to ship APIs that we know are buggy.  We should either not ship the API, fix the bug, or change the API.

I just had a look at the JPEG decoder.  Seems like an easy enough fix.  I&apos;ll just fix JPEG together with PNG then.  This should settle the argument.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310497</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 13:44:02 -0800</bug_when>
    <thetext>&gt; I just had a look at the JPEG decoder.  Seems like an easy enough fix.  I&apos;ll just fix JPEG together with PNG then.  This should settle the argument.  :)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310642</commentid>
    <comment_count>32</comment_count>
      <attachid>74184</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-17 17:41:04 -0800</bug_when>
    <thetext>Created attachment 74184
patch: hooking up COLORSPACE_CONVERSION setting with ICC profile behavior

Haven&apos;t updated the khronos side of the gl-teximage.html.  Will do so once it&apos;s reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310644</commentid>
    <comment_count>33</comment_count>
      <attachid>74184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 17:45:57 -0800</bug_when>
    <thetext>Comment on attachment 74184
patch: hooking up COLORSPACE_CONVERSION setting with ICC profile behavior

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

Thanks.  Please address the comments below before landing.

&gt; WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp:247
&gt; -            m_decoder-&gt;setColorProfile(readColorProfile(info()));              
&gt; +            if (m_decoder-&gt;ignoresGammaAndColorProfile())
&gt; +                m_decoder-&gt;setColorProfile(ColorProfile());
&gt; +            else
&gt; +                m_decoder-&gt;setColorProfile(readColorProfile(info()));

You don&apos;t need to call setColorProfile if you want the default..

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:269
&gt; -    if (colorType == PNG_COLOR_TYPE_RGB || colorType == PNG_COLOR_TYPE_RGB_ALPHA) {
&gt; +    if ((colorType == PNG_COLOR_TYPE_RGB || colorType == PNG_COLOR_TYPE_RGB_ALPHA)
&gt; +        &amp;&amp; !m_ignoreGammaAndColorProfile) {

One line please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310907</commentid>
    <comment_count>34</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-18 09:55:33 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 74184 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74184&amp;action=review
&gt; 
&gt; Thanks.  Please address the comments below before landing.

Will do.

&gt; 
&gt; &gt; WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp:247
&gt; &gt; -            m_decoder-&gt;setColorProfile(readColorProfile(info()));              
&gt; &gt; +            if (m_decoder-&gt;ignoresGammaAndColorProfile())
&gt; &gt; +                m_decoder-&gt;setColorProfile(ColorProfile());
&gt; &gt; +            else
&gt; &gt; +                m_decoder-&gt;setColorProfile(readColorProfile(info()));
&gt; 
&gt; You don&apos;t need to call setColorProfile if you want the default..
&gt; 
&gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:269
&gt; &gt; -    if (colorType == PNG_COLOR_TYPE_RGB || colorType == PNG_COLOR_TYPE_RGB_ALPHA) {
&gt; &gt; +    if ((colorType == PNG_COLOR_TYPE_RGB || colorType == PNG_COLOR_TYPE_RGB_ALPHA)
&gt; &gt; +        &amp;&amp; !m_ignoreGammaAndColorProfile) {
&gt; 
&gt; One line please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311082</commentid>
    <comment_count>35</comment_count>
      <attachid>74184</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-18 13:35:00 -0800</bug_when>
    <thetext>Comment on attachment 74184
patch: hooking up COLORSPACE_CONVERSION setting with ICC profile behavior

Looks good to me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311141</commentid>
    <comment_count>36</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-18 15:56:31 -0800</bug_when>
    <thetext>Committed r72341: &lt;http://trac.webkit.org/changeset/72341&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73547</attachid>
            <date>2010-11-10 15:11:34 -0800</date>
            <delta_ts>2010-11-11 14:26:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>colorspace.patch</filename>
            <type>text/plain</type>
            <size>39426</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTc3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTEtMTAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICBUaGlzIGlzIHRo
ZSBmaXJzdCBwYXRjaCBmb3IgdGhpcyBidWcuICBXZSBhZGQgY29uc3RhbnRzIGFuZCBtZXRob2Rz
LCBidXQgaGF2ZW4ndCBob29rZWQgaXQgdXAgd2l0aCB0ZXh0dXJlIHVwbG9hZGluZyB5ZXQuICBB
bHNvLCBpbiBvcmRlciB0byBjaGVjayBpbiBjb25zdGFudHMuaHRtbCwgd2UgbmVlZCB0byByZW1v
dmUgb3V0LWRhdGVkIGNvbnN0YW50cywgYW5kIHVwZGF0ZSBhZmZlY3RlZCB0ZXN0cyBjb3JyZXNw
b25kaW5nbHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0
bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dCk6IE1vdmUgaW5pdCBjb2RlIHRvIGluaXRpYWxpemVOZXdDb250ZXh0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0
ZXIpOiBJbXBsZW1lbnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkpOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDogQWRkIGEgbWVt
YmVyIHRvIHRyYWNrIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgc2V0dGluZy4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsOiBVcGRhdGUg
Y29uc3RhbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IFVwZGF0ZSBjb25zdGFudHMuCisKIDIwMTAtMTEtMTAgIE1hdHRoZXcgRGVsYW5leSAgPG1k
ZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDcxNzU5KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDYgQEAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbgogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
LCBtX3ZpZGVvQ2FjaGUoNCkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCi0gICAgLCBtX3N0
ZW5jaWxNYXNrKDB4RkZGRkZGRkYpCi0gICAgLCBtX3N0ZW5jaWxGdW5jUmVmKDApCi0gICAgLCBt
X3N0ZW5jaWxGdW5jTWFzaygweEZGRkZGRkZGKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwog
ICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7CkBAIC0xMjIsMTEgKzExOSwxNSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5lCiAgICAgbV91bnBhY2tBbGlnbm1lbnQg
PSA0OwogICAgIG1fdW5wYWNrRmxpcFkgPSBmYWxzZTsKICAgICBtX3VucGFja1ByZW11bHRpcGx5
QWxwaGEgPSBmYWxzZTsKKyAgICBtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkJST1dTRVJfREVGQVVMVF9XRUJHTDsKICAgICBtX2JvdW5kQXJyYXlCdWZm
ZXIgPSAwOwogICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSAwOwogICAgIG1fY3VycmVu
dFByb2dyYW0gPSAwOwogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRl
cmJ1ZmZlckJpbmRpbmcgPSAwOworICAgIG1fc3RlbmNpbE1hc2sgPSAweEZGRkZGRkZGOworICAg
IG1fc3RlbmNpbEZ1bmNSZWYgPSAwOworICAgIG1fc3RlbmNpbEZ1bmNNYXNrID0gMHhGRkZGRkZG
RjsKICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLmNsZWFyKCk7CiAKICAgICBpbnQgbnVtQ29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA9IDA7CkBAIC0xNjMyLDYgKzE2MzMsOCBAQCBXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8obV91bnBhY2tGbGlwWSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX1BS
RU1VTFRJUExZX0FMUEhBX1dFQkdMOgogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKG1fdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNL
X0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
byhtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpWRU5ET1I6CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oIldlYmtpdCAoIiArIG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dDNEOjpWRU5ET1IpICsgIikiKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJTSU9OOgpAQCAtMjE0OCwyMSArMjE1MSwzMiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkoCiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMOgogICAgICAgICBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEgPSBwYXJhbTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDoK
KyAgICAgICAgaWYgKHBhcmFtID09IEdyYXBoaWNzQ29udGV4dDNEOjpCUk9XU0VSX0RFRkFVTFRf
V0VCR0wgfHwgcGFyYW0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUpCisgICAgICAgICAgICBt
X3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
cGFyYW0pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlBBQ0tfQUxJR05NRU5UOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFD
S19BTElHTk1FTlQ6Ci0gICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFt
KTsKICAgICAgICAgaWYgKHBhcmFtID09IDEgfHwgcGFyYW0gPT0gMiB8fCBwYXJhbSA9PSA0IHx8
IHBhcmFtID09IDgpIHsKICAgICAgICAgICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6UEFDS19BTElHTk1FTlQpCiAgICAgICAgICAgICAgICAgbV9wYWNrQWxpZ25tZW50ID0gc3Rh
dGljX2Nhc3Q8aW50PihwYXJhbSk7CiAgICAgICAgICAgICBlbHNlIC8vIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgogICAgICAgICAgICAgICAgIG1fdW5wYWNrQWxpZ25tZW50
ID0gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnBpeGVs
U3RvcmVpKHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cG9seWdv
bk9mZnNldChkb3VibGUgZmFjdG9yLCBkb3VibGUgdW5pdHMpCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDcxNzU5KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIyLDYgKzQyMiw3IEBAIHB1YmxpYzoKICAgICBpbnQgbV91bnBhY2tBbGlnbm1lbnQ7CiAg
ICAgYm9vbCBtX3VucGFja0ZsaXBZOwogICAgIGJvb2wgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
OworICAgIHVuc2lnbmVkIGxvbmcgbV91bnBhY2tDb2xvcnNwYWNlQ29udmVyc2lvbjsKICAgICBi
b29sIG1fY29udGV4dExvc3Q7CiAKICAgICBsb25nIG1fc3RlbmNpbEJpdHM7CkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA3
MTc1OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9CVUZGRVJfQklUICAgICAgICAgICAgID0gMHgwMDAw
MDQwMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTE9SX0JVRkZFUl9CSVQgICAgICAg
ICAgICAgICA9IDB4MDAwMDQwMDA7CiAKLSAgICAgICAgLyogQm9vbGVhbiAqLwotICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLSAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IFRSVUUgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDE7Ci0KICAgICAgICAgLyogQmVnaW5Nb2RlICovCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBQT0lOVFMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDA7CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBMSU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDE7CkBA
IC0yMzAsNyArMjI2LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxNDA0OwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgID0gMHgxNDA1Owog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHgxNDA2OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRklYRUQgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMHgxNDBDOwogCiAgICAgICAgIC8qIFBpeGVsRm9ybWF0ICovCiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBERVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgPSAw
eDE5MDI7CkBAIC0zOTgsMTAgKzM5Myw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IFNIQURFUl9TT1VSQ0VfTEVOR1RIICAgICAgICAgICA9IDB4OEI4ODsKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IFNIQURFUl9DT01QSUxFUiAgICAgICAgICAgICAgICA9
IDB4OERGQTsKIAotICAgICAgICAvKiBTaGFkZXIgQmluYXJ5ICovCi0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBTSEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICAgICAgPSAweDhERjg7Ci0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgPSAw
eDhERjk7Ci0KICAgICAgICAgLyogU2hhZGVyIFByZWNpc2lvbi1TcGVjaWZpZWQgVHlwZXMgKi8K
ICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IExPV19GTE9BVCAgICAgICAgICAgICAgICAgICAg
ICA9IDB4OERGMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IE1FRElVTV9GTE9BVCAgICAg
ICAgICAgICAgICAgICA9IDB4OERGMTsKQEAgLTQ1Nyw5ICs0NDgsMTEgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gID0gMHgwNTA2OwogCiAgICAgICAgIC8qIFdlYkdMLXNwZWNpZmljIGVudW1zICovCi0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgPSAw
eDkyNDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQ
SEFfV0VCR0wgPSAweDkyNDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT05URVhUX0xP
U1RfV0VCR0wgICAgICAgICAgICAgPSAweDkyNDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBVTlBBQ0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgID0gMHg5MjQwOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMICAgICA9IDB4
OTI0MTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTlRFWFRfTE9TVF9XRUJHTCAgICAg
ICAgICAgICAgICAgPSAweDkyNDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tf
Q09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMID0gMHg5MjQzOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA9IDB4OTI0NDsKIAog
ICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShp
biB1bnNpZ25lZCBsb25nIHRleHR1cmUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgYXR0YWNoU2hhZGVyKGluIFdlYkdMUHJv
Z3JhbSBwcm9ncmFtLCBpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01FeGNlcHRpb24p
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAkocmV2aXNpb24gNzE3NTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw2ICs0MDQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIFVOUEFDS19GTElQX1lfV0VCR0wgPSAweDkyNDAsCiAgICAgICAgIFVOUEFDS19QUkVN
VUxUSVBMWV9BTFBIQV9XRUJHTCA9IDB4OTI0MSwKICAgICAgICAgQ09OVEVYVF9MT1NUX1dFQkdM
ID0gMHg5MjQyLAorICAgICAgICBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMID0g
MHg5MjQzLAorICAgICAgICBCUk9XU0VSX0RFRkFVTFRfV0VCR0wgPSAweDkyNDQKICAgICB9Owog
CiAgICAgLy8gQ29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzE3NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMC0xMS0xMCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBVTlBB
Q0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE5NgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0
IHBhdGNoIGZvciB0aGlzIGJ1Zy4gIFdlIGFkZCBjb25zdGFudHMgYW5kIG1ldGhvZHMsIGJ1dCBo
YXZlbid0IGhvb2tlZCBpdCB1cCB3aXRoIHRleHR1cmUgdXBsb2FkaW5nIHlldC4gIEFsc28sIGlu
IG9yZGVyIHRvIGNoZWNrIGluIGNvbnN0YW50cy5odG1sLCB3ZSBuZWVkIHRvIHJlbW92ZSBvdXQt
ZGF0ZWQgY29uc3RhbnRzLCBhbmQgdXBkYXRlIGFmZmVjdGVkIHRlc3RzIGNvcnJlc3BvbmRpbmds
eS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWw6IFVwZGF0ZSBkdWUgdG8gcmVtb3ZhbCBvZiBU
UlVFL0ZBTFNFLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJl
bnQtcGl4ZWxzLWluaXRpYWxpemVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0aWFsaXplZC5odG1sOiBEaXR0
by4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVjaWZpYy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbDogQWRk
IHRlc3QgY2FzZXMgZm9yIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wuCisKIDIw
MTAtMTEtMTAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZDsgdGVzdCBleHBlY3RhdGlvbnMgYW5kIGJhc2VsaW5lcy4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Nv
bnN0YW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgdGhlIFdlYkdMIGNvbnRleHQgaGFzIGFsbCB0aGUgY29uc3RhbnRz
IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Q2FudmFzLmdldENvbnRleHQKK1BBU1MgQWxsIFdlYkdMIGNvbnN0YW50cyBmb3VuZCB0byBoYXZl
IGNvcnJlY3QgdmFsdWVzLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3Rh
bnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
c3RhbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OTMgQEAKKzxodG1sPgor
PGhlYWQ+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMDkgSWxtYXJpIEhlaWtraW5lbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CistLT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25zdGFudHMgVGVzdDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBXZWJHTCBj
b250ZXh0IGhhcyBhbGwgdGhlIGNvbnN0YW50cyBpbiB0aGUgc3BlY2lmaWNhdGlvbi4iKTsKKwor
dmFyIGNvbnN0YW50cyA9IHsKKyAgICAvKiBDbGVhckJ1ZmZlck1hc2sgKi8KK0RFUFRIX0JVRkZF
Ul9CSVQgICAgICAgICAgICAgICA6IDB4MDAwMDAxMDAsCitTVEVOQ0lMX0JVRkZFUl9CSVQgICAg
ICAgICAgICAgOiAweDAwMDAwNDAwLAorQ09MT1JfQlVGRkVSX0JJVCAgICAgICAgICAgICAgIDog
MHgwMDAwNDAwMCwKKyAgICAKKyAgICAvKiBCZWdpbk1vZGUgKi8KK1BPSU5UUyAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MDAwMCwKK0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDAwMSwKK0xJTkVfTE9PUCAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMiwKK0xJTkVf
U1RSSVAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMywKK1RSSUFOR0xFUyAgICAgICAgICAg
ICAgICAgICAgICA6IDB4MDAwNCwKK1RSSUFOR0xFX1NUUklQICAgICAgICAgICAgICAgICA6IDB4
MDAwNSwKK1RSSUFOR0xFX0ZBTiAgICAgICAgICAgICAgICAgICA6IDB4MDAwNiwKKyAgICAKKyAg
ICAvKiBBbHBoYUZ1bmN0aW9uIChub3Qgc3VwcG9ydGVkIGluIEVTMjApICovCisgICAgLyogICAg
ICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAgIC8qICAgICAgRVFVQUwgKi8KKyAg
ICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JFQVRFUiAqLworICAgIC8qICAgICAg
Tk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLworICAgIC8qICAgICAgQUxXQVlTICov
CisgICAgCisgICAgLyogQmxlbmRpbmdGYWN0b3JEZXN0ICovCitaRVJPICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAwLAorT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMSwKK1NS
Q19DT0xPUiAgICAgICAgICAgICAgICAgICAgICA6IDB4MDMwMCwKK09ORV9NSU5VU19TUkNfQ09M
T1IgICAgICAgICAgICA6IDB4MDMwMSwKK1NSQ19BTFBIQSAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDMwMiwKK09ORV9NSU5VU19TUkNfQUxQSEEgICAgICAgICAgICA6IDB4MDMwMywKK0RTVF9B
TFBIQSAgICAgICAgICAgICAgICAgICAgICA6IDB4MDMwNCwKK09ORV9NSU5VU19EU1RfQUxQSEEg
ICAgICAgICAgICA6IDB4MDMwNSwKKyAgICAKKyAgICAvKiBCbGVuZGluZ0ZhY3RvclNyYyAqLwor
ICAgIC8qICAgICAgWkVSTyAqLworICAgIC8qICAgICAgT05FICovCitEU1RfQ09MT1IgICAgICAg
ICAgICAgICAgICAgICAgOiAweDAzMDYsCitPTkVfTUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAg
OiAweDAzMDcsCitTUkNfQUxQSEFfU0FUVVJBVEUgICAgICAgICAgICAgOiAweDAzMDgsCisgICAg
LyogICAgICBTUkNfQUxQSEEgKi8KKyAgICAvKiAgICAgIE9ORV9NSU5VU19TUkNfQUxQSEEgKi8K
KyAgICAvKiAgICAgIERTVF9BTFBIQSAqLworICAgIC8qICAgICAgT05FX01JTlVTX0RTVF9BTFBI
QSAqLworICAgIAorICAgIC8qIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAqLworRlVOQ19BREQgICAg
ICAgICAgICAgICAgICAgICAgIDogMHg4MDA2LAorQkxFTkRfRVFVQVRJT04gICAgICAgICAgICAg
ICAgIDogMHg4MDA5LAorQkxFTkRfRVFVQVRJT05fUkdCICAgICAgICAgICAgIDogMHg4MDA5LCAg
IC8qIHNhbWUgYXMgQkxFTkRfRVFVQVRJT04gKi8KK0JMRU5EX0VRVUFUSU9OX0FMUEhBICAgICAg
ICAgICA6IDB4ODgzRCwKKyAgICAKKyAgICAvKiBCbGVuZFN1YnRyYWN0ICovCitGVU5DX1NVQlRS
QUNUICAgICAgICAgICAgICAgICAgOiAweDgwMEEsCitGVU5DX1JFVkVSU0VfU1VCVFJBQ1QgICAg
ICAgICAgOiAweDgwMEIsCisgICAgCisgICAgLyogU2VwYXJhdGUgQmxlbmQgRnVuY3Rpb25zICov
CitCTEVORF9EU1RfUkdCICAgICAgICAgICAgICAgICAgOiAweDgwQzgsCitCTEVORF9TUkNfUkdC
ICAgICAgICAgICAgICAgICAgOiAweDgwQzksCitCTEVORF9EU1RfQUxQSEEgICAgICAgICAgICAg
ICAgOiAweDgwQ0EsCitCTEVORF9TUkNfQUxQSEEgICAgICAgICAgICAgICAgOiAweDgwQ0IsCitD
T05TVEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgOiAweDgwMDEsCitPTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1IgICAgICAgOiAweDgwMDIsCitDT05TVEFOVF9BTFBIQSAgICAgICAgICAgICAgICAg
OiAweDgwMDMsCitPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgICAgICAgOiAweDgwMDQsCitCTEVO
RF9DT0xPUiAgICAgICAgICAgICAgICAgICAgOiAweDgwMDUsCisgICAgCisgICAgLyogQnVmZmVy
IE9iamVjdHMgKi8KK0FSUkFZX0JVRkZFUiAgICAgICAgICAgICAgICAgICA6IDB4ODg5MiwKK0VM
RU1FTlRfQVJSQVlfQlVGRkVSICAgICAgICAgICA6IDB4ODg5MywKK0FSUkFZX0JVRkZFUl9CSU5E
SU5HICAgICAgICAgICA6IDB4ODg5NCwKK0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgICA6
IDB4ODg5NSwKKyAgICAKK1NUUkVBTV9EUkFXICAgICAgICAgICAgICAgICAgICA6IDB4ODhFMCwK
K1NUQVRJQ19EUkFXICAgICAgICAgICAgICAgICAgICA6IDB4ODhFNCwKK0RZTkFNSUNfRFJBVyAg
ICAgICAgICAgICAgICAgICA6IDB4ODhFOCwKKyAgICAKK0JVRkZFUl9TSVpFICAgICAgICAgICAg
ICAgICAgICA6IDB4ODc2NCwKK0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICA6IDB4ODc2
NSwKKyAgICAKK0NVUlJFTlRfVkVSVEVYX0FUVFJJQiAgICAgICAgICA6IDB4ODYyNiwKKyAgICAK
KyAgICAvKiBDdWxsRmFjZU1vZGUgKi8KK0ZST05UICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDQwNCwKK0JBQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDQwNSwKK0ZST05U
X0FORF9CQUNLICAgICAgICAgICAgICAgICA6IDB4MDQwOCwKKyAgICAKKyAgICAvKiBEZXB0aEZ1
bmN0aW9uICovCisgICAgLyogICAgICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAg
IC8qICAgICAgRVFVQUwgKi8KKyAgICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JF
QVRFUiAqLworICAgIC8qICAgICAgTk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLwor
ICAgIC8qICAgICAgQUxXQVlTICovCisgICAgCisgICAgLyogRW5hYmxlQ2FwICovCisgICAgLyog
VEVYVFVSRV8yRCAqLworQ1VMTF9GQUNFICAgICAgICAgICAgICAgICAgICAgIDogMHgwQjQ0LAor
QkxFTkQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkUyLAorRElUSEVSICAgICAgICAg
ICAgICAgICAgICAgICAgIDogMHgwQkQwLAorU1RFTkNJTF9URVNUICAgICAgICAgICAgICAgICAg
IDogMHgwQjkwLAorREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAgIDogMHgwQjcxLAorU0NJ
U1NPUl9URVNUICAgICAgICAgICAgICAgICAgIDogMHgwQzExLAorUE9MWUdPTl9PRkZTRVRfRklM
TCAgICAgICAgICAgIDogMHg4MDM3LAorU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFICAgICAgIDog
MHg4MDlFLAorU0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgIDogMHg4MEEwLAorICAgIAor
ICAgIC8qIEVycm9yQ29kZSAqLworTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgIDogMCwK
K0lOVkFMSURfRU5VTSAgICAgICAgICAgICAgICAgICA6IDB4MDUwMCwKK0lOVkFMSURfVkFMVUUg
ICAgICAgICAgICAgICAgICA6IDB4MDUwMSwKK0lOVkFMSURfT1BFUkFUSU9OICAgICAgICAgICAg
ICA6IDB4MDUwMiwKK09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICAgICA6IDB4MDUwNSwKKyAg
ICAKKyAgICAvKiBGcm9udEZhY2VEaXJlY3Rpb24gKi8KK0NXICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IDB4MDkwMCwKK0NDVyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDkw
MSwKKyAgICAKKyAgICAvKiBHZXRQTmFtZSAqLworTElORV9XSURUSCAgICAgICAgICAgICAgICAg
ICAgIDogMHgwQjIxLAorQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFICAgICAgIDogMHg4NDZELAor
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFICAgICAgIDogMHg4NDZFLAorQ1VMTF9GQUNFX01PREUg
ICAgICAgICAgICAgICAgIDogMHgwQjQ1LAorRlJPTlRfRkFDRSAgICAgICAgICAgICAgICAgICAg
IDogMHgwQjQ2LAorREVQVEhfUkFOR0UgICAgICAgICAgICAgICAgICAgIDogMHgwQjcwLAorREVQ
VEhfV1JJVEVNQVNLICAgICAgICAgICAgICAgIDogMHgwQjcyLAorREVQVEhfQ0xFQVJfVkFMVUUg
ICAgICAgICAgICAgIDogMHgwQjczLAorREVQVEhfRlVOQyAgICAgICAgICAgICAgICAgICAgIDog
MHgwQjc0LAorU1RFTkNJTF9DTEVBUl9WQUxVRSAgICAgICAgICAgIDogMHgwQjkxLAorU1RFTkNJ
TF9GVU5DICAgICAgICAgICAgICAgICAgIDogMHgwQjkyLAorU1RFTkNJTF9GQUlMICAgICAgICAg
ICAgICAgICAgIDogMHgwQjk0LAorU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwgICAgICAgIDogMHgw
Qjk1LAorU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgIDogMHgwQjk2LAorU1RFTkNJTF9S
RUYgICAgICAgICAgICAgICAgICAgIDogMHgwQjk3LAorU1RFTkNJTF9WQUxVRV9NQVNLICAgICAg
ICAgICAgIDogMHgwQjkzLAorU1RFTkNJTF9XUklURU1BU0sgICAgICAgICAgICAgIDogMHgwQjk4
LAorU1RFTkNJTF9CQUNLX0ZVTkMgICAgICAgICAgICAgIDogMHg4ODAwLAorU1RFTkNJTF9CQUNL
X0ZBSUwgICAgICAgICAgICAgIDogMHg4ODAxLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJ
TCAgIDogMHg4ODAyLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyAgIDogMHg4ODAzLAor
U1RFTkNJTF9CQUNLX1JFRiAgICAgICAgICAgICAgIDogMHg4Q0EzLAorU1RFTkNJTF9CQUNLX1ZB
TFVFX01BU0sgICAgICAgIDogMHg4Q0E0LAorU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAgICAg
IDogMHg4Q0E1LAorVklFV1BPUlQgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkEyLAorU0NJ
U1NPUl9CT1ggICAgICAgICAgICAgICAgICAgIDogMHgwQzEwLAorICAgIC8qICAgICAgU0NJU1NP
Ul9URVNUICovCitDT0xPUl9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgOiAweDBDMjIsCitDT0xP
Ul9XUklURU1BU0sgICAgICAgICAgICAgICAgOiAweDBDMjMsCitVTlBBQ0tfQUxJR05NRU5UICAg
ICAgICAgICAgICAgOiAweDBDRjUsCitQQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgOiAw
eDBEMDUsCitNQVhfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgOiAweDBEMzMsCitNQVhfVklF
V1BPUlRfRElNUyAgICAgICAgICAgICAgOiAweDBEM0EsCitTVUJQSVhFTF9CSVRTICAgICAgICAg
ICAgICAgICAgOiAweDBENTAsCitSRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgOiAweDBE
NTIsCitHUkVFTl9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBENTMsCitCTFVFX0JJVFMg
ICAgICAgICAgICAgICAgICAgICAgOiAweDBENTQsCitBTFBIQV9CSVRTICAgICAgICAgICAgICAg
ICAgICAgOiAweDBENTUsCitERVBUSF9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBENTYs
CitTVEVOQ0lMX0JJVFMgICAgICAgICAgICAgICAgICAgOiAweDBENTcsCitQT0xZR09OX09GRlNF
VF9VTklUUyAgICAgICAgICAgOiAweDJBMDAsCisgICAgLyogICAgICBQT0xZR09OX09GRlNFVF9G
SUxMICovCitQT0xZR09OX09GRlNFVF9GQUNUT1IgICAgICAgICAgOiAweDgwMzgsCitURVhUVVJF
X0JJTkRJTkdfMkQgICAgICAgICAgICAgOiAweDgwNjksCitTQU1QTEVfQlVGRkVSUyAgICAgICAg
ICAgICAgICAgOiAweDgwQTgsCitTQU1QTEVTICAgICAgICAgICAgICAgICAgICAgICAgOiAweDgw
QTksCitTQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAgICAgOiAweDgwQUEsCitTQU1QTEVfQ09W
RVJBR0VfSU5WRVJUICAgICAgICAgOiAweDgwQUIsCisgICAgCisgICAgLyogR2V0VGV4dHVyZVBh
cmFtZXRlciAqLworICAgIC8qICAgICAgVEVYVFVSRV9NQUdfRklMVEVSICovCisgICAgLyogICAg
ICBURVhUVVJFX01JTl9GSUxURVIgKi8KKyAgICAvKiAgICAgIFRFWFRVUkVfV1JBUF9TICovCisg
ICAgLyogICAgICBURVhUVVJFX1dSQVBfVCAqLworICAgIAorTlVNX0NPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTIDogMHg4NkEyLAorQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgICAgIDogMHg4
NkEzLAorICAgIAorICAgIC8qIEhpbnRNb2RlICovCitET05UX0NBUkUgICAgICAgICAgICAgICAg
ICAgICAgOiAweDExMDAsCitGQVNURVNUICAgICAgICAgICAgICAgICAgICAgICAgOiAweDExMDEs
CitOSUNFU1QgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDExMDIsCisgICAgCisgICAgLyog
SGludFRhcmdldCAqLworR0VORVJBVEVfTUlQTUFQX0hJTlQgICAgICAgICAgICA6IDB4ODE5MiwK
KyAgICAKKyAgICAvKiBEYXRhVHlwZSAqLworQllURSAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogMHgxNDAwLAorVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgIDogMHgxNDAxLAorU0hP
UlQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDAyLAorVU5TSUdORURfU0hPUlQgICAg
ICAgICAgICAgICAgIDogMHgxNDAzLAorSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
MHgxNDA0LAorVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgIDogMHgxNDA1LAorRkxPQVQg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDA2LAorICAgIAorICAgIC8qIFBpeGVsRm9y
bWF0ICovCitERVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgOiAweDE5MDIsCitBTFBIQSAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDYsCitSR0IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDE5MDcsCitSR0JBICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE5
MDgsCitMVU1JTkFOQ0UgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDksCitMVU1JTkFOQ0Vf
QUxQSEEgICAgICAgICAgICAgICAgOiAweDE5MEEsCisgICAgCisgICAgLyogUGl4ZWxUeXBlICov
CisgICAgLyogICAgICBVTlNJR05FRF9CWVRFICovCitVTlNJR05FRF9TSE9SVF80XzRfNF80ICAg
ICAgICAgOiAweDgwMzMsCitVTlNJR05FRF9TSE9SVF81XzVfNV8xICAgICAgICAgOiAweDgwMzQs
CitVTlNJR05FRF9TSE9SVF81XzZfNSAgICAgICAgICAgOiAweDgzNjMsCisgICAgCisgICAgLyog
U2hhZGVycyAqLworRlJBR01FTlRfU0hBREVSICAgICAgICAgICAgICAgICAgOiAweDhCMzAsCitW
RVJURVhfU0hBREVSICAgICAgICAgICAgICAgICAgICA6IDB4OEIzMSwKK01BWF9WRVJURVhfQVRU
UklCUyAgICAgICAgICAgICAgIDogMHg4ODY5LAorTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMg
ICAgICAgOiAweDhERkIsCitNQVhfVkFSWUlOR19WRUNUT1JTICAgICAgICAgICAgICA6IDB4OERG
QywKK01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTIDogMHg4QjRELAorTUFYX1ZFUlRF
WF9URVhUVVJFX0lNQUdFX1VOSVRTICAgOiAweDhCNEMsCitNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UyAgICAgICAgICA6IDB4ODg3MiwKK01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgICAgIDog
MHg4REZELAorU0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgICAgOiAweDhCNEYsCitERUxF
VEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICA6IDB4OEI4MCwKK0xJTktfU1RBVFVTICAgICAg
ICAgICAgICAgICAgICAgIDogMHg4QjgyLAorVkFMSURBVEVfU1RBVFVTICAgICAgICAgICAgICAg
ICAgOiAweDhCODMsCitBVFRBQ0hFRF9TSEFERVJTICAgICAgICAgICAgICAgICA6IDB4OEI4NSwK
K0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICAgICAgIDogMHg4Qjg2LAorQUNUSVZFX1VOSUZP
Uk1fTUFYX0xFTkdUSCAgICAgICAgOiAweDhCODcsCitBQ1RJVkVfQVRUUklCVVRFUyAgICAgICAg
ICAgICAgICA6IDB4OEI4OSwKK0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCAgICAgIDogMHg4
QjhBLAorU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OICAgICAgICAgOiAweDhCOEMsCitDVVJSRU5U
X1BST0dSQU0gICAgICAgICAgICAgICAgICA6IDB4OEI4RCwKKyAgICAKKyAgICAvKiBTdGVuY2ls
RnVuY3Rpb24gKi8KK05FVkVSICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwMCwKK0xF
U1MgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwMSwKK0VRVUFMICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MDIwMiwKK0xFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDIwMywKK0dSRUFURVIgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwNCwKK05PVEVR
VUFMICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwNSwKK0dFUVVBTCAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4MDIwNiwKK0FMV0FZUyAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
MDIwNywKKyAgICAKKyAgICAvKiBTdGVuY2lsT3AgKi8KKyAgICAvKiAgICAgIFpFUk8gKi8KK0tF
RVAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMCwKK1JFUExBQ0UgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MUUwMSwKK0lOQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MUUwMiwKK0RFQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMywKK0lOVkVS
VCAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTUwQSwKK0lOQ1JfV1JBUCAgICAgICAgICAg
ICAgICAgICAgICA6IDB4ODUwNywKK0RFQ1JfV1JBUCAgICAgICAgICAgICAgICAgICAgICA6IDB4
ODUwOCwKKyAgICAKKyAgICAvKiBTdHJpbmdOYW1lICovCitWRU5ET1IgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDFGMDAsCitSRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgOiAweDFG
MDEsCitWRVJTSU9OICAgICAgICAgICAgICAgICAgICAgICAgOiAweDFGMDIsCitFWFRFTlNJT05T
ICAgICAgICAgICAgICAgICAgICAgOiAweDFGMDMsCisgICAgCisgICAgLyogVGV4dHVyZU1hZ0Zp
bHRlciAqLworTkVBUkVTVCAgICAgICAgICAgICAgICAgICAgICAgIDogMHgyNjAwLAorTElORUFS
ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgyNjAxLAorICAgIAorICAgIC8qIFRleHR1cmVN
aW5GaWx0ZXIgKi8KKyAgICAvKiAgICAgIE5FQVJFU1QgKi8KKyAgICAvKiAgICAgIExJTkVBUiAq
LworTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCAgICAgICAgIDogMHgyNzAwLAorTElORUFSX01JUE1B
UF9ORUFSRVNUICAgICAgICAgIDogMHgyNzAxLAorTkVBUkVTVF9NSVBNQVBfTElORUFSICAgICAg
ICAgIDogMHgyNzAyLAorTElORUFSX01JUE1BUF9MSU5FQVIgICAgICAgICAgIDogMHgyNzAzLAor
ICAgIAorICAgIC8qIFRleHR1cmVQYXJhbWV0ZXJOYW1lICovCitURVhUVVJFX01BR19GSUxURVIg
ICAgICAgICAgICAgOiAweDI4MDAsCitURVhUVVJFX01JTl9GSUxURVIgICAgICAgICAgICAgOiAw
eDI4MDEsCitURVhUVVJFX1dSQVBfUyAgICAgICAgICAgICAgICAgOiAweDI4MDIsCitURVhUVVJF
X1dSQVBfVCAgICAgICAgICAgICAgICAgOiAweDI4MDMsCisgICAgCisgICAgLyogVGV4dHVyZVRh
cmdldCAqLworVEVYVFVSRV8yRCAgICAgICAgICAgICAgICAgICAgIDogMHgwREUxLAorVEVYVFVS
RSAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNzAyLAorICAgIAorVEVYVFVSRV9DVUJFX01B
UCAgICAgICAgICAgICAgIDogMHg4NTEzLAorVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQICAgICAg
IDogMHg4NTE0LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICAgIDogMHg4NTE1LAorVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YICAgIDogMHg4NTE2LAorVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZICAgIDogMHg4NTE3LAorVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZICAgIDog
MHg4NTE4LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aICAgIDogMHg4NTE5LAorVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9aICAgIDogMHg4NTFBLAorTUFYX0NVQkVfTUFQX1RFWFRVUkVf
U0laRSAgICAgIDogMHg4NTFDLAorICAgIAorICAgIC8qIFRleHR1cmVVbml0ICovCitURVhUVVJF
MCAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzAsCitURVhUVVJFMSAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0QzEsCitURVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0
QzIsCitURVhUVVJFMyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzMsCitURVhUVVJFNCAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzQsCitURVhUVVJFNSAgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0QzUsCitURVhUVVJFNiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzYs
CitURVhUVVJFNyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzcsCitURVhUVVJFOCAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDg0QzgsCitURVhUVVJFOSAgICAgICAgICAgICAgICAgICAg
ICAgOiAweDg0QzksCitURVhUVVJFMTAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0EsCitU
RVhUVVJFMTEgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0IsCitURVhUVVJFMTIgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0Q0MsCitURVhUVVJFMTMgICAgICAgICAgICAgICAgICAgICAg
OiAweDg0Q0QsCitURVhUVVJFMTQgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0UsCitURVhU
VVJFMTUgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0YsCitURVhUVVJFMTYgICAgICAgICAg
ICAgICAgICAgICAgOiAweDg0RDAsCitURVhUVVJFMTcgICAgICAgICAgICAgICAgICAgICAgOiAw
eDg0RDEsCitURVhUVVJFMTggICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDIsCitURVhUVVJF
MTkgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDMsCitURVhUVVJFMjAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0RDQsCitURVhUVVJFMjEgICAgICAgICAgICAgICAgICAgICAgOiAweDg0
RDUsCitURVhUVVJFMjIgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDYsCitURVhUVVJFMjMg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDcsCitURVhUVVJFMjQgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0RDgsCitURVhUVVJFMjUgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDks
CitURVhUVVJFMjYgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REEsCitURVhUVVJFMjcgICAg
ICAgICAgICAgICAgICAgICAgOiAweDg0REIsCitURVhUVVJFMjggICAgICAgICAgICAgICAgICAg
ICAgOiAweDg0REMsCitURVhUVVJFMjkgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REQsCitU
RVhUVVJFMzAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REUsCitURVhUVVJFMzEgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0REYsCitBQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAg
OiAweDg0RTAsCisgICAgCisgICAgLyogVGV4dHVyZVdyYXBNb2RlICovCitSRVBFQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDI5MDEsCitDTEFNUF9UT19FREdFICAgICAgICAgICAgICAg
ICAgOiAweDgxMkYsCitNSVJST1JFRF9SRVBFQVQgICAgICAgICAgICAgICAgOiAweDgzNzAsCisg
ICAgCisgICAgLyogVW5pZm9ybSBUeXBlcyAqLworRkxPQVRfVkVDMiAgICAgICAgICAgICAgICAg
ICAgIDogMHg4QjUwLAorRkxPQVRfVkVDMyAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUxLAor
RkxPQVRfVkVDNCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUyLAorSU5UX1ZFQzIgICAgICAg
ICAgICAgICAgICAgICAgIDogMHg4QjUzLAorSU5UX1ZFQzMgICAgICAgICAgICAgICAgICAgICAg
IDogMHg4QjU0LAorSU5UX1ZFQzQgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU1LAorQk9P
TCAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU2LAorQk9PTF9WRUMyICAgICAgICAg
ICAgICAgICAgICAgIDogMHg4QjU3LAorQk9PTF9WRUMzICAgICAgICAgICAgICAgICAgICAgIDog
MHg4QjU4LAorQk9PTF9WRUM0ICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU5LAorRkxPQVRf
TUFUMiAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVBLAorRkxPQVRfTUFUMyAgICAgICAgICAg
ICAgICAgICAgIDogMHg4QjVCLAorRkxPQVRfTUFUNCAgICAgICAgICAgICAgICAgICAgIDogMHg4
QjVDLAorU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVFLAorU0FNUExFUl9D
VUJFICAgICAgICAgICAgICAgICAgIDogMHg4QjYwLAorICAgIAorICAgIC8qIFZlcnRleCBBcnJh
eXMgKi8KK1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCAgICAgICAgOiAweDg2MjIsCitWRVJU
RVhfQVRUUklCX0FSUkFZX1NJWkUgICAgICAgICAgIDogMHg4NjIzLAorVkVSVEVYX0FUVFJJQl9B
UlJBWV9TVFJJREUgICAgICAgICA6IDB4ODYyNCwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAg
ICAgICAgICAgOiAweDg2MjUsCitWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgICAgIDog
MHg4ODZBLAorVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSICAgICAgICA6IDB4ODY0NSwKK1ZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgOiAweDg4OUYsCisgICAgCisgICAgLyog
U2hhZGVyIFNvdXJjZSAqLworQ09NUElMRV9TVEFUVVMgICAgICAgICAgICAgICAgIDogMHg4Qjgx
LAorSU5GT19MT0dfTEVOR1RIICAgICAgICAgICAgICAgIDogMHg4Qjg0LAorU0hBREVSX1NPVVJD
RV9MRU5HVEggICAgICAgICAgIDogMHg4Qjg4LAorU0hBREVSX0NPTVBJTEVSICAgICAgICAgICAg
ICAgIDogMHg4REZBLAorICAgIAorICAgIC8qIFNoYWRlciBQcmVjaXNpb24tU3BlY2lmaWVkIFR5
cGVzICovCitMT1dfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgOiAweDhERjAsCitNRURJVU1f
RkxPQVQgICAgICAgICAgICAgICAgICAgOiAweDhERjEsCitISUdIX0ZMT0FUICAgICAgICAgICAg
ICAgICAgICAgOiAweDhERjIsCitMT1dfSU5UICAgICAgICAgICAgICAgICAgICAgICAgOiAweDhE
RjMsCitNRURJVU1fSU5UICAgICAgICAgICAgICAgICAgICAgOiAweDhERjQsCitISUdIX0lOVCAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDhERjUsCisgICAgCisgICAgLyogRnJhbWVidWZmZXIg
T2JqZWN0LiAqLworRlJBTUVCVUZGRVIgICAgICAgICAgICAgICAgICAgIDogMHg4RDQwLAorUkVO
REVSQlVGRkVSICAgICAgICAgICAgICAgICAgIDogMHg4RDQxLAorICAgIAorUkdCQTQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogMHg4MDU2LAorUkdCNV9BMSAgICAgICAgICAgICAgICAgICAg
ICAgIDogMHg4MDU3LAorUkdCNTY1ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg4RDYyLAor
REVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAgIDogMHg4MUE1LAorU1RFTkNJTF9JTkRFWCAg
ICAgICAgICAgICAgICAgIDogMHgxOTAxLAorU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAg
IDogMHg4RDQ4LAorREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgIDogMHg4NEY5LAorICAg
IAorUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgIDogMHg4RDQyLAorUkVOREVSQlVGRkVS
X0hFSUdIVCAgICAgICAgICAgIDogMHg4RDQzLAorUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1B
VCAgIDogMHg4RDQ0LAorUkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgIDogMHg4RDUwLAor
UkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgICAgICAgIDogMHg4RDUxLAorUkVOREVSQlVGRkVSX0JM
VUVfU0laRSAgICAgICAgIDogMHg4RDUyLAorUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAgICAg
IDogMHg4RDUzLAorUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAgICAgIDogMHg4RDU0LAorUkVO
REVSQlVGRkVSX1NURU5DSUxfU0laRSAgICAgIDogMHg4RDU1LAorICAgIAorRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSAgICAgICAgICAgOiAweDhDRDAsCitGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9OQU1FICAgICAgICAgICA6IDB4OENEMSwKK0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTCAgICAgICAgIDogMHg4Q0QyLAorRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UgOiAweDhDRDMsCisgICAgCitDT0xPUl9BVFRB
Q0hNRU5UMCAgICAgICAgICAgICAgOiAweDhDRTAsCitERVBUSF9BVFRBQ0hNRU5UICAgICAgICAg
ICAgICAgOiAweDhEMDAsCitTVEVOQ0lMX0FUVEFDSE1FTlQgICAgICAgICAgICAgOiAweDhEMjAs
CitERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgICAgICAgOiAweDgyMUEsCisgICAgCitOT05FICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAwLAorICAgIAorRlJBTUVCVUZGRVJfQ09NUExFVEUg
ICAgICAgICAgICAgICAgICAgICAgOiAweDhDRDUsCitGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQgICAgICAgICA6IDB4OENENiwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lO
R19BVFRBQ0hNRU5UIDogMHg4Q0Q3LAorRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05T
ICAgICAgICAgOiAweDhDRDksCitGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCAgICAgICAgICAgICAg
ICAgICA6IDB4OENERCwKKyAgCitGUkFNRUJVRkZFUl9CSU5ESU5HICAgICAgICAgICAgOiAweDhD
QTYsCitSRU5ERVJCVUZGRVJfQklORElORyAgICAgICAgICAgOiAweDhDQTcsCitNQVhfUkVOREVS
QlVGRkVSX1NJWkUgICAgICAgICAgOiAweDg0RTgsCisgICAgCitJTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiAgOiAweDA1MDYsCisKKy8qIFdlYkdMLXNwZWNpZmljIGVudW1zICovCitVTlBB
Q0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgIDogMHg5MjQwLAorVU5QQUNLX1BSRU1VTFRJ
UExZX0FMUEhBX1dFQkdMICAgICA6IDB4OTI0MSwKK0NPTlRFWFRfTE9TVF9XRUJHTCAgICAgICAg
ICAgICAgICAgOiAweDkyNDIsCitVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIDog
MHg5MjQzLAorQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA6IDB4OTI0NAorfTsK
KworZnVuY3Rpb24gYXNzZXJ0UHJvcGVydHkodiwgcCkgeworICBpZiAodltwXSA9PSBudWxsKSB7
CisgICAgdGVzdEZhaWxlZCgiUHJvcGVydHkgZG9lcyBub3QgZXhpc3Q6ICIgKyBwKQorICAgIHJl
dHVybiBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorCitmdW5j
dGlvbiBhc3NlcnRNc2dfKGJvb2wsIG1zZykgeworICBpZiAoIWJvb2wpIC8vIHNob3cgb25seSBm
YWlsdXJlcyB0byBhdm9pZCBzcGFtbWluZyByZXN1bHQgbGlzdAorICAgIGFzc2VydE1zZyhib29s
LCBtc2cpOworICByZXR1cm4gYm9vbDsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNhbnZhcy5n
ZXRDb250ZXh0Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Cit2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBwYXNzZWQgPSB0
cnVlOworZm9yICh2YXIgaSBpbiBjb25zdGFudHMpIHsKKyAgdmFyIHIgPSBhc3NlcnRQcm9wZXJ0
eShnbCwgaSkgJiYgYXNzZXJ0TXNnXyhnbFtpXSA9PSBjb25zdGFudHNbaV0sICJQcm9wZXJ0eSAi
K2krIiB2YWx1ZSB0ZXN0ICIrZ2xbaV0rIiA9PSAiK2NvbnN0YW50c1tpXSk7CisgIHBhc3NlZCA9
IHBhc3NlZCAmJiByOworfQoraWYgKHBhc3NlZCkgeworICB0ZXN0UGFzc2VkKCJBbGwgV2ViR0wg
Y29uc3RhbnRzIGZvdW5kIHRvIGhhdmUgY29ycmVjdCB2YWx1ZXMuIik7Cit9Cit2YXIgZXh0ZW5k
ZWQgPSBmYWxzZTsKK2ZvciAodmFyIGkgaW4gZ2wpIHsKKyAgaWYgKGkubWF0Y2goL15bXmEtel0v
KSAmJiBjb25zdGFudHNbaV0gPT0gbnVsbCkgeworICAgIGlmICghZXh0ZW5kZWQpIHsKKyAgICAg
IGV4dGVuZGVkID0gdHJ1ZTsKKyAgICAgIGRlYnVnKCJBbHNvIGZvdW5kIHRoZSBmb2xsb3dpbmcg
ZXh0cmEgY29uc3RhbnRzOiIpOworICAgIH0KKyAgICBkZWJ1ZyhpKTsKKyAgfQorfQorCitkZWJ1
ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTc1OSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDMwICs1LDMwIEBAIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogVGVzdGluZyB3aXRoIGFudGlhbGlh
cyBvbgogVGVzdGluZyBjb3B5VGV4SW1hZ2UyRAotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogUEFTUyBw
aXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBp
eGVsIGlzIGNvcnJlY3RDb2xvcgogVGVzdGluZyBjb3B5VGV4U3ViSW1hZ2UyRAotUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIHBpeGVsIGlzIGNv
cnJlY3RDb2xvcgogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29y
cmVjdENvbG9yCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogVGVzdGluZyB3aXRoIGFudGlh
bGlhcyBvZmYKIFRlc3RpbmcgY29weVRleEltYWdlMkQKLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBB
U1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogUEFT
UyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFRlc3RpbmcgY29weVRleFN1YkltYWdlMkQKLVBBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBwaXhlbCBp
cyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBpeGVsIGlz
IGNvcnJlY3RDb2xvcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29weS10
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbAko
cmV2aXNpb24gNzE3NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDE0ICsx
NywxMSBAQCB2b2lkIG1haW4oKQogPC9zY3JpcHQ+CiAKIDxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgogdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotLy8gV29ya2Fyb3VuZCBm
b3Igbm9uLWNvbXBsaWFudCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgKEZJWE1FKQotI2lmIGRlZmlu
ZWQoR0xfRVMpCi12YXJ5aW5nIG1lZGl1bXAgdmVjMiB0ZXhDb29yZDsKLSNlbHNlCiB2YXJ5aW5n
IHZlYzIgdGV4Q29vcmQ7Ci0jZW5kaWYKLQogdm9pZCBtYWluKCkKIHsKICAgICBnbF9GcmFnQ29s
b3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7CkBAIC04Niw3ICs4Myw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RJdGVyYXRpb24oYW50aWFsaWFzKQogICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOwogICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKLSAgICBnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDEsIDIsIGdsLkZMT0FULCBnbC5GQUxTRSwgMCwgdGV4Q29vcmRPZmZz
ZXQpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAw
LCB0ZXhDb29yZE9mZnNldCk7CiAKICAgICBnbC5jb2xvck1hc2soMSwgMSwgMSwgMCk7CiAgICAg
Z2wuZGlzYWJsZShnbC5CTEVORCk7CkBAIC0xMDQsOSArMTAxLDkgQEAgZnVuY3Rpb24gcnVuVGVz
dEl0ZXJhdGlvbihhbnRpYWxpYXMpCiAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwogICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKIAot
ICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwgMCwgMiwgMiwgMCk7Ci0gICAgc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKIAogICAgIC8vIEdyZWVuIGNhbnZhcwogICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwg
MCwgMSk7CkBAIC0xMzgsOSArMTM1LDkgQEAgZnVuY3Rpb24gcnVuVGVzdEl0ZXJhdGlvbihhbnRp
YWxpYXMpCiAgICAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKICAgICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CiAKLSAgICBzaG91bGRCZSgi
Z2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOwogICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIDAsIDAsIDIsIDIpOwotICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5P
X0VSUk9SIik7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAKICAgICAv
LyBCbHVlIGNhbnZhcwogICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0
aWFsaXplZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA3MTc1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMywxNSArMyw5IEBAIFRlc3RzIHRoZXJlIGlzIG5vIGdhcmJhZ2UgaW4gdHJh
bnNwYXJlbnQKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogQ2hlY2tpbmcgbG93ZXIgbGVm
dCBjb3JuZXIKLVBBU1MgYnVmW2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAmJiBidWZb
aWR4ICsgMl0gPT0gMCBpcyB0cnVlCi1QQVNTIGJ1ZltpZHhdID09IDAgJiYgYnVmW2lkeCArIDFd
ID09IDAgJiYgYnVmW2lkeCArIDJdID09IDAgaXMgdHJ1ZQotUEFTUyBidWZbaWR4XSA9PSAwICYm
IGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAyXSA9PSAwIGlzIHRydWUKLVBBU1MgYnVm
W2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAmJiBidWZbaWR4ICsgMl0gPT0gMCBpcyB0
cnVlCitQQVNTIHNob3VsZEJlIDI1NSwyNTUsMjU1CiBDaGVja2luZyB1cHBlciBsZWZ0IGNvcm5l
cgotUEFTUyBidWZbaWR4XSA9PSAwICYmIGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAy
XSA9PSAwIGlzIHRydWUKLVBBU1MgYnVmW2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAm
JiBidWZbaWR4ICsgMl0gPT0gMCBpcyB0cnVlCi1QQVNTIGJ1ZltpZHhdID09IDAgJiYgYnVmW2lk
eCArIDFdID09IDAgJiYgYnVmW2lkeCArIDJdID09IDAgaXMgdHJ1ZQotUEFTUyBidWZbaWR4XSA9
PSAwICYmIGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAyXSA9PSAwIGlzIHRydWUKK1BB
U1Mgc2hvdWxkQmUgMjU1LDI1NSwyNTUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4
dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1p
bml0aWFsaXplZC5odG1sCShyZXZpc2lvbiA3MTc1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsMzMgKzMsOSBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KLWF0dHJpYnV0ZSB2ZWMzIGdfUG9zaXRpb247Ci1h
dHRyaWJ1dGUgdmVjMiBnX1RleENvb3JkMDsKLQotdmFyeWluZyB2ZWMyIHRleENvb3JkOwotCi12
b2lkIG1haW4oKQotewotICAgIGdsX1Bvc2l0aW9uID0gdmVjNChnX1Bvc2l0aW9uLngsIGdfUG9z
aXRpb24ueSwgZ19Qb3NpdGlvbi56LCAxLjApOwotICAgIHRleENvb3JkID0gZ19UZXhDb29yZDA7
Ci19Ci08L3NjcmlwdD4KLQotPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+Ci0jaWZkZWYgR0xfRVMKLXByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSNlbmRpZgot
dW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotdmFyeWluZyB2ZWMyIHRleENvb3JkOwotCi12b2lkIG1h
aW4oKQotewotICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKTsKLX0K
LTwvc2NyaXB0PgotCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKIHZhciBnbCA9
IG51bGw7CiB2YXIgdGV4dHVyZUxvYyA9IG51bGw7CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
ZmFsc2U7CkBAIC00MiwxNyArMTgsMTUgQEAgZnVuY3Rpb24gaW5pdCgpCiAKICAgICBkZXNjcmlw
dGlvbignVGVzdHMgdGhlcmUgaXMgbm8gZ2FyYmFnZSBpbiB0cmFuc3BhcmVudCByZWdpb25zIG9m
IGltYWdlcyB1cGxvYWRlZCBhcyB0ZXh0dXJlcycpOwogCi0gICAgZ2wgPSBpbml0V2ViR0woImV4
YW1wbGUiLCAidnNoYWRlciIsICJmc2hhZGVyIiwgWyAiZ19Qb3NpdGlvbiIsICJnX1RleENvb3Jk
MCIgXSwgWyAwLCAwLCAwLCAxIF0sIDEpOworICAgIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworICAgIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNl
dHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgIGds
LmNsZWFyRGVwdGgoMSk7CiAKLSAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KGdsLnByb2dyYW0sICJ0ZXgiKTsKKyAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ0ZXgiKTsKIAotICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJy
YXkoWwotICAgICAgICAgMS4wLCAgMS4wLCAwLjAsCi0gICAgICAgIC0xLjAsICAxLjAsIDAuMCwK
LSAgICAgICAgLTEuMCwgLTEuMCwgMC4wLAotICAgICAgICAgMS4wLCAgMS4wLCAwLjAsCi0gICAg
ICAgIC0xLjAsIC0xLjAsIDAuMCwKLSAgICAgICAgIDEuMCwgLTEuMCwgMC4wXSk7CiAgICAgLy8g
VGhlIGlucHV0IHRleHR1cmUgaGFzIDggY2hhcmFjdGVyczsgdGFrZSB0aGUgbGVmdG1vc3Qgb25l
CiAgICAgdmFyIGNvZWZmID0gMS4wIC8gOC4wOwogICAgIHZhciB0ZXhDb29yZHMgPSBuZXcgRmxv
YXQzMkFycmF5KFsKQEAgLTYyLDM4ICszNiwxNCBAQCBmdW5jdGlvbiBpbml0KCkKICAgICAgICAg
Y29lZmYsIDEuMCwKICAgICAgICAgMC4wLCAwLjAsCiAgICAgICAgIGNvZWZmLCAwLjBdKTsKLSAg
ICB2YXIgdGV4Q29vcmRPZmZzZXQgPSB2ZXJ0aWNlcy5ieXRlTGVuZ3RoOwogCiAgICAgdmFyIHZi
byA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwogICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCB2Ym8pOwotICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLAotICAgICAgICAgICAg
ICAgICAgdGV4Q29vcmRPZmZzZXQgKyB0ZXhDb29yZHMuYnl0ZUxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKLSAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JV
RkZFUiwgMCwgdmVydGljZXMpOwotICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCB0ZXhDb29yZE9mZnNldCwgdGV4Q29vcmRzKTsKLQotICAgIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDApOwotICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZh
bHNlLCAwLCAwKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRz
LCBnbC5TVEFUSUNfRFJBVyk7CiAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7Ci0g
ICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZ2wuRkFMU0UsIDAsIHRl
eENvb3JkT2Zmc2V0KTsKLQotICAgIHRleHR1cmUgPSBsb2FkVGV4dHVyZSgicmVzb3VyY2VzL2J1
Zy0zMjg4OC10ZXh0dXJlLnBuZyIpOwotfQorICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwg
MiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKIAotZnVuY3Rpb24gbG9hZFRleHR1cmUoc3JjKSB7
Ci0gICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwotICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNU
KTsKLSAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICBpbWFnZS5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7
Ci0gICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRydWUpOwot
ICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH07Ci0g
ICAgaW1hZ2Uuc3JjID0gc3JjOwotICAgIHJldHVybiB0ZXh0dXJlOworICAgIHRleHR1cmUgPSB3
dHUubG9hZFRleHR1cmUoZ2wsICJyZXNvdXJjZXMvYnVnLTMyODg4LXRleHR1cmUucG5nIiwgcnVu
VGVzdCk7CiB9CiAKIC8vIFRoZXNlIHR3byBkZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBnbG9iYWwg
Zm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0KQEAgLTEwOCwzNyArNTgsMTcgQEAgZnVuY3Rpb24g
cnVuVGVzdCgpCiAgICAgLy8gUG9pbnQgdGhlIHVuaWZvcm0gc2FtcGxlciB0byB0ZXh0dXJlIHVu
aXQgMAogICAgIGdsLnVuaWZvcm0xaSh0ZXh0dXJlTG9jLCAwKTsKICAgICAvLyBEcmF3IHRoZSB0
cmlhbmdsZXMKLSAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisgICAgd3R1
LmRyYXdRdWFkKGdsLCBbMTAwLCAxMDAsIDEwMCwgMjU1XSk7CiAKLSAgICAvLyBSZWFkIGJhY2sg
dGhlIHJlbmRlcmluZyByZXN1bHRzCi0gICAgdmFyIHdpZHRoID0gMzI7Ci0gICAgdmFyIGhlaWdo
dCA9IDMyOwotICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7Ci0g
ICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBidWYpOwogICAgIC8vIFNwb3QgY2hlY2sgYSBjb3VwbGUgb2YgMngyIHJlZ2lvbnMg
aW4gdGhlIHVwcGVyIGFuZCBsb3dlciBsZWZ0Ci0gICAgLy8gY29ybmVyczsgdGhleSBzaG91bGQg
YmUgdGhlIGJhY2tncm91bmQgY29sb3IgcmF0aGVyIHRoYW4KLSAgICAvLyBnYXJiYWdlCi0gICAg
dmFyIHF1ZXJ5V2lkdGggPSAyOwotICAgIHZhciBxdWVyeUhlaWdodCA9IDI7CisgICAgLy8gY29y
bmVyczsgdGhleSBzaG91bGQgYmUgdGhlIHJnYiB2YWx1ZXMgaW4gdGhlIHRleHR1cmUuCisgICAg
Y29sb3IgPSBbMjU1LCAyNTUsIDI1NV0KICAgICBkZWJ1ZygiQ2hlY2tpbmcgbG93ZXIgbGVmdCBj
b3JuZXIiKTsKLSAgICB2YXIgeG9mZiA9IDE7Ci0gICAgdmFyIHlvZmYgPSBoZWlnaHQgLSAzOwot
ICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcXVlcnlIZWlnaHQ7IHkrKykgewotICAgICAgICBmb3Ig
KHZhciB4ID0gMDsgeCA8IHF1ZXJ5V2lkdGg7IHgrKykgewotICAgICAgICAgICAgaWR4ID0gKCh5
b2ZmICsgeSkgKiB3aWR0aCAqIDQgKwotICAgICAgICAgICAgICAgICAgICh4b2ZmICsgeCkgKiA0
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJidWZbaWR4XSA9PSAwICYmIGJ1ZltpZHggKyAxXSA9
PSAwICYmIGJ1ZltpZHggKyAyXSA9PSAwIiwgInRydWUiKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAxLCBnbC5jYW52YXMuaGVpZ2h0IC0gMywgMiwgMiwg
Y29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkQmUgIiArIGNvbG9yKTsKICAg
ICBkZWJ1ZygiQ2hlY2tpbmcgdXBwZXIgbGVmdCBjb3JuZXIiKTsKLSAgICB5b2ZmID0gMTsKLSAg
ICBmb3IgKHZhciB5ID0gMDsgeSA8IHF1ZXJ5SGVpZ2h0OyB5KyspIHsKLSAgICAgICAgZm9yICh2
YXIgeCA9IDA7IHggPCBxdWVyeVdpZHRoOyB4KyspIHsKLSAgICAgICAgICAgIGlkeCA9ICgoeW9m
ZiArIHkpICogd2lkdGggKiA0ICsKLSAgICAgICAgICAgICAgICAgICAoeG9mZiArIHgpICogNCk7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiYnVmW2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0g
MCAmJiBidWZbaWR4ICsgMl0gPT0gMCIsICJ0cnVlIik7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
d3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMSwgMSwgMiwgMiwgY29sb3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAic2hvdWxkQmUgIiArIGNvbG9yKTsKIAogICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CiAgICAgdmFyIGVwaWxvZ3VlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2Ny
aXB0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVjaWZp
Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvd2ViZ2wtc3BlY2lmaWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTc1OSkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksOSBAQCBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogSU5WQUxJCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04gOiBhIGRpZmZlcmVudCBtYXNrIHZhbHVlIGZvciBmcm9udCBhbmQgYmFjayBmYWNp
bmcgaXMgaWxsZWdhbAogUEFTUyB1bmRlZmluZWQgaXMgdW5kZWZpbmVkLgogUEFTUyB1bmRlZmlu
ZWQgaXMgdW5kZWZpbmVkLgorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5QQUNLX0NPTE9SU1BB
Q0VfQ09OVkVSU0lPTl9XRUJHTCkgaXMgZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMCitQQVNTIGds
LmdldFBhcmFtZXRlcihnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMKSBpcyBn
bC5OT05FCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBzZXQv
Z2V0IFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgc2hvdWxkIGdlbmVyYXRlIG5v
IGVycm9yCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lm
aWMuaHRtbAkocmV2aXNpb24gNzE3NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC93ZWJnbC1zcGVjaWZpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDEyIEBA
IGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04KIHNob3VsZEJlVW5kZWZp
bmVkKGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUKTsKIHNob3VsZEJlVW5kZWZp
bmVkKGdsLklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSk7CiAKK3Nob3VsZEJlKCJnbC5n
ZXRQYXJhbWV0ZXIoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCkiLCAiZ2wu
QlJPV1NFUl9ERUZBVUxUX1dFQkdMIik7CitnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQ09MT1JT
UEFDRV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsKK3Nob3VsZEJlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCkiLCAiZ2wuTk9ORSIpOwor
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwKKyAgICAic2V0L2dldCBVTlBBQ0tfQ09M
T1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIHNob3VsZCBnZW5lcmF0ZSBubyBlcnJvciIpOworCiBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiAK
</data>
<flag name="commit-queue"
          id="63995"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73661</attachid>
            <date>2010-11-11 14:26:26 -0800</date>
            <delta_ts>2010-11-11 14:44:38 -0800</delta_ts>
            <desc>revised patch : resync texture-transparant-... test.</desc>
            <filename>colorspace.patch</filename>
            <type>text/plain</type>
            <size>39667</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTc3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTEtMTAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICBUaGlzIGlzIHRo
ZSBmaXJzdCBwYXRjaCBmb3IgdGhpcyBidWcuICBXZSBhZGQgY29uc3RhbnRzIGFuZCBtZXRob2Rz
LCBidXQgaGF2ZW4ndCBob29rZWQgaXQgdXAgd2l0aCB0ZXh0dXJlIHVwbG9hZGluZyB5ZXQuICBB
bHNvLCBpbiBvcmRlciB0byBjaGVjayBpbiBjb25zdGFudHMuaHRtbCwgd2UgbmVlZCB0byByZW1v
dmUgb3V0LWRhdGVkIGNvbnN0YW50cywgYW5kIHVwZGF0ZSBhZmZlY3RlZCB0ZXN0cyBjb3JyZXNw
b25kaW5nbHkuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0
bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dCk6IE1vdmUgaW5pdCBjb2RlIHRvIGluaXRpYWxpemVOZXdDb250ZXh0LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0
ZXIpOiBJbXBsZW1lbnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkpOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDogQWRkIGEgbWVt
YmVyIHRvIHRyYWNrIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wgc2V0dGluZy4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsOiBVcGRhdGUg
Y29uc3RhbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6IFVwZGF0ZSBjb25zdGFudHMuCisKIDIwMTAtMTEtMTAgIE1hdHRoZXcgRGVsYW5leSAgPG1k
ZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDcxNzU5KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDYgQEAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbgogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
LCBtX3ZpZGVvQ2FjaGUoNCkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCi0gICAgLCBtX3N0
ZW5jaWxNYXNrKDB4RkZGRkZGRkYpCi0gICAgLCBtX3N0ZW5jaWxGdW5jUmVmKDApCi0gICAgLCBt
X3N0ZW5jaWxGdW5jTWFzaygweEZGRkZGRkZGKQogewogICAgIEFTU0VSVChtX2NvbnRleHQpOwog
ICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7CkBAIC0xMjIsMTEgKzExOSwxNSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5lCiAgICAgbV91bnBhY2tBbGlnbm1lbnQg
PSA0OwogICAgIG1fdW5wYWNrRmxpcFkgPSBmYWxzZTsKICAgICBtX3VucGFja1ByZW11bHRpcGx5
QWxwaGEgPSBmYWxzZTsKKyAgICBtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkJST1dTRVJfREVGQVVMVF9XRUJHTDsKICAgICBtX2JvdW5kQXJyYXlCdWZm
ZXIgPSAwOwogICAgIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIgPSAwOwogICAgIG1fY3VycmVu
dFByb2dyYW0gPSAwOwogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRl
cmJ1ZmZlckJpbmRpbmcgPSAwOworICAgIG1fc3RlbmNpbE1hc2sgPSAweEZGRkZGRkZGOworICAg
IG1fc3RlbmNpbEZ1bmNSZWYgPSAwOworICAgIG1fc3RlbmNpbEZ1bmNNYXNrID0gMHhGRkZGRkZG
RjsKICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLmNsZWFyKCk7CiAKICAgICBpbnQgbnVtQ29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA9IDA7CkBAIC0xNjMyLDYgKzE2MzMsOCBAQCBXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8obV91bnBhY2tGbGlwWSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX1BS
RU1VTFRJUExZX0FMUEhBX1dFQkdMOgogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKG1fdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNL
X0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
byhtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpWRU5ET1I6CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oIldlYmtpdCAoIiArIG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dDNEOjpWRU5ET1IpICsgIikiKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJTSU9OOgpAQCAtMjE0OCwyMSArMjE1MSwzMiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkoCiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMOgogICAgICAgICBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEgPSBwYXJhbTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDoK
KyAgICAgICAgaWYgKHBhcmFtID09IEdyYXBoaWNzQ29udGV4dDNEOjpCUk9XU0VSX0RFRkFVTFRf
V0VCR0wgfHwgcGFyYW0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUpCisgICAgICAgICAgICBt
X3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
cGFyYW0pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlBBQ0tfQUxJR05NRU5UOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFD
S19BTElHTk1FTlQ6Ci0gICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFt
KTsKICAgICAgICAgaWYgKHBhcmFtID09IDEgfHwgcGFyYW0gPT0gMiB8fCBwYXJhbSA9PSA0IHx8
IHBhcmFtID09IDgpIHsKICAgICAgICAgICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6UEFDS19BTElHTk1FTlQpCiAgICAgICAgICAgICAgICAgbV9wYWNrQWxpZ25tZW50ID0gc3Rh
dGljX2Nhc3Q8aW50PihwYXJhbSk7CiAgICAgICAgICAgICBlbHNlIC8vIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgogICAgICAgICAgICAgICAgIG1fdW5wYWNrQWxpZ25tZW50
ID0gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPnBpeGVs
U3RvcmVpKHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cG9seWdv
bk9mZnNldChkb3VibGUgZmFjdG9yLCBkb3VibGUgdW5pdHMpCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDcxNzU5KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIyLDYgKzQyMiw3IEBAIHB1YmxpYzoKICAgICBpbnQgbV91bnBhY2tBbGlnbm1lbnQ7CiAg
ICAgYm9vbCBtX3VucGFja0ZsaXBZOwogICAgIGJvb2wgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
OworICAgIHVuc2lnbmVkIGxvbmcgbV91bnBhY2tDb2xvcnNwYWNlQ29udmVyc2lvbjsKICAgICBi
b29sIG1fY29udGV4dExvc3Q7CiAKICAgICBsb25nIG1fc3RlbmNpbEJpdHM7CkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA3
MTc1OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgU1RFTkNJTF9CVUZGRVJfQklUICAgICAgICAgICAgID0gMHgwMDAw
MDQwMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTE9SX0JVRkZFUl9CSVQgICAgICAg
ICAgICAgICA9IDB4MDAwMDQwMDA7CiAKLSAgICAgICAgLyogQm9vbGVhbiAqLwotICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLSAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IFRSVUUgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDE7Ci0KICAgICAgICAgLyogQmVnaW5Nb2RlICovCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBQT0lOVFMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDA7CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBMSU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDE7CkBA
IC0yMzAsNyArMjI2LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxNDA0OwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgID0gMHgxNDA1Owog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHgxNDA2OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRklYRUQgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMHgxNDBDOwogCiAgICAgICAgIC8qIFBpeGVsRm9ybWF0ICovCiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBERVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgPSAw
eDE5MDI7CkBAIC0zOTgsMTAgKzM5Myw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IFNIQURFUl9TT1VSQ0VfTEVOR1RIICAgICAgICAgICA9IDB4OEI4ODsKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IFNIQURFUl9DT01QSUxFUiAgICAgICAgICAgICAgICA9
IDB4OERGQTsKIAotICAgICAgICAvKiBTaGFkZXIgQmluYXJ5ICovCi0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBTSEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICAgICAgPSAweDhERjg7Ci0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgPSAw
eDhERjk7Ci0KICAgICAgICAgLyogU2hhZGVyIFByZWNpc2lvbi1TcGVjaWZpZWQgVHlwZXMgKi8K
ICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IExPV19GTE9BVCAgICAgICAgICAgICAgICAgICAg
ICA9IDB4OERGMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IE1FRElVTV9GTE9BVCAgICAg
ICAgICAgICAgICAgICA9IDB4OERGMTsKQEAgLTQ1Nyw5ICs0NDgsMTEgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gID0gMHgwNTA2OwogCiAgICAgICAgIC8qIFdlYkdMLXNwZWNpZmljIGVudW1zICovCi0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgPSAw
eDkyNDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQ
SEFfV0VCR0wgPSAweDkyNDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT05URVhUX0xP
U1RfV0VCR0wgICAgICAgICAgICAgPSAweDkyNDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBVTlBBQ0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgID0gMHg5MjQwOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMICAgICA9IDB4
OTI0MTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTlRFWFRfTE9TVF9XRUJHTCAgICAg
ICAgICAgICAgICAgPSAweDkyNDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBVTlBBQ0tf
Q09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMID0gMHg5MjQzOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA9IDB4OTI0NDsKIAog
ICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShp
biB1bnNpZ25lZCBsb25nIHRleHR1cmUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkICAgICAgICAgYXR0YWNoU2hhZGVyKGluIFdlYkdMUHJv
Z3JhbSBwcm9ncmFtLCBpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01FeGNlcHRpb24p
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAkocmV2aXNpb24gNzE3NTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw2ICs0MDQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIFVOUEFDS19GTElQX1lfV0VCR0wgPSAweDkyNDAsCiAgICAgICAgIFVOUEFDS19QUkVN
VUxUSVBMWV9BTFBIQV9XRUJHTCA9IDB4OTI0MSwKICAgICAgICAgQ09OVEVYVF9MT1NUX1dFQkdM
ID0gMHg5MjQyLAorICAgICAgICBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMID0g
MHg5MjQzLAorICAgICAgICBCUk9XU0VSX0RFRkFVTFRfV0VCR0wgPSAweDkyNDQKICAgICB9Owog
CiAgICAgLy8gQ29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzE3NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMC0xMS0xMCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBVTlBB
Q0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE5NgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0
IHBhdGNoIGZvciB0aGlzIGJ1Zy4gIFdlIGFkZCBjb25zdGFudHMgYW5kIG1ldGhvZHMsIGJ1dCBo
YXZlbid0IGhvb2tlZCBpdCB1cCB3aXRoIHRleHR1cmUgdXBsb2FkaW5nIHlldC4gIEFsc28sIGlu
IG9yZGVyIHRvIGNoZWNrIGluIGNvbnN0YW50cy5odG1sLCB3ZSBuZWVkIHRvIHJlbW92ZSBvdXQt
ZGF0ZWQgY29uc3RhbnRzLCBhbmQgdXBkYXRlIGFmZmVjdGVkIHRlc3RzIGNvcnJlc3BvbmRpbmds
eS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWw6IFVwZGF0ZSBkdWUgdG8gcmVtb3ZhbCBvZiBU
UlVFL0ZBTFNFLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJl
bnQtcGl4ZWxzLWluaXRpYWxpemVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0aWFsaXplZC5odG1sOiBEaXR0
by4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVjaWZpYy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbDogQWRk
IHRlc3QgY2FzZXMgZm9yIFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wuCisKIDIw
MTAtMTEtMTAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZDsgdGVzdCBleHBlY3RhdGlvbnMgYW5kIGJhc2VsaW5lcy4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Nv
bnN0YW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgdGhlIFdlYkdMIGNvbnRleHQgaGFzIGFsbCB0aGUgY29uc3RhbnRz
IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Q2FudmFzLmdldENvbnRleHQKK1BBU1MgQWxsIFdlYkdMIGNvbnN0YW50cyBmb3VuZCB0byBoYXZl
IGNvcnJlY3QgdmFsdWVzLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3Rh
bnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
c3RhbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OTMgQEAKKzxodG1sPgor
PGhlYWQ+Cis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMDkgSWxtYXJpIEhlaWtraW5lbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CistLT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25zdGFudHMgVGVzdDwvdGl0bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlk
PSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBXZWJHTCBj
b250ZXh0IGhhcyBhbGwgdGhlIGNvbnN0YW50cyBpbiB0aGUgc3BlY2lmaWNhdGlvbi4iKTsKKwor
dmFyIGNvbnN0YW50cyA9IHsKKyAgICAvKiBDbGVhckJ1ZmZlck1hc2sgKi8KK0RFUFRIX0JVRkZF
Ul9CSVQgICAgICAgICAgICAgICA6IDB4MDAwMDAxMDAsCitTVEVOQ0lMX0JVRkZFUl9CSVQgICAg
ICAgICAgICAgOiAweDAwMDAwNDAwLAorQ09MT1JfQlVGRkVSX0JJVCAgICAgICAgICAgICAgIDog
MHgwMDAwNDAwMCwKKyAgICAKKyAgICAvKiBCZWdpbk1vZGUgKi8KK1BPSU5UUyAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MDAwMCwKK0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDAwMSwKK0xJTkVfTE9PUCAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMiwKK0xJTkVf
U1RSSVAgICAgICAgICAgICAgICAgICAgICA6IDB4MDAwMywKK1RSSUFOR0xFUyAgICAgICAgICAg
ICAgICAgICAgICA6IDB4MDAwNCwKK1RSSUFOR0xFX1NUUklQICAgICAgICAgICAgICAgICA6IDB4
MDAwNSwKK1RSSUFOR0xFX0ZBTiAgICAgICAgICAgICAgICAgICA6IDB4MDAwNiwKKyAgICAKKyAg
ICAvKiBBbHBoYUZ1bmN0aW9uIChub3Qgc3VwcG9ydGVkIGluIEVTMjApICovCisgICAgLyogICAg
ICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAgIC8qICAgICAgRVFVQUwgKi8KKyAg
ICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JFQVRFUiAqLworICAgIC8qICAgICAg
Tk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLworICAgIC8qICAgICAgQUxXQVlTICov
CisgICAgCisgICAgLyogQmxlbmRpbmdGYWN0b3JEZXN0ICovCitaRVJPICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAwLAorT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMSwKK1NS
Q19DT0xPUiAgICAgICAgICAgICAgICAgICAgICA6IDB4MDMwMCwKK09ORV9NSU5VU19TUkNfQ09M
T1IgICAgICAgICAgICA6IDB4MDMwMSwKK1NSQ19BTFBIQSAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDMwMiwKK09ORV9NSU5VU19TUkNfQUxQSEEgICAgICAgICAgICA6IDB4MDMwMywKK0RTVF9B
TFBIQSAgICAgICAgICAgICAgICAgICAgICA6IDB4MDMwNCwKK09ORV9NSU5VU19EU1RfQUxQSEEg
ICAgICAgICAgICA6IDB4MDMwNSwKKyAgICAKKyAgICAvKiBCbGVuZGluZ0ZhY3RvclNyYyAqLwor
ICAgIC8qICAgICAgWkVSTyAqLworICAgIC8qICAgICAgT05FICovCitEU1RfQ09MT1IgICAgICAg
ICAgICAgICAgICAgICAgOiAweDAzMDYsCitPTkVfTUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAg
OiAweDAzMDcsCitTUkNfQUxQSEFfU0FUVVJBVEUgICAgICAgICAgICAgOiAweDAzMDgsCisgICAg
LyogICAgICBTUkNfQUxQSEEgKi8KKyAgICAvKiAgICAgIE9ORV9NSU5VU19TUkNfQUxQSEEgKi8K
KyAgICAvKiAgICAgIERTVF9BTFBIQSAqLworICAgIC8qICAgICAgT05FX01JTlVTX0RTVF9BTFBI
QSAqLworICAgIAorICAgIC8qIEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAqLworRlVOQ19BREQgICAg
ICAgICAgICAgICAgICAgICAgIDogMHg4MDA2LAorQkxFTkRfRVFVQVRJT04gICAgICAgICAgICAg
ICAgIDogMHg4MDA5LAorQkxFTkRfRVFVQVRJT05fUkdCICAgICAgICAgICAgIDogMHg4MDA5LCAg
IC8qIHNhbWUgYXMgQkxFTkRfRVFVQVRJT04gKi8KK0JMRU5EX0VRVUFUSU9OX0FMUEhBICAgICAg
ICAgICA6IDB4ODgzRCwKKyAgICAKKyAgICAvKiBCbGVuZFN1YnRyYWN0ICovCitGVU5DX1NVQlRS
QUNUICAgICAgICAgICAgICAgICAgOiAweDgwMEEsCitGVU5DX1JFVkVSU0VfU1VCVFJBQ1QgICAg
ICAgICAgOiAweDgwMEIsCisgICAgCisgICAgLyogU2VwYXJhdGUgQmxlbmQgRnVuY3Rpb25zICov
CitCTEVORF9EU1RfUkdCICAgICAgICAgICAgICAgICAgOiAweDgwQzgsCitCTEVORF9TUkNfUkdC
ICAgICAgICAgICAgICAgICAgOiAweDgwQzksCitCTEVORF9EU1RfQUxQSEEgICAgICAgICAgICAg
ICAgOiAweDgwQ0EsCitCTEVORF9TUkNfQUxQSEEgICAgICAgICAgICAgICAgOiAweDgwQ0IsCitD
T05TVEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgOiAweDgwMDEsCitPTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1IgICAgICAgOiAweDgwMDIsCitDT05TVEFOVF9BTFBIQSAgICAgICAgICAgICAgICAg
OiAweDgwMDMsCitPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgICAgICAgOiAweDgwMDQsCitCTEVO
RF9DT0xPUiAgICAgICAgICAgICAgICAgICAgOiAweDgwMDUsCisgICAgCisgICAgLyogQnVmZmVy
IE9iamVjdHMgKi8KK0FSUkFZX0JVRkZFUiAgICAgICAgICAgICAgICAgICA6IDB4ODg5MiwKK0VM
RU1FTlRfQVJSQVlfQlVGRkVSICAgICAgICAgICA6IDB4ODg5MywKK0FSUkFZX0JVRkZFUl9CSU5E
SU5HICAgICAgICAgICA6IDB4ODg5NCwKK0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgICA6
IDB4ODg5NSwKKyAgICAKK1NUUkVBTV9EUkFXICAgICAgICAgICAgICAgICAgICA6IDB4ODhFMCwK
K1NUQVRJQ19EUkFXICAgICAgICAgICAgICAgICAgICA6IDB4ODhFNCwKK0RZTkFNSUNfRFJBVyAg
ICAgICAgICAgICAgICAgICA6IDB4ODhFOCwKKyAgICAKK0JVRkZFUl9TSVpFICAgICAgICAgICAg
ICAgICAgICA6IDB4ODc2NCwKK0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICA6IDB4ODc2
NSwKKyAgICAKK0NVUlJFTlRfVkVSVEVYX0FUVFJJQiAgICAgICAgICA6IDB4ODYyNiwKKyAgICAK
KyAgICAvKiBDdWxsRmFjZU1vZGUgKi8KK0ZST05UICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDQwNCwKK0JBQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDQwNSwKK0ZST05U
X0FORF9CQUNLICAgICAgICAgICAgICAgICA6IDB4MDQwOCwKKyAgICAKKyAgICAvKiBEZXB0aEZ1
bmN0aW9uICovCisgICAgLyogICAgICBORVZFUiAqLworICAgIC8qICAgICAgTEVTUyAqLworICAg
IC8qICAgICAgRVFVQUwgKi8KKyAgICAvKiAgICAgIExFUVVBTCAqLworICAgIC8qICAgICAgR1JF
QVRFUiAqLworICAgIC8qICAgICAgTk9URVFVQUwgKi8KKyAgICAvKiAgICAgIEdFUVVBTCAqLwor
ICAgIC8qICAgICAgQUxXQVlTICovCisgICAgCisgICAgLyogRW5hYmxlQ2FwICovCisgICAgLyog
VEVYVFVSRV8yRCAqLworQ1VMTF9GQUNFICAgICAgICAgICAgICAgICAgICAgIDogMHgwQjQ0LAor
QkxFTkQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkUyLAorRElUSEVSICAgICAgICAg
ICAgICAgICAgICAgICAgIDogMHgwQkQwLAorU1RFTkNJTF9URVNUICAgICAgICAgICAgICAgICAg
IDogMHgwQjkwLAorREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAgIDogMHgwQjcxLAorU0NJ
U1NPUl9URVNUICAgICAgICAgICAgICAgICAgIDogMHgwQzExLAorUE9MWUdPTl9PRkZTRVRfRklM
TCAgICAgICAgICAgIDogMHg4MDM3LAorU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFICAgICAgIDog
MHg4MDlFLAorU0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgIDogMHg4MEEwLAorICAgIAor
ICAgIC8qIEVycm9yQ29kZSAqLworTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgIDogMCwK
K0lOVkFMSURfRU5VTSAgICAgICAgICAgICAgICAgICA6IDB4MDUwMCwKK0lOVkFMSURfVkFMVUUg
ICAgICAgICAgICAgICAgICA6IDB4MDUwMSwKK0lOVkFMSURfT1BFUkFUSU9OICAgICAgICAgICAg
ICA6IDB4MDUwMiwKK09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICAgICA6IDB4MDUwNSwKKyAg
ICAKKyAgICAvKiBGcm9udEZhY2VEaXJlY3Rpb24gKi8KK0NXICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IDB4MDkwMCwKK0NDVyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDkw
MSwKKyAgICAKKyAgICAvKiBHZXRQTmFtZSAqLworTElORV9XSURUSCAgICAgICAgICAgICAgICAg
ICAgIDogMHgwQjIxLAorQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFICAgICAgIDogMHg4NDZELAor
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFICAgICAgIDogMHg4NDZFLAorQ1VMTF9GQUNFX01PREUg
ICAgICAgICAgICAgICAgIDogMHgwQjQ1LAorRlJPTlRfRkFDRSAgICAgICAgICAgICAgICAgICAg
IDogMHgwQjQ2LAorREVQVEhfUkFOR0UgICAgICAgICAgICAgICAgICAgIDogMHgwQjcwLAorREVQ
VEhfV1JJVEVNQVNLICAgICAgICAgICAgICAgIDogMHgwQjcyLAorREVQVEhfQ0xFQVJfVkFMVUUg
ICAgICAgICAgICAgIDogMHgwQjczLAorREVQVEhfRlVOQyAgICAgICAgICAgICAgICAgICAgIDog
MHgwQjc0LAorU1RFTkNJTF9DTEVBUl9WQUxVRSAgICAgICAgICAgIDogMHgwQjkxLAorU1RFTkNJ
TF9GVU5DICAgICAgICAgICAgICAgICAgIDogMHgwQjkyLAorU1RFTkNJTF9GQUlMICAgICAgICAg
ICAgICAgICAgIDogMHgwQjk0LAorU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwgICAgICAgIDogMHgw
Qjk1LAorU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgIDogMHgwQjk2LAorU1RFTkNJTF9S
RUYgICAgICAgICAgICAgICAgICAgIDogMHgwQjk3LAorU1RFTkNJTF9WQUxVRV9NQVNLICAgICAg
ICAgICAgIDogMHgwQjkzLAorU1RFTkNJTF9XUklURU1BU0sgICAgICAgICAgICAgIDogMHgwQjk4
LAorU1RFTkNJTF9CQUNLX0ZVTkMgICAgICAgICAgICAgIDogMHg4ODAwLAorU1RFTkNJTF9CQUNL
X0ZBSUwgICAgICAgICAgICAgIDogMHg4ODAxLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJ
TCAgIDogMHg4ODAyLAorU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyAgIDogMHg4ODAzLAor
U1RFTkNJTF9CQUNLX1JFRiAgICAgICAgICAgICAgIDogMHg4Q0EzLAorU1RFTkNJTF9CQUNLX1ZB
TFVFX01BU0sgICAgICAgIDogMHg4Q0E0LAorU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAgICAg
IDogMHg4Q0E1LAorVklFV1BPUlQgICAgICAgICAgICAgICAgICAgICAgIDogMHgwQkEyLAorU0NJ
U1NPUl9CT1ggICAgICAgICAgICAgICAgICAgIDogMHgwQzEwLAorICAgIC8qICAgICAgU0NJU1NP
Ul9URVNUICovCitDT0xPUl9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgOiAweDBDMjIsCitDT0xP
Ul9XUklURU1BU0sgICAgICAgICAgICAgICAgOiAweDBDMjMsCitVTlBBQ0tfQUxJR05NRU5UICAg
ICAgICAgICAgICAgOiAweDBDRjUsCitQQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgOiAw
eDBEMDUsCitNQVhfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgOiAweDBEMzMsCitNQVhfVklF
V1BPUlRfRElNUyAgICAgICAgICAgICAgOiAweDBEM0EsCitTVUJQSVhFTF9CSVRTICAgICAgICAg
ICAgICAgICAgOiAweDBENTAsCitSRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgOiAweDBE
NTIsCitHUkVFTl9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBENTMsCitCTFVFX0JJVFMg
ICAgICAgICAgICAgICAgICAgICAgOiAweDBENTQsCitBTFBIQV9CSVRTICAgICAgICAgICAgICAg
ICAgICAgOiAweDBENTUsCitERVBUSF9CSVRTICAgICAgICAgICAgICAgICAgICAgOiAweDBENTYs
CitTVEVOQ0lMX0JJVFMgICAgICAgICAgICAgICAgICAgOiAweDBENTcsCitQT0xZR09OX09GRlNF
VF9VTklUUyAgICAgICAgICAgOiAweDJBMDAsCisgICAgLyogICAgICBQT0xZR09OX09GRlNFVF9G
SUxMICovCitQT0xZR09OX09GRlNFVF9GQUNUT1IgICAgICAgICAgOiAweDgwMzgsCitURVhUVVJF
X0JJTkRJTkdfMkQgICAgICAgICAgICAgOiAweDgwNjksCitTQU1QTEVfQlVGRkVSUyAgICAgICAg
ICAgICAgICAgOiAweDgwQTgsCitTQU1QTEVTICAgICAgICAgICAgICAgICAgICAgICAgOiAweDgw
QTksCitTQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAgICAgOiAweDgwQUEsCitTQU1QTEVfQ09W
RVJBR0VfSU5WRVJUICAgICAgICAgOiAweDgwQUIsCisgICAgCisgICAgLyogR2V0VGV4dHVyZVBh
cmFtZXRlciAqLworICAgIC8qICAgICAgVEVYVFVSRV9NQUdfRklMVEVSICovCisgICAgLyogICAg
ICBURVhUVVJFX01JTl9GSUxURVIgKi8KKyAgICAvKiAgICAgIFRFWFRVUkVfV1JBUF9TICovCisg
ICAgLyogICAgICBURVhUVVJFX1dSQVBfVCAqLworICAgIAorTlVNX0NPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTIDogMHg4NkEyLAorQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgICAgIDogMHg4
NkEzLAorICAgIAorICAgIC8qIEhpbnRNb2RlICovCitET05UX0NBUkUgICAgICAgICAgICAgICAg
ICAgICAgOiAweDExMDAsCitGQVNURVNUICAgICAgICAgICAgICAgICAgICAgICAgOiAweDExMDEs
CitOSUNFU1QgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDExMDIsCisgICAgCisgICAgLyog
SGludFRhcmdldCAqLworR0VORVJBVEVfTUlQTUFQX0hJTlQgICAgICAgICAgICA6IDB4ODE5MiwK
KyAgICAKKyAgICAvKiBEYXRhVHlwZSAqLworQllURSAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogMHgxNDAwLAorVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgIDogMHgxNDAxLAorU0hP
UlQgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDAyLAorVU5TSUdORURfU0hPUlQgICAg
ICAgICAgICAgICAgIDogMHgxNDAzLAorSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
MHgxNDA0LAorVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgIDogMHgxNDA1LAorRkxPQVQg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNDA2LAorICAgIAorICAgIC8qIFBpeGVsRm9y
bWF0ICovCitERVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgOiAweDE5MDIsCitBTFBIQSAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDYsCitSR0IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDE5MDcsCitSR0JBICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDE5
MDgsCitMVU1JTkFOQ0UgICAgICAgICAgICAgICAgICAgICAgOiAweDE5MDksCitMVU1JTkFOQ0Vf
QUxQSEEgICAgICAgICAgICAgICAgOiAweDE5MEEsCisgICAgCisgICAgLyogUGl4ZWxUeXBlICov
CisgICAgLyogICAgICBVTlNJR05FRF9CWVRFICovCitVTlNJR05FRF9TSE9SVF80XzRfNF80ICAg
ICAgICAgOiAweDgwMzMsCitVTlNJR05FRF9TSE9SVF81XzVfNV8xICAgICAgICAgOiAweDgwMzQs
CitVTlNJR05FRF9TSE9SVF81XzZfNSAgICAgICAgICAgOiAweDgzNjMsCisgICAgCisgICAgLyog
U2hhZGVycyAqLworRlJBR01FTlRfU0hBREVSICAgICAgICAgICAgICAgICAgOiAweDhCMzAsCitW
RVJURVhfU0hBREVSICAgICAgICAgICAgICAgICAgICA6IDB4OEIzMSwKK01BWF9WRVJURVhfQVRU
UklCUyAgICAgICAgICAgICAgIDogMHg4ODY5LAorTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMg
ICAgICAgOiAweDhERkIsCitNQVhfVkFSWUlOR19WRUNUT1JTICAgICAgICAgICAgICA6IDB4OERG
QywKK01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTIDogMHg4QjRELAorTUFYX1ZFUlRF
WF9URVhUVVJFX0lNQUdFX1VOSVRTICAgOiAweDhCNEMsCitNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UyAgICAgICAgICA6IDB4ODg3MiwKK01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgICAgIDog
MHg4REZELAorU0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgICAgOiAweDhCNEYsCitERUxF
VEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICA6IDB4OEI4MCwKK0xJTktfU1RBVFVTICAgICAg
ICAgICAgICAgICAgICAgIDogMHg4QjgyLAorVkFMSURBVEVfU1RBVFVTICAgICAgICAgICAgICAg
ICAgOiAweDhCODMsCitBVFRBQ0hFRF9TSEFERVJTICAgICAgICAgICAgICAgICA6IDB4OEI4NSwK
K0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICAgICAgIDogMHg4Qjg2LAorQUNUSVZFX1VOSUZP
Uk1fTUFYX0xFTkdUSCAgICAgICAgOiAweDhCODcsCitBQ1RJVkVfQVRUUklCVVRFUyAgICAgICAg
ICAgICAgICA6IDB4OEI4OSwKK0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCAgICAgIDogMHg4
QjhBLAorU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OICAgICAgICAgOiAweDhCOEMsCitDVVJSRU5U
X1BST0dSQU0gICAgICAgICAgICAgICAgICA6IDB4OEI4RCwKKyAgICAKKyAgICAvKiBTdGVuY2ls
RnVuY3Rpb24gKi8KK05FVkVSICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwMCwKK0xF
U1MgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwMSwKK0VRVUFMICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MDIwMiwKK0xFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MDIwMywKK0dSRUFURVIgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwNCwKK05PVEVR
VUFMICAgICAgICAgICAgICAgICAgICAgICA6IDB4MDIwNSwKK0dFUVVBTCAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDB4MDIwNiwKK0FMV0FZUyAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4
MDIwNywKKyAgICAKKyAgICAvKiBTdGVuY2lsT3AgKi8KKyAgICAvKiAgICAgIFpFUk8gKi8KK0tF
RVAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMCwKK1JFUExBQ0UgICAgICAgICAg
ICAgICAgICAgICAgICA6IDB4MUUwMSwKK0lOQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDB4MUUwMiwKK0RFQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MUUwMywKK0lOVkVS
VCAgICAgICAgICAgICAgICAgICAgICAgICA6IDB4MTUwQSwKK0lOQ1JfV1JBUCAgICAgICAgICAg
ICAgICAgICAgICA6IDB4ODUwNywKK0RFQ1JfV1JBUCAgICAgICAgICAgICAgICAgICAgICA6IDB4
ODUwOCwKKyAgICAKKyAgICAvKiBTdHJpbmdOYW1lICovCitWRU5ET1IgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDFGMDAsCitSRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgOiAweDFG
MDEsCitWRVJTSU9OICAgICAgICAgICAgICAgICAgICAgICAgOiAweDFGMDIsCitFWFRFTlNJT05T
ICAgICAgICAgICAgICAgICAgICAgOiAweDFGMDMsCisgICAgCisgICAgLyogVGV4dHVyZU1hZ0Zp
bHRlciAqLworTkVBUkVTVCAgICAgICAgICAgICAgICAgICAgICAgIDogMHgyNjAwLAorTElORUFS
ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHgyNjAxLAorICAgIAorICAgIC8qIFRleHR1cmVN
aW5GaWx0ZXIgKi8KKyAgICAvKiAgICAgIE5FQVJFU1QgKi8KKyAgICAvKiAgICAgIExJTkVBUiAq
LworTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCAgICAgICAgIDogMHgyNzAwLAorTElORUFSX01JUE1B
UF9ORUFSRVNUICAgICAgICAgIDogMHgyNzAxLAorTkVBUkVTVF9NSVBNQVBfTElORUFSICAgICAg
ICAgIDogMHgyNzAyLAorTElORUFSX01JUE1BUF9MSU5FQVIgICAgICAgICAgIDogMHgyNzAzLAor
ICAgIAorICAgIC8qIFRleHR1cmVQYXJhbWV0ZXJOYW1lICovCitURVhUVVJFX01BR19GSUxURVIg
ICAgICAgICAgICAgOiAweDI4MDAsCitURVhUVVJFX01JTl9GSUxURVIgICAgICAgICAgICAgOiAw
eDI4MDEsCitURVhUVVJFX1dSQVBfUyAgICAgICAgICAgICAgICAgOiAweDI4MDIsCitURVhUVVJF
X1dSQVBfVCAgICAgICAgICAgICAgICAgOiAweDI4MDMsCisgICAgCisgICAgLyogVGV4dHVyZVRh
cmdldCAqLworVEVYVFVSRV8yRCAgICAgICAgICAgICAgICAgICAgIDogMHgwREUxLAorVEVYVFVS
RSAgICAgICAgICAgICAgICAgICAgICAgIDogMHgxNzAyLAorICAgIAorVEVYVFVSRV9DVUJFX01B
UCAgICAgICAgICAgICAgIDogMHg4NTEzLAorVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQICAgICAg
IDogMHg4NTE0LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICAgIDogMHg4NTE1LAorVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YICAgIDogMHg4NTE2LAorVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZICAgIDogMHg4NTE3LAorVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZICAgIDog
MHg4NTE4LAorVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aICAgIDogMHg4NTE5LAorVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9aICAgIDogMHg4NTFBLAorTUFYX0NVQkVfTUFQX1RFWFRVUkVf
U0laRSAgICAgIDogMHg4NTFDLAorICAgIAorICAgIC8qIFRleHR1cmVVbml0ICovCitURVhUVVJF
MCAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzAsCitURVhUVVJFMSAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0QzEsCitURVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0
QzIsCitURVhUVVJFMyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzMsCitURVhUVVJFNCAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzQsCitURVhUVVJFNSAgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0QzUsCitURVhUVVJFNiAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzYs
CitURVhUVVJFNyAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0QzcsCitURVhUVVJFOCAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDg0QzgsCitURVhUVVJFOSAgICAgICAgICAgICAgICAgICAg
ICAgOiAweDg0QzksCitURVhUVVJFMTAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0EsCitU
RVhUVVJFMTEgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0IsCitURVhUVVJFMTIgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0Q0MsCitURVhUVVJFMTMgICAgICAgICAgICAgICAgICAgICAg
OiAweDg0Q0QsCitURVhUVVJFMTQgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0UsCitURVhU
VVJFMTUgICAgICAgICAgICAgICAgICAgICAgOiAweDg0Q0YsCitURVhUVVJFMTYgICAgICAgICAg
ICAgICAgICAgICAgOiAweDg0RDAsCitURVhUVVJFMTcgICAgICAgICAgICAgICAgICAgICAgOiAw
eDg0RDEsCitURVhUVVJFMTggICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDIsCitURVhUVVJF
MTkgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDMsCitURVhUVVJFMjAgICAgICAgICAgICAg
ICAgICAgICAgOiAweDg0RDQsCitURVhUVVJFMjEgICAgICAgICAgICAgICAgICAgICAgOiAweDg0
RDUsCitURVhUVVJFMjIgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDYsCitURVhUVVJFMjMg
ICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDcsCitURVhUVVJFMjQgICAgICAgICAgICAgICAg
ICAgICAgOiAweDg0RDgsCitURVhUVVJFMjUgICAgICAgICAgICAgICAgICAgICAgOiAweDg0RDks
CitURVhUVVJFMjYgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REEsCitURVhUVVJFMjcgICAg
ICAgICAgICAgICAgICAgICAgOiAweDg0REIsCitURVhUVVJFMjggICAgICAgICAgICAgICAgICAg
ICAgOiAweDg0REMsCitURVhUVVJFMjkgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REQsCitU
RVhUVVJFMzAgICAgICAgICAgICAgICAgICAgICAgOiAweDg0REUsCitURVhUVVJFMzEgICAgICAg
ICAgICAgICAgICAgICAgOiAweDg0REYsCitBQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAg
OiAweDg0RTAsCisgICAgCisgICAgLyogVGV4dHVyZVdyYXBNb2RlICovCitSRVBFQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAweDI5MDEsCitDTEFNUF9UT19FREdFICAgICAgICAgICAgICAg
ICAgOiAweDgxMkYsCitNSVJST1JFRF9SRVBFQVQgICAgICAgICAgICAgICAgOiAweDgzNzAsCisg
ICAgCisgICAgLyogVW5pZm9ybSBUeXBlcyAqLworRkxPQVRfVkVDMiAgICAgICAgICAgICAgICAg
ICAgIDogMHg4QjUwLAorRkxPQVRfVkVDMyAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUxLAor
RkxPQVRfVkVDNCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjUyLAorSU5UX1ZFQzIgICAgICAg
ICAgICAgICAgICAgICAgIDogMHg4QjUzLAorSU5UX1ZFQzMgICAgICAgICAgICAgICAgICAgICAg
IDogMHg4QjU0LAorSU5UX1ZFQzQgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU1LAorQk9P
TCAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU2LAorQk9PTF9WRUMyICAgICAgICAg
ICAgICAgICAgICAgIDogMHg4QjU3LAorQk9PTF9WRUMzICAgICAgICAgICAgICAgICAgICAgIDog
MHg4QjU4LAorQk9PTF9WRUM0ICAgICAgICAgICAgICAgICAgICAgIDogMHg4QjU5LAorRkxPQVRf
TUFUMiAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVBLAorRkxPQVRfTUFUMyAgICAgICAgICAg
ICAgICAgICAgIDogMHg4QjVCLAorRkxPQVRfTUFUNCAgICAgICAgICAgICAgICAgICAgIDogMHg4
QjVDLAorU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgICAgIDogMHg4QjVFLAorU0FNUExFUl9D
VUJFICAgICAgICAgICAgICAgICAgIDogMHg4QjYwLAorICAgIAorICAgIC8qIFZlcnRleCBBcnJh
eXMgKi8KK1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCAgICAgICAgOiAweDg2MjIsCitWRVJU
RVhfQVRUUklCX0FSUkFZX1NJWkUgICAgICAgICAgIDogMHg4NjIzLAorVkVSVEVYX0FUVFJJQl9B
UlJBWV9TVFJJREUgICAgICAgICA6IDB4ODYyNCwKK1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAg
ICAgICAgICAgOiAweDg2MjUsCitWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQgICAgIDog
MHg4ODZBLAorVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSICAgICAgICA6IDB4ODY0NSwKK1ZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgOiAweDg4OUYsCisgICAgCisgICAgLyog
U2hhZGVyIFNvdXJjZSAqLworQ09NUElMRV9TVEFUVVMgICAgICAgICAgICAgICAgIDogMHg4Qjgx
LAorSU5GT19MT0dfTEVOR1RIICAgICAgICAgICAgICAgIDogMHg4Qjg0LAorU0hBREVSX1NPVVJD
RV9MRU5HVEggICAgICAgICAgIDogMHg4Qjg4LAorU0hBREVSX0NPTVBJTEVSICAgICAgICAgICAg
ICAgIDogMHg4REZBLAorICAgIAorICAgIC8qIFNoYWRlciBQcmVjaXNpb24tU3BlY2lmaWVkIFR5
cGVzICovCitMT1dfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgOiAweDhERjAsCitNRURJVU1f
RkxPQVQgICAgICAgICAgICAgICAgICAgOiAweDhERjEsCitISUdIX0ZMT0FUICAgICAgICAgICAg
ICAgICAgICAgOiAweDhERjIsCitMT1dfSU5UICAgICAgICAgICAgICAgICAgICAgICAgOiAweDhE
RjMsCitNRURJVU1fSU5UICAgICAgICAgICAgICAgICAgICAgOiAweDhERjQsCitISUdIX0lOVCAg
ICAgICAgICAgICAgICAgICAgICAgOiAweDhERjUsCisgICAgCisgICAgLyogRnJhbWVidWZmZXIg
T2JqZWN0LiAqLworRlJBTUVCVUZGRVIgICAgICAgICAgICAgICAgICAgIDogMHg4RDQwLAorUkVO
REVSQlVGRkVSICAgICAgICAgICAgICAgICAgIDogMHg4RDQxLAorICAgIAorUkdCQTQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogMHg4MDU2LAorUkdCNV9BMSAgICAgICAgICAgICAgICAgICAg
ICAgIDogMHg4MDU3LAorUkdCNTY1ICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg4RDYyLAor
REVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAgIDogMHg4MUE1LAorU1RFTkNJTF9JTkRFWCAg
ICAgICAgICAgICAgICAgIDogMHgxOTAxLAorU1RFTkNJTF9JTkRFWDggICAgICAgICAgICAgICAg
IDogMHg4RDQ4LAorREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgIDogMHg4NEY5LAorICAg
IAorUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgIDogMHg4RDQyLAorUkVOREVSQlVGRkVS
X0hFSUdIVCAgICAgICAgICAgIDogMHg4RDQzLAorUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1B
VCAgIDogMHg4RDQ0LAorUkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgIDogMHg4RDUwLAor
UkVOREVSQlVGRkVSX0dSRUVOX1NJWkUgICAgICAgIDogMHg4RDUxLAorUkVOREVSQlVGRkVSX0JM
VUVfU0laRSAgICAgICAgIDogMHg4RDUyLAorUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAgICAg
IDogMHg4RDUzLAorUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAgICAgIDogMHg4RDU0LAorUkVO
REVSQlVGRkVSX1NURU5DSUxfU0laRSAgICAgIDogMHg4RDU1LAorICAgIAorRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSAgICAgICAgICAgOiAweDhDRDAsCitGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9OQU1FICAgICAgICAgICA6IDB4OENEMSwKK0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfVEVYVFVSRV9MRVZFTCAgICAgICAgIDogMHg4Q0QyLAorRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UgOiAweDhDRDMsCisgICAgCitDT0xPUl9BVFRB
Q0hNRU5UMCAgICAgICAgICAgICAgOiAweDhDRTAsCitERVBUSF9BVFRBQ0hNRU5UICAgICAgICAg
ICAgICAgOiAweDhEMDAsCitTVEVOQ0lMX0FUVEFDSE1FTlQgICAgICAgICAgICAgOiAweDhEMjAs
CitERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgICAgICAgOiAweDgyMUEsCisgICAgCitOT05FICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAwLAorICAgIAorRlJBTUVCVUZGRVJfQ09NUExFVEUg
ICAgICAgICAgICAgICAgICAgICAgOiAweDhDRDUsCitGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQgICAgICAgICA6IDB4OENENiwKK0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lO
R19BVFRBQ0hNRU5UIDogMHg4Q0Q3LAorRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05T
ICAgICAgICAgOiAweDhDRDksCitGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCAgICAgICAgICAgICAg
ICAgICA6IDB4OENERCwKKyAgCitGUkFNRUJVRkZFUl9CSU5ESU5HICAgICAgICAgICAgOiAweDhD
QTYsCitSRU5ERVJCVUZGRVJfQklORElORyAgICAgICAgICAgOiAweDhDQTcsCitNQVhfUkVOREVS
QlVGRkVSX1NJWkUgICAgICAgICAgOiAweDg0RTgsCisgICAgCitJTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiAgOiAweDA1MDYsCisKKy8qIFdlYkdMLXNwZWNpZmljIGVudW1zICovCitVTlBB
Q0tfRkxJUF9ZX1dFQkdMICAgICAgICAgICAgICAgIDogMHg5MjQwLAorVU5QQUNLX1BSRU1VTFRJ
UExZX0FMUEhBX1dFQkdMICAgICA6IDB4OTI0MSwKK0NPTlRFWFRfTE9TVF9XRUJHTCAgICAgICAg
ICAgICAgICAgOiAweDkyNDIsCitVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIDog
MHg5MjQzLAorQlJPV1NFUl9ERUZBVUxUX1dFQkdMICAgICAgICAgICAgICA6IDB4OTI0NAorfTsK
KworZnVuY3Rpb24gYXNzZXJ0UHJvcGVydHkodiwgcCkgeworICBpZiAodltwXSA9PSBudWxsKSB7
CisgICAgdGVzdEZhaWxlZCgiUHJvcGVydHkgZG9lcyBub3QgZXhpc3Q6ICIgKyBwKQorICAgIHJl
dHVybiBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorCitmdW5j
dGlvbiBhc3NlcnRNc2dfKGJvb2wsIG1zZykgeworICBpZiAoIWJvb2wpIC8vIHNob3cgb25seSBm
YWlsdXJlcyB0byBhdm9pZCBzcGFtbWluZyByZXN1bHQgbGlzdAorICAgIGFzc2VydE1zZyhib29s
LCBtc2cpOworICByZXR1cm4gYm9vbDsKK30KKworZGVidWcoIiIpOworZGVidWcoIkNhbnZhcy5n
ZXRDb250ZXh0Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7Cit2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBwYXNzZWQgPSB0
cnVlOworZm9yICh2YXIgaSBpbiBjb25zdGFudHMpIHsKKyAgdmFyIHIgPSBhc3NlcnRQcm9wZXJ0
eShnbCwgaSkgJiYgYXNzZXJ0TXNnXyhnbFtpXSA9PSBjb25zdGFudHNbaV0sICJQcm9wZXJ0eSAi
K2krIiB2YWx1ZSB0ZXN0ICIrZ2xbaV0rIiA9PSAiK2NvbnN0YW50c1tpXSk7CisgIHBhc3NlZCA9
IHBhc3NlZCAmJiByOworfQoraWYgKHBhc3NlZCkgeworICB0ZXN0UGFzc2VkKCJBbGwgV2ViR0wg
Y29uc3RhbnRzIGZvdW5kIHRvIGhhdmUgY29ycmVjdCB2YWx1ZXMuIik7Cit9Cit2YXIgZXh0ZW5k
ZWQgPSBmYWxzZTsKK2ZvciAodmFyIGkgaW4gZ2wpIHsKKyAgaWYgKGkubWF0Y2goL15bXmEtel0v
KSAmJiBjb25zdGFudHNbaV0gPT0gbnVsbCkgeworICAgIGlmICghZXh0ZW5kZWQpIHsKKyAgICAg
IGV4dGVuZGVkID0gdHJ1ZTsKKyAgICAgIGRlYnVnKCJBbHNvIGZvdW5kIHRoZSBmb2xsb3dpbmcg
ZXh0cmEgY29uc3RhbnRzOiIpOworICAgIH0KKyAgICBkZWJ1ZyhpKTsKKyAgfQorfQorCitkZWJ1
ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTc1OSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDMwICs1LDMwIEBAIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogVGVzdGluZyB3aXRoIGFudGlhbGlh
cyBvbgogVGVzdGluZyBjb3B5VGV4SW1hZ2UyRAotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogUEFTUyBw
aXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBp
eGVsIGlzIGNvcnJlY3RDb2xvcgogVGVzdGluZyBjb3B5VGV4U3ViSW1hZ2UyRAotUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIHBpeGVsIGlzIGNv
cnJlY3RDb2xvcgogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29y
cmVjdENvbG9yCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogVGVzdGluZyB3aXRoIGFudGlh
bGlhcyBvZmYKIFRlc3RpbmcgY29weVRleEltYWdlMkQKLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFBB
U1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgogUEFT
UyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKIFRlc3RpbmcgY29weVRleFN1YkltYWdlMkQKLVBBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBwaXhlbCBp
cyBjb3JyZWN0Q29sb3IKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIHBpeGVsIGlz
IGNvcnJlY3RDb2xvcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29weS10
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbAko
cmV2aXNpb24gNzE3NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDE0ICsx
NywxMSBAQCB2b2lkIG1haW4oKQogPC9zY3JpcHQ+CiAKIDxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorI2lmZGVmIEdMX0VTCitwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyNlbmRpZgogdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotLy8gV29ya2Fyb3VuZCBm
b3Igbm9uLWNvbXBsaWFudCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgKEZJWE1FKQotI2lmIGRlZmlu
ZWQoR0xfRVMpCi12YXJ5aW5nIG1lZGl1bXAgdmVjMiB0ZXhDb29yZDsKLSNlbHNlCiB2YXJ5aW5n
IHZlYzIgdGV4Q29vcmQ7Ci0jZW5kaWYKLQogdm9pZCBtYWluKCkKIHsKICAgICBnbF9GcmFnQ29s
b3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7CkBAIC04Niw3ICs4Myw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RJdGVyYXRpb24oYW50aWFsaWFzKQogICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOwogICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNl
LCAwLCAwKTsKICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKLSAgICBnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDEsIDIsIGdsLkZMT0FULCBnbC5GQUxTRSwgMCwgdGV4Q29vcmRPZmZz
ZXQpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAw
LCB0ZXhDb29yZE9mZnNldCk7CiAKICAgICBnbC5jb2xvck1hc2soMSwgMSwgMSwgMCk7CiAgICAg
Z2wuZGlzYWJsZShnbC5CTEVORCk7CkBAIC0xMDQsOSArMTAxLDkgQEAgZnVuY3Rpb24gcnVuVGVz
dEl0ZXJhdGlvbihhbnRpYWxpYXMpCiAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwogICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKIAot
ICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAgICAgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMCwgMCwgMiwgMiwgMCk7Ci0gICAgc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKIAogICAgIC8vIEdyZWVuIGNhbnZhcwogICAgIGdsLmNsZWFyQ29sb3IoMCwgMSwg
MCwgMSk7CkBAIC0xMzgsOSArMTM1LDkgQEAgZnVuY3Rpb24gcnVuVGVzdEl0ZXJhdGlvbihhbnRp
YWxpYXMpCiAgICAgZ2wuY2xlYXJDb2xvcigwLCAxLCAwLCAxKTsKICAgICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CiAKLSAgICBzaG91bGRCZSgi
Z2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOwogICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIDAsIDAsIDIsIDIpOwotICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5P
X0VSUk9SIik7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAKICAgICAv
LyBCbHVlIGNhbnZhcwogICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0
aWFsaXplZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA3MTc1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMywxNSArMyw5IEBAIFRlc3RzIHRoZXJlIGlzIG5vIGdhcmJhZ2UgaW4gdHJh
bnNwYXJlbnQKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogQ2hlY2tpbmcgbG93ZXIgbGVm
dCBjb3JuZXIKLVBBU1MgYnVmW2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAmJiBidWZb
aWR4ICsgMl0gPT0gMCBpcyB0cnVlCi1QQVNTIGJ1ZltpZHhdID09IDAgJiYgYnVmW2lkeCArIDFd
ID09IDAgJiYgYnVmW2lkeCArIDJdID09IDAgaXMgdHJ1ZQotUEFTUyBidWZbaWR4XSA9PSAwICYm
IGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAyXSA9PSAwIGlzIHRydWUKLVBBU1MgYnVm
W2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAmJiBidWZbaWR4ICsgMl0gPT0gMCBpcyB0
cnVlCitQQVNTIHNob3VsZEJlIDI1NSwyNTUsMjU1CiBDaGVja2luZyB1cHBlciBsZWZ0IGNvcm5l
cgotUEFTUyBidWZbaWR4XSA9PSAwICYmIGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAy
XSA9PSAwIGlzIHRydWUKLVBBU1MgYnVmW2lkeF0gPT0gMCAmJiBidWZbaWR4ICsgMV0gPT0gMCAm
JiBidWZbaWR4ICsgMl0gPT0gMCBpcyB0cnVlCi1QQVNTIGJ1ZltpZHhdID09IDAgJiYgYnVmW2lk
eCArIDFdID09IDAgJiYgYnVmW2lkeCArIDJdID09IDAgaXMgdHJ1ZQotUEFTUyBidWZbaWR4XSA9
PSAwICYmIGJ1ZltpZHggKyAxXSA9PSAwICYmIGJ1ZltpZHggKyAyXSA9PSAwIGlzIHRydWUKK1BB
U1Mgc2hvdWxkQmUgMjU1LDI1NSwyNTUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4
dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1p
bml0aWFsaXplZC5odG1sCShyZXZpc2lvbiA3MTc1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsMzMgKzMsOSBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KLWF0dHJpYnV0ZSB2ZWMzIGdfUG9zaXRpb247Ci1h
dHRyaWJ1dGUgdmVjMiBnX1RleENvb3JkMDsKLQotdmFyeWluZyB2ZWMyIHRleENvb3JkOwotCi12
b2lkIG1haW4oKQotewotICAgIGdsX1Bvc2l0aW9uID0gdmVjNChnX1Bvc2l0aW9uLngsIGdfUG9z
aXRpb24ueSwgZ19Qb3NpdGlvbi56LCAxLjApOwotICAgIHRleENvb3JkID0gZ19UZXhDb29yZDA7
Ci19Ci08L3NjcmlwdD4KLQotPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+Ci0jaWZkZWYgR0xfRVMKLXByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSNlbmRpZgot
dW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotdmFyeWluZyB2ZWMyIHRleENvb3JkOwotCi12b2lkIG1h
aW4oKQotewotICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKTsKLX0K
LTwvc2NyaXB0PgotCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKIHZhciBnbCA9
IG51bGw7CiB2YXIgdGV4dHVyZUxvYyA9IG51bGw7CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
ZmFsc2U7CkBAIC00MiwxNyArMTgsMTUgQEAgZnVuY3Rpb24gaW5pdCgpCiAKICAgICBkZXNjcmlw
dGlvbignVGVzdHMgdGhlcmUgaXMgbm8gZ2FyYmFnZSBpbiB0cmFuc3BhcmVudCByZWdpb25zIG9m
IGltYWdlcyB1cGxvYWRlZCBhcyB0ZXh0dXJlcycpOwogCi0gICAgZ2wgPSBpbml0V2ViR0woImV4
YW1wbGUiLCAidnNoYWRlciIsICJmc2hhZGVyIiwgWyAiZ19Qb3NpdGlvbiIsICJnX1RleENvb3Jk
MCIgXSwgWyAwLCAwLCAwLCAxIF0sIDEpOworICAgIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworICAgIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHZhciBwcm9ncmFtID0gd3R1LnNl
dHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgICBnbC5jbGVhckNvbG9yKDAuNSwwLjUsMC41LDEpOwor
ICAgIGdsLmNsZWFyRGVwdGgoMSk7CiAKLSAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKGdsLnByb2dyYW0sICJ0ZXgiKTsKKyAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgiKTsKIAotICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9h
dDMyQXJyYXkoWwotICAgICAgICAgMS4wLCAgMS4wLCAwLjAsCi0gICAgICAgIC0xLjAsICAxLjAs
IDAuMCwKLSAgICAgICAgLTEuMCwgLTEuMCwgMC4wLAotICAgICAgICAgMS4wLCAgMS4wLCAwLjAs
Ci0gICAgICAgIC0xLjAsIC0xLjAsIDAuMCwKLSAgICAgICAgIDEuMCwgLTEuMCwgMC4wXSk7CiAg
ICAgLy8gVGhlIGlucHV0IHRleHR1cmUgaGFzIDggY2hhcmFjdGVyczsgdGFrZSB0aGUgbGVmdG1v
c3Qgb25lCiAgICAgdmFyIGNvZWZmID0gMS4wIC8gOC4wOwogICAgIHZhciB0ZXhDb29yZHMgPSBu
ZXcgRmxvYXQzMkFycmF5KFsKQEAgLTYyLDM4ICszNiwxNCBAQCBmdW5jdGlvbiBpbml0KCkKICAg
ICAgICAgY29lZmYsIDEuMCwKICAgICAgICAgMC4wLCAwLjAsCiAgICAgICAgIGNvZWZmLCAwLjBd
KTsKLSAgICB2YXIgdGV4Q29vcmRPZmZzZXQgPSB2ZXJ0aWNlcy5ieXRlTGVuZ3RoOwogCiAgICAg
dmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwogICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2Ym8pOwotICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLAotICAgICAg
ICAgICAgICAgICAgdGV4Q29vcmRPZmZzZXQgKyB0ZXhDb29yZHMuYnl0ZUxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKLSAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgMCwgdmVydGljZXMpOwotICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlf
QlVGRkVSLCB0ZXhDb29yZE9mZnNldCwgdGV4Q29vcmRzKTsKLQotICAgIGdsLmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KDApOwotICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdGV4
Q29vcmRzLCBnbC5TVEFUSUNfRFJBVyk7CiAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MSk7Ci0gICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZ2wuRkFMU0Us
IDAsIHRleENvb3JkT2Zmc2V0KTsKLQotICAgIHRleHR1cmUgPSBsb2FkVGV4dHVyZSgicmVzb3Vy
Y2VzL2J1Zy0zMjg4OC10ZXh0dXJlLnBuZyIpOwotfQorICAgIGdsLnZlcnRleEF0dHJpYlBvaW50
ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKIAotZnVuY3Rpb24gbG9hZFRleHR1cmUo
c3JjKSB7Ci0gICAgdmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwotICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5O
RUFSRVNUKTsKLSAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICBpbWFnZS5vbmxvYWQg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
dHVyZSk7Ci0gICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRy
dWUpOwotICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlKTsKLSAgICAgICAgcnVuVGVzdCgpOwotICAg
IH07Ci0gICAgaW1hZ2Uuc3JjID0gc3JjOwotICAgIHJldHVybiB0ZXh0dXJlOworICAgIHRleHR1
cmUgPSB3dHUubG9hZFRleHR1cmUoZ2wsICJyZXNvdXJjZXMvYnVnLTMyODg4LXRleHR1cmUucG5n
IiwgcnVuVGVzdCk7CiB9CiAKIC8vIFRoZXNlIHR3byBkZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBn
bG9iYWwgZm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0KQEAgLTEwMyw0MiArNTMsMjQgQEAgdmFy
IGlkeCA9IDA7CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgZ2wuZW5hYmxlKGdsLkJMRU5E
KTsKKyAgICBnbC5ibGVuZEZ1bmMoZ2wuU1JDX0FMUEhBLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhB
KTsKICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCiAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CiAgICAgLy8gUG9pbnQgdGhlIHVuaWZv
cm0gc2FtcGxlciB0byB0ZXh0dXJlIHVuaXQgMAogICAgIGdsLnVuaWZvcm0xaSh0ZXh0dXJlTG9j
LCAwKTsKICAgICAvLyBEcmF3IHRoZSB0cmlhbmdsZXMKLSAgICBnbC5kcmF3QXJyYXlzKGdsLlRS
SUFOR0xFUywgMCwgNik7CisgICAgd3R1LmRyYXdRdWFkKGdsLCBbMCwgMCwgMCwgMjU1XSk7CiAK
LSAgICAvLyBSZWFkIGJhY2sgdGhlIHJlbmRlcmluZyByZXN1bHRzCi0gICAgdmFyIHdpZHRoID0g
MzI7Ci0gICAgdmFyIGhlaWdodCA9IDMyOwotICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRo
ICogaGVpZ2h0ICogNCk7Ci0gICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgIC8vIFNwb3QgY2hlY2sgYSBjb3Vw
bGUgb2YgMngyIHJlZ2lvbnMgaW4gdGhlIHVwcGVyIGFuZCBsb3dlciBsZWZ0Ci0gICAgLy8gY29y
bmVyczsgdGhleSBzaG91bGQgYmUgdGhlIGJhY2tncm91bmQgY29sb3IgcmF0aGVyIHRoYW4KLSAg
ICAvLyBnYXJiYWdlCi0gICAgdmFyIHF1ZXJ5V2lkdGggPSAyOwotICAgIHZhciBxdWVyeUhlaWdo
dCA9IDI7CisgICAgLy8gY29ybmVyczsgdGhleSBzaG91bGQgYmUgdGhlIHJnYiB2YWx1ZXMgaW4g
dGhlIHRleHR1cmUuCisgICAgY29sb3IgPSBbMCwgMCwgMF07CiAgICAgZGVidWcoIkNoZWNraW5n
IGxvd2VyIGxlZnQgY29ybmVyIik7Ci0gICAgdmFyIHhvZmYgPSAxOwotICAgIHZhciB5b2ZmID0g
aGVpZ2h0IC0gMzsKLSAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHF1ZXJ5SGVpZ2h0OyB5KyspIHsK
LSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBxdWVyeVdpZHRoOyB4KyspIHsKLSAgICAgICAg
ICAgIGlkeCA9ICgoeW9mZiArIHkpICogd2lkdGggKiA0ICsKLSAgICAgICAgICAgICAgICAgICAo
eG9mZiArIHgpICogNCk7Ci0gICAgICAgICAgICBzaG91bGRCZSgiYnVmW2lkeF0gPT0gMCAmJiBi
dWZbaWR4ICsgMV0gPT0gMCAmJiBidWZbaWR4ICsgMl0gPT0gMCIsICJ0cnVlIik7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMSwgZ2wuY2FudmFzLmhlaWdo
dCAtIDMsIDIsIDIsIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIg
KyBjb2xvcik7CiAgICAgZGVidWcoIkNoZWNraW5nIHVwcGVyIGxlZnQgY29ybmVyIik7Ci0gICAg
eW9mZiA9IDE7Ci0gICAgZm9yICh2YXIgeSA9IDA7IHkgPCBxdWVyeUhlaWdodDsgeSsrKSB7Ci0g
ICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgcXVlcnlXaWR0aDsgeCsrKSB7Ci0gICAgICAgICAg
ICBpZHggPSAoKHlvZmYgKyB5KSAqIHdpZHRoICogNCArCi0gICAgICAgICAgICAgICAgICAgKHhv
ZmYgKyB4KSAqIDQpOwotICAgICAgICAgICAgc2hvdWxkQmUoImJ1ZltpZHhdID09IDAgJiYgYnVm
W2lkeCArIDFdID09IDAgJiYgYnVmW2lkeCArIDJdID09IDAiLCAidHJ1ZSIpOwotICAgICAgICB9
Ci0gICAgfQorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDEsIDEsIDIsIDIsIGNvbG9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZEJlICIgKyBjb2xvcik7CiAKICAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogICAgIHZhciBlcGlsb2d1ZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNjcmlwdCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
d2ViZ2wtc3BlY2lmaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzE3
NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVjaWZpYy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAgUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSQogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IElOVkFMSURfT1BFUkFUSU9OIDogYSBkaWZmZXJlbnQgbWFzayB2YWx1ZSBmb3IgZnJvbnQg
YW5kIGJhY2sgZmFjaW5nIGlzIGlsbGVnYWwKIFBBU1MgdW5kZWZpbmVkIGlzIHVuZGVmaW5lZC4K
IFBBU1MgdW5kZWZpbmVkIGlzIHVuZGVmaW5lZC4KK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlVO
UEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wpIGlzIGdsLkJST1dTRVJfREVGQVVMVF9X
RUJHTAorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lP
Tl9XRUJHTCkgaXMgZ2wuTk9ORQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogc2V0L2dldCBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMIHNob3Vs
ZCBnZW5lcmF0ZSBubyBlcnJvcgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1z
cGVjaWZpYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3dlYmdsLXNwZWNpZmljLmh0bWwJKHJldmlzaW9uIDcxNzU5KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDYgKzEwMSwxMiBAQCBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OCiBz
aG91bGRCZVVuZGVmaW5lZChnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCk7CiBz
aG91bGRCZVVuZGVmaW5lZChnbC5JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUpOwogCitz
aG91bGRCZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05f
V0VCR0wpIiwgImdsLkJST1dTRVJfREVGQVVMVF9XRUJHTCIpOworZ2wucGl4ZWxTdG9yZWkoZ2wu
VU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7CitzaG91bGRCZSgi
Z2wuZ2V0UGFyYW1ldGVyKGdsLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wpIiwg
ImdsLk5PTkUiKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsCisgICAgInNldC9n
ZXQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCBzaG91bGQgZ2VuZXJhdGUgbm8g
ZXJyb3IiKTsKKwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogCg==
</data>
<flag name="review"
          id="64135"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="64136"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73679</attachid>
            <date>2010-11-11 16:30:05 -0800</date>
            <delta_ts>2010-11-15 10:57:36 -0800</delta_ts>
            <desc>patch: hook up UNPACK_COLORSPACE_CONVERSION setting to texture uploading.</desc>
            <filename>gamma.patch</filename>
            <type>text/plain</type>
            <size>30563</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTg2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTAtMTEtMTEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRJbXBsKTogQXBwbHkgVU5QQUNLX0NPTE9SU1BBQ0Vf
Q09OVkVSU0lPTiBzZXR0aW5ncyB0byBpbWFnZSB1cGxvYWRpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRJbXBsKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpJbWFnZVNvdXJjZSk6IEFkZCBpZ25vcmVDb2xvclNwYWNlIHBhcmFtZXRlci4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpJbWFnZVNvdXJjZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6SW1h
Z2VEZWNvZGVyUXQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3ND
b250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbWFnZURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OklDT0ltYWdl
RGVjb2Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpkZWNv
ZGVBdEluZGV4KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNv
ZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
TkdJbWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOiBJZ25vcmUgZ2FtbWEgc2V0dGlu
Z3MgaWYgaWdub3JlQ29sb3JTcGFjZSBpcyB0cnVlLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6IEFkZCBpZ25vcmVDb2xvclNwYWNl
IHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuaDoKKwogMjAxMC0xMS0xMCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDcxODYx
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDQzLDcgKzI0NDMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyREltCiB7CiAgICAgZWMgPSAwOwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwotICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmb3JtYXQsIHR5
cGUsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBkYXRhKSkgeworICAgIGlmICghbV9jb250ZXh0
LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBwcmVtdWx0aXBs
eUFscGhhLCBtX3VucGFja0NvbG9yc3BhY2VDb252ZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dDNE
OjpOT05FLCBkYXRhKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTI2MjksNyArMjYyOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJ
bWFnZTIKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEo
aW1hZ2UsIGZvcm1hdCwgdHlwZSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7Cisg
ICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwg
ZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIG1fdW5wYWNrQ29sb3JzcGFjZUNvbnZlcnNpb24gPT0g
R3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGRhdGEpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEx
ICs5NywxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxw
aGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3Jl
Q29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZ2V0SW1hZ2VEYXRhKGltYWdlLCBmb3JtYXQsIHR5cGUsIHByZW11
bHRpcGx5QWxwaGEsIGRhdGEpKQorICAgIGlmICghZ2V0SW1hZ2VEYXRhKGltYWdlLCBmb3JtYXQs
IHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUNvbG9yUHJvZmlsZSwgZGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZmxpcFkpIHsKICAgICAgICAgdW5zaWduZWQgbG9u
ZyBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVyQ29tcG9uZW50OwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNzE4NjEp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5MCwxMyArNDkwLDE0IEBAIHB1YmxpYzoKIAogICAgIC8vIEV4dHJhY3Rz
IHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gSW1hZ2UgaW50byB0aGUgcGFzc2VkIFZlY3RvciwK
ICAgICAvLyBwYWNraW5nIHRoZSBwaXhlbCBkYXRhIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9y
bWF0IGFuZCB0eXBlLAotICAgIC8vIGFuZCBvYmV5aW5nIHRoZSBmbGlwWSBhbmQgcHJlbXVsdGlw
bHlBbHBoYSBmbGFncy4gUmV0dXJucyB0cnVlCi0gICAgLy8gdXBvbiBzdWNjZXNzLgorICAgIC8v
IGFuZCBvYmV5aW5nIHRoZSBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgYW5kIGlnbm9yZUNvbG9y
UHJvZmlsZSBmbGFncy4KKyAgICAvLyBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLgogICAgIGJv
b2wgZXh0cmFjdEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlQ29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwogCiAgICAgLy8gRXh0cmFjdHMgdGhl
IGNvbnRlbnRzIG9mIHRoZSBnaXZlbiBJbWFnZURhdGEgaW50byB0aGUgcGFzc2VkIFZlY3RvciwK
QEAgLTgwNSwxMiArODA2LDE2IEBAIHB1YmxpYzoKICAgICAvLyBleHRyYWN0aW9uIHByb2Nlc3Mu
IFRoaXMgcHJlbXVsdGlwbGljYXRpb24gb2NjdXJzIGJlZm9yZQogICAgIC8vIGFueSBwYWNraW5n
IG9mIHBpeGVsIGRhdGEuCiAgICAgLy8KKyAgICAvLyBJZiBpZ25vcmVDb2xvclByb2ZpbGUgaXMg
dHJ1ZSwgZ2FtbWEgY29ycmVjdGlvbiBhbmQgSUNDIHByb2ZpbGUKKyAgICAvLyB3b24ndCBiZSBh
cHBsaWVkLgorICAgIC8vCiAgICAgLy8gTm8gdmVydGljYWwgZmxpcCBvZiB0aGUgaW1hZ2UgZGF0
YSBpcyBwZXJmb3JtZWQgYnkgdGhpcwogICAgIC8vIG1ldGhvZC4KICAgICBib29sIGdldEltYWdl
RGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpZ25vcmVDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpOwogCiAgICAgLy8gUG9zc2libGUgYWxwaGEgb3BlcmF0
aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9jY3VyIGR1cmluZwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkg
KzQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0OwogI2VuZGlmCiAKLUltYWdlU291
cmNlOjpJbWFnZVNvdXJjZShib29sIHByZW11bHRpcGx5QWxwaGEpCitJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSkK
ICAgICA6IG1fZGVjb2RlcigwKQogICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRpcGx5
QWxwaGEpCisgICAgLCBtX2lnbm9yZUNvbG9yUHJvZmlsZShpZ25vcmVDb2xvclByb2ZpbGUpCiB7
CiB9CiAKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIAogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRl
dGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8v
IG1hZGUuCiAgICAgaWYgKCFtX2RlY29kZXIpIHsKLSAgICAgICAgbV9kZWNvZGVyID0gc3RhdGlj
X2Nhc3Q8TmF0aXZlSW1hZ2VTb3VyY2VQdHI+KEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBt
X3ByZW11bHRpcGx5QWxwaGEpKTsKKyAgICAgICAgbV9kZWNvZGVyID0gc3RhdGljX2Nhc3Q8TmF0
aXZlSW1hZ2VTb3VyY2VQdHI+KEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX3ByZW11bHRp
cGx5QWxwaGEsIG1faWdub3JlQ29sb3JQcm9maWxlKSk7CiAjaWYgRU5BQkxFKElNQUdFX0RFQ09E
RVJfRE9XTl9TQU1QTElORykKICAgICAgICAgaWYgKG1fZGVjb2RlciAmJiBzX21heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSkKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0TWF4TnVtUGl4ZWxzKHNf
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgY29u
c3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBJbWFnZVNvdXJjZShib29sIHByZW11bHRpcGx5
QWxwaGEgPSB0cnVlKTsKKyAgICBJbWFnZVNvdXJjZShib29sIHByZW11bHRpcGx5QWxwaGEgPSB0
cnVlLCBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSA9IGZhbHNlKTsKICAgICB+SW1hZ2VTb3VyY2Uo
KTsKIAogICAgIC8vIFRlbGxzIHRoZSBJbWFnZVNvdXJjZSB0aGF0IHRoZSBJbWFnZSBubyBsb25n
ZXIgY2FyZXMgYWJvdXQgZGVjb2RlZCBmcmFtZQpAQCAtMTc4LDYgKzE3OCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2VTb3VyY2VQdHIgbV9kZWNvZGVyOwogICAgIGJvb2wg
bV9wcmVtdWx0aXBseUFscGhhOworICAgIGJvb2wgbV9pZ25vcmVDb2xvclByb2ZpbGU7CiAjaWYg
RU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICBzdGF0aWMgdW5zaWduZWQg
c19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkocmV2aXNp
b24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIG91dHB1dFZlY3RvcikKIHsKICAg
ICBpZiAoIWltYWdlKQpAQCAtOTgsNyArOTksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbWFnZURhdGEoSW1hCiAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBkZWNvZGVkSW1hZ2U7CiAgICAgaWYgKGltYWdlLT5kYXRhKCkpIHsKLSAgICAg
ICAgSW1hZ2VTb3VyY2UgZGVjb2RlcihmYWxzZSk7CisgICAgICAgIEltYWdlU291cmNlIGRlY29k
ZXIoZmFsc2UsIGlnbm9yZUNvbG9yUHJvZmlsZSk7CiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShp
bWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MywxMCArNjMsMTEgQEAgdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB9
CiAjZW5kaWYKIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
aWdub3JlQ29sb3JQcm9maWxlKQogICAgIDogbV9kZWNvZGVyKDApCiAgICAgLy8gRklYTUU6IG1f
cHJlbXVsdGlwbHlBbHBoYSBpcyBpZ25vcmVkIGluIGNnIGF0IHRoZSBtb21lbnQuCiAgICAgLCBt
X3ByZW11bHRpcGx5QWxwaGEocHJlbXVsdGlwbHlBbHBoYSkKKyAgICAsIG1faWdub3JlQ29sb3JQ
cm9maWxlKGlnbm9yZUNvbG9yUHJvZmlsZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCShyZXZpc2lv
biA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDYsOCArMTY0NiwxMCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGlnbm9yZUNvbG9yUHJvZmlsZSk7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFFQaXhtYXAqIG5hdGl2ZVBpeG1hcCA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAJKHJldmlzaW9uIDcxODYxKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDE3ICszNywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdl
RGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIHByZW11bHRpcGx5QWxwaGEpCitJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGln
bm9yZUdhbW1hKQogewogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgNCBieXRlcyB0byBmaWd1cmUg
b3V0IHdoYXQga2luZCBvZiBpbWFnZSB3ZSdyZSBkZWFsaW5nIHdpdGguCiAgICAgaWYgKGRhdGEu
c2l6ZSgpIDwgNCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbmV3IEltYWdlRGVj
b2RlclF0KHByZW11bHRpcGx5QWxwaGEpOworICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQo
cHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWEpOwogfQogCi1JbWFnZURlY29kZXJRdDo6SW1h
Z2VEZWNvZGVyUXQoYm9vbCBwcmVtdWx0aXBseUFscGhhKQotICAgIDogSW1hZ2VEZWNvZGVyKHBy
ZW11bHRpcGx5QWxwaGEpCitJbWFnZURlY29kZXJRdDo6SW1hZ2VEZWNvZGVyUXQoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hKQorICAgIDogSW1hZ2VEZWNvZGVyKHByZW11
bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1h
dGlvbk5vbmUpCiB7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
RGVjb2RlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5oCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJRdCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIKIHsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJRdChib29sIHByZW11bHRpcGx5
QWxwaGEpOworICAgIEltYWdlRGVjb2RlclF0KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
Z25vcmVHYW1tYSk7CiAgICAgfkltYWdlRGVjb2RlclF0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHQzRFNraWEuY3BwCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNvbG9y
UHJvZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4mIG91dHB1dFZlY3RvcikKIHsKICAgICBpZiAoIWltYWdlKQpAQCAtNTIsNyArNTMsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hCiAgICAgTmF0aXZlSW1h
Z2VTa2lhKiBza2lhSW1hZ2UgPSAwOwogICAgIEFscGhhT3AgbmVlZGVkQWxwaGFPcCA9IEFscGhh
RG9Ob3RoaW5nOwogICAgIGlmIChpbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIEltYWdlU291cmNl
IGRlY29kZXIoZmFsc2UpOworICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKGZhbHNlLCBpZ25v
cmVDb2xvclByb2ZpbGUpOwogICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwg
dHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJh
bWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJ
KHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB1bnNp
Z25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGEKICAgICByZXR1cm4gYnl0ZXNFeHRyYWN0ZWQ7
CiB9CiAKLUltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIHByZW11bHRpcGx5QWxwaGEpCitJbWFnZURlY29kZXIqIEltYWdlRGVj
b2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSkKIHsKICAgICAvLyBXZSBuZWVkIGF0IGxlYXN0
IDQgYnl0ZXMgdG8gZmlndXJlIG91dCB3aGF0IGtpbmQgb2YgaW1hZ2Ugd2UncmUgZGVhbGluZwog
ICAgIC8vIHdpdGguCkBAIC02NSwxNSArNjUsMTUgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29k
ZXI6OmNyZWF0ZShjb25zdAogCiAgICAgLy8gR0lGcyBiZWdpbiB3aXRoIEdJRjgoNyBvciA5KS4K
ICAgICBpZiAoc3RybmNtcChjb250ZW50cywgIkdJRjgiLCA0KSA9PSAwKQotICAgICAgICByZXR1
cm4gbmV3IEdJRkltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgcmV0dXJu
IG5ldyBHSUZJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlQ29sb3JQcm9maWxl
KTsKIAogICAgIC8vIFRlc3QgZm9yIFBORy4KICAgICBpZiAoIW1lbWNtcChjb250ZW50cywgIlx4
ODlceDUwXHg0RVx4NDciLCA0KSkKLSAgICAgICAgcmV0dXJuIG5ldyBQTkdJbWFnZURlY29kZXIo
cHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIHJldHVybiBuZXcgUE5HSW1hZ2VEZWNvZGVyKHBy
ZW11bHRpcGx5QWxwaGEsIGlnbm9yZUNvbG9yUHJvZmlsZSk7CiAKICAgICAvLyBKUEVHCiAgICAg
aWYgKCFtZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKSkKLSAgICAgICAgcmV0dXJu
IG5ldyBKUEVHSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOworICAgICAgICByZXR1cm4g
bmV3IEpQRUdJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlQ29sb3JQcm9maWxl
KTsKIAogI2lmIFVTRShXRUJQKQogICAgIGlmICghbWVtY21wKGNvbnRlbnRzLCAiUklGRiIsIDQp
KSB7CkBAIC04MywxOSArODMsMTkgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0
ZShjb25zdAogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb3B5RnJvbVNoYXJlZEJ1ZmZlciho
ZWFkZXIsIHdlYnBFeHRyYU1hcmtlciwgZGF0YSwgd2VicEV4dHJhTWFya2Vyb2Zmc2V0KTsKICAg
ICAgICAgaWYgKGxlbmd0aCA+PSB3ZWJwRXh0cmFNYXJrZXIpIHsKICAgICAgICAgICAgIGlmICgh
bWVtY21wKGhlYWRlciwgIldFQlBWUCIsIHdlYnBFeHRyYU1hcmtlcikpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXRUJQSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOworICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgV0VCUEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhLCBp
Z25vcmVDb2xvclByb2ZpbGUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKICAgICAvLyBC
TVAKICAgICBpZiAoc3RybmNtcChjb250ZW50cywgIkJNIiwgMikgPT0gMCkKLSAgICAgICAgcmV0
dXJuIG5ldyBCTVBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIHJldHVy
biBuZXcgQk1QSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUNvbG9yUHJvZmls
ZSk7CiAKICAgICAvLyBJQ09zIGFsd2F5cyBiZWdpbiB3aXRoIGEgMi1ieXRlIDAgZm9sbG93ZWQg
YnkgYSAyLWJ5dGUgMS4KICAgICAvLyBDVVJzIGJlZ2luIHdpdGggMi1ieXRlIDAgZm9sbG93ZWQg
YnkgMi1ieXRlIDIuCiAgICAgaWYgKCFtZW1jbXAoY29udGVudHMsICJceDAwXHgwMFx4MDFceDAw
IiwgNCkgfHwgIW1lbWNtcChjb250ZW50cywgIlx4MDBceDAwXHgwMlx4MDAiLCA0KSkKLSAgICAg
ICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAg
IHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUNvbG9y
UHJvZmlsZSk7CiAKICAgICAvLyBHaXZlIHVwLiBXZSBkb24ndCBrbm93IHdoYXQgdGhlIGhlY2sg
dGhpcyBpcy4KICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjMsOSArMjIzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBtX21heE51bVBpeGVs
cy4gKE5vdCBzdXBwb3J0ZWQgYnkgYWxsIGltYWdlIGRlY29kZXJzIHlldCkKICAgICBjbGFzcyBJ
bWFnZURlY29kZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
SW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgSW1hZ2VEZWNvZGVy
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVDb2xvclByb2ZpbGUpCiAgICAgICAg
ICAgICA6IG1fc2NhbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEo
cHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICAgICwgbV9pZ25vcmVDb2xvclByb2ZpbGUoaWdu
b3JlQ29sb3JQcm9maWxlKQogICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1fbWF4TnVtUGl4ZWxzKC0xKQogICAgICAgICAgICAgLCBtX2lzQWxsRGF0
YVJlY2VpdmVkKGZhbHNlKQpAQCAtMjM4LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYW4gSW1hZ2VEZWNvZGVyLiAg
UG9ydHMgdGhhdCBzdWJjbGFzcwogICAgICAgICAvLyBJbWFnZURlY29kZXIgY2FuIHByb3ZpZGUg
dGhlaXIgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgdG8gYXZvaWQKICAgICAgICAgLy8gbmVl
ZGluZyB0byB3cml0ZSBhIGRlZGljYXRlZCBzZXREYXRhKCkgaW1wbGVtZW50YXRpb24uCi0gICAg
ICAgIHN0YXRpYyBJbWFnZURlY29kZXIqIGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIHN0YXRpYyBJbWFnZURlY29kZXIqIGNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9v
bCBpZ25vcmVDb2xvclByb2ZpbGUpOwogCiAgICAgICAgIC8vIFRoZSB0aGUgZmlsZW5hbWUgZXh0
ZW5zaW9uIHVzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIGFuIHVuZGVjb2RlZCBpbWFnZQogICAgICAg
ICAvLyBvZiB0aGlzIHR5cGUuCkBAIC0zNTQsNiArMzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3Rvcjxp
bnQ+IG1fc2NhbGVkUm93czsKICAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CisgICAg
ICAgIGJvb2wgbV9pZ25vcmVDb2xvclByb2ZpbGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICAv
LyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRo
ICogaGVpZ2h0ICogNCIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNzE4NjEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGRv
bid0IHBhY2spLgogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZGaWxlSGVhZGVyID0gMTQ7CiAK
LUJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkK
LSAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKQorQk1QSW1hZ2VEZWNvZGVyOjpC
TVBJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUNvbG9yUHJv
ZmlsZSkKKyAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVDb2xvclBy
b2ZpbGUpCiAgICAgLCBtX2RlY29kZWRPZmZzZXQoMCkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCShy
ZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEJNUCBpbWFnZSBmb3Jt
YXQuCiAgICAgY2xhc3MgQk1QSW1hZ2VEZWNvZGVyIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAg
ICAgcHVibGljOgotICAgICAgICBCTVBJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhh
KTsKKyAgICAgICAgQk1QSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
Z25vcmVDb2xvclByb2ZpbGUpOwogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2
aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdJRkltYWdlRGVjb2Rl
cjo6R0lGSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKLSAgICA6IEltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhKQorR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSkKKyAgICA6IElt
YWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVDb2xvclByb2ZpbGUpCiAgICAgLCBt
X2FscmVhZHlTY2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50KHRydWUpCiAgICAgLCBtX3JlcGV0
aXRpb25Db3VudChjQW5pbWF0aW9uTG9vcE9uY2UpCiAgICAgLCBtX3JlYWRPZmZzZXQoMCkKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhl
IEdJRiBpbWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgR0lGSW1hZ2VEZWNvZGVyIDogcHVibGljIElt
YWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBHSUZJbWFnZURlY29kZXIoYm9vbCBw
cmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgR0lGSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBpZ25vcmVDb2xvclByb2ZpbGUpOwogICAgICAgICB2aXJ0dWFsIH5HSUZJ
bWFnZURlY29kZXIoKTsKIAogICAgICAgICBlbnVtIEdJRlF1ZXJ5IHsgR0lGRnVsbFF1ZXJ5LCBH
SUZTaXplUXVlcnksIEdJRkZyYW1lQ291bnRRdWVyeSB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCShy
ZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owog
c3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJFbnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29k
ZXI6OklDT0ltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEpCi0gICAgOiBJbWFnZURl
Y29kZXIocHJlbXVsdGlwbHlBbHBoYSkKK0lDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVy
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVDb2xvclByb2ZpbGUpCisgICAgOiBJ
bWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlQ29sb3JQcm9maWxlKQogICAgICwg
bV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBJQ09JbWFn
ZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZQogICAgIH0KIAogICAgIGlmICghbV9wbmdEZWNv
ZGVyc1tpbmRleF0pIHsKLSAgICAgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0uc2V0KG5ldyBQTkdJ
bWFnZURlY29kZXIobV9wcmVtdWx0aXBseUFscGhhKSk7CisgICAgICAgIG1fcG5nRGVjb2RlcnNb
aW5kZXhdLnNldChuZXcgUE5HSW1hZ2VEZWNvZGVyKG1fcHJlbXVsdGlwbHlBbHBoYSwgbV9pZ25v
cmVDb2xvclByb2ZpbGUpKTsKICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGlu
ZGV4KTsKICAgICB9CiAgICAgLy8gRmFpbCBpZiB0aGUgc2l6ZSB0aGUgUE5HSW1hZ2VEZWNvZGVy
IGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpemUKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCShyZXZp
c2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIElDTyBhbmQgQ1VSIGltYWdl
IGZvcm1hdHMuCiAgICAgY2xhc3MgSUNPSW1hZ2VEZWNvZGVyIDogcHVibGljIEltYWdlRGVjb2Rl
ciB7CiAgICAgcHVibGljOgotICAgICAgICBJQ09JbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBs
eUFscGhhKTsKKyAgICAgICAgSUNPSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBpZ25vcmVDb2xvclByb2ZpbGUpOwogICAgICAgICB2aXJ0dWFsIH5JQ09JbWFnZURlY29k
ZXIoKTsKIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJ
KHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTIsOCArMzkyLDggQEAg
dm9pZCB0ZXJtX3NvdXJjZShqX2RlY29tcHJlc3NfcHRyIGpkKQogICAgIHNyYy0+ZGVjb2Rlci0+
ZGVjb2RlcigpLT5qcGVnQ29tcGxldGUoKTsKIH0KIAotSlBFR0ltYWdlRGVjb2Rlcjo6SlBFR0lt
YWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEpCi0gICAgOiBJbWFnZURlY29kZXIocHJl
bXVsdGlwbHlBbHBoYSkKK0pQRUdJbWFnZURlY29kZXI6OkpQRUdJbWFnZURlY29kZXIoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUNvbG9yUHJvZmlsZSkKKyAgICA6IEltYWdlRGVj
b2RlcihwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVDb2xvclByb2ZpbGUpCiB7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMg
dGhlIEpQRUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJbWFnZURlY29kZXIgOiBwdWJs
aWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpQRUdJbWFnZURlY29kZXIo
Ym9vbCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgSlBFR0ltYWdlRGVjb2Rlcihib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlQ29sb3JQcm9maWxlKTsKICAgICAgICAgdmlydHVh
bCB+SlBFR0ltYWdlRGVjb2RlcigpOwogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw4
ICsxNjksOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY3VycmVudEJ1ZmZlclNpemU7CiB9
OwogCi1QTkdJbWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxw
aGEpCi0gICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSkKK1BOR0ltYWdlRGVjb2Rl
cjo6UE5HSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVDb2xv
clByb2ZpbGUpCisgICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlQ29s
b3JQcm9maWxlKQogICAgICwgbV9kb05vdGhpbmdPbkZhaWx1cmUoZmFsc2UpCiB7CiB9CkBAIC0y
OTYsNyArMjk2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAK
ICAgICAvLyBEZWFsIHdpdGggZ2FtbWEgYW5kIGtlZXAgaXQgdW5kZXIgb3VyIGNvbnRyb2wuCiAg
ICAgZG91YmxlIGdhbW1hOwotICAgIGlmIChwbmdfZ2V0X2dBTUEocG5nLCBpbmZvLCAmZ2FtbWEp
KSB7CisgICAgaWYgKCFtX2lnbm9yZUNvbG9yUHJvZmlsZSAmJiBwbmdfZ2V0X2dBTUEocG5nLCBp
bmZvLCAmZ2FtbWEpKSB7CiAgICAgICAgIGlmICgoZ2FtbWEgPD0gMC4wKSB8fCAoZ2FtbWEgPiBj
TWF4R2FtbWEpKSB7CiAgICAgICAgICAgICBnYW1tYSA9IGNJbnZlcnNlR2FtbWE7CiAgICAgICAg
ICAgICBwbmdfc2V0X2dBTUEocG5nLCBpbmZvLCBnYW1tYSk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAkocmV2
aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBQTkcgaW1hZ2UgZm9ybWF0
LgogICAgIGNsYXNzIFBOR0ltYWdlRGVjb2RlciA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7
CisgICAgICAgIFBOR0ltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdu
b3JlQ29sb3JQcm9maWxlKTsKICAgICAgICAgdmlydHVhbCB+UE5HSW1hZ2VEZWNvZGVyKCk7CiAK
ICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCShyZXZpc2lv
biA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoYm9vbCBw
cmVtdWx0aXBseUFscGhhKQotICAgIDogSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpCitX
RUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBpZ25vcmVDb2xvclByb2ZpbGUpCisgICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlB
bHBoYSwgaWdub3JlQ29sb3JQcm9maWxlKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgJKHJl
dmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQlBJbWFnZURlY29kZXIgOiBwdWJsaWMgSW1hZ2VEZWNv
ZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJQSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSk7CisgICAgV0VCUEltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdu
b3JlQ29sb3JQcm9maWxlKTsKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAgICAg
dmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAidnA4Ijsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gNzE4NjMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICAqIHNy
Yy9XZWJJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZURlY29kZXI6
OmluaXQpOiBBZGQgaWdub3JlQ29sb3JTcGFjZSBwYXJhbWV0ZXIuCisKIDIwMTAtMTEtMTEgIEhh
bnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
ZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVjb2Rlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3Bw
CShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VEZWNvZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIHZvaWQgV2ViSW1hZ2VEZWNv
ZGVyOjppbml0KFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5
cGVCTVA6Ci0gICAgICAgIG1fcHJpdmF0ZSA9IG5ldyBCTVBJbWFnZURlY29kZXIodHJ1ZSk7Cisg
ICAgICAgIG1fcHJpdmF0ZSA9IG5ldyBCTVBJbWFnZURlY29kZXIodHJ1ZSwgZmFsc2UpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFR5cGVJQ086Ci0gICAgICAgIG1fcHJpdmF0ZSA9IG5ldyBJ
Q09JbWFnZURlY29kZXIodHJ1ZSk7CisgICAgICAgIG1fcHJpdmF0ZSA9IG5ldyBJQ09JbWFnZURl
Y29kZXIodHJ1ZSwgZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MTg2MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEwLTExLTExICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTk2CisKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC10ZXhpbWFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UuaHRtbDogVGVzdGluZyB0aGF0IGlmIFVOUEFDS19DT0xPUlNQ
QUNFX0NPTlZFUlNJT04gaXMgTk9ORSwgZ2FtbWEgc2V0dGluZ3MgYXJlIG5vdCBhcHBsaWVkIHRv
IGltYWdlcy4KKwogMjAxMC0xMS0xMCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2dsLXRleGltYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC10ZXhpbWFnZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDcxODYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1h
Z2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxNCBAQCBQQVNTIFRo
ZXJlIHNob3VsZCBiZSAzMiB1bmlxdWUgdmFsdWVzIGluCiBQQVNTIFRoZXJlIHNob3VsZCBiZSAz
MiB1bmlxdWUgdmFsdWVzIGluIGNoYW5uZWwgMi4gRm91bmQgMzIKIFBBU1MgVGhlcmUgc2hvdWxk
IGJlIDIgdW5pcXVlIHZhbHVlcyBpbiBjaGFubmVsIDMuIEZvdW5kIDIKIAorQ2hlY2sgdGhhdCBn
YW1tYSBzZXR0aW5ncyBkb24ndCBlZmZlY3QgOGJpdCBwbmdzCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAu
CitQQVNTIHBpeGVscyBzaG91bGQgYmUgc2FtZSByZWdhcmRsZXNzIG9mIGdhbW1hIHNldHRpbmdz
LgorUEFTUyBwaXhlbHMgc2hvdWxkIGJlIHNhbWUgcmVnYXJkbGVzcyBvZiBnYW1tYSBzZXR0aW5n
cy4KK1BBU1MgcGl4ZWxzIHNob3VsZCBiZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgZ2FtbWEgc2V0dGlu
Z3MuCitQQVNTIHBpeGVscyBzaG91bGQgYmUgc2FtZSByZWdhcmRsZXNzIG9mIGdhbW1hIHNldHRp
bmdzLgorUEFTUyBwaXhlbHMgc2hvdWxkIGJlIHNhbWUgcmVnYXJkbGVzcyBvZiBnYW1tYSBzZXR0
aW5ncy4KKwogY2hlY2sgcGl4ZWxzIGFyZSBVTiBwcmUtbXVsdGlwbGllZAogUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9t
IHNldHVwLgogUEFTUyBIYWxmIHRoZSBwaXhlbHMgaW4gY2hhbm5lbCAwIHNob3VsZCBiZSA+PSAx
MjgsMTI4LDEyOC4gZm91bmQgNTAlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9nbC10ZXhpbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2dsLXRleGltYWdlLmh0bWwJKHJldmlzaW9uIDcxODYxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDEwICsxNjIsOSBAQCBmdW5jdGlvbiBydW5UZXN0cyhpbWdzKSB7CiAgICAgfQogICB9CiAKLS8v
IEZJWE1FKHptbyk6IGZpeCB0aGUgZ2FtbWEgY29ycmVjdGlvbiBhbmQgYWRkIGJhY2sgdGhlIGNv
bW1lbnRlZCBvdXQgdGVzdHMgYmVsb3cuCi0vKgogICBkZWJ1ZygiIik7CiAgIGRlYnVnKCJDaGVj
ayB0aGF0IGdhbW1hIHNldHRpbmdzIGRvbid0IGVmZmVjdCA4Yml0IHBuZ3MiKTsKKyAgZ2wucGl4
ZWxTdG9yZWkoZ2wuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZ2wuTk9ORSk7
CiAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCBnbC5SR0IsIGdsLlVO
U0lHTkVEX0JZVEUsCiAgICAgICAgICAgICAgICAgaW1nc1sncmVzb3VyY2VzL2dyYXktcmFtcC1k
ZWZhdWx0LWdhbW1hLnBuZyddKTsKICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwg
IlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4iKTsKQEAgLTE5Myw3ICsxOTIsNiBAQCBm
dW5jdGlvbiBydW5UZXN0cyhpbWdzKSB7CiAgICAgfQogICAgIGFzc2VydE1zZyhzYW1lLCAicGl4
ZWxzIHNob3VsZCBiZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgZ2FtbWEgc2V0dGluZ3MuIik7CiAgIH0K
LSovCiAKICAgZGVidWcoIiIpOwogICBkZWJ1ZygiY2hlY2sgcGl4ZWxzIGFyZSBVTiBwcmUtbXVs
dGlwbGllZCIpOwo=
</data>
<flag name="review"
          id="64159"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="64160"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73913</attachid>
            <date>2010-11-15 10:57:36 -0800</date>
            <delta_ts>2010-11-16 13:48:56 -0800</delta_ts>
            <desc>revised patch: fixed the parameter names and also in the comments.</desc>
            <filename>gamma.patch</filename>
            <type>text/plain</type>
            <size>31099</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTg2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTAtMTEtMTEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRJbXBsKTogQXBwbHkgVU5QQUNLX0NPTE9SU1BBQ0Vf
Q09OVkVSU0lPTiBzZXR0aW5ncyB0byBpbWFnZSB1cGxvYWRpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRJbXBsKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpJbWFnZVNvdXJjZSk6IEFkZCBpZ25vcmVHYW1tYUNvbG9yUHJvZmlsZSBwYXJh
bWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKTogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
UXQ6OkltYWdlRGVjb2RlclF0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VEZWNvZGVyUXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURl
Y29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VE
ZWNvZGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpJ
Q09JbWFnZURlY29kZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rl
cjo6ZGVjb2RlQXRJbmRleCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0lt
YWdlRGVjb2Rlcjo6SlBFR0ltYWdlRGVjb2Rlcik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKTogSWdub3JlIGdhbW1h
IHNldHRpbmdzIGlmIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIGlzIHRydWUuCisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKTogQWRk
IGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKwogMjAxMC0xMS0xMCAg
WmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQzLDcgKzI0NDMsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREltCiB7CiAgICAgZWMgPSAw
OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0
SW1hZ2VEYXRhKGltYWdlLCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBk
YXRhKSkgeworICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmb3Jt
YXQsIHR5cGUsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBtX3VucGFja0NvbG9yc3BhY2VDb252
ZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCBkYXRhKSkgewogICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2MjksNyArMjYyOSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQogICAgICAgICByZXR1cm47CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKCFt
X2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwgZmxpcFksIHBy
ZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7CisgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFn
ZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIG1fdW5w
YWNrQ29sb3JzcGFjZUNvbnZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGRhdGEp
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9u
IDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDExICs5NywxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpleHRyYWN0SW1hZ2VEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0YSkK
IHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFnZXRJ
bWFnZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSkpCisg
ICAgaWYgKCFnZXRJbWFnZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBo
YSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGZsaXBZKSB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY29tcG9uZW50c1Bl
clBpeGVsLCBieXRlc1BlckNvbXBvbmVudDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OTAsMTMgKzQ5MCwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRyYWN0cyB0aGUgY29udGVudHMg
b2YgdGhlIGdpdmVuIEltYWdlIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCiAgICAgLy8gcGFja2lu
ZyB0aGUgcGl4ZWwgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdCBhbmQgdHlwZSwK
LSAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5QWxwaGEgZmxhZ3Mu
IFJldHVybnMgdHJ1ZQotICAgIC8vIHVwb24gc3VjY2Vzcy4KKyAgICAvLyBhbmQgb2JleWluZyB0
aGUgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGFuZCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmls
ZQorICAgIC8vIGZsYWdzLiBSZXR1cm5zIHRydWUgdXBvbiBzdWNjZXNzLgogICAgIGJvb2wgZXh0
cmFjdEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CiAKICAgICAvLyBFeHRyYWN0cyB0
aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIEltYWdlRGF0YSBpbnRvIHRoZSBwYXNzZWQgVmVjdG9y
LApAQCAtODA1LDEyICs4MDYsMTYgQEAgcHVibGljOgogICAgIC8vIGV4dHJhY3Rpb24gcHJvY2Vz
cy4gVGhpcyBwcmVtdWx0aXBsaWNhdGlvbiBvY2N1cnMgYmVmb3JlCiAgICAgLy8gYW55IHBhY2tp
bmcgb2YgcGl4ZWwgZGF0YS4KICAgICAvLworICAgIC8vIElmIGlnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlIGlzIHRydWUsIGdhbW1hIGNvcnJlY3Rpb24gYW5kIElDQworICAgIC8vIHByb2ZpbGUg
d29uJ3QgYmUgYXBwbGllZC4KKyAgICAvLwogICAgIC8vIE5vIHZlcnRpY2FsIGZsaXAgb2YgdGhl
IGltYWdlIGRhdGEgaXMgcGVyZm9ybWVkIGJ5IHRoaXMKICAgICAvLyBtZXRob2QuCiAgICAgYm9v
bCBnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpOwogCiAgICAgLy8gUG9z
c2libGUgYWxwaGEgb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9jY3VyIGR1cmluZwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDcx
ODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDkgKzQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVuc2lnbmVk
IEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0Owog
I2VuZGlmCiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShib29sIHByZW11bHRpcGx5QWxwaGEp
CitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogICAgIDogbV9kZWNvZGVyKDApCiAgICAgLCBtX3By
ZW11bHRpcGx5QWxwaGEocHJlbXVsdGlwbHlBbHBoYSkKKyAgICAsIG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUoaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiB7CiB9CiAKQEAgLTc4LDcg
Kzc5LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIAogICAgIC8v
IElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1h
Z2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8vIG1hZGUuCiAgICAgaWYg
KCFtX2RlY29kZXIpIHsKLSAgICAgICAgbV9kZWNvZGVyID0gc3RhdGljX2Nhc3Q8TmF0aXZlSW1h
Z2VTb3VyY2VQdHI+KEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX3ByZW11bHRpcGx5QWxw
aGEpKTsKKyAgICAgICAgbV9kZWNvZGVyID0gc3RhdGljX2Nhc3Q8TmF0aXZlSW1hZ2VTb3VyY2VQ
dHI+KEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX3ByZW11bHRpcGx5QWxwaGEsIG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQogICAgICAgICBpZiAobV9kZWNvZGVyICYmIHNfbWF4UGl4ZWxzUGVyRGVjb2Rl
ZEltYWdlKQogICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRNYXhOdW1QaXhlbHMoc19tYXhQaXhl
bHNQZXJEZWNvZGVkSW1hZ2UpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBjb25zdCBpbnQg
Y0FuaW1hdGlvbk5vbmUgPSAtMjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgotICAgIEltYWdlU291cmNlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9
IHRydWUpOworICAgIEltYWdlU291cmNlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IHRydWUsIGJv
b2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmYWxzZSk7CiAgICAgfkltYWdlU291cmNl
KCk7CiAKICAgICAvLyBUZWxscyB0aGUgSW1hZ2VTb3VyY2UgdGhhdCB0aGUgSW1hZ2Ugbm8gbG9u
Z2VyIGNhcmVzIGFib3V0IGRlY29kZWQgZnJhbWUKQEAgLTE3OCw2ICsxNzgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlU291cmNlUHRyIG1fZGVjb2RlcjsKICAgICBib29s
IG1fcHJlbXVsdGlwbHlBbHBoYTsKKyAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGU7CiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICBzdGF0aWMg
dW5zaWduZWQgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2U7CiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0
cHV0VmVjdG9yKQogewogICAgIGlmICghaW1hZ2UpCkBAIC05OCw3ICs5OSw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICBDR0ltYWdlUmVmIGNnSW1hZ2U7
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRlY29kZWRJbWFnZTsKICAgICBpZiAoaW1hZ2Ut
PmRhdGEoKSkgewotICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKGZhbHNlKTsKKyAgICAgICAg
SW1hZ2VTb3VyY2UgZGVjb2RlcihmYWxzZSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwog
ICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHJl
dmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTAgKzYzLDExIEBAIHZvaWQgc2hhcmVkQnVm
ZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogfQogI2VuZGlmCiAKLUltYWdlU291cmNlOjpJbWFnZVNv
dXJjZShib29sIHByZW11bHRpcGx5QWxwaGEpCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogICAg
IDogbV9kZWNvZGVyKDApCiAgICAgLy8gRklYTUU6IG1fcHJlbXVsdGlwbHlBbHBoYSBpcyBpZ25v
cmVkIGluIGNnIGF0IHRoZSBtb21lbnQuCiAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEocHJlbXVs
dGlwbHlBbHBoYSkKKyAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoaWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAkocmV2aXNpb24gNzE4NjEp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDggKzE2NDYsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUVBpeG1hcCogbmF0aXZlUGl4bWFw
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAkocmV2aXNpb24gNzE4
NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKK0ltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiB7CiAgICAgLy8gV2UgbmVlZCBhdCBs
ZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3JlIGRlYWxp
bmcgd2l0aC4KICAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgcmV0
dXJuIG5ldyBJbWFnZURlY29kZXJRdChwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZSk7CiB9CiAKLUltYWdlRGVjb2RlclF0OjpJbWFnZURlY29kZXJRdChib29sIHBy
ZW11bHRpcGx5QWxwaGEpCi0gICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSkKK0lt
YWdlRGVjb2RlclF0OjpJbWFnZURlY29kZXJRdChib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCisgICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlw
bHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiAgICAgLCBtX3JlcGV0aXRpb25D
b3VudChjQW5pbWF0aW9uTm9uZSkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmgJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlclF0IDog
cHVibGljIEltYWdlRGVjb2RlcgogewogcHVibGljOgotICAgIEltYWdlRGVjb2RlclF0KGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSk7CisgICAgSW1hZ2VEZWNvZGVyUXQoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKICAgICB+SW1hZ2VEZWNvZGVy
UXQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAJKHJldmlzaW9uIDcxODYx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tp
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpCiB7
CiAgICAgaWYgKCFpbWFnZSkKQEAgLTUyLDcgKzUzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgIE5hdGl2ZUltYWdlU2tpYSogc2tpYUltYWdlID0gMDsK
ICAgICBBbHBoYU9wIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvTm90aGluZzsKICAgICBpZiAoaW1h
Z2UtPmRhdGEoKSkgewotICAgICAgICBJbWFnZVNvdXJjZSBkZWNvZGVyKGZhbHNlKTsKKyAgICAg
ICAgSW1hZ2VTb3VyY2UgZGVjb2RlcihmYWxzZSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUp
OwogICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcxODYx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNo
YXJlZEJ1ZmZlcihjaGEKICAgICByZXR1cm4gYnl0ZXNFeHRyYWN0ZWQ7CiB9CiAKLUltYWdlRGVj
b2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IHByZW11bHRpcGx5QWxwaGEpCitJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9y
ZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogewogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgNCBieXRl
cyB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBpbWFnZSB3ZSdyZSBkZWFsaW5nCiAgICAgLy8g
d2l0aC4KQEAgLTY1LDE1ICs2NSwxNSBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKGNvbnN0CiAKICAgICAvLyBHSUZzIGJlZ2luIHdpdGggR0lGOCg3IG9yIDkpLgogICAgIGlm
IChzdHJuY21wKGNvbnRlbnRzLCAiR0lGOCIsIDQpID09IDApCi0gICAgICAgIHJldHVybiBuZXcg
R0lGSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOworICAgICAgICByZXR1cm4gbmV3IEdJ
RkltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmls
ZSk7CiAKICAgICAvLyBUZXN0IGZvciBQTkcuCiAgICAgaWYgKCFtZW1jbXAoY29udGVudHMsICJc
eDg5XHg1MFx4NEVceDQ3IiwgNCkpCi0gICAgICAgIHJldHVybiBuZXcgUE5HSW1hZ2VEZWNvZGVy
KHByZW11bHRpcGx5QWxwaGEpOworICAgICAgICByZXR1cm4gbmV3IFBOR0ltYWdlRGVjb2Rlcihw
cmVtdWx0aXBseUFscGhhLCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk7CiAKICAgICAvLyBK
UEVHCiAgICAgaWYgKCFtZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKSkKLSAgICAg
ICAgcmV0dXJuIG5ldyBKUEVHSW1hZ2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEpOworICAgICAg
ICByZXR1cm4gbmV3IEpQRUdJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUpOwogCiAjaWYgVVNFKFdFQlApCiAgICAgaWYgKCFtZW1jbXAoY29u
dGVudHMsICJSSUZGIiwgNCkpIHsKQEAgLTgzLDE5ICs4MywxOSBAQCBJbWFnZURlY29kZXIqIElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvcHlG
cm9tU2hhcmVkQnVmZmVyKGhlYWRlciwgd2VicEV4dHJhTWFya2VyLCBkYXRhLCB3ZWJwRXh0cmFN
YXJrZXJvZmZzZXQpOwogICAgICAgICBpZiAobGVuZ3RoID49IHdlYnBFeHRyYU1hcmtlcikgewog
ICAgICAgICAgICAgaWYgKCFtZW1jbXAoaGVhZGVyLCAiV0VCUFZQIiwgd2VicEV4dHJhTWFya2Vy
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdFQlBJbWFnZURlY29kZXIocHJlbXVsdGlw
bHlBbHBoYSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXRUJQSW1hZ2VEZWNvZGVyKHBy
ZW11bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgogCiAgICAgLy8gQk1QCiAgICAgaWYgKHN0cm5jbXAoY29udGVudHMsICJC
TSIsIDIpID09IDApCi0gICAgICAgIHJldHVybiBuZXcgQk1QSW1hZ2VEZWNvZGVyKHByZW11bHRp
cGx5QWxwaGEpOworICAgICAgICByZXR1cm4gbmV3IEJNUEltYWdlRGVjb2RlcihwcmVtdWx0aXBs
eUFscGhhLCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk7CiAKICAgICAvLyBJQ09zIGFsd2F5
cyBiZWdpbiB3aXRoIGEgMi1ieXRlIDAgZm9sbG93ZWQgYnkgYSAyLWJ5dGUgMS4KICAgICAvLyBD
VVJzIGJlZ2luIHdpdGggMi1ieXRlIDAgZm9sbG93ZWQgYnkgMi1ieXRlIDIuCiAgICAgaWYgKCFt
ZW1jbXAoY29udGVudHMsICJceDAwXHgwMFx4MDFceDAwIiwgNCkgfHwgIW1lbWNtcChjb250ZW50
cywgIlx4MDBceDAwXHgwMlx4MDAiLCA0KSkKLSAgICAgICAgcmV0dXJuIG5ldyBJQ09JbWFnZURl
Y29kZXIocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIHJldHVybiBuZXcgSUNPSW1hZ2VEZWNv
ZGVyKHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKIAogICAg
IC8vIEdpdmUgdXAuIFdlIGRvbid0IGtub3cgd2hhdCB0aGUgaGVjayB0aGlzIGlzLgogICAgIHJl
dHVybiAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5ICsyMjMsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIG1fbWF4TnVtUGl4ZWxzLiAoTm90IHN1cHBvcnRl
ZCBieSBhbGwgaW1hZ2UgZGVjb2RlcnMgeWV0KQogICAgIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbWFnZURlY29kZXIoYm9v
bCBwcmVtdWx0aXBseUFscGhhKQorICAgICAgICBJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogICAgICAgICAgICAgOiBt
X3NjYWxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHByZW11bHRp
cGx5QWxwaGEpCisgICAgICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoaWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiAgICAgICAgICAgICAsIG1fc2l6ZUF2YWlsYWJsZShm
YWxzZSkKICAgICAgICAgICAgICwgbV9tYXhOdW1QaXhlbHMoLTEpCiAgICAgICAgICAgICAsIG1f
aXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCkBAIC0yMzgsNyArMjM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBJbWFnZURl
Y29kZXIuICBQb3J0cyB0aGF0IHN1YmNsYXNzCiAgICAgICAgIC8vIEltYWdlRGVjb2RlciBjYW4g
cHJvdmlkZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gb2YgdGhpcyB0byBhdm9pZAogICAgICAg
ICAvLyBuZWVkaW5nIHRvIHdyaXRlIGEgZGVkaWNhdGVkIHNldERhdGEoKSBpbXBsZW1lbnRhdGlv
bi4KLSAgICAgICAgc3RhdGljIEltYWdlRGVjb2RlciogY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgc3RhdGljIEltYWdlRGVj
b2RlciogY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKIAogICAgICAgICAvLyBUaGUg
dGhlIGZpbGVuYW1lIGV4dGVuc2lvbiB1c3VhbGx5IGFzc29jaWF0ZWQgd2l0aCBhbiB1bmRlY29k
ZWQgaW1hZ2UKICAgICAgICAgLy8gb2YgdGhpcyB0eXBlLgpAQCAtMzU0LDYgKzM1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwog
ICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CiAgICAgICAgIGJvb2wgbV9wcmVtdWx0
aXBseUFscGhhOworICAgICAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21lIGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6
ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVpZ2h0ICogNCIKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGRvbid0IHBhY2spLgogc3RhdGljIGNvbnN0IHNpemVfdCBz
aXplT2ZGaWxlSGVhZGVyID0gMTQ7CiAKLUJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVy
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKLSAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFs
cGhhKQorQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQorICAgIDogSW1hZ2VEZWNvZGVy
KHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogICAgICwgbV9k
ZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAkocmV2aXNpb24gNzE4NjEpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ly8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBCTVAgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEJN
UEltYWdlRGVjb2RlciA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQk1QSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIEJNUElt
YWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUpOwogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgogICAgICAgICB2aXJ0dWFsIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJibXAiOyB9CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdJRkltYWdlRGVjb2Rlcjo6R0lGSW1h
Z2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKLSAgICA6IEltYWdlRGVjb2RlcihwcmVt
dWx0aXBseUFscGhhKQorR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQorICAgIDogSW1h
Z2VEZWNvZGVyKHByZW11bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQog
ICAgICwgbV9hbHJlYWR5U2Nhbm5lZFRoaXNEYXRhRm9yRnJhbWVDb3VudCh0cnVlKQogICAgICwg
bV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbkxvb3BPbmNlKQogICAgICwgbV9yZWFkT2Zmc2V0
KDApCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuaAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNv
ZGVzIHRoZSBHSUYgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEdJRkltYWdlRGVjb2RlciA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgR0lGSW1hZ2VEZWNvZGVy
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIEdJRkltYWdlRGVjb2Rlcihib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwogICAgICAg
ICB2aXJ0dWFsIH5HSUZJbWFnZURlY29kZXIoKTsKIAogICAgICAgICBlbnVtIEdJRlF1ZXJ5IHsg
R0lGRnVsbFF1ZXJ5LCBHSUZTaXplUXVlcnksIEdJRkZyYW1lQ291bnRRdWVyeSB9OwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwCShyZXZpc2lvbiA3MTg2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDgg
KzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZE
aXJlY3RvcnkgPSA2Owogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJFbnRyeSA9IDE2Owog
Ci1JQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEp
Ci0gICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBoYSkKK0lDT0ltYWdlRGVjb2Rlcjo6
SUNPSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSkKKyAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhLCBpZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSkKICAgICAsIG1fZGVjb2RlZE9mZnNldCgwKQogewogfQpA
QCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNp
emUKICAgICB9CiAKICAgICBpZiAoIW1fcG5nRGVjb2RlcnNbaW5kZXhdKSB7Ci0gICAgICAgIG1f
cG5nRGVjb2RlcnNbaW5kZXhdLnNldChuZXcgUE5HSW1hZ2VEZWNvZGVyKG1fcHJlbXVsdGlwbHlB
bHBoYSkpOworICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS5zZXQobmV3IFBOR0ltYWdlRGVj
b2RlcihtX3ByZW11bHRpcGx5QWxwaGEsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpKTsK
ICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGluZGV4KTsKICAgICB9CiAgICAg
Ly8gRmFpbCBpZiB0aGUgc2l6ZSB0aGUgUE5HSW1hZ2VEZWNvZGVyIGNhbGN1bGF0ZWQgZG9lcyBu
b3QgbWF0Y2ggdGhlIHNpemUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiA3MTg2MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBU
aGlzIGNsYXNzIGRlY29kZXMgdGhlIElDTyBhbmQgQ1VSIGltYWdlIGZvcm1hdHMuCiAgICAgY2xh
c3MgSUNPSW1hZ2VEZWNvZGVyIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgot
ICAgICAgICBJQ09JbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAg
SUNPSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSk7CiAgICAgICAgIHZpcnR1YWwgfklDT0ltYWdlRGVjb2RlcigpOwogCiAg
ICAgICAgIC8vIEltYWdlRGVjb2RlcgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24g
NzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw4ICszOTIsOCBAQCB2b2lkIHRlcm1f
c291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpCiAgICAgc3JjLT5kZWNvZGVyLT5kZWNvZGVyKCkt
PmpwZWdDb21wbGV0ZSgpOwogfQogCi1KUEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVy
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKLSAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFs
cGhhKQorSlBFR0ltYWdlRGVjb2Rlcjo6SlBFR0ltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCisgICAgOiBJbWFnZURlY29k
ZXIocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiB7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRl
Y29kZXMgdGhlIEpQRUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJbWFnZURlY29kZXIg
OiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpQRUdJbWFnZURl
Y29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgSlBFR0ltYWdlRGVjb2Rlcihi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwog
ICAgICAgICB2aXJ0dWFsIH5KUEVHSW1hZ2VEZWNvZGVyKCk7CiAKICAgICAgICAgLy8gSW1hZ2VE
ZWNvZGVyCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY5LDggKzE2OSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50
QnVmZmVyU2l6ZTsKIH07CiAKLVBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSkKLSAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKQor
UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQorICAgIDogSW1hZ2VEZWNvZGVyKHByZW11
bHRpcGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQogICAgICwgbV9kb05vdGhp
bmdPbkZhaWx1cmUoZmFsc2UpCiB7CiB9CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAKICAgICAvLyBEZWFsIHdpdGggZ2FtbWEgYW5k
IGtlZXAgaXQgdW5kZXIgb3VyIGNvbnRyb2wuCiAgICAgZG91YmxlIGdhbW1hOwotICAgIGlmIChw
bmdfZ2V0X2dBTUEocG5nLCBpbmZvLCAmZ2FtbWEpKSB7CisgICAgaWYgKCFtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlICYmIHBuZ19nZXRfZ0FNQShwbmcsIGluZm8sICZnYW1tYSkpIHsKICAg
ICAgICAgaWYgKChnYW1tYSA8PSAwLjApIHx8IChnYW1tYSA+IGNNYXhHYW1tYSkpIHsKICAgICAg
ICAgICAgIGdhbW1hID0gY0ludmVyc2VHYW1tYTsKICAgICAgICAgICAgIHBuZ19zZXRfZ0FNQShw
bmcsIGluZm8sIGdhbW1hKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiA3MTg2MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBU
aGlzIGNsYXNzIGRlY29kZXMgdGhlIFBORyBpbWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgUE5HSW1h
Z2VEZWNvZGVyIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBQ
TkdJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKKyAgICAgICAgUE5HSW1hZ2VE
ZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSk7CiAgICAgICAgIHZpcnR1YWwgflBOR0ltYWdlRGVjb2RlcigpOwogCiAgICAgICAgIC8v
IEltYWdlRGVjb2RlcgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNzE4NjEpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1XRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkKLSAgICA6IEltYWdlRGVjb2RlcihwcmVtdWx0aXBseUFscGhhKQorV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2Rlcihib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGUpCisgICAgOiBJbWFnZURlY29kZXIocHJlbXVsdGlwbHlBbHBo
YSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aAkocmV2aXNpb24gNzE4NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCUEltYWdlRGVjb2RlciA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQlBJbWFnZURlY29kZXIoYm9vbCBwcmVtdWx0aXBs
eUFscGhhKTsKKyAgICBXRUJQSW1hZ2VEZWNvZGVyKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9v
bCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk7CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVj
b2RlcigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gInZwOCI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxODYzKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTExICBaaGVueWFvIE1v
ICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTk2CisK
KyAgICAgICAgKiBzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2VEZWNvZGVyOjppbml0KTogQWRkIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHBhcmFt
ZXRlci4KKwogMjAxMC0xMS0xMSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcxODYxKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYs
MTAgQEAgdm9pZCBXZWJJbWFnZURlY29kZXI6OmluaXQoVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgVHlwZUJNUDoKLSAgICAgICAgbV9wcml2YXRlID0gbmV3IEJN
UEltYWdlRGVjb2Rlcih0cnVlKTsKKyAgICAgICAgbV9wcml2YXRlID0gbmV3IEJNUEltYWdlRGVj
b2Rlcih0cnVlLCBmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZUlDTzoKLSAg
ICAgICAgbV9wcml2YXRlID0gbmV3IElDT0ltYWdlRGVjb2Rlcih0cnVlKTsKKyAgICAgICAgbV9w
cml2YXRlID0gbmV3IElDT0ltYWdlRGVjb2Rlcih0cnVlLCBmYWxzZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxODYzKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTEgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9X
RUJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcx
OTYKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLXRleGltYWdlLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC10ZXhpbWFnZS5odG1sOiBUZXN0aW5n
IHRoYXQgaWYgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTiBpcyBOT05FLCBnYW1tYSBzZXR0
aW5ncyBhcmUgbm90IGFwcGxpZWQgdG8gaW1hZ2VzLgorCiAyMDEwLTExLTEwICBaaGVueWFvIE1v
ICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxs
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXRl
eGltYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzE4NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9nbC10ZXhpbWFnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDE0IEBAIFBBU1MgVGhlcmUgc2hvdWxkIGJlIDMyIHVuaXF1ZSB2YWx1ZXMgaW4K
IFBBU1MgVGhlcmUgc2hvdWxkIGJlIDMyIHVuaXF1ZSB2YWx1ZXMgaW4gY2hhbm5lbCAyLiBGb3Vu
ZCAzMgogUEFTUyBUaGVyZSBzaG91bGQgYmUgMiB1bmlxdWUgdmFsdWVzIGluIGNoYW5uZWwgMy4g
Rm91bmQgMgogCitDaGVjayB0aGF0IGdhbW1hIHNldHRpbmdzIGRvbid0IGVmZmVjdCA4Yml0IHBu
Z3MKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBi
ZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4KK1BBU1MgcGl4ZWxzIHNob3VsZCBiZSBzYW1lIHJlZ2Fy
ZGxlc3Mgb2YgZ2FtbWEgc2V0dGluZ3MuCitQQVNTIHBpeGVscyBzaG91bGQgYmUgc2FtZSByZWdh
cmRsZXNzIG9mIGdhbW1hIHNldHRpbmdzLgorUEFTUyBwaXhlbHMgc2hvdWxkIGJlIHNhbWUgcmVn
YXJkbGVzcyBvZiBnYW1tYSBzZXR0aW5ncy4KK1BBU1MgcGl4ZWxzIHNob3VsZCBiZSBzYW1lIHJl
Z2FyZGxlc3Mgb2YgZ2FtbWEgc2V0dGluZ3MuCitQQVNTIHBpeGVscyBzaG91bGQgYmUgc2FtZSBy
ZWdhcmRsZXNzIG9mIGdhbW1hIHNldHRpbmdzLgorCiBjaGVjayBwaXhlbHMgYXJlIFVOIHByZS1t
dWx0aXBsaWVkCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuCiBQQVNTIEhhbGYgdGhlIHBpeGVscyBpbiBj
aGFubmVsIDAgc2hvdWxkIGJlID49IDEyOCwxMjgsMTI4LiBmb3VuZCA1MCUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXRleGltYWdlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UuaHRtbAkocmV2aXNpb24g
NzE4NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC10ZXhpbWFnZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsMTAgKzE2Miw5IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKGlt
Z3MpIHsKICAgICB9CiAgIH0KIAotLy8gRklYTUUoem1vKTogZml4IHRoZSBnYW1tYSBjb3JyZWN0
aW9uIGFuZCBhZGQgYmFjayB0aGUgY29tbWVudGVkIG91dCB0ZXN0cyBiZWxvdy4KLS8qCiAgIGRl
YnVnKCIiKTsKICAgZGVidWcoIkNoZWNrIHRoYXQgZ2FtbWEgc2V0dGluZ3MgZG9uJ3QgZWZmZWN0
IDhiaXQgcG5ncyIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFDRV9DT05W
RVJTSU9OX1dFQkdMLCBnbC5OT05FKTsKICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5SR0IsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwKICAgICAgICAgICAgICAgICBpbWdz
WydyZXNvdXJjZXMvZ3JheS1yYW1wLWRlZmF1bHQtZ2FtbWEucG5nJ10pOwogICBnbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIp
OwpAQCAtMTkzLDcgKzE5Miw2IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKGltZ3MpIHsKICAgICB9CiAg
ICAgYXNzZXJ0TXNnKHNhbWUsICJwaXhlbHMgc2hvdWxkIGJlIHNhbWUgcmVnYXJkbGVzcyBvZiBn
YW1tYSBzZXR0aW5ncy4iKTsKICAgfQotKi8KIAogICBkZWJ1ZygiIik7CiAgIGRlYnVnKCJjaGVj
ayBwaXhlbHMgYXJlIFVOIHByZS1tdWx0aXBsaWVkIik7Cg==
</data>
<flag name="review"
          id="64436"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="64437"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74184</attachid>
            <date>2010-11-17 17:41:04 -0800</date>
            <delta_ts>2010-11-18 13:35:00 -0800</delta_ts>
            <desc>patch: hooking up COLORSPACE_CONVERSION setting with ICC profile behavior</desc>
            <filename>icc.patch</filename>
            <type>text/plain</type>
            <size>38197</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjI2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTEtMTcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxOTYKKworICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjppZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUpOiBBZGQgYSBnZXR0ZXIgZnVuY3Rp
b24gZm9yIHRoZSBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSBzZXR0aW5nLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmRlY29kZSk6IEhvb2t1cCBpZ25vcmVHYW1t
YUFuZENvbG9yUHJvZmlsZSBzZXR0aW5nIHdpdGggY29sb3IgcHJvZmlsZSBwcm9jZXNzaW5nLgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOiBE
aXR0by4KKwogMjAxMC0xMS0xNyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiA3MjIz
OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxNiw2ICszMTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIHRyYW5zcGFyZW5jeS4KICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWxwaGEo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICAgICAgLy8gV2hldGhlciBvciBub3QgdGhl
IGdhbW1hIGFuZCBjb2xvciBwcm9maWxlIGFyZSBhcHBsaWVkLgorICAgICAgICBib29sIGlnbm9y
ZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGU7IH0KKwogICAgICAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZhaWx1cmUiIGZs
YWcuICBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbwogICAgICAgICAvLyBtYW55IGNh
bGxlcnMgd2FudCB0byByZXR1cm4gZmFsc2UgYWZ0ZXIgY2FsbGluZyB0aGlzKSwgcmV0dXJucyBm
YWxzZQogICAgICAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gIFN1YmNsYXNzZXMg
bWF5IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNp
b24gNzIyMzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPnNldFNpemUobV9pbmZvLmltYWdlX3dpZHRo
LCBtX2luZm8uaW1hZ2VfaGVpZ2h0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0Q29sb3JQcm9maWxlKHJlYWRDb2xvclByb2ZpbGUo
aW5mbygpKSk7ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2RlY29kZXItPmlnbm9y
ZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpKQorICAgICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0
Q29sb3JQcm9maWxlKENvbG9yUHJvZmlsZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBtX2RlY29kZXItPnNldENvbG9yUHJvZmlsZShyZWFkQ29sb3JQcm9maWxlKGluZm8o
KSkpOwogCiAgICAgICAgICAgICBpZiAobV9kZWNvZGluZ1NpemVPbmx5KSB7CiAgICAgICAgICAg
ICAgICAgLy8gV2UgY2FuIHN0b3AgaGVyZS4gIFJlZHVjZSBvdXIgYnVmZmVyIGxlbmd0aCBhbmQg
YXZhaWxhYmxlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcyMjM4KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJB
dmFpbGFibGUoKQogICAgIGludCBiaXREZXB0aCwgY29sb3JUeXBlLCBpbnRlcmxhY2VUeXBlLCBj
b21wcmVzc2lvblR5cGUsIGZpbHRlclR5cGUsIGNoYW5uZWxzOwogICAgIHBuZ19nZXRfSUhEUihw
bmcsIGluZm8sICZ3aWR0aCwgJmhlaWdodCwgJmJpdERlcHRoLCAmY29sb3JUeXBlLCAmaW50ZXJs
YWNlVHlwZSwgJmNvbXByZXNzaW9uVHlwZSwgJmZpbHRlclR5cGUpOwogCi0gICAgaWYgKGNvbG9y
VHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0IgfHwgY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBF
X1JHQl9BTFBIQSkgeworICAgIGlmICgoY29sb3JUeXBlID09IFBOR19DT0xPUl9UWVBFX1JHQiB8
fCBjb2xvclR5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKQorICAgICAgICAmJiAhbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSkgewogICAgICAgICAvLyBXZSBjdXJyZW50bHkgc3Vw
cG9ydCBjb2xvciBwcm9maWxlcyBvbmx5IGZvciBSR0IgYW5kIFJHQkEgUE5Hcy4gIFN1cHBvcnRp
bmcKICAgICAgICAgLy8gY29sb3IgcHJvZmlsZXMgZm9yIGdyYXktc2NhbGUgaW1hZ2VzIGlzIHNs
aWdodGx5IHRyaWNreSwgYXQgbGVhc3QgdXNpbmcgdGhlCiAgICAgICAgIC8vIENvcmVHcmFwaGlj
cyBJQ0MgbGlicmFyeSwgYmVjYXVzZSB3ZSBleHBhbmQgZ3JheS1zY2FsZSBpbWFnZXMgdG8gUkdC
IGJ1dCB3ZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzIyNjUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0xNyAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBVTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE5Ngor
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLXRleGltYWdlLmh0bWw6IEFkZCB0ZXN0IGNh
c2VzIGZvciBpbWFnZXMgd2l0aCBJQ0MgcHJvZmlsZXMuCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNpZS1yZ2ItcHJvZmlsZS5wbmc6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUt
d2l0aC1jb2xvcm1hdGNoLXByb2ZpbGUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUuanBn
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1
YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtZS1zcmdiLXByb2ZpbGUucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1
YXJlLXdpdGgtc21wdGUtYy1wcm9maWxlLnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNyZ2ItaWVjNjE5NjYtMi4xLXBy
b2ZpbGUucG5nOiBBZGRlZC4KKwogMjAxMC0xMS0xNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIExlb3BhcmQtc3BlY2lmaWMgcmVzdWx0cyBmb3IgdGVz
dHMgdGhhdCBkaWZmZXIgYmV0d2VlbiBMZW9wYXJkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9nbC10ZXhpbWFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4aW1hZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA3MjIzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXRleGltYWdlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMjcgQEAgUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUgogUEFTUyBwaXhlbCAxMjgsIDggc2hvdWxkIGJl
IHdpdGhpbiAxMCB1bml0cyBvZiAxNSwgMTIxLCAwLCAyNTUgd2FzIDE1LCAxMjEsIDAsIDI1NQog
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5v
IGVycm9ycwogCitjaGVjayB1cGxvYWRpbmcgb2YgaW1hZ2VzIHdpdGggSUNDIHByb2ZpbGVzCitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8g
ZXJyb3JzIGZyb20gc2V0dXAKK1BBU1MgcGl4ZWwgMTI4LCA4IHNob3VsZCBiZSB3aXRoaW4gMTAg
dW5pdHMgb2YgMCwgMCwgMjU1LCAyNTUgd2FzIDAsIDAsIDI1NCwgMjU1CitQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20g
c2V0dXAKK1BBU1MgcGl4ZWwgMTI4LCA4IHNob3VsZCBiZSB3aXRoaW4gMTAgdW5pdHMgb2YgMCwg
MCwgMjU1LCAyNTUgd2FzIDAsIDAsIDI1NCwgMjU1CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAKK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBiZSBubyBlcnJv
cnMKK1BBU1MgdXBsb2FkaW5nIFBOR3Mgd2l0aCBzYW1lIGRhdGEgYnV0IHZhcmlvdXMgSUNDIHBy
b2ZpbGVzIHNob3VsZCBnZW5lcmF0ZSB0aGUgc2FtZSByZXN1bHRzCitQQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0
dXAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBi
ZSBubyBlcnJvcnMKK1BBU1MgdXBsb2FkaW5nIFBOR3Mgd2l0aCBzYW1lIGRhdGEgYnV0IHZhcmlv
dXMgSUNDIHByb2ZpbGVzIHNob3VsZCBnZW5lcmF0ZSB0aGUgc2FtZSByZXN1bHRzCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8gZXJyb3Jz
IGZyb20gc2V0dXAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IFNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1MgdXBsb2FkaW5nIFBOR3Mgd2l0aCBzYW1lIGRhdGEg
YnV0IHZhcmlvdXMgSUNDIHByb2ZpbGVzIHNob3VsZCBnZW5lcmF0ZSB0aGUgc2FtZSByZXN1bHRz
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUg
bm8gZXJyb3JzIGZyb20gc2V0dXAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IFNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1MgdXBsb2FkaW5nIFBOR3Mgd2l0aCBz
YW1lIGRhdGEgYnV0IHZhcmlvdXMgSUNDIHByb2ZpbGVzIHNob3VsZCBnZW5lcmF0ZSB0aGUgc2Ft
ZSByZXN1bHRzCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1MgdXBsb2FkaW5nIFBO
R3Mgd2l0aCBzYW1lIGRhdGEgYnV0IHZhcmlvdXMgSUNDIHByb2ZpbGVzIHNob3VsZCBnZW5lcmF0
ZSB0aGUgc2FtZSByZXN1bHRzCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdGV4
aW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9n
bC10ZXhpbWFnZS5odG1sCShyZXZpc2lvbiA3MjIzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLXRleGltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDE0
IEBAIHZhciBpbWdVUkxzID0gWwogICAncmVzb3VyY2VzL3plcm8tYWxwaGEucG5nJywKICAgJ3Jl
c291cmNlcy8zeDMucG5nJywKICAgJ3Jlc291cmNlcy9ibHVlLTF4MS5qcGcnLAotICAncmVzb3Vy
Y2VzL2dyZWVuLTJ4Mi0xNmJpdC5wbmcnXTsKKyAgJ3Jlc291cmNlcy9ncmVlbi0yeDItMTZiaXQu
cG5nJywKKyAgJ3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4tcHJvZmlsZS5q
cGcnLAorICAncmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNvbG9yc3Bpbi1wcm9maWxlLnBu
ZycsCisgICdyZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY2llLXJnYi1wcm9maWxlLnBuZycs
CisgICdyZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JtYXRjaC1wcm9maWxlLnBuZycs
CisgICdyZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtZS1zcmdiLXByb2ZpbGUucG5nJywKKyAg
J3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1zbXB0ZS1jLXByb2ZpbGUucG5nJywKKyAgJ3Jl
c291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1zcmdiLWllYzYxOTY2LTIuMS1wcm9maWxlLnBuZydd
OwogCiB3dHUubG9hZEltYWdlc0FzeW5jKGltZ1VSTHMsIHJ1blRlc3RzKTsKIApAQCAtMjgyLDkg
KzI4OSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKGltZ3MpIHsKICAgZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cCIpOwogICB3dHUu
ZHJhd1F1YWQoZ2wpOwogICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7Ci0KICAgY2hlY2tQaXhlbFJhbmdlKGJ1ZiwgbWlk
ZGxlLCBjZW50ZXIsIFsgICAwLCAgIDAsIDI1NSwgMjU1XSwgMTApOwotCiAgIGdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIik7CiAKICAgZGVidWco
IiIpOwpAQCAtMjk2LDEyICszMDEsNTYgQEAgZnVuY3Rpb24gcnVuVGVzdHMoaW1ncykgewogICBn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9t
IHNldHVwIik7CiAgIHd0dS5kcmF3UXVhZChnbCk7CiAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgd2lk
dGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKLQogICBjaGVja1Bp
eGVsUmFuZ2UoYnVmLCBtaWRkbGUsIGNlbnRlciwgWyAgIDE1LCAxMjEsICAgMCwgMjU1XSwgMTAp
OwotCiAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJy
b3JzIik7CiAKICAgZGVidWcoIiIpOworICBkZWJ1ZygiY2hlY2sgdXBsb2FkaW5nIG9mIGltYWdl
cyB3aXRoIElDQyBwcm9maWxlcyIpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVM
VElQTFlfQUxQSEFfV0VCR0wsIGZhbHNlKTsKKyAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZM
SVBfWV9XRUJHTCwgZmFsc2UpOworICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfQ09MT1JTUEFD
RV9DT05WRVJTSU9OX1dFQkdMLCBnbC5OT05FKTsKKworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgIGltZ3NbJ3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4tcHJvZmlsZS5q
cGcnXSk7CisgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8g
ZXJyb3JzIGZyb20gc2V0dXAiKTsKKyAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgZ2wucmVhZFBpeGVs
cygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwor
ICAvLyBUaGUgaW1hZ2UgaXMgcmVkLiAgSG93ZXZlciwgaWYgd2UgaWdub3JlIHRoZSBjb2xvciBw
cm9maWxlLCBpdCBpcyBibHVlLgorICBjaGVja1BpeGVsUmFuZ2UoYnVmLCBtaWRkbGUsIGNlbnRl
ciwgWyAwLCAwLCAyNTUsIDI1NV0sIDEwKTsKKworICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQiwgZ2wuUkdCLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAg
IGltZ3NbJ3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4tcHJvZmlsZS5wbmcn
XSk7CisgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJy
b3JzIGZyb20gc2V0dXAiKTsKKyAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgZ2wucmVhZFBpeGVscygw
LCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAv
LyBUaGUgaW1hZ2UgaXMgcmVkLiAgSG93ZXZlciwgaWYgd2UgaWdub3JlIHRoZSBjb2xvciBwcm9m
aWxlLCBpdCBpcyBibHVlLgorICBjaGVja1BpeGVsUmFuZ2UoYnVmLCBtaWRkbGUsIGNlbnRlciwg
WyAwLCAwLCAyNTUsIDI1NV0sIDEwKTsKKworICB2YXIgaWNjUE5HcyA9IFsKKyAgICAncmVzb3Vy
Y2VzL3NtYWxsLXNxdWFyZS13aXRoLWNpZS1yZ2ItcHJvZmlsZS5wbmcnLAorICAgICdyZXNvdXJj
ZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JtYXRjaC1wcm9maWxlLnBuZycsCisgICAgJ3Jlc291
cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1lLXNyZ2ItcHJvZmlsZS5wbmcnLAorICAgICdyZXNvdXJj
ZXMvc21hbGwtc3F1YXJlLXdpdGgtc21wdGUtYy1wcm9maWxlLnBuZycsCisgICAgJ3Jlc291cmNl
cy9zbWFsbC1zcXVhcmUtd2l0aC1zcmdiLWllYzYxOTY2LTIuMS1wcm9maWxlLnBuZyddOworICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgaWNjUE5Hcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIgYnVm
MiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwKKyAg
ICAgICAgICAgICAgICAgIGltZ3NbaWNjUE5Hc1tpaV1dKTsKKyAgICBnbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwIik7CisgICAg
d3R1LmRyYXdRdWFkKGdsKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1ZjIpOworICAgIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJTaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgdmFyIHNhbWUgPSB0
cnVlOworICAgIGZvciAodmFyIGpqID0gMDsgamogPCBidWYubGVuZ3RoOyArK2pqKSB7CisgICAg
ICBpZiAoYnVmW2pqXSAhPSBidWYyW2pqXSkgeworICAgICAgICBzYW1lID0gZmFsc2U7CisgICAg
ICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBhc3NlcnRNc2coc2FtZSwgInVwbG9hZGlu
ZyBQTkdzIHdpdGggc2FtZSBkYXRhIGJ1dCB2YXJpb3VzIElDQyBwcm9maWxlcyBzaG91bGQgZ2Vu
ZXJhdGUgdGhlIHNhbWUgcmVzdWx0cyIpOworICB9CisKKyAgZGVidWcoIiIpOwogICBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwogICBzaG91bGRCZVRydWUoInN1Y2Nlc3NmdWxseVBhcnNlZCIp
OwogICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+
Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwt
c3F1YXJlLXdpdGgtY2llLXJnYi1wcm9maWxlLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY2llLXJnYi1wcm9maWxlLnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNzQUFBQWlDQUlBQUFCSk1MZGZBQUFB
Q1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBQgpNbWxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5
YjJacGJHVUFBSGphclpHL1NzTlFGSWUvR3dTTFFoRzhEM0NYZ3FCQ3FHNU9TVnRLClFhUkVoeVJi
azRZbzBpVGNYUDhVZkF6ZndNWEYxY25aU1ZBb09Qa0l6azVDSFdLdFRpTDR3WUh2L0liRDRSeXcx
cHkyMjdGV1lKUVoKN1hWZDVRZWhXbnlpeGpLcmJMTXppTXZDNmZkM0FiSThTL2lKZ0xkbkJNQmsw
Mm03SGY3R1VseG9BN3dEeldGU3hpQnNJRG96aFFGeApDY2pvdURBZ3JnR3BEN3dXaUR1Z25sYitB
TlNqeWwrQXV2YURFTVFySUZNL0NNRUNrRkhsRXBBbU9UY0FyYndZNjZQMDBLaW1iZHZLCkdlWlJv
dmJIcFVsR3BlcGxjYTZMWEE5TU1nU3EvUUNvdFhvZDVYVmQvaHMvQ05Yc3NwOGx2N0p2eENmNmRQ
WURhK3YzZmo3ajRnbzIKYnFmVDZjMDgyeHZCcEFFTDRUeGJ2d2NhOE5qNEFNbllUcTBOL2ZnUEFB
QUFJR05JVWswQUFJSXhBQUNDTVFBQkh4d0FBR2VEQUFCcgpDQUFCR0JNQUFFRTdBQUFEaElmbEcx
SUFBQUdzU1VSQlZIamF0RmRIbHNVd0NKTjQzczM5cjJ2TkFpZHhTM0g1M3FTOEdEQVNncEIvCkFp
Q2hXREc3RndCUXVENkw2WUV5S1FJOHZ5VkFrb2MxRWlZQklPaVBBT1J2U0JNQUdFYVdteUNadi91
eThUeWc2ck9PUkxDeTE0Tm8KM1FNSVkxWUVSRGREYkZyaEtXWFZQVlE0SmxSL1VBRjB3VVRvTG9L
M1RCSWdvQ3QvaFE5MlhZNHQ2M3Z0TXJDaEV1TUdGT3dkQlIwawpOUGFZb1I5RTBLSkFIbldZcFYx
N21HaWZxaGlYS0cxZjRTVUJkY0o1eVVLdkZuNkF3aHRHZTJxaEpoUDdlcE9jSlQ3S1Nmck14Qk00
ClpVWjhtYVkwc1hVd0FjSVJOSWNqMENZbXBseHFuQWZjMUFvazVkZ3RNVkZjUzhOcWQrWmtMZmlX
U0FnU0ZJWlFVTk0ySjFUNW5KRjgKY0ZyS2dXRXlCd1VLNmxOTWZTWmFNUjNvVlE4YXd0aXh4YTVh
R0RwRDNNUEVlVlVtcy9iSVBTMXlTcEZpVEtFVHBDMk9DRk9LNUN6ZQpKRkJoRkFXL3BHTnJ3NHcw
aFlLMGg0UVZDcStGWFZTakM2TDJSZkRrWGxuaFJZK0RQbGM4NThwNjhoS0pmRGo0aGdJTFgvTFJX
WDAxClNJcjdPeVptSitLWDN2L2w5M2E0Ty9QTElXM0FjRmluMHRsbXpzb2NxdEJ3MzRudnB4SVZ2
N0NWSkVnYWFqYi9Bd0NpbEx1RnB1a1QKb0FBQUFBQkpSVTVFcmtKZ2dnPT0KCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29s
b3JtYXRjaC1wcm9maWxlLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JtYXRjaC1wcm9maWxlLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoK
aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNzQUFBQWlDQUlBQUFCSk1MZGZBQUFBQ1hCSVdYTUFB
QzRqQUFBdUl3RjRwVDkyQUFBQgpOV2xEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFB
SGphclpHL1NzTlFGSWUvVzZHS1ExVElwc05GY1JTcWcxQzNwSzFWClVDalJJY25XcEtFdHRibmg1
dnFucTgvaEF6anFPN2lLZzZLTG80OGduUndjb2dRbkVmeW03L3lHdytIOG9GSnptbTZyc2dqajFH
aXYKN1VvL0NPWHNBMVZtQUtBYjU1blQ2UndBcENwTitJbUE2VE1DNEhIRGFib3Qvc1o4bkdrRGZB
QmJ2U1NQUWRTQTRibkpESWdyd0k1RwptUUZ4QTlqNjJHdUF1QU9zZnVGUGdCVVYvZ1pZMmc5Q0VP
K0EzZmVERUNwemdCMFZ2Z0xZSnJrd0FBMlZUZlN3UHpCeXMxNnZTNmVuCm9rUWVUWEtUakhPNW44
WktaMHAzVGRJRGl2c0FXR2lvRTZVUHV5WWVTSy90OHUvNFFTZ0xtNzUrL1hlbnpFcmlVMzMyM1lX
NC8zMHUKZDF5T1lEZUc2bmFaZVd0d1BZSGxsekpiM1lPbGRiaVZuMHBGVWtRRHhIcGxBQUFBSUdO
SVVrMEFBSWNLQUFDTUNnQUE5aFlBQUlUUApBQUJ6T3dBQTdGTUFBRHFYQUFBZFMvcnpaWmNBQUFH
c1NVUkJWSGphdEZkSGxzVXdDSk40M3MzOXIydk5BaWR4UzNINTNxUzhHREFTCmdwQi9BaUNoV0RH
N0Z3QlF1RDZMNllFeUtRSTh2eVZBa29jMUVpWUJJT2lQQU9SdlNCTUFHRWFXbXlDWnYvdXk4VHln
NnJPT1JMQ3kKMTRObzNRTUlZMVlFUkRkRGJGcmhLV1hWUFZRNEpsUi9VQUYwd1VUb0xvSzNUQkln
b0N0L2hROTJYWTR0NjN2dE1yQ2hFdU1HRk93ZApCUjBrTlBhWW9SOUUwS0pBSG5XWXBWMTdtR2lm
cWhpWEtHMWY0U1VCZGNKNXlVS3ZGbjZBd2h0R2UycWhKaFA3ZXBPY0pUN0tTZnJNCnhCTTRaVVo4
bWFZMHNYVXdBY0lSTkljajBDWW1wbHhxbkFmYzFBb2s1ZGd0TVZGY1M4TnFkK1prTGZpV1NBZ1NG
SVpRVU5NMkoxVDUKbkpGOGNGcktnV0V5QndVSzZsTk1mU1phTVIzb1ZROGF3dGl4eGE1YUdEcEQz
TVBFZVZVbXMvYklQUzF5U3BGaVRLRVRwQzJPQ0ZPSwo1Q3plSkZCaEZBVy9wR05ydzR3MGhZSzBo
NFFWQ3ErRlhWU2pDNkwyUmZEa1hsbmhSWStEUGxjODU4cDY4aEtKZkRqNGhnSUxYL0xSCldYMDFT
SXI3T3labUorS1gzdi9sOTNhNE8vUExJVzNBY0ZpbjB0bG16c29jcXRCdzM0bnZweElWdjdDVkpF
Z2FhamIvQXdDaWxMdUYKcHVrVG9BQUFBQUJKUlU1RXJrSmdnZz09CgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWNvbG9yc3Bp
bi1wcm9maWxlLmpwZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJj
ZXMvc21hbGwtc3F1YXJlLXdpdGgtY29sb3JzcGluLXByb2ZpbGUuanBnCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgovOWovNEFB
UVNrWkpSZ0FCQWdFQkxBRXNBQUQvNFFPZ1JYaHBaZ0FBVFUwQUtnQUFBQWdBQndFU0FBTUFBQUFC
QUFFQUFBRWFBQVVBCkFBQUJBQUFBWWdFYkFBVUFBQUFCQUFBQWFnRW9BQU1BQUFBQkFBSUFBQUV4
QUFJQUFBQWNBQUFBY2dFeUFBSUFBQUFVQUFBQWpvZHAKQUFRQUFBQUJBQUFBcEFBQUFOQUFMY2E2
QUFBbkVBQXR4cm9BQUNjUVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5DQlhhVzVrYjNkegpBREl3
TVRBNk1URTZNVGNnTVRRNk16QTZOVFVBQUFBQUE2QUJBQU1BQUFBQi8vOEFBS0FDQUFRQUFBQUJB
QUFBSzZBREFBUUFBQUFCCkFBQUFJZ0FBQUFBQUFBQUdBUU1BQXdBQUFBRUFCZ0FBQVJvQUJRQUFB
QUVBQUFFZUFSc0FCUUFBQUFFQUFBRW1BU2dBQXdBQUFBRUEKQWdBQUFnRUFCQUFBQUFFQUFBRXVB
Z0lBQkFBQUFBRUFBQUpxQUFBQUFBQUFBRWdBQUFBQkFBQUFTQUFBQUFILzJQL2dBQkJLUmtsRwpB
QUVDQUFCSUFFZ0FBUC90QUF4QlpHOWlaVjlEVFFBQi8rNEFEa0ZrYjJKbEFHU0FBQUFBQWYvYkFJ
UUFEQWdJQ0FrSURBa0pEQkVMCkNnc1JGUThNREE4VkdCTVRGUk1UR0JFTURBd01EQXdSREF3TURB
d01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREFFTkN3c04KRGcwUURnNFFGQTRPRGhRVURn
NE9EaFFSREF3TURBd1JFUXdNREF3TURCRU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3
TQpEQXdNLzhBQUVRZ0FJZ0FyQXdFaUFBSVJBUU1SQWYvZEFBUUFBLy9FQVQ4QUFBRUZBUUVCQVFF
QkFBQUFBQUFBQUFNQUFRSUVCUVlICkNBa0tDd0VBQVFVQkFRRUJBUUVBQUFBQUFBQUFBUUFDQXdR
RkJnY0lDUW9MRUFBQkJBRURBZ1FDQlFjR0NBVURERE1CQUFJUkF3UWgKRWpFRlFWRmhFeUp4Z1RJ
R0ZKR2hzVUlqSkJWU3dXSXpOSEtDMFVNSEpaSlQ4T0h4WTNNMUZxS3lneVpFazFSa1JjS2pkRFlY
MGxYaQpaZkt6aE1QVGRlUHpSaWVVcElXMGxjVFU1UFNsdGNYVjVmVldabmFHbHFhMnh0Ym05amRI
VjJkM2g1ZW50OGZYNS9jUkFBSUNBUUlFCkJBTUVCUVlIQndZRk5RRUFBaEVESVRFU0JFRlJZWEVp
RXdVeWdaRVVvYkZDSThGUzBmQXpKR0xoY29LU1ExTVZZM00wOFNVR0ZxS3kKZ3djbU5jTFNSSk5V
b3hka1JWVTJkR1hpOHJPRXc5TjE0L05HbEtTRnRKWEUxT1QwcGJYRjFlWDFWbVoyaHBhbXRzYlc1
dlluTjBkWApaM2VIbDZlM3gvL2FBQXdEQVFBQ0VRTVJBRDhBNTFKSkpZNWZUbEpKSkpxbVFLa29q
aFNUZXEzcS93RC8wT2RTU1NXT1gwNVNTU1NhCnBrMVNVV3FTYjFXOVgvL1I1MUpjWWtzY3ZwejJT
ZGNZa21xZTFhcExpRWszcXQ2di85bi83UWhpVUdodmRHOXphRzl3SURNdU1BQTQKUWtsTkJDVUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0VKSlRRUHRBQUFBQUFBUUFTdi8yUUFCQUFFQksv
L1pBQUVBQVRoQwpTVTBFSmdBQUFBQUFEZ0FBQUFBQUFBQUFBQUEvZ0FBQU9FSkpUUVFOQUFBQUFB
QUVBQUFBSGpoQ1NVMEVHUUFBQUFBQUJBQUFBQjQ0ClFrbE5BL01BQUFBQUFBa0FBQUFBQUFBQUFB
RUFPRUpKVFNjUUFBQUFBQUFLQUFFQUFBQUFBQUFBQWpoQ1NVMEQ5UUFBQUFBQVNBQXYKWm1ZQUFR
QnNabVlBQmdBQUFBQUFBUUF2Wm1ZQUFRQ2htWm9BQmdBQUFBQUFBUUF5QUFBQUFRQmFBQUFBQmdB
QUFBQUFBUUExQUFBQQpBUUF0QUFBQUJnQUFBQUFBQVRoQ1NVMEQrQUFBQUFBQWNBQUEvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vL3dQb0FBQUFBUC8vCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vOEQ2QUFBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BK2dBQUFBQS8vLy8KLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vL3dQb0FBQTRRa2xOQkFnQUFBQUFBQkFBQUFBQkFBQUNRQUFB
QWtBQUFBQUFPRUpKVFFRZQpBQUFBQUFBRUFBQUFBRGhDU1UwRUdnQUFBQUFEZXdBQUFBWUFBQUFB
QUFBQUFBQUFBQ0lBQUFBckFBQUFJd0J6QUcwQVlRQnNBR3dBCkxRQnpBSEVBZFFCaEFISUFaUUF0
QUhjQWFRQjBBR2dBTFFCakFHOEFiQUJ2QUhJQWN3QndBR2tBYmdBdEFIQUFjZ0J2QUdZQWFRQnMK
QUdVQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNzQUFBQWlB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBRUFB
QUFBQUFCdWRXeHNBQUFBQWdBQUFBWmliM1Z1WkhOUFltcGpBQUFBCkFRQUFBQUFBQUZKamRERUFB
QUFFQUFBQUFGUnZjQ0JzYjI1bkFBQUFBQUFBQUFCTVpXWjBiRzl1WndBQUFBQUFBQUFBUW5SdmJX
eHYKYm1jQUFBQWlBQUFBQUZKbmFIUnNiMjVuQUFBQUt3QUFBQVp6YkdsalpYTldiRXh6QUFBQUFV
OWlhbU1BQUFBQkFBQUFBQUFGYzJ4cApZMlVBQUFBU0FBQUFCM05zYVdObFNVUnNiMjVuQUFBQUFB
QUFBQWRuY205MWNFbEViRzl1WndBQUFBQUFBQUFHYjNKcFoybHVaVzUxCmJRQUFBQXhGVTJ4cFky
VlBjbWxuYVc0QUFBQU5ZWFYwYjBkbGJtVnlZWFJsWkFBQUFBQlVlWEJsWlc1MWJRQUFBQXBGVTJ4
cFkyVlUKZVhCbEFBQUFBRWx0WnlBQUFBQUdZbTkxYm1SelQySnFZd0FBQUFFQUFBQUFBQUJTWTNR
eEFBQUFCQUFBQUFCVWIzQWdiRzl1WndBQQpBQUFBQUFBQVRHVm1kR3h2Ym1jQUFBQUFBQUFBQUVK
MGIyMXNiMjVuQUFBQUlnQUFBQUJTWjJoMGJHOXVad0FBQUNzQUFBQURkWEpzClZFVllWQUFBQUFF
QUFBQUFBQUJ1ZFd4c1ZFVllWQUFBQUFFQUFBQUFBQUJOYzJkbFZFVllWQUFBQUFFQUFBQUFBQVpo
YkhSVVlXZFUKUlZoVUFBQUFBUUFBQUFBQURtTmxiR3hVWlhoMFNYTklWRTFNWW05dmJBRUFBQUFJ
WTJWc2JGUmxlSFJVUlZoVUFBQUFBUUFBQUFBQQpDV2h2Y25wQmJHbG5ibVZ1ZFcwQUFBQVBSVk5z
YVdObFNHOXlla0ZzYVdkdUFBQUFCMlJsWm1GMWJIUUFBQUFKZG1WeWRFRnNhV2R1ClpXNTFiUUFB
QUE5RlUyeHBZMlZXWlhKMFFXeHBaMjRBQUFBSFpHVm1ZWFZzZEFBQUFBdGlaME52Ykc5eVZIbHda
V1Z1ZFcwQUFBQVIKUlZOc2FXTmxRa2REYjJ4dmNsUjVjR1VBQUFBQVRtOXVaUUFBQUFsMGIzQlBk
WFJ6WlhSc2IyNW5BQUFBQUFBQUFBcHNaV1owVDNWMApjMlYwYkc5dVp3QUFBQUFBQUFBTVltOTBk
Rzl0VDNWMGMyVjBiRzl1WndBQUFBQUFBQUFMY21sbmFIUlBkWFJ6WlhSc2IyNW5BQUFBCkFBQTRR
a2xOQkNnQUFBQUFBQXdBQUFBQ1AvQUFBQUFBQUFBNFFrbE5CQlFBQUFBQUFBUUFBQUFCT0VKSlRR
UU1BQUFBQUFLR0FBQUEKQVFBQUFDc0FBQUFpQUFBQWhBQUFFWWdBQUFKcUFCZ0FBZi9ZLytBQUVF
cEdTVVlBQVFJQUFFZ0FTQUFBLyswQURFRmtiMkpsWDBOTgpBQUgvN2dBT1FXUnZZbVVBWklBQUFB
QUIvOXNBaEFBTUNBZ0lDUWdNQ1FrTUVRc0tDeEVWRHd3TUR4VVlFeE1WRXhNWUVRd01EQXdNCkRC
RU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01BUTBMQ3cwT0RSQU9EaEFVRGc0
T0ZCUU9EZzRPRkJFTURBd00KREJFUkRBd01EQXdNRVF3TURBd01EQXdNREF3TURBd01EQXdNREF3
TURBd01EQXdNREF6L3dBQVJDQUFpQUNzREFTSUFBaEVCQXhFQgovOTBBQkFBRC84UUJQd0FBQVFV
QkFRRUJBUUVBQUFBQUFBQUFBd0FCQWdRRkJnY0lDUW9MQVFBQkJRRUJBUUVCQVFBQUFBQUFBQUFC
CkFBSURCQVVHQndnSkNnc1FBQUVFQVFNQ0JBSUZCd1lJQlFNTU13RUFBaEVEQkNFU01RVkJVV0VU
SW5HQk1nWVVrYUd4UWlNa0ZWTEIKWWpNMGNvTFJRd2Nsa2xQdzRmRmpjelVXb3JLREprU1RWR1JG
d3FOME5oZlNWZUpsOHJPRXc5TjE0L05HSjVTa2hiU1Z4TlRrOUtXMQp4ZFhsOVZabWRvYVdwcmJH
MXViMk4wZFhaM2VIbDZlM3g5Zm45eEVBQWdJQkFnUUVBd1FGQmdjSEJnVTFBUUFDRVFNaE1SSUVR
VkZoCmNTSVRCVEtCa1JTaHNVSWp3VkxSOERNa1l1RnlncEpEVXhWamN6VHhKUVlXb3JLREJ5WTF3
dEpFazFTakYyUkZWVFowWmVMeXM0VEQKMDNYajgwYVVwSVcwbGNUVTVQU2x0Y1hWNWZWV1puYUds
cWEyeHRibTlpYzNSMWRuZDRlWHA3ZkgvOW9BREFNQkFBSVJBeEVBUHdEbgpVa2tsamw5T1Vra2tt
cVpBcVNpT0ZKTjZyZXIvQVAvUTUxSkpKWTVmVGxKSkpKcW1UVkpSYXBKdlZiMWYvOUhuVWx4aVN4
eStuUFpKCjF4aVNhcDdWcWt1SVNUZXEzcS8vMlRoQ1NVMEVJUUFBQUFBQVZRQUFBQUVCQUFBQUR3
QkJBR1FBYndCaUFHVUFJQUJRQUdnQWJ3QjAKQUc4QWN3Qm9BRzhBY0FBQUFCTUFRUUJrQUc4QVln
QmxBQ0FBVUFCb0FHOEFkQUJ2QUhNQWFBQnZBSEFBSUFCREFGTUFOQUFBQUFFQQpPRUpKVFFRR0FB
QUFBQUFIQUFnQUFBQUJBUUQvNFJGOGFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0
d0x3QThQM2h3CllXTnJaWFFnWW1WbmFXNDlJdSs3dnlJZ2FXUTlJbGMxVFRCTmNFTmxhR2xJZW5K
bFUzcE9WR042YTJNNVpDSS9QaUE4ZURwNGJYQnQKWlhSaElIaHRiRzV6T25nOUltRmtiMkpsT201
ek9tMWxkR0V2SWlCNE9uaHRjSFJyUFNKQlpHOWlaU0JZVFZBZ1EyOXlaU0EwTGpJdQpNaTFqTURZ
eklEVXpMak0xTWpZeU5Dd2dNakF3T0M4d055OHpNQzB4T0RveE1qb3hPQ0FnSUNBZ0lDQWdJajRn
UEhKa1pqcFNSRVlnCmVHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1
THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGcKUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5
WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdQpZMjl0
TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNa
VzFsYm5Sekx6RXVNUzhpCklIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmti
MkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXMKYm5NNmVHMXdUVTA5SW1oMGRIQTZM
eTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBSWFowUFNKbwpk
SFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWRmRt
VnVkQ01pSUhodGJHNXpPblJwClptWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZEdsbVpp
OHhMakF2SWlCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dmJuTXUKWVdSdlltVXVZMjl0TDJWNGFX
WXZNUzR3THlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTFN
MApJRmRwYm1SdmQzTWlJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREV3TFRFeExURTNWREV6T2pV
NU9qUTBMVEE0T2pBd0lpQjRiWEE2ClRXOWthV1o1UkdGMFpUMGlNakF4TUMweE1TMHhOMVF4TkRv
ek1EbzFOUzB3T0Rvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGkKTWpBeE1DMHhNUzB4TjFR
eE5Eb3pNRG8xTlMwd09Eb3dNQ0lnWkdNNlptOXliV0YwUFNKcGJXRm5aUzlxY0dWbklpQndhRzkw
YjNObwpiM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBp
UTI5c2IzSlRjR2x1SWlCNGJYQk5UVHBKCmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09rUTFNRGMy
T0RreU9UWkdNa1JHTVRGQ1FURkRPRFJCTXpnd09VSXlRVE16SWlCNGJYQk4KVFRwRWIyTjFiV1Z1
ZEVsRVBTSjRiWEF1Wkdsa09rUTBNRGMyT0RreU9UWkdNa1JHTVRGQ1FURkRPRFJCTXpnd09VSXlR
VE16SWlCNApiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJEUXdO
elk0T1RJNU5rWXlSRVl4TVVKQk1VTTRORUV6Ck9EQTVRakpCTXpNaUlIUnBabVk2VDNKcFpXNTBZ
WFJwYjI0OUlqRWlJSFJwWm1ZNldGSmxjMjlzZFhScGIyNDlJakk1T1RrNU9UUXYKTVRBd01EQWlJ
SFJwWm1ZNldWSmxjMjlzZFhScGIyNDlJakk1T1RrNU9UUXZNVEF3TURBaUlIUnBabVk2VW1WemIy
eDFkR2x2YmxWdQphWFE5SWpJaUlIUnBabVk2VG1GMGFYWmxSR2xuWlhOMFBTSXlOVFlzTWpVM0xE
STFPQ3d5TlRrc01qWXlMREkzTkN3eU56Y3NNamcwCkxEVXpNQ3cxTXpFc01qZ3lMREk0TXl3eU9U
WXNNekF4TERNeE9Dd3pNVGtzTlRJNUxEVXpNaXd6TURZc01qY3dMREkzTVN3eU56SXMKTXpBMUxE
TXhOU3d6TXpRek1qc3dSVUl6TkRSQk5qSXlORFk1TlVRd05qYzBRa1ZGTWpGQlJFVTBSRFl4TXlJ
Z1pYaHBaanBRYVhobApiRmhFYVcxbGJuTnBiMjQ5SWpReklpQmxlR2xtT2xCcGVHVnNXVVJwYldW
dWMybHZiajBpTXpRaUlHVjRhV1k2UTI5c2IzSlRjR0ZqClpUMGlOalUxTXpVaUlHVjRhV1k2VG1G
MGFYWmxSR2xuWlhOMFBTSXpOamcyTkN3ME1EazJNQ3cwTURrMk1Td3pOekV5TVN3ek56RXkKTWl3
ME1EazJNaXcwTURrMk15d3pOelV4TUN3ME1EazJOQ3d6TmpnMk55d3pOamcyT0N3ek16UXpOQ3d6
TXpRek55d3pORGcxTUN3egpORGcxTWl3ek5EZzFOU3d6TkRnMU5pd3pOek0zTnl3ek56TTNPQ3d6
TnpNM09Td3pOek00TUN3ek56TTRNU3d6TnpNNE1pd3pOek00Ck15d3pOek00TkN3ek56TTROU3d6
TnpNNE5pd3pOek01Tml3ME1UUTRNeXcwTVRRNE5DdzBNVFE0Tml3ME1UUTROeXcwTVRRNE9DdzAK
TVRRNU1pdzBNVFE1TXl3ME1UUTVOU3cwTVRjeU9DdzBNVGN5T1N3ME1UY3pNQ3cwTVRrNE5TdzBN
VGs0Tml3ME1UazROeXcwTVRrNApPQ3cwTVRrNE9TdzBNVGs1TUN3ME1UazVNU3cwTVRrNU1pdzBN
VGs1TXl3ME1UazVOQ3cwTVRrNU5TdzBNVGs1Tml3ME1qQXhOaXd3CkxESXNOQ3cxTERZc055dzRM
RGtzTVRBc01URXNNVElzTVRNc01UUXNNVFVzTVRZc01UY3NNVGdzTWpBc01qSXNNak1zTWpRc01q
VXMKTWpZc01qY3NNamdzTXpBN09FRTNRakk1UWpVeFFUWTNOMFF6UWtReU16QTFRVU5GUWtGRE5E
RkRPVGdpUGlBOGVHMXdUVTA2U0dsegpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2Mz
UkZkblE2WVdOMGFXOXVQU0pqY21WaGRHVmtJaUJ6ZEVWMmREcHBibk4wCllXNWpaVWxFUFNKNGJY
QXVhV2xrT2tRME1EYzJPRGt5T1RaR01rUkdNVEZDUVRGRE9EUkJNemd3T1VJeVFUTXpJaUJ6ZEVW
MmREcDMKYUdWdVBTSXlNREV3TFRFeExURTNWREUwT2pNd09qVTFMVEE0T2pBd0lpQnpkRVYyZERw
emIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aQpaU0JRYUc5MGIzTm9iM0FnUTFNMElGZHBibVJ2ZDNN
aUx6NGdQSEprWmpwc2FTQnpkRVYyZERwaFkzUnBiMjQ5SW1OdmJuWmxjblJsClpDSWdjM1JGZG5R
NmNHRnlZVzFsZEdWeWN6MGlabkp2YlNCcGJXRm5aUzl3Ym1jZ2RHOGdhVzFoWjJVdmFuQmxaeUl2
UGlBOGNtUm0KT214cElITjBSWFowT21GamRHbHZiajBpYzJGMlpXUWlJSE4wUlhaME9tbHVjM1Jo
Ym1ObFNVUTlJbmh0Y0M1cGFXUTZSRFV3TnpZNApPVEk1TmtZeVJFWXhNVUpCTVVNNE5FRXpPREE1
UWpKQk16TWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UQXRNVEV0TVRkVU1UUTZNekE2Ck5UVXRNRGc2
TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRV
elFnVjJsdVpHOTMKY3lJZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJdlBpQThMM0prWmpwVFpYRStJ
RHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNgpSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1P
bEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
CklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
ZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BE
OTRjR0ZqYTJWMElHVnVaRDBpZHlJL1B2L2lBZXBKClEwTmZVRkpQUmtsTVJRQUJBUUFBQWRwTlUw
WlVBaEFBQUcxdWRISlNSMElnV0ZsYUlBZlZBQW9BRWdBUUFBSUFCR0ZqYzNCQlVGQk0KQUFBQUFH
NXZibVVBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUQyMWdBQkFBQUFBTk1zVFZOR1ZBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1dO
d2NuUUFBQUR3QUFBQUptUmxjMk1BQUFFWUFBQUFaSGQwCmNIUUFBQUY4QUFBQUZISllXVm9BQUFH
UUFBQUFGR2RZV1ZvQUFBR2tBQUFBRkdKWVdWb0FBQUc0QUFBQUZISlVVa01BQUFITUFBQUEKRG1k
VVVrTUFBQUhNQUFBQURtSlVVa01BQUFITUFBQUFEblJsZUhRQUFBQUFRMjl3ZVhKcFoyaDBJREl3
TURVZ1NHVnVjbWxqZFhNZwpUV0ZuYm5WekFBQmtaWE5qQUFBQUFBQUFBQXBEYjJ4dmNsTndhVzRB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZsYUlBQUEK
QUFBQUFQTlNBQUVBQUFBQkZzeFlXVm9nQUFBQUFBQUFZcGNBQUxlSEFBQVkyVmhaV2lBQUFBQUFB
QUFrbmdBQUQ0UUFBTGJEV0ZsYQpJQUFBQUFBQUFHK2hBQUE0OVFBQUE1QmpkWEoyQUFBQUFBQUFB
QUVCemYvdUFBNUJaRzlpWlFCa1FBQUFBQUgvMndDRUFBRUJBUUVCCkFRRUJBUUVCQVFFQkFRRUJB
UUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUNBZ0lDQWdJQ0FnSUNBZ01EQXdNREF3
TUQKQXdNQkFRRUJBUUVCQVFFQkFRSUNBUUlDQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3
TURBd01EQXdNREF3TURBd01EQXdNRApBd01EQXdNREF3TURBLy9BQUJFSUFDSUFLd01CRVFBQ0VR
RURFUUgvM1FBRUFBYi94QUdpQUFBQUJnSURBUUFBQUFBQUFBQUFBQUFICkNBWUZCQWtEQ2dJQkFB
c0JBQUFHQXdFQkFRQUFBQUFBQUFBQUFBWUZCQU1IQWdnQkNRQUtDeEFBQWdFREJBRURBd0lEQXdN
Q0JnbDEKQVFJREJCRUZFZ1loQnhNaUFBZ3hGRUV5SXhVSlVVSVdZU1F6RjFKeGdSaGlrU1ZEb2JI
d0pqUnlDaG5CMFRVbjRWTTJndkdTb2tSVQpjMFZHTjBkaktGVldWeHF5d3RMaThtU0RkSk9FWmFP
enc5UGpLVGhtODNVcU9UcElTVXBZV1ZwbmFHbHFkbmQ0ZVhxRmhvZUlpWXFVCmxaYVhtSm1hcEtX
bXA2aXBxclMxdHJlNHVickV4Y2JIeU1uSzFOWFcxOWpaMnVUbDV1Zm82ZXIwOWZiMytQbjZFUUFD
QVFNQ0JBUUQKQlFRRUJBWUdCVzBCQWdNUkJDRVNCVEVHQUNJVFFWRUhNbUVVY1FoQ2dTT1JGVkto
WWhZekNiRWt3ZEZEY3ZBWDRZSTBKWkpUR0dORQo4YUt5SmpVWlZEWkZaQ2NLYzRPVFJuVEMwdUx5
VldWMVZqZUVoYU96dzlQajh5a2FsS1MweE5UazlKV2x0Y1hWNWZVb1IxZG1PSGFHCmxxYTJ4dGJt
OW1kM2g1ZW50OGZYNS9kSVdHaDRpSmlvdU1qWTZQZzVTVmxwZVltWnFibkoyZW41S2pwS1dtcDZp
cHFxdXNyYTZ2ci8KMmdBTUF3RUFBaEVERVFBL0FOUmVUKzEvcmY4QUVlL3ZoWHk2dzVIRWRRSlRi
L2ZYL3dBVGNmNjN0U3ZTcVB6Nlo1K2VlUHIvQUxmLwpBRnY5djdWcHc2TVl2TWVYWEdQNkwvaWYr
SnQveEh1eDgrbHNYQTlTUmUxdng3WVBwMFpydzZrZTlkUC9BUFFIWC8vUTFGMzUxZjc3CjZlL3Zo
WEZPc09SeEhVR1RnY2Y0L3dDUHRRdkhwVkh4UFROUC9UODZ2ci90L3dBZTFpY09qR0twcWZMcmlu
MFgvWC80bjNiMTZXeFoKeDFLVVh2OEFpMy9HdjZrZjE5c054Nk0xNGRaL2V1bFdqNStWT3YvUjFG
MzRMZjdIMzk4SU9BZXNPQm1uVUdUNmY3Ny9BSXFQYWhlUApTdVBpZnM2WjZqOC9uMWZVV052ci9y
KzFhY09qQ0wrZE91Q2ZSZjhBWC80bjNmMTZYdzhSOXZVdFA5OS90d1A4ZmJCNG5velVZUFdiCjNY
cFZwUDhBRjVmNmoxLy8wdFJtUWZVLzF2OEE3d1BmM3dMdzZ3M1g4UFRmSjlQOXYvdnZ6N1VyeDZW
eDhUMHoxSjU0UDFZL2dEK3YKNEh0WW5EaDBZd2pGVDF3anVRdkhBUDEvMko5MlBuMHZnNGo3ZXBh
Y24vZmZnZyswNTRubzBUMDllczN2M1N2ci85UFVhay80cjcrOQo5ZlByRGNjQjAzU2ZwUDhBckgy
cVhqMHJqK0xwbm0vVitmMUg2Zlg4L1QydFRoMFp4Y0QxeGovSDEvUDEvd0JkdnIvajcyZlBwYkI4
ClM5UzQvci9zRC92ZnRPZUo2TkU0cjl2V1gzN3BYMS8vMlE9PQoKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1jb2xvcnNwaW4t
cHJvZmlsZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L3NtYWxsLXNxdWFyZS13aXRoLWNvbG9yc3Bpbi1wcm9maWxlLnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtH
Z29BQUFBTlNVaEVVZ0FBQUNzQUFBQWlDQUlBQUFCSk1MZGZBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3
RjRwVDkyQUFBQgpGMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphclpHOVNz
TlFBRWJQcllMWVFZc0U2WGdIY1hJb2d1Q3FnZXBnCm9DUVprbXhOR21KQWszQno0dzg0Q3E3ZDNB
VEJaMUIzMXpxSmdqNkZJRG83QkVrZEJjOTBPTk1ISDRnM3krbTdyUTRjWmxyWk85dlMKOHdNNTkw
eWJKVHEwbUIxR1piRTFHT3dCWkhrVzh4c0JYeThJZ0tjMXkrbTcvSTM1cUZBYWVBZFdSM0VaZ2Vn
Q28yTmRhQkJuZ0tFOApQd0F4Qm95azlodkFDR3UvQnd6bDJpYUlDYkNRVEhrNDVUbyswUUJtWHB5
cU5OblhjcjNYMjVDN2NhYlNxQ3FsTlV5eXFvUjZCd0J0Ck16L0lsVk9rR2YrTDV3ZXl0ZzhiQVlq
bFNkUENTN2k3Z081cjAxYXVZUEVjYmgrYWxsL0Q1aWZNaktOS0hmMThJaDYvQVVDclI4ZGQKdlNE
d0FBQUFJR05JVWswQUFIb2xBQUNBZ3dBQWRUQUFBT3BmQUFBNmx3QUFGMjhBQVBvQkFBQ0E2S0J3
Qm9NQUFBR3NTVVJCVkhqYQp0RmRIbHNVd0NKTjQzczM5cjJ2TkFpZHhTM0g1M3FTOEdEQVNncEIv
QWlDaFdERzdGd0JRdUQ2TDZZRXlLUUk4dnlWQWtvYzFFaVlCCklPaVBBT1J2U0JNQUdFYVdteUNa
di91eThUeWc2ck9PUkxDeTE0Tm8zUU1JWTFZRVJEZERiRnJoS1dYVlBWUTRKbFIvVUFGMHdVVG8K
TG9LM1RCSWdvQ3QvaFE5MlhZNHQ2M3Z0TXJDaEV1TUdGT3dkQlIwa05QYVlvUjlFMEtKQUhuV1lw
VjE3bUdpZnFoaVhLRzFmNFNVQgpkY0o1eVVLdkZuNkF3aHRHZTJxaEpoUDdlcE9jSlQ3S1Nmck14
Qk00WlVaOG1hWTBzWFV3QWNJUk5JY2owQ1ltcGx4cW5BZmMxQW9rCjVkZ3RNVkZjUzhOcWQrWmtM
ZmlXU0FnU0ZJWlFVTk0ySjFUNW5KRjhjRnJLZ1dFeUJ3VUs2bE5NZlNaYU1SM29WUThhd3RpeHhh
NWEKR0RwRDNNUEVlVlVtcy9iSVBTMXlTcEZpVEtFVHBDMk9DRk9LNUN6ZUpGQmhGQVcvcEdOcnc0
dzBoWUswaDRRVkNxK0ZYVlNqQzZMMgpSZkRrWGxuaFJZK0RQbGM4NThwNjhoS0pmRGo0aGdJTFgv
TFJXWDAxU0lyN095Wm1KK0tYM3YvbDkzYTRPL1BMSVczQWNGaW4wdGxtCnpzb2NxdEJ3MzRudnB4
SVZ2N0NWSkVnYWFqYi9Bd0NpbEx1RnB1a1RvQUFBQUFCSlJVNUVya0pnZ2c9PQoKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1l
LXNyZ2ItcHJvZmlsZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLWUtc3JnYi1wcm9maWxlLnBuZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3
MEtHZ29BQUFBTlNVaEVVZ0FBQUNzQUFBQWlDQUlBQUFCSk1MZGZBQUFBQ1hCSVdYTUFBQzRqQUFB
dUl3RjRwVDkyQUFBRgpqMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphN2Rk
ck5KUjVIQWZ3N3hpM2lpaVhFcmJKSlVXS0laY3hGODh3CnFHUWpVYksxREZJTTA4eEl0bFpiSjZm
TGFwTXUyMjBqMG9XMmkyeEpGK21Ha2hNMmxheExzV3hLVWxTaS83N283SkYyMisxRjUyd3YKbnQr
cjMvODV6L043enZNOG4vUC9uZ2N3TnFQY2hTSmxBSklZaGN6UFU4aWFQU2VJcFZhSndkQUNBQ0JF
TEpkU00yWjQ0NStMQVhSWApnd0VBVmRhVXUxRGtsN3FsS1ZESmQ5aTk2NmJudFhPR04rSGZhNGhZ
S2xNQURIVUFNV0hoY2pIQVdBcGdYTHhDcWdBWTZRQjBRNk9rCkNvQ1JCMEJYSEJrU0JqQktBRXln
MkVJYmdQRWNVTjFPc1lYc2QzcGJRRDBaVU4wdVpGTTJnSllab0FZaG0ySy8wOXNDK21hQUdpVFIK
Y2VMKzU0RkdlTXlzbVFEOEFCakJEYkdRSWdFeUxNUUNSRUlCRnRpd2dRM1lZSUZDR0dJUmluQ3dN
Qk1Ka0VPQmNFZ2dCd3RURUFNeApZaUdERkxHUUlRUUtoQ01NSDdxZkJnQWpoTU1hY3ZqQkU4TFpj
NEpZYjAvcmY4Zjl4NWo2QU5NT1VOb25qN0JqdjUybUlRQlVhZ2w1Ck5oWlFTd0g2VWdsNXZaZVF2
Z3lBV1F0Y1dDeWhoQ3dBWURJQkFDd0E3Z0FVZjMwUWNaeHN5WC8xd0RmbFFQUVNZSnczd044UGxE
NEcKaHVrQXpJZUFZU0JRcWtOSTRVNUN6azBtcEtTbC8xb0dBRWFVVXFXeW5VcUthcXM2WjlEYXdS
VWErcHF6aHFab1hkSHVIbTZxTTFWWApvcGVzbnpXaVlPUjFnOXVqNmd3YmplcU43MzVSUHJxUWxU
Tm1zMG04YVlDWnJibTZlYzNZZ3hheWNVN2plc2Fmc3BSYWpiVzZQV0cxCnRiVjE1VVQ1Sk8xSjJU
WUNtd3JiZWJhdDdCajJVenVwWFp0OXFIMzFaSS9KSnh5TUhGWTVORG02T2U1eDdIYWE1dlNUVTV1
emczT2kKOHlXT01zZU5zNEtUejJsM0dlUGk2NUxvY3NpbHdxV2JhOEIxNWdaeVpkeGtiZ2IzRkxl
VWU0L2J6Z052T00rTTU4RHo0Z1h4b25tSgp2RlRlSVY0UnI1YjNpbS9BZCtIUDU2L2hIK2ZYQ1RR
RkFvRkNjRmpRNG1ydUd1R2E3ZHBKY2FsMVZJMXdvakJKMk9ER2QwdHpWM2FQCmRyOGo4aElWZU5o
NjVIaU85OHoyc3ZFNlBVVTBwWHJxb21uTWFXbmVBdThIMDcvM2NmUnArWExYREg5ZmJkK2JmbHRu
enZPMzh1K2IKVlJsd09IRDliTWtjL3lEQjNFbkJwbDhaelRPWVArcHJWb2hWS0Vmc0U3WWdmSFhF
L2dWbGtTOFdXVVFGUjIrVlZNWHFTK2N0enBIMQpLbWJHSFlrZnVsU2VVTGRzK3ZLaVJNNksvSlhj
VlpkWCt5VTFyVm0rem1EOW1lVFFIN1EyWHRnVXY5bCtTOWUyczl2WDdnemFiYnRICk02MTk3NjNN
aTFsNUIzSU9IY3pKL2puM2FPSHh5aE50SndmbFd4Y0VuRTA2Zi9yQ3MwdDJWeEtLTDEvVEs0c3VM
Nm13ckVxdHhoMUYKemVQZkpQV2Q5Nzl0SHRxUzlWRDRxT25KaGs3dTg0NFhPVDNSZld4Q2FBdTBC
ZG9DYmVGOUM1OG1seEp5Z2FobGdFVTd3TmNEU2d3QQo3VGFBMlFnWWpnU0tLVUtLcGhOeS9oVWgx
NEpwZjdRL2VpK2lMZEFXYUFzZnpDVWg5YUZjMmc2ZzlxTnlTWWxSTXVDdlY0bFIvTjY2CmhCQmlT
Z2d4SW9TNGZjeE1KU1dsZ1NNQVJIUkVkRVIwK0x5TTNKVHo0NGlYbDFmT3ZRQmNOVTJQSk1UUlls
RmNxNXBUeVZHajQycGIKOHVlTGRtaHRDOHA4Tk5ENVoxc1RHWTNNUFNvUmFweEJoa01HYTZwcjZR
OXowRm1vbHp0U2QxU0tzZVhvRnBNeTgvcnhWaFBPMktUYgpkemszQ1FvOFRmemswUUZMWFZiY1NN
cGYvOHRHbmMzWXRuVkg4KzYrdE9hTWZWblVnY0pzazhPU0l4bkhMdVZXNVZXZUxNclBMRmg2ClZu
aU9GSjRvQ3I3WWUzbkxWZFBpN0ZMTGE1bGxlamRXbHY5KzA2TWl2YkxyVjlHdGpkWFZkMGJjOWEv
WmNPOWk3Yk02VnYyVWh0akcKVGZlUFBTaHJhbTd1YWRGc05mN0Q4cUY5Ry9jUjlkaXQzZjBKMWNG
NzZ0QnAvY3prdVc2WFN0Zno3b1lYMTEvbXZkclY4OTFyY2Erbwp6L3dOODAwRE9VTStxNkl0MEJa
b0M3U0Y5K3ZUNUo5cXdzQ3crdnVha040R1Fub3ZFdExuVCtjZjdaemU4MmdMdEFYYXd2OWRmd0xi
CmFXUzNSU01VdndBQUFDQmpTRkpOQUFCNkp3QUFnSVVBQUFBQUFBQjh0QUFBQVU0QUFZVlJBQUFB
QUFBQUFBcFhKcDV2QUFBQnJFbEUKUVZSNDJyUlhSNWJGTUFpVGVON04vYTlyelFJbmNVdHgrZDZr
dkJnd0VvS1Fmd0lnb1ZneHV4Y0FVTGcraSttQk1pa0NQTDhsUUpLSApOUkltQVNEb2p3RGtiMGdU
QUJoR2xwc2dtYi83c3ZFOG9PcXpqa1N3c3RlRGFOMERDR05XQkVRM1EyeGE0U2xsMVQxVU9DWlVm
MUFCCmRNRkU2QzZDdDB3U0lLQXJmNFVQZGwyT0xldDc3VEt3b1JMakJoVHNIUVVkSkRUMm1LRWZS
TkNpUUI1MW1LVmRlNWhvbjZvWWx5aHQKWCtFbEFYWENlY2xDcnhaK2dNSWJSbnRxb1NZVCszcVRu
Q1UreWtuNnpNUVRPR1ZHZkptbU5MRjFNQUhDRVRTSEk5QW1KcVpjYXB3SAozTlFLSk9YWUxURlJY
RXZEYW5mbVpDMzRsa2dJRWhTR1VGRFROaWRVK1p5UmZIQmF5b0ZoTWdjRkN1cFRUSDBtV2pFZDZG
VVBHc0xZCnNjV3VXaGc2UTl6RHhIbFZKclAyeUQwdGNrcVJZa3loRTZRdGpnaFRpdVFzM2lSUVlS
UUZ2NlJqYThPTU5JV0N0SWVFRlFxdmhWMVUKb3d1aTlrWHc1RjVaNFVXUGd6NVhQT2ZLZXZJU2lY
dzQrSVlDQzEveTBWbDlOVWlLK3pzbVppZmlsOTcvNWZkMnVEdnp5eUZ0d0hCWQpwOUxaWnM3S0hL
clFjTitKNzZjU0ZiK3dsU1JJR21vMi93TUFvcFM3aGFicEU2QUFBQUFBU1VWT1JLNUNZSUk9CgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3NtYWxsLXNxdWFy
ZS13aXRoLXNtcHRlLWMtcHJvZmlsZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL3NtYWxsLXNxdWFyZS13aXRoLXNtcHRlLWMtcHJvZmlsZS5wbmcKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQoKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDc0FBQUFpQ0FJQUFBQkpNTGRmQUFBQUNYQklX
WE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUIKTldsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBi
R1VBQUhqYXJaRTdTOE5nRkVEUEZ3ZExoU0EwNlBwdHVoUkNsZUthUGhCQgpwYllka216TmcvcWdT
Zmp5K2VqU0h5RnUvZ0hkSFJ3Yy9BRWRCTUhKbitBbU9EazRCQWxPSW5pbWM4OXd1WERCV0hjNnJh
NnhESk5FCnEvNTJTN3FlTHhlZnFMQkVqU2Fib3pEUG5GNXZGeUJKazVpZkNQaDRRUUE4MTUxT3E4
dmZxSWFaMHNBbjBJamlQQVJoQThHNXpqU0kKSzhBS1RqSU40Z2F3MUxEZkJ2RUFtT1BDNTRBWkZQ
NEttTXIxZkJCdmdEVjJQUjhNQUNzbzNBSXNIVjlvZ0hhYVRkWFIrRkRMaG0zYgowb25TSUphRGFh
N2pTUzUza2pCVldhcEdPbzZBNGo0QUtvTzkzckJiYi9QZnVKNHZDM3MvUUFCaVpWNjJrdkJVblgz
L3dOajRmUzUzCkhGL0MxaU1zek1vVzNjSmRGVlpIWlZ1N2hsb1Q3dmUvQUhsNFRlbmYzRmliQUFB
QUlHTklVazBBQUhvbEFBQ0Fnd0FBOWhnQUFJVFIKQUFCNUdRQUE2R3dBQUR5TEFBQWJXTHM4aXA0
QUFBR3NTVVJCVkhqYXRGZEhsc1V3Q0pONDNzMzlyMnZOQWlkeFMzSDUzcVM4R0RBUwpncEIvQWlD
aFdERzdGd0JRdUQ2TDZZRXlLUUk4dnlWQWtvYzFFaVlCSU9pUEFPUnZTQk1BR0VhV215Q1p2L3V5
OFR5ZzZyT09STEN5CjE0Tm8zUU1JWTFZRVJEZERiRnJoS1dYVlBWUTRKbFIvVUFGMHdVVG9Mb0sz
VEJJZ29DdC9oUTkyWFk0dDYzdnRNckNoRXVNR0ZPd2QKQlIwa05QYVlvUjlFMEtKQUhuV1lwVjE3
bUdpZnFoaVhLRzFmNFNVQmRjSjV5VUt2Rm42QXdodEdlMnFoSmhQN2VwT2NKVDdLU2ZyTQp4Qk00
WlVaOG1hWTBzWFV3QWNJUk5JY2owQ1ltcGx4cW5BZmMxQW9rNWRndE1WRmNTOE5xZCtaa0xmaVdT
QWdTRklaUVVOTTJKMVQ1Cm5KRjhjRnJLZ1dFeUJ3VUs2bE5NZlNaYU1SM29WUThhd3RpeHhhNWFH
RHBEM01QRWVWVW1zL2JJUFMxeVNwRmlUS0VUcEMyT0NGT0sKNUN6ZUpGQmhGQVcvcEdOcnc0dzBo
WUswaDRRVkNxK0ZYVlNqQzZMMlJmRGtYbG5oUlkrRFBsYzg1OHA2OGhLSmZEajRoZ0lMWC9MUgpX
WDAxU0lyN095Wm1KK0tYM3YvbDkzYTRPL1BMSVczQWNGaW4wdGxtenNvY3F0QnczNG52cHhJVnY3
Q1ZKRWdhYWpiL0F3Q2lsTHVGCnB1a1RvQUFBQUFCSlJVNUVya0pnZ2c9PQoKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9zbWFsbC1zcXVhcmUtd2l0aC1zcmdi
LWllYzYxOTY2LTIuMS1wcm9maWxlLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9yZXNvdXJjZXMvc21hbGwtc3F1YXJlLXdpdGgtc3JnYi1pZWM2MTk2Ni0yLjEtcHJvZmls
ZS5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDc0FBQUFpQ0FJQUFBQkpNTGRm
QUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUsKVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5E
SUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVQprU1lx
SVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0
WHVqYTlhODkrYk4vclhYClB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVR
SUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUIKZU5NTENBREFUWnZBTUJ5SC93L3FR
cGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdApB
R0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4
UTVBTmd0QURCSlYyWklBTEMzCkFNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFC
Ukc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFgKTGg0b3pra1hLeFEyWVFKaG1r
QXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQ
Kwo1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09u
YVYvTncrSDQ4UEVXaGtMbloyZVhrCjVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3
aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QKMHlMRVNXSzVXQ29VNDFF
U2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNR
V0hUQQo0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRL
c3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBCkJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpn
S2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGgKQ0o3QktMeUJDUVJC
eUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklI
Zkk5Y2dJNQpoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXht
bzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrClE4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5
N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE0KV0U3WVNLZ2dI
Q1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55
UVNpVU15SjdtUQpBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJ
WGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvClVzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0
Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHAKcitoMHVo
SGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRz
WngxUXdOekhybU9lWgpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFY
TFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iClUyZXBPNmlIcW1lb2IxUS9wSDVaL1lr
R1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkKL1Iy
N2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkw
VExreFpWeHJxcGFYbGxpcgpTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9P
QlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1CnArNllucjVlZ0o1TWI2ZmVlYjNu
K2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmgK
bFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1L
YVk3VER0TXg4M016YUxOMXBrMQptejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFw
bG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPCmswNnJudFpudzdEeHRzbTJx
YmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3
UnkKRkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0
UHppSXVKUzRMTExwYytMcHNieHQzSQp2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdv
ZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCClo3WG5JeTlqTDVGWHJk
ZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85
ay8zci8KMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRL
dGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cApEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1
d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxClBObzN1alM2UDhZ
dVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNG
cHhhcExoSXMKT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5j
S2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNQpoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5
TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RCnJBVlpMUXEy
UXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJw
WVpMVnkwZFdPYTkKckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1l
azFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZApUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJG
NWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYCkRtNE4y
ZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0
TGR0V0hYK0c3UjdodDcKdlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1
bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzUwpQVlJTajlZcjYwY094eCsrL3AzdmR5
ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthClJw
dFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFox
OWZpNzUzR0Rib3JaNzUyUE8KMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdo
WG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMQplMmIzNlJ1ZU44N2Q5TDE1OFJi
LzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZW
ClAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5p
UDNMOTZmeW5RODlrenlhZUYvNmkKL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJB
NnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOApJSDhvLzJqNXNmVlQwS2Y3
a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdB
QURxCllBQUFPcGdBQUJkdmtsL0ZSZ0FBQWF4SlJFRlVlTnEwVjBlV3hUQUlrM2plemYydmE4MENK
M0ZMY2ZuZXBMd1lNQktDa0g4Q0lLRlkKTWJzWEFGQzRQb3ZwZ1RJcEFqeS9KVUNTaHpVU0pnRWc2
SThBNUc5SUV3QVlScGFiSUptLys3THhQS0RxczQ1RXNMTFhnMmpkQXdoagpWZ1JFTjBOc1d1RXBa
ZFU5VkRnbVZIOVFBWFRCUk9ndWdyZE1FaUNnSzMrRkQzWmRqaTNyZSsweXNLRVM0d1lVN0IwRkhT
UTA5cGloCkgwVFFva0FlZFppbFhYdVlhSitxR0pjb2JWL2hKUUYxd25uSlFxOFdmb0RDRzBaN2Fx
RW1FL3Q2azV3bFBzcEorc3pFRXpobFJueVoKcGpTeGRUQUJ3aEUwaHlQUUppYW1YR3FjQjl6VUNp
VGwyQzB4VVZ4THcycDM1bVF0K0paSUNCSVVobEJRMHpZblZQbWNrWHh3V3NxQgpZVElIQlFycVUw
eDlKbG94SGVoVkR4ckMyTEhGcmxvWU9rUGN3OFI1VlNhejlzZzlMWEpLa1dKTW9ST2tMWTRJVTRy
a0xONGtVR0VVCkJiK2tZMnZEakRTRmdyU0hoQlVLcjRWZFZLTUxvdlpGOE9SZVdlRkZqNE0rVnp6
bnlucnlFb2w4T1BpR0FndGY4dEZaZlRWSWl2czcKSm1ZbjRwZmUvK1gzZHJnNzg4c2hiY0J3V0tm
UzJXYk95aHlxMEhEZmllK25FaFcvc0pVa1NCcHFOdjhEQUtLVXU0V202Uk9nQUFBQQpBRWxGVGtT
dVFtQ0MKCg==
</data>
<flag name="review"
          id="64742"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="64743"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>