+ * @access public
+ * @return boolean
+ */
+ public function turn()
+ {
+ $this->error = array(
+ 'error' => 'The SMTP TURN command is not implemented'
+ );
+ $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT);
+ return false;
+ }
+
+ /**
+ * Send raw data to the server.
+ * @param string $data The data to send
+ * @access public
+ * @return integer|boolean The number of bytes sent to the server or false on error
+ */
+ public function client_send($data)
+ {
+ $this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT);
+ return fwrite($this->smtp_conn, $data);
+ }
+
+ /**
+ * Get the latest error.
+ * @access public
+ * @return array
+ */
+ public function getError()
+ {
+ return $this->error;
+ }
+
+ /**
+ * Get SMTP extensions available on the server
+ * @access public
+ * @return array|null
+ */
+ public function getServerExtList()
+ {
+ return $this->server_caps;
+ }
+
+ /**
+ * A multipurpose method
+ * The method works in three ways, dependent on argument value and current state
+ * 1. HELO/EHLO was not sent - returns null and set up $this->error
+ * 2. HELO was sent
+ * $name = 'HELO': returns server name
+ * $name = 'EHLO': returns boolean false
+ * $name = any string: returns null and set up $this->error
+ * 3. EHLO was sent
+ * $name = 'HELO'|'EHLO': returns server name
+ * $name = any string: if extension $name exists, returns boolean True
+ * or its options. Otherwise returns boolean False
+ * In other words, one can use this method to detect 3 conditions:
+ * - null returned: handshake was not or we don't know about ext (refer to $this->error)
+ * - false returned: the requested feature exactly not exists
+ * - positive value returned: the requested feature exists
+ * @param string $name Name of SMTP extension or 'HELO'|'EHLO'
+ * @return mixed
+ */
+ public function getServerExt($name)
+ {
+ if (!$this->server_caps) {
+ $this->error = array('No HELO/EHLO was sent');
+ return null;
+ }
+
+ // the tight logic knot ;)
+ if (!array_key_exists($name, $this->server_caps)) {
+ if ($name == 'HELO') {
+ return $this->server_caps['EHLO'];
+ }
+ if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) {
+ return false;
+ }
+ $this->error = array('HELO handshake was used. Client knows nothing about server extensions');
+ return null;
+ }
+
+ return $this->server_caps[$name];
+ }
+
+ /**
+ * Get the last reply from the server.
+ * @access public
+ * @return string
+ */
+ public function getLastReply()
+ {
+ return $this->last_reply;
+ }
+
+ /**
+ * Read the SMTP server's response.
+ * Either before eof or socket timeout occurs on the operation.
+ * With SMTP we can tell if we have more lines to read if the
+ * 4th character is '-' symbol. If it is a space then we don't
+ * need to read anything else.
+ * @access protected
+ * @return string
+ */
+ protected function get_lines()
+ {
+ // If the connection is bad, give up straight away
+ if (!is_resource($this->smtp_conn)) {
+ return '';
+ }
+ $data = '';
+ $endtime = 0;
+ stream_set_timeout($this->smtp_conn, $this->Timeout);
+ if ($this->Timelimit > 0) {
+ $endtime = time() + $this->Timelimit;
+ }
+ while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
+ $str = @fgets($this->smtp_conn, 515);
+ $this->edebug("SMTP -> get_lines(): \$data was \"$data\"", self::DEBUG_LOWLEVEL);
+ $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL);
+ $data .= $str;
+ $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL);
+ // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen
+ if ((isset($str[3]) and $str[3] == ' ')) {
+ break;
+ }
+ // Timed-out? Log and break
+ $info = stream_get_meta_data($this->smtp_conn);
+ if ($info['timed_out']) {
+ $this->edebug(
+ 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)',
+ self::DEBUG_LOWLEVEL
+ );
+ break;
+ }
+ // Now check if reads took too long
+ if ($endtime and time() > $endtime) {
+ $this->edebug(
+ 'SMTP -> get_lines(): timelimit reached ('.
+ $this->Timelimit . ' sec)',
+ self::DEBUG_LOWLEVEL
+ );
+ break;
+ }
+ }
+ return $data;
+ }
+
+ /**
+ * Enable or disable VERP address generation.
+ * @param boolean $enabled
+ */
+ public function setVerp($enabled = false)
+ {
+ $this->do_verp = $enabled;
+ }
+
+ /**
+ * Get VERP address generation mode.
+ * @return boolean
+ */
+ public function getVerp()
+ {
+ return $this->do_verp;
+ }
+
+ /**
+ * Set debug output method.
+ * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it.
+ */
+ public function setDebugOutput($method = 'echo')
+ {
+ $this->Debugoutput = $method;
+ }
+
+ /**
+ * Get debug output method.
+ * @return string
+ */
+ public function getDebugOutput()
+ {
+ return $this->Debugoutput;
+ }
+
+ /**
+ * Set debug output level.
+ * @param integer $level
+ */
+ public function setDebugLevel($level = 0)
+ {
+ $this->do_debug = $level;
+ }
+
+ /**
+ * Get debug output level.
+ * @return integer
+ */
+ public function getDebugLevel()
+ {
+ return $this->do_debug;
+ }
+
+ /**
+ * Set SMTP timeout.
+ * @param integer $timeout
+ */
+ public function setTimeout($timeout = 0)
+ {
+ $this->Timeout = $timeout;
+ }
+
+ /**
+ * Get SMTP timeout.
+ * @return integer
+ */
+ public function getTimeout()
+ {
+ return $this->Timeout;
+ }
+}
diff --git a/lib/modules/PHPMailer-master/docs/Callback_function_notes.txt b/lib/modules/PHPMailer-master/docs/Callback_function_notes.txt
new file mode 100644
index 0000000..461ea50
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/Callback_function_notes.txt
@@ -0,0 +1,17 @@
+NEW CALLBACK FUNCTION:
+======================
+
+We have had requests for a method to process the results of sending emails
+through PHPMailer. In this new release, we have implemented a callback
+function that passes the results of each email sent (to, cc, and/or bcc).
+We have provided an example that echos the results back to the screen. The
+callback function can be used for any purpose. With minor modifications, the
+callback function can be used to create CSV logs, post results to databases,
+etc.
+
+Please review the test.php script for the example.
+
+It's pretty straight forward.
+
+Enjoy!
+Andy
diff --git a/lib/modules/PHPMailer-master/docs/DomainKeys_notes.txt b/lib/modules/PHPMailer-master/docs/DomainKeys_notes.txt
new file mode 100644
index 0000000..2ad10f1
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/DomainKeys_notes.txt
@@ -0,0 +1,55 @@
+CREATE DKIM KEYS and DNS Resource Record:
+=========================================
+
+To create DomainKeys Identified Mail keys, visit:
+http://dkim.worxware.com/
+... read the information, fill in the form, and download the ZIP file
+containing the public key, private key, DNS Resource Record and instructions
+to add to your DNS Zone Record, and the PHPMailer code to enable DKIM
+digital signing.
+
+/*** PROTECT YOUR PRIVATE & PUBLIC KEYS ***/
+
+You need to protect your DKIM private and public keys from being viewed or
+accessed. Add protection to your .htaccess file as in this example:
+
+# secure htkeyprivate file
+
+ order allow,deny
+ deny from all
+
+
+# secure htkeypublic file
+
+ order allow,deny
+ deny from all
+
+
+(the actual .htaccess additions are in the ZIP file sent back to you from
+http://dkim.worxware.com/
+
+A few notes on using DomainKey Identified Mail (DKIM):
+
+You do not need to use PHPMailer to DKIM sign emails IF:
+- you enable DomainKey support and add the DNS resource record
+- you use your outbound mail server
+
+If you are a third-party emailer that works on behalf of domain owners to
+send their emails from your own server:
+- you absolutely have to DKIM sign outbound emails
+- the domain owner has to add the DNS resource record to match the
+ private key, public key, selector, identity, and domain that you create
+- use caution with the "selector" ... at least one "selector" will already
+ exist in the DNS Zone Record of the domain at the domain owner's server
+ you need to ensure that the "selector" you use is unique
+Note: since the IP address will not match the domain owner's DNS Zone record
+you can be certain that email providers that validate based on DomainKey will
+check the domain owner's DNS Zone record for your DNS resource record. Before
+sending out emails on behalf of domain owners, ensure they have entered the
+DNS resource record you provided them.
+
+Enjoy!
+Andy
+
+PS. if you need additional information about DKIM, please see:
+http://www.dkim.org/info/dkim-faq.html
diff --git a/lib/modules/PHPMailer-master/docs/Note_for_SMTP_debugging.txt b/lib/modules/PHPMailer-master/docs/Note_for_SMTP_debugging.txt
new file mode 100644
index 0000000..128b2d9
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/Note_for_SMTP_debugging.txt
@@ -0,0 +1,17 @@
+If you are having problems connecting or sending emails through your SMTP server, the SMTP class can provide more information about the processing/errors taking place.
+Use the debug functionality of the class to see what's going on in your connections. To do that, set the debug level in your script. For example:
+
+$mail->SMTPDebug = 1;
+$mail->isSMTP(); // telling the class to use SMTP
+$mail->SMTPAuth = true; // enable SMTP authentication
+$mail->Port = 26; // set the SMTP port
+$mail->Host = "mail.yourhost.com"; // SMTP server
+$mail->Username = "name@yourhost.com"; // SMTP account username
+$mail->Password = "your password"; // SMTP account password
+
+Notes on this:
+$mail->SMTPDebug = 0; ... will disable debugging (you can also leave this out completely, 0 is the default)
+$mail->SMTPDebug = 1; ... will echo errors and server responses
+$mail->SMTPDebug = 2; ... will echo errors, server responses and client messages
+
+And finally, don't forget to disable debugging before going into production.
diff --git a/lib/modules/PHPMailer-master/docs/extending.html b/lib/modules/PHPMailer-master/docs/extending.html
new file mode 100644
index 0000000..ec2b851
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/extending.html
@@ -0,0 +1,129 @@
+
+
+Examples using phpmailer
+
+
+
+
+Examples using PHPMailer
+
+1. Advanced Example
+
+
+This demonstrates sending multiple email messages with binary attachments
+from a MySQL database using multipart/alternative messages.
+
+
+require 'PHPMailerAutoload.php';
+
+$mail = new PHPMailer();
+
+$mail->From = 'list@example.com';
+$mail->FromName = 'List manager';
+$mail->Host = 'smtp1.example.com;smtp2.example.com';
+$mail->Mailer = 'smtp';
+
+@mysqli_connect('localhost','root','password');
+@mysqli_select_db("my_company");
+$query = "SELECT full_name, email, photo FROM employee";
+$result = @mysqli_query($query);
+
+while ($row = mysqli_fetch_assoc($result))
+{
+ // HTML body
+ $body = "Hello <font size=\"4\">" . $row['full_name'] . "</font>, <p>";
+ $body .= "<i>Your</i> personal photograph to this message.<p>";
+ $body .= "Sincerely, <br>";
+ $body .= "phpmailer List manager";
+
+ // Plain text body (for mail clients that cannot read HTML)
+ $text_body = 'Hello ' . $row['full_name'] . ", \n\n";
+ $text_body .= "Your personal photograph to this message.\n\n";
+ $text_body .= "Sincerely, \n";
+ $text_body .= 'phpmailer List manager';
+
+ $mail->Body = $body;
+ $mail->AltBody = $text_body;
+ $mail->addAddress($row['email'], $row['full_name']);
+ $mail->addStringAttachment($row['photo'], 'YourPhoto.jpg');
+
+ if(!$mail->send())
+ echo "There has been a mail error sending to " . $row['email'] . "<br>";
+
+ // Clear all addresses and attachments for next loop
+ $mail->clearAddresses();
+ $mail->clearAttachments();
+}
+
+
+
+
2. Extending PHPMailer
+
+
+Extending classes with inheritance is one of the most
+powerful features of object-oriented programming. It allows you to make changes to the
+original class for your own personal use without hacking the original
+classes, and it's very easy to do:
+
+
+Here's a class that extends the phpmailer class and sets the defaults
+for the particular site:
+PHP include file: my_phpmailer.php
+
+
+
+require 'PHPMailerAutoload.php';
+
+class my_phpmailer extends PHPMailer {
+ // Set default variables for all new objects
+ public $From = 'from@example.com';
+ public $FromName = 'Mailer';
+ public $Host = 'smtp1.example.com;smtp2.example.com';
+ public $Mailer = 'smtp'; // Alternative to isSMTP()
+ public $WordWrap = 75;
+
+ // Replace the default debug output function
+ protected function edebug($msg) {
+ print('My Site Error');
+ print('Description:');
+ printf('%s', $msg);
+ exit;
+ }
+
+ //Extend the send function
+ public function send() {
+ $this->Subject = '[Yay for me!] '.$this->Subject;
+ return parent::send()
+ }
+
+ // Create an additional function
+ public function do_something($something) {
+ // Place your new code here
+ }
+}
+
+
+Now here's a normal PHP page in the site, which will have all the defaults set above:
+
+
+require 'my_phpmailer.php';
+
+// Instantiate your new class
+$mail = new my_phpmailer;
+
+// Now you only need to add the necessary stuff
+$mail->addAddress('josh@example.com', 'Josh Adams');
+$mail->Subject = 'Here is the subject';
+$mail->Body = 'This is the message body';
+$mail->addAttachment('c:/temp/11-10-00.zip', 'new_name.zip'); // optional name
+
+if(!$mail->send())
+{
+ echo 'There was an error sending the message';
+ exit;
+}
+
+echo 'Message was sent successfully';
+
+
+
diff --git a/lib/modules/PHPMailer-master/docs/faq.html b/lib/modules/PHPMailer-master/docs/faq.html
new file mode 100644
index 0000000..7033a14
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/faq.html
@@ -0,0 +1,28 @@
+
+
+PHPMailer FAQ
+
+
+PHPMailer FAQ
+
+ - Q: I am concerned that using include files will take up too much
+ processing time on my computer. How can I make it run faster?
+ A: PHP by itself is fairly fast, but it recompiles scripts every time they are run, which takes up valuable
+ computer resources. You can bypass this by using an opcode cache which compiles
+ PHP code and store it in memory to reduce overhead immensely. APC
+ (Alternative PHP Cache) is a free opcode cache extension in the PECL library.
+ - Q: Which mailer gives me the best performance?
+ A: On a single machine the sendmail (or Qmail) is fastest overall.
+ Next fastest is mail() to give you the best performance. Both do not have the overhead of SMTP.
+ If you do not have a local mail server (as is typical on Windows), SMTP is your only option.
+ - Q: When I try to attach a file with on my server I get a
+ "Could not find {file} on filesystem error". Why is this?
+ A: If you are using a Unix machine this is probably because the user
+ running your web server does not have read access to the directory in question. If you are using Windows,
+ then the problem is probably that you have used single backslashes to denote directories (\).
+ A single backslash has a special meaning to PHP so these are not
+ valid. Instead use double backslashes ("\\") or a single forward
+ slash ("/").
+
+
+
diff --git a/lib/modules/PHPMailer-master/docs/generatedocs.sh b/lib/modules/PHPMailer-master/docs/generatedocs.sh
new file mode 100644
index 0000000..9da1ddf
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/generatedocs.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Regenerate PHPMailer documentation
+# Run from within the docs folder
+rm -rf phpdoc/*
+phpdoc --directory .. --target ./phpdoc --ignore test/,examples/,extras/,test_script/,vendor/,language/ --sourcecode --force --title PHPMailer --template="clean"
+# You can merge regenerated docs into a separate docs working copy without messing up the git status like so:
+# rsync -a --delete --exclude ".git" --exclude "phpdoc-cache-*/" --exclude "README.md" phpdoc/ ../../phpmailer-docs
+# After updating docs, push/PR them to the phpmailer gh-pages branch: https://github.com/PHPMailer/PHPMailer/tree/gh-pages
diff --git a/lib/modules/PHPMailer-master/docs/pop3_article.txt b/lib/modules/PHPMailer-master/docs/pop3_article.txt
new file mode 100644
index 0000000..fb90b9c
--- /dev/null
+++ b/lib/modules/PHPMailer-master/docs/pop3_article.txt
@@ -0,0 +1,50 @@
+This is built for PHP Mailer 1.72 and was not tested with any previous version. It was developed under PHP 4.3.11 (E_ALL). It works under PHP 5 and 5.1 with E_ALL, but not in Strict mode due to var deprecation (but then neither does PHP Mailer either!). It follows the RFC 1939 standard explicitly and is fully commented.
+
+With that noted, here is how to implement it:
+
+I didn't want to modify the PHP Mailer classes at all, so you will have to include/require this class along with the base one. It can sit quite happily in the phpmailer directory.
+
+When you need it, create your POP3 object
+
+Right before I invoke PHP Mailer I activate the POP3 authorisation. POP3 before SMTP is a process whereby you login to your web hosts POP3 mail server BEFORE sending out any emails via SMTP. The POP3 logon 'verifies' your ability to send email by SMTP, which typically otherwise blocks you. On my web host (Pair Networks) a single POP3 logon is enough to 'verify' you for 90 minutes. Here is some sample PHP code that activates the POP3 logon and then sends an email via PHP Mailer:
+
+authorise('pop3.example.com', 110, 30, 'mailer', 'password', 1);
+$mail = new PHPMailer(); $mail->SMTPDebug = 2; $mail->isSMTP();
+$mail->isHTML(false); $mail->Host = 'relay.example.com';
+$mail->From = 'mailer@example.com';
+$mail->FromName = 'Example Mailer';
+$mail->Subject = 'My subject';
+$mail->Body = 'Hello world';
+$mail->addAddress('rich@corephp.co.uk', 'Richard Davey');
+if (!$mail->send()) {
+ echo $mail->ErrorInfo;
+}
+?>
+
+The PHP Mailer parts of this code should be obvious to anyone who has used PHP Mailer before. One thing to note - you almost certainly will not need to use SMTP Authentication *and* POP3 before SMTP together. The Authorisation method is a proxy method to all of the others within that class. There are connect, Logon and disconnect methods available, but I wrapped them in the single Authorisation one to make things easier.
+The Parameters
+
+The authorise parameters are as follows:
+
+$pop->authorise('pop3.example.com', 110, 30, 'mailer', 'password', 1);
+
+ 1. pop3.example.com - The POP3 Mail Server Name (hostname or IP address)
+ 2. 110 - The POP3 Port on which to connect (default is usually 110, but check with your host)
+ 3. 30 - A connection time-out value (in seconds)
+ 4. mailer - The POP3 Username required to logon
+ 5. password - The POP3 Password required to logon
+ 6. 1 - The class debug level (0 = off, 1+ = debug output is echoed to the browser)
+
+Final Comments + the Download
+
+1) This class does not support APOP connections. This is only because I did not have an APOP server to test with, but if you'd like to see that added just contact me.
+
+2) Opening and closing lots of POP3 connections can be quite a resource/network drain. If you need to send a whole batch of emails then just perform the authentication once at the start, and then loop through your mail sending script. Providing this process doesn't take longer than the verification period lasts on your POP3 server, you should be fine. With my host that period is 90 minutes, i.e. plenty of time.
+
+3) If you have heavy requirements for this script (i.e. send a LOT of email on a frequent basis) then I would advise seeking out an alternative sending method (direct SMTP ideally). If this isn't possible then you could modify this class so the 'last authorised' date is recorded somewhere (MySQL, Flat file, etc) meaning you only open a new connection if the old one has expired, saving you precious overhead.
+
+4) There are lots of other POP3 classes for PHP available. However most of them implement the full POP3 command set, where-as this one is purely for authentication, and much lighter as a result. However using any of the other POP3 classes to just logon to your server would have the same net result. At the end of the day, use whatever method you feel most comfortable with.
+Download
+
+My thanks to Chris Ryan for the inspiration (even if indirectly, via his SMTP class)
diff --git a/lib/modules/PHPMailer-master/examples/LGPLv3.txt b/lib/modules/PHPMailer-master/examples/LGPLv3.txt
new file mode 100644
index 0000000..3f9959f
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/LGPLv3.txt
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
\ No newline at end of file
diff --git a/lib/modules/PHPMailer-master/examples/code_generator.phps b/lib/modules/PHPMailer-master/examples/code_generator.phps
new file mode 100644
index 0000000..de04f0c
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/code_generator.phps
@@ -0,0 +1,597 @@
+CharSet = 'utf-8';
+$mail->Debugoutput = $CFG['smtp_debugoutput'];
+$example_code .= "\n\n\$mail = new PHPMailer(true);";
+$example_code .= "\n\$mail->CharSet = 'utf-8';";
+
+class phpmailerAppException extends phpmailerException
+{
+}
+
+$example_code .= "\n\nclass phpmailerAppException extends phpmailerException {}";
+$example_code .= "\n\ntry {";
+
+try {
+ if (isset($_POST["submit"]) && $_POST['submit'] == "Submit") {
+ $to = $_POST['To_Email'];
+ if (!PHPMailer::validateAddress($to)) {
+ throw new phpmailerAppException("Email address " . $to . " is invalid -- aborting!");
+ }
+
+ $example_code .= "\n\$to = '{$_POST['To_Email']}';";
+ $example_code .= "\nif(!PHPMailer::validateAddress(\$to)) {";
+ $example_code .= "\n throw new phpmailerAppException(\"Email address \" . " .
+ "\$to . \" is invalid -- aborting!\");";
+ $example_code .= "\n}";
+
+ switch ($_POST['test_type']) {
+ case 'smtp':
+ $mail->isSMTP(); // telling the class to use SMTP
+ $mail->SMTPDebug = (integer)$_POST['smtp_debug'];
+ $mail->Host = $_POST['smtp_server']; // SMTP server
+ $mail->Port = (integer)$_POST['smtp_port']; // set the SMTP port
+ if ($_POST['smtp_secure']) {
+ $mail->SMTPSecure = strtolower($_POST['smtp_secure']);
+ }
+ $mail->SMTPAuth = array_key_exists('smtp_authenticate', $_POST); // enable SMTP authentication?
+ if (array_key_exists('smtp_authenticate', $_POST)) {
+ $mail->Username = $_POST['authenticate_username']; // SMTP account username
+ $mail->Password = $_POST['authenticate_password']; // SMTP account password
+ }
+
+ $example_code .= "\n\$mail->isSMTP();";
+ $example_code .= "\n\$mail->SMTPDebug = " . $_POST['smtp_debug'] . ";";
+ $example_code .= "\n\$mail->Host = \"" . $_POST['smtp_server'] . "\";";
+ $example_code .= "\n\$mail->Port = \"" . $_POST['smtp_port'] . "\";";
+ $example_code .= "\n\$mail->SMTPSecure = \"" . strtolower($_POST['smtp_secure']) . "\";";
+ $example_code .= "\n\$mail->SMTPAuth = " . (array_key_exists(
+ 'smtp_authenticate',
+ $_POST
+ ) ? 'true' : 'false') . ";";
+ if (array_key_exists('smtp_authenticate', $_POST)) {
+ $example_code .= "\n\$mail->Username = \"" . $_POST['authenticate_username'] . "\";";
+ $example_code .= "\n\$mail->Password = \"" . $_POST['authenticate_password'] . "\";";
+ }
+ break;
+ case 'mail':
+ $mail->isMail(); // telling the class to use PHP's mail()
+ $example_code .= "\n\$mail->isMail();";
+ break;
+ case 'sendmail':
+ $mail->isSendmail(); // telling the class to use Sendmail
+ $example_code .= "\n\$mail->isSendmail();";
+ break;
+ case 'qmail':
+ $mail->isQmail(); // telling the class to use Qmail
+ $example_code .= "\n\$mail->isQmail();";
+ break;
+ default:
+ throw new phpmailerAppException('Invalid test_type provided');
+ }
+
+ try {
+ if ($_POST['From_Name'] != '') {
+ $mail->addReplyTo($_POST['From_Email'], $_POST['From_Name']);
+ $mail->From = $_POST['From_Email'];
+ $mail->FromName = $_POST['From_Name'];
+
+ $example_code .= "\n\$mail->addReplyTo(\"" .
+ $_POST['From_Email'] . "\", \"" . $_POST['From_Name'] . "\");";
+ $example_code .= "\n\$mail->From = \"" . $_POST['From_Email'] . "\";";
+ $example_code .= "\n\$mail->FromName = \"" . $_POST['From_Name'] . "\";";
+ } else {
+ $mail->addReplyTo($_POST['From_Email']);
+ $mail->From = $_POST['From_Email'];
+ $mail->FromName = $_POST['From_Email'];
+
+ $example_code .= "\n\$mail->addReplyTo(\"" . $_POST['From_Email'] . "\");";
+ $example_code .= "\n\$mail->From = \"" . $_POST['From_Email'] . "\";";
+ $example_code .= "\n\$mail->FromName = \"" . $_POST['From_Email'] . "\";";
+ }
+
+ if ($_POST['To_Name'] != '') {
+ $mail->addAddress($to, $_POST['To_Name']);
+ $example_code .= "\n\$mail->addAddress(\"$to\", \"" . $_POST['To_Name'] . "\");";
+ } else {
+ $mail->addAddress($to);
+ $example_code .= "\n\$mail->addAddress(\"$to\");";
+ }
+
+ if ($_POST['bcc_Email'] != '') {
+ $indiBCC = explode(" ", $_POST['bcc_Email']);
+ foreach ($indiBCC as $key => $value) {
+ $mail->addBCC($value);
+ $example_code .= "\n\$mail->addBCC(\"$value\");";
+ }
+ }
+
+ if ($_POST['cc_Email'] != '') {
+ $indiCC = explode(" ", $_POST['cc_Email']);
+ foreach ($indiCC as $key => $value) {
+ $mail->addCC($value);
+ $example_code .= "\n\$mail->addCC(\"$value\");";
+ }
+ }
+ } catch (phpmailerException $e) { //Catch all kinds of bad addressing
+ throw new phpmailerAppException($e->getMessage());
+ }
+ $mail->Subject = $_POST['Subject'] . ' (PHPMailer test using ' . strtoupper($_POST['test_type']) . ')';
+ $example_code .= "\n\$mail->Subject = \"" . $_POST['Subject'] .
+ '(PHPMailer test using ' . strtoupper($_POST['test_type']) . ')";';
+
+ if ($_POST['Message'] == '') {
+ $body = file_get_contents('contents.html');
+ } else {
+ $body = $_POST['Message'];
+ }
+
+ $example_code .= "\n\$body = <<<'EOT'\n" . htmlentities($body) . "\nEOT;";
+
+ $mail->WordWrap = 80; // set word wrap
+ $mail->msgHTML($body, dirname(__FILE__), true); //Create message bodies and embed images
+
+ $example_code .= "\n\$mail->WordWrap = 80;";
+ $example_code .= "\n\$mail->msgHTML(\$body, dirname(__FILE__), true); //Create message bodies and embed images";
+
+ $mail->addAttachment('images/phpmailer_mini.png', 'phpmailer_mini.png'); // optional name
+ $mail->addAttachment('images/phpmailer.png', 'phpmailer.png'); // optional name
+ $example_code .= "\n\$mail->addAttachment('images/phpmailer_mini.png'," .
+ "'phpmailer_mini.png'); // optional name";
+ $example_code .= "\n\$mail->addAttachment('images/phpmailer.png', 'phpmailer.png'); // optional name";
+
+ $example_code .= "\n\ntry {";
+ $example_code .= "\n \$mail->send();";
+ $example_code .= "\n \$results_messages[] = \"Message has been sent using " .
+ strtoupper($_POST['test_type']) . "\";";
+ $example_code .= "\n}";
+ $example_code .= "\ncatch (phpmailerException \$e) {";
+ $example_code .= "\n throw new phpmailerAppException('Unable to send to: ' . \$to. ': '.\$e->getMessage());";
+ $example_code .= "\n}";
+
+ try {
+ $mail->send();
+ $results_messages[] = "Message has been sent using " . strtoupper($_POST["test_type"]);
+ } catch (phpmailerException $e) {
+ throw new phpmailerAppException("Unable to send to: " . $to . ': ' . $e->getMessage());
+ }
+ }
+} catch (phpmailerAppException $e) {
+ $results_messages[] = $e->errorMessage();
+}
+$example_code .= "\n}";
+$example_code .= "\ncatch (phpmailerAppException \$e) {";
+$example_code .= "\n \$results_messages[] = \$e->errorMessage();";
+$example_code .= "\n}";
+$example_code .= "\n\nif (count(\$results_messages) > 0) {";
+$example_code .= "\n echo \"Run results
\\n\";";
+$example_code .= "\n echo \"\\n\";";
+$example_code .= "\nforeach (\$results_messages as \$result) {";
+$example_code .= "\n echo \"- \$result
\\n\";";
+$example_code .= "\n}";
+$example_code .= "\necho \"
\\n\";";
+$example_code .= "\n}";
+?>
+
+
+
+ PHPMailer Test Page
+
+
+
+
+
+
+
+
+";
+ echo exit("ERROR: Wrong PHP version. Must be PHP 5 or above.");
+}
+
+if (count($results_messages) > 0) {
+ echo 'Run results
';
+ echo '';
+ foreach ($results_messages as $result) {
+ echo "- $result
";
+ }
+ echo '
';
+}
+
+if (isset($_POST["submit"]) && $_POST["submit"] == "Submit") {
+ echo "
\n";
+ echo "
Script:\n";
+ echo "\n";
+ echo $example_code;
+ echo "\n
\n";
+ echo "\n
\n";
+}
+?>
+
+
+
\ No newline at end of file
diff --git a/lib/modules/PHPMailer-master/examples/contents.html b/lib/modules/PHPMailer-master/examples/contents.html
new file mode 100644
index 0000000..9257f6d
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/contents.html
@@ -0,0 +1,17 @@
+
+
+
+
+ PHPMailer Test
+
+
+
+
This is a test of PHPMailer.
+
+

+
+
This example uses HTML.
+
The PHPMailer image at the top has been embedded automatically.
+
+
+
diff --git a/lib/modules/PHPMailer-master/examples/exceptions.phps b/lib/modules/PHPMailer-master/examples/exceptions.phps
new file mode 100644
index 0000000..0e941e7
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/exceptions.phps
@@ -0,0 +1,35 @@
+setFrom('from@example.com', 'First Last');
+ //Set an alternative reply-to address
+ $mail->addReplyTo('replyto@example.com', 'First Last');
+ //Set who the message is to be sent to
+ $mail->addAddress('whoto@example.com', 'John Doe');
+ //Set the subject line
+ $mail->Subject = 'PHPMailer Exceptions test';
+ //Read an HTML message body from an external file, convert referenced images to embedded,
+ //and convert the HTML into a basic plain-text alternative body
+ $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+ //Replace the plain text body with one created manually
+ $mail->AltBody = 'This is a plain-text message body';
+ //Attach an image file
+ $mail->addAttachment('images/phpmailer_mini.png');
+ //send the message
+ //Note that we don't need check the response from this because it will throw an exception if it has trouble
+ $mail->send();
+ echo "Message sent!";
+} catch (phpmailerException $e) {
+ echo $e->errorMessage(); //Pretty error messages from PHPMailer
+} catch (Exception $e) {
+ echo $e->getMessage(); //Boring error messages from anything else!
+}
diff --git a/lib/modules/PHPMailer-master/examples/gmail.phps b/lib/modules/PHPMailer-master/examples/gmail.phps
new file mode 100644
index 0000000..b020f33
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/gmail.phps
@@ -0,0 +1,72 @@
+isSMTP();
+
+//Enable SMTP debugging
+// 0 = off (for production use)
+// 1 = client messages
+// 2 = client and server messages
+$mail->SMTPDebug = 2;
+
+//Ask for HTML-friendly debug output
+$mail->Debugoutput = 'html';
+
+//Set the hostname of the mail server
+$mail->Host = 'smtp.gmail.com';
+
+//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
+$mail->Port = 587;
+
+//Set the encryption system to use - ssl (deprecated) or tls
+$mail->SMTPSecure = 'tls';
+
+//Whether to use SMTP authentication
+$mail->SMTPAuth = true;
+
+//Username to use for SMTP authentication - use full email address for gmail
+$mail->Username = "username@gmail.com";
+
+//Password to use for SMTP authentication
+$mail->Password = "yourpassword";
+
+//Set who the message is to be sent from
+$mail->setFrom('from@example.com', 'First Last');
+
+//Set an alternative reply-to address
+$mail->addReplyTo('replyto@example.com', 'First Last');
+
+//Set who the message is to be sent to
+$mail->addAddress('whoto@example.com', 'John Doe');
+
+//Set the subject line
+$mail->Subject = 'PHPMailer GMail SMTP test';
+
+//Read an HTML message body from an external file, convert referenced images to embedded,
+//convert HTML into a basic plain-text alternative body
+$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+
+//Replace the plain text body with one created manually
+$mail->AltBody = 'This is a plain-text message body';
+
+//Attach an image file
+$mail->addAttachment('images/phpmailer_mini.png');
+
+//send the message, check for errors
+if (!$mail->send()) {
+ echo "Mailer Error: " . $mail->ErrorInfo;
+} else {
+ echo "Message sent!";
+}
diff --git a/lib/modules/PHPMailer-master/examples/images/phpmailer.png b/lib/modules/PHPMailer-master/examples/images/phpmailer.png
new file mode 100644
index 0000000..9bdd83c
Binary files /dev/null and b/lib/modules/PHPMailer-master/examples/images/phpmailer.png differ
diff --git a/lib/modules/PHPMailer-master/examples/images/phpmailer_mini.png b/lib/modules/PHPMailer-master/examples/images/phpmailer_mini.png
new file mode 100644
index 0000000..e6915f4
Binary files /dev/null and b/lib/modules/PHPMailer-master/examples/images/phpmailer_mini.png differ
diff --git a/lib/modules/PHPMailer-master/examples/index.html b/lib/modules/PHPMailer-master/examples/index.html
new file mode 100644
index 0000000..a6997ee
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+ PHPMailer Examples
+
+
+PHPMailer code examples
+This folder contains a collection of examples of using PHPMailer.
+About testing email sending
+When working on email sending code you'll find yourself worrying about what might happen if all these test emails got sent to your mailing list. The solution is to use a fake mail server, one that acts just like the real thing, but just doesn't actually send anything out. Some offer web interfaces, feedback, logging, the ability to return specific error codes, all things that are useful for testing error handling, authentication etc. Here's a selection of mail testing tools you might like to try:
+
+ - FakeEmail, a Python-based fake mail server with a web interface.
+ - smtp-sink, part of the Postfix mail server, so you probably already have this installed. This is used in the Travis-CI configuration to run PHPMailer's unit tests.
+ - FakeSMTP, a Java desktop app with the ability to show an SMTP log and save messages to a folder.
+ - smtp4dev, a dummy SMTP server for Windows.
+ - fakesendmail.sh, part of PHPMailer's test setup, this is a shell script that emulates sendmail for testing 'mail' or 'sendmail' methods in PHPMailer.
+ - msglint, not a mail server, the IETF's MIME structure analyser checks the formatting of your messages.
+
+
+
Security note
+
Before running these examples you'll need to rename them with '.php' extensions. They are supplied as '.phps' files which will usually be displayed with syntax highlighting by PHP instead of running them. This prevents potential security issues with running potential spam-gateway code if you happen to deploy these code examples on a live site - please don't do that! Similarly, don't leave your passwords in these files as they will be visible to the world!
+
+
+This script is a simple code generator - fill in the form and hit submit, and it will use when you entered to email you a message, and will also generate PHP code using your settings that you can copy and paste to use in your own apps. If you need to get going quickly, this is probably the best place to start.
+
+This script is a basic example which creates an email message from an external HTML file, creates a plain text body, sets various addresses, adds an attachment and sends the message. It uses PHP's built-in mail() function which is the simplest to use, but relies on the presence of a local mail server, something which is not usually available on Windows. If you find yourself in that situation, either install a local mail server, or use a remote one and send using SMTP instead.
+
+The same as the mail example, but shows how to use PHPMailer's optional exceptions for error handling.
+
+A simple example sending using SMTP with authentication.
+
+A simple example sending using SMTP without authentication.
+
+A simple example using sendmail. Sendmail is a program (usually found on Linux/BSD, OS X and other UNIX-alikes) that can be used to submit messages to a local mail server without a lengthy SMTP conversation. It's probably the fastest sending mechanism, but lacks some error reporting features. There are sendmail emulators for most popular mail servers including postfix, qmail, exim etc.
+
+Submitting email via Google's Gmail service is a popular use of PHPMailer. It's much the same as normal SMTP sending, just with some specific settings, namely using TLS encryption, authentication is enabled, and it connects to the SMTP submission port 587 on the smtp.gmail.com host. This example does all that.
+
+Before effective SMTP authentication mechanisms were available, it was common for ISPs to use POP-before-SMTP authentication. As it implies, you authenticate using the POP3 protocol (an older protocol now mostly replaced by the far superior IMAP), and then the SMTP server will allow send access from your IP address for a short while, usually 5-15 minutes. PHPMailer includes a POP3 protocol client, so it can carry out this sequence - it's just like a normal SMTP conversation (without authentication), but connects via POP first.
+
+This is a somewhat naïve example of sending similar emails to a list of different addresses. It sets up a PHPMailer instance using SMTP, then connects to a MySQL database to retrieve a list of recipients. The code loops over this list, sending email to each person using their info and marks them as sent in the database. It makes use of SMTP keepalive which saves reconnecting and re-authenticating between each message.
+
+
+This is an example showing how to use the SMTP class by itself (without PHPMailer) to check an SMTP connection.
+
+Most of these examples use the 'example.com' domain. This domain is reserved by IANA for illustrative purposes, as documented in RFC 2606. Don't use made-up domains like 'mydomain.com' or 'somedomain.com' in examples as someone, somewhere, probably owns them!
+
+
diff --git a/lib/modules/PHPMailer-master/examples/mail.phps b/lib/modules/PHPMailer-master/examples/mail.phps
new file mode 100644
index 0000000..8e129f4
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/mail.phps
@@ -0,0 +1,31 @@
+setFrom('from@example.com', 'First Last');
+//Set an alternative reply-to address
+$mail->addReplyTo('replyto@example.com', 'First Last');
+//Set who the message is to be sent to
+$mail->addAddress('whoto@example.com', 'John Doe');
+//Set the subject line
+$mail->Subject = 'PHPMailer mail() test';
+//Read an HTML message body from an external file, convert referenced images to embedded,
+//convert HTML into a basic plain-text alternative body
+$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+//Replace the plain text body with one created manually
+$mail->AltBody = 'This is a plain-text message body';
+//Attach an image file
+$mail->addAttachment('images/phpmailer_mini.png');
+
+//send the message, check for errors
+if (!$mail->send()) {
+ echo "Mailer Error: " . $mail->ErrorInfo;
+} else {
+ echo "Message sent!";
+}
diff --git a/lib/modules/PHPMailer-master/examples/mailing_list.phps b/lib/modules/PHPMailer-master/examples/mailing_list.phps
new file mode 100644
index 0000000..8644bb5
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/mailing_list.phps
@@ -0,0 +1,59 @@
+isSMTP();
+$mail->Host = 'smtp.example.com';
+$mail->SMTPAuth = true;
+$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent, reduces SMTP overhead
+$mail->Port = 25;
+$mail->Username = 'yourname@example.com';
+$mail->Password = 'yourpassword';
+$mail->setFrom('list@example.com', 'List manager');
+$mail->addReplyTo('list@example.com', 'List manager');
+
+$mail->Subject = "PHPMailer Simple database mailing list test";
+
+//Same body for all messages, so set this before the sending loop
+//If you generate a different body for each recipient (e.g. you're using a templating system),
+//set it inside the loop
+$mail->msgHTML($body);
+//msgHTML also sets AltBody, but if you want a custom one, set it afterwards
+$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
+
+//Connect to the database and select the recipients from your mailing list that have not yet been sent to
+//You'll need to alter this to match your database
+$mysql = mysqli_connect('localhost', 'username', 'password');
+mysqli_select_db($mysql, 'mydb');
+$result = mysqli_query($mysql, 'SELECT full_name, email, photo FROM mailinglist WHERE sent = false');
+
+foreach ($result as $row) { //This iterator syntax only works in PHP 5.4+
+ $mail->addAddress($row['email'], $row['full_name']);
+ if (!empty($row['photo'])) {
+ $mail->addStringAttachment($row['photo'], 'YourPhoto.jpg'); //Assumes the image data is stored in the DB
+ }
+
+ if (!$mail->send()) {
+ echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo . '
';
+ break; //Abandon sending
+ } else {
+ echo "Message sent to :" . $row['full_name'] . ' (' . str_replace("@", "@", $row['email']) . ')
';
+ //Mark it as sent in the DB
+ mysqli_query(
+ $mysql,
+ "UPDATE mailinglist SET sent = true WHERE email = '" .
+ mysqli_real_escape_string($mysql, $row['email']) . "'"
+ );
+ }
+ // Clear all addresses and attachments for next loop
+ $mail->clearAddresses();
+ $mail->clearAttachments();
+}
diff --git a/lib/modules/PHPMailer-master/examples/pop_before_smtp.phps b/lib/modules/PHPMailer-master/examples/pop_before_smtp.phps
new file mode 100644
index 0000000..164dfe8
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/pop_before_smtp.phps
@@ -0,0 +1,54 @@
+isSMTP();
+ //Enable SMTP debugging
+ // 0 = off (for production use)
+ // 1 = client messages
+ // 2 = client and server messages
+ $mail->SMTPDebug = 2;
+ //Ask for HTML-friendly debug output
+ $mail->Debugoutput = 'html';
+ //Set the hostname of the mail server
+ $mail->Host = "mail.example.com";
+ //Set the SMTP port number - likely to be 25, 465 or 587
+ $mail->Port = 25;
+ //Whether to use SMTP authentication
+ $mail->SMTPAuth = false;
+ //Set who the message is to be sent from
+ $mail->setFrom('from@example.com', 'First Last');
+ //Set an alternative reply-to address
+ $mail->addReplyTo('replyto@example.com', 'First Last');
+ //Set who the message is to be sent to
+ $mail->addAddress('whoto@example.com', 'John Doe');
+ //Set the subject line
+ $mail->Subject = 'PHPMailer POP-before-SMTP test';
+ //Read an HTML message body from an external file, convert referenced images to embedded,
+ //and convert the HTML into a basic plain-text alternative body
+ $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+ //Replace the plain text body with one created manually
+ $mail->AltBody = 'This is a plain-text message body';
+ //Attach an image file
+ $mail->addAttachment('images/phpmailer_mini.png');
+ //send the message
+ //Note that we don't need check the response from this because it will throw an exception if it has trouble
+ $mail->send();
+ echo "Message sent!";
+} catch (phpmailerException $e) {
+ echo $e->errorMessage(); //Pretty error messages from PHPMailer
+} catch (Exception $e) {
+ echo $e->getMessage(); //Boring error messages from anything else!
+}
diff --git a/lib/modules/PHPMailer-master/examples/scripts/XRegExp.js b/lib/modules/PHPMailer-master/examples/scripts/XRegExp.js
new file mode 100644
index 0000000..ebdb9c9
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/scripts/XRegExp.js
@@ -0,0 +1,664 @@
+// XRegExp 1.5.1
+// (c) 2007-2012 Steven Levithan
+// MIT License
+//
+// Provides an augmented, extensible, cross-browser implementation of regular expressions,
+// including support for additional syntax, flags, and methods
+
+var XRegExp;
+
+if (XRegExp) {
+ // Avoid running twice, since that would break references to native globals
+ throw Error("can't load XRegExp twice in the same frame");
+}
+
+// Run within an anonymous function to protect variables and avoid new globals
+(function (undefined) {
+
+ //---------------------------------
+ // Constructor
+ //---------------------------------
+
+ // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native
+ // regular expression in that additional syntax and flags are supported and cross-browser
+ // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and
+ // converts to type XRegExp
+ XRegExp = function (pattern, flags) {
+ var output = [],
+ currScope = XRegExp.OUTSIDE_CLASS,
+ pos = 0,
+ context, tokenResult, match, chr, regex;
+
+ if (XRegExp.isRegExp(pattern)) {
+ if (flags !== undefined)
+ throw TypeError("can't supply flags when constructing one RegExp from another");
+ return clone(pattern);
+ }
+ // Tokens become part of the regex construction process, so protect against infinite
+ // recursion when an XRegExp is constructed within a token handler or trigger
+ if (isInsideConstructor)
+ throw Error("can't call the XRegExp constructor within token definition functions");
+
+ flags = flags || "";
+ context = { // `this` object for custom tokens
+ hasNamedCapture: false,
+ captureNames: [],
+ hasFlag: function (flag) {return flags.indexOf(flag) > -1;},
+ setFlag: function (flag) {flags += flag;}
+ };
+
+ while (pos < pattern.length) {
+ // Check for custom tokens at the current position
+ tokenResult = runTokens(pattern, pos, currScope, context);
+
+ if (tokenResult) {
+ output.push(tokenResult.output);
+ pos += (tokenResult.match[0].length || 1);
+ } else {
+ // Check for native multicharacter metasequences (excluding character classes) at
+ // the current position
+ if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) {
+ output.push(match[0]);
+ pos += match[0].length;
+ } else {
+ chr = pattern.charAt(pos);
+ if (chr === "[")
+ currScope = XRegExp.INSIDE_CLASS;
+ else if (chr === "]")
+ currScope = XRegExp.OUTSIDE_CLASS;
+ // Advance position one character
+ output.push(chr);
+ pos++;
+ }
+ }
+ }
+
+ regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, ""));
+ regex._xregexp = {
+ source: pattern,
+ captureNames: context.hasNamedCapture ? context.captureNames : null
+ };
+ return regex;
+ };
+
+
+ //---------------------------------
+ // Public properties
+ //---------------------------------
+
+ XRegExp.version = "1.5.1";
+
+ // Token scope bitflags
+ XRegExp.INSIDE_CLASS = 1;
+ XRegExp.OUTSIDE_CLASS = 2;
+
+
+ //---------------------------------
+ // Private variables
+ //---------------------------------
+
+ var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g,
+ flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags
+ quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/,
+ isInsideConstructor = false,
+ tokens = [],
+ // Copy native globals for reference ("native" is an ES3 reserved keyword)
+ nativ = {
+ exec: RegExp.prototype.exec,
+ test: RegExp.prototype.test,
+ match: String.prototype.match,
+ replace: String.prototype.replace,
+ split: String.prototype.split
+ },
+ compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
+ compliantLastIndexIncrement = function () {
+ var x = /^/g;
+ nativ.test.call(x, "");
+ return !x.lastIndex;
+ }(),
+ hasNativeY = RegExp.prototype.sticky !== undefined,
+ nativeTokens = {};
+
+ // `nativeTokens` match native multicharacter metasequences only (including deprecated octals,
+ // excluding character classes)
+ nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/;
+ nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/;
+
+
+ //---------------------------------
+ // Public methods
+ //---------------------------------
+
+ // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by
+ // the XRegExp library and can be used to create XRegExp plugins. This function is intended for
+ // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can
+ // be disabled by `XRegExp.freezeTokens`
+ XRegExp.addToken = function (regex, handler, scope, trigger) {
+ tokens.push({
+ pattern: clone(regex, "g" + (hasNativeY ? "y" : "")),
+ handler: handler,
+ scope: scope || XRegExp.OUTSIDE_CLASS,
+ trigger: trigger || null
+ });
+ };
+
+ // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag
+ // combination has previously been cached, the cached copy is returned; otherwise the newly
+ // created regex is cached
+ XRegExp.cache = function (pattern, flags) {
+ var key = pattern + "/" + (flags || "");
+ return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags));
+ };
+
+ // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh
+ // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global`
+ // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve
+ // special properties required for named capture
+ XRegExp.copyAsGlobal = function (regex) {
+ return clone(regex, "g");
+ };
+
+ // Accepts a string; returns the string with regex metacharacters escaped. The returned string
+ // can safely be used at any point within a regex to match the provided literal string. Escaped
+ // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace
+ XRegExp.escape = function (str) {
+ return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ };
+
+ // Accepts a string to search, regex to search with, position to start the search within the
+ // string (default: 0), and an optional Boolean indicating whether matches must start at-or-
+ // after the position or at the specified position only. This function ignores the `lastIndex`
+ // of the provided regex in its own handling, but updates the property for compatibility
+ XRegExp.execAt = function (str, regex, pos, anchored) {
+ var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")),
+ match;
+ r2.lastIndex = pos = pos || 0;
+ match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.)
+ if (anchored && match && match.index !== pos)
+ match = null;
+ if (regex.global)
+ regex.lastIndex = match ? r2.lastIndex : 0;
+ return match;
+ };
+
+ // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing
+ // syntax and flag changes. Should be run after XRegExp and any plugins are loaded
+ XRegExp.freezeTokens = function () {
+ XRegExp.addToken = function () {
+ throw Error("can't run addToken after freezeTokens");
+ };
+ };
+
+ // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object.
+ // Note that this is also `true` for regex literals and regexes created by the `XRegExp`
+ // constructor. This works correctly for variables created in another frame, when `instanceof`
+ // and `constructor` checks would fail to work as intended
+ XRegExp.isRegExp = function (o) {
+ return Object.prototype.toString.call(o) === "[object RegExp]";
+ };
+
+ // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to
+ // iterate over regex matches compared to the traditional approaches of subverting
+ // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop
+ XRegExp.iterate = function (str, regex, callback, context) {
+ var r2 = clone(regex, "g"),
+ i = -1, match;
+ while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.)
+ if (regex.global)
+ regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback`
+ callback.call(context, match, ++i, str, regex);
+ if (r2.lastIndex === match.index)
+ r2.lastIndex++;
+ }
+ if (regex.global)
+ regex.lastIndex = 0;
+ };
+
+ // Accepts a string and an array of regexes; returns the result of using each successive regex
+ // to search within the matches of the previous regex. The array of regexes can also contain
+ // objects with `regex` and `backref` properties, in which case the named or numbered back-
+ // references specified are passed forward to the next regex or returned. E.g.:
+ // var xregexpImgFileNames = XRegExp.matchChain(html, [
+ // {regex: /
]+)>/i, backref: 1}, //
tag attributes
+ // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values
+ // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths
+ // /[^\/]+$/ // filenames (strip directory paths)
+ // ]);
+ XRegExp.matchChain = function (str, chain) {
+ return function recurseChain (values, level) {
+ var item = chain[level].regex ? chain[level] : {regex: chain[level]},
+ regex = clone(item.regex, "g"),
+ matches = [], i;
+ for (i = 0; i < values.length; i++) {
+ XRegExp.iterate(values[i], regex, function (match) {
+ matches.push(item.backref ? (match[item.backref] || "") : match[0]);
+ });
+ }
+ return ((level === chain.length - 1) || !matches.length) ?
+ matches : recurseChain(matches, level + 1);
+ }([str], 0);
+ };
+
+
+ //---------------------------------
+ // New RegExp prototype methods
+ //---------------------------------
+
+ // Accepts a context object and arguments array; returns the result of calling `exec` with the
+ // first value in the arguments array. the context is ignored but is accepted for congruity
+ // with `Function.prototype.apply`
+ RegExp.prototype.apply = function (context, args) {
+ return this.exec(args[0]);
+ };
+
+ // Accepts a context object and string; returns the result of calling `exec` with the provided
+ // string. the context is ignored but is accepted for congruity with `Function.prototype.call`
+ RegExp.prototype.call = function (context, str) {
+ return this.exec(str);
+ };
+
+
+ //---------------------------------
+ // Overriden native methods
+ //---------------------------------
+
+ // Adds named capture support (with backreferences returned as `result.name`), and fixes two
+ // cross-browser issues per ES3:
+ // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
+ // rather than the empty string.
+ // - `lastIndex` should not be incremented after zero-length matches.
+ RegExp.prototype.exec = function (str) {
+ var match, name, r2, origLastIndex;
+ if (!this.global)
+ origLastIndex = this.lastIndex;
+ match = nativ.exec.apply(this, arguments);
+ if (match) {
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for
+ // nonparticipating capturing groups
+ if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
+ r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", ""));
+ // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
+ // matching due to characters outside the match
+ nativ.replace.call((str + "").slice(match.index), r2, function () {
+ for (var i = 1; i < arguments.length - 2; i++) {
+ if (arguments[i] === undefined)
+ match[i] = undefined;
+ }
+ });
+ }
+ // Attach named capture properties
+ if (this._xregexp && this._xregexp.captureNames) {
+ for (var i = 1; i < match.length; i++) {
+ name = this._xregexp.captureNames[i - 1];
+ if (name)
+ match[name] = match[i];
+ }
+ }
+ // Fix browsers that increment `lastIndex` after zero-length matches
+ if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
+ this.lastIndex--;
+ }
+ if (!this.global)
+ this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
+ return match;
+ };
+
+ // Fix browser bugs in native method
+ RegExp.prototype.test = function (str) {
+ // Use the native `exec` to skip some processing overhead, even though the altered
+ // `exec` would take care of the `lastIndex` fixes
+ var match, origLastIndex;
+ if (!this.global)
+ origLastIndex = this.lastIndex;
+ match = nativ.exec.call(this, str);
+ // Fix browsers that increment `lastIndex` after zero-length matches
+ if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
+ this.lastIndex--;
+ if (!this.global)
+ this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
+ return !!match;
+ };
+
+ // Adds named capture support and fixes browser bugs in native method
+ String.prototype.match = function (regex) {
+ if (!XRegExp.isRegExp(regex))
+ regex = RegExp(regex); // Native `RegExp`
+ if (regex.global) {
+ var result = nativ.match.apply(this, arguments);
+ regex.lastIndex = 0; // Fix IE bug
+ return result;
+ }
+ return regex.exec(this); // Run the altered `exec`
+ };
+
+ // Adds support for `${n}` tokens for named and numbered backreferences in replacement text,
+ // and provides named backreferences to replacement functions as `arguments[0].name`. Also
+ // fixes cross-browser differences in replacement text syntax when performing a replacement
+ // using a nonregex search value, and the value of replacement regexes' `lastIndex` property
+ // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary
+ // third (`flags`) parameter
+ String.prototype.replace = function (search, replacement) {
+ var isRegex = XRegExp.isRegExp(search),
+ captureNames, result, str, origLastIndex;
+
+ // There are too many combinations of search/replacement types/values and browser bugs that
+ // preclude passing to native `replace`, so don't try
+ //if (...)
+ // return nativ.replace.apply(this, arguments);
+
+ if (isRegex) {
+ if (search._xregexp)
+ captureNames = search._xregexp.captureNames; // Array or `null`
+ if (!search.global)
+ origLastIndex = search.lastIndex;
+ } else {
+ search = search + ""; // Type conversion
+ }
+
+ if (Object.prototype.toString.call(replacement) === "[object Function]") {
+ result = nativ.replace.call(this + "", search, function () {
+ if (captureNames) {
+ // Change the `arguments[0]` string primitive to a String object which can store properties
+ arguments[0] = new String(arguments[0]);
+ // Store named backreferences on `arguments[0]`
+ for (var i = 0; i < captureNames.length; i++) {
+ if (captureNames[i])
+ arguments[0][captureNames[i]] = arguments[i + 1];
+ }
+ }
+ // Update `lastIndex` before calling `replacement` (fix browsers)
+ if (isRegex && search.global)
+ search.lastIndex = arguments[arguments.length - 2] + arguments[0].length;
+ return replacement.apply(null, arguments);
+ });
+ } else {
+ str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`)
+ result = nativ.replace.call(str, search, function () {
+ var args = arguments; // Keep this function's `arguments` available through closure
+ return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) {
+ // Numbered backreference (without delimiters) or special variable
+ if ($1) {
+ switch ($1) {
+ case "$": return "$";
+ case "&": return args[0];
+ case "`": return args[args.length - 1].slice(0, args[args.length - 2]);
+ case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length);
+ // Numbered backreference
+ default:
+ // What does "$10" mean?
+ // - Backreference 10, if 10 or more capturing groups exist
+ // - Backreference 1 followed by "0", if 1-9 capturing groups exist
+ // - Otherwise, it's the string "$10"
+ // Also note:
+ // - Backreferences cannot be more than two digits (enforced by `replacementToken`)
+ // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01"
+ // - There is no "$0" token ("$&" is the entire match)
+ var literalNumbers = "";
+ $1 = +$1; // Type conversion; drop leading zero
+ if (!$1) // `$1` was "0" or "00"
+ return $0;
+ while ($1 > args.length - 3) {
+ literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers;
+ $1 = Math.floor($1 / 10); // Drop the last digit
+ }
+ return ($1 ? args[$1] || "" : "$") + literalNumbers;
+ }
+ // Named backreference or delimited numbered backreference
+ } else {
+ // What does "${n}" mean?
+ // - Backreference to numbered capture n. Two differences from "$n":
+ // - n can be more than two digits
+ // - Backreference 0 is allowed, and is the entire match
+ // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture
+ // - Otherwise, it's the string "${n}"
+ var n = +$2; // Type conversion; drop leading zeros
+ if (n <= args.length - 3)
+ return args[n];
+ n = captureNames ? indexOf(captureNames, $2) : -1;
+ return n > -1 ? args[n + 1] : $0;
+ }
+ });
+ });
+ }
+
+ if (isRegex) {
+ if (search.global)
+ search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows)
+ else
+ search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
+ }
+
+ return result;
+ };
+
+ // A consistent cross-browser, ES3 compliant `split`
+ String.prototype.split = function (s /* separator */, limit) {
+ // If separator `s` is not a regex, use the native `split`
+ if (!XRegExp.isRegExp(s))
+ return nativ.split.apply(this, arguments);
+
+ var str = this + "", // Type conversion
+ output = [],
+ lastLastIndex = 0,
+ match, lastLength;
+
+ // Behavior for `limit`: if it's...
+ // - `undefined`: No limit
+ // - `NaN` or zero: Return an empty array
+ // - A positive number: Use `Math.floor(limit)`
+ // - A negative number: No limit
+ // - Other: Type-convert, then use the above rules
+ if (limit === undefined || +limit < 0) {
+ limit = Infinity;
+ } else {
+ limit = Math.floor(+limit);
+ if (!limit)
+ return [];
+ }
+
+ // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero
+ // and restore it to its original value when we're done using the regex
+ s = XRegExp.copyAsGlobal(s);
+
+ while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.)
+ if (s.lastIndex > lastLastIndex) {
+ output.push(str.slice(lastLastIndex, match.index));
+
+ if (match.length > 1 && match.index < str.length)
+ Array.prototype.push.apply(output, match.slice(1));
+
+ lastLength = match[0].length;
+ lastLastIndex = s.lastIndex;
+
+ if (output.length >= limit)
+ break;
+ }
+
+ if (s.lastIndex === match.index)
+ s.lastIndex++;
+ }
+
+ if (lastLastIndex === str.length) {
+ if (!nativ.test.call(s, "") || lastLength)
+ output.push("");
+ } else {
+ output.push(str.slice(lastLastIndex));
+ }
+
+ return output.length > limit ? output.slice(0, limit) : output;
+ };
+
+
+ //---------------------------------
+ // Private helper functions
+ //---------------------------------
+
+ // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp`
+ // instance with a fresh `lastIndex` (set to zero), preserving properties required for named
+ // capture. Also allows adding new flags in the process of copying the regex
+ function clone (regex, additionalFlags) {
+ if (!XRegExp.isRegExp(regex))
+ throw TypeError("type RegExp expected");
+ var x = regex._xregexp;
+ regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || ""));
+ if (x) {
+ regex._xregexp = {
+ source: x.source,
+ captureNames: x.captureNames ? x.captureNames.slice(0) : null
+ };
+ }
+ return regex;
+ }
+
+ function getNativeFlags (regex) {
+ return (regex.global ? "g" : "") +
+ (regex.ignoreCase ? "i" : "") +
+ (regex.multiline ? "m" : "") +
+ (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
+ (regex.sticky ? "y" : "");
+ }
+
+ function runTokens (pattern, index, scope, context) {
+ var i = tokens.length,
+ result, match, t;
+ // Protect against constructing XRegExps within token handler and trigger functions
+ isInsideConstructor = true;
+ // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws
+ try {
+ while (i--) { // Run in reverse order
+ t = tokens[i];
+ if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) {
+ t.pattern.lastIndex = index;
+ match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc.
+ if (match && match.index === index) {
+ result = {
+ output: t.handler.call(context, match, scope),
+ match: match
+ };
+ break;
+ }
+ }
+ }
+ } catch (err) {
+ throw err;
+ } finally {
+ isInsideConstructor = false;
+ }
+ return result;
+ }
+
+ function indexOf (array, item, from) {
+ if (Array.prototype.indexOf) // Use the native array method if available
+ return array.indexOf(item, from);
+ for (var i = from || 0; i < array.length; i++) {
+ if (array[i] === item)
+ return i;
+ }
+ return -1;
+ }
+
+
+ //---------------------------------
+ // Built-in tokens
+ //---------------------------------
+
+ // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the
+ // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS`
+
+ // Comment pattern: (?# )
+ XRegExp.addToken(
+ /\(\?#[^)]*\)/,
+ function (match) {
+ // Keep tokens separated unless the following token is a quantifier
+ return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
+ }
+ );
+
+ // Capturing group (match the opening parenthesis only).
+ // Required for support of named capturing groups
+ XRegExp.addToken(
+ /\((?!\?)/,
+ function () {
+ this.captureNames.push(null);
+ return "(";
+ }
+ );
+
+ // Named capturing group (match the opening delimiter only): (?
+ XRegExp.addToken(
+ /\(\?<([$\w]+)>/,
+ function (match) {
+ this.captureNames.push(match[1]);
+ this.hasNamedCapture = true;
+ return "(";
+ }
+ );
+
+ // Named backreference: \k
+ XRegExp.addToken(
+ /\\k<([\w$]+)>/,
+ function (match) {
+ var index = indexOf(this.captureNames, match[1]);
+ // Keep backreferences separate from subsequent literal numbers. Preserve back-
+ // references to named groups that are undefined at this point as literal strings
+ return index > -1 ?
+ "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") :
+ match[0];
+ }
+ );
+
+ // Empty character class: [] or [^]
+ XRegExp.addToken(
+ /\[\^?]/,
+ function (match) {
+ // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S].
+ // (?!) should work like \b\B, but is unreliable in Firefox
+ return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]";
+ }
+ );
+
+ // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx)
+ // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc.
+ XRegExp.addToken(
+ /^\(\?([imsx]+)\)/,
+ function (match) {
+ this.setFlag(match[1]);
+ return "";
+ }
+ );
+
+ // Whitespace and comments, in free-spacing (aka extended) mode only
+ XRegExp.addToken(
+ /(?:\s+|#.*)+/,
+ function (match) {
+ // Keep tokens separated unless the following token is a quantifier
+ return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
+ },
+ XRegExp.OUTSIDE_CLASS,
+ function () {return this.hasFlag("x");}
+ );
+
+ // Dot, in dotall (aka singleline) mode only
+ XRegExp.addToken(
+ /\./,
+ function () {return "[\\s\\S]";},
+ XRegExp.OUTSIDE_CLASS,
+ function () {return this.hasFlag("s");}
+ );
+
+
+ //---------------------------------
+ // Backward compatibility
+ //---------------------------------
+
+ // Uncomment the following block for compatibility with XRegExp 1.0-1.2:
+ /*
+ XRegExp.matchWithinChain = XRegExp.matchChain;
+ RegExp.prototype.addFlags = function (s) {return clone(this, s);};
+ RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;};
+ RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);};
+ RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;};
+ */
+
+})();
+
diff --git a/lib/modules/PHPMailer-master/examples/scripts/shAutoloader.js b/lib/modules/PHPMailer-master/examples/scripts/shAutoloader.js
new file mode 100644
index 0000000..9f5942e
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/scripts/shAutoloader.js
@@ -0,0 +1,122 @@
+(function() {
+
+var sh = SyntaxHighlighter;
+
+/**
+ * Provides functionality to dynamically load only the brushes that a needed to render the current page.
+ *
+ * There are two syntaxes that autoload understands. For example:
+ *
+ * SyntaxHighlighter.autoloader(
+ * [ 'applescript', 'Scripts/shBrushAppleScript.js' ],
+ * [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ]
+ * );
+ *
+ * or a more easily comprehendable one:
+ *
+ * SyntaxHighlighter.autoloader(
+ * 'applescript Scripts/shBrushAppleScript.js',
+ * 'actionscript3 as3 Scripts/shBrushAS3.js'
+ * );
+ */
+sh.autoloader = function()
+{
+ var list = arguments,
+ elements = sh.findElements(),
+ brushes = {},
+ scripts = {},
+ all = SyntaxHighlighter.all,
+ allCalled = false,
+ allParams = null,
+ i
+ ;
+
+ SyntaxHighlighter.all = function(params)
+ {
+ allParams = params;
+ allCalled = true;
+ };
+
+ function addBrush(aliases, url)
+ {
+ for (var i = 0; i < aliases.length; i++)
+ brushes[aliases[i]] = url;
+ };
+
+ function getAliases(item)
+ {
+ return item.pop
+ ? item
+ : item.split(/\s+/)
+ ;
+ }
+
+ // create table of aliases and script urls
+ for (i = 0; i < list.length; i++)
+ {
+ var aliases = getAliases(list[i]),
+ url = aliases.pop()
+ ;
+
+ addBrush(aliases, url);
+ }
+
+ // dynamically add tags to the document body
+ for (i = 0; i < elements.length; i++)
+ {
+ var url = brushes[elements[i].params.brush];
+
+ if(url && scripts[url] === undefined)
+ {
+ if(elements[i].params['html-script'] === 'true')
+ {
+ if(scripts[brushes['xml']] === undefined) {
+ loadScript(brushes['xml']);
+ scripts[url] = false;
+ }
+ }
+
+ scripts[url] = false;
+ loadScript(url);
+ }
+ }
+
+ function loadScript(url)
+ {
+ var script = document.createElement('script'),
+ done = false
+ ;
+
+ script.src = url;
+ script.type = 'text/javascript';
+ script.language = 'javascript';
+ script.onload = script.onreadystatechange = function()
+ {
+ if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'))
+ {
+ done = true;
+ scripts[url] = true;
+ checkAll();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ script.parentNode.removeChild(script);
+ }
+ };
+
+ // sync way of adding script tags to the page
+ document.body.appendChild(script);
+ };
+
+ function checkAll()
+ {
+ for(var url in scripts)
+ if (scripts[url] == false)
+ return;
+
+ if (allCalled)
+ SyntaxHighlighter.highlight(allParams);
+ };
+};
+
+})();
diff --git a/lib/modules/PHPMailer-master/examples/scripts/shBrushPhp.js b/lib/modules/PHPMailer-master/examples/scripts/shBrushPhp.js
new file mode 100644
index 0000000..33aca6f
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/scripts/shBrushPhp.js
@@ -0,0 +1,72 @@
+;(function()
+{
+ // CommonJS
+ SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+ function Brush()
+ {
+ var funcs = 'abs acos acosh addcslashes addslashes ' +
+ 'array_change_key_case array_chunk array_combine array_count_values array_diff '+
+ 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
+ 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
+ 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
+ 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
+ 'array_push array_rand array_reduce array_reverse array_search array_shift '+
+ 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
+ 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
+ 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
+ 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
+ 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
+ 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
+ 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
+ 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
+ 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
+ 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
+ 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
+ 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
+ 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
+ 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
+ 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
+ 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
+ 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
+ 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
+ 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
+ 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
+ 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
+ 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+
+ 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
+ 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
+ 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
+ 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
+ 'strtoupper strtr strval substr substr_compare';
+
+ var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' +
+ 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' +
+ 'function global goto if implements include include_once interface instanceof insteadof namespace new ' +
+ 'old_function or private protected public return require require_once static switch ' +
+ 'trait throw try use var while xor ';
+
+ var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\$\w+/g, css: 'variable' }, // variables
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions
+ { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['php'];
+
+ SyntaxHighlighter.brushes.Php = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
diff --git a/lib/modules/PHPMailer-master/examples/scripts/shCore.js b/lib/modules/PHPMailer-master/examples/scripts/shCore.js
new file mode 100644
index 0000000..294b91c
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/scripts/shCore.js
@@ -0,0 +1 @@
+var XRegExp;if(XRegExp)throw Error("can't load XRegExp twice in the same frame");(function(e){function c(e,t){if(!XRegExp.isRegExp(e))throw TypeError("type RegExp expected");var n=e._xregexp;return e=XRegExp(e.source,h(e)+(t||"")),n&&(e._xregexp={source:n.source,captureNames:n.captureNames?n.captureNames.slice(0):null}),e}function h(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function p(e,t,n,r){var o=s.length,u,a,f;i=!0;try{while(o--){f=s[o];if(n&f.scope&&(!f.trigger||f.trigger.call(r))){f.pattern.lastIndex=t,a=f.pattern.exec(e);if(a&&a.index===t){u={output:f.handler.call(r,a,n),match:a};break}}}}catch(l){throw l}finally{i=!1}return u}function d(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r-1},setFlag:function(e){r+=e}};while(a1&&d(n,"")>-1&&(i=RegExp(this.source,o.replace.call(h(this),"g","")),o.replace.call((t+"").slice(n.index),i,function(){for(var t=1;tn.index&&this.lastIndex--}return this.global||(this.lastIndex=s),n},RegExp.prototype.test=function(e){var t,n;return this.global||(n=this.lastIndex),t=o.exec.call(this,e),t&&!a&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,this.global||(this.lastIndex=n),!!t},String.prototype.match=function(e){XRegExp.isRegExp(e)||(e=RegExp(e));if(e.global){var t=o.match.apply(this,arguments);return e.lastIndex=0,t}return e.exec(this)},String.prototype.replace=function(e,n){var r=XRegExp.isRegExp(e),i,s,u,a;return r?(e._xregexp&&(i=e._xregexp.captureNames),e.global||(a=e.lastIndex)):e+="",Object.prototype.toString.call(n)==="[object Function]"?s=o.replace.call(this+"",e,function(){if(i){arguments[0]=new String(arguments[0]);for(var t=0;t-1?e[o+1]:t)}switch(n){case"$":return"$";case"&":return e[0];case"`":return e[e.length-1].slice(0,e[e.length-2]);case"'":return e[e.length-1].slice(e[e.length-2]+e[0].length);default:var s="";n=+n;if(!n)return t;while(n>e.length-3)s=String.prototype.slice.call(n,-1)+s,n=Math.floor(n/10);return(n?e[n]||"":"$")+s}})})),r&&(e.global?e.lastIndex=0:e.lastIndex=a),s},String.prototype.split=function(t,n){if(!XRegExp.isRegExp(t))return o.split.apply(this,arguments);var r=this+"",i=[],s=0,u,a;if(n===e||+n<0)n=Infinity;else{n=Math.floor(+n);if(!n)return[]}t=XRegExp.copyAsGlobal(t);while(u=t.exec(r)){if(t.lastIndex>s){i.push(r.slice(s,u.index)),u.length>1&&u.index=n)break}t.lastIndex===u.index&&t.lastIndex++}return s===r.length?(!o.test.call(t,"")||a)&&i.push(""):i.push(r.slice(s)),i.length>n?i.slice(0,n):i},XRegExp.addToken(/\(\?#[^)]*\)/,function(e){return o.test.call(r,e.input.slice(e.index+e[0].length))?"":"(?:)"}),XRegExp.addToken(/\((?!\?)/,function(){return this.captureNames.push(null),"("}),XRegExp.addToken(/\(\?<([$\w]+)>/,function(e){return this.captureNames.push(e[1]),this.hasNamedCapture=!0,"("}),XRegExp.addToken(/\\k<([\w$]+)>/,function(e){var t=d(this.captureNames,e[1]);return t>-1?"\\"+(t+1)+(isNaN(e.input.charAt(e.index+e[0].length))?"":"(?:)"):e[0]}),XRegExp.addToken(/\[\^?]/,function(e){return e[0]==="[]"?"\\b\\B":"[\\s\\S]"}),XRegExp.addToken(/^\(\?([imsx]+)\)/,function(e){return this.setFlag(e[1]),""}),XRegExp.addToken(/(?:\s+|#.*)+/,function(e){return o.test.call(r,e.input.slice(e.index+e[0].length))?"":"(?:)"},XRegExp.OUTSIDE_CLASS,function(){return this.hasFlag("x")}),XRegExp.addToken(/\./,function(){return"[\\s\\S]"},XRegExp.OUTSIDE_CLASS,function(){return this.hasFlag("s")})})();if(typeof SyntaxHighlighter=="undefined")var SyntaxHighlighter=function(){function t(e,t){return e.className.indexOf(t)!=-1}function n(e,n){t(e,n)||(e.className+=" "+n)}function r(e,t){e.className=e.className.replace(t,"")}function i(e){var t=[];for(var n=0;n(.*?))\\]$"),i=new XRegExp("(?[\\w-]+)\\s*:\\s*(?[\\w-%#]+|\\[.*?\\]|\".*?\"|'.*?')\\s*;?","g");while((t=i.exec(e))!=null){var s=t.value.replace(/^['"]|['"]$/g,"");if(s!=null&&r.test(s)){var o=r.exec(s);s=o.values.length>0?o.values.split(/\s*,\s*/):[]}n[t.name]=s}return n}function x(t,n){return t==null||t.length==0||t=="\n"?t:(t=t.replace(/'+e+""})),t)}function T(e,t){var n=e.toString();while(n.length|<br\s*\/?>/gi;return e.config.bloggerMode==1&&(t=t.replace(n,"\n")),e.config.stripBrs==1&&(t=t.replace(n,"")),t}function L(e){return e.replace(/^\s+|\s+$/g,"")}function A(e){var t=s(k(e)),n=new Array,r=/^\s*/,i=1e3;for(var o=0;o0;o++){var u=t[o];if(L(u).length==0)continue;var a=r.exec(u);if(a==null)return e;i=Math.min(a[0].length,i)}if(i>0)for(var o=0;ot.index?1:e.lengtht.length?1:0}function M(t,n){function r(e,t){return e[0]}var i=0,s=null,o=[],u=n.func?n.func:r;while((s=n.regex.exec(t))!=null){var a=u(s,n);typeof a=="string"&&(a=[new e.Match(a,s.index,n.css)]),o=o.concat(a)}return o}function _(t){var n=/(.*)((>|<).*)/;return t.replace(e.regexLib.url,function(e){var t="",r=null;if(r=n.exec(e))e=r[1],t=r[2];return''+e+""+t})}function D(){var e=document.getElementsByTagName("script"),t=[];for(var n=0;n",r=L(e),i=!1,s=t.length,o=n.length;r.indexOf(t)==0&&(r=r.substring(s),i=!0);var u=r.length;return r.indexOf(n)==u-o&&(r=r.substring(0,u-o),i=!0),i?r:e}function H(e){var t=e.target,i=c(t,".syntaxhighlighter"),s=c(t,".container"),o=document.createElement("textarea"),a;if(!s||!i||l(s,"textarea"))return;a=u(i.id),n(i,"source");var f=s.childNodes,h=[];for(var p=0;p)/gm,url:/\w+:\/\/[\w-.\/?%&=:@;#]*/g,phpScriptTags:{left:/(<|<)\?(?:=|php)?/g,right:/\?(>|>)/g,eof:!0},aspScriptTags:{left:/(<|<)%=?/g,right:/%(>|>)/g},scriptScriptTags:{left:/(<|<)\s*script.*?(>|>)/gi,right:/(<|<)\/\s*script\s*(>|>)/gi}},toolbar:{getHtml:function(t){function s(t,n){return e.toolbar.getButtonHtml(t,n,e.config.strings[n])}var n='"},getLineNumbersHtml:function(t,n){var r="",i=s(t).length,o=parseInt(this.getParam("first-line")),u=this.getParam("pad-line-numbers");u==1?u=(o+i-1).toString().length:isNaN(u)==1&&(u=0);for(var a=0;a'+c+"":"")+f)}return t},getTitleHtml:function(e){return e?""+e+"":""},getMatchesHtml:function(e,t){function s(e){var t=e?e.brushName||i:i;return t?t+" ":""}var n=0,r="",i=this.getParam("brush","");for(var o=0;o'+(this.getParam("toolbar")?e.toolbar.getHtml(this):"")+''+this.getTitleHtml(this.getParam("title"))+""+""+(gutter?'| '+this.getLineNumbersHtml(t)+" | ":"")+''+' '+n+" "+" | "+"
"+""+"
"+"",n},getDiv:function(t){t===null&&(t=""),this.code=t;var n=this.create("div");return n.innerHTML=this.getHtml(t),this.getParam("toolbar")&&g(l(n,".toolbar"),"click",e.toolbar.handler),this.getParam("quick-code")&&g(l(n,".code"),"dblclick",H),n},init:function(t){this.id=p(),f(this),this.params=d(e.defaults,t||{}),this.getParam("light")==1&&(this.params.toolbar=this.params.gutter=!1)},getKeywords:function(e){return e=e.replace(/^\s+|\s+$/g,"").replace(/\s+/g,"|"),"\\b(?:"+e+")\\b"},forHtmlScript:function(e){var t={end:e.right.source};e.eof&&(t.end="(?:(?:"+t.end+")|$)"),this.htmlScript={left:{regex:e.left,css:"script"},right:{regex:e.right,css:"script"},code:new XRegExp("(?"+e.left.source+")"+"(?.*?)"+"(?"+t.end+")","sgi")}}},e}();typeof exports!="undefined"?exports.SyntaxHighlighter=SyntaxHighlighter:null
\ No newline at end of file
diff --git a/lib/modules/PHPMailer-master/examples/scripts/shLegacy.js b/lib/modules/PHPMailer-master/examples/scripts/shLegacy.js
new file mode 100644
index 0000000..35c582c
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/scripts/shLegacy.js
@@ -0,0 +1,141 @@
+var dp = {
+ SyntaxHighlighter : {}
+};
+
+dp.SyntaxHighlighter = {
+ parseParams: function(
+ input,
+ showGutter,
+ showControls,
+ collapseAll,
+ firstLine,
+ showColumns
+ )
+ {
+ function getValue(list, name)
+ {
+ var regex = new XRegExp('^' + name + '\\[(?\\w+)\\]$', 'gi'),
+ match = null
+ ;
+
+ for (var i = 0; i < list.length; i++)
+ if ((match = regex.exec(list[i])) != null)
+ return match.value;
+
+ return null;
+ };
+
+ function defaultValue(value, def)
+ {
+ return value != null ? value : def;
+ };
+
+ function asString(value)
+ {
+ return value != null ? value.toString() : null;
+ };
+
+ var parts = input.split(':'),
+ brushName = parts[0],
+ options = {},
+ straight = { 'true' : true }
+ reverse = { 'true' : false },
+ result = null,
+ defaults = SyntaxHighlighter.defaults
+ ;
+
+ for (var i in parts)
+ options[parts[i]] = 'true';
+
+ showGutter = asString(defaultValue(showGutter, defaults.gutter));
+ showControls = asString(defaultValue(showControls, defaults.toolbar));
+ collapseAll = asString(defaultValue(collapseAll, defaults.collapse));
+ showColumns = asString(defaultValue(showColumns, defaults.ruler));
+ firstLine = asString(defaultValue(firstLine, defaults['first-line']));
+
+ return {
+ brush : brushName,
+ gutter : defaultValue(reverse[options.nogutter], showGutter),
+ toolbar : defaultValue(reverse[options.nocontrols], showControls),
+ collapse : defaultValue(straight[options.collapse], collapseAll),
+ // ruler : defaultValue(straight[options.showcolumns], showColumns),
+ 'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine)
+ };
+ },
+
+ HighlightAll: function(
+ name,
+ showGutter /* optional */,
+ showControls /* optional */,
+ collapseAll /* optional */,
+ firstLine /* optional */,
+ showColumns /* optional */
+ )
+ {
+ function findValue()
+ {
+ var a = arguments;
+
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] === null)
+ continue;
+
+ if (typeof(a[i]) == 'string' && a[i] != '')
+ return a[i] + '';
+
+ if (typeof(a[i]) == 'object' && a[i].value != '')
+ return a[i].value + '';
+ }
+
+ return null;
+ };
+
+ function findTagsByName(list, name, tagName)
+ {
+ var tags = document.getElementsByTagName(tagName);
+
+ for (var i = 0; i < tags.length; i++)
+ if (tags[i].getAttribute('name') == name)
+ list.push(tags[i]);
+ }
+
+ var elements = [],
+ highlighter = null,
+ registered = {},
+ propertyName = 'innerHTML'
+ ;
+
+ // for some reason IE doesn't find by name, however it does see them just fine by tag name...
+ findTagsByName(elements, name, 'pre');
+ findTagsByName(elements, name, 'textarea');
+
+ if (elements.length === 0)
+ return;
+
+ for (var i = 0; i < elements.length; i++)
+ {
+ var element = elements[i],
+ params = findValue(
+ element.attributes['class'], element.className,
+ element.attributes['language'], element.language
+ ),
+ language = ''
+ ;
+
+ if (params === null)
+ continue;
+
+ params = dp.SyntaxHighlighter.parseParams(
+ params,
+ showGutter,
+ showControls,
+ collapseAll,
+ firstLine,
+ showColumns
+ );
+
+ SyntaxHighlighter.highlight(params, element);
+ }
+ }
+};
diff --git a/lib/modules/PHPMailer-master/examples/sendmail.phps b/lib/modules/PHPMailer-master/examples/sendmail.phps
new file mode 100644
index 0000000..a830e49
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/sendmail.phps
@@ -0,0 +1,33 @@
+isSendmail();
+//Set who the message is to be sent from
+$mail->setFrom('from@example.com', 'First Last');
+//Set an alternative reply-to address
+$mail->addReplyTo('replyto@example.com', 'First Last');
+//Set who the message is to be sent to
+$mail->addAddress('whoto@example.com', 'John Doe');
+//Set the subject line
+$mail->Subject = 'PHPMailer sendmail test';
+//Read an HTML message body from an external file, convert referenced images to embedded,
+//convert HTML into a basic plain-text alternative body
+$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+//Replace the plain text body with one created manually
+$mail->AltBody = 'This is a plain-text message body';
+//Attach an image file
+$mail->addAttachment('images/phpmailer_mini.png');
+
+//send the message, check for errors
+if (!$mail->send()) {
+ echo "Mailer Error: " . $mail->ErrorInfo;
+} else {
+ echo "Message sent!";
+}
diff --git a/lib/modules/PHPMailer-master/examples/smtp.phps b/lib/modules/PHPMailer-master/examples/smtp.phps
new file mode 100644
index 0000000..7c6b023
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/smtp.phps
@@ -0,0 +1,54 @@
+isSMTP();
+//Enable SMTP debugging
+// 0 = off (for production use)
+// 1 = client messages
+// 2 = client and server messages
+$mail->SMTPDebug = 2;
+//Ask for HTML-friendly debug output
+$mail->Debugoutput = 'html';
+//Set the hostname of the mail server
+$mail->Host = "mail.example.com";
+//Set the SMTP port number - likely to be 25, 465 or 587
+$mail->Port = 25;
+//Whether to use SMTP authentication
+$mail->SMTPAuth = true;
+//Username to use for SMTP authentication
+$mail->Username = "yourname@example.com";
+//Password to use for SMTP authentication
+$mail->Password = "yourpassword";
+//Set who the message is to be sent from
+$mail->setFrom('from@example.com', 'First Last');
+//Set an alternative reply-to address
+$mail->addReplyTo('replyto@example.com', 'First Last');
+//Set who the message is to be sent to
+$mail->addAddress('whoto@example.com', 'John Doe');
+//Set the subject line
+$mail->Subject = 'PHPMailer SMTP test';
+//Read an HTML message body from an external file, convert referenced images to embedded,
+//convert HTML into a basic plain-text alternative body
+$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+//Replace the plain text body with one created manually
+$mail->AltBody = 'This is a plain-text message body';
+//Attach an image file
+$mail->addAttachment('images/phpmailer_mini.png');
+
+//send the message, check for errors
+if (!$mail->send()) {
+ echo "Mailer Error: " . $mail->ErrorInfo;
+} else {
+ echo "Message sent!";
+}
diff --git a/lib/modules/PHPMailer-master/examples/smtp_check.phps b/lib/modules/PHPMailer-master/examples/smtp_check.phps
new file mode 100644
index 0000000..c42ed0b
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/smtp_check.phps
@@ -0,0 +1,40 @@
+do_debug = SMTP::DEBUG_CONNECTION;
+
+try {
+//Connect to an SMTP server
+ if ($smtp->connect('mail.example.com', 25)) {
+ //Say hello
+ if ($smtp->hello('localhost')) { //Put your host name in here
+ //Authenticate
+ if ($smtp->authenticate('username', 'password')) {
+ echo "Connected ok!";
+ } else {
+ throw new Exception('Authentication failed: ' . $smtp->getLastReply());
+ }
+ } else {
+ throw new Exception('HELO failed: '. $smtp->getLastReply());
+ }
+ } else {
+ throw new Exception('Connect failed');
+ }
+} catch (Exception $e) {
+ echo 'SMTP error: '. $e->getMessage(), "\n";
+}
+//Whatever happened, close the connection.
+$smtp->quit(true);
diff --git a/lib/modules/PHPMailer-master/examples/smtp_no_auth.phps b/lib/modules/PHPMailer-master/examples/smtp_no_auth.phps
new file mode 100644
index 0000000..b590298
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/smtp_no_auth.phps
@@ -0,0 +1,50 @@
+isSMTP();
+//Enable SMTP debugging
+// 0 = off (for production use)
+// 1 = client messages
+// 2 = client and server messages
+$mail->SMTPDebug = 2;
+//Ask for HTML-friendly debug output
+$mail->Debugoutput = 'html';
+//Set the hostname of the mail server
+$mail->Host = "mail.example.com";
+//Set the SMTP port number - likely to be 25, 465 or 587
+$mail->Port = 25;
+//Whether to use SMTP authentication
+$mail->SMTPAuth = false;
+//Set who the message is to be sent from
+$mail->setFrom('from@example.com', 'First Last');
+//Set an alternative reply-to address
+$mail->addReplyTo('replyto@example.com', 'First Last');
+//Set who the message is to be sent to
+$mail->addAddress('whoto@example.com', 'John Doe');
+//Set the subject line
+$mail->Subject = 'PHPMailer SMTP without auth test';
+//Read an HTML message body from an external file, convert referenced images to embedded,
+//convert HTML into a basic plain-text alternative body
+$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
+//Replace the plain text body with one created manually
+$mail->AltBody = 'This is a plain-text message body';
+//Attach an image file
+$mail->addAttachment('images/phpmailer_mini.png');
+
+//send the message, check for errors
+if (!$mail->send()) {
+ echo "Mailer Error: " . $mail->ErrorInfo;
+} else {
+ echo "Message sent!";
+}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCore.css b/lib/modules/PHPMailer-master/examples/styles/shCore.css
new file mode 100644
index 0000000..3b26ae7
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCore.css
@@ -0,0 +1,46 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreDefault.css b/lib/modules/PHPMailer-master/examples/styles/shCoreDefault.css
new file mode 100644
index 0000000..3f15eba
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreDefault.css
@@ -0,0 +1,77 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:white !important;}
+.syntaxhighlighter .line.alt1{background-color:white !important;}
+.syntaxhighlighter .line.alt2{background-color:white !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#e0e0e0 !important;}
+.syntaxhighlighter .line.highlighted.number{color:black !important;}
+.syntaxhighlighter table caption{color:black !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #6ce26c !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c !important;color:white !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:blue !important;background:white !important;border:1px solid #6ce26c !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:blue !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:red !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#6ce26c !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:black !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:blue !important;}
+.syntaxhighlighter .keyword{color:#006699 !important;}
+.syntaxhighlighter .preprocessor{color:gray !important;}
+.syntaxhighlighter .variable{color:#aa7700 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ff1493 !important;}
+.syntaxhighlighter .constants{color:#0066cc !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#006699 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreDjango.css b/lib/modules/PHPMailer-master/examples/styles/shCoreDjango.css
new file mode 100644
index 0000000..19c5eb4
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreDjango.css
@@ -0,0 +1,78 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.alt1{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.alt2{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#233729 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:#f8f8f8 !important;}
+.syntaxhighlighter .gutter{color:#497958 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #41a83e !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#41a83e !important;color:#0a2b1d !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#96dd3b !important;background:black !important;border:1px solid #41a83e !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#96dd3b !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:white !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#41a83e !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#ffe862 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#f8f8f8 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#336442 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#9df39f !important;}
+.syntaxhighlighter .keyword{color:#96dd3b !important;}
+.syntaxhighlighter .preprocessor{color:#91bb9e !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#96dd3b !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#eb939a !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#91bb9e !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#edef7d !important;}
+.syntaxhighlighter .comments{font-style:italic !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreEclipse.css b/lib/modules/PHPMailer-master/examples/styles/shCoreEclipse.css
new file mode 100644
index 0000000..fc8c59d
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreEclipse.css
@@ -0,0 +1,80 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:white !important;}
+.syntaxhighlighter .line.alt1{background-color:white !important;}
+.syntaxhighlighter .line.alt2{background-color:white !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#c3defe !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:black !important;}
+.syntaxhighlighter .gutter{color:#787878 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #d4d0c8 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#d4d0c8 !important;color:white !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#3f5fbf !important;background:white !important;border:1px solid #d4d0c8 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#3f5fbf !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#aa7700 !important;}
+.syntaxhighlighter .toolbar{color:#a0a0a0 !important;background:#d4d0c8 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#a0a0a0 !important;}
+.syntaxhighlighter .toolbar a:hover{color:red !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#3f5fbf !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#2a00ff !important;}
+.syntaxhighlighter .keyword{color:#7f0055 !important;}
+.syntaxhighlighter .preprocessor{color:#646464 !important;}
+.syntaxhighlighter .variable{color:#aa7700 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ff1493 !important;}
+.syntaxhighlighter .constants{color:#0066cc !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#7f0055 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
+.syntaxhighlighter .xml .keyword{color:#3f7f7f !important;font-weight:normal !important;}
+.syntaxhighlighter .xml .color1,.syntaxhighlighter .xml .color1 a{color:#7f007f !important;}
+.syntaxhighlighter .xml .string{font-style:italic !important;color:#2a00ff !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreEmacs.css b/lib/modules/PHPMailer-master/examples/styles/shCoreEmacs.css
new file mode 100644
index 0000000..4fbd325
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreEmacs.css
@@ -0,0 +1,76 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:black !important;}
+.syntaxhighlighter .line.alt1{background-color:black !important;}
+.syntaxhighlighter .line.alt2{background-color:black !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#2a3133 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:#d3d3d3 !important;}
+.syntaxhighlighter .gutter{color:#d3d3d3 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #990000 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#990000 !important;color:black !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#ebdb8d !important;background:black !important;border:1px solid #990000 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#ebdb8d !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#ff7d27 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#990000 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#9ccff4 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#d3d3d3 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#ff7d27 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#ff9e7b !important;}
+.syntaxhighlighter .keyword{color:aqua !important;}
+.syntaxhighlighter .preprocessor{color:#aec4de !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#81cef9 !important;}
+.syntaxhighlighter .constants{color:#ff9e7b !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:aqua !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#ebdb8d !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff7d27 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#aec4de !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreFadeToGrey.css b/lib/modules/PHPMailer-master/examples/styles/shCoreFadeToGrey.css
new file mode 100644
index 0000000..398d6ee
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreFadeToGrey.css
@@ -0,0 +1,77 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:#121212 !important;}
+.syntaxhighlighter .line.alt1{background-color:#121212 !important;}
+.syntaxhighlighter .line.alt2{background-color:#121212 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#2c2c29 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:white !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #3185b9 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#3185b9 !important;color:#121212 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#3185b9 !important;background:black !important;border:1px solid #3185b9 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#3185b9 !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#d01d33 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#3185b9 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#96daff !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:white !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#696854 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#e3e658 !important;}
+.syntaxhighlighter .keyword{color:#d01d33 !important;}
+.syntaxhighlighter .preprocessor{color:#435a5f !important;}
+.syntaxhighlighter .variable{color:#898989 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#aaaaaa !important;}
+.syntaxhighlighter .constants{color:#96daff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#d01d33 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#ffc074 !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#4a8cdb !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#96daff !important;}
+.syntaxhighlighter .functions{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreMDUltra.css b/lib/modules/PHPMailer-master/examples/styles/shCoreMDUltra.css
new file mode 100644
index 0000000..87a3cc2
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreMDUltra.css
@@ -0,0 +1,76 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:#222222 !important;}
+.syntaxhighlighter .line.alt1{background-color:#222222 !important;}
+.syntaxhighlighter .line.alt2{background-color:#222222 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#253e5a !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:lime !important;}
+.syntaxhighlighter .gutter{color:#38566f !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#222222 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#428bdd !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#428bdd !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:lime !important;}
+.syntaxhighlighter .toolbar{color:#aaaaff !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#aaaaff !important;}
+.syntaxhighlighter .toolbar a:hover{color:#9ccff4 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:lime !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#428bdd !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:lime !important;}
+.syntaxhighlighter .keyword{color:#aaaaff !important;}
+.syntaxhighlighter .preprocessor{color:#8aa6c1 !important;}
+.syntaxhighlighter .variable{color:aqua !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ff8000 !important;}
+.syntaxhighlighter .constants{color:yellow !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#aaaaff !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:red !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:yellow !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreMidnight.css b/lib/modules/PHPMailer-master/examples/styles/shCoreMidnight.css
new file mode 100644
index 0000000..3c02103
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreMidnight.css
@@ -0,0 +1,76 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:#0f192a !important;}
+.syntaxhighlighter .line.alt1{background-color:#0f192a !important;}
+.syntaxhighlighter .line.alt2{background-color:#0f192a !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#253e5a !important;}
+.syntaxhighlighter .line.highlighted.number{color:#38566f !important;}
+.syntaxhighlighter table caption{color:#d1edff !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#0f192a !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#428bdd !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#428bdd !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#1dc116 !important;}
+.syntaxhighlighter .toolbar{color:#d1edff !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#d1edff !important;}
+.syntaxhighlighter .toolbar a:hover{color:#8aa6c1 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#d1edff !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#428bdd !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#1dc116 !important;}
+.syntaxhighlighter .keyword{color:#b43d3d !important;}
+.syntaxhighlighter .preprocessor{color:#8aa6c1 !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#b43d3d !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#f8bb00 !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:white !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shCoreRDark.css b/lib/modules/PHPMailer-master/examples/styles/shCoreRDark.css
new file mode 100644
index 0000000..f5b7b47
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shCoreRDark.css
@@ -0,0 +1,76 @@
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important;}
+.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important;}
+.syntaxhighlighter.source{overflow:hidden !important;}
+.syntaxhighlighter .bold{font-weight:bold !important;}
+.syntaxhighlighter .italic{font-style:italic !important;}
+.syntaxhighlighter .line{white-space:pre !important;}
+.syntaxhighlighter table{width:100% !important;}
+.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 0.5em 1em !important;}
+.syntaxhighlighter table td.code{width:100% !important;}
+.syntaxhighlighter table td.code .container{position:relative !important;}
+.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important;}
+.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 0.5em 0 1em !important;}
+.syntaxhighlighter table td.code .line{padding:0 1em !important;}
+.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0em !important;}
+.syntaxhighlighter.show{display:block !important;}
+.syntaxhighlighter.collapsed table{display:none !important;}
+.syntaxhighlighter.collapsed .toolbar{padding:0.1em 0.8em 0em 0.8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important;}
+.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important;}
+.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important;}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important;}
+.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important;}
+.syntaxhighlighter .toolbar span.title{display:inline !important;}
+.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important;}
+.syntaxhighlighter .toolbar a.expandSource{display:none !important;}
+.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important;}
+.syntaxhighlighter.ie .toolbar{line-height:8px !important;}
+.syntaxhighlighter.ie .toolbar a{padding-top:0px !important;}
+.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important;}
+.syntaxhighlighter.printing .line .number{color:#bbbbbb !important;}
+.syntaxhighlighter.printing .line .content{color:black !important;}
+.syntaxhighlighter.printing .toolbar{display:none !important;}
+.syntaxhighlighter.printing a{text-decoration:none !important;}
+.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important;}
+.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important;}
+.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important;}
+.syntaxhighlighter.printing .keyword{color:#006699 !important;font-weight:bold !important;}
+.syntaxhighlighter.printing .preprocessor{color:gray !important;}
+.syntaxhighlighter.printing .variable{color:#aa7700 !important;}
+.syntaxhighlighter.printing .value{color:#009900 !important;}
+.syntaxhighlighter.printing .functions{color:#ff1493 !important;}
+.syntaxhighlighter.printing .constants{color:#0066cc !important;}
+.syntaxhighlighter.printing .script{font-weight:bold !important;}
+.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important;}
+.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important;}
+.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important;}
+.syntaxhighlighter{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.alt1{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.alt2{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#323e41 !important;}
+.syntaxhighlighter .line.highlighted.number{color:#b9bdb6 !important;}
+.syntaxhighlighter table caption{color:#b9bdb6 !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#1b2426 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#5ba1cf !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#5ba1cf !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#5ce638 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#e0e8ff !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#b9bdb6 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#878a85 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#5ce638 !important;}
+.syntaxhighlighter .keyword{color:#5ba1cf !important;}
+.syntaxhighlighter .preprocessor{color:#435a5f !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#5ba1cf !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#e0e8ff !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:white !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeAppleScript.css b/lib/modules/PHPMailer-master/examples/styles/shThemeAppleScript.css
new file mode 100644
index 0000000..7881bad
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeAppleScript.css
@@ -0,0 +1,21 @@
+.syntaxhighlighter.applescript{background:white;font-size:1em;color:black;}
+.syntaxhighlighter.applescript div,.syntaxhighlighter.applescript code{font:1em/1.25 Verdana,sans-serif !important;}
+.syntaxhighlighter.applescript .code .line{overflow:hidden !important;}
+.syntaxhighlighter.applescript .code .line.highlighted{background:#b5d5ff !important;}
+.syntaxhighlighter.applescript .color1{color:#000000 !important;}
+.syntaxhighlighter.applescript .color2{color:#000000 !important;}
+.syntaxhighlighter.applescript .color3{color:#000000 !important;font-weight:bold !important;}
+.syntaxhighlighter.applescript .keyword{color:#000000 !important;font-weight:bold !important;}
+.syntaxhighlighter.applescript .color4{color:#0000ff !important;font-style:italic !important;}
+.syntaxhighlighter.applescript .comments{color:#4c4d4d !important;}
+.syntaxhighlighter.applescript .plain{color:#408000 !important;}
+.syntaxhighlighter.applescript .string{color:#000000 !important;}
+.syntaxhighlighter.applescript .commandNames{color:#0000ff !important;font-weight:bold !important;}
+.syntaxhighlighter.applescript .parameterNames{color:#0000ff !important;}
+.syntaxhighlighter.applescript .classes{color:#0000ff !important;font-style:italic !important;}
+.syntaxhighlighter.applescript .properties{color:#6c04d4 !important;}
+.syntaxhighlighter.applescript .enumeratedValues{color:#4a1e7f !important;}
+.syntaxhighlighter.applescript .additionCommandNames{color:#0016b0 !important;font-weight:bold !important;}
+.syntaxhighlighter.applescript .additionParameterNames{color:#0016b0 !important;}
+.syntaxhighlighter.applescript .additionClasses{color:#0016b0 !important;font-style:italic !important;}
+.syntaxhighlighter.applescript .spaces{display:inline-block;height:0 !important;font-size:1.75em !important;line-height:0 !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeDefault.css b/lib/modules/PHPMailer-master/examples/styles/shThemeDefault.css
new file mode 100644
index 0000000..8034517
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeDefault.css
@@ -0,0 +1,31 @@
+.syntaxhighlighter{background-color:white !important;}
+.syntaxhighlighter .line.alt1{background-color:white !important;}
+.syntaxhighlighter .line.alt2{background-color:white !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#e0e0e0 !important;}
+.syntaxhighlighter .line.highlighted.number{color:black !important;}
+.syntaxhighlighter table caption{color:black !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #6ce26c !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c !important;color:white !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:blue !important;background:white !important;border:1px solid #6ce26c !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:blue !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:red !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#6ce26c !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:black !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:blue !important;}
+.syntaxhighlighter .keyword{color:#006699 !important;}
+.syntaxhighlighter .preprocessor{color:gray !important;}
+.syntaxhighlighter .variable{color:#aa7700 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ff1493 !important;}
+.syntaxhighlighter .constants{color:#0066cc !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#006699 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeDjango.css b/lib/modules/PHPMailer-master/examples/styles/shThemeDjango.css
new file mode 100644
index 0000000..5cb724f
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeDjango.css
@@ -0,0 +1,32 @@
+.syntaxhighlighter{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.alt1{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.alt2{background-color:#0a2b1d !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#233729 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:#f8f8f8 !important;}
+.syntaxhighlighter .gutter{color:#497958 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #41a83e !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#41a83e !important;color:#0a2b1d !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#96dd3b !important;background:black !important;border:1px solid #41a83e !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#96dd3b !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:white !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#41a83e !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#ffe862 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#f8f8f8 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#336442 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#9df39f !important;}
+.syntaxhighlighter .keyword{color:#96dd3b !important;}
+.syntaxhighlighter .preprocessor{color:#91bb9e !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#96dd3b !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#eb939a !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#91bb9e !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#edef7d !important;}
+.syntaxhighlighter .comments{font-style:italic !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeEclipse.css b/lib/modules/PHPMailer-master/examples/styles/shThemeEclipse.css
new file mode 100644
index 0000000..b089c5d
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeEclipse.css
@@ -0,0 +1,34 @@
+.syntaxhighlighter{background-color:white !important;}
+.syntaxhighlighter .line.alt1{background-color:white !important;}
+.syntaxhighlighter .line.alt2{background-color:white !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#c3defe !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:black !important;}
+.syntaxhighlighter .gutter{color:#787878 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #d4d0c8 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#d4d0c8 !important;color:white !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#3f5fbf !important;background:white !important;border:1px solid #d4d0c8 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#3f5fbf !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#aa7700 !important;}
+.syntaxhighlighter .toolbar{color:#a0a0a0 !important;background:#d4d0c8 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#a0a0a0 !important;}
+.syntaxhighlighter .toolbar a:hover{color:red !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#3f5fbf !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#2a00ff !important;}
+.syntaxhighlighter .keyword{color:#7f0055 !important;}
+.syntaxhighlighter .preprocessor{color:#646464 !important;}
+.syntaxhighlighter .variable{color:#aa7700 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ff1493 !important;}
+.syntaxhighlighter .constants{color:#0066cc !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#7f0055 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
+.syntaxhighlighter .xml .keyword{color:#3f7f7f !important;font-weight:normal !important;}
+.syntaxhighlighter .xml .color1,.syntaxhighlighter .xml .color1 a{color:#7f007f !important;}
+.syntaxhighlighter .xml .string{font-style:italic !important;color:#2a00ff !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeEmacs.css b/lib/modules/PHPMailer-master/examples/styles/shThemeEmacs.css
new file mode 100644
index 0000000..a3dcfc9
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeEmacs.css
@@ -0,0 +1,30 @@
+.syntaxhighlighter{background-color:black !important;}
+.syntaxhighlighter .line.alt1{background-color:black !important;}
+.syntaxhighlighter .line.alt2{background-color:black !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#2a3133 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:#d3d3d3 !important;}
+.syntaxhighlighter .gutter{color:#d3d3d3 !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #990000 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#990000 !important;color:black !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#ebdb8d !important;background:black !important;border:1px solid #990000 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#ebdb8d !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#ff7d27 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#990000 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#9ccff4 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#d3d3d3 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#ff7d27 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#ff9e7b !important;}
+.syntaxhighlighter .keyword{color:aqua !important;}
+.syntaxhighlighter .preprocessor{color:#aec4de !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#81cef9 !important;}
+.syntaxhighlighter .constants{color:#ff9e7b !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:aqua !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#ebdb8d !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff7d27 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#aec4de !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeFadeToGrey.css b/lib/modules/PHPMailer-master/examples/styles/shThemeFadeToGrey.css
new file mode 100644
index 0000000..d0b1c93
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeFadeToGrey.css
@@ -0,0 +1,31 @@
+.syntaxhighlighter{background-color:#121212 !important;}
+.syntaxhighlighter .line.alt1{background-color:#121212 !important;}
+.syntaxhighlighter .line.alt2{background-color:#121212 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#2c2c29 !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:white !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #3185b9 !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#3185b9 !important;color:#121212 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#3185b9 !important;background:black !important;border:1px solid #3185b9 !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#3185b9 !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#d01d33 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#3185b9 !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#96daff !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:white !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#696854 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#e3e658 !important;}
+.syntaxhighlighter .keyword{color:#d01d33 !important;}
+.syntaxhighlighter .preprocessor{color:#435a5f !important;}
+.syntaxhighlighter .variable{color:#898989 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#aaaaaa !important;}
+.syntaxhighlighter .constants{color:#96daff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#d01d33 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#ffc074 !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#4a8cdb !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#96daff !important;}
+.syntaxhighlighter .functions{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeMDUltra.css b/lib/modules/PHPMailer-master/examples/styles/shThemeMDUltra.css
new file mode 100644
index 0000000..6f712fd
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeMDUltra.css
@@ -0,0 +1,30 @@
+.syntaxhighlighter{background-color:#222222 !important;}
+.syntaxhighlighter .line.alt1{background-color:#222222 !important;}
+.syntaxhighlighter .line.alt2{background-color:#222222 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#253e5a !important;}
+.syntaxhighlighter .line.highlighted.number{color:white !important;}
+.syntaxhighlighter table caption{color:lime !important;}
+.syntaxhighlighter .gutter{color:#38566f !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#222222 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#428bdd !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#428bdd !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:lime !important;}
+.syntaxhighlighter .toolbar{color:#aaaaff !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#aaaaff !important;}
+.syntaxhighlighter .toolbar a:hover{color:#9ccff4 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:lime !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#428bdd !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:lime !important;}
+.syntaxhighlighter .keyword{color:#aaaaff !important;}
+.syntaxhighlighter .preprocessor{color:#8aa6c1 !important;}
+.syntaxhighlighter .variable{color:aqua !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ff8000 !important;}
+.syntaxhighlighter .constants{color:yellow !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#aaaaff !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:red !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:yellow !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeMidnight.css b/lib/modules/PHPMailer-master/examples/styles/shThemeMidnight.css
new file mode 100644
index 0000000..e9c177e
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeMidnight.css
@@ -0,0 +1,30 @@
+.syntaxhighlighter{background-color:#0f192a !important;}
+.syntaxhighlighter .line.alt1{background-color:#0f192a !important;}
+.syntaxhighlighter .line.alt2{background-color:#0f192a !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#253e5a !important;}
+.syntaxhighlighter .line.highlighted.number{color:#38566f !important;}
+.syntaxhighlighter table caption{color:#d1edff !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#0f192a !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#428bdd !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#428bdd !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#1dc116 !important;}
+.syntaxhighlighter .toolbar{color:#d1edff !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:#d1edff !important;}
+.syntaxhighlighter .toolbar a:hover{color:#8aa6c1 !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#d1edff !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#428bdd !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#1dc116 !important;}
+.syntaxhighlighter .keyword{color:#b43d3d !important;}
+.syntaxhighlighter .preprocessor{color:#8aa6c1 !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#f7e741 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#b43d3d !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#f8bb00 !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:white !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeRDark.css b/lib/modules/PHPMailer-master/examples/styles/shThemeRDark.css
new file mode 100644
index 0000000..42d8710
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeRDark.css
@@ -0,0 +1,30 @@
+.syntaxhighlighter{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.alt1{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.alt2{background-color:#1b2426 !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#323e41 !important;}
+.syntaxhighlighter .line.highlighted.number{color:#b9bdb6 !important;}
+.syntaxhighlighter table caption{color:#b9bdb6 !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #435a5f !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#435a5f !important;color:#1b2426 !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:#5ba1cf !important;background:black !important;border:1px solid #435a5f !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:#5ba1cf !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:#5ce638 !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#435a5f !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:#e0e8ff !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:#b9bdb6 !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#878a85 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#5ce638 !important;}
+.syntaxhighlighter .keyword{color:#5ba1cf !important;}
+.syntaxhighlighter .preprocessor{color:#435a5f !important;}
+.syntaxhighlighter .variable{color:#ffaa3e !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ffaa3e !important;}
+.syntaxhighlighter .constants{color:#e0e8ff !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#5ba1cf !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:#e0e8ff !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:white !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:#ffaa3e !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/shThemeVisualStudio.css b/lib/modules/PHPMailer-master/examples/styles/shThemeVisualStudio.css
new file mode 100644
index 0000000..8ed369f
--- /dev/null
+++ b/lib/modules/PHPMailer-master/examples/styles/shThemeVisualStudio.css
@@ -0,0 +1,31 @@
+.syntaxhighlighter{background-color:white !important;}
+.syntaxhighlighter .line.alt1{background-color:white !important;}
+.syntaxhighlighter .line.alt2{background-color:white !important;}
+.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#e0e0e0 !important;}
+.syntaxhighlighter .line.highlighted.number{color:black !important;}
+.syntaxhighlighter table caption{color:black !important;}
+.syntaxhighlighter .gutter{color:#afafaf !important;}
+.syntaxhighlighter .gutter .line{border-right:3px solid #6ce26c !important;}
+.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c !important;color:white !important;}
+.syntaxhighlighter.printing .line .content{border:none !important;}
+.syntaxhighlighter.collapsed{overflow:visible !important;}
+.syntaxhighlighter.collapsed .toolbar{color:blue !important;background:white !important;border:1px solid #6ce26c !important;}
+.syntaxhighlighter.collapsed .toolbar a{color:blue !important;}
+.syntaxhighlighter.collapsed .toolbar a:hover{color:red !important;}
+.syntaxhighlighter .toolbar{color:white !important;background:#6ce26c !important;border:none !important;}
+.syntaxhighlighter .toolbar a{color:white !important;}
+.syntaxhighlighter .toolbar a:hover{color:black !important;}
+.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important;}
+.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200 !important;}
+.syntaxhighlighter .string,.syntaxhighlighter .string a{color:#d11010 !important;}
+.syntaxhighlighter .keyword{color:#006699 !important;}
+.syntaxhighlighter .preprocessor{color:gray !important;}
+.syntaxhighlighter .variable{color:#aa7700 !important;}
+.syntaxhighlighter .value{color:#009900 !important;}
+.syntaxhighlighter .functions{color:#ff1493 !important;}
+.syntaxhighlighter .constants{color:#0066cc !important;}
+.syntaxhighlighter .script{font-weight:bold !important;color:#006699 !important;background-color:none !important;}
+.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important;}
+.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important;}
+.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important;}
+.syntaxhighlighter .keyword{font-weight:bold !important;}
diff --git a/lib/modules/PHPMailer-master/examples/styles/wrapping.png b/lib/modules/PHPMailer-master/examples/styles/wrapping.png
new file mode 100644
index 0000000..6972c5e
Binary files /dev/null and b/lib/modules/PHPMailer-master/examples/styles/wrapping.png differ
diff --git a/lib/modules/PHPMailer-master/extras/EasyPeasyICS.php b/lib/modules/PHPMailer-master/extras/EasyPeasyICS.php
new file mode 100644
index 0000000..f076895
--- /dev/null
+++ b/lib/modules/PHPMailer-master/extras/EasyPeasyICS.php
@@ -0,0 +1,90 @@
+calendarName = $calendarName;
+ }//function
+
+
+ /**
+ * Add event to calendar
+ * @param string $calendarName
+ */
+ public function addEvent($start, $end, $summary="", $description="", $url=""){
+ $this->events[] = array(
+ "start" => $start,
+ "end" => $end,
+ "summary" => $summary,
+ "description" => $description,
+ "url" => $url
+ );
+ }//function
+
+
+ public function render($output = true){
+
+ //start Variable
+ $ics = "";
+
+ //Add header
+ $ics .= "BEGIN:VCALENDAR
+METHOD:PUBLISH
+VERSION:2.0
+X-WR-CALNAME:".$this->calendarName."
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN";
+
+ //Add events
+ foreach($this->events as $event){
+ $ics .= "
+BEGIN:VEVENT
+UID:". md5(uniqid(mt_rand(), true)) ."@EasyPeasyICS.php
+DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
+DTSTART:".gmdate('Ymd', $event["start"])."T".gmdate('His', $event["start"])."Z
+DTEND:".gmdate('Ymd', $event["end"])."T".gmdate('His', $event["end"])."Z
+SUMMARY:".str_replace("\n", "\\n", $event['summary'])."
+DESCRIPTION:".str_replace("\n", "\\n", $event['description'])."
+URL;VALUE=URI:".$event['url']."
+END:VEVENT";
+ }//foreach
+
+
+ //Footer
+ $ics .= "
+END:VCALENDAR";
+
+
+ if ($output) {
+ //Output
+ header('Content-type: text/calendar; charset=utf-8');
+ header('Content-Disposition: inline; filename='.$this->calendarName.'.ics');
+ echo $ics;
+ } else {
+ return $ics;
+ }
+
+ }//function
+
+}//class
\ No newline at end of file
diff --git a/lib/modules/PHPMailer-master/extras/README.md b/lib/modules/PHPMailer-master/extras/README.md
new file mode 100644
index 0000000..c6654b2
--- /dev/null
+++ b/lib/modules/PHPMailer-master/extras/README.md
@@ -0,0 +1,21 @@
+#PHPMailer Extras
+
+These classes provide optional additional functions to PHPMailer.
+
+These are not loaded by the PHPMailer autoloader, so in some cases you may need to `require` them yourself before using them.
+
+##HTML2Text
+
+This class was written by Jon Abernathy and provides a simple conversion of HTML to plain-text, while attempting to preserve some aspects of the formatting. It is used in PHPMailer if you set the `advanced` parameter to `true` in either the `msgHTML()` or `html2text` methods of PHPMailer.
+
+##EasyPeasyICS
+
+This class was originally written by Manuel Reinhard and provides a simple means of generating ICS/vCal files that are used in sending calendar events. PHPMailer does not use it directly, but you can use it to generate content appropriate for placing in the `Ical` property of PHPMailer. The PHPMailer project is now its official home as Manuel has given permission for that and is no longer maintaining it himself.
+
+##htmlfilter
+
+This class by Konstantin Riabitsev and Jim Jagielski implements HTML filtering to remove potentially malicious tags, such as `