<?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>42907</bug_id>
          
          <creation_ts>2010-07-23 13:22:21 -0700</creation_ts>
          <short_desc>texture functions should gen INVALID_OPERATION if no texture is bound</short_desc>
          <delta_ts>2010-08-10 13:45:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Gregg Tavares">gman</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>255527</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2010-07-23 13:22:21 -0700</bug_when>
    <thetext>As per the spec section 5.13.8, if no texture is bound all texture related functions should generate INVALID_OPERATION

eg

gl.bindTexture(gl.TEXTURE_2D, null)
gl.texImage2D(gl.TEXTURE_2D, ...)    &lt;-  should generate INVALID_OPERATION

This conformance test has been updated to show the issue

https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/null-object-behaviour.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261626</commentid>
    <comment_count>1</comment_count>
      <attachid>63796</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-06 19:40:06 -0700</bug_when>
    <thetext>Created attachment 63796
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262286</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-09 13:20:17 -0700</bug_when>
    <thetext>forget to mention: tests are synced with khronos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262529</commentid>
    <comment_count>3</comment_count>
      <attachid>63796</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-10 00:32:32 -0700</bug_when>
    <thetext>Comment on attachment 63796
patch

The code changes look OK but there is an issue with the test:

LayoutTests/fast/canvas/webgl/null-object-behaviour.html:44
 +  shouldGenerateGLError(context, context.NO_ERROR, &quot;context.bindTexture(context.TEXTURE_2D, undefined)&quot;);
I think it&apos;s a bug in the WebKit WebGL bindings that these accept &quot;undefined&quot; as argument. They should raise TypeError. Only null is a valid non-WebGLTexture argument. If this part of the test is removed then thumbs up from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262711</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-10 09:30:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 63796 [details])
&gt; The code changes look OK but there is an issue with the test:
&gt; 
&gt; LayoutTests/fast/canvas/webgl/null-object-behaviour.html:44
&gt;  +  shouldGenerateGLError(context, context.NO_ERROR, &quot;context.bindTexture(context.TEXTURE_2D, undefined)&quot;);
&gt; I think it&apos;s a bug in the WebKit WebGL bindings that these accept &quot;undefined&quot; as argument. They should raise TypeError. Only null is a valid non-WebGLTexture argument. If this part of the test is removed then thumbs up from me.

I&apos;ll fix the test on khronos and in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262733</commentid>
    <comment_count>5</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2010-08-10 10:01:28 -0700</bug_when>
    <thetext>If undefined is supposed to generate type error then please change the test to check for type error, don&apos;t delete the test.

I ran into tons of no fun bugs in my own code because I was passing undefined unintentionally, misspellings of properties, here and there and WebGL was not complaining about it.  I wasn&apos;t sure if it was supposed to complain or not so I ended up wrapping the entire API with a wrapper that checks that no args I pass are undefined.

If those are supposed to reject undefined then we should test that they do.

Is this only for parameters that take null or also for parameters that take number or boolean as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262748</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-10 10:30:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; If undefined is supposed to generate type error then please change the test to check for type error, don&apos;t delete the test.

I will use null instead.

&gt; 
&gt; I ran into tons of no fun bugs in my own code because I was passing undefined unintentionally, misspellings of properties, here and there and WebGL was not complaining about it.  I wasn&apos;t sure if it was supposed to complain or not so I ended up wrapping the entire API with a wrapper that checks that no args I pass are undefined.

I think it should so I am planning a patch for it.  However, we need to run through the WebKit folks first because it effects more than just WebGL.

&gt; 
&gt; If those are supposed to reject undefined then we should test that they do.

Yes, &quot;more/functions&quot; in khronos conformance tests have a lot of tests for illegal input parameters.

&gt; 
&gt; Is this only for parameters that take null or also for parameters that take number or boolean as well?

The part of the js binding code I am touching will only check for parameters that take null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262760</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-10 10:56:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; If undefined is supposed to generate type error then please change the test to check for type error, don&apos;t delete the test.

After another a look at the test, I realized it&apos;s a whole section of tests against &quot;undefined&quot; input.

I&apos;ll leave them out in the LayoutTests here and add them back with &quot;shouldThrow&quot; once we have the js binding patch in.

For now LayoutTests and khronos conformance tests will not be the same, but I see no way around it.

&gt; 
&gt; I ran into tons of no fun bugs in my own code because I was passing undefined unintentionally, misspellings of properties, here and there and WebGL was not complaining about it.  I wasn&apos;t sure if it was supposed to complain or not so I ended up wrapping the entire API with a wrapper that checks that no args I pass are undefined.
&gt; 
&gt; If those are supposed to reject undefined then we should test that they do.
&gt; 
&gt; Is this only for parameters that take null or also for parameters that take number or boolean as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262767</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-10 11:08:44 -0700</bug_when>
    <thetext>after more thinking, I feel we should check in the patch as it is.  The current test has a nice pattern that tests against 0, undefined, null.  We shouldn&apos;t break the pattern by removing part of the undefined section (there are already a few undefined in the test).

We should check them in, and later when we fix the js binding, we change all the 0 and undefined tests to shouldThrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262799</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-10 11:36:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; after more thinking, I feel we should check in the patch as it is.  The current test has a nice pattern that tests against 0, undefined, null.  We shouldn&apos;t break the pattern by removing part of the undefined section (there are already a few undefined in the test).
&gt; 
&gt; We should check them in, and later when we fix the js binding, we change all the 0 and undefined tests to shouldThrow.

OK. As we&apos;ve discussed separately, I was wrong that the tests which pass &quot;undefined&quot; should raise TypeError. Those should convert to null. Patch looks fine as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262834</commentid>
    <comment_count>10</comment_count>
      <attachid>63796</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-10 13:39:09 -0700</bug_when>
    <thetext>Comment on attachment 63796
patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262836</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-10 13:45:16 -0700</bug_when>
    <thetext>Committed r65089: &lt;http://trac.webkit.org/changeset/65089&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63796</attachid>
            <date>2010-08-06 19:40:06 -0700</date>
            <delta_ts>2010-08-10 13:39:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>tex.patch</filename>
            <type>text/plain</type>
            <size>22966</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDg5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDgtMDYgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0ZXh0dXJl
IGZ1bmN0aW9ucyBzaG91bGQgZ2VuIElOVkFMSURfT1BFUkFUSU9OIGlmIG5vIHRleHR1cmUgaXMg
Ym91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
OTA3CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRCk6
IENoZWNrIGlmIGEgdGV4dHVyZSBpcyBib3VuZCB0byB0YXJnZXQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFt
ZXRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEQmFzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhQYXJhbWV0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXh0dXJlQmluZGluZyk6IENoZWNr
IGlmIHRhcmdldCBpcyB2YWxpZCBhbmQgaWYgYSB0ZXh0dXJlIGlzIGJvdW5kIHRvIGl0LgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOiBEZWNsYXJlIHZhbGlk
YXRlVGV4dHVyZUJpbmRpbmcoKS4KKwogMjAxMC0wOC0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24g
NjQ4ODgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Y29weVRleEltYWdlCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJz
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlu
dGVybmFsZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkpCiAgICAgICAg
IHJldHVybjsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmco
dGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
aXNHTEVTMkNvbXBsaWFudCgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAm
JiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkKICAgICAgICAgICAgICYmICFpc1RleElu
dGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKGludGVybmFsZm9ybWF0LApA
QCAtNTQwLDIxICs1NDMsMjAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJ
bWFnZQogICAgIH0KICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwogICAgIC8vIEZJ
WE1FOiBpZiB0aGUgZnJhbWVidWZmZXIgaXMgbm90IGNvbXBsZXRlLCBub25lIG9mIHRoZSBiZWxv
dyBzaG91bGQgYmUgZXhlY3V0ZWQuCi0gICAgV2ViR0xUZXh0dXJlKiB0ZXggPSBnZXRUZXh0dXJl
QmluZGluZyh0YXJnZXQpOwotICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAg
IGlmICh0ZXgpCi0gICAgICAgICAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUpOwotICAgIH0KLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgdGV4KQorICAg
IGlmICghaXNHTEVTMkNvbXBsaWFudCgpKQorICAgICAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykKICAgICAg
ICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQXR0YWNoZWRPYmplY3RDaGFuZ2UodGV4KTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
bGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CisgICAgV2ViR0xUZXh0dXJl
KiB0ZXggPSB2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1ZSk7CisgICAgaWYgKCF0
ZXgpCisgICAgICAgIHJldHVybjsKICAgICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkgewotICAg
ICAgICBXZWJHTFRleHR1cmUqIHRleCA9IGdldFRleHR1cmVCaW5kaW5nKHRhcmdldCk7Ci0gICAg
ICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2Jq
ZWN0KCkgJiYgdGV4CisgICAgICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2ZyYW1l
YnVmZmVyQmluZGluZy0+b2JqZWN0KCkKICAgICAgICAgICAgICYmICFpc1RleEludGVybmFsRm9y
bWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRDb2xvckJ1ZmZlckZvcm1hdCgpKSkgewog
ICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMTExNSwyMiArMTExNywxOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6ZnJvbnRGYWNlKHVuCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25nIHRhcmdldCkKIHsKLSAgICBSZWZQdHI8
V2ViR0xUZXh0dXJlPiB0ZXg7CisgICAgV2ViR0xUZXh0dXJlKiB0ZXggPSB2YWxpZGF0ZVRleHR1
cmVCaW5kaW5nKHRhcmdldCwgZmFsc2UpOworICAgIGlmICghdGV4KQorICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgaWYgKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKLSAgICAgICAgICAgIHRleCA9IG1fdGV4dHVy
ZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZzsKLSAgICAgICAg
ZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKQot
ICAgICAgICAgICAgdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlQ3ViZU1hcEJpbmRpbmc7Ci0gICAgICAgIGlmICh0ZXggJiYgIXRleC0+Y2FuR2VuZXJh
dGVNaXBtYXBzKCkpIHsKKyAgICAgICAgaWYgKCF0ZXgtPmNhbkdlbmVyYXRlTWlwbWFwcygpKSB7
CiAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAgICAgbV9jb250ZXh0LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOwotICAgIGlmICgh
aXNHTEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAgIGlmICh0ZXgpCi0gICAgICAgICAgICB0ZXgt
PmdlbmVyYXRlTWlwbWFwTGV2ZWxJbmZvKCk7Ci0gICAgfQorICAgIGlmICghaXNHTEVTMkNvbXBs
aWFudCgpKQorICAgICAgICB0ZXgtPmdlbmVyYXRlTWlwbWFwTGV2ZWxJbmZvKCk7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTU3OSwxMSArMTU3Nyw5IEBA
IFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN0cmluZygKIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGVjKTsKLSAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJECi0gICAgICAgICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJF
X01BUCkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVU
ZXh0dXJlQmluZGluZyh0YXJnZXQsIGZhbHNlKTsKKyAgICBpZiAoIXRleCkKICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOwotICAgIH0KICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywg
ZmFsc2UpOwogICAgIGludCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoIChwbmFtZSkgewpAQCAtMjEw
NSw2ICsyMTAxLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRCYQog
ICAgIGVjID0gMDsKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnModGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBl
KSkKICAgICAgICAgcmV0dXJuOworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVUZXh0
dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4KQorICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpIHsKICAgICAgICAgaWYgKGxldmVsICYmIFdl
YkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWlnaHQpKSB7CiAgICAgICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
QEAgLTIxMTMsMTIgKzIxMTIsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1h
Z2UyREJhCiAgICAgfQogICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgV2ViR0xUZXh0dXJlKiB0ZXggPSBn
ZXRUZXh0dXJlQmluZGluZyh0YXJnZXQpOwotICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKSB7
Ci0gICAgICAgIGlmICh0ZXgpCi0gICAgICAgICAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdHlwZSk7Ci0gICAgfQotICAg
IGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiB0ZXgpCisgICAgaWYgKCFpc0dMRVMyQ29tcGxp
YW50KCkpCisgICAgICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCB0eXBlKTsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRp
bmcpCiAgICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkF0dGFjaGVkT2JqZWN0Q2hhbmdl
KHRleCk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTIzMzUs
MTkgKzIzMzEsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCBwYXJhbWYsIGludCBwYXJhbWksIGJv
b2wgaXNGbG9hdCkKIHsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJp
bmRpbmcodGFyZ2V0LCBmYWxzZSk7CisgICAgaWYgKCF0ZXgpCisgICAgICAgIHJldHVybjsKICAg
ICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkgewotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiB0ZXggPSAwOwotICAgICAgICBzd2l0Y2ggKHRhcmdldCkgewotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOgotICAgICAgICAgICAgdGV4ID0gbV90ZXh0dXJlVW5p
dHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVA6
Ci0gICAgICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5t
X3RleHR1cmVDdWJlTWFwQmluZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQog
ICAgICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUjoKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSOgpAQCAtMjM2NCwxMiArMjM1MSwxMCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4UGFyYW1ldGVyCiAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmICh0ZXgpIHsKLSAgICAgICAgICAgIGlmIChp
c0Zsb2F0KQotICAgICAgICAgICAgICAgIHRleC0+c2V0UGFyYW1ldGVyZihwbmFtZSwgcGFyYW1m
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXgtPnNldFBhcmFtZXRlcmko
cG5hbWUsIHBhcmFtaSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGlzRmxvYXQpCisgICAgICAg
ICAgICB0ZXgtPnNldFBhcmFtZXRlcmYocG5hbWUsIHBhcmFtZik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRleC0+c2V0UGFyYW1ldGVyaShwbmFtZSwgcGFyYW1pKTsKICAgICB9CiAgICAg
aWYgKGlzRmxvYXQpCiAgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBu
YW1lLCBwYXJhbWYpOwpAQCAtMjM5Niw3ICsyMzgxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleFN1YkltYWdlMgogICAgIGVjID0gMDsKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVu
Y0Zvcm1hdEFuZFR5cGUoZm9ybWF0LCB0eXBlKSkKICAgICAgICAgcmV0dXJuOwotCisgICAgaWYg
KCF2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1ZSkpCisgICAgICAgIHJldHVybjsK
ICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0zMzExLDEyICszMjk3LDEyIEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleEludGVybmEKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXh0dXJlQmluZGlu
Zyh1bnNpZ25lZCBsb25nIHRhcmdldCkKK1dlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBib29sIHVz
ZVNpeEVudW1zRm9yQ3ViZU1hcCkKIHsKLSAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiB0ZXggPSAw
OworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gMDsKICAgICBzd2l0Y2ggKHRhcmdldCkgewogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6Ci0gICAgICAgIHRleCA9IG1fdGV4
dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZzsKKyAgICAg
ICAgdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRC
aW5kaW5nLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgpAQCAtMzMyNCwxMiArMzMxMCwyNiBAQCBX
ZWJHTFRleHR1cmUqIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgIHRleCA9
IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5k
aW5nOworICAgICAgICBpZiAoIXVzZVNpeEVudW1zRm9yQ3ViZU1hcCkgeworICAgICAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHRleCA9IG1f
dGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5n
LmdldCgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX0NVQkVfTUFQOgorICAgICAgICBpZiAodXNlU2l4RW51bXNGb3JDdWJlTWFwKSB7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAg
dGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1h
cEJpbmRpbmcuZ2V0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5V
TSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAodGV4ICYmIHRleC0+b2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0ZXguZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCF0
ZXgpCisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gdGV4OwogfQogCiBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZSh1bnNpZ25lZCBs
b25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA2NDg4OCkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
MCw4ICs0NjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNUZXhJbnRlcm5hbEZvcm1hdENvbG9y
QnVmZmVyQ29tYmluYXRpb25WYWxpZCh1bnNpZ25lZCBsb25nIHRleEludGVybmFsRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIGNvbG9yQnVmZmVyRm9ybWF0KTsKIAotICAgIC8vIEhlbHBlciBmdW5jdGlv
biB0byBnZXQgdGhlIGN1cnJlbnQgYm91bmQgdGV4dHVyZS4KLSAgICBXZWJHTFRleHR1cmUqIGdl
dFRleHR1cmVCaW5kaW5nKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KTsKKyAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gdG8gY2hlY2sgdGFyZ2V0IGFuZCB0ZXh0dXJlIGJvdW5kIHRvIHRoZSB0YXJnZXQuCisg
ICAgLy8gR2VuZXJhdGUgR0wgZXJyb3JzIGFuZCByZXR1cm4gMCBpZiB0YXJnZXQgaXMgaW52YWxp
ZCBvciB0ZXh0dXJlIGJvdW5kIGlzCisgICAgLy8gbnVsbC4gIE90aGVyd2lzZSwgcmV0dXJuIHRo
ZSB0ZXh0dXJlIGJvdW5kIHRvIHRoZSB0YXJnZXQuCisgICAgV2ViR0xUZXh0dXJlKiB2YWxpZGF0
ZVRleHR1cmVCaW5kaW5nKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBib29sIHVzZVNpeEVudW1zRm9y
Q3ViZU1hcCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaW5wdXQgZm9ybWF0
L3R5cGUgZm9yIGZ1bmN0aW9ucyB7Y29weX1UZXh7U3VifUltYWdlLgogICAgIC8vIEdlbmVyYXRl
cyBHTCBlcnJvciBhbmQgcmV0dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjQ4OTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0wNiAgWmhlbnlhbyBNbyAgPHptb0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIHRleHR1cmUgZnVuY3Rpb25zIHNob3VsZCBnZW4gSU5WQUxJRF9PUEVSQVRJT04gaWYgbm8g
dGV4dHVyZSBpcyBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI5MDcKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVz
dHMtZXhwZWN0ZWQudHh0OiBOZWVkIHRvIGJpbmQgYSB0ZXh0dXJlIGJlZm9yZSB0ZXN0aW5nIHRl
eC1mdW5jdGlvbnMuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10ZXN0cy5o
dG1sOiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhh
dmlvdXItZXhwZWN0ZWQudHh0OiBUZXN0IHRleC1mdW5jdGlvbnMgd2hlbiBubyB0ZXh0dXJlIGlz
IGJvdW5kLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91
ci5odG1sOiBEaXR0by4KKwogMjAxMC0wOC0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10ZXN0cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10ZXN0cy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDY0ODU3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtZW51bS10ZXN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEzICsxOSwx
MyBAQCBQQVNTIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAzLCBkCiBQQVNTIGdsLmRp
c2FibGUoZGVza3RvcEdMWydDTElQX1BMQU5FMCddKSBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5V
TS4KIFBBU1MgZ2wuZGlzYWJsZShkZXNrdG9wR0xbJ1BPSU5UX1NQUklURSddKSBzaG91bGQgcmV0
dXJuIElOVkFMSURfRU5VTS4KIFBBU1MgZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JV
RkZFUiwgZGVza3RvcEdMWydQSVhFTF9QQUNLX0JVRkZFUiddKSBzaG91bGQgcmV0dXJuIElOVkFM
SURfRU5VTS4KLVBBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGRlc2t0b3BH
TFsnR0VORVJBVEVfTUlQTUFQJ10pIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVNLgotUEFTUyBn
bC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZGVza3RvcEdMWydHRU5FUkFURV9NSVBN
QVAnXSkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCiBQQVNTIGdsLmhpbnQoZGVza3RvcEdM
WydQRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQnXSwgZ2wuRkFTVEVTVCkgc2hvdWxkIHJldHVy
biBJTlZBTElEX0VOVU0uCiBQQVNTIGdsLmlzRW5hYmxlZChkZXNrdG9wR0xbJ0NMSVBfUExBTkUw
J10pIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVNLgogUEFTUyBnbC5pc0VuYWJsZWQoZGVza3Rv
cEdMWydQT0lOVF9TUFJJVEUnXSkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCiBQQVNTIGds
LnBpeGVsU3RvcmVpKGRlc2t0b3BHTFsnUEFDS19TV0FQX0JZVEVTJ10sIDEpIHNob3VsZCByZXR1
cm4gSU5WQUxJRF9FTlVNLgogUEFTUyBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLkFMUEhB
LCBnbC5TSE9SVCwgYnVmKSBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5VTS4KK1BBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVS
RV8yRCwgZGVza3RvcEdMWydHRU5FUkFURV9NSVBNQVAnXSkgc2hvdWxkIHJldHVybiBJTlZBTElE
X0VOVU0uCiBQQVNTIGdsLnRleFBhcmFtZXRlcmkoZGVza3RvcEdMWydURVhUVVJFXzNEJ10sIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VO
VU0uCiBQQVNTIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZGVza3RvcEdMWydHRU5F
UkFURV9NSVBNQVAnXSwgMSkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1lbnVtLXRlc3RzLmh0bWwJKHJl
dmlzaW9uIDY0ODU3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10
ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIGlmICghZ2wpIHsKICAg
dmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIGdsLmNyZWF0ZUJ1ZmZlcigpKTsKICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAi
Z2wuTk9fRVJST1IiKTsKKwogICB2YXIgdGVzdHMgPSBbCiAgICAgImdsLmJpbmRUZXh0dXJlKGRl
c2t0b3BHTFsnVEVYVFVSRV8zRCddLCB0ZXgpIiwKICAgICAiZ2wuYmxlbmRFcXVhdGlvbihkZXNr
dG9wR0xbJ01JTiddKSIsCkBAIC00NSwyMSArNDYsMzEgQEAgaWYgKCFnbCkgewogICAgICJnbC5k
aXNhYmxlKGRlc2t0b3BHTFsnQ0xJUF9QTEFORTAnXSkiLAogICAgICJnbC5kaXNhYmxlKGRlc2t0
b3BHTFsnUE9JTlRfU1BSSVRFJ10pIiwKICAgICAiZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFS
UkFZX0JVRkZFUiwgZGVza3RvcEdMWydQSVhFTF9QQUNLX0JVRkZFUiddKSIsCi0gICAgImdsLmdl
dFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBkZXNrdG9wR0xbJ0dFTkVSQVRFX01JUE1BUCdd
KSIsCi0gICAgImdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBkZXNrdG9wR0xbJ0dF
TkVSQVRFX01JUE1BUCddKSIsCiAgICAgImdsLmhpbnQoZGVza3RvcEdMWydQRVJTUEVDVElWRV9D
T1JSRUNUSU9OX0hJTlQnXSwgZ2wuRkFTVEVTVCkiLAogICAgICJnbC5pc0VuYWJsZWQoZGVza3Rv
cEdMWydDTElQX1BMQU5FMCddKSIsCiAgICAgImdsLmlzRW5hYmxlZChkZXNrdG9wR0xbJ1BPSU5U
X1NQUklURSddKSIsCiAgICAgImdsLnBpeGVsU3RvcmVpKGRlc2t0b3BHTFsnUEFDS19TV0FQX0JZ
VEVTJ10sIDEpIiwKICAgICAiZ2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5BTFBIQSwgZ2wu
U0hPUlQsIGJ1ZikiLAorICBdOworICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3Ro
OyArK2lpKSB7CisgICAgZXZhbCh0ZXN0c1tpaV0pOworICAgIGFzc2VydE1zZyhnbC5nZXRFcnJv
cigpID09IGdsLklOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgdGVzdHNbaWldICsgIiBzaG91
bGQgcmV0dXJuIElOVkFMSURfRU5VTS4iKTsKKyAgfQorCisgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleCk7CisgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9S
Iik7CisKKyAgdGVzdHMgPSBbCisgICAgImdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJE
LCBkZXNrdG9wR0xbJ0dFTkVSQVRFX01JUE1BUCddKSIsCiAgICAgImdsLnRleFBhcmFtZXRlcmko
ZGVza3RvcEdMWydURVhUVVJFXzNEJ10sIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVT
VCkiLAogICAgICJnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGRlc2t0b3BHTFsnR0VO
RVJBVEVfTUlQTUFQJ10sIDEpIgotICAgXTsKLSAgIGZvciAodmFyIGlpID0gMDsgaWkgPCB0ZXN0
cy5sZW5ndGg7ICsraWkpIHsKLSAgICAgZXZhbCh0ZXN0c1tpaV0pOwotICAgICBhc3NlcnRNc2co
Z2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZBTElEX0VOVU0sCi0gICAgICAgICAgICAgICB0ZXN0c1tp
aV0gKyAiIHNob3VsZCByZXR1cm4gSU5WQUxJRF9FTlVNLiIpOwotICAgfQorICBdOworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3RoOyArK2lpKSB7CisgICAgZXZhbCh0ZXN0c1tp
aV0pOworICAgIGFzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfRU5VTSwKKyAg
ICAgICAgICAgICAgdGVzdHNbaWldICsgIiBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5VTS4iKTsK
KyAgfQogfQogCiBkZWJ1ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDY0ODU3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVs
bC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiAr
MTgsMTQgQEAgUEFTUyBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVQogUEFTUyBj
b250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCAwKSB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SLgogUEFTUyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4
dC5SRU5ERVJCVUZGRVIsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IuCiBQQVNTIGNv
bnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZG
RVIsIG51bGwpIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmlu
ZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIG51bGwpIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRF
UkJVRkZFUiwgbnVsbCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUi4KK1BBU1MgY29udGV4
dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIG51bGwpIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZF
UiwgdW5kZWZpbmVkKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0
LmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCB1bmRlZmluZWQpIHdhcyBleHBl
Y3RlZCB2YWx1ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250
ZXh0LlJFTkRFUkJVRkZFUiwgdW5kZWZpbmVkKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
LgorUEFTUyBjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgdW5kZWZpbmVk
KSB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgogUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVO
VCwgY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFN
RUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAw
LCAwKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0
LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElO
VkFMSURfVkFMVUUuCkBAIC0yNyw2ICszNSwyMCBAQCBQQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5m
b0xvZyh1bmRlZmluZWQsCiBQQVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkg
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmdldFVuaWZv
cm0odW5kZWZpbmVkLCAwKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUuCiBQQVNT
IGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KKworY2hlY2sgd2l0aCBiaW5kaW5ncworUEFTUyBjb250
ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIDEsIGNvbnRleHQuU1RBVElDX0RS
QVcpIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuZ2V0QnVmZmVy
UGFyYW1ldGVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBjb250ZXh0LkJVRkZFUl9TSVpFKSB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4
dC5URVhUVVJFXzJELCAwLCBjb250ZXh0LlJHQkEsIDEsIDEsIDAsIGNvbnRleHQuUkdCQSwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCBuZXcgVWludDhBcnJheShbMCwwLDAsMF0pKSB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LnRleFBhcmFtZXRlcmkoY29udGV4dC5U
RVhUVVJFXzJELCBjb250ZXh0LlRFWFRVUkVfTUlOX0ZJTFRFUiwgY29udGV4dC5ORUFSRVNUKSB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmdldFRleFBhcmFtZXRl
cihjb250ZXh0LlRFWFRVUkVfMkQsIGNvbnRleHQuVEVYVFVSRV9NSU5fRklMVEVSKSB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgorCitjaGVjayB3aXRob3V0IGJpbmRpbmdzCitQQVNTIGNv
bnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgMSwgY29udGV4dC5TVEFUSUNf
RFJBVykgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4
dC5nZXRCdWZmZXJQYXJhbWV0ZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIGNvbnRleHQuQlVGRkVS
X1NJWkUpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGNvbnRl
eHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMSwgMSwg
MCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFsw
LDAsMCwwXSkpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGNv
bnRleHQudGV4UGFyYW1ldGVyaShjb250ZXh0LlRFWFRVUkVfMkQsIGNvbnRleHQuVEVYVFVSRV9N
SU5fRklMVEVSLCBjb250ZXh0Lk5FQVJFU1QpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04uCitQQVNTIGNvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV8y
RCwgY29udGV4dC5URVhUVVJFX01JTl9GSUxURVIpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJ
RF9PUEVSQVRJT04uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJl
aGF2aW91ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sCShyZXZpc2lvbiA2NDg1NykKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCwxNCBAQCBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwg
Y29udGV4dC5OCiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJP
UiwgImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDApIik7CiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQu
YmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKIHNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5iaW5kVGV4dHVy
ZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JV
RkZFUiwgbnVsbCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5P
X0VSUk9SLCAiY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgbnVs
bCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAi
Y29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkVOREVSQlVGRkVSLCBudWxsKSIpOwor
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0
LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgbnVsbCkiKTsKK3Nob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5iaW5kQnVmZmVyKGNv
bnRleHQuQVJSQVlfQlVGRkVSLCB1bmRlZmluZWQpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRl
eHQuRlJBTUVCVUZGRVIsIHVuZGVmaW5lZCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQu
UkVOREVSQlVGRkVSLCB1bmRlZmluZWQpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJF
XzJELCB1bmRlZmluZWQpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29u
dGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRF
UkJVRkZFUiwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklO
VkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LkZS
QU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRVUkVfMkQs
IDAsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElE
X1ZBTFVFLCAiY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKQEAg
LTQ0LDYgKzUyLDI3IEBAIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LkkK
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJj
b250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0
aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIik7CiAKK2RlYnVnKCIiKTsKK2RlYnVnKCJjaGVjayB3aXRo
IGJpbmRpbmdzIik7Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIGNv
bnRleHQuY3JlYXRlQnVmZmVyKCkpOworY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRV
UkVfMkQsIGNvbnRleHQuY3JlYXRlVGV4dHVyZSgpKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJS
QVlfQlVGRkVSLCAxLCBjb250ZXh0LlNUQVRJQ19EUkFXKSIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmdldEJ1ZmZlclBhcmFtZXRl
cihjb250ZXh0LkFSUkFZX0JVRkZFUiwgY29udGV4dC5CVUZGRVJfU0laRSkiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC50ZXhJbWFn
ZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAxLCAxLCAwLCBjb250ZXh0
LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDBdKSki
KTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29u
dGV4dC50ZXhQYXJhbWV0ZXJpKGNvbnRleHQuVEVYVFVSRV8yRCwgY29udGV4dC5URVhUVVJFX01J
Tl9GSUxURVIsIGNvbnRleHQuTkVBUkVTVCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5nZXRUZXhQYXJhbWV0ZXIoY29udGV4dC5U
RVhUVVJFXzJELCBjb250ZXh0LlRFWFRVUkVfTUlOX0ZJTFRFUikiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoImNoZWNrIHdpdGhvdXQgYmluZGluZ3MiKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250
ZXh0LkFSUkFZX0JVRkZFUiwgMCk7Citjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVS
RV8yRCwgMCk7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElE
X09QRVJBVElPTiwgImNvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgMSwg
Y29udGV4dC5TVEFUSUNfRFJBVykiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBj
b250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5nZXRCdWZmZXJQYXJhbWV0ZXIoY29u
dGV4dC5BUlJBWV9CVUZGRVIsIGNvbnRleHQuQlVGRkVSX1NJWkUpIik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQudGV4
SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMSwgMSwgMCwgY29u
dGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KFswLDAsMCww
XSkpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHQudGV4UGFyYW1ldGVyaShjb250ZXh0LlRFWFRVUkVfMkQsIGNvbnRl
eHQuVEVYVFVSRV9NSU5fRklMVEVSLCBjb250ZXh0Lk5FQVJFU1QpIik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZ2V0
VGV4UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV8yRCwgY29udGV4dC5URVhUVVJFX01JTl9GSUxU
RVIpIik7CisKKwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogCg==
</data>
<flag name="review"
          id="52212"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="52213"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>