<?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>87310</bug_id>
          
          <creation_ts>2012-05-23 14:07:33 -0700</creation_ts>
          <short_desc>WebKit incorrectly clears the alpha channel on readPixels, even for Framebuffers</short_desc>
          <delta_ts>2012-05-30 18:32:05 -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>https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/context/context-attributes-alpha-depth-stencil-antialias.html</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>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>632043</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-05-23 14:07:33 -0700</bug_when>
    <thetext>In Source/WebCore/html/canvas/WebGLRenderingContext.cpp there&apos;s a check in WebGLRenderingContext::readPixels


#if OS(DARWIN)
    // FIXME: remove this section when GL driver bug on Mac is fixed, i.e.,
    // when alpha is off, readPixels should set alpha to 255 instead of 0.
    if (!m_context-&gt;getContextAttributes().alpha) {
        unsigned char* pixels = reinterpret_cast&lt;unsigned char*&gt;(data);
        for (GC3Dsizei iy = 0; iy &lt; height; ++iy) {
            for (GC3Dsizei ix = 0; ix &lt; width; ++ix) {
                pixels[3] = 255;
                pixels += 4;
            }
            pixels += padding;
        }
    }
#endif

This check should not be happening if a framebuffer is currently bound, only if the backbuffer is currently bound. Possibly you&apos;d like to check the format of the current framebuffer.

The linked test above tests this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637746</commentid>
    <comment_count>1</comment_count>
      <attachid>144935</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-05-30 15:13:45 -0700</bug_when>
    <thetext>Created attachment 144935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637747</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-05-30 15:14:08 -0700</bug_when>
    <thetext>The test is in sync with khronos side.  Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637852</commentid>
    <comment_count>3</comment_count>
      <attachid>144935</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-30 17:27:54 -0700</bug_when>
    <thetext>Comment on attachment 144935
Patch

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

Looks good. r=me

&gt; LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html:170
&gt; +      shouldBe(&quot;pixel&quot;, &quot;[127, 127, 127, 127]&quot;);

I could imagine this test being flaky. Should it have a one-pixel value tolerance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637859</commentid>
    <comment_count>4</comment_count>
      <attachid>144935</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-05-30 17:33:52 -0700</bug_when>
    <thetext>Comment on attachment 144935
Patch

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

&gt;&gt; LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html:170
&gt;&gt; +      shouldBe(&quot;pixel&quot;, &quot;[127, 127, 127, 127]&quot;);
&gt; 
&gt; I could imagine this test being flaky. Should it have a one-pixel value tolerance?

Agree.  I&apos;ll update the khronos side and resync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637906</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-05-30 18:32:05 -0700</bug_when>
    <thetext>Committed r119014: &lt;http://trac.webkit.org/changeset/119014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144935</attachid>
            <date>2012-05-30 15:13:45 -0700</date>
            <delta_ts>2012-05-30 17:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87310-20120530151344.patch</filename>
            <type>text/plain</type>
            <size>23779</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTMwICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGluY29ycmVjdGx5IGNsZWFy
cyB0aGUgYWxwaGEgY2hhbm5lbCBvbiByZWFkUGl4ZWxzLCBldmVuIGZvciBGcmFtZWJ1ZmZlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6IHNldCBE
RVBUSF9CSVRTL1NURU5DSUxfQklUUyB0byAwIGlmIHJlbGF0ZWQgY2hhbm5lbHMgYXJlIG5vdCBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQ
aXhlbHMpOiBkb24ndCBkbyB0aGUgYWxwaGEgdmFsdWUgZml4IGlmIHRoZSBjdXJyZW50IGJvdW5k
IGlzIG5vdCB0aGUgaW50ZXJuYWwgZHJhd2luZyBidWZmZXIuCisKIDIwMTItMDUtMzAgIEVtaWwg
QSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZsb2F0cyB3cmFwcyBpbmNv
cnJlY3RseSB3aGVuIHRvcCBlZGdlIGhhcyBzdWJwaXhlbCBwcmVjaXNpb24KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAkocmV2aXNpb24gMTE4ODIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwMSw2ICsyNDAxLDcgQEAg
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAogICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOworICAgIGNvbnN0IGludCBpbnRaZXJvID0gMDsKICAgICBXZWJHTFN0YXRlUmVzdG9y
ZXIodGhpcywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpBQ1RJVkVfVEVYVFVSRToKQEAgLTI0NDQsNiArMjQ0NSw4IEBAIFdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDVVJSRU5UX1BST0dSQU06CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1Jl
ZlB0cjxXZWJHTFByb2dyYW0+KG1fY3VycmVudFByb2dyYW0pKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9CSVRTOgorICAgICAgICBpZiAoIW1fYXR0cmlidXRlcy5kZXB0aCkK
KyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oaW50WmVybyk7CiAgICAgICAgIHJldHVy
biBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0NMRUFSX1ZBTFVFOgogICAgICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUp
OwpAQCAtMjUzNyw2ICsyNTQwLDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0UAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQkFDS19XUklURU1B
U0s6CiAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CSVRTOgorICAgICAgICBpZiAoIW1fYXR0
cmlidXRlcy5zdGVuY2lsKQorICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhpbnRaZXJv
KTsKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9DTEVBUl9WQUxVRToKICAgICAgICAgcmV0dXJuIGdldElu
dFBhcmFtZXRlcihwbmFtZSk7CkBAIC0zMjkxLDcgKzMyOTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6cmVhZFBpeGVscyhHCiAjaWYgT1MoREFSV0lOKQogICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyBzZWN0aW9uIHdoZW4gR0wgZHJpdmVyIGJ1ZyBvbiBNYWMgaXMgZml4ZWQsIGku
ZS4sCiAgICAgLy8gd2hlbiBhbHBoYSBpcyBvZmYsIHJlYWRQaXhlbHMgc2hvdWxkIHNldCBhbHBo
YSB0byAyNTUgaW5zdGVhZCBvZiAwLgotICAgIGlmICghbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0
cmlidXRlcygpLmFscGhhKSB7CisgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9j
b250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLmFscGhhKSB7CiAgICAgICAgIHVuc2lnbmVk
IGNoYXIqIHBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpOwog
ICAgICAgICBmb3IgKEdDM0RzaXplaSBpeSA9IDA7IGl5IDwgaGVpZ2h0OyArK2l5KSB7CiAgICAg
ICAgICAgICBmb3IgKEdDM0RzaXplaSBpeCA9IDA7IGl4IDwgd2lkdGg7ICsraXgpIHsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDExODk3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTMwICBaaGVueWFvIE1vICA8em1vQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGluY29ycmVjdGx5IGNsZWFycyB0aGUgYWxwaGEgY2hh
bm5lbCBvbiByZWFkUGl4ZWxzLCBldmVuIGZvciBGcmFtZWJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzEwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250
ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1k
ZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sOiBzeW5jZWQgd2l0aCBraHJvbm9zCisKIDIwMTIt
MDUtMzAgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZsb2F0
cyB3cmFwcyBpbmNvcnJlY3RseSB3aGVuIHRvcCBlZGdlIGhhcyBzdWJwaXhlbCBwcmVjaXNpb24K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1h
bHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRl
cHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTE4ODIxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRl
cHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw0
NiArMywxMTAgQEAgVmVyaWZ5IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXJlIHdvcmtpbgogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBUZXN0aW5nIGFscGhhID0gdHJ1ZQotUEFTUyB3ZWJH
TCA9IGdldFdlYkdMKDEsIDEsIHsgYWxwaGE6IHRydWUsIGRlcHRoOiBmYWxzZSwgc3RlbmNpbDog
ZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAwIF0sIDEsIDApIGlzIG5vbi1u
dWxsLgotUEFTUyBjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkg
aXMgbm9uLW51bGwuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1Ig
OiBzaG91bGQgYmUgbm8gZXJyb3JzCitQQVNTIGdsID0gZ2V0V2ViR0woMSwgMSwgeyBhbHBoYTog
dHJ1ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBb
IDAsIDAsIDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51bGwuCitQQVNTIGdsLmdldFBhcmFtZXRlcihn
bC5BTFBIQV9CSVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9C
SVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpID49
IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxVRV9CSVRTKSA+PSA4IGlzIHRy
dWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLkRFUFRIX0JJVFMpID09IDAgaXMgdHJ1ZQorUEFT
UyBnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA9PSAwIGlzIHRydWUKK1BBU1MgY29u
dGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgogUEFT
UyBjb250ZXh0QXR0cmlicy5hbHBoYSA9PSB0cnVlIGlzIHRydWUKIFBBU1MgcGl4ZWwgaXMgY29y
cmVjdENvbG9yCitQQVNTIHBpeGVsIGlzIFsxMjcsIDEyNywgMTI3LCAxMjddCiBUZXN0aW5nIGFs
cGhhID0gZmFsc2UKLVBBU1Mgd2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7IGFscGhhOiBmYWxzZSwg
ZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAs
IDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51bGwuCi1QQVNTIGNvbnRleHRBdHRyaWJzID0gd2ViR0wu
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1MgZ2wgPSBn
ZXRXZWJHTCgxLCAxLCB7IGFscGhhOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxz
ZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51bGwu
CitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5BTFBIQV9CSVRTKSA9PSAwIGlzIHRydWUKK1BBU1Mg
Z2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFy
YW1ldGVyKGdsLkdSRUVOX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIo
Z2wuQkxVRV9CSVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLkRFUFRI
X0JJVFMpID09IDAgaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRT
KSA9PSAwIGlzIHRydWUKK1BBU1MgY29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmli
dXRlcygpIGlzIG5vbi1udWxsLgogUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSA9PSBmYWxzZSBp
cyB0cnVlCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgorUEFTUyBwaXhlbCBpcyBbMTI3LCAx
MjcsIDEyNywgMTI3XQogVGVzdGluZyBkZXB0aCA9IHRydWUKLVBBU1Mgd2ViR0wgPSBnZXRXZWJH
TCgxLCAxLCB7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwg
MSBdLCAxLCAwKSBpcyBub24tbnVsbC4KLVBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRD
b250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBnbCA9IGdldFdl
YkdMKDEsIDEsIHsgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAw
LCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhf
QklUUykgPj0gMTYgaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMpID49
IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgPj0gOCBpcyB0
cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDggaXMgdHJ1ZQorUEFT
UyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCBpcyB0cnVlCitQQVNTIGNvbnRl
eHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KIFBBU1Mg
cGl4ZWwgaXMgY29ycmVjdENvbG9yCitQQVNTIHBpeGVsIGlzIFswLCAwLCAwLCAyNTVdCiBUZXN0
aW5nIGRlcHRoID0gZmFsc2UKLVBBU1Mgd2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiBm
YWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0s
IDEsIDApIGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRl
eHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJyb3JzCitQQVNTIGdsID0gZ2V0V2ViR0wo
MSwgMSwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0s
IFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0UGFyYW1ldGVy
KGdsLkRFUFRIX0JJVFMpID09IDAgaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVE
X0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykg
Pj0gOCBpcyB0cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDggaXMg
dHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCBpcyB0cnVlCitQ
QVNTIGNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVs
bC4KIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCitQQVNTIHBpeGVsIGlzIFswLCAwLCAwLCAy
NTVdCiBUZXN0aW5nIHN0ZW5jaWwgPSB0cnVlLCBkZXB0aCA9IGZhbHNlCi1QQVNTIHdlYkdMID0g
Z2V0V2ViR0woMSwgMSwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRydWUsIGFudGlhbGlhczog
ZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0
QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJy
b3JzCitQQVNTIGdsID0gZ2V0V2ViR0woMSwgMSwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRy
dWUsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxs
LgorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBn
bC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgPj0gOCBpcyB0cnVlCitQQVNTIGdsLmdldFBh
cmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIo
Z2wuQUxQSEFfQklUUykgPj0gOCBpcyB0cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5ERVBU
SF9CSVRTKSA9PSAwIGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklU
UykgPj0gOCBpcyB0cnVlCitQQVNTIGNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJp
YnV0ZXMoKSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCitQQVNTIHBp
eGVsIGlzIFswLCAwLCAwLCAyNTVdCiBUZXN0aW5nIHN0ZW5jaWwgPSBmYWxzZSwgZGVwdGggPSBm
YWxzZQotUEFTUyB3ZWJHTCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2ls
OiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9u
LW51bGwuCi1QQVNTIGNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KSBpcyBub24tbnVsbC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IHNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1MgZ2wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRo
OiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAx
IF0sIDEsIDApIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMp
ID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgPj0gOCBp
cyB0cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDggaXMgdHJ1ZQor
UEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCBpcyB0cnVlCitQQVNTIGds
LmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA9PSAwIGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFy
YW1ldGVyKGdsLlNURU5DSUxfQklUUykgPT0gMCBpcyB0cnVlCitQQVNTIGNvbnRleHRBdHRyaWJz
ID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMg
Y29ycmVjdENvbG9yCitQQVNTIHBpeGVsIGlzIFswLCAwLCAwLCAyNTVdCiBUZXN0aW5nIHN0ZW5j
aWwgPSB0cnVlLCBkZXB0aCA9IHRydWUKLVBBU1Mgd2ViR0wgPSBnZXRXZWJHTCgxLCAxLCB7IGRl
cHRoOiB0cnVlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwg
MSBdLCAxLCAwKSBpcyBub24tbnVsbC4KLVBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRD
b250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBnbCA9IGdldFdl
YkdMKDEsIDEsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IHRydWUsIGFudGlhbGlhczogZmFsc2Ug
fSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRQYXJhbWV0
ZXIoZ2wuUkVEX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JF
RU5fQklUUykgPj0gOCBpcyB0cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5CTFVFX0JJVFMp
ID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCBp
cyB0cnVlCitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA+PSAxNiBpcyB0cnVl
CitQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5TVEVOQ0lMX0JJVFMpID49IDggaXMgdHJ1ZQorUEFT
UyBjb250ZXh0QXR0cmlicyA9IGdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwu
CiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgorUEFTUyBwaXhlbCBpcyBbMCwgMCwgMCwgMjU1
XQogVGVzdGluZyBzdGVuY2lsID0gZmFsc2UsIGRlcHRoID0gdHJ1ZQotUEFTUyB3ZWJHTCA9IGdl
dFdlYkdMKDEsIDEsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZh
bHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KLVBBU1MgY29udGV4dEF0
dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9y
cworUEFTUyBnbCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6IHRydWUsIHN0ZW5jaWw6IGZhbHNl
LCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4K
K1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wu
Z2V0UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJh
bWV0ZXIoZ2wuQkxVRV9CSVRTKSA+PSA4IGlzIHRydWUKK1BBU1MgZ2wuZ2V0UGFyYW1ldGVyKGds
LkFMUEhBX0JJVFMpID49IDggaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhf
QklUUykgPj0gMTYgaXMgdHJ1ZQorUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRT
KSA9PSAwIGlzIHRydWUKK1BBU1MgY29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmli
dXRlcygpIGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKK1BBU1MgcGl4
ZWwgaXMgWzAsIDAsIDAsIDI1NV0KIFRlc3RpbmcgYW50aWFsaWFzID0gdHJ1ZQotUEFTUyB3ZWJH
TCA9IGdldFdlYkdMKDIsIDIsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6
IGZhbHNlLCBhbnRpYWxpYXM6IHRydWUgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1u
dWxsLgotUEFTUyBjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkg
aXMgbm9uLW51bGwuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1Ig
OiBzaG91bGQgYmUgbm8gZXJyb3JzCitQQVNTIGdsID0gZ2V0V2ViR0woMiwgMiwgeyBkZXB0aDog
ZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbHBoYTogZmFsc2UsIGFudGlhbGlhczogdHJ1ZSB9LCBb
IDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCitQQVNTIGNvbnRleHRBdHRyaWJzID0g
Z2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWxbMF0gIT0g
MjU1ICYmIHBpeGVsWzBdICE9IDAgaXMgY29udGV4dEF0dHJpYnMuYW50aWFsaWFzCiBUZXN0aW5n
IGFudGlhbGlhcyA9IGZhbHNlCi1QQVNTIHdlYkdMID0gZ2V0V2ViR0woMiwgMiwgeyBkZXB0aDog
ZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbHBoYTogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwg
WyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0QXR0cmlicyA9
IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJyb3JzCitQQVNT
IGdsID0gZ2V0V2ViR0woMiwgMiwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbHBo
YTogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5v
bi1udWxsLgorUEFTUyBjb250ZXh0QXR0cmlicyA9IGdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkg
aXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsWzBdICE9IDI1NSAmJiBwaXhlbFswXSAhPSAwIGlzIGNv
bnRleHRBdHRyaWJzLmFudGlhbGlhcwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMt
YWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3Rl
bmNpbC1hbnRpYWxpYXMuaHRtbAkocmV2aXNpb24gMTE4ODIxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50
aWFsaWFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw5IEBACisKKzwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CkBAIC0yNiwxMiArMzAs
MTcgQEAgdm9pZCBtYWluKCkKIDwvc2NyaXB0PgogCiA8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IGZhbHNlOwogCiAvLyBUaGVzZSBmb3VyIGRlY2xhcmF0aW9ucyBuZWVkIHRvIGJl
IGdsb2JhbCBmb3IgInNob3VsZEJlIiB0byBzZWUgdGhlbQotdmFyIHdlYkdMID0gbnVsbDsKK3Zh
ciBnbDsKIHZhciBjb250ZXh0QXR0cmlicyA9IG51bGw7CiB2YXIgcGl4ZWwgPSBbMCwgMCwgMCwg
MV07CiB2YXIgY29ycmVjdENvbG9yID0gbnVsbDsKK3ZhciBmcmFtZWJ1ZmZlcjsKK3ZhciBmYkhh
c0NvbG9yOwordmFyIGZiSGFzRGVwdGg7Cit2YXIgZmJIYXNTdGVuY2lsOwogCiBmdW5jdGlvbiBp
bml0KCkKIHsKQEAgLTUyLDI2ICs2MSw1MSBAQCBmdW5jdGlvbiBnZXRXZWJHTChjYW52YXNXaWR0
aCwgY2FudmFzSGVpCiAgICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7CiAgICAgY2FudmFz
LmhlaWdodCA9IGNhbnZhc0hlaWdodDsKIAotICAgIHZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250
ZXh0KGNhbnZhcywgY29udGV4dEF0dHJpYnMpOwotICAgIGlmICghY29udGV4dCkKKyAgICBnbCA9
IGNyZWF0ZTNEQ29udGV4dChjYW52YXMsIGNvbnRleHRBdHRyaWJzKTsKKyAgICBpZiAoIWdsKQog
ICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgIGNvbnRleHQucHJvZ3JhbSA9IGNyZWF0ZVByb2dy
YW0oY29udGV4dCwgInZzaGFkZXIiLCAiZnNoYWRlciIsIFsicG9zIiwgImNvbG9ySW4iXSk7Ci0g
ICAgaWYgKCFjb250ZXh0LnByb2dyYW0pCisgICAgdmFyIHByb2dyYW0gPSBjcmVhdGVQcm9ncmFt
KGdsLCAidnNoYWRlciIsICJmc2hhZGVyIiwgWyJwb3MiLCAiY29sb3JJbiJdKTsKKyAgICBpZiAo
IXByb2dyYW0pCiAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgY29udGV4dC51c2VQcm9ncmFt
KGNvbnRleHQucHJvZ3JhbSk7CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKIAotICAgIGNv
bnRleHQuZW5hYmxlKGNvbnRleHQuREVQVEhfVEVTVCk7Ci0gICAgY29udGV4dC5lbmFibGUoY29u
dGV4dC5TVEVOQ0lMX1RFU1QpOwotICAgIGNvbnRleHQuZGlzYWJsZShjb250ZXh0LkJMRU5EKTsK
LQotICAgIGNvbnRleHQuY2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBj
bGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKLSAgICBjb250ZXh0LmNsZWFyRGVwdGgoY2xl
YXJEZXB0aCk7Ci0gICAgY29udGV4dC5jbGVhclN0ZW5jaWwoY2xlYXJTdGVuY2lsKTsKLSAgICBj
b250ZXh0LmNsZWFyKGNvbnRleHQuQ09MT1JfQlVGRkVSX0JJVCB8IGNvbnRleHQuREVQVEhfQlVG
RkVSX0JJVCB8IGNvbnRleHQuU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICBnbC5lbmFibGUoZ2wu
REVQVEhfVEVTVCk7CisgICAgZ2wuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisgICAgZ2wuZGlz
YWJsZShnbC5CTEVORCk7CisKKyAgICBnbC5jbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFy
Q29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworICAgIGdsLmNsZWFyRGVw
dGgoY2xlYXJEZXB0aCk7CisgICAgZ2wuY2xlYXJTdGVuY2lsKGNsZWFyU3RlbmNpbCk7CisgICAg
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5T
VEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZm
ZXIpOworICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuY2FudmFzLndpZHRoLCBnbC5jYW52YXMuaGVpZ2h0LCAw
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICBnbC5mcmFtZWJ1ZmZlclRl
eHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVf
MkQsIHRleHR1cmUsIDApOworICAgIGZiSGFzU3RlbmNpbCA9IGZhbHNlOworICAgIGZiSGFzRGVw
dGggPSBmYWxzZTsKKyAgICBmYkhhc0NvbG9yID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEU7CisgICAgaWYgKGZiSGFz
Q29sb3IpIHsKKyAgICAgIHZhciBkZXB0aFN0ZW5jaWwgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KTsKKyAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aFN0ZW5j
aWwpOworICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRF
UFRIX1NURU5DSUwsIGdsLmNhbnZhcy53aWR0aCwgZ2wuY2FudmFzLmhlaWdodCk7CisgICAgICBn
bC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoU3RlbmNpbCk7CisgICAgICBmYkhh
c0RlcHRoID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wu
RlJBTUVCVUZGRVJfQ09NUExFVEU7CisgICAgICBpZiAoIWZiSGFzRGVwdGgpIHsKKyAgICAgICAg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCBudWxsKTsKKyAgICAgICAgc2hvdWxkQmUo
J2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVG
RkVSX0NPTVBMRVRFJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICBmYkhhc1N0ZW5jaWwgPSB0
cnVlOworICAgICAgfQorICAgIH0KKyAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIG51bGwpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzaG91bGQg
YmUgbm8gZXJyb3JzIik7CiAKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gZ2w7CiB9
CiAKIGZ1bmN0aW9uIGRyYXdBbmRSZWFkUGl4ZWwoZ2wsIHZlcnRpY2VzLCBjb2xvcnMsIHgsIHkp
CkBAIC05OSwzMyArMTMzLDYzIEBAIGZ1bmN0aW9uIGRyYXdBbmRSZWFkUGl4ZWwoZ2wsIHZlcnRp
Y2VzLCAKIGZ1bmN0aW9uIHRlc3RBbHBoYShhbHBoYSkKIHsKICAgICBkZWJ1ZygiVGVzdGluZyBh
bHBoYSA9ICIgKyBhbHBoYSk7Ci0gICAgaWYgKGFscGhhKQotICAgICAgICBzaG91bGRCZU5vbk51
bGwoIndlYkdMID0gZ2V0V2ViR0woMSwgMSwgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNlLCBz
dGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCki
KTsKLSAgICBlbHNlCi0gICAgICAgIHNob3VsZEJlTm9uTnVsbCgid2ViR0wgPSBnZXRXZWJHTCgx
LCAxLCB7IGFscGhhOiBmYWxzZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFs
aWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkiKTsKLSAgICBzaG91bGRCZU5vbk51
bGwoImNvbnRleHRBdHRyaWJzID0gd2ViR0wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOworICAg
IGlmIChhbHBoYSkgeworICAgICAgICBzaG91bGRCZU5vbk51bGwoImdsID0gZ2V0V2ViR0woMSwg
MSwgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFz
OiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCIpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNob3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgxLCAxLCB7IGFscGhhOiBmYWxz
ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAs
IDAsIDAsIDAgXSwgMSwgMCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0
ZXIoZ2wuQUxQSEFfQklUUykgPT0gMCIpOworICAgIH0KKyAgICBzaG91bGRCZVRydWUoImdsLmdl
dFBhcmFtZXRlcihnbC5SRURfQklUUykgPj0gOCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0
UGFyYW1ldGVyKGdsLkdSRUVOX0JJVFMpID49IDgiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmdl
dFBhcmFtZXRlcihnbC5CTFVFX0JJVFMpID49IDgiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmdl
dFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA9PSAwIik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5n
ZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA9PSAwIik7CisKKyAgICBzaG91bGRCZU5vbk51
bGwoImNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOwogICAgIHNo
b3VsZEJlVHJ1ZSgiY29udGV4dEF0dHJpYnMuYWxwaGEgPT0gIiArIGFscGhhKTsKIAogICAgIHZh
ciBidWYgPSBuZXcgVWludDhBcnJheSgxICogMSAqIDQpOwotICAgIHdlYkdMLnJlYWRQaXhlbHMo
MCwgMCwgMSwgMSwgd2ViR0wuUkdCQSwgd2ViR0wuVU5TSUdORURfQllURSwgYnVmKTsKKyAgICBn
bC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7
CiAgICAgcGl4ZWxbMF0gPSBidWZbMF07CiAgICAgcGl4ZWxbMV0gPSBidWZbMV07CiAgICAgcGl4
ZWxbMl0gPSBidWZbMl07CiAgICAgcGl4ZWxbM10gPSBidWZbM107CiAgICAgY29ycmVjdENvbG9y
ID0gKGNvbnRleHRBdHRyaWJzLmFscGhhID8gWzAsIDAsIDAsIDBdIDogWzAsIDAsIDAsIDI1NV0p
OwogICAgIHNob3VsZEJlKCJwaXhlbCIsICJjb3JyZWN0Q29sb3IiKTsKKworICAgIGlmIChmYkhh
c0NvbG9yKSB7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyKTsKKyAgICAgIGdsLmNsZWFyQ29sb3IoMC41LCAwLjUsIDAuNSwgMC41KTsKKyAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgZ2wucmVhZFBpeGVscygwLCAw
LCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOworICAgICAgcGl4ZWxbMF0g
PSBidWZbMF07CisgICAgICBwaXhlbFsxXSA9IGJ1ZlsxXTsKKyAgICAgIHBpeGVsWzJdID0gYnVm
WzJdOworICAgICAgcGl4ZWxbM10gPSBidWZbM107CisgICAgICBzaG91bGRCZSgicGl4ZWwiLCAi
WzEyNywgMTI3LCAxMjcsIDEyN10iKTsKKyAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgbnVsbCk7CisgICAgfQogfQogCiBmdW5jdGlvbiB0ZXN0RGVwdGgoZGVwdGgpCiB7
CiAgICAgZGVidWcoIlRlc3RpbmcgZGVwdGggPSAiICsgZGVwdGgpOwotICAgIGlmIChkZXB0aCkK
LSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ3ZWJHTCA9IGdldFdlYkdMKDEsIDEsIHsgc3RlbmNp
bDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7Ci0g
ICAgZWxzZQotICAgICAgICBzaG91bGRCZU5vbk51bGwoIndlYkdMID0gZ2V0V2ViR0woMSwgMSwg
eyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwg
MCwgMCwgMSBdLCAxLCAwKSIpOwotICAgIHNob3VsZEJlTm9uTnVsbCgiY29udGV4dEF0dHJpYnMg
PSB3ZWJHTC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CisgICAgaWYgKGRlcHRoKSB7CisgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgxLCAxLCB7IHN0ZW5jaWw6IGZhbHNl
LCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSIpOworICAgICAgICBz
aG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA+PSAxNiIpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgxLCAxLCB7
IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSwgWyAwLCAw
LCAwLCAxIF0sIDEsIDApIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVy
KGdsLkRFUFRIX0JJVFMpID09IDAiKTsKKyAgICB9CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuUkVEX0JJVFMpID49IDgiKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmdldFBh
cmFtZXRlcihnbC5HUkVFTl9CSVRTKSA+PSA4Iik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuQkxVRV9CSVRTKSA+PSA4Iik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQ
YXJhbWV0ZXIoZ2wuQUxQSEFfQklUUykgPj0gOCIpOworCisgICAgc2hvdWxkQmVOb25OdWxsKCJj
b250ZXh0QXR0cmlicyA9IGdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKIAotICAgIHdlYkdM
LmRlcHRoRnVuYyh3ZWJHTC5ORVZFUik7CisgICAgZ2wuZGVwdGhGdW5jKGdsLk5FVkVSKTsKIAog
ICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWwogICAgICAgICAgMS4wLCAgMS4w
LCAwLjAsCkBAIC0xNDIsMzIgKzIwNiw2NCBAQCBmdW5jdGlvbiB0ZXN0RGVwdGgoZGVwdGgpCiAg
ICAgICAgIDI1NSwgMCwgMCwgMjU1LAogICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOwogCi0gICAg
dmFyIGJ1ZiA9IGRyYXdBbmRSZWFkUGl4ZWwod2ViR0wsIHZlcnRpY2VzLCBjb2xvcnMsIDAsIDAp
OworICAgIHZhciBidWYgPSBkcmF3QW5kUmVhZFBpeGVsKGdsLCB2ZXJ0aWNlcywgY29sb3JzLCAw
LCAwKTsKICAgICBwaXhlbFswXSA9IGJ1ZlswXTsKICAgICBwaXhlbFsxXSA9IGJ1ZlsxXTsKICAg
ICBwaXhlbFsyXSA9IGJ1ZlsyXTsKICAgICBwaXhlbFszXSA9IGJ1ZlszXTsKICAgICBjb3JyZWN0
Q29sb3IgPSAoY29udGV4dEF0dHJpYnMuZGVwdGggPyBbMCwgMCwgMCwgMjU1XSA6IFsyNTUsIDAs
IDAsIDI1NV0pOwogICAgIHNob3VsZEJlKCJwaXhlbCIsICJjb3JyZWN0Q29sb3IiKTsKKworICAg
IGlmIChmYkhhc0RlcHRoKSB7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgIHZhciBidWYgPSBkcmF3QW5kUmVhZFBpeGVsKGds
LCB2ZXJ0aWNlcywgY29sb3JzLCAwLCAwKTsKKyAgICAgIHBpeGVsWzBdID0gYnVmWzBdOworICAg
ICAgcGl4ZWxbMV0gPSBidWZbMV07CisgICAgICBwaXhlbFsyXSA9IGJ1ZlsyXTsKKyAgICAgIHBp
eGVsWzNdID0gYnVmWzNdOworICAgICAgc2hvdWxkQmUoInBpeGVsIiwgIlswLCAwLCAwLCAyNTVd
Iik7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAg
IH0KIH0KIAogZnVuY3Rpb24gdGVzdFN0ZW5jaWxBbmREZXB0aChzdGVuY2lsLCBkZXB0aCkKIHsK
ICAgICBkZWJ1ZygiVGVzdGluZyBzdGVuY2lsID0gIiArIHN0ZW5jaWwgKyAiLCBkZXB0aCA9ICIg
KyBkZXB0aCk7CiAgICAgdmFyIGNyZWF0aW9uU3RyaW5nID0KLSAgICAgICAgIndlYkdMID0gZ2V0
V2ViR0woMSwgMSwgeyBkZXB0aDogIiArIGRlcHRoICsgIiwgc3RlbmNpbDogIiArIHN0ZW5jaWwg
KyAiLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSI7CisgICAgICAg
ICJnbCA9IGdldFdlYkdMKDEsIDEsIHsgZGVwdGg6ICIgKyBkZXB0aCArICIsIHN0ZW5jaWw6ICIg
KyBzdGVuY2lsICsgIiwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCki
OwogICAgIHNob3VsZEJlTm9uTnVsbChjcmVhdGlvblN0cmluZyk7Ci0gICAgc2hvdWxkQmVOb25O
dWxsKCJjb250ZXh0QXR0cmlicyA9IHdlYkdMLmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKKwor
ICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSA+PSA4Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuR1JFRU5fQklUUykgPj0gOCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMVUVfQklUUykgPj0gOCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMUEhBX0JJVFMpID49IDgiKTsK
KyAgICBpZiAoZGVwdGgpCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0UGFyYW1ldGVyKGds
LkRFUFRIX0JJVFMpID49IDE2Iik7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZVRydWUoImds
LmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA9PSAwIik7CisKKyAgICBpZiAoc3RlbmNpbCkK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA+
PSA4Iik7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZVRydWUoImdsLmdldFBhcmFtZXRlcihn
bC5TVEVOQ0lMX0JJVFMpID09IDAiKTsKKworICAgIHNob3VsZEJlTm9uTnVsbCgiY29udGV4dEF0
dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CisgICAgaWYgKCFkZXB0aCAmJiBj
b250ZXh0QXR0cmlicy5kZXB0aCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCBpbXBsZW1l
bnRhdGlvbiBwcm92aWRlZCBhIGRlcHRoIGJ1ZmZlciB3aGVuIGl0IHNob3VsZCBub3QgaGF2ZSIp
OworICAgIH0KKyAgICBpZiAoIWNvbnRleHRBdHRyaWJzLmRlcHRoKQorICAgICAgICBkZXB0aCA9
IGZhbHNlOwogICAgIGlmICghc3RlbmNpbCAmJiBjb250ZXh0QXR0cmlicy5zdGVuY2lsKSB7CiAg
ICAgICAgIHRlc3RGYWlsZWQoIldlYkdMIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGEgc3RlbmNp
bCBidWZmZXIgd2hlbiBpdCBzaG91bGQgbm90IGhhdmUiKTsKICAgICB9CiAgICAgaWYgKCFjb250
ZXh0QXR0cmlicy5zdGVuY2lsKQogICAgICAgICBzdGVuY2lsID0gZmFsc2U7CiAKLSAgICB3ZWJH
TC5kZXB0aEZ1bmMod2ViR0wuQUxXQVlTKTsKKyAgICBnbC5kZXB0aEZ1bmMoZ2wuQUxXQVlTKTsK
IAotICAgIHdlYkdMLnN0ZW5jaWxGdW5jKHdlYkdMLk5FVkVSLCAxLCAxKTsKLSAgICB3ZWJHTC5z
dGVuY2lsT3Aod2ViR0wuS0VFUCwgd2ViR0wuS0VFUCwgd2ViR0wuS0VFUCk7CisgICAgZ2wuc3Rl
bmNpbEZ1bmMoZ2wuTkVWRVIsIDEsIDEpOworICAgIGdsLnN0ZW5jaWxPcChnbC5LRUVQLCBnbC5L
RUVQLCBnbC5LRUVQKTsKIAogICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWwog
ICAgICAgICAgMS4wLCAxLjAsIDAuMCwKQEAgLTE4NCwyMyArMjgwLDM1IEBAIGZ1bmN0aW9uIHRl
c3RTdGVuY2lsQW5kRGVwdGgoc3RlbmNpbCwgZGUKICAgICAgICAgMjU1LCAwLCAwLCAyNTUsCiAg
ICAgICAgIDI1NSwgMCwgMCwgMjU1XSk7CiAKLSAgICB2YXIgYnVmID0gZHJhd0FuZFJlYWRQaXhl
bCh3ZWJHTCwgdmVydGljZXMsIGNvbG9ycywgMCwgMCk7CisgICAgdmFyIGJ1ZiA9IGRyYXdBbmRS
ZWFkUGl4ZWwoZ2wsIHZlcnRpY2VzLCBjb2xvcnMsIDAsIDApOwogICAgIHBpeGVsWzBdID0gYnVm
WzBdOwogICAgIHBpeGVsWzFdID0gYnVmWzFdOwogICAgIHBpeGVsWzJdID0gYnVmWzJdOwogICAg
IHBpeGVsWzNdID0gYnVmWzNdOwogICAgIGNvcnJlY3RDb2xvciA9IChzdGVuY2lsID8gWzAsIDAs
IDAsIDI1NV0gOiBbMjU1LCAwLCAwLCAyNTVdKTsKICAgICBzaG91bGRCZSgicGl4ZWwiLCAiY29y
cmVjdENvbG9yIik7CisKKyAgICBpZiAoZmJIYXNTdGVuY2lsKSB7CisgICAgICBnbC5iaW5kRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgIHZhciBidWYg
PSBkcmF3QW5kUmVhZFBpeGVsKGdsLCB2ZXJ0aWNlcywgY29sb3JzLCAwLCAwKTsKKyAgICAgIHBp
eGVsWzBdID0gYnVmWzBdOworICAgICAgcGl4ZWxbMV0gPSBidWZbMV07CisgICAgICBwaXhlbFsy
XSA9IGJ1ZlsyXTsKKyAgICAgIHBpeGVsWzNdID0gYnVmWzNdOworICAgICAgc2hvdWxkQmUoInBp
eGVsIiwgIlswLCAwLCAwLCAyNTVdIik7CisgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJB
TUVCVUZGRVIsIG51bGwpOworICAgIH0KIH0KIAogZnVuY3Rpb24gdGVzdEFudGlhbGlhcyhhbnRp
YWxpYXMpCiB7CiAgICAgZGVidWcoIlRlc3RpbmcgYW50aWFsaWFzID0gIiArIGFudGlhbGlhcyk7
CiAgICAgaWYgKGFudGlhbGlhcykKLSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ3ZWJHTCA9IGdl
dFdlYkdMKDIsIDIsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNl
LCBhbnRpYWxpYXM6IHRydWUgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIik7CisgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgyLCAyLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNp
bDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0cnVlIH0sIFsgMCwgMCwgMCwgMSBd
LCAxLCAwKSIpOwogICAgIGVsc2UKLSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ3ZWJHTCA9IGdl
dFdlYkdMKDIsIDIsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYWxwaGE6IGZhbHNl
LCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSIpOwotICAgIHNob3Vs
ZEJlTm9uTnVsbCgiY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250ZXh0QXR0cmlidXRlcygp
Iik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiZ2wgPSBnZXRXZWJHTCgyLCAyLCB7IGRlcHRo
OiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9
LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNvbnRleHRB
dHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOwogCiAgICAgdmFyIHZlcnRpY2Vz
ID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAgICAgICAxLjAsIDEuMCwgMC4wLApAQCAtMjEwLDcg
KzMxOCw3IEBAIGZ1bmN0aW9uIHRlc3RBbnRpYWxpYXMoYW50aWFsaWFzKQogICAgICAgICAyNTUs
IDAsIDAsIDI1NSwKICAgICAgICAgMjU1LCAwLCAwLCAyNTUsCiAgICAgICAgIDI1NSwgMCwgMCwg
MjU1XSk7Ci0gICAgdmFyIGJ1ZiA9IGRyYXdBbmRSZWFkUGl4ZWwod2ViR0wsIHZlcnRpY2VzLCBj
b2xvcnMsIDAsIDApOworICAgIHZhciBidWYgPSBkcmF3QW5kUmVhZFBpeGVsKGdsLCB2ZXJ0aWNl
cywgY29sb3JzLCAwLCAwKTsKICAgICBwaXhlbFswXSA9IGJ1ZlswXTsKICAgICBzaG91bGRCZSgi
cGl4ZWxbMF0gIT0gMjU1ICYmIHBpeGVsWzBdICE9IDAiLCAiY29udGV4dEF0dHJpYnMuYW50aWFs
aWFzIik7CiB9Cg==
</data>
<flag name="review"
          id="151937"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>