<?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>127924</bug_id>
          
          <creation_ts>2014-01-30 11:06:46 -0800</creation_ts>
          <short_desc>WebKit Bot Watcher&apos;s Dashboard: Teach JSON.load() to take optional failure callback function</short_desc>
          <delta_ts>2014-01-31 13:51:53 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973834</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-30 11:06:46 -0800</bug_when>
    <thetext>We should have JSON.load() take an optional failure callback function that is invoked whenever a load error or JSON parsing error occurs.

One use case of the optional failure callback can up in bug #127784  to check whether a load failed due to an authentication error toward avoiding excessively prompting a person for credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973837</commentid>
    <comment_count>1</comment_count>
      <attachid>222690</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-30 11:11:15 -0800</bug_when>
    <thetext>Created attachment 222690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973868</commentid>
    <comment_count>2</comment_count>
      <attachid>222690</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 11:33:10 -0800</bug_when>
    <thetext>Comment on attachment 222690
Patch

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

Looks good to me overall. I&apos;m asking for a number of changes though, so it would be beneficial to have another patch posted before landing.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:354
&gt; +        }.bind(this), function(data) {

Could you please split this into two lines? This looks somewhat confusing as it is, with two distinct large functions that get to share one line of code.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Utilities.js:27
&gt; +JSON.LoadError = 1 &lt;&lt; 0;
&gt; +JSON.ParseError = 1 &lt;&lt; 1;

Other code in the Dashboard uses string names for everything, I don&apos;t think that a bitmask fits the purpose well.

It&apos;s not used as a bitmask either.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Utilities.js:59
&gt; +            parseErrorOccurred = true;

Why not just invoke failureCallback here, and have an early return? That should save us the need to track a state variable.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Utilities.js:63
&gt; +            failureCallback(data);

This will fail if there is no failureCallback, unlike above code that checks for its type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973869</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 11:33:54 -0800</bug_when>
    <thetext>You could also utilize the trick you did before, and assign failureCallback to a no-op function if it&apos;s not what we expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973915</commentid>
    <comment_count>4</comment_count>
      <attachid>222713</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-30 12:40:16 -0800</bug_when>
    <thetext>Created attachment 222713
Patch

Updated patch according to Alexey Proskuryakov&apos;s remarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974460</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 13:51:53 -0800</bug_when>
    <thetext>Committed r163196: &lt;http://trac.webkit.org/changeset/163196&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222690</attachid>
            <date>2014-01-30 11:11:15 -0800</date>
            <delta_ts>2014-01-30 12:40:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127924-20140130111114.patch</filename>
            <type>text/plain</type>
            <size>5313</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDcxOWUwMzlmYzVkYzRlNWM5NGI4ZjcyYWRmYWU4YjNi
NDE2NjE2YS4uMDI0MDRiM2E5Mzc1NDdlYWYwMGFkZGJhODRkZjQzYzU1ZTU5NThiMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1
IEBACiAyMDE0LTAxLTMwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWJLaXQgQm90IFdhdGNoZXIncyBEYXNoYm9hcmQ6IFRlYWNoIEpTT04ubG9hZCgpIHRv
IHRha2Ugb3B0aW9uYWwgZmFpbHVyZSBjYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG93YXJkcyBwcm92aWRpbmcgYmV0dGVy
IGVycm9yIGhhbmRsaW5nIHdoZW4gYSBKU09OIGxvYWQgZmFpbHMgd2l0aCBhIG5vbi0yMDAgSFRU
UCBzdGF0dXMKKyAgICAgICAgY29kZSwgd2Ugc2hvdWxkIHRlYWNoIEpTT04ubG9hZCgpIHRvIHRh
a2UgYW4gb3B0aW9uYWwgZmFpbHVyZSBjYWxsYmFjayBmdW5jdGlvbiBhbmQgaW52b2tlCisgICAg
ICAgIGl0IHdoZW4gZWl0aGVyIGEgbG9hZCBlcnJvciBvciBhIEpTT04gcGFyc2luZyBlcnJvciBv
Y2N1cnMuCisKKyAgICAgICAgQXMgYSBzaWRlIGJlbmVmaXQgb2YgaGF2aW5nIGEgZmFpbHVyZSBj
YWxsYmFjayBmdW5jdGlvbiBhIGNhbGxlciBjYW4gc2VwYXJhdGUgdGhlIGVycm9yIGhhbmRsaW5n
CisgICAgICAgIGxvZ2ljIGZvciBhIEpTT04gbG9hZCBvciBwYXJzZSBlcnJvciBmcm9tIHRoZSBs
b2dpYyBvZiBoYW5kbGluZyBhIHN1Y2Nlc3NmdWwgcGFyc2luZyBvZiBKU09OIGNvbnRlbnQuCisK
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAg
KEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5sb2FkTGF5b3V0VGVzdFJlc3VsdHMpOiBNb3Zl
IEpTT04gcGFyc2VyIGVycm9yIGxvZ2ljIGludG8gZmFpbHVyZQorICAgICAgICBjYWxsYmFjayBm
dW5jdGlvbi4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9VdGlsaXRpZXMuanM6CisgICAgICAg
IChKU09OLmxvYWQpOiBNb2RpZmllZCB0byB0YWtlIG9wdGlvbmFsIGZhaWx1cmUgY2FsbGJhY2sg
ZnVuY3Rpb24gY2FsbGVkIGZhaWx1cmVDYWxsYmFjay4KKworMjAxNC0wMS0zMCAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0IEJvdCBXYXRjaGVyJ3Mg
RGFzaGJvYXJkOiBCdWlsZGJvdCBzaG91bGQgb25seSBwcm9tcHQgZm9yIEhUVFAgY3JlZGVudGlh
bHMgb25jZSBwZXIgcGFnZSBsb2FkCiAgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3ODQ5KQogCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRl
cmF0aW9uLmpzCmluZGV4IGJhOGQzODI3NWE4YTQ3NjI5YzJiNTczYzkwNmE4NGFhMDkzMzNkYjIu
LjRmODAxMGNmODk5YThhNDIwOTkyZTNjMWJkNTM3NDI0ZTA2YjEyNjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCisrKyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCkBAIC0zMzksMTIgKzMzOSw2IEBAIEJ1aWxk
Ym90SXRlcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIEpTT04ubG9h
ZCh0aGlzLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlv
bih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmVycm9yKTsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQog
ICAgICAgICAgICAgdGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9wYXRjaDsK
IAogICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucyA9IGNvbGxl
Y3RSZXN1bHRzKGRhdGEudGVzdHMsIGZ1bmN0aW9uKGluZm8pIHsgcmV0dXJuIGluZm9bInJlcG9y
dCJdID09PSAiUkVHUkVTU0lPTiIgfSk7CkBAIC0zNTcsNiArMzUxLDkgQEAgQnVpbGRib3RJdGVy
YXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1f
bWlzc2luZyA9PT0gdGhpcy5sYXlvdXRUZXN0UmVzdWx0cy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0
cy5sZW5ndGgpOwogCiAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9LmJpbmQodGhp
cyksIHtqc29ucENhbGxiYWNrTmFtZTogIkFERF9SRVNVTFRTIn0pOworICAgICAgICB9LmJpbmQo
dGhpcyksIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJy
b3IpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSwge2pzb25wQ2FsbGJhY2tO
YW1lOiAiQUREX1JFU1VMVFMifSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL1V0aWxpdGllcy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1V0aWxpdGllcy5q
cwppbmRleCBkYjFmMTM3ZGRmN2VmZDI2ZjQxY2Y1OGFkODc4YjIxNzBiMzFiMjAyLi45Y2I2MDgz
YmRmYmMyZThlZGM4NTljNWNmZjkzNjlhN2RiYjZhNmY2IDEwMDY0NAotLS0gYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9VdGlsaXRpZXMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0
aWVzLmpzCkBAIC0yMywxMSArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1KU09OLmxvYWQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrLCBvcHRpb25z
KQorSlNPTi5Mb2FkRXJyb3IgPSAxIDw8IDA7CitKU09OLlBhcnNlRXJyb3IgPSAxIDw8IDE7CisK
K0pTT04ubG9hZCA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJh
Y2ssIG9wdGlvbnMpCiB7CiAgICAgY29uc29sZS5hc3NlcnQodXJsKTsKIAotICAgIGlmICghKGNh
bGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pKQorICAgIGlmICghKHN1Y2Nlc3NDYWxsYmFjayBp
bnN0YW5jZW9mIEZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHR5cGVvZiBv
cHRpb25zICE9PSAib2JqZWN0IikKQEAgLTM4LDE4ICs0MSwyOCBAQCBKU09OLmxvYWQgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrLCBvcHRpb25zKQogICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRl
ICE9PSA0KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIC8vIERvbid0IGNvbnNpZGVy
IGEgc3RhdHVzIG9mIDAgdG8gYmUgYSBsb2FkIGVycm9yIGZvciBlYXNpZXIgdGVzdGluZyB3aXRo
IGxvY2FsIGZpbGVzLgorICAgICAgICB2YXIgbG9hZEVycm9yT2NjdXJyZWQgPSB0aGlzLnN0YXR1
cyAhPT0gMCAmJiB0aGlzLnN0YXR1cyAhPT0gMjAwOworICAgICAgICBpZiAobG9hZEVycm9yT2Nj
dXJyZWQgJiYgZmFpbHVyZUNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjayh7ZXJyb3JUeXBlOiBKU09OLkxvYWRFcnJvciwgZXJyb3I6IHRo
aXMuc3RhdHVzVGV4dCwgZXJyb3JIVFRQQ29kZTogdGhpcy5zdGF0dXN9KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBwYXJzZUVycm9yT2NjdXJyZWQgPSBm
YWxzZTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHZhciByZXNwb25zZVRleHQgPSByZXF1
ZXN0LnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgIGlmIChvcHRpb25zLmhhc093blByb3BlcnR5
KCJqc29ucENhbGxiYWNrTmFtZSIpKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dCA9IHJl
c3BvbnNlVGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoIl4iICsgb3B0aW9ucy5qc29ucENhbGxiYWNr
TmFtZSArICJcXCgoLiopXFwpOz8kIiksICIkMSIpOwogICAgICAgICAgICAgdmFyIGRhdGEgPSBK
U09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgIHZhciBkYXRhID0ge2Vycm9yOiBlLm1lc3NhZ2V9OworICAgICAgICAgICAgdmFyIGRhdGEg
PSB7ZXJyb3JUeXBlOiBKU09OLlBhcnNlRXJyb3IsIGVycm9yOiBlLm1lc3NhZ2V9OworICAgICAg
ICAgICAgcGFyc2VFcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IEFsbG93IGEgc3RhdHVzIG9mIDAgZm9yIGVhc2llciB0ZXN0aW5nIHdpdGggbG9jYWwgZmlsZXMu
Ci0gICAgICAgIGlmICghdGhpcy5zdGF0dXMgfHwgdGhpcy5zdGF0dXMgPT09IDIwMCkKLSAgICAg
ICAgICAgIGNhbGxiYWNrKGRhdGEpOworICAgICAgICBpZiAocGFyc2VFcnJvck9jY3VycmVkKQor
ICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKGRhdGEpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzdWNjZXNzQ2FsbGJhY2soZGF0YSk7CiAgICAgfTsKIAogICAgIHJlcXVlc3Qub3Blbigi
R0VUIiwgdXJsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222713</attachid>
            <date>2014-01-30 12:40:16 -0800</date>
            <delta_ts>2014-01-30 14:20:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127924-20140130124016.patch</filename>
            <type>text/plain</type>
            <size>5311</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmZhYjYwMDhmOTg1NjgxZTZmYzFkMWIxZWIzMTE3YmVj
ZmExZDRiMS4uYWFiNDA0OGYzZDZiYTVlMzJiZDEyZGVkMmI1MDBmM2I4ZTk0ODY2ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1
IEBACiAyMDE0LTAxLTMwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWJLaXQgQm90IFdhdGNoZXIncyBEYXNoYm9hcmQ6IFRlYWNoIEpTT04ubG9hZCgpIHRv
IHRha2Ugb3B0aW9uYWwgZmFpbHVyZSBjYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG93YXJkcyBwcm92aWRpbmcgYmV0dGVy
IGVycm9yIGhhbmRsaW5nIHdoZW4gYSBKU09OIGxvYWQgZmFpbHMgd2l0aCBhIG5vbi0yMDAgSFRU
UCBzdGF0dXMKKyAgICAgICAgY29kZSwgd2Ugc2hvdWxkIHRlYWNoIEpTT04ubG9hZCgpIHRvIHRh
a2UgYW4gb3B0aW9uYWwgZmFpbHVyZSBjYWxsYmFjayBmdW5jdGlvbiBhbmQgaW52b2tlCisgICAg
ICAgIGl0IHdoZW4gZWl0aGVyIGEgbG9hZCBlcnJvciBvciBhIEpTT04gcGFyc2luZyBlcnJvciBv
Y2N1cnMuCisKKyAgICAgICAgQXMgYSBzaWRlIGJlbmVmaXQgb2YgaGF2aW5nIGEgZmFpbHVyZSBj
YWxsYmFjayBmdW5jdGlvbiBhIGNhbGxlciBjYW4gc2VwYXJhdGUgdGhlIGVycm9yIGhhbmRsaW5n
CisgICAgICAgIGxvZ2ljIGZvciBhIEpTT04gbG9hZCBvciBwYXJzZSBlcnJvciBmcm9tIHRoZSBs
b2dpYyBvZiBoYW5kbGluZyBhIHN1Y2Nlc3NmdWwgcGFyc2luZyBvZiBKU09OIGNvbnRlbnQuCisK
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAg
KEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5sb2FkTGF5b3V0VGVzdFJlc3VsdHMpOiBNb3Zl
IEpTT04gcGFyc2VyIGVycm9yIGxvZ2ljIGludG8gZmFpbHVyZQorICAgICAgICBjYWxsYmFjayBm
dW5jdGlvbi4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9VdGlsaXRpZXMuanM6CisgICAgICAg
IChKU09OLmxvYWQpOiBNb2RpZmllZCB0byB0YWtlIG9wdGlvbmFsIGZhaWx1cmUgY2FsbGJhY2sg
ZnVuY3Rpb24gY2FsbGVkIGZhaWx1cmVDYWxsYmFjay4KKworMjAxNC0wMS0zMCAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0IEJvdCBXYXRjaGVyJ3Mg
RGFzaGJvYXJkOiBCdWlsZGJvdCBzaG91bGQgb25seSBwcm9tcHQgZm9yIEhUVFAgY3JlZGVudGlh
bHMgb25jZSBwZXIgcGFnZSBsb2FkCiAgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3ODQ5KQogCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRl
cmF0aW9uLmpzCmluZGV4IGJhOGQzODI3NWE4YTQ3NjI5YzJiNTczYzkwNmE4NGFhMDkzMzNkYjIu
LmVjZWM5YzM1NDFmYWI3NDJjOTM5NDk1MzU3ODU3MzkxOWIxMjc5ZjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCisrKyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCkBAIC0zMzksMTIgKzMzOSw2IEBAIEJ1aWxk
Ym90SXRlcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIEpTT04ubG9h
ZCh0aGlzLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlv
bih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmVycm9yKTsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQog
ICAgICAgICAgICAgdGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9wYXRjaDsK
IAogICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucyA9IGNvbGxl
Y3RSZXN1bHRzKGRhdGEudGVzdHMsIGZ1bmN0aW9uKGluZm8pIHsgcmV0dXJuIGluZm9bInJlcG9y
dCJdID09PSAiUkVHUkVTU0lPTiIgfSk7CkBAIC0zNTcsNiArMzUxLDEwIEBAIEJ1aWxkYm90SXRl
cmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVt
X21pc3NpbmcgPT09IHRoaXMubGF5b3V0VGVzdFJlc3VsdHMudGVzdHNXaXRoTWlzc2luZ1Jlc3Vs
dHMubGVuZ3RoKTsKIAogICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRo
aXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERfUkVTVUxUUyJ9KTsKKyAgICAgICAgfS5iaW5k
KHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBjb25zb2xlLmxv
ZyhkYXRhLmVycm9yKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0sIHtqc29u
cENhbGxiYWNrTmFtZTogIkFERF9SRVNVTFRTIn0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9VdGlsaXRpZXMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9V
dGlsaXRpZXMuanMKaW5kZXggZGIxZjEzN2RkZjdlZmQyNmY0MWNmNThhZDg3OGIyMTcwYjMxYjIw
Mi4uMGUyYTcyZDg1OTI0MDEwNzlmZGU1N2YzMDI1YTU2YjViM2ZhY2E3OSAxMDA2NDQKLS0tIGEv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0aWVzLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL1V0aWxpdGllcy5qcwpAQCAtMjMsMTMgKzIzLDE5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotSlNPTi5sb2FkID0gZnVuY3Rpb24odXJsLCBjYWxsYmFj
aywgb3B0aW9ucykKK0pTT04uTG9hZEVycm9yID0gIkpTT05Mb2FkRXJyb3IiOworSlNPTi5QYXJz
ZUVycm9yID0gIkpTT05QYXJzZUVycm9yIjsKKworSlNPTi5sb2FkID0gZnVuY3Rpb24odXJsLCBz
dWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgb3B0aW9ucykKIHsKICAgICBjb25zb2xl
LmFzc2VydCh1cmwpOwogCi0gICAgaWYgKCEoY2FsbGJhY2sgaW5zdGFuY2VvZiBGdW5jdGlvbikp
CisgICAgaWYgKCEoc3VjY2Vzc0NhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoIShmYWlsdXJlQ2FsbGJhY2sgaW5zdGFuY2VvZiBGdW5jdGlv
bikpCisgICAgICAgIGZhaWx1cmVDYWxsYmFjayA9IGZ1bmN0aW9uKCkgeyB9OworCiAgICAgaWYg
KHR5cGVvZiBvcHRpb25zICE9PSAib2JqZWN0IikKICAgICAgICAgb3B0aW9ucyA9IHt9OwogCkBA
IC0zOCwxOCArNDQsMjUgQEAgSlNPTi5sb2FkID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaywgb3B0
aW9ucykKICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSAhPT0gNCkKICAgICAgICAgICAgIHJl
dHVybjsKIAorICAgICAgICAvLyBEb24ndCBjb25zaWRlciBhIHN0YXR1cyBvZiAwIHRvIGJlIGEg
bG9hZCBlcnJvciBmb3IgZWFzaWVyIHRlc3Rpbmcgd2l0aCBsb2NhbCBmaWxlcy4KKyAgICAgICAg
dmFyIGxvYWRFcnJvck9jY3VycmVkID0gdGhpcy5zdGF0dXMgIT09IDAgJiYgdGhpcy5zdGF0dXMg
IT09IDIwMDsKKyAgICAgICAgaWYgKGxvYWRFcnJvck9jY3VycmVkKSB7CisgICAgICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soe2Vycm9yVHlwZTogSlNPTi5Mb2FkRXJyb3IsIGVycm9yOiB0aGlzLnN0
YXR1c1RleHQsIGVycm9ySFRUUENvZGU6IHRoaXMuc3RhdHVzfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgdmFyIHJlc3BvbnNl
VGV4dCA9IHJlcXVlc3QucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGFz
T3duUHJvcGVydHkoImpzb25wQ2FsbGJhY2tOYW1lIikpCiAgICAgICAgICAgICAgICAgcmVzcG9u
c2VUZXh0ID0gcmVzcG9uc2VUZXh0LnJlcGxhY2UobmV3IFJlZ0V4cCgiXiIgKyBvcHRpb25zLmpz
b25wQ2FsbGJhY2tOYW1lICsgIlxcKCguKilcXCk7PyQiKSwgIiQxIik7CiAgICAgICAgICAgICB2
YXIgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VUZXh0KTsKICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgdmFyIGRhdGEgPSB7ZXJyb3I6IGUubWVzc2FnZX07CisgICAgICAgICAg
ICB2YXIgZGF0YSA9IHtlcnJvclR5cGU6IEpTT04uUGFyc2VFcnJvciwgZXJyb3I6IGUubWVzc2Fn
ZX07CisgICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2soZGF0YSk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBbGxvdyBhIHN0YXR1cyBvZiAwIGZvciBlYXNp
ZXIgdGVzdGluZyB3aXRoIGxvY2FsIGZpbGVzLgotICAgICAgICBpZiAoIXRoaXMuc3RhdHVzIHx8
IHRoaXMuc3RhdHVzID09PSAyMDApCi0gICAgICAgICAgICBjYWxsYmFjayhkYXRhKTsKKyAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrKGRhdGEpOwogICAgIH07CiAKICAgICByZXF1ZXN0Lm9wZW4oIkdF
VCIsIHVybCk7Cg==
</data>
<flag name="review"
          id="246723"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>