aboutsummaryrefslogtreecommitdiffstats
path: root/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc')
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/all.css358
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.eotbin0 -> 18590 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.svg134
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.ttfbin0 -> 18428 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.woffbin0 -> 11772 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.eotbin0 -> 19518 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.svg134
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.ttfbin0 -> 19344 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.woffbin0 -> 12304 bytes
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/handheld.css217
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/screen.css297
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/files.html133
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/index.html107
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/all.js326
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/html5.js6
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html565
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html826
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html122
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html264
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html394
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html110
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html484
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html120
-rw-r--r--tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html237
24 files changed, 4834 insertions, 0 deletions
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/all.css b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/all.css
new file mode 100644
index 0000000..c253cb0
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/all.css
@@ -0,0 +1,358 @@
+/* TABLE OF CONTENTS:
+ * - Browser reset
+ * - HTML elements
+ * - JsDoc styling
+ */
+
+
+
+
+
+
+/*
+ * BEGIN BROWSER RESET
+ */
+
+body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,p,pre,form,fieldset,input,textarea,p,blockquote,th,td {
+ margin:0;
+ padding:0
+}
+html {
+ height:100%;
+ overflow:-moz-scrollbars-vertical;
+ overflow-x:auto
+}
+table {
+ border:0;
+ border-collapse:collapse;
+ border-spacing:0
+}
+fieldset,img {
+ border:0
+}
+address,caption,cite,code,dfn,em,strong,th,var {
+ font-style:normal;
+ font-weight:normal
+}
+em,cite {
+ font-style:italic
+}
+strong {
+ font-weight:bold
+}
+ol,ul {
+ list-style:none
+}
+caption,th {
+ text-align:left
+}
+h1,h2,h3,h4,h5,h6 {
+ font-size:100%;
+ font-weight:normal;
+ margin:0;
+ padding:0
+}
+q:before,q:after {
+ content:''
+}
+abbr,acronym {
+ border:0
+}
+section,article,header,footer,nav,aside,hgroup {
+ display:block
+}
+
+/*
+ * END BROWSER RESET
+ */
+
+
+
+
+
+
+/*
+ * HTML ELEMENTS
+ */
+
+@font-face {
+ font-family: 'M1m';
+ src: url('fonts/mplus-1m-regular-webfont.eot');
+ src: local('☺'), url('fonts/mplus-1m-regular-webfont.woff') format('woff'), url('fonts/mplus-1m-regular-webfont.ttf') format('truetype'), url('fonts/mplus-1m-regular-webfont.svg#webfontVd14f4NN') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'M1m';
+ src: url('fonts/mplus-1m-bold-webfont.eot');
+ src: local('☺'), url('fonts/mplus-1m-bold-webfont.woff') format('woff'), url('fonts/mplus-1m-bold-webfont.ttf') format('truetype'), url('fonts/mplus-1m-bold-webfont.svg#webfontIjI5mZqE') format('svg');
+ font-weight: bold;
+ font-style: normal;
+}
+
+
+
+* {
+ line-height: 1.4em;
+}
+
+html {
+ font-size: 100%;
+}
+
+body {
+ font-size: 0.75em;
+ padding: 15px 0;
+ background: #eee;
+ background-image: -moz-linear-gradient(left, #dddddd, #f9f9f9) fixed;
+ background-image: -webkit-gradient(linear,left bottom,right bottom,color-stop(0, #dddddd),color-stop(1, #f9f9f9)) fixed;
+ }
+
+body,
+input,
+select,
+textarea {
+ color: #000;
+ font-family: Arial, Geneva, sans-serif;
+}
+
+a:link,
+a:hover,
+a:active,
+a:visited {
+ color: #19199e;
+}
+a:hover,
+a:focus {
+ color: #00f;
+ text-decoration: none;
+}
+
+p {
+ margin: 0 0 1.5em 0;
+}
+
+/*
+ * END HTML ELEMENTS
+ */
+
+
+
+/*
+ * BEGIN HACK
+ */
+
+div.containerMain:after,
+div.safeBox:after {
+ content:"";
+ display:block;
+ height:0;
+ clear:both;
+}
+
+/*
+ * END HACK
+ */
+
+
+
+/*
+ * BEGIN JSDOC
+ */
+
+/* Start menu */
+div.index *.heading1 {
+ margin-bottom: 0.5em;
+ border-bottom: 1px solid #999999;
+ font-family: M1m, Arial, sans-serif;
+ font-size: 1.6em;
+ letter-spacing: 1px;
+ line-height: 1.3em;
+}
+
+div.index div.menu {
+ background-color: #FFFFFF;
+}
+*+html div.index div.menu {
+ background-color: #FFFFFF;
+}
+* html div.index div.menu {
+ background-color: #FFFFFF;
+}
+
+div.index div.menu div {
+ text-align: left;
+}
+
+div.index div.menu a {
+ text-decoration: none;
+}
+div.index div.menu a:hover {
+ text-decoration: underline;
+}
+
+div.index ul.classList {
+ padding-left: 0;
+}
+
+div.index ul.classList a {
+ display: block;
+ margin: 1px 0;
+ padding: 4px 0 2px 10px;
+ text-indent: -10px;
+}
+
+div.index div.fineprint {
+ color: #777;
+ font-size: 0.9em;
+}
+div.index div.fineprint a {
+ color: #777;
+}
+/* End menu */
+
+
+
+/* Start content */
+div.content ul {
+ padding-left: 0;
+}
+
+div.content *.classTitle {
+ font-size: 1.2em;
+ font-weight: bold;
+ line-height: 1em;
+}
+
+div.content *.classTitle span {
+ display: block;
+ font-size: 2em;
+ letter-spacing: 2px;
+ line-height: 1em;
+ padding-top: 5px;
+ text-shadow: 1px 1px 1px #999999;
+ word-wrap: break-word;
+}
+
+div.content p.summary {
+ font-size: 1.25em;
+}
+
+div.content ul *.classname a,
+div.content ul *.filename a {
+ font-family: Consolas, "Courier New", Courier, monospace;
+ text-decoration: none;
+ font-weight: bold;
+}
+div.content ul *.classname a:hover,
+div.content ul *.filename a:hover {
+ text-decoration: underline;
+}
+
+div.content div.props {
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ background: #fff;
+ background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.2)); /* FF3.6 */
+ background: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255, 255, 255, 0.7)),color-stop(1, rgba(255, 255, 255, 0.2)));
+ -moz-box-shadow: 0px 0px 10px #ccc;
+ -webkit-box-shadow: 0px 0px 5px #bbb;
+ box-shadow: 0px 0px 5px #bbb;
+}
+
+
+
+*.sectionTitle {
+ font-family: M1m, sans-serif;
+ font-size: 1.6em;
+ letter-spacing: 1px;
+}
+
+table.summaryTable td,
+table.summaryTable th {
+ vertical-align: top;
+}
+table.summaryTable tr:last-child td {
+ padding-bottom: 0;
+}
+
+table.summaryTable th {
+ font-weight: bold;
+}
+
+table.summaryTable td.attributes {
+ font-family: Consolas, "Courier New", Courier, monospace;
+ color: #666;
+}
+
+table.summaryTable td.nameDescription div.fixedFont {
+ font-weight: bold;
+}
+
+table.summaryTable div.description {
+ color: #333;
+}
+
+
+
+dl.detailList dt {
+ font-weight: bold;
+}
+
+dl.inheritsList dd + dt {
+ margin-top: 10px;
+}
+
+dl.inheritsList dd {
+ display: inline;
+}
+
+
+
+.fixedFont {
+ font-family: Consolas, "Courier New", Courier, monospace;
+}
+
+.fixedFont.heading {
+ font-size: 1.25em;
+ line-height: 1.1em
+}
+
+.fixedFont.heading + .description {
+ font-size: 1.2em;
+}
+
+.fixedFont.heading .light,
+.fixedFont.heading .lighter {
+ font-weight: bold;
+}
+
+pre.code {
+ overflow: auto;
+ font-family: Consolas, "Courier New", Courier, monospace;
+ background: #eee;
+}
+/* Start content */
+
+
+
+/* Start general styles */
+.light {
+ color: #666;
+}
+
+.lighter {
+ color: #999;
+}
+
+span.break {
+ font-size: 1px;
+ line-height: 1px;
+}
+/* End general styles */
+
+/*
+ * END JSDOC
+ */
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.eot b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.eot
new file mode 100644
index 0000000..6c64f8d
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.eot
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.svg b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.svg
new file mode 100644
index 0000000..5129512
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Foundry URL : http://mplus-fonts.sourceforge.jp
+</metadata>
+<defs>
+<font id="webfontIjI5mZqE" horiz-adv-x="500" >
+<font-face units-per-em="1000" ascent="860" descent="-140" />
+<missing-glyph horiz-adv-x="500" />
+<glyph unicode=" " />
+<glyph unicode="!" d="M165 730h170l-20 -495h-130zM170 0v150h160v-150h-160z" />
+<glyph unicode="&#x22;" d="M270 780h160l-30 -320h-100zM70 780h160l-30 -320h-100z" />
+<glyph unicode="#" d="M20 165v120h62l24 185h-51v120h67l18 140h135l-18 -140h45l18 140h135l-18 -140h43v-120h-59l-24 -185h48v-120h-64l-21 -165h-135l21 165h-45l-21 -165h-135l21 165h-46zM217 285h45l24 185h-45z" />
+<glyph unicode="$" d="M357 397q55 -32 76.5 -74t21.5 -108q0 -190 -192 -199v-101h-110v112q-51 16 -88 43v140q38 -35 88 -55v191q-53 33 -75.5 75.5t-22.5 103.5q0 89 50 138.5t142 51.5v100h110v-112q42 -12 78 -33v-135q-32 25 -78 42v-180zM247 445v149q-54 -9 -54 -69q0 -55 54 -80z M263 295v-157q52 13 52 77q0 55 -52 80z" />
+<glyph unicode="%" d="M40 310l420 220v-110l-420 -220v110zM160 740q70 0 110 -41t40 -119t-40 -119t-110 -41t-110 41t-40 119t40 119t110 41zM340 310q70 0 110 -41t40 -119t-40 -119t-110 -41t-110 41t-40 119t40 119t110 41zM160 518q38 0 38 62t-38 62t-38 -62t38 -62zM340 88q38 0 38 62 t-38 62t-38 -62t38 -62z" />
+<glyph unicode="&#x26;" d="M235 615q-23 0 -36.5 -14.5t-13.5 -40.5q0 -18 7.5 -37.5t33.5 -65.5q35 30 47 52.5t12 50.5q0 26 -13.5 40.5t-36.5 14.5zM118 368q-47 77 -62.5 116t-15.5 76q0 80 51.5 130t138.5 50t141 -50.5t54 -129.5q0 -114 -130 -220l55 -94v2v132h125v-225q-16 -25 -41 -52 l61 -103h-150l-15 24q-66 -34 -130 -34q-88 0 -136.5 45.5t-48.5 134.5q0 99 103 198zM269 124l-77 125q-27 -37 -27 -74q0 -60 65 -60q20 0 39 9z" />
+<glyph unicode="'" d="M160 780h180l-35 -320h-110z" />
+<glyph unicode="(" d="M100 300q0 136 50 256.5t144 213.5h126q-196 -194 -196 -470t196 -470h-126q-94 93 -144 213.5t-50 256.5z" />
+<glyph unicode=")" d="M400 300q0 -136 -50 -256.5t-144 -213.5h-126q196 194 196 470t-196 470h126q94 -93 144 -213.5t50 -256.5z" />
+<glyph unicode="*" d="M193 750h114l-4 -144l136 48l35 -109l-138 -40l88 -115l-93 -67l-81 119l-81 -119l-93 67l88 115l-138 40l35 109l136 -48z" />
+<glyph unicode="+" d="M315 545v-195h135v-110h-135v-195h-130v195h-135v110h135v195h130z" />
+<glyph unicode="," d="M180 190h190l-130 -320h-120z" />
+<glyph unicode="-" d="M90 240v110h320v-110h-320z" />
+<glyph unicode="." d="M155 0v190h190v-190h-190z" />
+<glyph unicode="/" d="M465 730l-310 -770h-120l310 770h120z" />
+<glyph unicode="0" d="M250 740q73 0 117.5 -32.5t68.5 -116t24 -226.5t-24 -226.5t-68.5 -116t-117.5 -32.5t-117.5 32.5t-68.5 116t-24 226.5t24 226.5t68.5 116t117.5 32.5zM171 317l142 248q-9 34 -24.5 47t-38.5 13q-28 0 -44.5 -19.5t-26 -77.5t-9.5 -163q0 -33 1 -48zM183 179 q9 -41 25.5 -57.5t41.5 -16.5q28 0 44.5 19.5t26 77.5t9.5 163q0 47 -1 67z" />
+<glyph unicode="1" d="M240 592l-2 1l-173 -91v128l175 100h140v-730h-140v592z" />
+<glyph unicode="2" d="M220 122v-2h220v-120h-380v120q127 141 181 237t54 173q0 43 -21 66.5t-59 23.5q-31 0 -74 -22t-81 -58v130q78 70 185 70q90 0 140 -51t50 -149q0 -180 -215 -418z" />
+<glyph unicode="3" d="M290 608v2h-230v120h385v-120l-170 -178v-2h10q79 0 122 -51.5t43 -153.5q0 -121 -54 -178t-166 -57q-51 0 -81.5 6.5t-78.5 28.5v130q80 -45 150 -45q46 0 68 27t22 88q0 58 -26 76.5t-114 18.5h-40v120z" />
+<glyph unicode="4" d="M400 150v-150h-135v150h-245v120l230 460h150v-460h80v-120h-80zM265 270v255h-2l-127 -253v-2h129z" />
+<glyph unicode="5" d="M202 455q36 19 82 19q161 0 161 -239q0 -245 -230 -245q-76 0 -150 35v130q80 -45 140 -45q51 0 75.5 29t24.5 96t-14.5 93t-46.5 26q-34 0 -64 -34h-110l10 410h345v-120h-220l-5 -155h2z" />
+<glyph unicode="6" d="M295 625q-54 0 -76.5 -34.5t-28.5 -135.5h2q45 35 98 35q92 0 133.5 -54.5t41.5 -185.5q0 -141 -51 -200.5t-159 -59.5q-75 0 -119 28.5t-67.5 101t-23.5 200.5q0 162 25 254t75 129t135 37q66 0 135 -20v-125q-57 30 -120 30zM255 107q39 0 55.5 29.5t16.5 113.5 q0 79 -14 104.5t-53 25.5q-38 0 -56.5 -29.5t-18.5 -100.5q0 -81 17 -112t53 -31z" />
+<glyph unicode="7" d="M55 730h390v-120q-113 -273 -200 -610h-146q92 325 216 608v2h-260v120z" />
+<glyph unicode="8" d="M258 625q-41 0 -59.5 -20.5t-18.5 -64.5q0 -74 75 -105q33 16 51.5 43.5t18.5 61.5q0 40 -18 62.5t-49 22.5zM250 -10q-105 0 -162.5 52t-57.5 148q0 116 105 179v2q-42 31 -66 80t-24 104q0 87 53.5 136t151.5 49t151.5 -48.5t53.5 -136.5q0 -98 -100 -164v-2 q115 -62 115 -199q0 -96 -58 -148t-162 -52zM242 105q93 0 93 100q0 75 -103 115q-33 -17 -52.5 -48.5t-19.5 -66.5q0 -48 22.5 -74t59.5 -26z" />
+<glyph unicode="9" d="M205 110q55 0 77 32.5t28 132.5h-2q-45 -35 -98 -35q-89 0 -132 57.5t-43 192.5q0 131 51 190.5t159 59.5q79 0 123 -27.5t65.5 -99.5t21.5 -203q0 -162 -25 -254t-75 -129t-135 -37q-66 0 -135 20v130q57 -30 120 -30zM245 623q-39 0 -55.5 -28t-16.5 -105 q0 -83 15.5 -111.5t51.5 -28.5q75 0 75 140q0 73 -17 103t-53 30z" />
+<glyph unicode=":" d="M160 390v190h180v-190h-180zM160 0v190h180v-190h-180z" />
+<glyph unicode=";" d="M170 190h190l-130 -320h-120zM170 390v190h180v-190h-180z" />
+<glyph unicode="&#x3c;" d="M445 470l-320 -174v-2l320 -174v-120l-400 225v140l400 225v-120z" />
+<glyph unicode="=" d="M50 125v110h400v-110h-400zM50 362v103h400v-103h-400z" />
+<glyph unicode="&#x3e;" d="M55 470v120l400 -225v-140l-400 -225v120l320 174v2z" />
+<glyph unicode="?" d="M460 575q0 -36 -12.5 -69t-25 -51t-38.5 -49q-25 -30 -38 -48.5t-27.5 -52.5t-18.5 -70h-130q0 49 17 94.5t32 66.5t44 57q21 25 30.5 38t19 33.5t9.5 40.5q0 58 -82 58t-180 -53v130q95 40 200 40q95 0 147.5 -44t52.5 -121zM155 0v150h160v-150h-160z" />
+<glyph unicode="@" d="M285 635q-72 0 -108.5 -62.5t-36.5 -207.5q0 -265 160 -265q58 0 125 30v-115q-70 -25 -150 -25q-260 0 -260 375q0 194 64 284.5t191 90.5q99 0 152 -51.5t53 -148.5v-325q-28 -28 -76 -46.5t-94 -18.5q-69 0 -102 49t-33 166q0 114 31.5 164.5t93.5 50.5q36 0 68 -25h2 v15q0 26 -23.5 45.5t-56.5 19.5zM290 365q0 -72 8 -93.5t29 -21.5q20 0 28 18v147q0 41 -6 53t-25 12t-26.5 -22t-7.5 -93z" />
+<glyph unicode="A" d="M249 620h-2l-55 -335h112zM323 170h-150l-28 -170h-140l165 730h160l165 -730h-144z" />
+<glyph unicode="B" d="M190 445h15q59 0 85 20.5t26 64.5q0 49 -23 71t-73 22q-17 0 -30 -5v-173zM190 330v-218q20 -5 45 -5q51 0 75 27.5t24 90.5q0 57 -25.5 81t-88.5 24h-30zM470 210q0 -220 -240 -220q-93 0 -180 15v720q92 15 190 15q210 0 210 -185q0 -62 -32 -105t-83 -54v-2 q57 -10 96 -61.5t39 -122.5z" />
+<glyph unicode="C" d="M30 365q0 195 64.5 285t190.5 90q80 0 150 -25v-115q-70 25 -125 25q-74 0 -109.5 -58.5t-35.5 -201.5q0 -260 150 -260q57 0 125 30v-120q-70 -25 -150 -25q-260 0 -260 375z" />
+<glyph unicode="D" d="M344 365q0 142 -30 198.5t-94 56.5q-23 0 -40 -5v-500q17 -5 40 -5q63 0 93.5 55.5t30.5 199.5zM480 365q0 -144 -28.5 -226.5t-83.5 -115.5t-148 -33q-92 0 -180 15v720q88 15 180 15q141 0 200.5 -82t59.5 -293z" />
+<glyph unicode="E" d="M210 610v-165h220v-115h-220v-210h230v-120h-370v730h370v-120h-230z" />
+<glyph unicode="F" d="M220 330v-330h-140v730h360v-120h-220v-165h210v-115h-210z" />
+<glyph unicode="G" d="M310 625q-82 0 -116 -55t-34 -205q0 -143 32 -201.5t93 -58.5q27 0 48 10v215h-98v115h230v-415q-83 -40 -180 -40q-260 0 -260 375q0 196 69.5 285.5t215.5 89.5q70 0 130 -25v-115q-72 25 -130 25z" />
+<glyph unicode="H" d="M318 330h-140v-330h-138v730h138v-280h140v280h142v-730h-142v330z" />
+<glyph unicode="I" d="M430 0h-360v115h108v500h-108v115h360v-115h-108v-500h108v-115z" />
+<glyph unicode="J" d="M410 730v-515q0 -126 -48.5 -175.5t-166.5 -49.5q-86 0 -155 30v130q29 -18 68 -30t67 -12q50 0 71 26.5t21 95.5v385h-147v115h290z" />
+<glyph unicode="K" d="M192 330h-2v-330h-140v730h140v-300h2l135 300h148l-160 -345l165 -385h-150z" />
+<glyph unicode="L" d="M230 730v-610h210v-120h-350v730h140z" />
+<glyph unicode="M" d="M338 500h-2l-38 -300h-100l-38 300h-2v-500h-133v730h167l59 -400h2l59 400h163v-730h-137v500z" />
+<glyph unicode="N" d="M187 460h-2v-460h-140v730h147l125 -460h2v460h136v-730h-143z" />
+<glyph unicode="O" d="M250 740q121 0 175.5 -84t54.5 -291t-54.5 -291t-175.5 -84t-175.5 84t-54.5 291t54.5 291t175.5 84zM250 108q52 0 75 53.5t23 203.5t-23 203.5t-75 53.5t-75 -53.5t-23 -203.5t23 -203.5t75 -53.5z" />
+<glyph unicode="P" d="M334 503q0 120 -104 120q-23 0 -40 -5v-235q18 -5 40 -5q53 0 78.5 28t25.5 97zM470 503q0 -127 -57 -184.5t-173 -57.5q-26 0 -50 5v-266h-140v725q90 15 185 15q122 0 178.5 -56t56.5 -181z" />
+<glyph unicode="Q" d="M250 740q121 0 175.5 -84t54.5 -291q0 -257 -92 -333v-2q39 -22 68.5 -74t33.5 -106h-145q-15 81 -36.5 110.5t-58.5 29.5q-121 0 -175.5 84t-54.5 291t54.5 291t175.5 84zM250 108q52 0 75 53.5t23 203.5t-23 203.5t-75 53.5t-75 -53.5t-23 -203.5t23 -203.5t75 -53.5z " />
+<glyph unicode="R" d="M465 513q0 -151 -98 -199l-1 -2q27 -19 58 -118l61 -194h-145l-57 204q-12 43 -25.5 57.5t-42.5 14.5h-30v-276h-140v725q90 15 185 15q124 0 179.5 -53.5t55.5 -173.5zM185 393h30q64 0 89 24.5t25 95.5q0 58 -25.5 84t-78.5 26q-23 0 -40 -5v-225z" />
+<glyph unicode="S" d="M440 575q-84 48 -165 48q-41 0 -65 -21t-24 -57q0 -71 69 -100q116 -48 160.5 -103t44.5 -142q0 -210 -225 -210q-100 0 -180 50v135q83 -68 173 -68q94 0 94 88q0 76 -77 110q-108 46 -151.5 99.5t-43.5 135.5q0 90 57 145t153 55q102 0 180 -35v-130z" />
+<glyph unicode="T" d="M320 615v-615h-140v615h-145v115h430v-115h-145z" />
+<glyph unicode="U" d="M250 -10q-112 0 -161 54t-49 186v500h142v-460q0 -101 14.5 -131.5t55.5 -30.5t55.5 30.5t14.5 131.5v460h138v-500q0 -132 -49 -186t-161 -54z" />
+<glyph unicode="V" d="M253 110l92 620h140l-155 -730h-160l-155 730h144l92 -620h2z" />
+<glyph unicode="W" d="M164 190h2l38 440h100l38 -440h2l15 540h126l-45 -730h-157l-34 420h-2l-34 -420h-153l-45 730h134z" />
+<glyph unicode="X" d="M251 470h2l74 260h145l-132 -360l135 -370h-152l-74 270h-2l-74 -270h-148l135 370l-132 360h149z" />
+<glyph unicode="Y" d="M251 415h2l84 315h148l-165 -455v-275h-140v275l-165 455h152z" />
+<glyph unicode="Z" d="M290 613v2h-235v115h390v-115l-235 -498v-2h235v-115h-390v115z" />
+<glyph unicode="[" d="M410 675h-170v-750h170v-95h-290v940h290v-95z" />
+<glyph unicode="\" d="M35 730h120l310 -770h-120z" />
+<glyph unicode="]" d="M90 675v95h290v-940h-290v95h170v750h-170z" />
+<glyph unicode="^" d="M251 655h-2l-111 -375h-123l145 450h180l145 -450h-123z" />
+<glyph unicode="_" d="M40 -170v88h420v-88h-420z" />
+<glyph unicode="`" d="M90 810h190l100 -320h-120z" />
+<glyph unicode="a" d="M65 495q39 14 95 24.5t90 10.5q111 0 155.5 -45t44.5 -160v-325h-127l-2 65h-2q-49 -75 -134 -75q-68 0 -106.5 42t-38.5 118q0 88 63.5 136.5t186.5 48.5h25v10q0 40 -16 56.5t-54 16.5q-32 0 -86.5 -11.5t-93.5 -26.5v115zM315 245h-25q-59 0 -89.5 -23t-30.5 -62 q0 -31 15 -48t40 -17q90 0 90 130v20z" />
+<glyph unicode="b" d="M45 730h137v-275h2q49 75 116 75q83 0 129 -66.5t46 -203.5q0 -133 -47.5 -201.5t-127.5 -68.5q-35 0 -62.5 17.5t-56.5 62.5h-2l-2 -70h-132v730zM338 260q0 150 -78 150q-80 0 -80 -145v-10q0 -145 80 -145q35 0 56.5 36.5t21.5 113.5z" />
+<glyph unicode="c" d="M305 420q-115 0 -115 -160q0 -163 120 -163q60 0 120 28v-110q-68 -25 -140 -25q-116 0 -178 67.5t-62 202.5t60 202.5t175 67.5q67 0 135 -25v-110q-61 25 -115 25z" />
+<glyph unicode="d" d="M455 0h-132l-2 70h-2q-29 -45 -56.5 -62.5t-62.5 -17.5q-80 0 -127.5 68.5t-47.5 201.5q0 137 46 203.5t129 66.5q67 0 116 -75h2v275h137v-730zM162 260q0 -77 21.5 -113.5t56.5 -36.5q80 0 80 145v10q0 145 -80 145q-78 0 -78 -150z" />
+<glyph unicode="e" d="M182 206q7 -62 33 -85.5t80 -23.5q52 0 135 28v-110q-84 -25 -155 -25q-112 0 -173.5 68t-61.5 202q0 270 220 270q200 0 200 -270q0 -31 -2 -54h-276zM181 310h142q-1 63 -15.5 88t-47.5 25q-41 0 -58 -23t-21 -90z" />
+<glyph unicode="f" d="M60 391v109h100v45q0 104 40.5 149.5t129.5 45.5q56 0 110 -15v-110q-36 16 -80 16q-37 0 -50 -20.5t-13 -85.5v-25h143v-109h-143v-391h-137v391h-100z" />
+<glyph unicode="g" d="M323 75h-2q-45 -75 -116 -75q-78 0 -126.5 66.5t-48.5 193.5q0 137 46 203.5t129 66.5q35 0 62.5 -17.5t56.5 -62.5h2l2 70h132v-505q0 -245 -240 -245q-81 0 -150 25v115q76 -33 145 -33q55 0 81.5 34t26.5 114v50zM167 260q0 -70 22 -105t56 -35q80 0 80 135v10 q0 145 -80 145q-78 0 -78 -150z" />
+<glyph unicode="h" d="M50 730h137v-275h2q47 75 126 75t112 -47.5t33 -172.5v-310h-135v290q0 74 -12.5 98t-47.5 24t-56.5 -43.5t-21.5 -131.5v-237h-137v730z" />
+<glyph unicode="i" d="M110 520h240v-413h100v-107h-370v107h130v306h-100v107zM190 630v130h160v-130h-160z" />
+<glyph unicode="j" d="M225 -20v433h-110v107h250v-540q0 -68 -10.5 -106t-44 -63t-87.5 -33t-148 -8v109q39 0 60.5 0.5t41 5t27 9.5t13.5 18t7 27.5t1 40.5zM205 630v130h160v-130h-160z" />
+<glyph unicode="k" d="M480 520l-185 -250l185 -270h-162l-131 224v-224h-137v730h137v-418l133 208h160z" />
+<glyph unicode="l" d="M310 190q0 -68 9 -80.5t56 -12.5q31 0 75 6v-108q-44 -5 -100 -5q-111 0 -145.5 32.5t-34.5 137.5v463h-120v107h260v-540z" />
+<glyph unicode="m" d="M360 0v340q0 40 -21 40q-8 0 -12.5 -5t-7 -22.5t-2.5 -52.5v-300h-130v340q0 40 -21 40q-8 0 -12.5 -5t-7 -22.5t-2.5 -52.5v-300h-134v520h120l2 -65h2q15 34 39.5 54.5t48.5 20.5q28 0 45 -16t32 -59h2q42 75 99 75q48 0 69 -36t21 -134v-360h-130z" />
+<glyph unicode="n" d="M50 520h132l2 -70h2q49 80 129 80q79 0 112 -47.5t33 -172.5v-310h-135v290q0 74 -12.5 98t-47.5 24t-56.5 -43.5t-21.5 -131.5v-237h-137v520z" />
+<glyph unicode="o" d="M250 530q220 0 220 -270t-220 -270t-220 270t220 270zM250 97q44 0 62 33.5t18 129.5t-18 129.5t-62 33.5t-62 -33.5t-18 -129.5t18 -129.5t62 -33.5z" />
+<glyph unicode="p" d="M179 70h-2v-290h-137v740h132l2 -70h2q29 45 56.5 62.5t62.5 17.5q83 0 129 -66.5t46 -203.5q0 -133 -47.5 -201.5t-127.5 -68.5q-71 0 -116 80zM333 260q0 150 -78 150q-80 0 -80 -145v-10q0 -145 80 -145q35 0 56.5 36.5t21.5 113.5z" />
+<glyph unicode="q" d="M321 70q-45 -80 -116 -80q-80 0 -127.5 68.5t-47.5 201.5q0 137 46 203.5t129 66.5q35 0 62.5 -17.5t56.5 -62.5h2l2 70h132v-740h-137v290h-2zM167 260q0 -77 21.5 -113.5t56.5 -36.5q80 0 80 145v10q0 145 -80 145q-78 0 -78 -150z" />
+<glyph unicode="r" d="M375 416q-69 0 -111 -52t-42 -144v-220h-137v520h135v-85h2q36 53 70.5 74t82.5 21q36 0 70 -10v-115q-36 11 -70 11z" />
+<glyph unicode="s" d="M265 418q-73 0 -73 -43q0 -22 14.5 -35t48.5 -20q109 -21 149.5 -60t40.5 -115q0 -74 -50.5 -114.5t-144.5 -40.5q-107 0 -190 35v120q87 -43 165 -43q45 0 64 11.5t19 36.5q0 22 -14 34t-54 21q-99 21 -142 62.5t-43 112.5t49 110.5t146 39.5q99 0 180 -30v-115 q-87 33 -165 33z" />
+<glyph unicode="t" d="M445 500v-109h-158v-201q0 -61 10.5 -74.5t57.5 -13.5q43 0 80 17v-114q-50 -15 -110 -15q-98 0 -136.5 36.5t-38.5 133.5v231h-105v109h105v190h137v-190h158z" />
+<glyph unicode="u" d="M445 0h-132l-2 70h-2q-50 -80 -124 -80q-77 0 -108.5 44.5t-31.5 165.5v320h135v-300q0 -70 11 -91t44 -21q73 0 73 175v237h137v-520z" />
+<glyph unicode="v" d="M251 90h2l79 430h138l-130 -520h-180l-130 520h142z" />
+<glyph unicode="w" d="M343 120h2l29 400h116l-70 -520h-137l-37 358h-2l-31 -358h-133l-70 520h124l29 -400h2l39 400h100z" />
+<glyph unicode="x" d="M251 335h2l69 185h143l-125 -260l125 -260h-152l-64 180h-2l-64 -180h-148l125 260l-125 260h147z" />
+<glyph unicode="y" d="M254 170h2l87 350h142l-237 -740h-138l85 230l-170 510h142z" />
+<glyph unicode="z" d="M275 411h-210v109h370v-109l-210 -300v-2h210v-109h-370v109l210 300v2z" />
+<glyph unicode="{" d="M187 301v-2q58 -24 85.5 -62t27.5 -100v-112q0 -73 12 -86.5t75 -13.5h53v-95h-107q-80 0 -116.5 37t-36.5 123v147q0 61 -22 88t-68 27h-40v96h40q46 0 68 27t22 88v147q0 86 36.5 123t116.5 37h107v-95h-53q-63 0 -75 -13.5t-12 -86.5v-112q0 -62 -27.5 -100t-85.5 -62 z" />
+<glyph unicode="|" d="M188 -220v1030h124v-1030h-124z" />
+<glyph unicode="}" d="M313 301q-58 24 -85.5 62t-27.5 100v112q0 73 -12 86.5t-75 13.5h-53v95h107q80 0 116.5 -37t36.5 -123v-147q0 -61 22 -88t68 -27h40v-96h-40q-46 0 -68 -27t-22 -88v-147q0 -86 -36.5 -123t-116.5 -37h-107v95h53q63 0 75 13.5t12 86.5v112q0 62 27.5 100t85.5 62v2z " />
+<glyph unicode="~" d="M40 568v107q45 35 100 35q63 0 131 -50q49 -37 84 -37q49 0 105 51v-107q-45 -35 -100 -35q-63 0 -131 50q-49 37 -84 37q-49 0 -105 -51z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M251 415h2l84 315h148l-132 -365h97v-95h-130v-65h130v-95h-130v-110h-140v110h-130v95h130v65h-130v95h97l-132 365h152z" />
+<glyph unicode="&#xad;" d="M90 240v110h320v-110h-320z" />
+<glyph unicode="&#x2000;" horiz-adv-x="407" />
+<glyph unicode="&#x2001;" horiz-adv-x="815" />
+<glyph unicode="&#x2002;" horiz-adv-x="407" />
+<glyph unicode="&#x2003;" horiz-adv-x="815" />
+<glyph unicode="&#x2004;" horiz-adv-x="271" />
+<glyph unicode="&#x2005;" horiz-adv-x="203" />
+<glyph unicode="&#x2006;" horiz-adv-x="135" />
+<glyph unicode="&#x2007;" horiz-adv-x="135" />
+<glyph unicode="&#x2008;" horiz-adv-x="101" />
+<glyph unicode="&#x2009;" horiz-adv-x="163" />
+<glyph unicode="&#x200a;" horiz-adv-x="45" />
+<glyph unicode="&#x2010;" d="M90 240v110h320v-110h-320z" />
+<glyph unicode="&#x2011;" d="M90 240v110h320v-110h-320z" />
+<glyph unicode="&#x2013;" d="M50 240v110h400v-110h-400z" />
+<glyph unicode="&#x2014;" d="M10 240v110h480v-110h-480z" />
+<glyph unicode="&#x2018;" d="M305 460h-190l130 320h120z" />
+<glyph unicode="&#x2019;" d="M190 780h190l-130 -320h-120z" />
+<glyph unicode="&#x201c;" d="M405 460h-170l130 320h100zM195 460h-170l130 320h100z" />
+<glyph unicode="&#x201d;" d="M300 780h170l-130 -320h-100zM90 780h170l-130 -320h-100z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1000" d="M72 270v190h190v-190h-190zM405 270v190h190v-190h-190zM738 270v190h190v-190h-190z" />
+<glyph unicode="&#x202f;" horiz-adv-x="163" />
+<glyph unicode="&#x205f;" horiz-adv-x="203" />
+<glyph unicode="&#x2122;" horiz-adv-x="1000" d="M838 500h-2l-38 -300h-100l-38 300h-2v-500h-133v730h167l59 -400h2l59 400h163v-730h-137v500zM320 615v-615h-140v615h-145v115h430v-115h-145z" />
+</font>
+</defs></svg> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.ttf b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.ttf
new file mode 100644
index 0000000..0cf54cb
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.ttf
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.woff b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.woff
new file mode 100644
index 0000000..f90475d
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-bold-webfont.woff
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.eot b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.eot
new file mode 100644
index 0000000..a53f8b5
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.eot
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.svg b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.svg
new file mode 100644
index 0000000..3c835a3
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Foundry URL : http://mplus-fonts.sourceforge.jp
+</metadata>
+<defs>
+<font id="webfontVd14f4NN" horiz-adv-x="500" >
+<font-face units-per-em="1000" ascent="860" descent="-140" />
+<missing-glyph horiz-adv-x="500" />
+<glyph unicode=" " />
+<glyph unicode="!" d="M200 730h100l-10 -515h-80zM195 0v130h110v-130h-110z" />
+<glyph unicode="&#x22;" d="M275 780h100l-20 -280h-60zM125 780h100l-20 -280h-60z" />
+<glyph unicode="#" d="M40 188v72h77l29 228h-71v72h80l21 170h82l-21 -170h76l21 170h82l-21 -170h65v-72h-74l-29 -228h68v-72h-77l-23 -188h-82l23 188h-76l-23 -188h-82l23 188h-68zM199 260h76l29 228h-76z" />
+<glyph unicode="$" d="M293 311v-214q58 21 58 108q0 71 -58 106zM293 19v-104h-76v101q-70 6 -137 49v95q65 -57 137 -69v251q-77 31 -109.5 75.5t-32.5 117.5q0 76 37 122.5t105 55.5v102h76v-102q69 -8 127 -38v-90q-52 38 -127 52v-237q77 -31 109.5 -76.5t32.5 -118.5q0 -163 -142 -186z M217 429v207q-58 -18 -58 -101q0 -73 58 -106z" />
+<glyph unicode="%" d="M60 260l380 290v-80l-380 -290v80zM160 740q61 0 95.5 -41t34.5 -119t-34.5 -119t-95.5 -41t-95.5 41t-34.5 119t34.5 119t95.5 41zM340 310q61 0 95.5 -41t34.5 -119t-34.5 -119t-95.5 -41t-95.5 41t-34.5 119t34.5 119t95.5 41zM160 488q52 0 52 92t-52 92t-52 -92 t52 -92zM340 58q52 0 52 92t-52 92t-52 -92t52 -92z" />
+<glyph unicode="&#x26;" d="M228 665q-38 0 -60.5 -20t-22.5 -55q0 -29 12.5 -59t53.5 -95q59 51 79 83.5t20 70.5q0 33 -22 54t-60 21zM151 385l-9 14q-47 71 -63.5 111.5t-16.5 79.5q0 66 45 108t118 42t119 -42t46 -108q0 -57 -30.5 -106.5t-106.5 -112.5l119 -183v217h80v-253q-13 -28 -26 -46 l69 -106h-87l-33 49q-69 -59 -175 -59q-82 0 -128.5 46t-46.5 129q0 107 126 220zM331 115l-137 206q-84 -79 -84 -153q0 -51 27 -77t78 -26q70 0 116 50z" />
+<glyph unicode="'" d="M195 780h110l-25 -280h-60z" />
+<glyph unicode="(" d="M125 315q0 275 194 455h76q-196 -184 -196 -455t196 -455h-76q-194 180 -194 455z" />
+<glyph unicode=")" d="M375 315q0 -275 -194 -455h-76q196 184 196 455t-196 455h76q194 -180 194 -455z" />
+<glyph unicode="*" d="M214 750h72l-3 -169l160 55l22 -68l-161 -50l101 -135l-58 -42l-97 138l-97 -138l-58 42l101 135l-161 50l22 68l160 -55z" />
+<glyph unicode="+" d="M291 555v-214h149v-72h-149v-214h-82v214h-149v72h149v214h82z" />
+<glyph unicode="," d="M210 150h120l-110 -280h-70z" />
+<glyph unicode="-" d="M100 269v72h300v-72h-300z" />
+<glyph unicode="." d="M185 0v150h130v-150h-130z" />
+<glyph unicode="/" d="M452 730l-332 -770h-72l332 770h72z" />
+<glyph unicode="0" d="M250 740q48 0 82 -18t59 -60t37 -115.5t12 -181.5t-12 -181.5t-37 -115.5t-59 -60t-82 -18t-82 18t-59 60t-37 115.5t-12 181.5t12 181.5t37 115.5t59 60t82 18zM142 249l196 339q-26 82 -88 82q-36 0 -60 -26t-38 -95t-14 -184q0 -50 4 -116zM158 155q26 -95 92 -95 q36 0 60 26t38 95t14 184q0 78 -6 133z" />
+<glyph unicode="1" d="M258 0v645l-2 1l-173 -101v80l175 105h82v-730h-82z" />
+<glyph unicode="2" d="M175 74v-2h245v-72h-340v72q251 288 251 478q0 116 -93 116q-30 0 -76 -22.5t-82 -55.5v87q75 65 170 65q85 0 125 -47t40 -143q0 -99 -54 -208t-186 -268z" />
+<glyph unicode="3" d="M330 656v2h-250v72h345v-72l-180 -229v-2h10q91 0 133 -51t42 -166q0 -220 -195 -220q-73 0 -145 30v87q77 -43 130 -43q64 0 95 34.5t31 111.5q0 89 -25 117t-101 28h-70v72z" />
+<glyph unicode="4" d="M293 590h-2l-175 -341v-2h177v343zM293 175h-253v82l243 473h92v-483h85v-72h-85v-175h-82v175z" />
+<glyph unicode="5" d="M180 430h2q33 30 88 30q160 0 160 -230q0 -125 -49.5 -182.5t-145.5 -57.5q-74 0 -145 30v87q75 -43 140 -43q116 0 116 166q0 156 -96 156q-46 0 -80 -41h-75l10 385h305v-72h-223z" />
+<glyph unicode="6" d="M285 740q61 0 115 -20v-77q-50 25 -105 25q-70 0 -101 -48.5t-39 -184.5h2q50 50 113 50q87 0 128.5 -56t41.5 -184q0 -134 -46.5 -194.5t-138.5 -60.5q-65 0 -104 28.5t-60 101.5t-21 200q0 158 25.5 252t71 131t118.5 37zM255 62q54 0 78.5 39t24.5 144q0 94 -23.5 132 t-74.5 38q-106 0 -106 -160q0 -107 25 -150t76 -43z" />
+<glyph unicode="7" d="M345 656v2h-270v72h350v-72q-128 -296 -210 -658h-88q84 353 218 656z" />
+<glyph unicode="8" d="M255 670q-53 0 -81.5 -27.5t-28.5 -77.5q0 -54 29 -94t76 -51q52 14 80.5 51.5t28.5 93.5q0 47 -28.5 76t-75.5 29zM250 -10q-96 0 -148 51t-52 149q0 68 33 119t92 75v2q-48 23 -79 73.5t-31 105.5q0 82 49 128.5t136 46.5t136 -47t49 -128q0 -56 -30.5 -103.5 t-79.5 -70.5v-2q59 -23 92 -75t33 -124q0 -98 -52 -149t-148 -51zM255 60q53 0 84 33.5t31 96.5q0 130 -125 160q-61 -16 -90 -54.5t-29 -105.5q0 -62 35 -96t94 -34z" />
+<glyph unicode="9" d="M215 -10q-61 0 -115 20v80q52 -26 105 -26q70 0 101 47.5t39 183.5h-2q-50 -50 -113 -50q-84 0 -127 59t-43 191q0 126 46 185.5t139 59.5q68 0 107 -28t58.5 -100.5t19.5 -201.5q0 -158 -25.5 -252t-71 -131t-118.5 -37zM245 668q-55 0 -79 -38t-24 -135t25 -138.5 t73 -41.5q49 0 77.5 41.5t28.5 128.5q0 100 -25 141.5t-76 41.5z" />
+<glyph unicode=":" d="M190 390v150h120v-150h-120zM190 0v150h120v-150h-120z" />
+<glyph unicode=";" d="M200 150h120l-110 -280h-70zM200 390v150h120v-150h-120z" />
+<glyph unicode="&#x3c;" d="M435 510l-330 -204v-2l330 -204v-80l-380 245v80l380 245v-80z" />
+<glyph unicode="=" d="M60 165v72h380v-72h-380zM60 373v72h380v-72h-380z" />
+<glyph unicode="&#x3e;" d="M65 510v80l380 -245v-80l-380 -245v80l330 204v2z" />
+<glyph unicode="?" d="M445 580q0 -41 -14 -77t-28.5 -55t-42.5 -49q-29 -33 -43 -52t-28 -55t-14 -77h-80q0 55 16.5 101.5t32.5 68t47 56.5q24 27 36 42.5t23 41.5t11 55q0 41 -29.5 63.5t-86.5 22.5q-85 0 -180 -61v90q93 45 190 45q91 0 140.5 -42t49.5 -118zM180 0v130h110v-130h-110z" />
+<glyph unicode="@" d="M375 258v167q0 41 -16 63t-44 22q-40 0 -56 -29.5t-16 -115.5q0 -82 17 -113.5t55 -31.5q44 0 60 38zM165 365q0 215 140 215q38 0 73 -25h2v5q0 50 -27.5 79t-72.5 29q-83 0 -124 -70.5t-41 -232.5q0 -166 40 -234.5t125 -68.5q62 0 125 38v-80q-59 -30 -130 -30 q-122 0 -181 86t-59 289q0 197 60.5 286t179.5 89q87 0 133.5 -50t46.5 -150v-325q-65 -65 -140 -65q-76 0 -113 49t-37 166z" />
+<glyph unicode="A" d="M249 660h-2l-83 -380h168zM348 210h-200l-46 -210h-82l180 730h100l180 -730h-86z" />
+<glyph unicode="B" d="M157 430h45q80 0 116.5 29.5t36.5 90.5q0 57 -36 88.5t-102 31.5q-36 0 -60 -8v-232zM157 360v-292q37 -8 90 -8q126 0 126 160q0 140 -161 140h-55zM455 210q0 -220 -225 -220q-80 0 -155 15v720q75 15 155 15q205 0 205 -180q0 -61 -30.5 -103t-84.5 -56v-2 q58 -11 96.5 -64t38.5 -125z" />
+<glyph unicode="C" d="M55 365q0 197 60.5 286t179.5 89q66 0 125 -30v-75q-60 33 -120 33q-165 0 -165 -303q0 -164 42 -233.5t123 -69.5q62 0 125 38v-80q-59 -30 -130 -30q-122 0 -181 86t-59 289z" />
+<glyph unicode="D" d="M383 365q0 168 -43.5 235.5t-137.5 67.5q-33 0 -55 -8v-590q22 -8 55 -8q65 0 102.5 24.5t58 91.5t20.5 187zM465 365q0 -207 -63.5 -291t-199.5 -84q-70 0 -137 15v720q67 15 137 15q137 0 200 -85.5t63 -289.5z" />
+<glyph unicode="E" d="M162 658v-228h248v-70h-248v-288h258v-72h-340v730h340v-72h-258z" />
+<glyph unicode="F" d="M172 360v-360h-82v730h330v-72h-248v-228h238v-70h-238z" />
+<glyph unicode="G" d="M370 85v275h-155v70h235v-400q-80 -40 -170 -40q-118 0 -179 89t-61 286q0 196 63.5 285.5t191.5 89.5q59 0 130 -25v-77q-66 30 -130 30q-87 0 -132 -72t-45 -231q0 -303 167 -303q45 0 85 23z" />
+<glyph unicode="H" d="M140 730v-298h216v298h84v-730h-84v360h-216v-360h-80v730h80z" />
+<glyph unicode="I" d="M410 0h-320v70h118v590h-118v70h320v-70h-118v-590h118v-70z" />
+<glyph unicode="J" d="M400 730v-540q0 -110 -43.5 -155t-146.5 -45q-82 0 -150 30v87q29 -17 75.5 -31t74.5 -14q53 0 79 30.5t26 99.5v468h-165v70h250z" />
+<glyph unicode="K" d="M157 400h2l206 330h95l-225 -350l230 -380h-95l-211 360h-2v-360h-82v730h82v-330z" />
+<glyph unicode="L" d="M182 730v-658h238v-72h-320v730h82z" />
+<glyph unicode="M" d="M378 540h-2l-88 -340h-80l-88 340h-2v-540h-78v730h92l119 -450h2l119 450h88v-730h-82v540z" />
+<glyph unicode="N" d="M151 550h-2v-550h-84v730h84l204 -550h2v550h80v-730h-80z" />
+<glyph unicode="O" d="M250 740q107 0 158.5 -84.5t51.5 -290.5t-51.5 -290.5t-158.5 -84.5t-158.5 84.5t-51.5 290.5t51.5 290.5t158.5 84.5zM250 62q44 0 71 25.5t43 93.5t16 184t-16 184t-43 93.5t-71 25.5t-71 -25.5t-43 -93.5t-16 -184t16 -184t43 -93.5t71 -25.5z" />
+<glyph unicode="P" d="M375 520q0 79 -36 114.5t-112 35.5q-41 0 -70 -8v-292q30 -5 70 -5q77 0 112.5 35.5t35.5 119.5zM455 520q0 -120 -52.5 -172.5t-165.5 -52.5q-35 0 -80 5v-300h-82v725q78 15 160 15q114 0 167 -52.5t53 -167.5z" />
+<glyph unicode="Q" d="M250 740q107 0 158.5 -84.5t51.5 -290.5q0 -273 -100 -344v-2q41 -21 73 -66t47 -103h-88q-21 78 -54 109t-88 31q-107 0 -158.5 84.5t-51.5 290.5t51.5 290.5t158.5 84.5zM250 62q44 0 71 25.5t43 93.5t16 184t-16 184t-43 93.5t-71 25.5t-71 -25.5t-43 -93.5t-16 -184 t16 -184t43 -93.5t71 -25.5z" />
+<glyph unicode="R" d="M370 540q0 130 -148 130q-41 0 -70 -8v-272h60q87 0 122.5 33.5t35.5 116.5zM152 320v-320h-82v725q78 15 160 15q112 0 166 -49.5t54 -150.5q0 -143 -109 -193v-2q31 -15 66 -131l63 -214h-86l-59 216q-17 64 -41 84t-82 20h-50z" />
+<glyph unicode="S" d="M260 668q-47 0 -77.5 -30.5t-30.5 -77.5q0 -50 21.5 -82.5t71.5 -55.5q111 -49 153 -102.5t42 -139.5q0 -94 -51.5 -142t-148.5 -48q-91 0 -165 55v95q80 -78 170 -78q113 0 113 118q0 55 -26 91t-87 64q-94 42 -134.5 95.5t-40.5 129.5q0 80 51 130t134 50q53 0 87 -8 t78 -32v-90q-77 58 -160 58z" />
+<glyph unicode="T" d="M209 0v660h-154v70h390v-70h-154v-660h-82z" />
+<glyph unicode="U" d="M250 -10q-95 0 -142.5 48.5t-47.5 151.5v540h84v-520q0 -81 26.5 -114.5t81.5 -33.5t81.5 33.5t26.5 114.5v520h80v-540q0 -103 -47.5 -151.5t-142.5 -48.5z" />
+<glyph unicode="V" d="M253 70l135 660h82l-170 -730h-100l-170 730h86l135 -660h2z" />
+<glyph unicode="W" d="M153 120h2l54 510h90l54 -510h2l45 610h75l-60 -730h-109l-55 520h-2l-55 -520h-109l-60 730h83z" />
+<glyph unicode="X" d="M251 440h2l112 290h83l-148 -355l150 -375h-90l-111 305h-2l-112 -305h-85l150 375l-148 355h88z" />
+<glyph unicode="Y" d="M251 375h2l132 355h85l-179 -440v-290h-82v290l-179 440h90z" />
+<glyph unicode="Z" d="M335 658v2h-260v70h350v-70l-260 -588v-2h260v-70h-350v70z" />
+<glyph unicode="[" d="M390 710h-178v-790h178v-60h-250v910h250v-60z" />
+<glyph unicode="\" d="M48 730h72l332 -770h-72z" />
+<glyph unicode="]" d="M110 710v60h250v-910h-250v60h178v790h-178z" />
+<glyph unicode="^" d="M251 680h-2l-147 -400h-72l170 450h100l170 -450h-72z" />
+<glyph unicode="_" d="M50 -140v56h400v-56h-400z" />
+<glyph unicode="`" d="M130 810h120l100 -280h-70z" />
+<glyph unicode="a" d="M255 530q100 0 137.5 -40t37.5 -150v-340h-72l-2 75h-2q-47 -85 -149 -85q-65 0 -105 41.5t-40 113.5q0 91 61.5 140.5t183.5 49.5h48v25q0 57 -22 80t-76 23q-33 0 -84 -12t-86 -28v72q35 15 85 25t85 10zM353 275h-48q-170 0 -170 -125q0 -45 23 -69t62 -24q59 0 96 48 t37 135v35z" />
+<glyph unicode="b" d="M144 445h2q43 85 134 85q175 0 175 -270q0 -135 -48 -202.5t-127 -67.5q-84 0 -137 85h-2l-2 -75h-74v730h79v-285zM376 260q0 195 -116 195q-51 0 -83.5 -49.5t-32.5 -140.5v-10q0 -91 32.5 -140.5t83.5 -49.5q53 0 84.5 48.5t31.5 146.5z" />
+<glyph unicode="c" d="M70 260q0 134 55 202t155 68q61 0 125 -25v-80q-60 33 -120 33q-63 0 -98 -50t-35 -148q0 -101 37 -151t101 -50q59 0 120 36v-80q-64 -25 -125 -25q-102 0 -158.5 67.5t-56.5 202.5z" />
+<glyph unicode="d" d="M356 730h79v-730h-74l-2 75h-2q-53 -85 -137 -85q-79 0 -127 67.5t-48 202.5q0 270 175 270q91 0 134 -85h2v285zM124 260q0 -98 31.5 -146.5t84.5 -48.5q51 0 83.5 49.5t32.5 140.5v10q0 91 -32.5 140.5t-83.5 49.5q-116 0 -116 -195z" />
+<glyph unicode="e" d="M138 234q4 -93 38 -134t99 -41q61 0 135 36v-80q-74 -25 -140 -25q-215 0 -215 270q0 141 50 205.5t150 64.5q91 0 135.5 -62t44.5 -203q0 -11 -2 -31h-295zM138 300h218q-1 161 -101 161q-57 0 -85 -36t-32 -125z" />
+<glyph unicode="f" d="M75 431v69h120v60q0 98 33 139t107 41q45 0 90 -15v-72q-38 18 -75 18q-47 0 -61.5 -23.5t-14.5 -107.5v-40h151v-69h-151v-431h-79v431h-120z" />
+<glyph unicode="g" d="M50 260q0 270 175 270q83 0 137 -85h2l2 75h74v-515q0 -125 -50.5 -180t-154.5 -55q-71 0 -140 25v80q71 -36 140 -36q126 0 126 166v80h-2q-43 -85 -134 -85q-80 0 -127.5 66t-47.5 194zM129 260q0 -92 31.5 -138.5t84.5 -46.5q52 0 84 45.5t32 134.5v10 q0 91 -32.5 140.5t-83.5 49.5q-58 0 -87 -46.5t-29 -148.5z" />
+<glyph unicode="h" d="M440 330v-330h-77v312q0 88 -20 117.5t-73 29.5q-50 0 -85.5 -56t-35.5 -151v-252h-79v730h79v-285h2q19 39 56.5 62t82.5 23q79 0 114.5 -45.5t35.5 -154.5z" />
+<glyph unicode="i" d="M316 520v-452h109v-68h-330v68h139v384h-109v68h191zM214 640v120h102v-120h-102z" />
+<glyph unicode="j" d="M249 -33v485h-119v68h201v-553q0 -65 -8.5 -101t-36.5 -59t-72 -30t-123 -7v68q40 0 63 1t42.5 6.5t28.5 12.5t15.5 23.5t7.5 34.5t1 51zM229 640v120h102v-120h-102z" />
+<glyph unicode="k" d="M460 520l-230 -250l230 -270h-95l-206 253v-253h-79v730h79v-444l207 234h94z" />
+<glyph unicode="l" d="M281 150q0 -66 10.5 -79t63.5 -13q33 0 75 6v-69q-47 -5 -85 -5q-90 0 -118 28.5t-28 121.5v522h-129v68h211v-580z" />
+<glyph unicode="m" d="M290 0h-78v360q-1 58 -10.5 77.5t-32.5 19.5q-20 0 -35 -24t-25 -83.5t-10 -149.5v-200h-79v520h70l2 -70h2q17 38 42.5 59t53.5 21q31 0 50.5 -18.5t33.5 -61.5h2q39 80 104 80q53 0 76.5 -32.5t23.5 -117.5v-380h-77v360q-1 59 -11.5 78t-37.5 19q-64 0 -64 -197v-260z " />
+<glyph unicode="n" d="M440 330v-330h-77v312q0 88 -20 117.5t-73 29.5q-50 0 -85.5 -56t-35.5 -151v-252h-79v520h74l2 -75h2q19 38 58 61.5t84 23.5q79 0 114.5 -45.5t35.5 -154.5z" />
+<glyph unicode="o" d="M250 530q200 0 200 -270t-200 -270t-200 270t200 270zM250 59q61 0 89.5 45.5t28.5 155.5t-28.5 155.5t-89.5 45.5t-89.5 -45.5t-28.5 -155.5t28.5 -155.5t89.5 -45.5z" />
+<glyph unicode="p" d="M141 75h-2v-295h-79v740h74l2 -75h2q54 85 137 85q175 0 175 -270q0 -135 -48 -202.5t-127 -67.5q-91 0 -134 85zM371 260q0 195 -116 195q-51 0 -83.5 -49.5t-32.5 -140.5v-10q0 -91 32.5 -140.5t83.5 -49.5q53 0 84.5 48.5t31.5 146.5z" />
+<glyph unicode="q" d="M359 75q-43 -85 -134 -85q-79 0 -127 67.5t-48 202.5q0 270 175 270q83 0 137 -85h2l2 75h74v-740h-79v295h-2zM129 260q0 -98 31.5 -146.5t84.5 -48.5q51 0 83.5 49.5t32.5 140.5v10q0 91 -32.5 140.5t-83.5 49.5q-116 0 -116 -195z" />
+<glyph unicode="r" d="M186 520v-100h2q62 110 172 110q37 0 70 -10v-70q-35 11 -70 11q-73 0 -122 -61t-49 -160v-240h-79v520h76z" />
+<glyph unicode="s" d="M255 463q-96 0 -96 -73q0 -34 21 -54.5t75 -35.5q106 -30 140.5 -63t34.5 -102t-47 -107t-133 -38t-165 40v80q78 -53 155 -53q111 0 111 78q0 37 -21.5 57t-84.5 38q-92 26 -128.5 62t-36.5 98q0 66 43.5 103t126.5 37q84 0 160 -35v-75q-79 43 -155 43z" />
+<glyph unicode="t" d="M244 500h181v-69h-181v-281q0 -56 16.5 -74.5t64.5 -18.5q50 0 90 18v-70q-48 -15 -100 -15q-84 0 -117 32.5t-33 117.5v291h-100v69h100v190h79v-190z" />
+<glyph unicode="u" d="M65 180v340h77v-322q0 -83 18.5 -110t69.5 -27q49 0 82.5 55t33.5 152v252h79v-520h-74l-2 75h-2q-19 -40 -56 -62.5t-81 -22.5q-77 0 -111 43t-34 147z" />
+<glyph unicode="v" d="M251 60h2l115 460h82l-145 -520h-110l-145 520h86z" />
+<glyph unicode="w" d="M351 80h2l49 440h78l-80 -520h-99l-54 440h-2l-49 -440h-96l-80 520h82l49 -440h2l49 440h100z" />
+<glyph unicode="x" d="M251 305h2l104 215h88l-145 -260l145 -260h-94l-102 215h-2l-102 -215h-90l145 260l-145 260h92z" />
+<glyph unicode="y" d="M259 120h2l117 400h87l-240 -740h-83l78 230l-175 510h88z" />
+<glyph unicode="z" d="M80 520h340v-69l-248 -380v-2h248v-69h-340v69l248 380v2h-248v69z" />
+<glyph unicode="{" d="M195 316l4 -2q81 -38 81 -149v-135q0 -72 16.5 -91t78.5 -19h40v-60h-65q-73 0 -107.5 35.5t-34.5 114.5v150q0 66 -21.5 95.5t-66.5 29.5h-45v60h45q45 0 66.5 29.5t21.5 95.5v150q0 79 34.5 114.5t107.5 35.5h65v-60h-40q-62 0 -78.5 -19t-16.5 -91v-135q0 -61 -20 -95 t-65 -54z" />
+<glyph unicode="|" d="M212 -220v1030h76v-1030h-76z" />
+<glyph unicode="}" d="M305 316q-45 20 -65 54t-20 95v135q0 72 -16.5 91t-78.5 19h-40v60h65q73 0 107.5 -35.5t34.5 -114.5v-150q0 -66 21.5 -95.5t66.5 -29.5h45v-60h-45q-45 0 -66.5 -29.5t-21.5 -95.5v-150q0 -79 -34.5 -114.5t-107.5 -35.5h-65v60h40q62 0 78.5 19t16.5 91v135 q0 111 81 149z" />
+<glyph unicode="~" d="M50 602v75q42 33 95 33q61 0 125 -48q48 -35 80 -35q25 0 47 10t53 39v-75q-42 -33 -95 -33q-61 0 -125 48q-47 35 -80 35q-25 0 -47 -10t-53 -39z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M251 375h2l132 355h85l-153 -375h123v-65h-149v-85h149v-65h-149v-140h-82v140h-149v65h149v85h-149v65h123l-153 375h90z" />
+<glyph unicode="&#xad;" d="M100 269v72h300v-72h-300z" />
+<glyph unicode="&#x2000;" horiz-adv-x="407" />
+<glyph unicode="&#x2001;" horiz-adv-x="815" />
+<glyph unicode="&#x2002;" horiz-adv-x="407" />
+<glyph unicode="&#x2003;" horiz-adv-x="815" />
+<glyph unicode="&#x2004;" horiz-adv-x="271" />
+<glyph unicode="&#x2005;" horiz-adv-x="203" />
+<glyph unicode="&#x2006;" horiz-adv-x="135" />
+<glyph unicode="&#x2007;" horiz-adv-x="135" />
+<glyph unicode="&#x2008;" horiz-adv-x="101" />
+<glyph unicode="&#x2009;" horiz-adv-x="163" />
+<glyph unicode="&#x200a;" horiz-adv-x="45" />
+<glyph unicode="&#x2010;" d="M100 269v72h300v-72h-300z" />
+<glyph unicode="&#x2011;" d="M100 269v72h300v-72h-300z" />
+<glyph unicode="&#x2013;" d="M60 269v72h380v-72h-380z" />
+<glyph unicode="&#x2014;" d="M20 269v72h460v-72h-460z" />
+<glyph unicode="&#x2018;" d="M275 500h-120l110 280h70z" />
+<glyph unicode="&#x2019;" d="M220 780h120l-110 -280h-70z" />
+<glyph unicode="&#x201c;" d="M340 500h-110l110 280h60zM190 500h-110l110 280h60z" />
+<glyph unicode="&#x201d;" d="M300 780h110l-110 -280h-60zM150 780h110l-110 -280h-60z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1000" d="M102 288v150h130v-150h-130zM435 288v150h130v-150h-130zM768 288v150h130v-150h-130z" />
+<glyph unicode="&#x202f;" horiz-adv-x="163" />
+<glyph unicode="&#x205f;" horiz-adv-x="203" />
+<glyph unicode="&#x2122;" horiz-adv-x="1000" d="M878 540h-2l-88 -340h-80l-88 340h-2v-540h-78v730h92l119 -450h2l119 450h88v-730h-82v540zM209 0v660h-154v70h390v-70h-154v-660h-82z" />
+</font>
+</defs></svg> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.ttf b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.ttf
new file mode 100644
index 0000000..684abfd
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.ttf
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.woff b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.woff
new file mode 100644
index 0000000..49585d8
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/fonts/mplus-1m-regular-webfont.woff
Binary files differ
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/handheld.css b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/handheld.css
new file mode 100644
index 0000000..073c0d1
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/handheld.css
@@ -0,0 +1,217 @@
+/*
+ * TABLE OF CONTENTS:
+ * - Browser reset
+ * - HTML elements
+ * - JsDoc styling
+ * - Media query check
+ */
+
+
+
+
+
+
+/*
+ * HTML ELEMENTS
+ */
+
+body {
+ padding: 1% 4% 1% 4%;
+}
+
+/*
+ * HTML ELEMENTS
+ */
+
+
+
+
+
+/*
+ * BEGIN JSDOC
+ */
+
+/* Start menu */
+div.index div.menu {
+ position: fixed;
+ top: 0;
+ right: 0;
+ -moz-border-radius-bottomleft: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+ -border-bottom-left-radius: 15px;
+ padding: 4px 5px 8px 10px;
+ -moz-box-shadow: 0px 0px 10px #c4c4c4;
+ -webkit-box-shadow: 0px 0px 10px #c4c4c4;
+ box-shadow: 0px 0px 10px #c4c4c4;
+ background-color: rgba(255, 255, 255, 0.9);
+}
+
+div.index input.classFilter {
+ display: none;
+}
+
+div.index div.indexLinks a {
+ float: right;
+ clear: both;
+ font-size: 1.1em;
+}
+
+div.index *.heading1 {
+ display:none;
+}
+
+div.index ul.classList {
+ display:none;
+}
+
+div.index div.fineprint {
+ display:none;
+}
+
+div.indexStatic {
+ display: none;
+}
+/* End menu */
+
+
+
+/* Start content */
+div.content *.classTitle {
+ margin-right: 60px;
+ margin-bottom: 15px;
+}
+
+div.content div.intro {
+ margin: 15px 0 35px;
+}
+
+div.content p.description.summary {
+ margin-bottom: 0.2em;
+}
+
+div.content div.props {
+ margin: 1.5em -2% 0 -2%;
+ padding: 2%;
+}
+
+table.summaryTable {
+ position: relative;
+ left: -10px;
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ -ms-box-sizing: content-box;
+ -o-box-sizing: content-box;
+ -icab-box-sizing: content-box;
+ -khtml-box-sizing: content-box;
+}
+
+*.sectionTitle {
+ padding: 0 10px 10px 0;
+}
+caption.sectionTitle {
+ padding-left: 10px;
+}
+
+table.summaryTable td,
+table.summaryTable th {
+ padding: 0px 10px 10px 10px;
+}
+table.summaryTable tr:last-child td {
+ padding-bottom: 0;
+}
+
+table.summaryTable td.attributes {
+ width: 35%;
+}
+
+table.summaryTable td.nameDescription {
+ width: 65%
+}
+
+
+
+dl.detailList {
+ margin-top: 0.5em;
+}
+
+dl.detailList.nomargin + dl.detailList.nomargin {
+ margin-top: 0;
+}
+
+dl.detailList dt {
+ display: inline;
+ margin-right: 5px;
+}
+
+dl.detailList dt:before {
+ display: block;
+ content: "";
+}
+
+dl.detailList dd {
+ display: inline;
+}
+
+dl.detailList.params dt {
+ display: block;
+}
+dl.detailList.params dd {
+ display: block;
+ padding-left: 2em;
+ padding-bottom: 0.4em;
+}
+
+
+
+
+ul.fileList li {
+ margin-bottom: 1.5em;
+}
+
+
+
+.fixedFont.heading {
+ margin-bottom: 0.5em;
+}
+
+pre.code {
+ margin: 10px 0 10px 0;
+ padding: 10px;
+ border: 1px solid #ccc;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+/* End content */
+
+/*
+ * END JSDOC
+ */
+
+
+
+
+
+
+
+/*
+ * START MEDIA QUERY CHECK
+ */
+
+.cssLoadCheck {
+ position: absolute;
+ top: -99999px;
+ left: -99999px;
+ border: 0;
+ width: 100px;
+ padding: 0;
+ overflow: hidden;
+}
+
+/*
+ * END MEDIA QUERY CHECK
+ */
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/screen.css b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/screen.css
new file mode 100644
index 0000000..8cb4bba
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/css/screen.css
@@ -0,0 +1,297 @@
+/*
+ * TABLE OF CONTENTS:
+ * - JsDoc styling
+ * - Media query check
+ */
+
+
+
+
+
+
+/*
+ * BEGIN JSDOC
+ */
+
+/* Start menu */
+div.index {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ float: left;
+ width: 30%;
+ min-width: 100px;
+ max-width: 300px;
+ padding: 0 0 10px 0;
+ overflow: auto;
+}
+
+div.index *.heading1 {
+ padding: 8px 0 0 0;
+}
+
+div.index div.menu {
+ margin: 0 15px 0 -15px;
+ -moz-border-radius-bottomright: 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -border-bottom-right-radius: 15px;
+ padding: 15px 15px 15px 30px;
+ -moz-box-shadow: 0px 0px 10px #c4c4c4;
+ -webkit-box-shadow: 0px 0px 10px #c4c4c4;
+ box-shadow: 0px 0px 10px #c4c4c4;
+ background-color: rgba(255, 255, 255, 0.5);
+}
+
+div.index div.indexLinks {
+ margin-top: 13px;
+ position: absolute;
+ right: 30px;
+}
+
+div.index div.indexLinks a {
+ color: #999999;
+ text-transform: lowercase;
+}
+
+div.index div.indexLinks a:first-child {
+ margin-right: 3px;
+ border-right: 1px solid #999999;
+ padding-right: 5px;
+}
+
+div.index input.classFilter {
+ margin-bottom: 4px;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #CCCCCC #999999 #999999 #CCCCCC;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -border-radius: 3px;
+}
+
+div.index ul.classList a {
+ line-height: 1.3em;
+}
+
+div.index ul.classList a + a {
+ margin-left: 0.5em;
+}
+
+div.index div.fineprint {
+ margin: 1em 0 0 15px;
+ color: #777;
+ font-size: 0.9em;
+}
+
+div.index div.fineprint a {
+ color: #777;
+}
+
+div.indexStatic {
+ position: static;
+ min-height: 1em;
+}
+/* End menu */
+
+
+/* Start content */
+div.content {
+ float: left;
+ width: 70%;
+ min-width: 300px;
+ max-width: 600px;
+}
+div.innerContent {
+ padding: 0 0 0 2.5em;
+}
+
+div.content ul,
+div.content ol {
+ margin-bottom: 3em;
+}
+
+div.content ul.methodDetail {
+ margin-bottom: 0;
+}
+
+div.content *.classTitle {
+ position: relative;
+ left: -10px;
+ margin: -30px 0 15px 0;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+ border-radius: 15px;
+ padding: 25px 15px 15px 15px;
+ background-color: #FFFFFF;
+ background-color: rgba(255, 255, 255, 0.5);
+ -moz-box-shadow: 0px 0px 10px #c4c4c4;
+ -webkit-box-shadow: 0px 0px 10px #c4c4c4;
+ box-shadow: 0px 0px 10px #c4c4c4;
+}
+
+div.content div.intro {
+ margin: 15px 0 45px
+}
+
+div.content p.summary {
+ margin-bottom: 0.5em;
+}
+
+div.content ul.summary {
+ margin-bottom: 1.5em;
+}
+
+div.content ul *.classname a,
+div.content ul *.filename a {
+ font-family: Consolas, "Courier New", Courier, monospace;
+ text-decoration: none;
+ font-weight: bold;
+}
+div.content ul *.classname a:hover,
+div.content ul *.filename a:hover {
+ text-decoration: underline;
+}
+
+div.content div.props {
+ position: relative;
+ left: -10px;
+ margin-bottom: 2.5em;
+ padding: 10px 15px 15px 15px;
+ overflow: hidden;
+}
+
+div.content div.hr {
+ margin: 0 10px 0 0;
+ height: 4em;
+}
+
+
+
+table.summaryTable {
+ position: relative;
+ left: -10px;
+ width: 100%;
+ border-collapse: collapse;
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ -ms-box-sizing: content-box;
+ -o-box-sizing: content-box;
+ -icab-box-sizing: content-box;
+ -khtml-box-sizing: content-box;
+}
+
+*.sectionTitle {
+ padding: 0 10px 10px 0;
+}
+caption.sectionTitle {
+ padding-left: 10px;
+}
+
+table.summaryTable td,
+table.summaryTable th {
+ padding: 0px 10px 10px 10px;
+}
+table.summaryTable tr:last-child td {
+ padding-bottom: 0;
+}
+
+table.summaryTable td.attributes {
+ width: 35%;
+}
+
+table.summaryTable td.nameDescription {
+ width: 65%
+}
+
+
+
+dl.detailList {
+ margin-top: 0.5em;
+}
+
+dl.detailList.nomargin + dl.detailList.nomargin {
+ margin-top: 0;
+}
+
+dl.detailList dt {
+ display: inline;
+ margin-right: 5px;
+}
+
+dl.detailList dt:before {
+ display: block;
+ content: "";
+}
+
+dl.detailList dd {
+ display: inline;
+}
+
+dl.detailList.params dt {
+ display: block;
+}
+dl.detailList.params dd {
+ display: block;
+ padding-left: 2em;
+ padding-bottom: 0.4em;
+}
+
+
+
+
+ul.fileList li {
+ margin-bottom: 1.5em;
+}
+
+
+
+.fixedFont.heading {
+ margin-bottom: 0.5em;
+}
+
+pre.code {
+ margin: 10px 0 10px 0;
+ padding: 10px;
+ border: 1px solid #ccc;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+/* End content */
+
+.clear {
+ clear: both;
+ width: 100%;
+ min-height: 0;
+}
+
+/*
+ * END JSDOC
+ */
+
+
+
+
+
+
+
+/*
+ * START MEDIA QUERY CHECK
+ */
+
+.cssLoadCheck {
+ position: absolute;
+ top: -99999px;
+ left: -99999px;
+ border: 0;
+ width: 100px;
+ padding: 0;
+ overflow: hidden;
+}
+
+/*
+ * END MEDIA QUERY CHECK
+ */
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/files.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/files.html
new file mode 100644
index 0000000..a4f372a
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/files.html
@@ -0,0 +1,133 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>File Index | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="css/all.css" media="all" />
+ <link rel="stylesheet" href="css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="index.html">Classes</a>
+ <a href="files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="symbols/_global_.html">_global_</a></li>
+
+ <li><a href="symbols/mockup.html">mockup</a></li>
+
+ <li><a href="symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <h1 class="classTitle"><span>File Index</span></h1>
+
+ <ul class="fileList" id="FileList">
+
+ <li>
+ <h2 class="filename"><a href="symbols/src/RAI_lib_rai.js.html">rai.js</a></h2>
+
+
+This is the main file for the RAI library to create text based servers
+
+ <dl class="detailList">
+
+ <dt class="heading">Author:</dt>
+ <dd><a href="mailto:andris@node.ee">Andris Reinman</a></dd>
+
+
+
+ <dt class="heading">Version:</dt>
+ <dd>0.1.3</dd>
+
+
+
+
+ </dl>
+ </li>
+
+ <li>
+ <h2 class="filename"><a href="symbols/src/RAI_lib_mockup.js.html">RAI/lib/mockup.js</a></h2>
+
+
+
+ <dl class="detailList">
+
+
+
+
+
+
+ </dl>
+ </li>
+
+ <li>
+ <h2 class="filename"><a href="symbols/src/RAI_lib_starttls.js.html">RAI/lib/starttls.js</a></h2>
+
+
+
+ <dl class="detailList">
+
+
+
+
+
+
+ </dl>
+ </li>
+
+ </ul>
+ </article>
+ </div>
+</div>
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('css/screen.css', 'css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/index.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/index.html
new file mode 100644
index 0000000..544613f
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/index.html
@@ -0,0 +1,107 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>Class Index | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="css/all.css" media="all" />
+ <link rel="stylesheet" href="css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="index.html">Classes</a>
+ <a href="files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="symbols/_global_.html">_global_</a></li>
+
+ <li><a href="symbols/mockup.html">mockup</a></li>
+
+ <li><a href="symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <h1 class="classTitle"><span>Class Index</span></h1>
+
+ <ul id="ClassList2">
+
+ <li>
+ <h2 class="classname"><a href="symbols/_global_.html">_global_</a></h2>
+ <p></p>
+ </li>
+
+ <li>
+ <h2 class="classname"><a href="symbols/mockup.html">mockup</a></h2>
+ <p>Mockup module</p>
+ </li>
+
+ <li>
+ <h2 class="classname"><a href="symbols/RAIServer.html">RAIServer</a></h2>
+ <p></p>
+ </li>
+
+ <li>
+ <h2 class="classname"><a href="symbols/RAISocket.html">RAISocket</a></h2>
+ <p></p>
+ </li>
+
+ <li>
+ <h2 class="classname"><a href="symbols/starttls.html">starttls</a></h2>
+ <p>STARTTLS module</p>
+ </li>
+
+ </ul>
+ </article>
+ </div>
+</div>
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('css/screen.css', 'css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/all.js b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/all.js
new file mode 100644
index 0000000..5b6876a
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/all.js
@@ -0,0 +1,326 @@
+/**
+ * @fileOverview Contains standard code in the namespace 'wbos' and code specifically written for Codeview in the namespace 'codeview'
+ * @author Wouter Bos (www.thebrightlines.com)
+ * @since 1.0 - 2010-09-10
+ * @version 1.0 - 2010-09-10
+ */
+
+
+
+
+
+
+if (typeof(wbos) == "undefined") {
+ /**
+ * @namespace Standard code of Wouter Bos (wbos)
+ */
+ wbos = {}
+}
+if (typeof(wbos.CssTools) == "undefined") {
+ /**
+ * @namespace Namespace for CSS-related functionality
+ */
+ wbos.CssTools = {}
+}
+
+
+
+
+/**
+ * @namespace Fallback for CSS advanced media query
+ * @class
+ * @since 1.0 - 2010-09-10
+ * @version 1.0 - 2010-09-10
+ */
+wbos.CssTools.MediaQueryFallBack = ( function() {
+ var config = {
+ cssScreen: "/css/screen.css",
+ cssHandheld: "/css/handheld.css",
+ mobileMaxWidth: 660,
+ testDivClass: "cssLoadCheck",
+ dynamicCssLinkId: "DynCssLink",
+ resizeDelay: 30
+ }
+ var noMediaQuery = false;
+ var delay;
+ var currentCssMediaType;
+
+ // Adding events to elements in the DOM without overwriting it
+ function addEvent(element, newFunction, eventType) {
+ var oldEvent = eval("element." + eventType);
+ var eventContentType = eval("typeof element." + eventType)
+
+ if ( eventContentType != 'function' ) {
+ eval("element." + eventType + " = newFunction")
+ } else {
+ eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }")
+ }
+ }
+
+ // Get the the inner width of the browser window
+ function getWindowWidth() {
+ if (window.innerWidth) {
+ return window.innerWidth;
+ } else if (document.documentElement.clientWidth) {
+ return document.documentElement.clientWidth;
+ } else if (document.body.clientWidth) {
+ return document.body.clientWidth;
+ } else{
+ return 0;
+ }
+ }
+
+ function addCssLink(cssHref) {
+ var cssNode = document.createElement('link');
+ var windowWidth;
+ cssNode.type = 'text/css';
+ cssNode.rel = 'stylesheet';
+ cssNode.media = 'screen, handheld, fallback';
+ cssNode.href = cssHref;
+ document.getElementsByTagName("head")[0].appendChild(cssNode);
+ }
+
+
+
+ /* Start public */
+ return {
+ /**
+ * Adds link to CSS in the head if no CSS is loaded
+ *
+ * @since 1.0 - 2010-08-21
+ * @version 1.0 - 2010-08-21
+ * @param {String|Object} cssScreen URL to CSS file for larger screens
+ * @param {String|Object} cssHandheld URL to CSS file for smaller screens
+ * @param {Number} mobileMaxWidth Maximum width for handheld devices
+ * @example
+ * wbos.CssTools.MediaQueryFallBack.LoadCss(['screen.css', 'screen2.css'], 'mobile.css', 480)
+ */
+ LoadCss: function(cssScreen, cssHandheld, mobileMaxWidth) {
+ // Set config values
+ if (typeof(cssScreen) != "undefined") {
+ config.cssScreen = cssScreen;
+ }
+ if (typeof(cssHandheld) != "undefined") {
+ config.cssHandheld = cssHandheld;
+ }
+ if (typeof(mobileMaxWidth) != "undefined") {
+ config.mobileMaxWidth = mobileMaxWidth;
+ }
+
+ // Check if CSS is loaded
+ var cssloadCheckNode = document.createElement('div');
+ cssloadCheckNode.className = config.testDivClass;
+ document.getElementsByTagName("body")[0].appendChild(cssloadCheckNode);
+ if (cssloadCheckNode.offsetWidth != 100 && noMediaQuery == false) {
+ noMediaQuery = true;
+ }
+ cssloadCheckNode.parentNode.removeChild(cssloadCheckNode)
+
+ if (noMediaQuery == true) {
+ // Browser does not support Media Queries, so JavaScript will supply a fallback
+ var cssHref = "";
+
+ // Determines what CSS file to load
+ if (getWindowWidth() <= config.mobileMaxWidth) {
+ cssHref = config.cssHandheld;
+ newCssMediaType = "handheld";
+ } else {
+ cssHref = config.cssScreen;
+ newCssMediaType = "screen";
+ }
+
+ // Add CSS link to <head> of page
+ if (cssHref != "" && currentCssMediaType != newCssMediaType) {
+ var currentCssLinks = document.styleSheets
+ for (var i = 0; i < currentCssLinks.length; i++) {
+ for (var ii = 0; ii < currentCssLinks[i].media.length; ii++) {
+ if (typeof(currentCssLinks[i].media) == "object") {
+ if (currentCssLinks[i].media.item(ii) == "fallback") {
+ currentCssLinks[i].ownerNode.parentNode.removeChild(currentCssLinks[i].ownerNode)
+ i--
+ break;
+ }
+ } else {
+ if (currentCssLinks[i].media.indexOf("fallback") >= 0) {
+ currentCssLinks[i].owningElement.parentNode.removeChild(currentCssLinks[i].owningElement)
+ i--
+ break;
+ }
+ }
+ }
+ }
+ if (typeof(cssHref) == "object") {
+ for (var i = 0; i < cssHref.length; i++) {
+ addCssLink(cssHref[i])
+ }
+ } else {
+ addCssLink(cssHref)
+ }
+
+ currentCssMediaType = newCssMediaType;
+ }
+
+
+ // Check screen size again if user resizes window
+ addEvent(window, wbos.CssTools.MediaQueryFallBack.LoadCssDelayed, 'onresize')
+ }
+ },
+
+ /**
+ * Runs LoadCSS after a short delay
+ *
+ * @since 1.0 - 2010-08-21
+ * @version 1.0 - 2010-08-21
+ * @example
+ * wbos.CssTools.MediaQueryFallBack.LoadCssDelayed()
+ */
+ LoadCssDelayed: function() {
+ clearTimeout(delay);
+ delay = setTimeout( "wbos.CssTools.MediaQueryFallBack.LoadCss()", config.resizeDelay)
+ }
+
+ }
+ /* End public */
+})();
+
+
+
+
+
+
+/**
+ * @namespace Adds a function to an event of a single element. Use this if
+ * you don't want to use jQuery
+ * @class
+ * @since 1.0 - 2010-02-23
+ * @version 1.0 - 2010-02-23
+ */
+wbos.Events = ( function() {
+ /* Start public */
+ return {
+ /**
+ * Adds a function to an event of a single element
+ *
+ * @since 1.0 - 2010-02-23
+ * @version 1.0 - 2010-02-23
+ * @param {Object} element The element on which the event is placed
+ * @param {Function} newFunction The function that has to be linked to the event
+ * @param {String} eventType Name of the event
+ * @example
+ * wbos.Events.AddEvent( document.getElementById('elementId'), functionName, "onclick" )
+ */
+ AddEvent: function( element, newFunction, eventType ) {
+ var oldEvent = eval("element." + eventType);
+ var eventContentType = eval("typeof element." + eventType)
+
+ if ( eventContentType != 'function' ) {
+ eval("element." + eventType + " = newFunction")
+ } else {
+ eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }")
+ }
+ }
+ }
+ /* End public */
+})();
+
+
+
+
+
+
+if (typeof(codeview) == "undefined") {
+ /**
+ * @namespace Code written for the Codeview template
+ */
+ codeview = {}
+}
+
+
+
+
+
+
+
+/**
+ * @namespace Enables filtering in class lists
+ * @class
+ * @since 1.0 - 2010-11-08
+ * @version 1.0 - 2010-11-08
+ */
+codeview.classFilter = ( function() {
+ function onkeyup_ClassFilter() {
+ var listItems
+ var search = document.getElementById('ClassFilter').value
+ search = search.toLowerCase()
+ if (document.getElementById('ClassList')) {
+ listItems = document.getElementById('ClassList').getElementsByTagName('li')
+ filterList(listItems, search)
+ }
+ if (document.getElementById('ClassList2')) {
+ listItems = document.getElementById('ClassList2').getElementsByTagName('li')
+ filterList(listItems, search)
+ }
+ if (document.getElementById('FileList')) {
+ listItems = document.getElementById('FileList').getElementsByTagName('li')
+ filterList(listItems, search)
+ }
+ if (document.getElementById('MethodsListInherited')) {
+ var links = document.getElementById('MethodsListInherited').getElementsByTagName('a')
+ var linksSelected = new Array()
+ for (var i=0; i < links.length; i++) {
+ if (links[i].parentNode.parentNode.tagName == "DD") {
+ linksSelected.push(links[i])
+ }
+ }
+ filterList(linksSelected, search)
+ }
+ if (document.getElementById('MethodsList')) {
+ listItems = document.getElementById('MethodsList').getElementsByTagName('tbody')[0].getElementsByTagName('tr')
+ filterList(listItems, search, document.getElementById('MethodDetail').getElementsByTagName('li'))
+ }
+ }
+
+ function filterList(listItems, search, relatedElements) {
+ var itemContent = ""
+ for (var i=0; i < listItems.length; i++) {
+ itemContent = listItems[i].textContent||listItems[i].innerText
+ if (itemContent != undefined) {
+ itemContent = itemContent.toLowerCase()
+ itemContent = itemContent.replace(/\s/g, "")
+ if (itemContent.indexOf(search) >= 0 || itemContent == "") {
+ listItems[i].style.display = ""
+ } else {
+ listItems[i].style.display = "none"
+ }
+ if (relatedElements != null) {
+ filterRelatedList(listItems[i], search, relatedElements)
+ }
+ }
+ }
+ }
+
+ function filterRelatedList(listItem, search, relatedElements) {
+ var itemIndex = parseInt(listItem.className.replace('item', ''))
+ if (itemIndex <= relatedElements.length) {
+ if (relatedElements[itemIndex].className == "item"+ itemIndex) {
+ relatedElements[itemIndex].style.display = listItem.style.display
+ }
+ }
+ }
+
+
+
+
+
+ /* Start public */
+ return {
+ Init: function() {
+ wbos.Events.AddEvent(
+ document.getElementById('ClassFilter'),
+ onkeyup_ClassFilter,
+ "onkeyup"
+ )
+ }
+ }
+ /* End public */
+})();
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/html5.js b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/html5.js
new file mode 100644
index 0000000..3587bf7
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/javascript/html5.js
@@ -0,0 +1,6 @@
+// html5shiv MIT @rem remysharp.com/html5-enabling-script
+// iepp v1.6.2 MIT @jon_neal iecss.com/print-protector
+/*@cc_on(function(m,c){var z="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video";function n(d){for(var a=-1;++a<o;)d.createElement(i[a])}function p(d,a){for(var e=-1,b=d.length,j,q=[];++e<b;){j=d[e];if((a=j.media||a)!="screen")q.push(p(j.imports,a),j.cssText)}return q.join("")}var g=c.createElement("div");g.innerHTML="<z>i</z>";if(g.childNodes.length!==1){var i=z.split("|"),o=i.length,s=RegExp("(^|\\s)("+z+")",
+"gi"),t=RegExp("<(/*)("+z+")","gi"),u=RegExp("(^|[^\\n]*?\\s)("+z+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),r=c.createDocumentFragment(),k=c.documentElement;g=k.firstChild;var h=c.createElement("body"),l=c.createElement("style"),f;n(c);n(r);g.insertBefore(l,
+g.firstChild);l.media="print";m.attachEvent("onbeforeprint",function(){var d=-1,a=p(c.styleSheets,"all"),e=[],b;for(f=f||c.body;(b=u.exec(a))!=null;)e.push((b[1]+b[2]+b[3]).replace(s,"$1.iepp_$2")+b[4]);for(l.styleSheet.cssText=e.join("\n");++d<o;){a=c.getElementsByTagName(i[d]);e=a.length;for(b=-1;++b<e;)if(a[b].className.indexOf("iepp_")<0)a[b].className+=" iepp_"+i[d]}r.appendChild(f);k.appendChild(h);h.className=f.className;h.innerHTML=f.innerHTML.replace(t,"<$1font")});m.attachEvent("onafterprint",
+function(){h.innerHTML="";k.removeChild(h);k.appendChild(f);l.styleSheet.cssText=""})}})(this,document);@*/ \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html
new file mode 100644
index 0000000..3e91613
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html
@@ -0,0 +1,565 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>RAIServer | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="../css/all.css" media="all" />
+ <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="../css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="../javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="../javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="../index.html">Classes</a>
+ <a href="../files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="../symbols/_global_.html">_global_</a></li>
+
+ <li><a href="../symbols/mockup.html">mockup</a></li>
+
+ <li><a href="../symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="../symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="../symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <header>
+ <h1 class="classTitle">
+
+ Class <span>RAIServer</span>
+ </h1>
+
+ <div class="intro">
+ <p class="description summary">
+
+ </p>
+
+
+ <ul class="summary">
+
+
+
+ <li>Defined in: <a href="../symbols/src/RAI_lib_rai.js.html">rai.js</a></li>
+
+
+ </ul>
+
+ </div>
+ </header>
+
+
+ <section>
+ <div class="props">
+ <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RAIServer.">
+ <caption class="sectionTitle">Class Summary</caption>
+ <thead>
+ <tr>
+ <th scope="col">Constructor Attributes</th>
+ <th scope="col">Constructor Name and Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription" >
+ <div class="fixedFont">
+ <b><a href="../symbols/RAIServer.html#constructor">RAIServer</a></b>(options)
+ </div>
+ <div class="description"><p>Creates instance of RAIServer</p>
+
+<p>Options object has the following properties:</p>
+
+<ul>
+ <li><b>debug</b> - if set to true print traffic to console</li>
+ <li><b>disconnectOnTimeout</b> - if set to true close the connection on disconnect</li>
+ <li><b>timeout</b> - timeout in milliseconds for disconnecting the client,
+ defaults to 0 (no timeout)</li>
+</ul>
+
+<p><b>Events</b></p>
+
+<ul>
+ <li><b>'connect'</b> - emitted if a client connects to the server, param
+ is a client (<a href="../symbols/RAISocket.html">RAISocket</a>) object</li>
+ <li><b>'error'</b> - emitted on error, has an error object as a param</li>
+</ul></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </section>
+
+
+
+ <!--
+ #### METHODS SUMMARY
+ -->
+
+ <section>
+
+
+ <div class="props">
+ <h2 class="sectionTitle">Method Summary</h2>
+
+
+ <nav>
+ <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class RAIServer.">
+ <thead>
+ <tr>
+ <th scope="col">Method Attributes</th>
+ <th scope="col">Method Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+ <tr
+ class='item0'
+ >
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAIServer.html#_createServer">_createServer</a></b>()
+ </div>
+ <div class="description"><p>Creates a server with listener callback</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item1'
+ >
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAIServer.html#_serverListener">_serverListener</a></b>(socket)
+ </div>
+ <div class="description"><p>Server listener that is run on client connection</p>
+
+<p><a href="../symbols/RAISocket.html">RAISocket</a> object instance is created based on the client socket
+ and a <code>'connection'</code> event is emitted</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item2'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAIServer.html#end">end</a></b>(callback)
+ </div>
+ <div class="description"><p>Stops the server</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item3'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAIServer.html#listen">listen</a></b>(port, host, callback)
+ </div>
+ <div class="description"><p>Starts listening on selected port</p></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </nav>
+
+
+
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENTS SUMMARY
+ -->
+
+
+ <section>
+
+ <nav>
+ <div class="props">
+ <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class RAIServer.">
+ <caption class="sectionTitle">Event Summary</caption>
+
+ <thead>
+ <tr>
+ <th scope="col">Event Attributes</th>
+ <th scope="col">Event Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAIServer.html#event:_onError">_onError</a></b>(err)
+ </div>
+ <div class="description"><p>Listens for errors</p></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </div>
+ </nav>
+
+
+
+ </section>
+
+ <!--
+ #### CONSTRUCTOR DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle" id="constructor">
+ Class Detail
+ </h2>
+
+ <div class="fixedFont">
+ <b>RAIServer</b>(options)
+ </div>
+
+ <div class="description">
+ <p>Creates instance of RAIServer</p>
+
+<p>Options object has the following properties:</p>
+
+<ul>
+ <li><b>debug</b> - if set to true print traffic to console</li>
+ <li><b>disconnectOnTimeout</b> - if set to true close the connection on disconnect</li>
+ <li><b>timeout</b> - timeout in milliseconds for disconnecting the client,
+ defaults to 0 (no timeout)</li>
+</ul>
+
+<p><b>Events</b></p>
+
+<ul>
+ <li><b>'connect'</b> - emitted if a client connects to the server, param
+ is a client (<a href="../symbols/RAISocket.html">RAISocket</a>) object</li>
+ <li><b>'error'</b> - emitted on error, has an error object as a param</li>
+</ul>
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>options</b>
+ <i>Optional</i>
+ </dt>
+ <dd>Optional options object</dd>
+
+ </dl>
+
+
+
+ </div>
+ </div>
+ </section>
+
+ <!--
+ #### FIELD DETAILS
+ -->
+
+ <!--
+ #### METHOD DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Method Detail
+ </h2>
+
+ <ul class="methodDetail" id="MethodDetail">
+
+
+ <li
+ class='item0'
+ >
+ <div class="fixedFont heading" id="_createServer">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_createServer</b>()
+ </div>
+
+ <div class="description">
+ <p>Creates a server with listener callback</p>
+
+
+
+
+ </div>
+
+
+
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item1'
+ >
+ <div class="fixedFont heading" id="_serverListener">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_serverListener</b>(socket)
+ </div>
+
+ <div class="description">
+ <p>Server listener that is run on client connection</p>
+
+<p><a href="../symbols/RAISocket.html">RAISocket</a> object instance is created based on the client socket
+ and a <code>'connection'</code> event is emitted</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>socket</b>
+
+ </dt>
+ <dd>The socket to the client</dd>
+
+ </dl>
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item2'
+ >
+ <div class="fixedFont heading" id="end">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>end</b>(callback)
+ </div>
+
+ <div class="description">
+ <p>Stops the server</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Function}</span> <b>callback</b>
+
+ </dt>
+ <dd>Is run when the server is closed</dd>
+
+ </dl>
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item3'
+ >
+ <div class="fixedFont heading" id="listen">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>listen</b>(port, host, callback)
+ </div>
+
+ <div class="description">
+ <p>Starts listening on selected port</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Number}</span> <b>port</b>
+
+ </dt>
+ <dd>The port to listen</dd>
+
+ <dt>
+ <span class="light fixedFont">{String}</span> <b>host</b>
+ <i>Optional</i>
+ </dt>
+ <dd>The IP address to listen</dd>
+
+ <dt>
+ <span class="light fixedFont">{Function}</span> <b>callback</b>
+
+ </dt>
+ <dd>The callback function to be run after the server
+is listening, the only param is an error message if the operation failed</dd>
+
+ </dl>
+
+
+
+
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENT DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Event Detail
+ </h2>
+
+
+ <div class="fixedFont heading" id="event:_onError">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onError</b>(err)
+ </div>
+
+ <div class="description">
+ <p>Listens for errors</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>err</b>
+
+ </dt>
+ <dd>Error object</dd>
+
+ </dl>
+
+
+
+
+
+
+ </div>
+ </div>
+ </section>
+
+ </article>
+ </div>
+</div>
+
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html
new file mode 100644
index 0000000..15cad38
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html
@@ -0,0 +1,826 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>RAISocket | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="../css/all.css" media="all" />
+ <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="../css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="../javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="../javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="../index.html">Classes</a>
+ <a href="../files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="../symbols/_global_.html">_global_</a></li>
+
+ <li><a href="../symbols/mockup.html">mockup</a></li>
+
+ <li><a href="../symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="../symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="../symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <header>
+ <h1 class="classTitle">
+
+ Class <span>RAISocket</span>
+ </h1>
+
+ <div class="intro">
+ <p class="description summary">
+
+ </p>
+
+
+ <ul class="summary">
+
+
+
+ <li>Defined in: <a href="../symbols/src/RAI_lib_rai.js.html">rai.js</a></li>
+
+
+ </ul>
+
+ </div>
+ </header>
+
+
+ <section>
+ <div class="props">
+ <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RAISocket.">
+ <caption class="sectionTitle">Class Summary</caption>
+ <thead>
+ <tr>
+ <th scope="col">Constructor Attributes</th>
+ <th scope="col">Constructor Name and Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription" >
+ <div class="fixedFont">
+ <b><a href="../symbols/RAISocket.html#constructor">RAISocket</a></b>(socket, options)
+ </div>
+ <div class="description"><p>Creates a instance for interacting with a client (socket)</p>
+
+<p>Optional options object is the same that is passed to the parent
+<a href="../symbols/RAIServer.html">RAIServer</a> object</p>
+
+<p><b>Events</b></p>
+
+<ul>
+ <li><b>'command'</b> - emitted if a client sends a command.</div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </section>
+
+
+
+ <!--
+ #### METHODS SUMMARY
+ -->
+
+ <section>
+
+
+ <div class="props">
+ <h2 class="sectionTitle">Method Summary</h2>
+
+
+ <nav>
+ <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class RAISocket.">
+ <thead>
+ <tr>
+ <th scope="col">Method Attributes</th>
+ <th scope="col">Method Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+ <tr
+ class='item0'
+ >
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#_destroy">_destroy</a></b>()
+ </div>
+ <div class="description"><p>Called when the connection is or is going to be ended</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item1'
+ >
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#_processData">_processData</a></b>(str)
+ </div>
+ <div class="description"><p>Processed incoming command lines and emits found data as
+<code>'command'</code> with the command name as the first param and the rest
+of the data as second (Buffer)</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item2'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#end">end</a></b>()
+ </div>
+ <div class="description"><p>Closes the connection to the client</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item3'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#send">send</a></b>(data)
+ </div>
+ <div class="description"><p>Sends some data to the client.</div>
+ </td>
+ </tr>
+
+ <tr
+ class='item4'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#startDataMode">startDataMode</a></b>(sequence)
+ </div>
+ <div class="description"><p>Instructs the server to be listening for mixed data instead of line based
+ commands</p></div>
+ </td>
+ </tr>
+
+ <tr
+ class='item5'
+ >
+ <td class="attributes">&nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#startTLS">startTLS</a></b>(credentials, callback)
+ </div>
+ <div class="description"><p>Instructs the server to upgrade the connection to secure TLS connection</p>
+
+<p>Fires <code>callback</code> on successful connection upgrade if set,
+otherwise emits <code>'tls'</code></p></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </nav>
+
+
+
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENTS SUMMARY
+ -->
+
+
+ <section>
+
+ <nav>
+ <div class="props">
+ <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class RAISocket.">
+ <caption class="sectionTitle">Event Summary</caption>
+
+ <thead>
+ <tr>
+ <th scope="col">Event Attributes</th>
+ <th scope="col">Event Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onClose">_onClose</a></b>(hadError)
+ </div>
+ <div class="description"><p>Called when the connection is closed</p></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onEnd">_onEnd</a></b>()
+ </div>
+ <div class="description"><p>Called when the connection is ended.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onError">_onError</a></b>(err)
+ </div>
+ <div class="description"><p>Called when an error has appeared.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onReceiveData">_onReceiveData</a></b>(chunk)
+ </div>
+ <div class="description"><p>Called when a chunk of data arrives from the client.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="attributes">&lt;private&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onTimeout">_onTimeout</a></b>()
+ </div>
+ <div class="description"><p>Called when a timeout has occured.</div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </div>
+ </nav>
+
+
+
+ </section>
+
+ <!--
+ #### CONSTRUCTOR DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle" id="constructor">
+ Class Detail
+ </h2>
+
+ <div class="fixedFont">
+ <b>RAISocket</b>(socket, options)
+ </div>
+
+ <div class="description">
+ <p>Creates a instance for interacting with a client (socket)</p>
+
+<p>Optional options object is the same that is passed to the parent
+<a href="../symbols/RAIServer.html">RAIServer</a> object</p>
+
+<p><b>Events</b></p>
+
+<ul>
+ <li><b>'command'</b> - emitted if a client sends a command. Gets two
+ params - command (String) and payload (Buffer)</li>
+ <li><b>'data'</b> - emitted when a chunk is received in data mode, the
+ param being the payload (Buffer)</li>
+ <li><b>'ready'</b> - emitted when data stream ends and normal command
+ flow is recovered</li>
+ <li><b>'tls'</b> - emitted when the connection is secured by TLS</li>
+ <li><b>'error'</b> - emitted when an error occurs. Connection to the
+ client is disconnected automatically. Param is an error object.</l>
+ <li><b>'timeout'</b> - emitted when a timeout occurs. Connection to the
+ client is disconnected automatically if disconnectOnTimeout option
+ is set to true.</l>
+ <li><b>'end'</b> - emitted when the client disconnects</l>
+</ul>
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>socket</b>
+
+ </dt>
+ <dd>Socket for the client</dd>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>options</b>
+ <i>Optional</i>
+ </dt>
+ <dd>Optional options object</dd>
+
+ </dl>
+
+
+
+ </div>
+ </div>
+ </section>
+
+ <!--
+ #### FIELD DETAILS
+ -->
+
+ <!--
+ #### METHOD DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Method Detail
+ </h2>
+
+ <ul class="methodDetail" id="MethodDetail">
+
+
+ <li
+ class='item0'
+ >
+ <div class="fixedFont heading" id="_destroy">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_destroy</b>()
+ </div>
+
+ <div class="description">
+ <p>Called when the connection is or is going to be ended</p>
+
+
+
+
+ </div>
+
+
+
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item1'
+ >
+ <div class="fixedFont heading" id="_processData">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_processData</b>(str)
+ </div>
+
+ <div class="description">
+ <p>Processed incoming command lines and emits found data as
+<code>'command'</code> with the command name as the first param and the rest
+of the data as second (Buffer)</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{String}</span> <b>str</b>
+
+ </dt>
+ <dd>Binary string to be processed</dd>
+
+ </dl>
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item2'
+ >
+ <div class="fixedFont heading" id="end">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>end</b>()
+ </div>
+
+ <div class="description">
+ <p>Closes the connection to the client</p>
+
+
+
+
+ </div>
+
+
+
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item3'
+ >
+ <div class="fixedFont heading" id="send">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>send</b>(data)
+ </div>
+
+ <div class="description">
+ <p>Sends some data to the client. <code>&lt;CR&gt;&lt;LF&gt;</code> is automatically appended to
+ the data</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{String|Buffer}</span> <b>data</b>
+
+ </dt>
+ <dd>Data to be sent to the client</dd>
+
+ </dl>
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item4'
+ >
+ <div class="fixedFont heading" id="startDataMode">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>startDataMode</b>(sequence)
+ </div>
+
+ <div class="description">
+ <p>Instructs the server to be listening for mixed data instead of line based
+ commands</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{String}</span> <b>sequence</b>
+ <i>Optional, Default: "."</i>
+ </dt>
+ <dd>- optional sequence on separate line for
+ matching the data end</dd>
+
+ </dl>
+
+
+
+ <div class="hr"></div>
+ </li>
+
+ <li
+ class='item5'
+ >
+ <div class="fixedFont heading" id="startTLS">
+ <span class='lighter'>
+
+ </span>
+
+
+
+ <b>startTLS</b>(credentials, callback)
+ </div>
+
+ <div class="description">
+ <p>Instructs the server to upgrade the connection to secure TLS connection</p>
+
+<p>Fires <code>callback</code> on successful connection upgrade if set,
+otherwise emits <code>'tls'</code></p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>credentials</b>
+ <i>Optional</i>
+ </dt>
+ <dd>An object with PEM encoded key and
+ certificate <code>{key:"---BEGIN...", cert:"---BEGIN..."}</code>,
+ if not set autogenerated values will be used.</dd>
+
+ <dt>
+ <span class="light fixedFont">{Function}</span> <b>callback</b>
+ <i>Optional</i>
+ </dt>
+ <dd>If calback is set fire it after successful connection
+ upgrade, otherwise <code>'tls'</code> is emitted</dd>
+
+ </dl>
+
+
+
+
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENT DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Event Detail
+ </h2>
+
+
+ <div class="fixedFont heading" id="event:_onClose">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onClose</b>(hadError)
+ </div>
+
+ <div class="description">
+ <p>Called when the connection is closed</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Boolean}</span> <b>hadError</b>
+
+ </dt>
+ <dd>did the connection end because of an error?</dd>
+
+ </dl>
+
+
+
+
+ <div class="hr"></div>
+
+ <div class="fixedFont heading" id="event:_onEnd">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onEnd</b>()
+ </div>
+
+ <div class="description">
+ <p>Called when the connection is ended. Emits <code>'end'</code></p>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+ <div class="hr"></div>
+
+ <div class="fixedFont heading" id="event:_onError">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onError</b>(err)
+ </div>
+
+ <div class="description">
+ <p>Called when an error has appeared. Emits <code>'error'</code> with
+the error object as a parameter.</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>err</b>
+
+ </dt>
+ <dd>Error object</dd>
+
+ </dl>
+
+
+
+
+ <div class="hr"></div>
+
+ <div class="fixedFont heading" id="event:_onReceiveData">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onReceiveData</b>(chunk)
+ </div>
+
+ <div class="description">
+ <p>Called when a chunk of data arrives from the client. If currently in data
+mode, transmit the data otherwise send it to <code>_processData</code></p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Buffer|String}</span> <b>chunk</b>
+
+ </dt>
+ <dd>Data sent by the client</dd>
+
+ </dl>
+
+
+
+
+ <div class="hr"></div>
+
+ <div class="fixedFont heading" id="event:_onTimeout">
+ <span class='lighter'>
+ &lt;private&gt;
+ </span>
+
+
+
+ <b>_onTimeout</b>()
+ </div>
+
+ <div class="description">
+ <p>Called when a timeout has occured. Connection will be closed and
+<code>'timeout'</code> is emitted.</p>
+
+
+
+
+ </div>
+
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+ </section>
+
+ </article>
+ </div>
+</div>
+
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html
new file mode 100644
index 0000000..b215cf7
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html
@@ -0,0 +1,122 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>_global_ | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="../css/all.css" media="all" />
+ <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="../css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="../javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="../javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="../index.html">Classes</a>
+ <a href="../files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="../symbols/_global_.html">_global_</a></li>
+
+ <li><a href="../symbols/mockup.html">mockup</a></li>
+
+ <li><a href="../symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="../symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="../symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <header>
+ <h1 class="classTitle">
+
+ Built-In Namespace <span>_global_</span>
+ </h1>
+
+ <div class="intro">
+ <p class="description summary">
+
+ </p>
+
+
+ </div>
+ </header>
+
+
+
+
+ <!--
+ #### METHODS SUMMARY
+ -->
+
+
+ <!--
+ #### EVENTS SUMMARY
+ -->
+
+ <!--
+ #### CONSTRUCTOR DETAILS
+ -->
+
+ <!--
+ #### FIELD DETAILS
+ -->
+
+ <!--
+ #### METHOD DETAILS
+ -->
+
+
+ <!--
+ #### EVENT DETAILS
+ -->
+
+ </article>
+ </div>
+</div>
+
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html
new file mode 100644
index 0000000..987f5be
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html
@@ -0,0 +1,264 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>mockup | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="../css/all.css" media="all" />
+ <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="../css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="../javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="../javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="../index.html">Classes</a>
+ <a href="../files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="../symbols/_global_.html">_global_</a></li>
+
+ <li><a href="../symbols/mockup.html">mockup</a></li>
+
+ <li><a href="../symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="../symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="../symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <header>
+ <h1 class="classTitle">
+
+ Namespace <span>mockup</span>
+ </h1>
+
+ <div class="intro">
+ <p class="description summary">
+ Mockup module
+ </p>
+
+
+ <ul class="summary">
+
+
+
+ <li>Defined in: <a href="../symbols/src/RAI_lib_mockup.js.html">mockup.js</a></li>
+
+
+ </ul>
+
+ </div>
+ </header>
+
+
+
+
+ <!--
+ #### METHODS SUMMARY
+ -->
+
+ <section>
+
+
+ <div class="props">
+ <h2 class="sectionTitle">Method Summary</h2>
+
+
+ <nav>
+ <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class mockup.">
+ <thead>
+ <tr>
+ <th scope="col">Method Attributes</th>
+ <th scope="col">Method Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+ <tr
+ class='item0'
+ >
+ <td class="attributes">&lt;static&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont">mockup.<b><a href="../symbols/mockup.html#.runClientMockup">runClientMockup</a></b>(port, host, commands, callback, debug)
+ </div>
+ <div class="description"><p>Runs a batch of commands against a server</p>
+
+<pre>
+var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"];
+runClientMockup(25, "mail.hot.ee", cmds, function(resp){
+ console.log("Final:", resp.toString("utf-8").trim());
+});
+</pre></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </nav>
+
+
+
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENTS SUMMARY
+ -->
+
+ <!--
+ #### CONSTRUCTOR DETAILS
+ -->
+
+ <!--
+ #### FIELD DETAILS
+ -->
+
+ <!--
+ #### METHOD DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Method Detail
+ </h2>
+
+ <ul class="methodDetail" id="MethodDetail">
+
+
+ <li
+ class='item0'
+ >
+ <div class="fixedFont heading" id=".runClientMockup">
+ <span class='lighter'>
+ &lt;static&gt;
+ </span>
+
+
+
+ <span class="light">mockup.</span><b>runClientMockup</b>(port, host, commands, callback, debug)
+ </div>
+
+ <div class="description">
+ <p>Runs a batch of commands against a server</p>
+
+<pre>
+var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"];
+runClientMockup(25, "mail.hot.ee", cmds, function(resp){
+ console.log("Final:", resp.toString("utf-8").trim());
+});
+</pre>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Number}</span> <b>port</b>
+
+ </dt>
+ <dd>Port number</dd>
+
+ <dt>
+ <span class="light fixedFont">{String}</span> <b>host</b>
+
+ </dt>
+ <dd>Hostname to connect to</dd>
+
+ <dt>
+ <span class="light fixedFont">{Array}</span> <b>commands</b>
+
+ </dt>
+ <dd>Command list to be sent to server</dd>
+
+ <dt>
+ <span class="light fixedFont">{Function}</span> <b>callback</b>
+
+ </dt>
+ <dd>Callback function to run on completion,
+ has the last response from the server as a param</dd>
+
+ <dt>
+ <span class="light fixedFont">{Boolean}</span> <b>debug</b>
+ <i>Optional</i>
+ </dt>
+ <dd>if set to true log all input/output</dd>
+
+ </dl>
+
+
+
+
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENT DETAILS
+ -->
+
+ </article>
+ </div>
+</div>
+
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html
new file mode 100644
index 0000000..3cee0e3
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html
@@ -0,0 +1,394 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
+ .KEYW {color: #933;}
+ .COMM {color: #bbb; font-style: italic;}
+ .NUMB {color: #393;}
+ .STRN {color: #393;}
+ .REGX {color: #339;}
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/**
+<span class='line'> 2</span> * @fileOverview This is the main file for the RAI library to create text based servers
+<span class='line'> 3</span> * @author &lt;a href="mailto:andris@node.ee">Andris Reinman&lt;/a>
+<span class='line'> 4</span> * @version 0.1.0
+<span class='line'> 5</span> */</span><span class="WHIT">
+<span class='line'> 6</span>
+<span class='line'> 7</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">netlib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 8</span> </span><span class="WHIT"> </span><span class="NAME">utillib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"util"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 9</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'events'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EventEmitter</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 10</span> </span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./starttls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT"> </span><span class="NAME">fs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"fs"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 14</span>
+<span class='line'> 15</span> </span><span class="COMM">// Default credentials for starting TLS server</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/cert/key.pem"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/cert/cert.pem"</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 20</span>
+<span class='line'> 21</span> </span><span class="COMM">// Expose to the world</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">module.exports.RAIServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span>
+<span class='line'> 24</span> </span><span class="COMM">/**
+<span class='line'> 25</span> * &lt;p>Creates instance of RAIServer&lt;/p>
+<span class='line'> 26</span> *
+<span class='line'> 27</span> * &lt;p>Options object has the following properties:&lt;/p>
+<span class='line'> 28</span> *
+<span class='line'> 29</span> * &lt;ul>
+<span class='line'> 30</span> * &lt;li>&lt;b>debug&lt;/b> - if set to true print traffic to console&lt;/li>
+<span class='line'> 31</span> * &lt;li>&lt;b>timeout&lt;/b> - timeout in milliseconds for disconnecting the client,
+<span class='line'> 32</span> * defaults to 0 (no timeout)&lt;/li>
+<span class='line'> 33</span> * &lt;/ul>
+<span class='line'> 34</span> *
+<span class='line'> 35</span> * &lt;p>&lt;b>Events&lt;/b>&lt;/p>
+<span class='line'> 36</span> *
+<span class='line'> 37</span> * &lt;ul>
+<span class='line'> 38</span> * &lt;li>&lt;b>'connect'&lt;/b> - emitted if a client connects to the server, param
+<span class='line'> 39</span> * is a client ({@link RAISocket}) object&lt;/li>
+<span class='line'> 40</span> * &lt;/ul>
+<span class='line'> 41</span> *
+<span class='line'> 42</span> * @constructor
+<span class='line'> 43</span> * @param {Object} [options] Optional options object
+<span class='line'> 44</span> */</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="TOKN"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="NAME">this._createServer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAIServer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span>
+<span class='line'> 54</span> </span><span class="COMM">/**
+<span class='line'> 55</span> * &lt;p>Starts listening on selected port&lt;/p>
+<span class='line'> 56</span> *
+<span class='line'> 57</span> * @param {Number} port The port to listen
+<span class='line'> 58</span> * @param {String} [host] The IP address to listen
+<span class='line'> 59</span> * @param {Function} callback The callback function to be run after the server
+<span class='line'> 60</span> * is listening, the only param is an error message if the operation failed
+<span class='line'> 61</span> */</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="NAME">RAIServer.prototype.listen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">==</span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">this._port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="NAME">this._server.listen</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">err</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">err</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 78</span>
+<span class='line'> 79</span> </span><span class="COMM">/**
+<span class='line'> 80</span> * &lt;p>Creates a server with listener callback&lt;/p>
+<span class='line'> 81</span> */</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="NAME">RAIServer.prototype._createServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="NAME">this._server</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">netlib.createServer</span><span class="PUNC">(</span><span class="NAME">this._serverListener.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 85</span>
+<span class='line'> 86</span> </span><span class="COMM">/**
+<span class='line'> 87</span> * &lt;p>Server listener that is run on client connection&lt;/p>
+<span class='line'> 88</span> *
+<span class='line'> 89</span> * &lt;p>{@link RAISocket} object instance is created based on the client socket
+<span class='line'> 90</span> * and a &lt;code>'connection'&lt;/code> event is emitted&lt;/p>
+<span class='line'> 91</span> *
+<span class='line'> 92</span> * @param {Object} socket The socket to the client
+<span class='line'> 93</span> */</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="NAME">RAIServer.prototype._serverListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CONNECTION FROM "</span><span class="PUNC">+</span><span class="NAME">socket.remoteAddress</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT">
+<span class='line'>101</span> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onReceiveData.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onEnd.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>103</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onError.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onTimeout.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onClose.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span>
+<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"connection"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>109</span>
+<span class='line'>110</span> </span><span class="COMM">/**
+<span class='line'>111</span> * &lt;p>Creates a instance for interacting with a client (socket)&lt;/p>
+<span class='line'>112</span> *
+<span class='line'>113</span> * &lt;p>Optional options object is the same that is passed to the parent
+<span class='line'>114</span> * {@link RAIServer} object&lt;/p>
+<span class='line'>115</span> *
+<span class='line'>116</span> * &lt;p>&lt;b>Events&lt;/b>&lt;/p>
+<span class='line'>117</span> *
+<span class='line'>118</span> * &lt;ul>
+<span class='line'>119</span> * &lt;li>&lt;b>'command'&lt;/b> - emitted if a client sends a command. Gets two
+<span class='line'>120</span> * params - command (String) and payload (Buffer)&lt;/li>
+<span class='line'>121</span> * &lt;li>&lt;b>'data'&lt;/b> - emitted when a chunk is received in data mode, the
+<span class='line'>122</span> * param being the payload (Buffer)&lt;/li>
+<span class='line'>123</span> * &lt;li>&lt;b>'ready'&lt;/b> - emitted when data stream ends and normal command
+<span class='line'>124</span> * flow is recovered&lt;/li>
+<span class='line'>125</span> * &lt;li>&lt;b>'tls'&lt;/b> - emitted when the connection is secured by TLS&lt;/li>
+<span class='line'>126</span> * &lt;li>&lt;b>'error'&lt;/b> - emitted when an error occurs. Connection to the
+<span class='line'>127</span> * client is disconnected automatically. Param is an error object.&lt;/l>
+<span class='line'>128</span> * &lt;li>&lt;b>'timeout'&lt;/b> - emitted when a timeout occurs. Connection to the
+<span class='line'>129</span> * client is disconnected automatically.&lt;/l>
+<span class='line'>130</span> * &lt;li>&lt;b>'end'&lt;/b> - emitted when the client disconnects&lt;/l>
+<span class='line'>131</span> * &lt;/ul>
+<span class='line'>132</span> *
+<span class='line'>133</span> * @constructor
+<span class='line'>134</span> * @param {Object} socket Socket for the client
+<span class='line'>135</span> * @param {Object} [options] Optional options object
+<span class='line'>136</span> */</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>138</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT">
+<span class='line'>140</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT">
+<span class='line'>143</span> </span><span class="NAME">this.remoteAddress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.remoteAddress</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>144</span> </span><span class="WHIT">
+<span class='line'>145</span> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\r\n\.\r\n|^\.\r\n/</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>147</span> </span><span class="WHIT">
+<span class='line'>148</span> </span><span class="NAME">this._secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>149</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>150</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>151</span> </span><span class="WHIT">
+<span class='line'>152</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>153</span> </span><span class="WHIT">
+<span class='line'>154</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>155</span> </span><span class="WHIT"> </span><span class="NAME">socket.setTimeout</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>156</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>157</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>158</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAISocket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>159</span>
+<span class='line'>160</span> </span><span class="COMM">/**
+<span class='line'>161</span> * &lt;p>Sends some data to the client. &lt;CR>&lt;LF> is automatically appended to
+<span class='line'>162</span> * the data&lt;/p>
+<span class='line'>163</span> *
+<span class='line'>164</span> * @param {String|Buffer} data Data to be sent to the client
+<span class='line'>165</span> */</span><span class="WHIT">
+<span class='line'>166</span> </span><span class="NAME">RAISocket.prototype.send</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>167</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>168</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>169</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="PUNC">+</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>170</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>171</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>172</span> </span><span class="WHIT"> </span><span class="NAME">data.copy</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>173</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>174</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT">
+<span class='line'>177</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"OUT: \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">buffer.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">
+<span class='line'>181</span> </span><span class="NAME">this.socket.write</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>183</span>
+<span class='line'>184</span> </span><span class="COMM">/**
+<span class='line'>185</span> * &lt;p>Instructs the server to be listening for mixed data instead of line based
+<span class='line'>186</span> * commands&lt;/p>
+<span class='line'>187</span> *
+<span class='line'>188</span> * @param {String|RegExp} [sequence="\r\n.\r\n"] - optional sequence for
+<span class='line'>189</span> * matching the data end
+<span class='line'>190</span> */</span><span class="WHIT">
+<span class='line'>191</span> </span><span class="NAME">RAISocket.prototype.startDataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>197</span>
+<span class='line'>198</span> </span><span class="COMM">/**
+<span class='line'>199</span> * &lt;p>Instructs the server to upgrade the connection to secure TLS connection&lt;/p>
+<span class='line'>200</span> *
+<span class='line'>201</span> * &lt;p>Emits &lt;code>'tls'&lt;/code> on successful upgrade&lt;/p>
+<span class='line'>202</span> *
+<span class='line'>203</span> * @param {Object} [credentials] - An object with PEM encoded key and
+<span class='line'>204</span> * certificate &lt;code>{key:"---BEGIN...", cert:"---BEGIN..."}&lt;/code>,
+<span class='line'>205</span> * if not set autogenerated values will be used.
+<span class='line'>206</span> */</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="NAME">RAISocket.prototype.startTLS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">credentials</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._secureConnection</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Secure connection already established"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT">
+<span class='line'>212</span> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT">
+<span class='line'>214</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">
+<span class='line'>216</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">secure_connector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssl_socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>217</span>
+<span class='line'>218</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ssl_socket.authorized</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"WARNING: TLS ERROR ("</span><span class="PUNC">+</span><span class="NAME">ssl_socket.authorizationError</span><span class="PUNC">+</span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>220</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT">
+<span class='line'>222</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT">
+<span class='line'>225</span> </span><span class="NAME">this._secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span> </span><span class="WHIT">
+<span class='line'>227</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssl_socket</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>228</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onReceiveData.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>229</span> </span><span class="WHIT">
+<span class='line'>230</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>231</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS CONNECTION STARTED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>232</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>233</span> </span><span class="WHIT">
+<span class='line'>234</span> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT">
+<span class='line'>236</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT">
+<span class='line'>238</span> </span><span class="NAME">secure_connector.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>242</span>
+<span class='line'>243</span> </span><span class="COMM">/**
+<span class='line'>244</span> * &lt;p>Closes the connection to the client&lt;/p>
+<span class='line'>245</span> */</span><span class="WHIT">
+<span class='line'>246</span> </span><span class="NAME">RAISocket.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>247</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>248</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>249</span>
+<span class='line'>250</span> </span><span class="COMM">/**
+<span class='line'>251</span> * &lt;p>Called when a chunk of data arrives from the client. If currently in data
+<span class='line'>252</span> * mode, transmit the data otherwise send it to &lt;code>_processData&lt;/code>&lt;/p>
+<span class='line'>253</span> *
+<span class='line'>254</span> * @param {Buffer|String} chunk Data sent by the client
+<span class='line'>255</span> */</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="NAME">RAISocket.prototype._onReceiveData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// if currently setting up TLS connection</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>260</span> </span><span class="WHIT">
+<span class='line'>261</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">chunk</span><span class="PUNC">==</span><span class="STRN">"string"</span><span class="PUNC">?</span><span class="NAME">chunk</span><span class="PUNC">:</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">dataEndMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT">
+<span class='line'>264</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>265</span> </span><span class="WHIT">
+<span class='line'>266</span> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>267</span> </span><span class="WHIT">
+<span class='line'>268</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataEndMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="REGX">/\r\n.*?$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>269</span> </span><span class="WHIT"> </span><span class="COMM">// if theres a line that is not ended, keep it for later</span><span class="WHIT">
+<span class='line'>270</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>272</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>275</span> </span><span class="WHIT">
+<span class='line'>276</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequence</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>283</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"ready"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>287</span> </span><span class="WHIT">
+<span class='line'>288</span> </span><span class="COMM">// send the remaining data for processing</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>299</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>300</span> </span><span class="WHIT">
+<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>302</span>
+<span class='line'>303</span> </span><span class="COMM">/**
+<span class='line'>304</span> * &lt;p>Processed incoming command lines and emits found data as
+<span class='line'>305</span> * &lt;code>'command'&lt;/code> with the command name as the first param and the rest
+<span class='line'>306</span> * of the data as second (Buffer)&lt;/p>
+<span class='line'>307</span> *
+<span class='line'>308</span> * @param {String} str Binary string to be processed
+<span class='line'>309</span> */</span><span class="WHIT">
+<span class='line'>310</span> </span><span class="NAME">RAISocket.prototype._processData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>312</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>313</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">+</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>316</span> </span><span class="WHIT">
+<span class='line'>317</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT">
+<span class='line'>319</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>320</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/\s*[\S]+\s?/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>323</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"COMMAND:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>325</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>326</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"command"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NAME">match.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">this._onReceiveData</span><span class="PUNC">(</span><span class="NAME">lines.slice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>333</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>334</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="WHIT">
+<span class='line'>337</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>338</span>
+<span class='line'>339</span> </span><span class="COMM">/**
+<span class='line'>340</span> * &lt;p>Called when the connection is or is going to be ended&lt;/p>
+<span class='line'>341</span> */</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="NAME">RAISocket.prototype._destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._destroyed</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT">
+<span class='line'>346</span> </span><span class="NAME">this.removeAllListeners</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>348</span>
+<span class='line'>349</span> </span><span class="COMM">/**
+<span class='line'>350</span> * &lt;p>Called when the connection is ended. Emits &lt;code>'end'&lt;/code>&lt;/p>
+<span class='line'>351</span> */</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="NAME">RAISocket.prototype._onEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>356</span>
+<span class='line'>357</span> </span><span class="COMM">/**
+<span class='line'>358</span> * &lt;p>Called when an error has appeared. Emits &lt;code>'error'&lt;/code> with
+<span class='line'>359</span> * the error object as a parameter.&lt;/p>
+<span class='line'>360</span> *
+<span class='line'>361</span> * @param {Object} err Error object
+<span class='line'>362</span> */</span><span class="WHIT">
+<span class='line'>363</span> </span><span class="NAME">RAISocket.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>365</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>366</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>367</span>
+<span class='line'>368</span> </span><span class="COMM">/**
+<span class='line'>369</span> * &lt;p>Called when a timeout has occured. Connection will be closed and
+<span class='line'>370</span> * &lt;code>'timeout'&lt;/code> is emitted.&lt;/p>
+<span class='line'>371</span> */</span><span class="WHIT">
+<span class='line'>372</span> </span><span class="NAME">RAISocket.prototype._onTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>373</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.socket.destroyed</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>378</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>379</span>
+<span class='line'>380</span> </span><span class="COMM">/**
+<span class='line'>381</span> * &lt;p>Called when the connection is closed&lt;/p>
+<span class='line'>382</span> *
+<span class='line'>383</span> * @param {Boolean} hadError did the connection end because of an error?
+<span class='line'>384</span> */</span><span class="WHIT">
+<span class='line'>385</span> </span><span class="NAME">RAISocket.prototype._onClose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hadError</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>386</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="PUNC">}</span></pre></body></html> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html
new file mode 100644
index 0000000..2690ce4
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html
@@ -0,0 +1,110 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
+ .KEYW {color: #933;}
+ .COMM {color: #bbb; font-style: italic;}
+ .NUMB {color: #393;}
+ .STRN {color: #393;}
+ .REGX {color: #339;}
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+ </style></head><body><pre><span class='line'> 1</span> <span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">net</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 2</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 3</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 4</span>
+<span class='line'> 5</span> </span><span class="COMM">/**
+<span class='line'> 6</span> * @namespace Mockup module
+<span class='line'> 7</span> * @name mockup
+<span class='line'> 8</span> */</span><span class="WHIT">
+<span class='line'> 9</span> </span><span class="NAME">module.exports</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">runClientMockup</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 10</span>
+<span class='line'> 11</span> </span><span class="COMM">/**
+<span class='line'> 12</span> * &lt;p>Runs a batch of commands against a server&lt;/p>
+<span class='line'> 13</span> *
+<span class='line'> 14</span> * &lt;pre>
+<span class='line'> 15</span> * var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"];
+<span class='line'> 16</span> * runClientMockup(25, "mail.hot.ee", cmds, function(resp){
+<span class='line'> 17</span> * console.log("Final:", resp.toString("utf-8").trim());
+<span class='line'> 18</span> * });
+<span class='line'> 19</span> * &lt;/pre>
+<span class='line'> 20</span> *
+<span class='line'> 21</span> * @memberOf mockup
+<span class='line'> 22</span> * @param {Number} port Port number
+<span class='line'> 23</span> * @param {String} host Hostname to connect to
+<span class='line'> 24</span> * @param {Array} commands Command list to be sent to server
+<span class='line'> 25</span> * @param {Function} callback Callback function to run on completion,
+<span class='line'> 26</span> * has the last response from the server as a param
+<span class='line'> 27</span> * @param {Boolean} [debug] if set to true log all input/output
+<span class='line'> 28</span> */</span><span class="WHIT">
+<span class='line'> 29</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">runClientMockup</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commands</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 30</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="STRN">"localhost"</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 31</span> </span><span class="WHIT"> </span><span class="NAME">port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="NUMB">25</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 32</span> </span><span class="WHIT"> </span><span class="NAME">commands</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Array.isArray</span><span class="PUNC">(</span><span class="NAME">commands</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">commands</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 33</span>
+<span class='line'> 34</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span>
+<span class='line'> 36</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">net.connect</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">ignore_data</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT">
+<span class='line'> 40</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"S: "</span><span class="PUNC">+</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 43</span> </span><span class="WHIT">
+<span class='line'> 44</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commands.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"STARTTLS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"STLS"</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">>=</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"Initiated TLS connection"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.createCredentials</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">pair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlslib.createSecurePair</span><span class="PUNC">(</span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="NAME">pair.encrypted.pipe</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">socket.pipe</span><span class="PUNC">(</span><span class="NAME">pair.encrypted</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">pair.fd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.fd</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span> </span><span class="WHIT">
+<span class='line'> 64</span> </span><span class="NAME">pair.on</span><span class="PUNC">(</span><span class="STRN">"secure"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS connection secured"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 73</span>
+<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"S: "</span><span class="PUNC">+</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commands.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="NAME">socket.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">
+<span class='line'>103</span> </span><span class="PUNC">}</span></pre></body></html> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html
new file mode 100644
index 0000000..4e12b24
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html
@@ -0,0 +1,484 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
+ .KEYW {color: #933;}
+ .COMM {color: #bbb; font-style: italic;}
+ .NUMB {color: #393;}
+ .STRN {color: #393;}
+ .REGX {color: #339;}
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/**
+<span class='line'> 2</span> * @fileOverview This is the main file for the RAI library to create text based servers
+<span class='line'> 3</span> * @author &lt;a href="mailto:andris@node.ee">Andris Reinman&lt;/a>
+<span class='line'> 4</span> * @version 0.1.3
+<span class='line'> 5</span> */</span><span class="WHIT">
+<span class='line'> 6</span>
+<span class='line'> 7</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">netlib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 8</span> </span><span class="WHIT"> </span><span class="NAME">utillib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"util"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 9</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'events'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EventEmitter</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 10</span> </span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./starttls"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">starttls</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="WHIT"> </span><span class="NAME">fs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"fs"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 14</span>
+<span class='line'> 15</span> </span><span class="COMM">// Default credentials for starting TLS server</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/../cert/key.pem"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'> 18</span> </span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/../cert/cert.pem"</span><span class="PUNC">)</span><span class="WHIT">
+<span class='line'> 19</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 20</span>
+<span class='line'> 21</span> </span><span class="COMM">// Expose to the world</span><span class="WHIT">
+<span class='line'> 22</span> </span><span class="NAME">module.exports.RAIServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">module.exports.runClientMockup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./mockup"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span>
+<span class='line'> 25</span> </span><span class="COMM">/**
+<span class='line'> 26</span> * &lt;p>Creates instance of RAIServer&lt;/p>
+<span class='line'> 27</span> *
+<span class='line'> 28</span> * &lt;p>Options object has the following properties:&lt;/p>
+<span class='line'> 29</span> *
+<span class='line'> 30</span> * &lt;ul>
+<span class='line'> 31</span> * &lt;li>&lt;b>debug&lt;/b> - if set to true print traffic to console&lt;/li>
+<span class='line'> 32</span> * &lt;li>&lt;b>disconnectOnTimeout&lt;/b> - if set to true close the connection on disconnect&lt;/li>
+<span class='line'> 33</span> * &lt;li>&lt;b>timeout&lt;/b> - timeout in milliseconds for disconnecting the client,
+<span class='line'> 34</span> * defaults to 0 (no timeout)&lt;/li>
+<span class='line'> 35</span> * &lt;/ul>
+<span class='line'> 36</span> *
+<span class='line'> 37</span> * &lt;p>&lt;b>Events&lt;/b>&lt;/p>
+<span class='line'> 38</span> *
+<span class='line'> 39</span> * &lt;ul>
+<span class='line'> 40</span> * &lt;li>&lt;b>'connect'&lt;/b> - emitted if a client connects to the server, param
+<span class='line'> 41</span> * is a client ({@link RAISocket}) object&lt;/li>
+<span class='line'> 42</span> * &lt;li>&lt;b>'error'&lt;/b> - emitted on error, has an error object as a param&lt;/li>
+<span class='line'> 43</span> * &lt;/ul>
+<span class='line'> 44</span> *
+<span class='line'> 45</span> * @constructor
+<span class='line'> 46</span> * @param {Object} [options] Optional options object
+<span class='line'> 47</span> */</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 50</span> </span><span class="WHIT">
+<span class='line'> 51</span> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT">
+<span class='line'> 53</span> </span><span class="NAME">this._createServer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAIServer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span>
+<span class='line'> 57</span> </span><span class="COMM">/**
+<span class='line'> 58</span> * &lt;p>Starts listening on selected port&lt;/p>
+<span class='line'> 59</span> *
+<span class='line'> 60</span> * @param {Number} port The port to listen
+<span class='line'> 61</span> * @param {String} [host] The IP address to listen
+<span class='line'> 62</span> * @param {Function} callback The callback function to be run after the server
+<span class='line'> 63</span> * is listening, the only param is an error message if the operation failed
+<span class='line'> 64</span> */</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="NAME">RAIServer.prototype.listen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">==</span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">this._port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 72</span> </span><span class="WHIT">
+<span class='line'> 73</span> </span><span class="NAME">this._connected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 76</span> </span><span class="WHIT">
+<span class='line'> 77</span> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"listening"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="NAME">this._connected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="WHIT">
+<span class='line'> 82</span> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._connected</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 87</span> </span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="NAME">this._server.listen</span><span class="PUNC">(</span><span class="NAME">this._port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span>
+<span class='line'> 93</span> </span><span class="COMM">/**
+<span class='line'> 94</span> * &lt;p>Stops the server&lt;/p>
+<span class='line'> 95</span> *
+<span class='line'> 96</span> * @param {Function} callback Is run when the server is closed
+<span class='line'> 97</span> */</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="NAME">RAIServer.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>100</span> </span><span class="WHIT"> </span><span class="NAME">this._server.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>101</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span>
+<span class='line'>103</span> </span><span class="COMM">/**
+<span class='line'>104</span> * &lt;p>Creates a server with listener callback&lt;/p>
+<span class='line'>105</span> */</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="NAME">RAIServer.prototype._createServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">this._server</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">netlib.createServer</span><span class="PUNC">(</span><span class="NAME">this._serverListener.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>108</span> </span><span class="WHIT"> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onError.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>109</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span>
+<span class='line'>111</span> </span><span class="COMM">/**
+<span class='line'>112</span> * &lt;p>Listens for errors&lt;/p>
+<span class='line'>113</span> *
+<span class='line'>114</span> * @event
+<span class='line'>115</span> * @param {Object} err Error object
+<span class='line'>116</span> */</span><span class="WHIT">
+<span class='line'>117</span> </span><span class="NAME">RAIServer.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>118</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._connected</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>119</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>120</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>121</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>122</span>
+<span class='line'>123</span> </span><span class="COMM">/**
+<span class='line'>124</span> * &lt;p>Server listener that is run on client connection&lt;/p>
+<span class='line'>125</span> *
+<span class='line'>126</span> * &lt;p>{@link RAISocket} object instance is created based on the client socket
+<span class='line'>127</span> * and a &lt;code>'connection'&lt;/code> event is emitted&lt;/p>
+<span class='line'>128</span> *
+<span class='line'>129</span> * @param {Object} socket The socket to the client
+<span class='line'>130</span> */</span><span class="WHIT">
+<span class='line'>131</span> </span><span class="NAME">RAIServer.prototype._serverListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>132</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>133</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CONNECTION FROM "</span><span class="PUNC">+</span><span class="NAME">socket.remoteAddress</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>134</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>135</span> </span><span class="WHIT">
+<span class='line'>136</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>137</span> </span><span class="WHIT">
+<span class='line'>138</span> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onReceiveData.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>139</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onEnd.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>140</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onError.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onTimeout.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>142</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onClose.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>143</span>
+<span class='line'>144</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"connection"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>145</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>146</span>
+<span class='line'>147</span> </span><span class="COMM">/**
+<span class='line'>148</span> * &lt;p>Creates a instance for interacting with a client (socket)&lt;/p>
+<span class='line'>149</span> *
+<span class='line'>150</span> * &lt;p>Optional options object is the same that is passed to the parent
+<span class='line'>151</span> * {@link RAIServer} object&lt;/p>
+<span class='line'>152</span> *
+<span class='line'>153</span> * &lt;p>&lt;b>Events&lt;/b>&lt;/p>
+<span class='line'>154</span> *
+<span class='line'>155</span> * &lt;ul>
+<span class='line'>156</span> * &lt;li>&lt;b>'command'&lt;/b> - emitted if a client sends a command. Gets two
+<span class='line'>157</span> * params - command (String) and payload (Buffer)&lt;/li>
+<span class='line'>158</span> * &lt;li>&lt;b>'data'&lt;/b> - emitted when a chunk is received in data mode, the
+<span class='line'>159</span> * param being the payload (Buffer)&lt;/li>
+<span class='line'>160</span> * &lt;li>&lt;b>'ready'&lt;/b> - emitted when data stream ends and normal command
+<span class='line'>161</span> * flow is recovered&lt;/li>
+<span class='line'>162</span> * &lt;li>&lt;b>'tls'&lt;/b> - emitted when the connection is secured by TLS&lt;/li>
+<span class='line'>163</span> * &lt;li>&lt;b>'error'&lt;/b> - emitted when an error occurs. Connection to the
+<span class='line'>164</span> * client is disconnected automatically. Param is an error object.&lt;/l>
+<span class='line'>165</span> * &lt;li>&lt;b>'timeout'&lt;/b> - emitted when a timeout occurs. Connection to the
+<span class='line'>166</span> * client is disconnected automatically if disconnectOnTimeout option
+<span class='line'>167</span> * is set to true.&lt;/l>
+<span class='line'>168</span> * &lt;li>&lt;b>'end'&lt;/b> - emitted when the client disconnects&lt;/l>
+<span class='line'>169</span> * &lt;/ul>
+<span class='line'>170</span> *
+<span class='line'>171</span> * @constructor
+<span class='line'>172</span> * @param {Object} socket Socket for the client
+<span class='line'>173</span> * @param {Object} [options] Optional options object
+<span class='line'>174</span> */</span><span class="WHIT">
+<span class='line'>175</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>176</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>177</span> </span><span class="WHIT">
+<span class='line'>178</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>180</span> </span><span class="WHIT">
+<span class='line'>181</span> </span><span class="NAME">this.remoteAddress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.remoteAddress</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>182</span> </span><span class="WHIT">
+<span class='line'>183</span> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>184</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n.\r\n"</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>185</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\r\n\.\r\n|^\.\r\n/</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>186</span> </span><span class="WHIT">
+<span class='line'>187</span> </span><span class="NAME">this.secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>188</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>189</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>190</span> </span><span class="WHIT">
+<span class='line'>191</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>192</span> </span><span class="WHIT">
+<span class='line'>193</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">socket.setTimeout</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>196</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>197</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAISocket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>198</span>
+<span class='line'>199</span> </span><span class="COMM">/**
+<span class='line'>200</span> * &lt;p>Sends some data to the client. &lt;code>&lt;CR&gt;&lt;LF&gt;&lt;/code> is automatically appended to
+<span class='line'>201</span> * the data&lt;/p>
+<span class='line'>202</span> *
+<span class='line'>203</span> * @param {String|Buffer} data Data to be sent to the client
+<span class='line'>204</span> */</span><span class="WHIT">
+<span class='line'>205</span> </span><span class="NAME">RAISocket.prototype.send</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>206</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>207</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>208</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="PUNC">+</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>209</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>210</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>211</span> </span><span class="WHIT"> </span><span class="NAME">data.copy</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>212</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>213</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>214</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>215</span> </span><span class="WHIT">
+<span class='line'>216</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>217</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"OUT: \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">buffer.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>219</span> </span><span class="WHIT">
+<span class='line'>220</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.socket.writable</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.write</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>224</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>225</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>226</span>
+<span class='line'>227</span> </span><span class="COMM">/**
+<span class='line'>228</span> * &lt;p>Instructs the server to be listening for mixed data instead of line based
+<span class='line'>229</span> * commands&lt;/p>
+<span class='line'>230</span> *
+<span class='line'>231</span> * @param {String} [sequence="."] - optional sequence on separate line for
+<span class='line'>232</span> * matching the data end
+<span class='line'>233</span> */</span><span class="WHIT">
+<span class='line'>234</span> </span><span class="NAME">RAISocket.prototype.startDataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>235</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>236</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>237</span> </span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sequence.replace</span><span class="PUNC">(</span><span class="REGX">/\.\=\(\)\-\?\*\\\[\]\^\+\:\|\,/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"\\$1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>238</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>239</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"/\r\n"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n|^"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>240</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>241</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>242</span>
+<span class='line'>243</span> </span><span class="COMM">/**
+<span class='line'>244</span> * &lt;p>Instructs the server to upgrade the connection to secure TLS connection&lt;/p>
+<span class='line'>245</span> *
+<span class='line'>246</span> * &lt;p>Fires &lt;code>callback&lt;/code> on successful connection upgrade if set,
+<span class='line'>247</span> * otherwise emits &lt;code>'tls'&lt;/code>&lt;/p>
+<span class='line'>248</span> *
+<span class='line'>249</span> * @param {Object} [credentials] An object with PEM encoded key and
+<span class='line'>250</span> * certificate &lt;code>{key:"---BEGIN...", cert:"---BEGIN..."}&lt;/code>,
+<span class='line'>251</span> * if not set autogenerated values will be used.
+<span class='line'>252</span> * @param {Function} [callback] If calback is set fire it after successful connection
+<span class='line'>253</span> * upgrade, otherwise &lt;code>'tls'&lt;/code> is emitted
+<span class='line'>254</span> */</span><span class="WHIT">
+<span class='line'>255</span> </span><span class="NAME">RAISocket.prototype.startTLS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>256</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.secureConnection</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Secure connection already established"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>258</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>259</span> </span><span class="WHIT">
+<span class='line'>260</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>263</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>264</span> </span><span class="WHIT">
+<span class='line'>265</span> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>266</span> </span><span class="WHIT">
+<span class='line'>267</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>268</span> </span><span class="WHIT">
+<span class='line'>269</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">secure_connector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssl_socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>270</span>
+<span class='line'>271</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ssl_socket.authorized</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>272</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"WARNING: TLS ERROR ("</span><span class="PUNC">+</span><span class="NAME">ssl_socket.authorizationError</span><span class="PUNC">+</span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>273</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>274</span> </span><span class="WHIT">
+<span class='line'>275</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>277</span> </span><span class="WHIT">
+<span class='line'>278</span> </span><span class="NAME">this.secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>279</span> </span><span class="WHIT">
+<span class='line'>280</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssl_socket</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>281</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onReceiveData.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>282</span> </span><span class="WHIT">
+<span class='line'>283</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS CONNECTION STARTED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>285</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>286</span> </span><span class="WHIT">
+<span class='line'>287</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>288</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>289</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>291</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>292</span> </span><span class="WHIT">
+<span class='line'>293</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>294</span> </span><span class="WHIT">
+<span class='line'>295</span> </span><span class="NAME">secure_connector.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>296</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>298</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>299</span>
+<span class='line'>300</span> </span><span class="COMM">/**
+<span class='line'>301</span> * &lt;p>Closes the connection to the client&lt;/p>
+<span class='line'>302</span> */</span><span class="WHIT">
+<span class='line'>303</span> </span><span class="NAME">RAISocket.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>304</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>305</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>306</span>
+<span class='line'>307</span> </span><span class="COMM">/**
+<span class='line'>308</span> * &lt;p>Called when a chunk of data arrives from the client. If currently in data
+<span class='line'>309</span> * mode, transmit the data otherwise send it to &lt;code>_processData&lt;/code>&lt;/p>
+<span class='line'>310</span> *
+<span class='line'>311</span> * @event
+<span class='line'>312</span> * @param {Buffer|String} chunk Data sent by the client
+<span class='line'>313</span> */</span><span class="WHIT">
+<span class='line'>314</span> </span><span class="NAME">RAISocket.prototype._onReceiveData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>315</span>
+<span class='line'>316</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// if currently setting up TLS connection</span><span class="WHIT">
+<span class='line'>317</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>318</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>319</span> </span><span class="WHIT">
+<span class='line'>320</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">chunk</span><span class="PUNC">==</span><span class="STRN">"string"</span><span class="PUNC">?</span><span class="NAME">chunk</span><span class="PUNC">:</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">dataEndMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>322</span> </span><span class="WHIT">
+<span class='line'>323</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>324</span> </span><span class="WHIT">
+<span class='line'>325</span> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>326</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataEndMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="REGX">/\r\n.*?$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>327</span> </span><span class="WHIT"> </span><span class="COMM">// if theres a line that is not ended, keep it for later</span><span class="WHIT">
+<span class='line'>328</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>330</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>331</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>332</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>333</span>
+<span class='line'>334</span> </span><span class="WHIT"> </span><span class="COMM">// check if a data end sequence is found from the data</span><span class="WHIT">
+<span class='line'>335</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>337</span> </span><span class="WHIT"> </span><span class="COMM">// if the sequence is not on byte 0 emit remaining data</span><span class="WHIT">
+<span class='line'>338</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>339</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>340</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>341</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>342</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>343</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>344</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>345</span> </span><span class="WHIT"> </span><span class="COMM">// emit data ready</span><span class="WHIT">
+<span class='line'>346</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"ready"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>348</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>349</span> </span><span class="WHIT"> </span><span class="COMM">// send the remaining data for processing</span><span class="WHIT">
+<span class='line'>350</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>351</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>352</span> </span><span class="WHIT"> </span><span class="COMM">// check if there's not something in the end of the data that resembles</span><span class="WHIT">
+<span class='line'>353</span> </span><span class="WHIT"> </span><span class="COMM">// end sequence - if so, cut it off and save it to the remainder</span><span class="WHIT">
+<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.min</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequence.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">></span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>357</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>358</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>359</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>360</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>361</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>362</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>363</span>
+<span class='line'>364</span> </span><span class="WHIT"> </span><span class="COMM">// if there's some data leht, emit it</span><span class="WHIT">
+<span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>366</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>367</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>368</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>369</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>371</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>372</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>373</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>374</span> </span><span class="WHIT"> </span><span class="COMM">// Not in data mode, process as command</span><span class="WHIT">
+<span class='line'>375</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>376</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>377</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>378</span>
+<span class='line'>379</span> </span><span class="COMM">/**
+<span class='line'>380</span> * &lt;p>Processed incoming command lines and emits found data as
+<span class='line'>381</span> * &lt;code>'command'&lt;/code> with the command name as the first param and the rest
+<span class='line'>382</span> * of the data as second (Buffer)&lt;/p>
+<span class='line'>383</span> *
+<span class='line'>384</span> * @param {String} str Binary string to be processed
+<span class='line'>385</span> */</span><span class="WHIT">
+<span class='line'>386</span> </span><span class="NAME">RAISocket.prototype._processData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>387</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>388</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>389</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>390</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">+</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
+<span class='line'>391</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>392</span> </span><span class="WHIT">
+<span class='line'>393</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>394</span> </span><span class="WHIT">
+<span class='line'>395</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>396</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>397</span> </span><span class="WHIT"> </span><span class="COMM">// If TLS upgrade is initiated do not process current buffer</span><span class="WHIT">
+<span class='line'>398</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>399</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>400</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>401</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>402</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/\s*[\S]+\s?/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>403</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>404</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>405</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"COMMAND:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>406</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>407</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"command"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NAME">match.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>408</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>409</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>410</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>411</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>412</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>413</span> </span><span class="WHIT"> </span><span class="NAME">this._onReceiveData</span><span class="PUNC">(</span><span class="NAME">lines.slice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>414</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>415</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>416</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>417</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>418</span>
+<span class='line'>419</span> </span><span class="COMM">/**
+<span class='line'>420</span> * &lt;p>Called when the connection is or is going to be ended&lt;/p>
+<span class='line'>421</span> */</span><span class="WHIT">
+<span class='line'>422</span> </span><span class="NAME">RAISocket.prototype._destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>423</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._destroyed</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>424</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>425</span> </span><span class="WHIT">
+<span class='line'>426</span> </span><span class="NAME">this.removeAllListeners</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>427</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>428</span>
+<span class='line'>429</span> </span><span class="COMM">/**
+<span class='line'>430</span> * &lt;p>Called when the connection is ended. Emits &lt;code>'end'&lt;/code>&lt;/p>
+<span class='line'>431</span> *
+<span class='line'>432</span> * @event
+<span class='line'>433</span> */</span><span class="WHIT">
+<span class='line'>434</span> </span><span class="NAME">RAISocket.prototype._onEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>435</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>437</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>438</span>
+<span class='line'>439</span> </span><span class="COMM">/**
+<span class='line'>440</span> * &lt;p>Called when an error has appeared. Emits &lt;code>'error'&lt;/code> with
+<span class='line'>441</span> * the error object as a parameter.&lt;/p>
+<span class='line'>442</span> *
+<span class='line'>443</span> * @event
+<span class='line'>444</span> * @param {Object} err Error object
+<span class='line'>445</span> */</span><span class="WHIT">
+<span class='line'>446</span> </span><span class="NAME">RAISocket.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>447</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>448</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>449</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>450</span>
+<span class='line'>451</span> </span><span class="COMM">/**
+<span class='line'>452</span> * &lt;p>Called when a timeout has occured. Connection will be closed and
+<span class='line'>453</span> * &lt;code>'timeout'&lt;/code> is emitted.&lt;/p>
+<span class='line'>454</span> *
+<span class='line'>455</span> * @event
+<span class='line'>456</span> */</span><span class="WHIT">
+<span class='line'>457</span> </span><span class="NAME">RAISocket.prototype._onTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>458</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.disconnectOnTimeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>459</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.socket.destroyed</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>460</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>461</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>462</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>463</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>464</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>465</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>466</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>467</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>468</span>
+<span class='line'>469</span> </span><span class="COMM">/**
+<span class='line'>470</span> * &lt;p>Called when the connection is closed&lt;/p>
+<span class='line'>471</span> *
+<span class='line'>472</span> * @event
+<span class='line'>473</span> * @param {Boolean} hadError did the connection end because of an error?
+<span class='line'>474</span> */</span><span class="WHIT">
+<span class='line'>475</span> </span><span class="NAME">RAISocket.prototype._onClose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hadError</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>477</span> </span><span class="PUNC">}</span><span class="PUNC">;</span></pre></body></html> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html
new file mode 100644
index 0000000..dd1b2ea
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html
@@ -0,0 +1,120 @@
+<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
+ .KEYW {color: #933;}
+ .COMM {color: #bbb; font-style: italic;}
+ .NUMB {color: #393;}
+ .STRN {color: #393;}
+ .REGX {color: #339;}
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">// SOURCE: https://gist.github.com/848444</span><span class="WHIT">
+<span class='line'> 2</span>
+<span class='line'> 3</span> </span><span class="COMM">// Target API:</span><span class="WHIT">
+<span class='line'> 4</span> </span><span class="COMM">//</span><span class="WHIT">
+<span class='line'> 5</span> </span><span class="COMM">// var s = require('net').createStream(25, 'smtp.example.com');</span><span class="WHIT">
+<span class='line'> 6</span> </span><span class="COMM">// s.on('connect', function() {</span><span class="WHIT">
+<span class='line'> 7</span> </span><span class="COMM">// require('starttls')(s, options, function() {</span><span class="WHIT">
+<span class='line'> 8</span> </span><span class="COMM">// if (!s.authorized) {</span><span class="WHIT">
+<span class='line'> 9</span> </span><span class="COMM">// s.destroy();</span><span class="WHIT">
+<span class='line'> 10</span> </span><span class="COMM">// return;</span><span class="WHIT">
+<span class='line'> 11</span> </span><span class="COMM">// }</span><span class="WHIT">
+<span class='line'> 12</span> </span><span class="COMM">//</span><span class="WHIT">
+<span class='line'> 13</span> </span><span class="COMM">// s.end("hello world\n");</span><span class="WHIT">
+<span class='line'> 14</span> </span><span class="COMM">// });</span><span class="WHIT">
+<span class='line'> 15</span> </span><span class="COMM">// });</span><span class="WHIT">
+<span class='line'> 16</span> </span><span class="COMM">//</span><span class="WHIT">
+<span class='line'> 17</span> </span><span class="COMM">//</span><span class="WHIT">
+<span class='line'> 18</span>
+<span class='line'> 19</span> </span><span class="COMM">/**
+<span class='line'> 20</span> * @namespace STARTTLS module
+<span class='line'> 21</span> * @name starttls
+<span class='line'> 22</span> */</span><span class="WHIT">
+<span class='line'> 23</span> </span><span class="NAME">module.exports.starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 24</span>
+<span class='line'> 25</span> </span><span class="COMM">/**
+<span class='line'> 26</span> * &lt;p>Upgrades a socket to a secure TLS connection&lt;/p>
+<span class='line'> 27</span> *
+<span class='line'> 28</span> * @memberOf starttls
+<span class='line'> 29</span> * @param {Object} socket Plaintext socket to be upgraded
+<span class='line'> 30</span> * @param {Object} options Certificate data for the server
+<span class='line'> 31</span> * @param {Function} callback Callback function to be run after upgrade
+<span class='line'> 32</span> */</span><span class="WHIT">
+<span class='line'> 33</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 34</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 35</span> </span><span class="WHIT">
+<span class='line'> 36</span> </span><span class="NAME">socket.removeAllListeners</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'crypto'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">createCredentials</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="NAME">pair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'tls'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">createSecurePair</span><span class="PUNC">(</span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 39</span> </span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pipe</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 40</span>
+<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">pair.on</span><span class="PUNC">(</span><span class="STRN">'secure'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">verifyError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pair._ssl</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">pair.ssl</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">verifyError</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 43</span>
+<span class='line'> 44</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">verifyError</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorizationError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">verifyError</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 50</span>
+<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">cleartext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 53</span>
+<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="NAME">cleartext._controlReleased</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 56</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 57</span>
+<span class='line'> 58</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">forwardEvents</span><span class="PUNC">(</span><span class="NAME">events</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterSource</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterDestination</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 60</span> </span><span class="WHIT">
+<span class='line'> 61</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">events.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">events</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 63</span>
+<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">forwardEvent.bind</span><span class="PUNC">(</span><span class="NAME">emitterDestination</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 65</span> </span><span class="WHIT">
+<span class='line'> 66</span> </span><span class="NAME">map.push</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">emitterSource.on</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 69</span> </span><span class="WHIT">
+<span class='line'> 70</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 71</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 72</span>
+<span class='line'> 73</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">forwardEvent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">this.emit.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 75</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 76</span>
+<span class='line'> 77</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">removeEvents</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterSource</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">map.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">emitterSource.removeAllListeners</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 82</span>
+<span class='line'> 83</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">pipe</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="NAME">pair.encrypted.pipe</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="NAME">socket.pipe</span><span class="PUNC">(</span><span class="NAME">pair.encrypted</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 86</span>
+<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="NAME">pair.fd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.fd</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 88</span> </span><span class="WHIT">
+<span class='line'> 89</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pair.cleartext</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 90</span> </span><span class="WHIT">
+<span class='line'> 91</span> </span><span class="NAME">cleartext.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.encrypted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pair.encrypted</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 94</span>
+<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cleartext._controlReleased</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.emit</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>100</span>
+<span class='line'>101</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">forwardEvents</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"drain"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>102</span> </span><span class="WHIT">
+<span class='line'>103</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
+<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">socket.removeListener</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">socket.removeListener</span><span class="PUNC">(</span><span class="STRN">'close'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>106</span> </span><span class="WHIT"> </span><span class="NAME">removeEvents</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">,</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>107</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
+<span class='line'>108</span>
+<span class='line'>109</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>110</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">'close'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>111</span>
+<span class='line'>112</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">;</span><span class="WHIT">
+<span class='line'>113</span> </span><span class="PUNC">}</span></pre></body></html> \ No newline at end of file
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html
new file mode 100644
index 0000000..e16b915
--- /dev/null
+++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html
@@ -0,0 +1,237 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="generator" content="JsDoc Toolkit" />
+ <title>starttls | JsDoc Reference</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+ <meta name="mobileoptimized" content="0" />
+
+ <link rel="stylesheet" href="../css/all.css" media="all" />
+ <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" />
+ <link rel="stylesheet" href="../css/handheld.css" media="handheld" />
+ <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" />
+
+ <script src="../javascript/all.js"></script>
+ <!--[if lt IE 9]>
+ <script src="../javascript/html5.js"></script>
+ <![endif]-->
+ </head>
+
+ <body>
+
+<div class="index">
+ <div class="menu">
+ <div class="indexLinks">
+ <a href="../index.html">Classes</a>
+ <a href="../files.html">Files</a>
+ </div>
+
+ <h2 class="heading1">Classes</h2>
+
+ <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input>
+
+ <nav>
+ <ul class="classList" id="ClassList">
+
+ <li><a href="../symbols/_global_.html">_global_</a></li>
+
+ <li><a href="../symbols/mockup.html">mockup</a></li>
+
+ <li><a href="../symbols/RAIServer.html">RAIServer</a></li>
+
+ <li><a href="../symbols/RAISocket.html">RAISocket</a></li>
+
+ <li><a href="../symbols/starttls.html">starttls</a></li>
+
+ </ul>
+ </nav>
+ </div>
+ <div class="fineprint" style="clear:both">
+ <footer>
+
+ Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br />
+ Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br />
+ Generated on:
+ <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time>
+ </footer>
+ </div>
+</div>
+
+<div class="index indexStatic"></div>
+
+<div class="content">
+ <div class="innerContent">
+ <article>
+ <header>
+ <h1 class="classTitle">
+
+ Namespace <span>starttls</span>
+ </h1>
+
+ <div class="intro">
+ <p class="description summary">
+ STARTTLS module
+ </p>
+
+
+ <ul class="summary">
+
+
+
+ <li>Defined in: <a href="../symbols/src/RAI_lib_starttls.js.html">starttls.js</a></li>
+
+
+ </ul>
+
+ </div>
+ </header>
+
+
+
+
+ <!--
+ #### METHODS SUMMARY
+ -->
+
+ <section>
+
+
+ <div class="props">
+ <h2 class="sectionTitle">Method Summary</h2>
+
+
+ <nav>
+ <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class starttls.">
+ <thead>
+ <tr>
+ <th scope="col">Method Attributes</th>
+ <th scope="col">Method Name and Description</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+ <tr
+ class='item0'
+ >
+ <td class="attributes">&lt;static&gt; &nbsp;</td>
+ <td class="nameDescription">
+ <div class="fixedFont">starttls.<b><a href="../symbols/starttls.html#.starttls">starttls</a></b>(socket, options, callback)
+ </div>
+ <div class="description"><p>Upgrades a socket to a secure TLS connection</p></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ </nav>
+
+
+
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENTS SUMMARY
+ -->
+
+ <!--
+ #### CONSTRUCTOR DETAILS
+ -->
+
+ <!--
+ #### FIELD DETAILS
+ -->
+
+ <!--
+ #### METHOD DETAILS
+ -->
+
+ <section>
+ <div class="details props">
+ <div class="innerProps">
+ <h2 class="sectionTitle">
+ Method Detail
+ </h2>
+
+ <ul class="methodDetail" id="MethodDetail">
+
+
+ <li
+ class='item0'
+ >
+ <div class="fixedFont heading" id=".starttls">
+ <span class='lighter'>
+ &lt;static&gt;
+ </span>
+
+
+
+ <span class="light">starttls.</span><b>starttls</b>(socket, options, callback)
+ </div>
+
+ <div class="description">
+ <p>Upgrades a socket to a secure TLS connection</p>
+
+
+
+
+ </div>
+
+
+
+
+ <dl class="detailList params">
+ <dt class="heading">Parameters:</dt>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>socket</b>
+
+ </dt>
+ <dd>Plaintext socket to be upgraded</dd>
+
+ <dt>
+ <span class="light fixedFont">{Object}</span> <b>options</b>
+
+ </dt>
+ <dd>Certificate data for the server</dd>
+
+ <dt>
+ <span class="light fixedFont">{Function}</span> <b>callback</b>
+
+ </dt>
+ <dd>Callback function to be run after upgrade</dd>
+
+ </dl>
+
+
+
+
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </section>
+
+
+ <!--
+ #### EVENT DETAILS
+ -->
+
+ </article>
+ </div>
+</div>
+
+ <script type="text/javascript">
+ wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660)
+ codeview.classFilter.Init()
+ </script>
+ </body>
+</html>
+