Built motion from commit 70c527640.|1.0.24
[motion.git] / server / config / smtp / index.js
index d2fbbef..0b56abd 100644 (file)
@@ -1 +1 @@
-var _0xa083=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6D\x73\x67\x49\x64","\x73\x74\x61\x74\x65","\x63\x61\x74\x63\x68","\x73\x6F\x75\x72\x63\x65","\x2F\x73\x6D\x74\x70","\x66\x6F\x72\x6B","\x65\x78\x70\x6F\x72\x74\x73","\x65\x78\x69\x74","\x6B\x69\x6C\x6C","\x66\x72\x6F\x6D","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x72\x65\x74\x72\x79\x53\x65\x6E\x64","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x53\x45\x4E\x44\x49\x4E\x47","\x72\x65\x74\x72\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x69\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x55\x50\x44\x41\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x44\x45\x53\x54\x52\x4F\x59\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xa083[0];const util=require(_0xa083[1]);const cp=require(_0xa083[2]);const ms=require(_0xa083[4])[_0xa083[3]];const msg=require(_0xa083[4])[_0xa083[5]];const rm=require(_0xa083[4])[_0xa083[6]];function fork(_0xde4ax7,_0xde4ax8){return cp[_0xa083[25]](__dirname+ _0xa083[24],[_0xde4ax7,_0xde4ax8])[_0xa083[8]](_0xa083[13],function(_0xde4axb){if(_0xde4axb[_0xa083[14]]=== _0xa083[15]){return msg[_0xa083[19]](_0xde4axb[_0xa083[20]])[_0xa083[17]](function(_0xde4axd){return _0xde4axd[_0xa083[15]](_0xde4axb)})[_0xa083[17]](function(){return rm[_0xa083[19]](_0xde4axb[_0xa083[18]])})[_0xa083[17]](function(_0xde4axc){return _0xde4axc[_0xa083[15]]({lastEvent:_0xde4axb[_0xa083[16]]})})};if(_0xde4axb[_0xa083[14]]=== _0xa083[21]){return ms[_0xa083[19]](_0xde4ax7)[_0xa083[17]](function(_0xde4axe){return _0xde4axe[_0xa083[15]]({state:_0xde4axb[_0xa083[21]],source:_0xde4axb[_0xa083[23]]|| null})})[_0xa083[17]](function(){console[_0xa083[12]](_0xde4axb[_0xa083[12]])})[_0xa083[22]](function(_0xde4ax9){console[_0xa083[7]](_0xde4ax9)})}})[_0xa083[8]](_0xa083[9],function(_0xde4axa){console[_0xa083[12]](util[_0xa083[11]](_0xa083[10],_0xde4ax8,_0xde4axa))})[_0xa083[8]](_0xa083[7],function(_0xde4ax9){console[_0xa083[7]](_0xde4ax9)})}module[_0xa083[26]]= function(){var _0xde4axf={};process[_0xa083[8]](_0xa083[27],function(_0xde4axa){for(var _0xde4ax10 in _0xde4axf){if(_0xde4axf[_0xde4ax10]){_0xde4axf[_0xde4ax10][_0xa083[28]]()}}});msg[_0xa083[33]](function(_0xde4axd){if(_0xde4axf[_0xde4axd[_0xa083[29]]]){_0xde4axd[_0xa083[30]][_0xa083[14]]= _0xa083[13];_0xde4axd[_0xa083[30]][_0xa083[31]]= 0;_0xde4axf[_0xde4axd[_0xa083[29]]][_0xa083[32]](_0xde4axd[_0xa083[30]])}});msg[_0xa083[37]](function(_0xde4axd){if(_0xde4axd[_0xa083[34]](_0xa083[16])&& _0xde4axd[_0xa083[16]]=== _0xa083[35]){if(_0xde4axf[_0xde4axd[_0xa083[29]]]){_0xde4axd[_0xa083[30]][_0xa083[14]]= _0xa083[13];_0xde4axd[_0xa083[30]][_0xa083[31]]= _0xde4axd[_0xa083[30]][_0xa083[36]]+ 1;_0xde4axf[_0xde4axd[_0xa083[29]]][_0xa083[32]](_0xde4axd[_0xa083[30]])}}});ms[_0xa083[33]](function(_0xde4axe){_0xde4axf[_0xde4axe[_0xa083[38]]]= fork(_0xde4axe[_0xa083[39]],_0xde4axe[_0xa083[38]])});ms[_0xa083[37]](function(_0xde4axe){if(_0xde4axf[_0xde4axe[_0xa083[38]]]){if(!_0xde4axe[_0xa083[34]](_0xa083[21])&& !_0xde4axe[_0xa083[34]](_0xa083[23])){_0xde4axf[_0xde4axe[_0xa083[38]]][_0xa083[28]]();_0xde4axf[_0xde4axe[_0xa083[38]]]= null;_0xde4axf[_0xde4axe[_0xa083[38]]]= fork(_0xde4axe[_0xa083[39]],_0xde4axe[_0xa083[38]]);console[_0xa083[12]](util[_0xa083[11]](_0xa083[40],_0xde4axe[_0xa083[39]],_0xde4axf[_0xde4axe[_0xa083[38]]][_0xa083[41]]))}else {_0xde4axf[_0xde4axe[_0xa083[38]]][_0xa083[32]]({type:_0xa083[21],state:_0xde4axe[_0xa083[21]],source:_0xde4axe[_0xa083[23]],username:_0xde4axe[_0xa083[38]]})}}});ms[_0xa083[43]](function(_0xde4axe){if(_0xde4axf[_0xde4axe[_0xa083[38]]]){console[_0xa083[12]](util[_0xa083[11]](_0xa083[42],_0xde4axe[_0xa083[39]],_0xde4axf[_0xde4axe[_0xa083[38]]][_0xa083[41]]));_0xde4axf[_0xde4axe[_0xa083[38]]][_0xa083[28]]();_0xde4axf[_0xde4axe[_0xa083[38]]]= null}});ms[_0xa083[45]]()[_0xa083[17]](function(_0xde4ax11){_0xde4ax11[_0xa083[44]](function(_0xde4axe){_0xde4axf[_0xde4axe[_0xa083[38]]]= fork(_0xde4axe[_0xa083[39]],_0xde4axe[_0xa083[38]])})})[_0xa083[22]](function(_0xde4ax9){console[_0xa083[7]](_0xde4ax9)})}
\ No newline at end of file
+var _0xa0a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x6D\x61\x69\x6C","\x2E\x2E\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x65\x72\x72\x6F\x72","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x28\x25\x73\x20\x2D\x20\x25\x73\x29\x20\x45\x52\x52\x4F\x52","\x66\x6F\x72\x6D\x61\x74","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x28\x25\x73\x20\x2D\x20\x25\x73\x29\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x69\x6E\x66\x6F","\x6D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6D\x73\x67\x49\x64","\x73\x74\x61\x74\x65","\x73\x74\x61\x63\x6B","\x63\x61\x74\x63\x68","\x73\x6F\x75\x72\x63\x65","\x2F\x73\x6D\x74\x70","\x66\x6F\x72\x6B","\x65\x78\x70\x6F\x72\x74\x73","\x65\x78\x69\x74","\x73\x6D\x74\x70","\x6B\x69\x6C\x6C","\x67\x65\x74","\x66\x72\x6F\x6D","\x72\x65\x74\x72\x79\x53\x65\x6E\x64","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x53\x45\x4E\x44\x49\x4E\x47","\x72\x65\x74\x72\x79","\x68\x74\x6D\x6C","\x75\x74\x66\x38","\x74\x65\x78\x74","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x69\x64","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x66\x69\x6E\x64","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74\x49\x64","\x61\x64\x64\x72\x65\x73\x73","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x28\x25\x73\x20\x2D\x20\x25\x73\x29\x20\x55\x50\x44\x41\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x68\x6F\x73\x74","\x70\x61\x73\x73\x77\x6F\x72\x64","\x70\x6F\x72\x74","\x73\x73\x6C","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x28\x25\x73\x20\x2D\x20\x25\x73\x29\x20\x44\x45\x53\x54\x52\x4F\x59\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xa0a3[0];var util=require(_0xa0a3[1]);var _=require(_0xa0a3[2]);var cp=require(_0xa0a3[3]);var ms=require(_0xa0a3[5])[_0xa0a3[4]];var msg=require(_0xa0a3[5])[_0xa0a3[6]];var rm=require(_0xa0a3[5])[_0xa0a3[7]];var ma=require(_0xa0a3[5])[_0xa0a3[8]];var logger=require(_0xa0a3[10])(_0xa0a3[9]);function fork(_0xeebdxa,_0xeebdxb,_0xeebdxc){return cp[_0xa0a3[31]](__dirname+ _0xa0a3[30],[_0xeebdxa,_0xeebdxb])[_0xa0a3[14]](_0xa0a3[18],function(_0xeebdxf){if(_0xeebdxf[_0xa0a3[19]]=== _0xa0a3[20]){return msg[_0xa0a3[24]](_0xeebdxf[_0xa0a3[25]])[_0xa0a3[22]](function(_0xeebdx11){return _0xeebdx11[_0xa0a3[20]](_0xeebdxf)})[_0xa0a3[22]](function(){return rm[_0xa0a3[24]](_0xeebdxf[_0xa0a3[23]])})[_0xa0a3[22]](function(_0xeebdx10){return _0xeebdx10[_0xa0a3[20]]({lastEvent:_0xeebdxf[_0xa0a3[21]]})})};if(_0xeebdxf[_0xa0a3[19]]=== _0xa0a3[26]){return ms[_0xa0a3[24]](_0xeebdxa)[_0xa0a3[22]](function(_0xeebdx12){return _0xeebdx12[_0xa0a3[20]]({state:_0xeebdxf[_0xa0a3[26]],source:_0xeebdxf[_0xa0a3[29]]|| null})})[_0xa0a3[28]](function(_0xeebdxd){logger[_0xa0a3[11]](_0xeebdxd[_0xa0a3[27]])})}})[_0xa0a3[14]](_0xa0a3[15],function(_0xeebdxe){logger[_0xa0a3[17]](util[_0xa0a3[13]](_0xa0a3[16],_0xeebdxa,_0xeebdxc,_0xeebdxb,_0xeebdxe))})[_0xa0a3[14]](_0xa0a3[11],function(_0xeebdxd){logger[_0xa0a3[11]](util[_0xa0a3[13]](_0xa0a3[12],_0xeebdxa,_0xeebdxc,_0xeebdxb),_0xeebdxd)})}module[_0xa0a3[32]]= function(){var _0xeebdx13={};process[_0xa0a3[14]](_0xa0a3[33],function(_0xeebdxe){for(var _0xeebdx14 in _0xeebdx13){if(_0xeebdx13[_0xeebdx14][_0xa0a3[34]]){_0xeebdx13[_0xeebdx14][_0xa0a3[34]][_0xa0a3[35]]()}}});msg[_0xa0a3[40]](function(_0xeebdx11){_0xeebdx11= _0xeebdx11[_0xa0a3[36]]({plain:true});if(_0xeebdx13[_0xeebdx11[_0xa0a3[37]]]){_0xeebdx11[_0xa0a3[19]]= _0xa0a3[18];_0xeebdx11[_0xa0a3[38]]= 0;_0xeebdx13[_0xeebdx11[_0xa0a3[37]]][_0xa0a3[34]][_0xa0a3[39]](_0xeebdx11)}});msg[_0xa0a3[47]](function(_0xeebdx11){if(_0xeebdx11[_0xa0a3[41]](_0xa0a3[21])&& _0xeebdx11[_0xa0a3[21]]=== _0xa0a3[42]){_0xeebdx11= _0xeebdx11[_0xa0a3[36]]({plain:true});if(_0xeebdx13[_0xeebdx11[_0xa0a3[37]]]){_0xeebdx11[_0xa0a3[19]]= _0xa0a3[18];_0xeebdx11[_0xa0a3[38]]= _0xeebdx11[_0xa0a3[43]]+ 1;_0xeebdx11[_0xa0a3[44]]= _0xeebdx11[_0xa0a3[44]]?_0xeebdx11[_0xa0a3[44]].toString(_0xa0a3[45]):null;_0xeebdx11[_0xa0a3[46]]= _0xeebdx11[_0xa0a3[46]]?_0xeebdx11[_0xa0a3[46]].toString(_0xa0a3[45]):null;_0xeebdx13[_0xeebdx11[_0xa0a3[37]]][_0xa0a3[34]][_0xa0a3[39]](_0xeebdx11)}}});ms[_0xa0a3[40]](function(_0xeebdx12){if(_0xeebdx12[_0xa0a3[48]]&& _0xeebdx12[_0xa0a3[49]]){var _0xeebdx15=_[_0xa0a3[51]](_0xeebdx13,{mailAccountId:_0xeebdx12[_0xa0a3[50]]});if(_0xeebdx15){_0xeebdx15[_0xa0a3[52]]= _0xeebdx12[_0xa0a3[48]];_0xeebdx15[_0xa0a3[49]]= _0xeebdx12[_0xa0a3[49]];_0xeebdx15[_0xa0a3[34]]= fork(_0xeebdx12[_0xa0a3[48]],_0xeebdx12[_0xa0a3[49]],_0xeebdx15[_0xa0a3[53]])}}});ma[_0xa0a3[40]](function(_0xeebdx16){if(_0xeebdx16[_0xa0a3[48]]&& _0xeebdx16[_0xa0a3[53]]){_0xeebdx13[_0xeebdx16[_0xa0a3[53]]]= {mailAccountId:_0xeebdx16[_0xa0a3[48]],address:_0xeebdx16[_0xa0a3[53]]}}});ma[_0xa0a3[47]](function(_0xeebdx16){if(_0xeebdx16[_0xa0a3[41]](_0xa0a3[53])){var _0xeebdx15=_[_0xa0a3[51]](_0xeebdx13,{mailAccountId:_0xeebdx16[_0xa0a3[48]]});if(_0xeebdx15){var _0xeebdx17=_0xeebdx15[_0xa0a3[52]];var _0xeebdxb=_0xeebdx15[_0xa0a3[49]];var _0xeebdxc=_0xeebdx15[_0xa0a3[53]];_0xeebdx15[_0xa0a3[34]][_0xa0a3[35]]();_0xeebdx15= null;delete _0xeebdx13[_0xeebdxc];_0xeebdx13[_0xeebdx16[_0xa0a3[53]]]= {mailAccountId:_0xeebdx16[_0xa0a3[48]],mailServerOutId:_0xeebdx17,address:_0xeebdx16[_0xa0a3[53]],username:_0xeebdxb,smtp:fork(_0xeebdx17,_0xeebdxb,_0xeebdx16[_0xa0a3[53]])};logger[_0xa0a3[17]](util[_0xa0a3[13]](_0xa0a3[54],_0xeebdx17,_0xeebdx16[_0xa0a3[53]],_0xeebdxb,_0xeebdx13[_0xeebdx16[_0xa0a3[53]]][_0xa0a3[34]][_0xa0a3[55]]))}}});ms[_0xa0a3[47]](function(_0xeebdx12){var _0xeebdx15=_[_0xa0a3[51]](_0xeebdx13,{mailAccountId:_0xeebdx12[_0xa0a3[50]]});if(_0xeebdx15){if((!_0xeebdx12[_0xa0a3[41]](_0xa0a3[26])&&  !_0xeebdx12[_0xa0a3[41]](_0xa0a3[29])) || _0xeebdx12[_0xa0a3[41]](_0xa0a3[56]) || _0xeebdx12[_0xa0a3[41]](_0xa0a3[49]) || _0xeebdx12[_0xa0a3[41]](_0xa0a3[57]) || _0xeebdx12[_0xa0a3[41]](_0xa0a3[58]) || _0xeebdx12[_0xa0a3[41]](_0xa0a3[59])){_0xeebdx15[_0xa0a3[34]][_0xa0a3[35]]();_0xeebdx15[_0xa0a3[34]]= null;_0xeebdx15[_0xa0a3[49]]= _0xeebdx12[_0xa0a3[49]];_0xeebdx15[_0xa0a3[34]]= fork(_0xeebdx15[_0xa0a3[52]],_0xeebdx12[_0xa0a3[49]],_0xeebdx15[_0xa0a3[53]]);logger[_0xa0a3[17]](util[_0xa0a3[13]](_0xa0a3[54],_0xeebdx12[_0xa0a3[48]],_0xeebdx15[_0xa0a3[53]],_0xeebdx15[_0xa0a3[49]],_0xeebdx15[_0xa0a3[34]][_0xa0a3[55]]))}else {_0xeebdx15[_0xa0a3[34]][_0xa0a3[39]]({type:_0xa0a3[26],state:_0xeebdx12[_0xa0a3[26]],source:_0xeebdx12[_0xa0a3[29]],username:_0xeebdx12[_0xa0a3[49]]})}}});ms[_0xa0a3[61]](function(_0xeebdx12){var _0xeebdx15=_[_0xa0a3[51]](_0xeebdx13,{mailAccountId:_0xeebdx12[_0xa0a3[50]]});if(_0xeebdx15){logger[_0xa0a3[17]](util[_0xa0a3[13]](_0xa0a3[60],_0xeebdx12[_0xa0a3[48]],_0xeebdx15[_0xa0a3[53]],_0xeebdx15[_0xa0a3[49]],_0xeebdx15[_0xa0a3[34]][_0xa0a3[55]]));var _0xeebdxc=_0xeebdx15[_0xa0a3[53]];_0xeebdx15[_0xa0a3[34]][_0xa0a3[35]]();_0xeebdx15= null;delete _0xeebdx13[_0xeebdxc]}});ma[_0xa0a3[61]](function(_0xeebdx16){var _0xeebdx15=_[_0xa0a3[51]](_0xeebdx13,{mailAccountId:_0xeebdx16[_0xa0a3[48]]});if(_0xeebdx15){logger[_0xa0a3[17]](util[_0xa0a3[13]](_0xa0a3[60],_0xeebdx15[_0xa0a3[52]],_0xeebdx15[_0xa0a3[53]],_0xeebdx15[_0xa0a3[49]],_0xeebdx15[_0xa0a3[34]][_0xa0a3[55]]));var _0xeebdxc=_0xeebdx15[_0xa0a3[53]];_0xeebdx15[_0xa0a3[34]][_0xa0a3[35]]();_0xeebdx15= null;delete _0xeebdx13[_0xeebdxc]}});ma[_0xa0a3[63]]({include:[{model:ms,attributes:[_0xa0a3[48],_0xa0a3[49]],raw:true}],attributes:[_0xa0a3[48],_0xa0a3[53]]})[_0xa0a3[22]](function(_0xeebdx18){_0xeebdx18[_0xa0a3[62]](function(_0xeebdx16){_0xeebdx16= _0xeebdx16[_0xa0a3[36]]({plain:true});if(_0xeebdx16[_0xa0a3[4]]){_0xeebdx13[_0xeebdx16[_0xa0a3[53]]]= {mailAccountId:_0xeebdx16[_0xa0a3[48]],mailServerOutId:_0xeebdx16[_0xa0a3[4]][_0xa0a3[48]],address:_0xeebdx16[_0xa0a3[53]],username:_0xeebdx16[_0xa0a3[4]][_0xa0a3[49]],smtp:fork(_0xeebdx16[_0xa0a3[4]][_0xa0a3[48]],_0xeebdx16[_0xa0a3[4]][_0xa0a3[49]],_0xeebdx16[_0xa0a3[53]])}}})})[_0xa0a3[28]](function(_0xeebdxd){logger[_0xa0a3[11]](_0xeebdxd)})}
\ No newline at end of file