<?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>16498</bug_id>
          
          <creation_ts>2007-12-17 20:53:10 -0800</creation_ts>
          <short_desc>&apos;&apos;.constructor.toString() gives [function]</short_desc>
          <delta_ts>2008-01-27 00:57:54 -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>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://crschmidt.net/projects/webkit/tostring.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Schmidt">crschmidt</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64605</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Schmidt">crschmidt</who>
    <bug_when>2007-12-17 20:53:10 -0800</bug_when>
    <thetext>&apos;&apos;.constructor.toString() gives back &quot;[function]&quot; in Safari. In FF and Opera (and I believe IE) this returns:

&gt;&gt;&gt; &apos;&apos;.constructor.toString()
function String() { [native code] }

or something similar.

(Test.AnotherWay uses this as a way to determine what type of object something is for some reason I&apos;m not sure I understand, which is how I bumped into it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64622</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-18 05:49:57 -0800</bug_when>
    <thetext>Confirmed difference to Firefox and Opera with a local debug build of WebKit r28774 with Safari 3.0.4 (523.12) on Mac OS X 10.4.11 (8S165).

Is the format of the returned string for native functions covered by any spec?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65925</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-01 12:32:30 -0800</bug_when>
    <thetext>If this is still an issue, it&apos;s easy enough to fix.  We just need a good test case (w/o an alert, DRT compatible).  Ideally one which uses the standard fast/js/ style of just being a .js file and using shouldBe, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68302</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 08:48:22 -0800</bug_when>
    <thetext>functionProtoFuncToString already has a case that dumps in this format, with &quot;native code&quot; in the string. We just need to trigger it at the right time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68306</commentid>
    <comment_count>4</comment_count>
      <attachid>18709</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 10:02:30 -0800</bug_when>
    <thetext>Created attachment 18709
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68348</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-27 00:57:54 -0800</bug_when>
    <thetext>Committed revision 29817.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18709</attachid>
            <date>2008-01-26 10:02:30 -0800</date>
            <delta_ts>2008-01-27 00:24:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FunctionNamesPatch.txt</filename>
            <type>text/plain</type>
            <size>24315</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5ODA3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMDgtMDEtMjYgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDk4CisgICAgICAgICAgJycuY29uc3RydWN0b3IudG9TdHJpbmcoKSBnaXZlcyBbZnVu
Y3Rpb25dCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9mdW5jdGlvbi1uYW1lcy5odG1sCisKKyAg
ICAgICAgKiBranMvYXJyYXlfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6QXJyYXlPYmplY3RJ
bXA6OkFycmF5T2JqZWN0SW1wKTogVXNlIHRoZSBjbGFzcyBuYW1lIGFzIHRoZSBjb25zdHJ1Y3Rv
cidzIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICoga2pzL2Jvb2xfb2JqZWN0LmNwcDoKKyAgICAg
ICAgKEtKUzo6Qm9vbGVhbk9iamVjdEltcDo6Qm9vbGVhbk9iamVjdEltcCk6IERpdHRvLgorICAg
ICAgICAqIGtqcy9kYXRlX29iamVjdC5jcHA6CisgICAgICAgIChLSlM6OkRhdGVPYmplY3RJbXA6
OkRhdGVPYmplY3RJbXApOiBEaXR0by4KKyAgICAgICAgKiBranMvZXJyb3Jfb2JqZWN0LmNwcDoK
KyAgICAgICAgKEtKUzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKTogTWFrZSB0aGUg
ZXJyb3Igb2JqZWN0IGJlIGFuIEVycm9yLgorICAgICAgICAoS0pTOjpFcnJvck9iamVjdEltcDo6
RXJyb3JPYmplY3RJbXApOiBVc2UgdGhlIGNsYXNzIG5hbWUgYXMgdGhlIGNvbnN0cnVjdG9yJ3Mg
ZnVuY3Rpb24gbmFtZS4KKyAgICAgICAgKEtKUzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2
ZUVycm9yUHJvdG90eXBlKTogVGFrZSBjb25zdCBVU3RyaW5nJi4KKyAgICAgICAgKEtKUzo6TmF0
aXZlRXJyb3JJbXA6Ok5hdGl2ZUVycm9ySW1wKTogVXNlIHRoZSBwcm90b3R5cGUncyBuYW1lIGFz
IHRoZSBjb25zdHJ1Y3RvcidzIGZ1bmN0aW9uCisgICAgICAgIG5hbWUuCisgICAgICAgICoga2pz
L2Vycm9yX29iamVjdC5oOiBDaGFuZ2UgRXJyb3JQcm90b3R5cGUgdG8gaW5oZXJpdCBmcm9tIEVy
cm9ySW5zdGFuY2UuIENoYW5nZSB0aGUKKyAgICAgICAgTmF0aXZlRXJyb3JJbXAgY29uc3RydWN0
b3IgdG8gdGFrZSBhIE5hdGl2ZUVycm9yUHJvdG90eXBlIHBvaW50ZXIgZm9yIGl0cyBwcm90b3R5
cGUuCisgICAgICAgICoga2pzL2Z1bmN0aW9uLmg6IFJlbW92ZWQgdW5uZWVkZWQgY29uc3RydWN0
b3IgZm9yIGludGVybmFsIGZ1bmN0aW9ucyB3aXRob3V0IG5hbWVzLgorICAgICAgICBXZSB3YW50
IHRvIGF2b2lkIHRob3NlIQorICAgICAgICAqIGtqcy9mdW5jdGlvbl9vYmplY3QuY3BwOgorICAg
ICAgICAoS0pTOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTogUmVtb3ZlZCBjb2RlIHRoYXQg
d3JpdGVzIG91dCBqdXN0IFtmdW5jdGlvbl0gZm9yIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGhh
dmUgbm8gbmFtZXMuIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvIHRoYXQuCisgICAgICAgIChLSlM6
OkZ1bmN0aW9uT2JqZWN0SW1wOjpGdW5jdGlvbk9iamVjdEltcCk6IFVzZSB0aGUgY2xhc3MgbmFt
ZSBhcyB0aGUgY29uc3RydWN0b3IncworICAgICAgICBmdW5jdGlvbiBuYW1lLgorICAgICAgICAq
IGtqcy9pbnRlcm5hbC5jcHA6IFJlbW92ZWQgdGhlIHVudXNlZCBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKiBranMvbnVtYmVyX29iamVjdC5jcHA6CisgICAgICAgIChLSlM6OmZyYWN0aW9uYWxQYXJ0
VG9TdHJpbmcpOiBNYXJrZWQgc3RhdGljIGZvciBpbnRlcm5hbCBsaW5rYWdlLgorICAgICAgICAo
S0pTOjpleHBvbmVudGlhbFBhcnRUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAoS0pTOjpudW1i
ZXJQcm90b0Z1bmNUb1ByZWNpc2lvbik6IFJlbW92ZWQgYW4gdW5uZWVkZWQgZWxzZS4KKyAgICAg
ICAgKEtKUzo6TnVtYmVyT2JqZWN0SW1wOjpOdW1iZXJPYmplY3RJbXApOiBVc2UgdGhlIGNsYXNz
IG5hbWUgYXMgdGhlIGNvbnN0cnVjdG9yJ3MKKyAgICAgICAgZnVuY3Rpb24gbmFtZS4KKyAgICAg
ICAgKEtKUzo6TnVtYmVyT2JqZWN0SW1wOjpnZXRWYWx1ZVByb3BlcnR5KTogVHdlYWtlZCBmb3Jt
YXR0aW5nLgorICAgICAgICAqIGtqcy9vYmplY3Rfb2JqZWN0LmNwcDoKKyAgICAgICAgKEtKUzo6
T2JqZWN0T2JqZWN0SW1wOjpPYmplY3RPYmplY3RJbXApOiBVc2UgIk9iamVjdCIgZm9yIHRoZSBm
dW5jdGlvbiBuYW1lLgorICAgICAgICAqIGtqcy9yZWdleHBfb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6UmVnRXhwT2JqZWN0SW1wOjpSZWdFeHBPYmplY3RJbXApOiBVc2UgIlJlZ0V4cCIgZm9y
IHRoZSBmdW5jdGlvbiBuYW1lLgorICAgICAgICAqIGtqcy9zdHJpbmdfb2JqZWN0LmNwcDoKKyAg
ICAgICAgKEtKUzo6U3RyaW5nT2JqZWN0SW1wOjpTdHJpbmdPYmplY3RJbXApOiBVc2UgdGhlIGNs
YXNzIG5hbWUgYXMgdGhlIGNvbnN0cnVjdG9yJ3MKKyAgICAgICAgZnVuY3Rpb24gbmFtZS4KKwog
MjAwOC0wMS0yNiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAJ
KHJldmlzaW9uIDI5ODA3KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
IENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHly
aWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAt
NzIwLDEwICs3MjAsOCBAQCBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNT
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheU9iamVjdEltcCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUFycmF5T2JqZWN0SW1wOjpBcnJheU9iamVj
dEltcChFeGVjU3RhdGUqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVu
Y3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90bykKLSAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
SW1wKGZ1bmNQcm90bykKK0FycmF5T2JqZWN0SW1wOjpBcnJheU9iamVjdEltcChFeGVjU3RhdGUq
IGV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG8sIEFycmF5UHJvdG90eXBlKiBhcnJh
eVByb3RvKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8sIGFycmF5UHJvdG8t
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpCiB7CiAgICAgLy8gRUNNQSAxNS40LjMuMSBBcnJheS5w
cm90b3R5cGUKICAgICBwdXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
YXJyYXlQcm90bywgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seSk7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvYm9vbF9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9ib29sX29iamVjdC5jcHAJKHJldmlzaW9uIDI5ODA3KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL2Jvb2xfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBKU1Zh
bHVlKiBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhCiAKIAogQm9vbGVhbk9iamVjdElt
cDo6Qm9vbGVhbk9iamVjdEltcChFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBm
dW5jdGlvblByb3RvdHlwZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSkKLSAg
ICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY3Rpb25Qcm90b3R5cGUpCisgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uSW1wKGZ1bmN0aW9uUHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9kYXRlX29iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2JqZWN0LmNwcAkocmV2aXNpb24gMjk4
MDcpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZGF0ZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQzOSwxMCArNDM5LDggQEAgYm9vbCBEYXRl
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogCiAvLyBUT0RPOiBNYWtlVGltZSAoMTUu
OS4xMS4xKSBldGMuID8KIAotRGF0ZU9iamVjdEltcDo6RGF0ZU9iamVjdEltcChFeGVjU3RhdGUg
KmV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlICpm
dW5jUHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVQcm90b3R5cGUgKmRh
dGVQcm90bykKLSAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKK0RhdGVPYmplY3RJ
bXA6OkRhdGVPYmplY3RJbXAoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVu
Y1Byb3RvLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG8pCisgIDogSW50ZXJuYWxGdW5jdGlvbklt
cChmdW5jUHJvdG8sIGRhdGVQcm90by0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkKIHsKICAgc3Rh
dGljIGNvbnN0IElkZW50aWZpZXIqIHBhcnNlUHJvcGVydHlOYW1lID0gbmV3IElkZW50aWZpZXIo
InBhcnNlIik7CiAgIHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBVVENQcm9wZXJ0eU5hbWUgPSBu
ZXcgSWRlbnRpZmllcigiVVRDIik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZXJyb3Jfb2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmNw
cAkocmV2aXNpb24gMjk4MDcpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBFcnJvckluc3RhbmNlOjpFcnJvcklu
c3RhbmNlKEpTT2JqZWN0KiBwCiAKIC8vIEVDTUEgMTUuOS40CiBFcnJvclByb3RvdHlwZTo6RXJy
b3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3Rv
dHlwZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQotICAgIDogSlNPYmpl
Y3Qob2JqZWN0UHJvdG90eXBlKQorICAgIDogRXJyb3JJbnN0YW5jZShvYmplY3RQcm90b3R5cGUp
CiB7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIgaW4gRXJyb3JP
YmplY3RJbXAncyBjb25zdHJ1Y3RvcgogCkBAIC03MSwxMiArNzEsMTEgQEAgSlNWYWx1ZSogZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEVycm9yT2JqZWN0SW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
RXJyb3JPYmplY3RJbXA6OkVycm9yT2JqZWN0SW1wKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Q
cm90b3R5cGUqIGZ1bmNQcm90bywgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG8pCi0gICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKKyAgICA6IEludGVybmFsRnVuY3Rpb25JbXAo
ZnVuY1Byb3RvLCBlcnJvclByb3RvLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKQogewogICAgIC8v
IEVDTUEgMTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQogICAgIHB1dERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvLCBEb250RW51bXxEb250RGVsZXRlfFJl
YWRPbmx5KTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMSksIERvbnREZWxldGV8UmVhZE9ubHl8RG9udEVudW0pOwotICAgIC8vcHV0RGlyZWN0
KG5hbWVQcm9wZXJ0eU5hbWUsIGpzU3RyaW5nKG4pKTsKIH0KIAogYm9vbCBFcnJvck9iamVjdElt
cDo6aW1wbGVtZW50c0NvbnN0cnVjdCgpIGNvbnN0CkBAIC0xMDYsNyArMTA1LDcgQEAgSlNWYWx1
ZSogRXJyb3JPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gTmF0aXZlRXJyb3JQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1OYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90bywgVVN0cmluZyBuYW1lLCBVU3RyaW5n
IG1lc3NhZ2UpCitOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90bywgY29uc3QgVVN0cmluZyYg
bmFtZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICA6IEpTT2JqZWN0KGVycm9yUHJvdG8p
CiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhu
YW1lKSwgMCk7CkBAIC0xMTcsOCArMTE2LDggQEAgTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2
ZUVycm9yUHJvdG90eQogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JJbXA6OmluZm8gPSB7
ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwIH07CiAKLU5hdGl2ZUVy
cm9ySW1wOjpOYXRpdmVFcnJvckltcChFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBl
KiBmdW5jUHJvdG8sIEpTT2JqZWN0KiBwcm90KQotICAgIDogSW50ZXJuYWxGdW5jdGlvbkltcChm
dW5jUHJvdG8pCitOYXRpdmVFcnJvckltcDo6TmF0aXZlRXJyb3JJbXAoRXhlY1N0YXRlKiBleGVj
LCBGdW5jdGlvblByb3RvdHlwZSogZnVuY1Byb3RvLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJv
dCkKKyAgICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3RvLCBJZGVudGlmaWVyKHByb3Qt
PmdldERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSktPmdldFN0cmluZygpKSkKICAg
ICAsIHByb3RvKHByb3QpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9lcnJvcl9vYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZXJyb3Jfb2JqZWN0LmgJKHJldmlzaW9uIDI5
ODA3KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2Vycm9yX29iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIGluZm87CiAgICAgfTsKIAotICAgIGNsYXNzIEVycm9yUHJvdG90eXBlIDogcHVi
bGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJvcklu
c3RhbmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IE9iamVjdFByb3RvdHlwZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAgfTsKQEAgLTUyLDEy
ICs1MiwxMiBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90
eXBlIDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5hdGl2ZUVycm9y
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEVycm9yUHJvdG90eXBlKiwgVVN0cmluZyBuYW1lLCBVU3Ry
aW5nIG1lc3NhZ2UpOworICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBF
cnJvclByb3RvdHlwZSosIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcmIG1lc3Nh
Z2UpOwogICAgIH07CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvckltcCA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uSW1wIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5hdGl2ZUVycm9ySW1wKEV4ZWNT
dGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKiwgSlNPYmplY3QqKTsKKyAgICAgICAgTmF0aXZlRXJy
b3JJbXAoRXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqLCBOYXRpdmVFcnJvclByb3RvdHlw
ZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzQ29uc3RydWN0KCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBM
aXN0Jik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkocmV2aXNpb24gMjk4MDcpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0KIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNo
QHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoK
QEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIGNsYXNzIEludGVybmFsRnVuY3Rp
b25JbXAgOiBwdWJsaWMgSlNPYmplY3QgewogICBwdWJsaWM6CiAgICAgSW50ZXJuYWxGdW5jdGlv
bkltcCgpOwotICAgIEludGVybmFsRnVuY3Rpb25JbXAoRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAg
ICBJbnRlcm5hbEZ1bmN0aW9uSW1wKEZ1bmN0aW9uUHJvdG90eXBlKiwgY29uc3QgSWRlbnRpZmll
ciYpOwogCiAgICAgdmlydHVhbCBib29sIGltcGxlbWVudHNDYWxsKCkgY29uc3Q7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkocmV2aXNpb24gMjk4MDcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDYgQEAKLS8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0KIC8qCi0gKiAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC03OCwxMCArNzYsNyBAQCBKU1Zh
bHVlKiBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTCiAgICAgICAgIHJldHVybiBqc1N0
cmluZygiZnVuY3Rpb24gIiArIGZpLT5mdW5jdGlvbk5hbWUoKS51c3RyaW5nKCkgKyAiKCIgKyBm
aS0+Ym9keS0+cGFyYW1TdHJpbmcoKSArICIpICIgKyBmaS0+Ym9keS0+dG9TdHJpbmcoKSk7CiAg
ICAgfQogCi0gICAgaWYgKHRoaXNPYmotPmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uSW1wOjpp
bmZvKSAmJiAhc3RhdGljX2Nhc3Q8SW50ZXJuYWxGdW5jdGlvbkltcCo+KHRoaXNPYmopLT5mdW5j
dGlvbk5hbWUoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCJcbmZ1bmN0aW9u
ICIgKyBzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9uSW1wKj4odGhpc09iaiktPmZ1bmN0aW9u
TmFtZSgpLnVzdHJpbmcoKSArICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufVxuIik7Ci0KLSAg
ICByZXR1cm4ganNTdHJpbmcoIltmdW5jdGlvbl0iKTsKKyAgICByZXR1cm4ganNTdHJpbmcoImZ1
bmN0aW9uICIgKyBzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9uSW1wKj4odGhpc09iaiktPmZ1
bmN0aW9uTmFtZSgpLnVzdHJpbmcoKSArICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwog
fQogCiBKU1ZhbHVlKiBmdW5jdGlvblByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZ3MpCkBAIC0xMzYsNyArMTMxLDcgQEAgSlNW
YWx1ZSogZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uT2JqZWN0SW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogRnVuY3Rpb25PYmplY3RJbXA6OkZ1bmN0aW9uT2JqZWN0SW1wKEV4ZWNTdGF0ZSog
ZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQotICAgIDogSW50ZXJu
YWxGdW5jdGlvbkltcChmdW5jdGlvblByb3RvdHlwZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb25J
bXAoZnVuY3Rpb25Qcm90b3R5cGUsIGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lKQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAJKHJldmlzaW9uIDI5ODA3KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2ludGVybmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjI2LDExICsyMjYsNiBA
QCBJbnRlcm5hbEZ1bmN0aW9uSW1wOjpJbnRlcm5hbEZ1bmN0aW9uSW1wCiB7CiB9CiAKLUludGVy
bmFsRnVuY3Rpb25JbXA6OkludGVybmFsRnVuY3Rpb25JbXAoRnVuY3Rpb25Qcm90b3R5cGUqIGZ1
bmNQcm90bykKLSAgOiBKU09iamVjdChmdW5jUHJvdG8pCi17Ci19Ci0KIEludGVybmFsRnVuY3Rp
b25JbXA6OkludGVybmFsRnVuY3Rpb25JbXAoRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgOiBKU09iamVjdChmdW5jUHJvdG8pCiAgICwgbV9u
YW1lKG5hbWUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbnVtYmVyX29iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL251bWJlcl9vYmplY3QuY3BwCShyZXZpc2lv
biAyOTgwNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9udW1iZXJfb2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKLS8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0KIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAsMjAwMyBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI3NCw3ICsyNzMsNyBAQCBKU1Zh
bHVlKiBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0CiAgICAgcmV0dXJuIGpzU3RyaW5n
KHMgKyBtLnN1YnN0cigwLCBrTWludXNmKSk7CiB9CiAKLXZvaWQgZnJhY3Rpb25hbFBhcnRUb1N0
cmluZyhjaGFyKiBidWYsIGludCYgaSwgY29uc3QgY2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBpbnQgZnJhY3Rpb25hbERpZ2l0cykKK3N0YXRpYyB2b2lkIGZyYWN0aW9uYWxQYXJ0VG9T
dHJpbmcoY2hhciogYnVmLCBpbnQmIGksIGNvbnN0IGNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExl
bmd0aCwgaW50IGZyYWN0aW9uYWxEaWdpdHMpCiB7CiAgICAgaWYgKGZyYWN0aW9uYWxEaWdpdHMg
PD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk1LDcgKzI5NCw3IEBAIHZvaWQgZnJhY3Rpb25h
bFBhcnRUb1N0cmluZyhjaGFyKiBidWYsIGkKICAgICAgICAgYnVmW2krK10gPSAnMCc7CiB9CiAK
LXZvaWQgZXhwb25lbnRpYWxQYXJ0VG9TdHJpbmcoY2hhciogYnVmLCBpbnQmIGksIGludCBkZWNp
bWFsUG9pbnQpCitzdGF0aWMgdm9pZCBleHBvbmVudGlhbFBhcnRUb1N0cmluZyhjaGFyKiBidWYs
IGludCYgaSwgaW50IGRlY2ltYWxQb2ludCkKIHsKICAgICBidWZbaSsrXSA9ICdlJzsKICAgICBi
dWZbaSsrXSA9IChkZWNpbWFsUG9pbnQgPj0gMCkgPyAnKycgOiAnLSc7CkBAIC00NDEsNyArNDQw
LDcgQEAgSlNWYWx1ZSogbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlYwogCiAgICAgaWYg
KGUgPT0gcHJlY2lzaW9uIC0gMSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHMgKyBtKTsKLSAg
ICBlbHNlIGlmIChlID49IDApIHsKKyAgICBpZiAoZSA+PSAwKSB7CiAgICAgICAgIGlmIChlICsg
MSA8IG0uc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHMgKyBtLnN1YnN0cigw
LCBlICsgMSkgKyAiLiIgKyBtLnN1YnN0cihlICsgMSkpOwogICAgICAgICByZXR1cm4ganNTdHJp
bmcocyArIG0pOwpAQCAtNDYzLDcgKzQ2Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJPYmpl
Y3RJbXA6OmluZm8gPSAKIEBlbmQKICovCiBOdW1iZXJPYmplY3RJbXA6Ok51bWJlck9iamVjdElt
cChFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG8sIE51bWJlclBy
b3RvdHlwZSogbnVtYmVyUHJvdG8pCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90
bykKKyAgICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3RvLCBudW1iZXJQcm90by0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSkKIHsKICAgICAvLyBOdW1iZXIuUHJvdG90eXBlCiAgICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG51bWJlclByb3RvLCBEb250
RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsKQEAgLTQ4MSwxNyArNDgwLDE4IEBAIEpTVmFsdWUq
IE51bWJlck9iamVjdEltcDo6Z2V0VmFsdWVQcm9wZXIKIHsKICAgICAvLyBFQ01BIDE1LjcuMwog
ICAgIHN3aXRjaCAodG9rZW4pIHsKLSAgICBjYXNlIE5hTlZhbHVlOgotICAgICAgICByZXR1cm4g
anNOYU4oKTsKLSAgICBjYXNlIE5lZ0luZmluaXR5OgotICAgICAgICByZXR1cm4ganNOdW1iZXJD
ZWxsKC1JbmYpOwotICAgIGNhc2UgUG9zSW5maW5pdHk6Ci0gICAgICAgIHJldHVybiBqc051bWJl
ckNlbGwoSW5mKTsKLSAgICBjYXNlIE1heFZhbHVlOgotICAgICAgICByZXR1cm4ganNOdW1iZXJD
ZWxsKDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KTsKLSAgICBjYXNlIE1pblZhbHVlOgotICAgICAg
ICByZXR1cm4ganNOdW1iZXJDZWxsKDVFLTMyNCk7CisgICAgICAgIGNhc2UgTmFOVmFsdWU6Cisg
ICAgICAgICAgICByZXR1cm4ganNOYU4oKTsKKyAgICAgICAgY2FzZSBOZWdJbmZpbml0eToKKyAg
ICAgICAgICAgIHJldHVybiBqc051bWJlckNlbGwoLUluZik7CisgICAgICAgIGNhc2UgUG9zSW5m
aW5pdHk6CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXJDZWxsKEluZik7CisgICAgICAgIGNh
c2UgTWF4VmFsdWU6CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXJDZWxsKDEuNzk3NjkzMTM0
ODYyMzE1N0UrMzA4KTsKKyAgICAgICAgY2FzZSBNaW5WYWx1ZToKKyAgICAgICAgICAgIHJldHVy
biBqc051bWJlckNlbGwoNUUtMzI0KTsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCkBAIC01MDYsNiArNTA2LDcgQEAgSlNPYmplY3Qq
IE51bWJlck9iamVjdEltcDo6Y29uc3RydWN0KEV4ZQogICAgIEpTT2JqZWN0KiBwcm90byA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVtYmVyUHJvdG90eXBlKCk7CiAgICAgTnVtYmVy
SW5zdGFuY2UqIG9iaiA9IG5ldyBOdW1iZXJJbnN0YW5jZShwcm90byk7CiAKKyAgICAvLyBGSVhN
RTogQ2hlY2sgYXJnc1swXS0+aXNVbmRlZmluZWQoKSBpbnN0ZWFkIG9mIGFyZ3MuaXNFbXB0eSgp
PwogICAgIGRvdWJsZSBuID0gYXJncy5pc0VtcHR5KCkgPyAwIDogYXJnc1swXS0+dG9OdW1iZXIo
ZXhlYyk7CiAgICAgb2JqLT5zZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKG4pKTsKICAgICByZXR1
cm4gb2JqOwpAQCAtNTE0LDggKzUxNSw4IEBAIEpTT2JqZWN0KiBOdW1iZXJPYmplY3RJbXA6OmNv
bnN0cnVjdChFeGUKIC8vIEVDTUEgMTUuNy4yCiBKU1ZhbHVlKiBOdW1iZXJPYmplY3RJbXA6OmNh
bGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0JiBhcmdz
KQogewotICAgIGRvdWJsZSBuID0gYXJncy5pc0VtcHR5KCkgPyAwIDogYXJnc1swXS0+dG9OdW1i
ZXIoZXhlYyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKG4pOworICAgIC8vIEZJWE1FOiBDaGVjayBh
cmdzWzBdLT5pc1VuZGVmaW5lZCgpIGluc3RlYWQgb2YgYXJncy5pc0VtcHR5KCk/CisgICAgcmV0
dXJuIGpzTnVtYmVyKGFyZ3MuaXNFbXB0eSgpID8gMCA6IGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb2Jq
ZWN0X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL29iamVjdF9v
YmplY3QuY3BwCShyZXZpc2lvbiAyOTgwNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3Rf
b2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIEpTVmFsdWUqIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGEKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBPYmplY3RPYmplY3RJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogT2JqZWN0T2JqZWN0SW1wOjpPYmplY3RPYmplY3RJbXAoRXhlY1N0YXRlKiBleGVjLCBPYmpl
Y3RQcm90b3R5cGUqIG9ialByb3RvLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY1Byb3RvKQotICA6
IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3RvKQorICA6IEludGVybmFsRnVuY3Rpb25JbXAo
ZnVuY1Byb3RvLCAiT2JqZWN0IikKIHsKICAgLy8gRUNNQSAxNS4yLjMuMQogICBwdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgb2JqUHJvdG8sIERvbnRFbnVtfERvbnRE
ZWxldGV8UmVhZE9ubHkpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cF9vYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9yZWdleHBfb2JqZWN0LmNwcAko
cmV2aXNpb24gMjk4MDcpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhwX29iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCBzdHJ1Y3QgUmVnRXhwT2JqZWN0SW1w
UHJpdmF0ZSB7CiB9OwogCiBSZWdFeHBPYmplY3RJbXA6OlJlZ0V4cE9iamVjdEltcChFeGVjU3Rh
dGUqIGV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG8sIFJlZ0V4cFByb3RvdHlwZSog
cmVnUHJvdG8pCi0gIDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8pCisgIDogSW50ZXJu
YWxGdW5jdGlvbkltcChmdW5jUHJvdG8sICJSZWdFeHAiKQogICAsIGQobmV3IFJlZ0V4cE9iamVj
dEltcFByaXZhdGUpCiB7CiAgIC8vIEVDTUEgMTUuMTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAJKHJldmlzaW9uIDI5ODA3KQorKysg
SmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiAyIC0qLQogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTk4
NywxMCArOTg3LDggQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIAog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyaW5nT2JqZWN0SW1wIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TdHJpbmdPYmplY3RJbXA6OlN0cmluZ09iamVj
dEltcChFeGVjU3RhdGUqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvblByb3RvdHlwZSogZnVuY1Byb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90bykKLSAgOiBJbnRlcm5hbEZ1bmN0aW9u
SW1wKGZ1bmNQcm90bykKK1N0cmluZ09iamVjdEltcDo6U3RyaW5nT2JqZWN0SW1wKEV4ZWNTdGF0
ZSogZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90bykKKyAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bywgc3RyaW5nUHJv
dG8tPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpCiB7CiAgIC8vIEVDTUEgMTUuNS4zLjEgU3RyaW5n
LnByb3RvdHlwZQogICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
c3RyaW5nUHJvdG8sIERvbnRFbnVtfERvbnREZWxldGV8UmVhZE9ubHkpOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjk4MDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAwOC0wMS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSB0ZXN0
IGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OAorICAgICAg
ICAgICcnLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgZ2l2ZXMgW2Z1bmN0aW9uXQorCisgICAgICAg
ICogZmFzdC9qcy9mdW5jdGlvbi1uYW1lcy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZm9yIG5ldyB0
ZXN0cy4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanM6IFVwZGF0
ZWQgdGVzdCB0byBleHBlY3QgdGhlIGZvcm1hdCB0aGF0IEdlY2tvIHVzZXMKKyAgICAgICAgZm9y
IG5hdGl2ZSBjb2RlLCB3aGljaCB3ZSBub3cgbWF0Y2ggY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIu
CisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tbmFtZXMuanM6IEFkZGVkIHRl
c3RzIGZvciB0aGUgbmFtZXMgb2YgYWxsIHRoZSBjb25zdHJ1Y3RvcnMuCisKIDIwMDgtMDEtMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tbmFtZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tbmFtZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyOTgwNykKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rp
b24tbmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDI1IEBACi1U
aGlzIHRlc3QgY2hlY2tzIHRoZSBuYW1lcyBvZiBmdW5jdGlvbnMgY29uc3RydWN0ZWQgdHdvIGRp
ZmZlcmVudCB3YXlzLgorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgbmFtZXMgb2YgYWxsIHNvcnRzIG9m
IGRpZmZlcmVudCBmdW5jdGlvbnMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1Q
QVNTIG5ldyBGdW5jdGlvbignMScpLnRvU3RyaW5nKCkucmVwbGFjZSgvWyBcbl0rL2csICcgJykg
aXMgJ2Z1bmN0aW9uIGFub255bW91cygpIHsgMTsgfScKLVBBU1MgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50Lm9uY2xpY2sudG9TdHJpbmcoKS5yZXBsYWNlKC9bIFxuXSsvZywgJyAnKSBpcyAnZnVu
Y3Rpb24gb25jbGljayhldmVudCkgeyAyOyB9JworUEFTUyBuZXcgRnVuY3Rpb24oJ3JldHVybiAx
JykudG9TdHJpbmcoKS5yZXBsYWNlKC9bIFxuXSsvZywgJyAnKSBpcyAnZnVuY3Rpb24gYW5vbnlt
b3VzKCkgeyByZXR1cm4gMTsgfScKK1BBU1MgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9uY2xp
Y2sudG9TdHJpbmcoKS5yZXBsYWNlKC9bIFxuXSsvZywgJyAnKSBpcyAnZnVuY3Rpb24gb25jbGlj
ayhldmVudCkgeyByZXR1cm4gMjsgfScKK1BBU1MgJycuY29uc3RydWN0b3IgaXMgU3RyaW5nCitQ
QVNTIEJvb2xlYW4udG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQm9vbGVhbigpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59JworUEFTUyBEYXRlLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIERhdGUoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufScKK1BBU1MgRXJyb3IudG9TdHJpbmcoKSBpcyAnZnVuY3Rp
b24gRXJyb3IoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufScKK1BBU1MgRXZhbEVycm9yLnRvU3Ry
aW5nKCkgaXMgJ2Z1bmN0aW9uIEV2YWxFcnJvcigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59Jwor
UEFTUyBGdW5jdGlvbi50b1N0cmluZygpIGlzICdmdW5jdGlvbiBGdW5jdGlvbigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59JworUEFTUyBOdW1iZXIudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gTnVt
YmVyKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0nCitQQVNTIE9iamVjdC50b1N0cmluZygpIGlz
ICdmdW5jdGlvbiBPYmplY3QoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufScKK1BBU1MgUmFuZ2VF
cnJvci50b1N0cmluZygpIGlzICdmdW5jdGlvbiBSYW5nZUVycm9yKCkge1xuICAgIFtuYXRpdmUg
Y29kZV1cbn0nCitQQVNTIFJlZmVyZW5jZUVycm9yLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIFJl
ZmVyZW5jZUVycm9yKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0nCitQQVNTIFJlZ0V4cC50b1N0
cmluZygpIGlzICdmdW5jdGlvbiBSZWdFeHAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufScKK1BB
U1MgU3RyaW5nLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIFN0cmluZygpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59JworUEFTUyBTeW50YXhFcnJvci50b1N0cmluZygpIGlzICdmdW5jdGlvbiBTeW50
YXhFcnJvcigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59JworUEFTUyBUeXBlRXJyb3IudG9TdHJp
bmcoKSBpcyAnZnVuY3Rpb24gVHlwZUVycm9yKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0nCitQ
QVNTIFVSSUVycm9yLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIFVSSUVycm9yKCkge1xuICAgIFtu
YXRpdmUgY29kZV1cbn0nCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlv
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVu
Y3Rpb24uanMJKHJldmlzaW9uIDI5ODA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVz
b3VyY2VzL2Z1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgZnVu
Y3Rpb24gZ3JvdXBGdW5jKGEsIGIpIHsgcmV0dXJuIChhK2IpKgogZXZhbCgidmFyIGdyb3VwQ2xv
bmUgPSAiICsgZ3JvdXBGdW5jKTsKIHNob3VsZEJlKCJncm91cENsb25lKDEsIDIpIiwgIjkiKTsK
IAotdmFyIHNpblN0ciA9ICdcbmZ1bmN0aW9uIHNpbigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
XG4nCit2YXIgc2luU3RyID0gJ2Z1bmN0aW9uIHNpbigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
Jwogc2hvdWxkQmUoIlN0cmluZyhNYXRoLnNpbikiLCAic2luU3RyIik7CiAKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2Z1bmN0aW9uLW5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL2Z1bmN0aW9uLW5hbWVzLmpzCShyZXZpc2lvbiAyOTgwNykKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL2Z1bmN0aW9uLW5hbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEwICsxLDMyIEBACiBkZXNjcmlwdGlvbigKLSJUaGlzIHRlc3QgY2hlY2tzIHRoZSBuYW1lcyBv
ZiBmdW5jdGlvbnMgY29uc3RydWN0ZWQgdHdvIGRpZmZlcmVudCB3YXlzLiIKKyJUaGlzIHRlc3Qg
Y2hlY2tzIHRoZSBuYW1lcyBvZiBhbGwgc29ydHMgb2YgZGlmZmVyZW50IGZ1bmN0aW9ucy4iCiAp
OwogCi1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgIjIi
KTsKK2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAicmV0
dXJuIDIiKTsKIAotc2hvdWxkQmUoIm5ldyBGdW5jdGlvbignMScpLnRvU3RyaW5nKCkucmVwbGFj
ZSgvWyBcXG5dKy9nLCAnICcpIiwgIidmdW5jdGlvbiBhbm9ueW1vdXMoKSB7IDE7IH0nIik7Ci1z
aG91bGRCZSgiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9uY2xpY2sudG9TdHJpbmcoKS5yZXBs
YWNlKC9bIFxcbl0rL2csICcgJykiLCAiJ2Z1bmN0aW9uIG9uY2xpY2soZXZlbnQpIHsgMjsgfSci
KTsKK3Nob3VsZEJlKCJuZXcgRnVuY3Rpb24oJ3JldHVybiAxJykudG9TdHJpbmcoKS5yZXBsYWNl
KC9bIFxcbl0rL2csICcgJykiLCAiJ2Z1bmN0aW9uIGFub255bW91cygpIHsgcmV0dXJuIDE7IH0n
Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9uY2xpY2sudG9TdHJpbmco
KS5yZXBsYWNlKC9bIFxcbl0rL2csICcgJykiLCAiJ2Z1bmN0aW9uIG9uY2xpY2soZXZlbnQpIHsg
cmV0dXJuIDI7IH0nIik7CisKK3Nob3VsZEJlKCInJy5jb25zdHJ1Y3RvciIsICJTdHJpbmciKTsK
KworZnVuY3Rpb24gY2hlY2tDb25zdHJ1Y3Rvck5hbWUobmFtZSkKK3sKKyAgICBzaG91bGRCZShu
YW1lICsgIi50b1N0cmluZygpIiwgIidmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7XFxuICAgIFtu
YXRpdmUgY29kZV1cXG59JyIpOworfQorCitjaGVja0NvbnN0cnVjdG9yTmFtZSgiQm9vbGVhbiIp
OworY2hlY2tDb25zdHJ1Y3Rvck5hbWUoIkRhdGUiKTsKK2NoZWNrQ29uc3RydWN0b3JOYW1lKCJF
cnJvciIpOworY2hlY2tDb25zdHJ1Y3Rvck5hbWUoIkV2YWxFcnJvciIpOworY2hlY2tDb25zdHJ1
Y3Rvck5hbWUoIkZ1bmN0aW9uIik7CitjaGVja0NvbnN0cnVjdG9yTmFtZSgiTnVtYmVyIik7Citj
aGVja0NvbnN0cnVjdG9yTmFtZSgiT2JqZWN0Iik7CitjaGVja0NvbnN0cnVjdG9yTmFtZSgiUmFu
Z2VFcnJvciIpOworY2hlY2tDb25zdHJ1Y3Rvck5hbWUoIlJlZmVyZW5jZUVycm9yIik7CitjaGVj
a0NvbnN0cnVjdG9yTmFtZSgiUmVnRXhwIik7CitjaGVja0NvbnN0cnVjdG9yTmFtZSgiU3RyaW5n
Iik7CitjaGVja0NvbnN0cnVjdG9yTmFtZSgiU3ludGF4RXJyb3IiKTsKK2NoZWNrQ29uc3RydWN0
b3JOYW1lKCJUeXBlRXJyb3IiKTsKK2NoZWNrQ29uc3RydWN0b3JOYW1lKCJVUklFcnJvciIpOwog
CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="8171"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>