<?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>143388</bug_id>
          
          <creation_ts>2015-04-03 14:54:12 -0700</creation_ts>
          <short_desc>is* API methods should be @properties</short_desc>
          <delta_ts>2015-04-07 10:46:00 -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>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082687</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-03 14:54:12 -0700</bug_when>
    <thetext>is* API methods should be @properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082689</commentid>
    <comment_count>1</comment_count>
      <attachid>250100</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-03 14:55:34 -0700</bug_when>
    <thetext>Created attachment 250100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082694</commentid>
    <comment_count>2</comment_count>
      <attachid>250100</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-03 15:12:23 -0700</bug_when>
    <thetext>Comment on attachment 250100
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082696</commentid>
    <comment_count>3</comment_count>
      <attachid>250100</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-04-03 15:15:27 -0700</bug_when>
    <thetext>Comment on attachment 250100
Patch

What about code that use the old idioms?  Isn&apos;t there a binary compatibility issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082697</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-03 15:18:37 -0700</bug_when>
    <thetext>&gt; What about code that use the old idioms?  Isn&apos;t there a binary compatibility
&gt; issue?

The Objective-C language generates method implementations for @property&apos;s, so old code that uses method invocation syntax still works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082698</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-03 15:18:54 -0700</bug_when>
    <thetext>Committed r182336: &lt;http://trac.webkit.org/changeset/182336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082796</commentid>
    <comment_count>6</comment_count>
      <attachid>250100</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-04 10:55:59 -0700</bug_when>
    <thetext>Comment on attachment 250100
Patch

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

&gt; Source/JavaScriptCore/API/JSValue.h:383
&gt; -- (BOOL)isUndefined;
&gt; +@property (readonly) BOOL isUndefined;

I think ObjC convention would be to not include &quot;is&quot; in the property name, but specify it in the getter, like:
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW1

    @property (readonly, getter=isUndefined) undefined;

That said, I&apos;m not sure if these are exceptional cases because of their names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083108</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-06 11:05:30 -0700</bug_when>
    <thetext>&gt; I think ObjC convention would be to not include &quot;is&quot; in the property name,
&gt; but specify it in the getter, like:
&gt; https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/
&gt; ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//
&gt; apple_ref/doc/uid/TP40011210-CH5-SW1

Yes, that is often true of properties.

&gt;     @property (readonly, getter=isUndefined) undefined;
&gt; 
&gt; That said, I&apos;m not sure if these are exceptional cases because of their
&gt; names.

The consensus among some experts was that these properties were special because a property like &quot;object.array&quot; (as opposed to &quot;object.isArray&quot;) might be expected to produce or consume an array, which is not what these properties do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083140</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-06 12:17:33 -0700</bug_when>
    <thetext>&gt; &gt;     @property (readonly, getter=isUndefined) undefined;
&gt; &gt; 
&gt; &gt; That said, I&apos;m not sure if these are exceptional cases because of their
&gt; &gt; names.
&gt; 
&gt; The consensus among some experts was that these properties were special
&gt; because a property like &quot;object.array&quot; (as opposed to &quot;object.isArray&quot;)
&gt; might be expected to produce or consume an array, which is not what these
&gt; properties do.

The &quot;object.array&quot; would not have existed, it still produces &quot;object.isArray&quot;. That said, since it is readonly, I think what you have reads better anyways. In the end it all amounts to the same thing =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083156</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-06 13:36:35 -0700</bug_when>
    <thetext>&gt; The &quot;object.array&quot; would not have existed, it still produces
&gt; &quot;object.isArray&quot;.

Hmmm... not even in Swift?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083342</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-07 10:46:00 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; The &quot;object.array&quot; would not have existed, it still produces
&gt; &gt; &quot;object.isArray&quot;.
&gt; 
&gt; Hmmm... not even in Swift?

Good point, I didn&apos;t think about Swift! I assumed it would respect &quot;getter=&quot; but after looking at some examples online, it looks like it doesn&apos;t.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250100</attachid>
            <date>2015-04-03 14:55:34 -0700</date>
            <delta_ts>2015-04-03 15:12:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143388-20150403145449.patch</filename>
            <type>text/plain</type>
            <size>14152</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE1LTA0LTAzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgaXMqIEFQSSBtZXRob2RzIHNob3VsZCBiZSBAcHJvcGVydGllcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBw
cmVmZXJyZWQgaWRpb20gaW4gV2ViS2l0LCBDQSwgQXBwS2l0LCBhbmQKKyAgICAgICAgRm91bmRh
dGlvbi4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLmg6IEJlIEBwcm9wZXJ0aWVzLgorCisgICAg
ICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSSk6
IFVzZSB0aGUgQHByb3BlcnRpZXMuCisKIDIwMTUtMDQtMDMgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgSlNDIE9wdGlvbnMgcmVmYWN0b3JpbmcgYW5kIGVu
aGFuY2VtZW50cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5oCShyZXZpc2lv
biAxODIzMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgwLDE5ICszODAsMTkgQEAgT0JKQ19WSVNJQkxFCiBAbWV0aG9kCiBAYWJz
dHJhY3QgQ2hlY2sgaWYgYSBKU1ZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZSBKYXZhU2NyaXB0IHZh
bHVlIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4uCiAqLyAKLS0gKEJPT0wpaXNVbmRlZmluZWQ7CitA
cHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzVW5kZWZpbmVkOwogCiAvKiEKIEBtZXRob2QKIEBh
YnN0cmFjdCBDaGVjayBpZiBhIEpTVmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlIEphdmFTY3JpcHQg
dmFsdWUgPGNvZGU+bnVsbDwvY29kZT4uCiAqLwotLSAoQk9PTClpc051bGw7CitAcHJvcGVydHkg
KHJlYWRvbmx5KSBCT09MIGlzTnVsbDsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sg
aWYgYSBKU1ZhbHVlIGlzIGEgYm9vbGVhbi4KICovCi0tIChCT09MKWlzQm9vbGVhbjsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNCb29sZWFuOwogCiAvKiEKIEBtZXRob2QKQEAgLTQwMSwz
MSArNDAxLDMxIEBAIE9CSkNfVklTSUJMRQogIFNlbWFudGljYWxseSBhbGwgbnVtYmVycyBiZWhh
dmUgbGlrZSBkb3VibGVzIGV4Y2VwdCBpbiBzcGVjaWFsIGNhc2VzIGxpa2UgYml0CiAgb3BlcmF0
aW9ucy4gCiAqLwotLSAoQk9PTClpc051bWJlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
aXNOdW1iZXI7CiAKIC8qIQogQG1ldGhvZAogQGFic3RyYWN0IENoZWNrIGlmIGEgSlNWYWx1ZSBp
cyBhIHN0cmluZy4KICovCi0tIChCT09MKWlzU3RyaW5nOworQHByb3BlcnR5IChyZWFkb25seSkg
Qk9PTCBpc1N0cmluZzsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBKU1Zh
bHVlIGlzIGFuIG9iamVjdC4KICovCi0tIChCT09MKWlzT2JqZWN0OworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc09iamVjdDsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYg
YSBKU1ZhbHVlIGlzIGFuIGFycmF5LgogKi8gCi0tIChCT09MKWlzQXJyYXkgTlNfQVZBSUxBQkxF
KDEwXzExLCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0FycmF5IE5TX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKIAogLyohCiBAbWV0aG9kCiBAYWJzdHJhY3QgQ2hlY2sgaWYgYSBK
U1ZhbHVlIGlzIGEgZGF0ZS4KICovIAotLSAoQk9PTClpc0RhdGUgTlNfQVZBSUxBQkxFKDEwXzEx
LCA5XzApOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0RhdGUgTlNfQVZBSUxBQkxFKDEw
XzExLCA5XzApOwogCiAvKiEKIEBtZXRob2QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE4MjMyMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk2LDcgKzQ5
Niw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgIEBhdXRvcmVsZWFzZXBvb2wgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiMiArIDIi
XTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCIyICsgMiIsIFtyZXN1bHQgaXNOdW1iZXJdICYmIFty
ZXN1bHQgdG9JbnQzMl0gPT0gNCk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiMiArIDIiLCByZXN1
bHQuaXNOdW1iZXIgJiYgW3Jlc3VsdCB0b0ludDMyXSA9PSA0KTsKICAgICB9CiAKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKQEAgLTUwOSwyMCArNTA5LDIwIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNB
UEkoKQogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF07CiAgICAgICAgIGNvbnRleHRbQCJtZXNzYWdlIl0gPSBAIkhlbGxvIjsKICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJtZXNzYWdlICsgJywgV29y
bGQhJyJdOwotICAgICAgICBjaGVja1Jlc3VsdChAIkhlbGxvLCBXb3JsZCEiLCBbcmVzdWx0IGlz
U3RyaW5nXSAmJiBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIkhlbGxvLCBXb3JsZCEiXSk7Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiSGVsbG8sIFdvcmxkISIsIHJlc3VsdC5pc1N0cmluZyAmJiBb
cmVzdWx0IGlzRXF1YWxUb09iamVjdDpAIkhlbGxvLCBXb3JsZCEiXSk7CiAgICAgfQogCiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250
ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJQcm9taXNlIGlzIG5vdCBl
eHBvc2VkIiwgW2NvbnRleHRbQCJQcm9taXNlIl0gaXNVbmRlZmluZWRdKTsKICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0eXBlb2YgUHJvbWlzZSJd
OwotICAgICAgICBjaGVja1Jlc3VsdChAInR5cGVvZiBQcm9taXNlIGlzICd1bmRlZmluZWQnIiwg
W3Jlc3VsdCBpc1N0cmluZ10gJiYgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJ1bmRlZmluZWQi
XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidHlwZW9mIFByb21pc2UgaXMgJ3VuZGVmaW5lZCci
LCByZXN1bHQuaXNTdHJpbmcgJiYgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJ1bmRlZmluZWQi
XSk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgSlNWYWx1ZSAqcmVz
dWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIoeyB4OjQyIH0pIl07Ci0gICAgICAgIGNo
ZWNrUmVzdWx0KEAiKHsgeDo0MiB9KSIsIFtyZXN1bHQgaXNPYmplY3RdICYmIFtyZXN1bHRbQCJ4
Il0gaXNFcXVhbFRvT2JqZWN0OkA0Ml0pOworICAgICAgICBjaGVja1Jlc3VsdChAIih7IHg6NDIg
fSkiLCByZXN1bHQuaXNPYmplY3QgJiYgW3Jlc3VsdFtAIngiXSBpc0VxdWFsVG9PYmplY3Q6QDQy
XSk7CiAgICAgICAgIGlkIG9iaiA9IFtyZXN1bHQgdG9PYmplY3RdOwogICAgICAgICBjaGVja1Jl
c3VsdChAIkNoZWNrIGRpY3Rpb25hcnkgbGl0ZXJhbCIsIFtvYmogaXNLaW5kT2ZDbGFzczpbTlNE
aWN0aW9uYXJ5IGNsYXNzXV0pOwogICAgICAgICBpZCBudW0gPSAoTlNEaWN0aW9uYXJ5ICopb2Jq
W0AieCJdOwpAQCAtNTMyLDEzICs1MzIsMTMgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJbIF0iXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJbIF0iLCBbcmVz
dWx0IGlzQXJyYXldKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJbIF0iLCByZXN1bHQuaXNBcnJh
eSk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgSlNWYWx1ZSAqcmVz
dWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJuZXcgRGF0ZSJdOwotICAgICAgICBjaGVj
a1Jlc3VsdChAIm5ldyBEYXRlIiwgW3Jlc3VsdCBpc0RhdGVdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJuZXcgRGF0ZSIsIHJlc3VsdC5pc0RhdGUpOwogICAgIH0KIAogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewpAQCAtNTYyLDExICs1NjIsMTEgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAg
ICAgICAgICAgICBKU1ZhbHVlICpteU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVl
Rm9yS2V5OkAibXlfbnVtYmVyIl07CiAgICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5TnVs
bCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07
CiAgICAgICAgICAgICBKU1ZhbHVlICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRlUHJv
cGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJpc19oYW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYmIFtp
c0hhbSB0b0Jvb2xdKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBoZWxs
byEiLCBbbWVzc2FnZSBpc1N0cmluZ10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6W21l
c3NhZ2UgdG9TdHJpbmddXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBp
cyA0MiIsIFtteU51bWJlciBpc051bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQyKTsK
LSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBbZGVm
aW5pdGVseU51bGwgaXNOdWxsXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5kZWZp
bmVkXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgaXNIYW0u
aXNCb29sZWFuICYmIFtpc0hhbSB0b0Jvb2xdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bWVzc2FnZSBpcyBoZWxsbyEiLCBtZXNzYWdlLmlzU3RyaW5nICYmIFtAImhlbGxvISIgaXNFcXVh
bFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJteV9udW1iZXIgaXMgNDIiLCBteU51bWJlci5pc051bWJlciAmJiBbbXlOdW1iZXIgdG9JbnQz
Ml0gPT0gNDIpOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMg
bnVsbCIsIGRlZmluaXRlbHlOdWxsLmlzTnVsbCk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
Im5vdF9zdXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBub3RTdXJlSWZVbmRlZmluZWQu
aXNVbmRlZmluZWQpOwogICAgICAgICB9CiAKICAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0g
aXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0pOwpA
QCAtNjUyLDcgKzY1Miw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAgICAgICAgIF9fYmxv
Y2sgYm9vbCBlbXB0eUV4Y2VwdGlvblNvdXJjZVVSTCA9IGZhbHNlOwogICAgICAgICBjb250ZXh0
LmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29udGV4dCAqLCBKU1ZhbHVlICpleGNlcHRpb24pIHsK
LSAgICAgICAgICAgIGVtcHR5RXhjZXB0aW9uU291cmNlVVJMID0gW2V4Y2VwdGlvbltAInNvdXJj
ZVVSTCJdIGlzVW5kZWZpbmVkXTsKKyAgICAgICAgICAgIGVtcHR5RXhjZXB0aW9uU291cmNlVVJM
ID0gZXhjZXB0aW9uW0Aic291cmNlVVJMIl0uaXNVbmRlZmluZWQ7CiAgICAgICAgIH07CiAgICAg
ICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIUAjJCVeJiooKSBUSElTIElTIE5PVCBWQUxJ
RCBKQVZBU0NSSVBUIFNZTlRBWCAhQCMkJV4mKigpIl07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAi
ZXZhbHV0ZVNjcmlwdDogZXhjZXB0aW9uIGhhcyBubyBzb3VyY2VVUkwiLCBlbXB0eUV4Y2VwdGlv
blNvdXJjZVVSTCk7CkBAIC03MTMsNyArNzEzLDcgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgXAogICAgICAgICAgICAgfSkiXTsKICAg
ICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW211bEFkZEZ1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRz
OkBbIEBbIEAyLCBANCwgQDggXSwgQHsgQCJ4IjpAMC41LCBAInkiOkA0MiB9IF1dOwotICAgICAg
ICBjaGVja1Jlc3VsdChAIm11bEFkZEZ1bmN0aW9uIiwgW3Jlc3VsdCBpc09iamVjdF0gJiYgW1ty
ZXN1bHQgdG9TdHJpbmddIGlzRXF1YWw6QCI0Myw0NCw0NiJdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJtdWxBZGRGdW5jdGlvbiIsIHJlc3VsdC5pc09iamVjdCAmJiBbW3Jlc3VsdCB0b1N0cmlu
Z10gaXNFcXVhbDpAIjQzLDQ0LDQ2Il0pOwogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewpAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBj
aGVja1Jlc3VsdChAImFycmF5Lmxlbmd0aCBhZnRlciBwdXQgdG8gbWF4TGVuZ3RoICsgMSIsIFtb
YXJyYXlbQCJsZW5ndGgiXSB0b051bWJlcl0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IG1heExl
bmd0aCk7CiAKICAgICAgICAgaWYgKHNpemVvZihOU1VJbnRlZ2VyKSA9PSA4KQotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJ2YWx1ZUF0SW5kZXg6MCBpcyB1bmRlZmluZWQiLCBbW2FycmF5IHZh
bHVlQXRJbmRleDowXSBpc1VuZGVmaW5lZF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ2
YWx1ZUF0SW5kZXg6MCBpcyB1bmRlZmluZWQiLCBbYXJyYXkgdmFsdWVBdEluZGV4OjBdLmlzVW5k
ZWZpbmVkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ2YWx1ZUF0
SW5kZXg6MCIsIFtbYXJyYXkgdmFsdWVBdEluZGV4OjBdIHRvSW50MzJdID09IDI0KTsKICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJ2YWx1ZUF0SW5kZXg6bG93SW5kZXgiLCBbW2FycmF5IHZhbHVlQXRJ
bmRleDpsb3dJbmRleF0gdG9JbnQzMl0gPT0gNDIpOwpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQg
dGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdEEiXSA9IHRl
c3RPYmplY3Q7CiAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0QiJdID0gdGVzdE9iamVjdDsK
ICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0
T2JqZWN0QSA9PSB0ZXN0T2JqZWN0QiJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmpl
Y3RBID09IHRlc3RPYmplY3RCIiwgW3Jlc3VsdCBpc0Jvb2xlYW5dICYmIFtyZXN1bHQgdG9Cb29s
XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVjdEEgPT0gdGVzdE9iamVjdEIiLCBy
ZXN1bHQuaXNCb29sZWFuICYmIFtyZXN1bHQgdG9Cb29sXSk7CiAgICAgfQogCiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgp
CiAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwogICAgICAgICBj
b250ZXh0W0AibXVsIl0gPSBeKGludCB4LCBpbnQgeSl7IHJldHVybiB4ICogeTsgfTsKICAgICAg
ICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJtdWwodGVzdE9i
amVjdC5zaXgsIDcpIl07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibXVsKHRlc3RPYmplY3Quc2l4
LCA3KSIsIFtyZXN1bHQgaXNOdW1iZXJdICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0gNDIpOworICAg
ICAgICBjaGVja1Jlc3VsdChAIm11bCh0ZXN0T2JqZWN0LnNpeCwgNykiLCByZXN1bHQuaXNOdW1i
ZXIgJiYgW3Jlc3VsdCB0b0ludDMyXSA9PSA0Mik7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAg
ICAgIFRlc3RPYmplY3QqIHRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKICAg
ICAgICAgY29udGV4dFtAInRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7CiAgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdE9iamVjdC5nZXRTdHJp
bmcoKSJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmplY3QuZ2V0U3RyaW5nKCkiLCBb
cmVzdWx0IGlzU3RyaW5nXSAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQyKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJ0ZXN0T2JqZWN0LmdldFN0cmluZygpIiwgcmVzdWx0LmlzU3RyaW5nICYmIFty
ZXN1bHQgdG9JbnQzMl0gPT0gNDIpOwogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewpA
QCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBUZXN0
T2JqZWN0KiB0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CiAgICAgICAgIGNv
bnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwogICAgICAgICBKU1ZhbHVlICpyZXN1
bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RPYmplY3QuZ2V0U3RyaW5nLmNhbGwo
dGVzdE9iamVjdCkiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJ0ZXN0T2JqZWN0LmdldFN0cmlu
Zy5jYWxsKHRlc3RPYmplY3QpIiwgW3Jlc3VsdCBpc1N0cmluZ10gJiYgW3Jlc3VsdCB0b0ludDMy
XSA9PSA0Mik7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVjdC5nZXRTdHJpbmcuY2Fs
bCh0ZXN0T2JqZWN0KSIsIHJlc3VsdC5pc1N0cmluZyAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQy
KTsKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTk0Niw5ICs5NDYsOSBAQCB2
b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgVGVzdE9iamVjdCogdGVzdE9iamVjdCA9
IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJd
ID0gdGVzdE9iamVjdDsKICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJ2YXIgcmVzdWx0ID0gMDsgdGVzdE9iamVjdC5jYWxsYmFjayhmdW5jdGlvbih4
KXsgcmVzdWx0ID0geDsgfSk7IHJlc3VsdCJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInRlc3RP
YmplY3QuY2FsbGJhY2siLCBbcmVzdWx0IGlzTnVtYmVyXSAmJiBbcmVzdWx0IHRvSW50MzJdID09
IDQyKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0ZXN0T2JqZWN0LmNhbGxiYWNrIiwgcmVzdWx0
LmlzTnVtYmVyICYmIFtyZXN1bHQgdG9JbnQzMl0gPT0gNDIpOwogICAgICAgICByZXN1bHQgPSBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RPYmplY3QuYm9ndXNDYWxsYmFjayJdOwotICAg
ICAgICBjaGVja1Jlc3VsdChAInRlc3RPYmplY3QuYm9ndXNDYWxsYmFjayA9PSB1bmRlZmluZWQi
LCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidGVzdE9iamVj
dC5ib2d1c0NhbGxiYWNrID09IHVuZGVmaW5lZCIsIHJlc3VsdC5pc1VuZGVmaW5lZCk7CiAgICAg
fQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCB0ZXN0
T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgIFRlc3RPYmplY3QgKnRlc3RPYmplY3QgPSBbVGVzdE9i
amVjdCB0ZXN0T2JqZWN0XTsKICAgICAgICAgY29udGV4dFtAInRlc3RPYmplY3QiXSA9IHRlc3RP
YmplY3Q7CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdE9iamVjdC5jYWxsYmFjayki
XTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmciLCAh
Y29udGV4dC5leGNlcHRpb24gJiYgIVtyZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmciLCAhY29udGV4dC5leGNlcHRp
b24gJiYgIXJlc3VsdC5pc1VuZGVmaW5lZCk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogCiAg
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKLSAgICAgICAgICAg
IGNoZWNrUmVzdWx0KEAib25jbGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQg
aXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkpOworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3VuZCBhZnRlciBHQyIsICEocmVzdWx0LmlzTnVsbCB8fCBy
ZXN1bHQuaXNVbmRlZmluZWQpKTsKICAgICAgICAgfQogCiAKICAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CiAgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAInRlc3RYWVoud2Vha09uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
d2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVz
dWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNsaWNr
IG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCByZXN1bHQuaXNOdWxsIHx8IHJlc3VsdC5pc1VuZGVmaW5l
ZCk7CiAgICAgICAgIH0KIAogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTEwNzcsNyAr
MTA3Nyw3IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICAgICAgY29udGV4dFtA
InRlc3RPYmplY3QiXSA9IHRlc3RPYmplY3Q7CiAgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWsgdmFsdWUgPT0gbmlsIiwgIVt3ZWFrVmFsdWUg
dmFsdWVdKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAicm9vdCBpcyBzdGlsbCBhbGl2ZSIs
ICFbY29udGV4dFtAInRlc3RPYmplY3QiXSBpc1VuZGVmaW5lZF0pOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJyb290IGlzIHN0aWxsIGFsaXZlIiwgIWNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0u
aXNVbmRlZmluZWQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTA3LDcgKzExMDcsNyBAQCB2
b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xs
ZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogCiAgICAgICAg
IEpTVmFsdWUgKm15Q3VzdG9tUHJvcGVydHkgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImdl
dExhc3ROb2RlSW5DaGFpbihyb290KS5teUN1c3RvbVByb3BlcnR5Il07Ci0gICAgICAgIGNoZWNr
UmVzdWx0KEAiTXkgY3VzdG9tIHByb3BlcnR5ID09IDQyIiwgW215Q3VzdG9tUHJvcGVydHkgaXNO
dW1iZXJdICYmIFtteUN1c3RvbVByb3BlcnR5IHRvSW50MzJdID09IDQyKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJNeSBjdXN0b20gcHJvcGVydHkgPT0gNDIiLCBteUN1c3RvbVByb3BlcnR5Lmlz
TnVtYmVyICYmIFtteUN1c3RvbVByb3BlcnR5IHRvSW50MzJdID09IDQyKTsKICAgICB9CiAKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTExMzksNyArMTEzOSw3IEBAIHZvaWQgdGVzdE9iamVj
dGl2ZUNBUEkoKQogICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAKICAgICAgICAgSlNWYWx1ZSAqbXlD
dXN0b21Qcm9wZXJ0eSA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZ2V0TGFzdE5vZGVJbkNo
YWluKHJvb3QpLm15Q3VzdG9tUHJvcGVydHkiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJkdXBs
aWNhdGUgY2FsbHMgdG8gYWRkTWFuYWdlZFJlZmVyZW5jZSBkb24ndCBjYXVzZSB0aGluZ3MgdG8g
ZGllIiwgW215Q3VzdG9tUHJvcGVydHkgaXNOdW1iZXJdICYmIFtteUN1c3RvbVByb3BlcnR5IHRv
SW50MzJdID09IDQyKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJkdXBsaWNhdGUgY2FsbHMgdG8g
YWRkTWFuYWdlZFJlZmVyZW5jZSBkb24ndCBjYXVzZSB0aGluZ3MgdG8gZGllIiwgbXlDdXN0b21Q
cm9wZXJ0eS5pc051bWJlciAmJiBbbXlDdXN0b21Qcm9wZXJ0eSB0b0ludDMyXSA9PSA0Mik7CiAg
ICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lk
IHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgICAgIE5TTG9nKEAiSSdtIGludGVudGlvbmFs
bHkgbm90IHJldHVybmluZyBhbnl0aGluZy4iKTsKICAgICAgICAgfTsKICAgICAgICAgSlNWYWx1
ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJuZXcgTXlDbGFzcygpIl07Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAicmVzdWx0ID09PSB1bmRlZmluZWQiLCBbcmVzdWx0IGlzVW5k
ZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAicmVzdWx0ID09PSB1bmRlZmluZWQiLCBy
ZXN1bHQuaXNVbmRlZmluZWQpOwogICAgICAgICBjaGVja1Jlc3VsdChAImV4Y2VwdGlvbi5tZXNz
YWdlIGlzIGNvcnJlY3QnIiwgY29udGV4dC5leGNlcHRpb24gCiAgICAgICAgICAgICAmJiBbQCJP
YmplY3RpdmUtQyBibG9ja3MgY2FsbGVkIGFzIGNvbnN0cnVjdG9ycyBtdXN0IHJldHVybiBhbiBv
YmplY3QuIiBpc0VxdWFsVG9TdHJpbmc6W2NvbnRleHQuZXhjZXB0aW9uW0AibWVzc2FnZSJdIHRv
U3RyaW5nXV0pOwogICAgIH0KQEAgLTEzNTAsNyArMTM1MCw3IEBAIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUEkoKQogICAgICAgICAgICAgcmV0dXJuIFtbVW5leHBvcnRlZE9iamVjdCBhbGxvY10gaW5p
dF07CiAgICAgICAgIH07CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiKG1ha2VPYmplY3QoKSBpbnN0YW5jZW9mIFVuZXhwb3J0ZWRPYmplY3QpIl07
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibWFrZU9iamVjdCgpIGluc3RhbmNlb2YgVW5leHBvcnRl
ZE9iamVjdCIsIFtyZXN1bHQgaXNCb29sZWFuXSAmJiBbcmVzdWx0IHRvQm9vbF0pOworICAgICAg
ICBjaGVja1Jlc3VsdChAIm1ha2VPYmplY3QoKSBpbnN0YW5jZW9mIFVuZXhwb3J0ZWRPYmplY3Qi
LCByZXN1bHQuaXNCb29sZWFuICYmIFtyZXN1bHQgdG9Cb29sXSk7CiAgICAgfQogCiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Cg==
</data>
<flag name="review"
          id="274927"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>