<?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>32490</bug_id>
          
          <creation_ts>2009-12-13 09:49:38 -0800</creation_ts>
          <short_desc>Use JSON.parse for Web-hosted SunSpider results processing</short_desc>
          <delta_ts>2010-03-22 19:50: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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>seth.gaurav</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171213</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-13 09:49:38 -0800</bug_when>
    <thetext>Use JSON.parse instead of eval for Web-hosted SunSpider results processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171214</commentid>
    <comment_count>1</comment_count>
      <attachid>44758</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-13 09:58:11 -0800</bug_when>
    <thetext>Created attachment 44758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171215</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-13 10:02:01 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44758 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171221</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-13 12:37:27 -0800</bug_when>
    <thetext>Committed r52068: &lt;http://trac.webkit.org/changeset/52068&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44758</attachid>
            <date>2009-12-13 09:58:11 -0800</date>
            <delta_ts>2009-12-13 10:49:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32490-20091213095810.patch</filename>
            <type>text/plain</type>
            <size>20426</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFN1blNwaWRlci9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU3VuU3BpZGVyL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTIwNjcpCisrKyBTdW5TcGlkZXIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTItMTMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpz
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgSlNPTi5wYXJzZSBpbnN0ZWFkIG9mIGV2YWwgZm9yIFdlYi1ob3N0ZWQgU3VuU3Bp
ZGVyIHJlc3VsdHMgcHJvY2Vzc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzI0OTAKKworICAgICAgICAqIGhvc3RlZC9qc29uMi5qczogQWRkZWQu
IEluY29ycG9yYXRlZCBmcm9tIGpzb24ub3JnCisgICAgICAgICogcmVzb3VyY2VzL2RyaXZlci1U
RU1QTEFURS5odG1sOiBGaXggYW4gSFRNTCB2YWxpZGF0aW9uIGJ1ZyBJIG5vdGljZWQuCisgICAg
ICAgICogcmVzb3VyY2VzL3Jlc3VsdHMtVEVNUExBVEUuaHRtbDogVXNlIEpTT04ucGFyc2UgaW5z
dGVhZCBvZiBldmFsIHRvIHByb2Nlc3MKKyAgICAgICAgcmVzdWx0cy4KKwogMjAwOS0xMi0xMiAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgpJbmRleDogU3VuU3BpZGVyL2hvc3RlZC9qc29uMi5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTdW5TcGlkZXIvaG9zdGVkL2pzb24yLmpzCShyZXZpc2lvbiAwKQorKysgU3VuU3BpZGVy
L2hvc3RlZC9qc29uMi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0ODEgQEAKKy8qCisgICAg
aHR0cDovL3d3dy5KU09OLm9yZy9qc29uMi5qcworICAgIDIwMDktMDktMjkKKworICAgIFB1Ymxp
YyBEb21haW4uCisKKyAgICBOTyBXQVJSQU5UWSBFWFBSRVNTRUQgT1IgSU1QTElFRC4gVVNFIEFU
IFlPVVIgT1dOIFJJU0suCisKKyAgICBTZWUgaHR0cDovL3d3dy5KU09OLm9yZy9qcy5odG1sCisK
KworICAgIFRoaXMgY29kZSBzaG91bGQgYmUgbWluaWZpZWQgYmVmb3JlIGRlcGxveW1lbnQuCisg
ICAgU2VlIGh0dHA6Ly9qYXZhc2NyaXB0LmNyb2NrZm9yZC5jb20vanNtaW4uaHRtbAorCisgICAg
VVNFIFlPVVIgT1dOIENPUFkuIElUIElTIEVYVFJFTUVMWSBVTldJU0UgVE8gTE9BRCBDT0RFIEZS
T00gU0VSVkVSUyBZT1UgRE8KKyAgICBOT1QgQ09OVFJPTC4KKworCisgICAgVGhpcyBmaWxlIGNy
ZWF0ZXMgYSBnbG9iYWwgSlNPTiBvYmplY3QgY29udGFpbmluZyB0d28gbWV0aG9kczogc3RyaW5n
aWZ5CisgICAgYW5kIHBhcnNlLgorCisgICAgICAgIEpTT04uc3RyaW5naWZ5KHZhbHVlLCByZXBs
YWNlciwgc3BhY2UpCisgICAgICAgICAgICB2YWx1ZSAgICAgICBhbnkgSmF2YVNjcmlwdCB2YWx1
ZSwgdXN1YWxseSBhbiBvYmplY3Qgb3IgYXJyYXkuCisKKyAgICAgICAgICAgIHJlcGxhY2VyICAg
IGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGRldGVybWluZXMgaG93IG9iamVjdAorICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBzdHJpbmdpZmllZCBmb3Igb2JqZWN0cy4gSXQg
Y2FuIGJlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9yIGFuIGFycmF5IG9m
IHN0cmluZ3MuCisKKyAgICAgICAgICAgIHNwYWNlICAgICAgIGFuIG9wdGlvbmFsIHBhcmFtZXRl
ciB0aGF0IHNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
IG9mIG5lc3RlZCBzdHJ1Y3R1cmVzLiBJZiBpdCBpcyBvbWl0dGVkLCB0aGUgdGV4dCB3aWxsCisg
ICAgICAgICAgICAgICAgICAgICAgICBiZSBwYWNrZWQgd2l0aG91dCBleHRyYSB3aGl0ZXNwYWNl
LiBJZiBpdCBpcyBhIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgc3Bl
Y2lmeSB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgYXQgZWFjaAorICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWwuIElmIGl0IGlzIGEgc3RyaW5nIChzdWNoIGFzICdcdCcgb3IgJyZu
YnNwOycpLAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgY29udGFpbnMgdGhlIGNoYXJhY3Rl
cnMgdXNlZCB0byBpbmRlbnQgYXQgZWFjaCBsZXZlbC4KKworICAgICAgICAgICAgVGhpcyBtZXRo
b2QgcHJvZHVjZXMgYSBKU09OIHRleHQgZnJvbSBhIEphdmFTY3JpcHQgdmFsdWUuCisKKyAgICAg
ICAgICAgIFdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIGZvdW5kLCBpZiB0aGUgb2JqZWN0IGNvbnRh
aW5zIGEgdG9KU09OCisgICAgICAgICAgICBtZXRob2QsIGl0cyB0b0pTT04gbWV0aG9kIHdpbGwg
YmUgY2FsbGVkIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgICAgICAgICAgIHN0cmluZ2lmaWVk
LiBBIHRvSlNPTiBtZXRob2QgZG9lcyBub3Qgc2VyaWFsaXplOiBpdCByZXR1cm5zIHRoZQorICAg
ICAgICAgICAgdmFsdWUgcmVwcmVzZW50ZWQgYnkgdGhlIG5hbWUvdmFsdWUgcGFpciB0aGF0IHNo
b3VsZCBiZSBzZXJpYWxpemVkLAorICAgICAgICAgICAgb3IgdW5kZWZpbmVkIGlmIG5vdGhpbmcg
c2hvdWxkIGJlIHNlcmlhbGl6ZWQuIFRoZSB0b0pTT04gbWV0aG9kCisgICAgICAgICAgICB3aWxs
IGJlIHBhc3NlZCB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUsIGFuZCB0aGlzIHdp
bGwgYmUKKyAgICAgICAgICAgIGJvdW5kIHRvIHRoZSB2YWx1ZQorCisgICAgICAgICAgICBGb3Ig
ZXhhbXBsZSwgdGhpcyB3b3VsZCBzZXJpYWxpemUgRGF0ZXMgYXMgSVNPIHN0cmluZ3MuCisKKyAg
ICAgICAgICAgICAgICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoa2V5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYobikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuIDogbjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFVUQ0Z1
bGxZZWFyKCkgICArICctJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVU
Q01vbnRoKCkgKyAxKSArICctJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdl
dFVUQ0RhdGUoKSkgICAgICArICdUJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlz
LmdldFVUQ0hvdXJzKCkpICAgICArICc6JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgZih0
aGlzLmdldFVUQ01pbnV0ZXMoKSkgICArICc6JyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
Zih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJzsKKyAgICAgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVwbGFjZXIgbWV0aG9kLiBJ
dCB3aWxsIGJlIHBhc3NlZCB0aGUKKyAgICAgICAgICAgIGtleSBhbmQgdmFsdWUgb2YgZWFjaCBt
ZW1iZXIsIHdpdGggdGhpcyBib3VuZCB0byB0aGUgY29udGFpbmluZworICAgICAgICAgICAgb2Jq
ZWN0LiBUaGUgdmFsdWUgdGhhdCBpcyByZXR1cm5lZCBmcm9tIHlvdXIgbWV0aG9kIHdpbGwgYmUK
KyAgICAgICAgICAgIHNlcmlhbGl6ZWQuIElmIHlvdXIgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVk
LCB0aGVuIHRoZSBtZW1iZXIgd2lsbAorICAgICAgICAgICAgYmUgZXhjbHVkZWQgZnJvbSB0aGUg
c2VyaWFsaXphdGlvbi4KKworICAgICAgICAgICAgSWYgdGhlIHJlcGxhY2VyIHBhcmFtZXRlciBp
cyBhbiBhcnJheSBvZiBzdHJpbmdzLCB0aGVuIGl0IHdpbGwgYmUKKyAgICAgICAgICAgIHVzZWQg
dG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGJlIHNlcmlhbGl6ZWQuIEl0IGZpbHRlcnMgdGhlIHJl
c3VsdHMKKyAgICAgICAgICAgIHN1Y2ggdGhhdCBvbmx5IG1lbWJlcnMgd2l0aCBrZXlzIGxpc3Rl
ZCBpbiB0aGUgcmVwbGFjZXIgYXJyYXkgYXJlCisgICAgICAgICAgICBzdHJpbmdpZmllZC4KKwor
ICAgICAgICAgICAgVmFsdWVzIHRoYXQgZG8gbm90IGhhdmUgSlNPTiByZXByZXNlbnRhdGlvbnMs
IHN1Y2ggYXMgdW5kZWZpbmVkIG9yCisgICAgICAgICAgICBmdW5jdGlvbnMsIHdpbGwgbm90IGJl
IHNlcmlhbGl6ZWQuIFN1Y2ggdmFsdWVzIGluIG9iamVjdHMgd2lsbCBiZQorICAgICAgICAgICAg
ZHJvcHBlZDsgaW4gYXJyYXlzIHRoZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG51bGwuIFlvdSBj
YW4gdXNlCisgICAgICAgICAgICBhIHJlcGxhY2VyIGZ1bmN0aW9uIHRvIHJlcGxhY2UgdGhvc2Ug
d2l0aCBKU09OIHZhbHVlcy4KKyAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHVuZGVmaW5lZCkg
cmV0dXJucyB1bmRlZmluZWQuCisKKyAgICAgICAgICAgIFRoZSBvcHRpb25hbCBzcGFjZSBwYXJh
bWV0ZXIgcHJvZHVjZXMgYSBzdHJpbmdpZmljYXRpb24gb2YgdGhlCisgICAgICAgICAgICB2YWx1
ZSB0aGF0IGlzIGZpbGxlZCB3aXRoIGxpbmUgYnJlYWtzIGFuZCBpbmRlbnRhdGlvbiB0byBtYWtl
IGl0CisgICAgICAgICAgICBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAgICAgSWYgdGhlIHNw
YWNlIHBhcmFtZXRlciBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZW4gdGhhdCBzdHJpbmcgd2ls
bAorICAgICAgICAgICAgYmUgdXNlZCBmb3IgaW5kZW50YXRpb24uIElmIHRoZSBzcGFjZSBwYXJh
bWV0ZXIgaXMgYSBudW1iZXIsIHRoZW4KKyAgICAgICAgICAgIHRoZSBpbmRlbnRhdGlvbiB3aWxs
IGJlIHRoYXQgbWFueSBzcGFjZXMuCisKKyAgICAgICAgICAgIEV4YW1wbGU6CisKKyAgICAgICAg
ICAgIHRleHQgPSBKU09OLnN0cmluZ2lmeShbJ2UnLCB7cGx1cmlidXM6ICd1bnVtJ31dKTsKKyAg
ICAgICAgICAgIC8vIHRleHQgaXMgJ1siZSIseyJwbHVyaWJ1cyI6InVudW0ifV0nCisKKworICAg
ICAgICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KFsnZScsIHtwbHVyaWJ1czogJ3VudW0nfV0s
IG51bGwsICdcdCcpOworICAgICAgICAgICAgLy8gdGV4dCBpcyAnW1xuXHQiZSIsXG5cdHtcblx0
XHQicGx1cmlidXMiOiAidW51bSJcblx0fVxuXScKKworICAgICAgICAgICAgdGV4dCA9IEpTT04u
c3RyaW5naWZ5KFtuZXcgRGF0ZSgpXSwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpc1trZXldIGluc3RhbmNlb2YgRGF0ZSA/CisgICAgICAgICAgICAg
ICAgICAgICdEYXRlKCcgKyB0aGlzW2tleV0gKyAnKScgOiB2YWx1ZTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgLy8gdGV4dCBpcyAnWyJEYXRlKC0tLWN1cnJlbnQgdGltZS0tLSkiXScK
KworCisgICAgICAgIEpTT04ucGFyc2UodGV4dCwgcmV2aXZlcikKKyAgICAgICAgICAgIFRoaXMg
bWV0aG9kIHBhcnNlcyBhIEpTT04gdGV4dCB0byBwcm9kdWNlIGFuIG9iamVjdCBvciBhcnJheS4K
KyAgICAgICAgICAgIEl0IGNhbiB0aHJvdyBhIFN5bnRheEVycm9yIGV4Y2VwdGlvbi4KKworICAg
ICAgICAgICAgVGhlIG9wdGlvbmFsIHJldml2ZXIgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhh
dCBjYW4gZmlsdGVyIGFuZAorICAgICAgICAgICAgdHJhbnNmb3JtIHRoZSByZXN1bHRzLiBJdCBy
ZWNlaXZlcyBlYWNoIG9mIHRoZSBrZXlzIGFuZCB2YWx1ZXMsCisgICAgICAgICAgICBhbmQgaXRz
IHJldHVybiB2YWx1ZSBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIHZhbHVlLgorICAg
ICAgICAgICAgSWYgaXQgcmV0dXJucyB3aGF0IGl0IHJlY2VpdmVkLCB0aGVuIHRoZSBzdHJ1Y3R1
cmUgaXMgbm90IG1vZGlmaWVkLgorICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB1bmRlZmluZWQg
dGhlbiB0aGUgbWVtYmVyIGlzIGRlbGV0ZWQuCisKKyAgICAgICAgICAgIEV4YW1wbGU6CisKKyAg
ICAgICAgICAgIC8vIFBhcnNlIHRoZSB0ZXh0LiBWYWx1ZXMgdGhhdCBsb29rIGxpa2UgSVNPIGRh
dGUgc3RyaW5ncyB3aWxsCisgICAgICAgICAgICAvLyBiZSBjb252ZXJ0ZWQgdG8gRGF0ZSBvYmpl
Y3RzLgorCisgICAgICAgICAgICBteURhdGEgPSBKU09OLnBhcnNlKHRleHQsIGZ1bmN0aW9uIChr
ZXksIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGE7CisgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICAgICAgYSA9Cisv
XihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0oPzpcLlxkKik/
KVokLy5leGVjKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrYVsxXSwgK2FbMl0gLSAx
LCArYVszXSwgK2FbNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgK2FbNV0sICthWzZd
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG15RGF0
YSA9IEpTT04ucGFyc2UoJ1siRGF0ZSgwOS8wOS8yMDAxKSJdJywgZnVuY3Rpb24gKGtleSwgdmFs
dWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgZDsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IHZhbHVlID09PSAnc3RyaW5nJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xp
Y2UoMCwgNSkgPT09ICdEYXRlKCcgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNs
aWNlKC0xKSA9PT0gJyknKSB7CisgICAgICAgICAgICAgICAgICAgIGQgPSBuZXcgRGF0ZSh2YWx1
ZS5zbGljZSg1LCAtMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoZCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgfSk7
CisKKworICAgIFRoaXMgaXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uIFlvdSBhcmUgZnJl
ZSB0byBjb3B5LCBtb2RpZnksIG9yCisgICAgcmVkaXN0cmlidXRlLgorKi8KKworLypqc2xpbnQg
ZXZpbDogdHJ1ZSwgc3RyaWN0OiBmYWxzZSAqLworCisvKm1lbWJlcnMgIiIsICJcYiIsICJcdCIs
ICJcbiIsICJcZiIsICJcciIsICJcIiIsIEpTT04sICJcXCIsIGFwcGx5LAorICAgIGNhbGwsIGNo
YXJDb2RlQXQsIGdldFVUQ0RhdGUsIGdldFVUQ0Z1bGxZZWFyLCBnZXRVVENIb3VycywKKyAgICBn
ZXRVVENNaW51dGVzLCBnZXRVVENNb250aCwgZ2V0VVRDU2Vjb25kcywgaGFzT3duUHJvcGVydHks
IGpvaW4sCisgICAgbGFzdEluZGV4LCBsZW5ndGgsIHBhcnNlLCBwcm90b3R5cGUsIHB1c2gsIHJl
cGxhY2UsIHNsaWNlLCBzdHJpbmdpZnksCisgICAgdGVzdCwgdG9KU09OLCB0b1N0cmluZywgdmFs
dWVPZgorKi8KKworCisvLyBDcmVhdGUgYSBKU09OIG9iamVjdCBvbmx5IGlmIG9uZSBkb2VzIG5v
dCBhbHJlYWR5IGV4aXN0LiBXZSBjcmVhdGUgdGhlCisvLyBtZXRob2RzIGluIGEgY2xvc3VyZSB0
byBhdm9pZCBjcmVhdGluZyBnbG9iYWwgdmFyaWFibGVzLgorCitpZiAoIXRoaXMuSlNPTikgewor
ICAgIHRoaXMuSlNPTiA9IHt9OworfQorCisoZnVuY3Rpb24gKCkgeworCisgICAgZnVuY3Rpb24g
ZihuKSB7CisgICAgICAgIC8vIEZvcm1hdCBpbnRlZ2VycyB0byBoYXZlIGF0IGxlYXN0IHR3byBk
aWdpdHMuCisgICAgICAgIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuIDogbjsKKyAgICB9CisKKyAg
ICBpZiAodHlwZW9mIERhdGUucHJvdG90eXBlLnRvSlNPTiAhPT0gJ2Z1bmN0aW9uJykgeworCisg
ICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKKworICAgICAg
ICAgICAgcmV0dXJuIGlzRmluaXRlKHRoaXMudmFsdWVPZigpKSA/CisgICAgICAgICAgICAgICAg
ICAgdGhpcy5nZXRVVENGdWxsWWVhcigpICAgKyAnLScgKworICAgICAgICAgICAgICAgICBmKHRo
aXMuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsKKyAgICAgICAgICAgICAgICAgZih0aGlzLmdl
dFVUQ0RhdGUoKSkgICAgICArICdUJyArCisgICAgICAgICAgICAgICAgIGYodGhpcy5nZXRVVENI
b3VycygpKSAgICAgKyAnOicgKworICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDTWludXRl
cygpKSAgICsgJzonICsKKyAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkg
ICArICdaJyA6IG51bGw7CisgICAgICAgIH07CisKKyAgICAgICAgU3RyaW5nLnByb3RvdHlwZS50
b0pTT04gPQorICAgICAgICBOdW1iZXIucHJvdG90eXBlLnRvSlNPTiA9CisgICAgICAgIEJvb2xl
YW4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLnZhbHVlT2YoKTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB2YXIgY3ggPSAvW1x1
MDAwMFx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUy
MDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLAorICAgICAgICBl
c2NhcGFibGUgPSAvW1xcXCJceDAwLVx4MWZceDdmLVx4OWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUw
NzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVm
ZWZmXHVmZmYwLVx1ZmZmZl0vZywKKyAgICAgICAgZ2FwLAorICAgICAgICBpbmRlbnQsCisgICAg
ICAgIG1ldGEgPSB7ICAgIC8vIHRhYmxlIG9mIGNoYXJhY3RlciBzdWJzdGl0dXRpb25zCisgICAg
ICAgICAgICAnXGInOiAnXFxiJywKKyAgICAgICAgICAgICdcdCc6ICdcXHQnLAorICAgICAgICAg
ICAgJ1xuJzogJ1xcbicsCisgICAgICAgICAgICAnXGYnOiAnXFxmJywKKyAgICAgICAgICAgICdc
cic6ICdcXHInLAorICAgICAgICAgICAgJyInIDogJ1xcIicsCisgICAgICAgICAgICAnXFwnOiAn
XFxcXCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVwOworCisKKyAgICBmdW5jdGlvbiBxdW90ZShz
dHJpbmcpIHsKKworLy8gSWYgdGhlIHN0cmluZyBjb250YWlucyBubyBjb250cm9sIGNoYXJhY3Rl
cnMsIG5vIHF1b3RlIGNoYXJhY3RlcnMsIGFuZCBubworLy8gYmFja3NsYXNoIGNoYXJhY3RlcnMs
IHRoZW4gd2UgY2FuIHNhZmVseSBzbGFwIHNvbWUgcXVvdGVzIGFyb3VuZCBpdC4KKy8vIE90aGVy
d2lzZSB3ZSBtdXN0IGFsc28gcmVwbGFjZSB0aGUgb2ZmZW5kaW5nIGNoYXJhY3RlcnMgd2l0aCBz
YWZlIGVzY2FwZQorLy8gc2VxdWVuY2VzLgorCisgICAgICAgIGVzY2FwYWJsZS5sYXN0SW5kZXgg
PSAwOworICAgICAgICByZXR1cm4gZXNjYXBhYmxlLnRlc3Qoc3RyaW5nKSA/CisgICAgICAgICAg
ICAnIicgKyBzdHJpbmcucmVwbGFjZShlc2NhcGFibGUsIGZ1bmN0aW9uIChhKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGMgPSBtZXRhW2FdOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Yg
YyA9PT0gJ3N0cmluZycgPyBjIDoKKyAgICAgICAgICAgICAgICAgICAgJ1xcdScgKyAoJzAwMDAn
ICsgYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpOworICAgICAgICAgICAg
fSkgKyAnIicgOgorICAgICAgICAgICAgJyInICsgc3RyaW5nICsgJyInOworICAgIH0KKworCisg
ICAgZnVuY3Rpb24gc3RyKGtleSwgaG9sZGVyKSB7CisKKy8vIFByb2R1Y2UgYSBzdHJpbmcgZnJv
bSBob2xkZXJba2V5XS4KKworICAgICAgICB2YXIgaSwgICAgICAgICAgLy8gVGhlIGxvb3AgY291
bnRlci4KKyAgICAgICAgICAgIGssICAgICAgICAgIC8vIFRoZSBtZW1iZXIga2V5LgorICAgICAg
ICAgICAgdiwgICAgICAgICAgLy8gVGhlIG1lbWJlciB2YWx1ZS4KKyAgICAgICAgICAgIGxlbmd0
aCwKKyAgICAgICAgICAgIG1pbmQgPSBnYXAsCisgICAgICAgICAgICBwYXJ0aWFsLAorICAgICAg
ICAgICAgdmFsdWUgPSBob2xkZXJba2V5XTsKKworLy8gSWYgdGhlIHZhbHVlIGhhcyBhIHRvSlNP
TiBtZXRob2QsIGNhbGwgaXQgdG8gb2J0YWluIGEgcmVwbGFjZW1lbnQgdmFsdWUuCisKKyAgICAg
ICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYKKyAgICAgICAgICAg
ICAgICB0eXBlb2YgdmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlLnRvSlNPTihrZXkpOworICAgICAgICB9CisKKy8vIElmIHdlIHdlcmUgY2Fs
bGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0bwor
Ly8gb2J0YWluIGEgcmVwbGFjZW1lbnQgdmFsdWUuCisKKyAgICAgICAgaWYgKHR5cGVvZiByZXAg
PT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gcmVwLmNhbGwoaG9sZGVyLCBr
ZXksIHZhbHVlKTsKKyAgICAgICAgfQorCisvLyBXaGF0IGhhcHBlbnMgbmV4dCBkZXBlbmRzIG9u
IHRoZSB2YWx1ZSdzIHR5cGUuCisKKyAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKKyAg
ICAgICAgY2FzZSAnc3RyaW5nJzoKKyAgICAgICAgICAgIHJldHVybiBxdW90ZSh2YWx1ZSk7CisK
KyAgICAgICAgY2FzZSAnbnVtYmVyJzoKKworLy8gSlNPTiBudW1iZXJzIG11c3QgYmUgZmluaXRl
LiBFbmNvZGUgbm9uLWZpbml0ZSBudW1iZXJzIGFzIG51bGwuCisKKyAgICAgICAgICAgIHJldHVy
biBpc0Zpbml0ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJ251bGwnOworCisgICAgICAgIGNh
c2UgJ2Jvb2xlYW4nOgorICAgICAgICBjYXNlICdudWxsJzoKKworLy8gSWYgdGhlIHZhbHVlIGlz
IGEgYm9vbGVhbiBvciBudWxsLCBjb252ZXJ0IGl0IHRvIGEgc3RyaW5nLiBOb3RlOgorLy8gdHlw
ZW9mIG51bGwgZG9lcyBub3QgcHJvZHVjZSAnbnVsbCcuIFRoZSBjYXNlIGlzIGluY2x1ZGVkIGhl
cmUgaW4KKy8vIHRoZSByZW1vdGUgY2hhbmNlIHRoYXQgdGhpcyBnZXRzIGZpeGVkIHNvbWVkYXku
CisKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpOworCisvLyBJZiB0aGUgdHlwZSBp
cyAnb2JqZWN0Jywgd2UgbWlnaHQgYmUgZGVhbGluZyB3aXRoIGFuIG9iamVjdCBvciBhbiBhcnJh
eSBvcgorLy8gbnVsbC4KKworICAgICAgICBjYXNlICdvYmplY3QnOgorCisvLyBEdWUgdG8gYSBz
cGVjaWZpY2F0aW9uIGJsdW5kZXIgaW4gRUNNQVNjcmlwdCwgdHlwZW9mIG51bGwgaXMgJ29iamVj
dCcsCisvLyBzbyB3YXRjaCBvdXQgZm9yIHRoYXQgY2FzZS4KKworICAgICAgICAgICAgaWYgKCF2
YWx1ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7CisgICAgICAgICAgICB9CisK
Ky8vIE1ha2UgYW4gYXJyYXkgdG8gaG9sZCB0aGUgcGFydGlhbCByZXN1bHRzIG9mIHN0cmluZ2lm
eWluZyB0aGlzIG9iamVjdCB2YWx1ZS4KKworICAgICAgICAgICAgZ2FwICs9IGluZGVudDsKKyAg
ICAgICAgICAgIHBhcnRpYWwgPSBbXTsKKworLy8gSXMgdGhlIHZhbHVlIGFuIGFycmF5PworCisg
ICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSkgPT09
ICdbb2JqZWN0IEFycmF5XScpIHsKKworLy8gVGhlIHZhbHVlIGlzIGFuIGFycmF5LiBTdHJpbmdp
ZnkgZXZlcnkgZWxlbWVudC4gVXNlIG51bGwgYXMgYSBwbGFjZWhvbGRlcgorLy8gZm9yIG5vbi1K
U09OIHZhbHVlcy4KKworICAgICAgICAgICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbFtpXSA9IHN0cihpLCB2YWx1ZSkgfHwgJ251bGwnOworICAgICAg
ICAgICAgICAgIH0KKworLy8gSm9pbiBhbGwgb2YgdGhlIGVsZW1lbnRzIHRvZ2V0aGVyLCBzZXBh
cmF0ZWQgd2l0aCBjb21tYXMsIGFuZCB3cmFwIHRoZW0gaW4KKy8vIGJyYWNrZXRzLgorCisgICAg
ICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwID8gJ1tdJyA6CisgICAgICAgICAg
ICAgICAgICAgIGdhcCA/ICdbXG4nICsgZ2FwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJ0aWFsLmpvaW4oJyxcbicgKyBnYXApICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pbmQgKyAnXScgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAnWycg
KyBwYXJ0aWFsLmpvaW4oJywnKSArICddJzsKKyAgICAgICAgICAgICAgICBnYXAgPSBtaW5kOwor
ICAgICAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICAgICAgfQorCisvLyBJZiB0aGUgcmVw
bGFjZXIgaXMgYW4gYXJyYXksIHVzZSBpdCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc3Ry
aW5naWZpZWQuCisKKyAgICAgICAgICAgIGlmIChyZXAgJiYgdHlwZW9mIHJlcCA9PT0gJ29iamVj
dCcpIHsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoOworICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkgeworICAgICAgICAgICAgICAgICAg
ICBrID0gcmVwW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJp
bmcnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gc3RyKGssIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgeworCisvLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3Vn
aCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC4KKworICAgICAgICAgICAgICAgIGZvciAo
ayBpbiB2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3Bl
cnR5LmNhbGwodmFsdWUsIGspKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gc3RyKGss
IHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicp
ICsgdik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKy8vIEpvaW4gYWxsIG9mIHRoZSBt
ZW1iZXIgdGV4dHMgdG9nZXRoZXIsIHNlcGFyYXRlZCB3aXRoIGNvbW1hcywKKy8vIGFuZCB3cmFw
IHRoZW0gaW4gYnJhY2VzLgorCisgICAgICAgICAgICB2ID0gcGFydGlhbC5sZW5ndGggPT09IDAg
PyAne30nIDoKKyAgICAgICAgICAgICAgICBnYXAgPyAne1xuJyArIGdhcCArIHBhcnRpYWwuam9p
bignLFxuJyArIGdhcCkgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbmQgKyAn
fScgOiAneycgKyBwYXJ0aWFsLmpvaW4oJywnKSArICd9JzsKKyAgICAgICAgICAgIGdhcCA9IG1p
bmQ7CisgICAgICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgfQorICAgIH0KKworLy8gSWYgdGhl
IEpTT04gb2JqZWN0IGRvZXMgbm90IHlldCBoYXZlIGEgc3RyaW5naWZ5IG1ldGhvZCwgZ2l2ZSBp
dCBvbmUuCisKKyAgICBpZiAodHlwZW9mIEpTT04uc3RyaW5naWZ5ICE9PSAnZnVuY3Rpb24nKSB7
CisgICAgICAgIEpTT04uc3RyaW5naWZ5ID0gZnVuY3Rpb24gKHZhbHVlLCByZXBsYWNlciwgc3Bh
Y2UpIHsKKworLy8gVGhlIHN0cmluZ2lmeSBtZXRob2QgdGFrZXMgYSB2YWx1ZSBhbmQgYW4gb3B0
aW9uYWwgcmVwbGFjZXIsIGFuZCBhbiBvcHRpb25hbAorLy8gc3BhY2UgcGFyYW1ldGVyLCBhbmQg
cmV0dXJucyBhIEpTT04gdGV4dC4gVGhlIHJlcGxhY2VyIGNhbiBiZSBhIGZ1bmN0aW9uCisvLyB0
aGF0IGNhbiByZXBsYWNlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IHdpbGwg
c2VsZWN0IHRoZSBrZXlzLgorLy8gQSBkZWZhdWx0IHJlcGxhY2VyIG1ldGhvZCBjYW4gYmUgcHJv
dmlkZWQuIFVzZSBvZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGNhbgorLy8gcHJvZHVjZSB0ZXh0IHRo
YXQgaXMgbW9yZSBlYXNpbHkgcmVhZGFibGUuCisKKyAgICAgICAgICAgIHZhciBpOworICAgICAg
ICAgICAgZ2FwID0gJyc7CisgICAgICAgICAgICBpbmRlbnQgPSAnJzsKKworLy8gSWYgdGhlIHNw
YWNlIHBhcmFtZXRlciBpcyBhIG51bWJlciwgbWFrZSBhbiBpbmRlbnQgc3RyaW5nIGNvbnRhaW5p
bmcgdGhhdAorLy8gbWFueSBzcGFjZXMuCisKKyAgICAgICAgICAgIGlmICh0eXBlb2Ygc3BhY2Ug
PT09ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYWNlOyBp
ICs9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZW50ICs9ICcgJzsKKyAgICAgICAgICAg
ICAgICB9CisKKy8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcsIGl0IHdpbGwg
YmUgdXNlZCBhcyB0aGUgaW5kZW50IHN0cmluZy4KKworICAgICAgICAgICAgfSBlbHNlIGlmICh0
eXBlb2Ygc3BhY2UgPT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgaW5kZW50ID0gc3Bh
Y2U7CisgICAgICAgICAgICB9CisKKy8vIElmIHRoZXJlIGlzIGEgcmVwbGFjZXIsIGl0IG11c3Qg
YmUgYSBmdW5jdGlvbiBvciBhbiBhcnJheS4KKy8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Iu
CisKKyAgICAgICAgICAgIHJlcCA9IHJlcGxhY2VyOworICAgICAgICAgICAgaWYgKHJlcGxhY2Vy
ICYmIHR5cGVvZiByZXBsYWNlciAhPT0gJ2Z1bmN0aW9uJyAmJgorICAgICAgICAgICAgICAgICAg
ICAodHlwZW9mIHJlcGxhY2VyICE9PSAnb2JqZWN0JyB8fAorICAgICAgICAgICAgICAgICAgICAg
dHlwZW9mIHJlcGxhY2VyLmxlbmd0aCAhPT0gJ251bWJlcicpKSB7CisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdKU09OLnN0cmluZ2lmeScpOworICAgICAgICAgICAgfQorCisvLyBN
YWtlIGEgZmFrZSByb290IG9iamVjdCBjb250YWluaW5nIG91ciB2YWx1ZSB1bmRlciB0aGUga2V5
IG9mICcnLgorLy8gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc3RyaW5naWZ5aW5nIHRoZSB2YWx1ZS4K
KworICAgICAgICAgICAgcmV0dXJuIHN0cignJywgeycnOiB2YWx1ZX0pOworICAgICAgICB9Owor
ICAgIH0KKworCisvLyBJZiB0aGUgSlNPTiBvYmplY3QgZG9lcyBub3QgeWV0IGhhdmUgYSBwYXJz
ZSBtZXRob2QsIGdpdmUgaXQgb25lLgorCisgICAgaWYgKHR5cGVvZiBKU09OLnBhcnNlICE9PSAn
ZnVuY3Rpb24nKSB7CisgICAgICAgIEpTT04ucGFyc2UgPSBmdW5jdGlvbiAodGV4dCwgcmV2aXZl
cikgeworCisvLyBUaGUgcGFyc2UgbWV0aG9kIHRha2VzIGEgdGV4dCBhbmQgYW4gb3B0aW9uYWwg
cmV2aXZlciBmdW5jdGlvbiwgYW5kIHJldHVybnMKKy8vIGEgSmF2YVNjcmlwdCB2YWx1ZSBpZiB0
aGUgdGV4dCBpcyBhIHZhbGlkIEpTT04gdGV4dC4KKworICAgICAgICAgICAgdmFyIGo7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHdhbGsoaG9sZGVyLCBrZXkpIHsKKworLy8gVGhlIHdhbGsgbWV0
aG9kIGlzIHVzZWQgdG8gcmVjdXJzaXZlbHkgd2FsayB0aGUgcmVzdWx0aW5nIHN0cnVjdHVyZSBz
bworLy8gdGhhdCBtb2RpZmljYXRpb25zIGNhbiBiZSBtYWRlLgorCisgICAgICAgICAgICAgICAg
dmFyIGssIHYsIHZhbHVlID0gaG9sZGVyW2tleV07CisgICAgICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9y
IChrIGluIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093
blByb3BlcnR5LmNhbGwodmFsdWUsIGspKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
diA9IHdhbGsodmFsdWUsIGspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICE9
PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVba10g
PSB2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldml2ZXIuY2Fs
bChob2xkZXIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgfQorCisKKy8vIFBhcnNpbmcgaGFw
cGVucyBpbiBmb3VyIHN0YWdlcy4gSW4gdGhlIGZpcnN0IHN0YWdlLCB3ZSByZXBsYWNlIGNlcnRh
aW4KKy8vIFVuaWNvZGUgY2hhcmFjdGVycyB3aXRoIGVzY2FwZSBzZXF1ZW5jZXMuIEphdmFTY3Jp
cHQgaGFuZGxlcyBtYW55IGNoYXJhY3RlcnMKKy8vIGluY29ycmVjdGx5LCBlaXRoZXIgc2lsZW50
bHkgZGVsZXRpbmcgdGhlbSwgb3IgdHJlYXRpbmcgdGhlbSBhcyBsaW5lIGVuZGluZ3MuCisKKyAg
ICAgICAgICAgIGN4Lmxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICBpZiAoY3gudGVzdCh0ZXh0
KSkgeworICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoY3gsIGZ1bmN0aW9uIChh
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXFx1JyArCisgICAgICAgICAgICAgICAg
ICAgICAgICAoJzAwMDAnICsgYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisvLyBJbiB0aGUgc2Vjb25k
IHN0YWdlLCB3ZSBydW4gdGhlIHRleHQgYWdhaW5zdCByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQg
bG9vaworLy8gZm9yIG5vbi1KU09OIHBhdHRlcm5zLiBXZSBhcmUgZXNwZWNpYWxseSBjb25jZXJu
ZWQgd2l0aCAnKCknIGFuZCAnbmV3JworLy8gYmVjYXVzZSB0aGV5IGNhbiBjYXVzZSBpbnZvY2F0
aW9uLCBhbmQgJz0nIGJlY2F1c2UgaXQgY2FuIGNhdXNlIG11dGF0aW9uLgorLy8gQnV0IGp1c3Qg
dG8gYmUgc2FmZSwgd2Ugd2FudCB0byByZWplY3QgYWxsIHVuZXhwZWN0ZWQgZm9ybXMuCisKKy8v
IFdlIHNwbGl0IHRoZSBzZWNvbmQgc3RhZ2UgaW50byA0IHJlZ2V4cCBvcGVyYXRpb25zIGluIG9y
ZGVyIHRvIHdvcmsgYXJvdW5kCisvLyBjcmlwcGxpbmcgaW5lZmZpY2llbmNpZXMgaW4gSUUncyBh
bmQgU2FmYXJpJ3MgcmVnZXhwIGVuZ2luZXMuIEZpcnN0IHdlCisvLyByZXBsYWNlIHRoZSBKU09O
IGJhY2tzbGFzaCBwYWlycyB3aXRoICdAJyAoYSBub24tSlNPTiBjaGFyYWN0ZXIpLiBTZWNvbmQs
IHdlCisvLyByZXBsYWNlIGFsbCBzaW1wbGUgdmFsdWUgdG9rZW5zIHdpdGggJ10nIGNoYXJhY3Rl
cnMuIFRoaXJkLCB3ZSBkZWxldGUgYWxsCisvLyBvcGVuIGJyYWNrZXRzIHRoYXQgZm9sbG93IGEg
Y29sb24gb3IgY29tbWEgb3IgdGhhdCBiZWdpbiB0aGUgdGV4dC4gRmluYWxseSwKKy8vIHdlIGxv
b2sgdG8gc2VlIHRoYXQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBvbmx5IHdoaXRlc3Bh
Y2Ugb3IgJ10nIG9yCisvLyAnLCcgb3IgJzonIG9yICd7JyBvciAnfScuIElmIHRoYXQgaXMgc28s
IHRoZW4gdGhlIHRleHQgaXMgc2FmZSBmb3IgZXZhbC4KKworICAgICAgICAgICAgaWYgKC9eW1xd
LDp7fVxzXSokLy4KK3Rlc3QodGV4dC5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEt
ZkEtRl17NH0pL2csICdAJykuCityZXBsYWNlKC8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVs
bHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZywgJ10nKS4KK3JlcGxhY2UoLyg/
Ol58OnwsKSg/OlxzKlxbKSsvZywgJycpKSkgeworCisvLyBJbiB0aGUgdGhpcmQgc3RhZ2Ugd2Ug
dXNlIHRoZSBldmFsIGZ1bmN0aW9uIHRvIGNvbXBpbGUgdGhlIHRleHQgaW50byBhCisvLyBKYXZh
U2NyaXB0IHN0cnVjdHVyZS4gVGhlICd7JyBvcGVyYXRvciBpcyBzdWJqZWN0IHRvIGEgc3ludGFj
dGljIGFtYmlndWl0eQorLy8gaW4gSmF2YVNjcmlwdDogaXQgY2FuIGJlZ2luIGEgYmxvY2sgb3Ig
YW4gb2JqZWN0IGxpdGVyYWwuIFdlIHdyYXAgdGhlIHRleHQKKy8vIGluIHBhcmVucyB0byBlbGlt
aW5hdGUgdGhlIGFtYmlndWl0eS4KKworICAgICAgICAgICAgICAgIGogPSBldmFsKCcoJyArIHRl
eHQgKyAnKScpOworCisvLyBJbiB0aGUgb3B0aW9uYWwgZm91cnRoIHN0YWdlLCB3ZSByZWN1cnNp
dmVseSB3YWxrIHRoZSBuZXcgc3RydWN0dXJlLCBwYXNzaW5nCisvLyBlYWNoIG5hbWUvdmFsdWUg
cGFpciB0byBhIHJldml2ZXIgZnVuY3Rpb24gZm9yIHBvc3NpYmxlIHRyYW5zZm9ybWF0aW9uLgor
CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nID8K
KyAgICAgICAgICAgICAgICAgICAgd2Fsayh7Jyc6IGp9LCAnJykgOiBqOworICAgICAgICAgICAg
fQorCisvLyBJZiB0aGUgdGV4dCBpcyBub3QgSlNPTiBwYXJzZWFibGUsIHRoZW4gYSBTeW50YXhF
cnJvciBpcyB0aHJvd24uCisKKyAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignSlNP
Ti5wYXJzZScpOworICAgICAgICB9OworICAgIH0KK30oKSk7CkluZGV4OiBTdW5TcGlkZXIvcmVz
b3VyY2VzL2RyaXZlci1URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1blNwaWRlci9yZXNv
dXJjZXMvZHJpdmVyLVRFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDUyMDY0KQorKysgU3VuU3BpZGVy
L3Jlc291cmNlcy9kcml2ZXItVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogLS0+CiAKIDx0aXRsZT5TdW5TcGlkZXIgSmF2YVNjcmlwdCBCZW5jaG1hcmsgKElu
IFByb2dyZXNzLi4uKTwvdGl0bGU+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3N1
bnNwaWRlci5jc3MiPjwvbGluaz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vc3Vu
c3BpZGVyLmNzcyI+CiA8L2hlYWQ+CiAKIDxib2R5IG9ubG9hZD0ibmV4dCgpIj4KSW5kZXg6IFN1
blNwaWRlci9yZXNvdXJjZXMvcmVzdWx0cy1URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN1
blNwaWRlci9yZXNvdXJjZXMvcmVzdWx0cy1URU1QTEFURS5odG1sCShyZXZpc2lvbiA1MjA2NCkK
KysrIFN1blNwaWRlci9yZXNvdXJjZXMvcmVzdWx0cy1URU1QTEFURS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAtLT4KIAogPHRpdGxlPlN1blNwaWRlciBKYXZhU2NyaXB0
IEJlbmNobWFyayBSZXN1bHRzPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vc3Vuc3BpZGVyLmNzcyI+PC9saW5rPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9zdW5zcGlkZXIuY3NzIj4KIDwvaGVhZD4KIAogPGJvZHk+CkBAIC00NywxMiArNDcsMTIgQEAK
IDxwcmUgaWQ9ImNvbnNvbGUiPgogPC9wcmU+CiAKLQorPHNjcmlwdCBzcmM9Ii4uL2pzb24yLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiB2YXIgc2VsZlVybElucHV0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNlbGZVcmwiKTsKIHNlbGZVcmxJbnB1dC52YWx1ZSA9IGxvY2F0aW9uOwogCi12
YXIgb3V0cHV0ID0gcGl2b3QoZXZhbCgiKCIgKyBkZWNvZGVVUkkobG9jYXRpb24uc2VhcmNoLnN1
YnN0cmluZygxKSkgKyAiKSIpKTsKK3ZhciBvdXRwdXQgPSBwaXZvdChKU09OLnBhcnNlKGRlY29k
ZVVSSShsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpKSkpOwogCiBmdW5jdGlvbiBwaXZvdChp
bnB1dCkgewogICAgIHZhciBvdXRwdXQgPSBbXTsKQEAgLTgzLDcgKzgzLDcgQEAgdmFyIG91dHB1
dDIgPSBvdXRwdXQ7CiBmdW5jdGlvbiBjb21wYXJlKG90aGVyKQogewogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIiI7Ci0gICAgdmFyIG91dHB1dDEg
PSBwaXZvdChldmFsKCIoIiArIGRlY29kZVVSSShvdGhlci5zcGxpdCgiPyIpWzFdKSArICIpIikp
OworICAgIHZhciBvdXRwdXQxID0gcGl2b3QoSlNPTi5wYXJzZShkZWNvZGVVUkkob3RoZXIuc3Bs
aXQoIj8iKVsxXSkpKTsKICAgICBzdW5zcGlkZXJDb21wYXJlUmVzdWx0cyhvdXRwdXQxLCBvdXRw
dXQyKTsKIH0KIDwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="26662"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>