Built motion from commit (unavailable).|2.5.15
[motion2.git] / server / api / chatGroup / chatGroup.controller.js
index 8d46012..cbec562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56b9=['socket.io-emitter','./chatGroup.socket','register','jayson/promise','http','request','then','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','ChatGroup','include','findAll','show','length','find','create','body','params','destroy','describe','toInteger','addMembers','ids','getMembers','findOne','User','nolimit','removeMembers','ChatGroupId','getMessages','ChatInternalMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost'];(function(_0x28f09c,_0x5d4927){var _0x14df90=function(_0x1ce8ae){while(--_0x1ce8ae){_0x28f09c['push'](_0x28f09c['shift']());}};_0x14df90(++_0x5d4927);}(_0x56b9,0x196));var _0x956b=function(_0x211897,_0x12b0ac){_0x211897=_0x211897-0x0;var _0x35952f=_0x56b9[_0x211897];return _0x35952f;};'use strict';var pdf=require(_0x956b('0x0'));var emlformat=require(_0x956b('0x1'));var rimraf=require(_0x956b('0x2'));var zipdir=require(_0x956b('0x3'));var jsonpatch=require(_0x956b('0x4'));var rp=require(_0x956b('0x5'));var moment=require('moment');var BPromise=require(_0x956b('0x6'));var Mustache=require('mustache');var util=require(_0x956b('0x7'));var path=require(_0x956b('0x8'));var sox=require(_0x956b('0x9'));var csv=require('to-csv');var ejs=require(_0x956b('0xa'));var fs=require('fs');var _=require(_0x956b('0xb'));var squel=require(_0x956b('0xc'));var crypto=require(_0x956b('0xd'));var jsforce=require(_0x956b('0xe'));var deskjs=require(_0x956b('0xf'));var toCsv=require(_0x956b('0x10'));var querystring=require(_0x956b('0x11'));var Papa=require('papaparse');var Redis=require(_0x956b('0x12'));var authService=require(_0x956b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x956b('0x14'));var hardwareService=require(_0x956b('0x15'));var logger=require(_0x956b('0x16'))(_0x956b('0x17'));var utils=require(_0x956b('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x956b('0x19'));var db=require(_0x956b('0x1a'))['db'];config[_0x956b('0x1b')]=_[_0x956b('0x1c')](config[_0x956b('0x1b')],{'host':_0x956b('0x1d'),'port':0x18eb});var socket=require(_0x956b('0x1e'))(new Redis(config[_0x956b('0x1b')]));require(_0x956b('0x1f'))[_0x956b('0x20')](socket);var jayson=require(_0x956b('0x21'));var client=jayson['client'][_0x956b('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x32a806,_0xe68d03,_0x4e4029,_0x96ea9d){return new BPromise(function(_0x3426a2,_0x3e37f1){var _0x3cc1b7=_0x96ea9d||client;return _0x3cc1b7[_0x956b('0x23')](_0x32a806,_0x4e4029)[_0x956b('0x24')](function(_0x978146){logger['info'](_0x956b('0x25'),_0xe68d03,_0x956b('0x26'));logger[_0x956b('0x27')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0xe68d03,_0x956b('0x26'),JSON[_0x956b('0x28')](_0x978146));if(_0x978146['error']){if(_0x978146['error'][_0x956b('0x29')]===0x1f4){logger[_0x956b('0x2a')](_0x956b('0x25'),_0xe68d03,_0x978146['error'][_0x956b('0x2b')]);return _0x3e37f1(_0x978146[_0x956b('0x2a')][_0x956b('0x2b')]);}logger[_0x956b('0x2a')](_0x956b('0x25'),_0xe68d03,_0x978146[_0x956b('0x2a')]['message']);return _0x3426a2(_0x978146[_0x956b('0x2a')][_0x956b('0x2b')]);}else{logger[_0x956b('0x2c')](_0x956b('0x25'),_0xe68d03,_0x956b('0x26'));_0x3426a2(_0x978146[_0x956b('0x2d')][_0x956b('0x2b')]);}})[_0x956b('0x2e')](function(_0x634a65){logger[_0x956b('0x2a')](_0x956b('0x25'),_0xe68d03,_0x634a65);_0x3e37f1(_0x634a65);});});}function respondWithStatusCode(_0x512a68,_0x502875){_0x502875=_0x502875||0xcc;return function(_0x3940bb){if(_0x3940bb){return _0x512a68[_0x956b('0x2f')](_0x502875);}return _0x512a68[_0x956b('0x30')](_0x502875)[_0x956b('0x31')]();};}function respondWithResult(_0x91a931,_0xa0105e){_0xa0105e=_0xa0105e||0xc8;return function(_0x331c58){if(_0x331c58){return _0x91a931['status'](_0xa0105e)[_0x956b('0x32')](_0x331c58);}};}function respondWithFilteredResult(_0x30786d,_0x6268cb){return function(_0x3d33ad){if(_0x3d33ad){var _0x3d17a0=_0x3d33ad[_0x956b('0x33')],_0x33fb5e=_0x6268cb[_0x956b('0x34')],_0x1f692e=_0x6268cb[_0x956b('0x34')]+_0x6268cb[_0x956b('0x35')],_0x9c0e2e;if(_0x1f692e>=_0x3d17a0){_0x1f692e=_0x3d17a0;_0x9c0e2e=0xc8;}else{_0x9c0e2e=0xce;}_0x30786d[_0x956b('0x30')](_0x9c0e2e);return _0x30786d[_0x956b('0x36')](_0x956b('0x37'),_0x33fb5e+'-'+_0x1f692e+'/'+_0x3d17a0)[_0x956b('0x32')](_0x3d33ad);}return null;};}function patchUpdates(_0x46a67c){return function(_0x9a31fa){try{jsonpatch[_0x956b('0x38')](_0x9a31fa,_0x46a67c,!![]);}catch(_0x1c793f){return BPromise[_0x956b('0x39')](_0x1c793f);}return _0x9a31fa['save']();};}function saveUpdates(_0xb637d9,_0x128493){return function(_0x19a9a8){if(_0x19a9a8){return _0x19a9a8[_0x956b('0x3a')](_0xb637d9)[_0x956b('0x24')](function(_0x446870){return _0x446870;});}return null;};}function removeEntity(_0x3481eb,_0x2f930e){return function(_0x530e77){if(_0x530e77){return _0x530e77['destroy']()[_0x956b('0x24')](function(){_0x3481eb[_0x956b('0x30')](0xcc)[_0x956b('0x31')]();});}};}function handleEntityNotFound(_0x255cbb,_0x3be048){return function(_0x1b0a65){if(!_0x1b0a65){_0x255cbb[_0x956b('0x2f')](0x194);}return _0x1b0a65;};}function handleError(_0x5e1545,_0x2e00f8){_0x2e00f8=_0x2e00f8||0x1f4;return function(_0x4e6d7c){logger['error'](_0x4e6d7c[_0x956b('0x3b')]);if(_0x4e6d7c[_0x956b('0x3c')]){delete _0x4e6d7c[_0x956b('0x3c')];}_0x5e1545[_0x956b('0x30')](_0x2e00f8)[_0x956b('0x3d')](_0x4e6d7c);};}exports[_0x956b('0x3e')]=function(_0x468b38,_0x5865bb){var _0xafba20={},_0x465187={},_0x4cac1a={'count':0x0,'rows':[]};var _0x32acba=_[_0x956b('0x3f')](db['ChatGroup'][_0x956b('0x40')],function(_0x49e297){return{'name':_0x49e297[_0x956b('0x41')],'type':_0x49e297[_0x956b('0x42')][_0x956b('0x43')]};});_0x465187[_0x956b('0x44')]=_['map'](_0x32acba,'name');_0x465187[_0x956b('0x45')]=_[_0x956b('0x46')](_0x468b38[_0x956b('0x45')]);_0x465187[_0x956b('0x47')]=_[_0x956b('0x48')](_0x465187[_0x956b('0x44')],_0x465187['query']);_0xafba20[_0x956b('0x49')]=_[_0x956b('0x48')](_0x465187['model'],qs[_0x956b('0x4a')](_0x468b38['query']['fields']));_0xafba20[_0x956b('0x49')]=_0xafba20[_0x956b('0x49')]['length']?_0xafba20[_0x956b('0x49')]:_0x465187[_0x956b('0x44')];if(!_0x468b38['query'][_0x956b('0x4b')]('nolimit')){_0xafba20['limit']=qs[_0x956b('0x35')](_0x468b38[_0x956b('0x45')][_0x956b('0x35')]);_0xafba20['offset']=qs[_0x956b('0x34')](_0x468b38[_0x956b('0x45')][_0x956b('0x34')]);}_0xafba20[_0x956b('0x4c')]=qs[_0x956b('0x4d')](_0x468b38[_0x956b('0x45')][_0x956b('0x4d')]);_0xafba20[_0x956b('0x4e')]=qs[_0x956b('0x47')](_[_0x956b('0x4f')](_0x468b38[_0x956b('0x45')],_0x465187['filters']),_0x32acba);if(_0x468b38[_0x956b('0x45')][_0x956b('0x50')]){_0xafba20[_0x956b('0x4e')]=_['merge'](_0xafba20[_0x956b('0x4e')],{'$or':_[_0x956b('0x3f')](_0x32acba,function(_0x56d3b1){if(_0x56d3b1['type']!=='VIRTUAL'){var _0xcc2be2={};_0xcc2be2[_0x56d3b1[_0x956b('0x3c')]]={'$like':'%'+_0x468b38[_0x956b('0x45')][_0x956b('0x50')]+'%'};return _0xcc2be2;}})});}_0xafba20=_[_0x956b('0x51')]({},_0xafba20,_0x468b38[_0x956b('0x52')]);var _0x1ed099={'where':_0xafba20[_0x956b('0x4e')]};return db[_0x956b('0x53')][_0x956b('0x33')](_0x1ed099)['then'](function(_0x5efa71){_0x4cac1a['count']=_0x5efa71;if(_0x468b38['query']['includeAll']){_0xafba20[_0x956b('0x54')]=[{'all':!![]}];}return db[_0x956b('0x53')][_0x956b('0x55')](_0xafba20);})[_0x956b('0x24')](function(_0x1472db){_0x4cac1a['rows']=_0x1472db;return _0x4cac1a;})[_0x956b('0x24')](respondWithFilteredResult(_0x5865bb,_0xafba20))[_0x956b('0x2e')](handleError(_0x5865bb,null));};exports[_0x956b('0x56')]=function(_0x4f1cfd,_0x49f331){var _0x2f6fe2={'raw':!![],'where':{'id':_0x4f1cfd['params']['id']}},_0x387df0={};_0x387df0[_0x956b('0x44')]=_[_0x956b('0x46')](db[_0x956b('0x53')]['rawAttributes']);_0x387df0[_0x956b('0x45')]=_['keys'](_0x4f1cfd[_0x956b('0x45')]);_0x387df0[_0x956b('0x47')]=_[_0x956b('0x48')](_0x387df0[_0x956b('0x44')],_0x387df0[_0x956b('0x45')]);_0x2f6fe2[_0x956b('0x49')]=_[_0x956b('0x48')](_0x387df0[_0x956b('0x44')],qs[_0x956b('0x4a')](_0x4f1cfd[_0x956b('0x45')][_0x956b('0x4a')]));_0x2f6fe2[_0x956b('0x49')]=_0x2f6fe2[_0x956b('0x49')][_0x956b('0x57')]?_0x2f6fe2[_0x956b('0x49')]:_0x387df0['model'];if(_0x4f1cfd[_0x956b('0x45')]['includeAll']){_0x2f6fe2[_0x956b('0x54')]=[{'all':!![]}];}_0x2f6fe2=_[_0x956b('0x51')]({},_0x2f6fe2,_0x4f1cfd[_0x956b('0x52')]);return db[_0x956b('0x53')][_0x956b('0x58')](_0x2f6fe2)[_0x956b('0x24')](handleEntityNotFound(_0x49f331,null))['then'](respondWithResult(_0x49f331,null))['catch'](handleError(_0x49f331,null));};exports[_0x956b('0x59')]=function(_0x2807f9,_0x41c908){return db[_0x956b('0x53')]['create'](_0x2807f9[_0x956b('0x5a')],{})[_0x956b('0x24')](respondWithResult(_0x41c908,0xc9))[_0x956b('0x2e')](handleError(_0x41c908,null));};exports[_0x956b('0x3a')]=function(_0x26e7f9,_0x234b3f){if(_0x26e7f9[_0x956b('0x5a')]['id']){delete _0x26e7f9[_0x956b('0x5a')]['id'];}return db[_0x956b('0x53')][_0x956b('0x58')]({'where':{'id':_0x26e7f9[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x234b3f,null))[_0x956b('0x24')](saveUpdates(_0x26e7f9[_0x956b('0x5a')],null))[_0x956b('0x24')](respondWithResult(_0x234b3f,null))[_0x956b('0x2e')](handleError(_0x234b3f,null));};exports[_0x956b('0x5c')]=function(_0xe12e4c,_0x3e235c){return db['ChatGroup'][_0x956b('0x58')]({'where':{'id':_0xe12e4c[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x3e235c,null))['then'](removeEntity(_0x3e235c,null))['catch'](handleError(_0x3e235c,null));};exports['describe']=function(_0x2fba6a,_0x31bd22){return db[_0x956b('0x53')][_0x956b('0x5d')]()[_0x956b('0x24')](respondWithResult(_0x31bd22,null))['catch'](handleError(_0x31bd22,null));};exports['getUnread']=function(_0x28bbd3,_0x5a2bf3,_0x13e991){return db['ChatInternalMessage'][_0x956b('0x33')]({'where':{'ChatGroupId':_0x28bbd3['params']['id'],'ToId':_0x28bbd3['user']['id'],'read':![]}})['then'](function(_0x9fe6fc){return{'id':_[_0x956b('0x5e')](_0x28bbd3[_0x956b('0x5b')]['id']),'count':_0x9fe6fc};})['then'](respondWithResult(_0x5a2bf3,null))[_0x956b('0x2e')](handleError(_0x5a2bf3,null));};exports[_0x956b('0x5f')]=function(_0x1aa76f,_0x4365f4,_0x4a6beb){return db['ChatGroup']['find']({'where':{'id':_0x1aa76f[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x4365f4,null))['then'](function(_0x2e8261){if(_0x2e8261){return _0x2e8261[_0x956b('0x5f')](_0x1aa76f['body'][_0x956b('0x60')],_['omit'](_0x1aa76f[_0x956b('0x5a')],['ids','id'])||{});}})[_0x956b('0x24')](respondWithResult(_0x4365f4,null))[_0x956b('0x2e')](handleError(_0x4365f4,null));};exports[_0x956b('0x61')]=function(_0x34284d,_0xc809ff,_0x5ed404){var _0x431932={};var _0x3924a9={};var _0x75a57e;var _0x1476fa;return db[_0x956b('0x53')][_0x956b('0x62')]({'where':{'id':_0x34284d[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0xc809ff,null))[_0x956b('0x24')](function(_0x913ce9){if(_0x913ce9){_0x75a57e=_0x913ce9;_0x3924a9[_0x956b('0x44')]=_[_0x956b('0x46')](db[_0x956b('0x63')][_0x956b('0x40')]);_0x3924a9[_0x956b('0x45')]=_[_0x956b('0x46')](_0x34284d['query']);_0x3924a9[_0x956b('0x47')]=_[_0x956b('0x48')](_0x3924a9[_0x956b('0x44')],_0x3924a9[_0x956b('0x45')]);_0x431932['attributes']=_[_0x956b('0x48')](_0x3924a9['model'],qs[_0x956b('0x4a')](_0x34284d[_0x956b('0x45')][_0x956b('0x4a')]));_0x431932['attributes']=_0x431932['attributes'][_0x956b('0x57')]?_0x431932[_0x956b('0x49')]:_0x3924a9[_0x956b('0x44')];_0x431932['order']=qs[_0x956b('0x4d')](_0x34284d[_0x956b('0x45')]['sort']);_0x431932[_0x956b('0x4e')]=qs[_0x956b('0x47')](_[_0x956b('0x4f')](_0x34284d[_0x956b('0x45')],_0x3924a9[_0x956b('0x47')]));if(_0x34284d[_0x956b('0x45')][_0x956b('0x50')]){_0x431932[_0x956b('0x4e')]=_[_0x956b('0x51')](_0x431932['where'],{'$or':_[_0x956b('0x3f')](_0x431932[_0x956b('0x49')],function(_0x57b3fe){var _0x4aa86a={};_0x4aa86a[_0x57b3fe]={'$like':'%'+_0x34284d[_0x956b('0x45')][_0x956b('0x50')]+'%'};return _0x4aa86a;})});}_0x431932=_[_0x956b('0x51')]({},_0x431932,_0x34284d['options']);return _0x75a57e[_0x956b('0x61')](_0x431932);}})['then'](function(_0x23a2c3){if(_0x23a2c3){_0x1476fa=_0x23a2c3[_0x956b('0x57')];if(!_0x34284d[_0x956b('0x45')][_0x956b('0x4b')](_0x956b('0x64'))){_0x431932[_0x956b('0x35')]=qs[_0x956b('0x35')](_0x34284d[_0x956b('0x45')][_0x956b('0x35')]);_0x431932['offset']=qs['offset'](_0x34284d[_0x956b('0x45')][_0x956b('0x34')]);}return _0x75a57e[_0x956b('0x61')](_0x431932);}})['then'](function(_0x1ad830){if(_0x1ad830){return _0x1ad830?{'count':_0x1476fa,'rows':_0x1ad830}:null;}})['then'](respondWithResult(_0xc809ff,null))[_0x956b('0x2e')](handleError(_0xc809ff,null));};exports[_0x956b('0x65')]=function(_0x50b5b,_0x39c45b,_0xaa06f7){return db[_0x956b('0x53')][_0x956b('0x58')]({'where':{'id':_0x50b5b[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x39c45b,null))[_0x956b('0x24')](function(_0x1a1009){if(_0x1a1009){return _0x1a1009[_0x956b('0x65')](_0x50b5b['query'][_0x956b('0x60')]);}})[_0x956b('0x24')](respondWithStatusCode(_0x39c45b,null))['catch'](handleError(_0x39c45b,null));};exports['addMessage']=function(_0x2f4973,_0x3ed02f,_0x32dea5){if(_0x2f4973[_0x956b('0x5a')]['id']){delete _0x2f4973[_0x956b('0x5a')]['id'];}return db[_0x956b('0x53')]['find']({'where':{'id':_0x2f4973[_0x956b('0x5b')]['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x3ed02f,null))[_0x956b('0x24')](function(_0x1264a6){if(_0x1264a6){_0x2f4973[_0x956b('0x5a')][_0x956b('0x66')]=_0x1264a6['id'];return db['ChatInternalMessage'][_0x956b('0x59')](_0x2f4973['body']);}})[_0x956b('0x24')](respondWithResult(_0x3ed02f,null))[_0x956b('0x2e')](handleError(_0x3ed02f,null));};exports[_0x956b('0x67')]=function(_0x4de0b2,_0x3e0473,_0x430b9b){var _0x461383={};var _0x1e8953={};var _0x1f8405;var _0x531cba;return db['ChatGroup'][_0x956b('0x62')]({'where':{'id':_0x4de0b2[_0x956b('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3e0473,null))['then'](function(_0x38e366){if(_0x38e366){_0x1f8405=_0x38e366;_0x1e8953['model']=_['keys'](db[_0x956b('0x68')][_0x956b('0x40')]);_0x1e8953[_0x956b('0x45')]=_['keys'](_0x4de0b2[_0x956b('0x45')]);_0x1e8953['filters']=_['intersection'](_0x1e8953['model'],_0x1e8953[_0x956b('0x45')]);_0x461383['attributes']=_[_0x956b('0x48')](_0x1e8953[_0x956b('0x44')],qs['fields'](_0x4de0b2[_0x956b('0x45')][_0x956b('0x4a')]));_0x461383['attributes']=_0x461383[_0x956b('0x49')][_0x956b('0x57')]?_0x461383[_0x956b('0x49')]:_0x1e8953['model'];_0x461383['order']=qs[_0x956b('0x4d')](_0x4de0b2[_0x956b('0x45')][_0x956b('0x4d')]);_0x461383[_0x956b('0x4e')]=qs[_0x956b('0x47')](_[_0x956b('0x4f')](_0x4de0b2['query'],_0x1e8953[_0x956b('0x47')]));if(_0x4de0b2['query'][_0x956b('0x50')]){_0x461383['where']=_[_0x956b('0x51')](_0x461383[_0x956b('0x4e')],{'$or':_[_0x956b('0x3f')](_0x461383['attributes'],function(_0xc7e389){var _0x5cbf1c={};_0x5cbf1c[_0xc7e389]={'$like':'%'+_0x4de0b2[_0x956b('0x45')][_0x956b('0x50')]+'%'};return _0x5cbf1c;})});}if(_0x4de0b2['query'][_0x956b('0x69')]){var _0x3052e0=_0x4de0b2[_0x956b('0x45')][_0x956b('0x69')][_0x956b('0x6a')](',');var _0x34bfc9={};_0x34bfc9[_0x3052e0[0x0]]={'$gte':moment(_0x3052e0[0x1])[_0x956b('0x6b')](_0x956b('0x6c'))};_0x461383[_0x956b('0x4e')]=_['merge'](_0x461383[_0x956b('0x4e')],_0x34bfc9);}_0x461383=_[_0x956b('0x51')]({},_0x461383,_0x4de0b2['options']);return _0x1f8405['getMessages'](_0x461383);}})[_0x956b('0x24')](function(_0x5cee44){if(_0x5cee44){_0x531cba=_0x5cee44[_0x956b('0x57')];if(!_0x4de0b2[_0x956b('0x45')]['hasOwnProperty'](_0x956b('0x64'))){_0x461383[_0x956b('0x35')]=qs[_0x956b('0x35')](_0x4de0b2[_0x956b('0x45')][_0x956b('0x35')]);_0x461383[_0x956b('0x34')]=qs[_0x956b('0x34')](_0x4de0b2[_0x956b('0x45')][_0x956b('0x34')]);}return _0x1f8405['getMessages'](_0x461383);}})[_0x956b('0x24')](function(_0x5c8ef5){if(_0x5c8ef5){return _0x5c8ef5?{'count':_0x531cba,'rows':_0x5c8ef5}:null;}})[_0x956b('0x24')](respondWithResult(_0x3e0473,null))['catch'](handleError(_0x3e0473,null));};
\ No newline at end of file
+var _0xee55=['html-pdf','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./chatGroup.socket','register','jayson/promise','client','http','then','info','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','sendStatus','status','end','json','count','offset','limit','set','Content-Range','save','stack','name','send','index','ChatGroup','fieldName','type','key','model','map','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','body','find','destroy','describe','getUnread','user','addMembers','ids','omit','findOne','User','getMembers','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','create','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0xee55,0x1a0));var _0x5ee5=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xee55[_0x5416db];return _0x243e35;};'use strict';var pdf=require(_0x5ee5('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x5ee5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5ee5('0x2'));var rp=require('request-promise');var moment=require(_0x5ee5('0x3'));var BPromise=require(_0x5ee5('0x4'));var Mustache=require('mustache');var util=require(_0x5ee5('0x5'));var path=require(_0x5ee5('0x6'));var sox=require(_0x5ee5('0x7'));var csv=require(_0x5ee5('0x8'));var ejs=require(_0x5ee5('0x9'));var fs=require('fs');var _=require(_0x5ee5('0xa'));var squel=require(_0x5ee5('0xb'));var crypto=require('crypto');var jsforce=require(_0x5ee5('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5ee5('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ee5('0xe'));var qs=require(_0x5ee5('0xf'));var as=require(_0x5ee5('0x10'));var hardwareService=require(_0x5ee5('0x11'));var logger=require('../../config/logger')(_0x5ee5('0x12'));var utils=require(_0x5ee5('0x13'));var config=require(_0x5ee5('0x14'));var licenseUtil=require(_0x5ee5('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5ee5('0x16')](config[_0x5ee5('0x17')],{'host':_0x5ee5('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ee5('0x17')]));require(_0x5ee5('0x19'))[_0x5ee5('0x1a')](socket);var jayson=require(_0x5ee5('0x1b'));var client=jayson[_0x5ee5('0x1c')][_0x5ee5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x2ef66a,_0x5dd990,_0x2773ab,_0x184e53){return new BPromise(function(_0x240074,_0x32ebb8){var _0x588373=_0x184e53||client;return _0x588373['request'](_0x2ef66a,_0x2773ab)[_0x5ee5('0x1e')](function(_0x140070){logger[_0x5ee5('0x1f')]('ChatGroup,\x20%s,\x20%s',_0x5dd990,_0x5ee5('0x20'));logger['debug'](_0x5ee5('0x21'),_0x5dd990,'request\x20sent',JSON[_0x5ee5('0x22')](_0x140070));if(_0x140070[_0x5ee5('0x23')]){if(_0x140070[_0x5ee5('0x23')][_0x5ee5('0x24')]===0x1f4){logger[_0x5ee5('0x23')](_0x5ee5('0x25'),_0x5dd990,_0x140070[_0x5ee5('0x23')][_0x5ee5('0x26')]);return _0x32ebb8(_0x140070[_0x5ee5('0x23')][_0x5ee5('0x26')]);}logger[_0x5ee5('0x23')](_0x5ee5('0x25'),_0x5dd990,_0x140070[_0x5ee5('0x23')][_0x5ee5('0x26')]);return _0x240074(_0x140070[_0x5ee5('0x23')][_0x5ee5('0x26')]);}else{logger[_0x5ee5('0x1f')](_0x5ee5('0x25'),_0x5dd990,_0x5ee5('0x20'));_0x240074(_0x140070[_0x5ee5('0x27')]['message']);}})['catch'](function(_0x1150c4){logger[_0x5ee5('0x23')](_0x5ee5('0x25'),_0x5dd990,_0x1150c4);_0x32ebb8(_0x1150c4);});});}function respondWithStatusCode(_0x59c422,_0x1df98d){_0x1df98d=_0x1df98d||0xcc;return function(_0x4e52f3){if(_0x4e52f3){return _0x59c422[_0x5ee5('0x28')](_0x1df98d);}return _0x59c422[_0x5ee5('0x29')](_0x1df98d)[_0x5ee5('0x2a')]();};}function respondWithResult(_0x52cdf7,_0x5f530c){_0x5f530c=_0x5f530c||0xc8;return function(_0x36147e){if(_0x36147e){return _0x52cdf7[_0x5ee5('0x29')](_0x5f530c)[_0x5ee5('0x2b')](_0x36147e);}};}function respondWithFilteredResult(_0x12835a,_0x373a19){return function(_0x14254a){if(_0x14254a){var _0x334295=_0x14254a[_0x5ee5('0x2c')],_0x483c28=_0x373a19['offset'],_0x3d78a8=_0x373a19[_0x5ee5('0x2d')]+_0x373a19[_0x5ee5('0x2e')],_0x1947ae;if(_0x3d78a8>=_0x334295){_0x3d78a8=_0x334295;_0x1947ae=0xc8;}else{_0x1947ae=0xce;}_0x12835a[_0x5ee5('0x29')](_0x1947ae);return _0x12835a[_0x5ee5('0x2f')](_0x5ee5('0x30'),_0x483c28+'-'+_0x3d78a8+'/'+_0x334295)[_0x5ee5('0x2b')](_0x14254a);}return null;};}function patchUpdates(_0x42eee3){return function(_0x22dbe1){try{jsonpatch['apply'](_0x22dbe1,_0x42eee3,!![]);}catch(_0x12edfa){return BPromise['reject'](_0x12edfa);}return _0x22dbe1[_0x5ee5('0x31')]();};}function saveUpdates(_0x59fa09,_0x145923){return function(_0x2188ef){if(_0x2188ef){return _0x2188ef['update'](_0x59fa09)['then'](function(_0x188a6c){return _0x188a6c;});}return null;};}function removeEntity(_0x3be1c2,_0x17b052){return function(_0x2ff662){if(_0x2ff662){return _0x2ff662['destroy']()[_0x5ee5('0x1e')](function(){_0x3be1c2['status'](0xcc)[_0x5ee5('0x2a')]();});}};}function handleEntityNotFound(_0x508fc2,_0x323173){return function(_0x4e4015){if(!_0x4e4015){_0x508fc2[_0x5ee5('0x28')](0x194);}return _0x4e4015;};}function handleError(_0x4ed64d,_0xe13075){_0xe13075=_0xe13075||0x1f4;return function(_0x35f70c){logger[_0x5ee5('0x23')](_0x35f70c[_0x5ee5('0x32')]);if(_0x35f70c[_0x5ee5('0x33')]){delete _0x35f70c['name'];}_0x4ed64d[_0x5ee5('0x29')](_0xe13075)[_0x5ee5('0x34')](_0x35f70c);};}exports[_0x5ee5('0x35')]=function(_0x192a1c,_0x4a8961){var _0xa56d9={},_0x5979b7={},_0x221e26={'count':0x0,'rows':[]};var _0x2bac68=_['map'](db[_0x5ee5('0x36')]['rawAttributes'],function(_0x168932){return{'name':_0x168932[_0x5ee5('0x37')],'type':_0x168932[_0x5ee5('0x38')][_0x5ee5('0x39')]};});_0x5979b7[_0x5ee5('0x3a')]=_[_0x5ee5('0x3b')](_0x2bac68,'name');_0x5979b7['query']=_[_0x5ee5('0x3c')](_0x192a1c['query']);_0x5979b7['filters']=_[_0x5ee5('0x3d')](_0x5979b7['model'],_0x5979b7[_0x5ee5('0x3e')]);_0xa56d9[_0x5ee5('0x3f')]=_[_0x5ee5('0x3d')](_0x5979b7[_0x5ee5('0x3a')],qs['fields'](_0x192a1c['query'][_0x5ee5('0x40')]));_0xa56d9[_0x5ee5('0x3f')]=_0xa56d9[_0x5ee5('0x3f')][_0x5ee5('0x41')]?_0xa56d9[_0x5ee5('0x3f')]:_0x5979b7[_0x5ee5('0x3a')];if(!_0x192a1c[_0x5ee5('0x3e')][_0x5ee5('0x42')](_0x5ee5('0x43'))){_0xa56d9[_0x5ee5('0x2e')]=qs[_0x5ee5('0x2e')](_0x192a1c[_0x5ee5('0x3e')][_0x5ee5('0x2e')]);_0xa56d9['offset']=qs[_0x5ee5('0x2d')](_0x192a1c[_0x5ee5('0x3e')]['offset']);}_0xa56d9[_0x5ee5('0x44')]=qs[_0x5ee5('0x45')](_0x192a1c['query']['sort']);_0xa56d9[_0x5ee5('0x46')]=qs[_0x5ee5('0x47')](_[_0x5ee5('0x48')](_0x192a1c[_0x5ee5('0x3e')],_0x5979b7[_0x5ee5('0x47')]),_0x2bac68);if(_0x192a1c[_0x5ee5('0x3e')]['filter']){_0xa56d9[_0x5ee5('0x46')]=_[_0x5ee5('0x49')](_0xa56d9[_0x5ee5('0x46')],{'$or':_[_0x5ee5('0x3b')](_0x2bac68,function(_0xf51af2){if(_0xf51af2['type']!=='VIRTUAL'){var _0xf61a57={};_0xf61a57[_0xf51af2['name']]={'$like':'%'+_0x192a1c[_0x5ee5('0x3e')][_0x5ee5('0x4a')]+'%'};return _0xf61a57;}})});}_0xa56d9=_[_0x5ee5('0x49')]({},_0xa56d9,_0x192a1c[_0x5ee5('0x4b')]);var _0x3305d5={'where':_0xa56d9[_0x5ee5('0x46')]};return db[_0x5ee5('0x36')][_0x5ee5('0x2c')](_0x3305d5)['then'](function(_0x7e96a1){_0x221e26[_0x5ee5('0x2c')]=_0x7e96a1;if(_0x192a1c[_0x5ee5('0x3e')][_0x5ee5('0x4c')]){_0xa56d9[_0x5ee5('0x4d')]=[{'all':!![]}];}return db[_0x5ee5('0x36')]['findAll'](_0xa56d9);})['then'](function(_0x49867e){_0x221e26[_0x5ee5('0x4e')]=_0x49867e;return _0x221e26;})[_0x5ee5('0x1e')](respondWithFilteredResult(_0x4a8961,_0xa56d9))[_0x5ee5('0x4f')](handleError(_0x4a8961,null));};exports[_0x5ee5('0x50')]=function(_0x117086,_0x2b2c79){var _0x57d219={'raw':!![],'where':{'id':_0x117086[_0x5ee5('0x51')]['id']}},_0x3db2f4={};_0x3db2f4['model']=_[_0x5ee5('0x3c')](db[_0x5ee5('0x36')][_0x5ee5('0x52')]);_0x3db2f4[_0x5ee5('0x3e')]=_['keys'](_0x117086[_0x5ee5('0x3e')]);_0x3db2f4[_0x5ee5('0x47')]=_['intersection'](_0x3db2f4['model'],_0x3db2f4[_0x5ee5('0x3e')]);_0x57d219[_0x5ee5('0x3f')]=_['intersection'](_0x3db2f4['model'],qs[_0x5ee5('0x40')](_0x117086[_0x5ee5('0x3e')]['fields']));_0x57d219['attributes']=_0x57d219[_0x5ee5('0x3f')][_0x5ee5('0x41')]?_0x57d219[_0x5ee5('0x3f')]:_0x3db2f4[_0x5ee5('0x3a')];if(_0x117086['query']['includeAll']){_0x57d219[_0x5ee5('0x4d')]=[{'all':!![]}];}_0x57d219=_[_0x5ee5('0x49')]({},_0x57d219,_0x117086[_0x5ee5('0x4b')]);return db['ChatGroup']['find'](_0x57d219)[_0x5ee5('0x1e')](handleEntityNotFound(_0x2b2c79,null))[_0x5ee5('0x1e')](respondWithResult(_0x2b2c79,null))[_0x5ee5('0x4f')](handleError(_0x2b2c79,null));};exports['create']=function(_0x2d5f0c,_0x37eea2){return db[_0x5ee5('0x36')]['create'](_0x2d5f0c[_0x5ee5('0x53')],{})['then'](respondWithResult(_0x37eea2,0xc9))[_0x5ee5('0x4f')](handleError(_0x37eea2,null));};exports['update']=function(_0x2af2bf,_0x298a63){if(_0x2af2bf[_0x5ee5('0x53')]['id']){delete _0x2af2bf[_0x5ee5('0x53')]['id'];}return db[_0x5ee5('0x36')][_0x5ee5('0x54')]({'where':{'id':_0x2af2bf[_0x5ee5('0x51')]['id']}})[_0x5ee5('0x1e')](handleEntityNotFound(_0x298a63,null))[_0x5ee5('0x1e')](saveUpdates(_0x2af2bf[_0x5ee5('0x53')],null))[_0x5ee5('0x1e')](respondWithResult(_0x298a63,null))['catch'](handleError(_0x298a63,null));};exports[_0x5ee5('0x55')]=function(_0x23d0d6,_0x4b3df1){return db[_0x5ee5('0x36')][_0x5ee5('0x54')]({'where':{'id':_0x23d0d6[_0x5ee5('0x51')]['id']}})[_0x5ee5('0x1e')](handleEntityNotFound(_0x4b3df1,null))['then'](removeEntity(_0x4b3df1,null))[_0x5ee5('0x4f')](handleError(_0x4b3df1,null));};exports[_0x5ee5('0x56')]=function(_0x335553,_0x1c50e3){return db[_0x5ee5('0x36')]['describe']()[_0x5ee5('0x1e')](respondWithResult(_0x1c50e3,null))[_0x5ee5('0x4f')](handleError(_0x1c50e3,null));};exports[_0x5ee5('0x57')]=function(_0x1ccb3e,_0xb30038,_0x6a3036){return db['ChatInternalMessage'][_0x5ee5('0x2c')]({'where':{'ChatGroupId':_0x1ccb3e[_0x5ee5('0x51')]['id'],'ToId':_0x1ccb3e[_0x5ee5('0x58')]['id'],'read':![]}})[_0x5ee5('0x1e')](function(_0x3973dc){return{'id':_['toInteger'](_0x1ccb3e[_0x5ee5('0x51')]['id']),'count':_0x3973dc};})['then'](respondWithResult(_0xb30038,null))['catch'](handleError(_0xb30038,null));};exports[_0x5ee5('0x59')]=function(_0x33293e,_0x89d4de,_0xe08a24){return db[_0x5ee5('0x36')][_0x5ee5('0x54')]({'where':{'id':_0x33293e[_0x5ee5('0x51')]['id']}})['then'](handleEntityNotFound(_0x89d4de,null))[_0x5ee5('0x1e')](function(_0x2c0eba){if(_0x2c0eba){return _0x2c0eba['addMembers'](_0x33293e[_0x5ee5('0x53')][_0x5ee5('0x5a')],_[_0x5ee5('0x5b')](_0x33293e[_0x5ee5('0x53')],[_0x5ee5('0x5a'),'id'])||{});}})[_0x5ee5('0x1e')](respondWithResult(_0x89d4de,null))[_0x5ee5('0x4f')](handleError(_0x89d4de,null));};exports['getMembers']=function(_0x36e44f,_0x40644b,_0x62ec39){var _0x5c365f={};var _0x3656f0={};var _0x120420;var _0x537b5d;return db[_0x5ee5('0x36')][_0x5ee5('0x5c')]({'where':{'id':_0x36e44f[_0x5ee5('0x51')]['id']}})['then'](handleEntityNotFound(_0x40644b,null))[_0x5ee5('0x1e')](function(_0x48261e){if(_0x48261e){_0x120420=_0x48261e;_0x3656f0[_0x5ee5('0x3a')]=_['keys'](db[_0x5ee5('0x5d')][_0x5ee5('0x52')]);_0x3656f0[_0x5ee5('0x3e')]=_[_0x5ee5('0x3c')](_0x36e44f['query']);_0x3656f0[_0x5ee5('0x47')]=_[_0x5ee5('0x3d')](_0x3656f0[_0x5ee5('0x3a')],_0x3656f0['query']);_0x5c365f[_0x5ee5('0x3f')]=_['intersection'](_0x3656f0[_0x5ee5('0x3a')],qs[_0x5ee5('0x40')](_0x36e44f[_0x5ee5('0x3e')][_0x5ee5('0x40')]));_0x5c365f[_0x5ee5('0x3f')]=_0x5c365f[_0x5ee5('0x3f')][_0x5ee5('0x41')]?_0x5c365f[_0x5ee5('0x3f')]:_0x3656f0['model'];_0x5c365f[_0x5ee5('0x44')]=qs[_0x5ee5('0x45')](_0x36e44f['query'][_0x5ee5('0x45')]);_0x5c365f[_0x5ee5('0x46')]=qs[_0x5ee5('0x47')](_[_0x5ee5('0x48')](_0x36e44f['query'],_0x3656f0[_0x5ee5('0x47')]));if(_0x36e44f[_0x5ee5('0x3e')][_0x5ee5('0x4a')]){_0x5c365f[_0x5ee5('0x46')]=_['merge'](_0x5c365f['where'],{'$or':_[_0x5ee5('0x3b')](_0x5c365f[_0x5ee5('0x3f')],function(_0x1d6f9e){var _0x458672={};_0x458672[_0x1d6f9e]={'$like':'%'+_0x36e44f['query'][_0x5ee5('0x4a')]+'%'};return _0x458672;})});}_0x5c365f=_[_0x5ee5('0x49')]({},_0x5c365f,_0x36e44f[_0x5ee5('0x4b')]);return _0x120420[_0x5ee5('0x5e')](_0x5c365f);}})[_0x5ee5('0x1e')](function(_0x2ff4de){if(_0x2ff4de){_0x537b5d=_0x2ff4de[_0x5ee5('0x41')];if(!_0x36e44f[_0x5ee5('0x3e')]['hasOwnProperty']('nolimit')){_0x5c365f[_0x5ee5('0x2e')]=qs['limit'](_0x36e44f[_0x5ee5('0x3e')][_0x5ee5('0x2e')]);_0x5c365f[_0x5ee5('0x2d')]=qs[_0x5ee5('0x2d')](_0x36e44f[_0x5ee5('0x3e')][_0x5ee5('0x2d')]);}return _0x120420[_0x5ee5('0x5e')](_0x5c365f);}})[_0x5ee5('0x1e')](function(_0xcd150a){if(_0xcd150a){return _0xcd150a?{'count':_0x537b5d,'rows':_0xcd150a}:null;}})[_0x5ee5('0x1e')](respondWithResult(_0x40644b,null))[_0x5ee5('0x4f')](handleError(_0x40644b,null));};exports[_0x5ee5('0x5f')]=function(_0x489032,_0x4115fd,_0x15f93e){return db[_0x5ee5('0x36')][_0x5ee5('0x54')]({'where':{'id':_0x489032[_0x5ee5('0x51')]['id']}})['then'](handleEntityNotFound(_0x4115fd,null))[_0x5ee5('0x1e')](function(_0x398b47){if(_0x398b47){return _0x398b47[_0x5ee5('0x5f')](_0x489032[_0x5ee5('0x3e')]['ids']);}})[_0x5ee5('0x1e')](respondWithStatusCode(_0x4115fd,null))[_0x5ee5('0x4f')](handleError(_0x4115fd,null));};exports[_0x5ee5('0x60')]=function(_0x50de8e,_0x1794c5,_0x2f9313){if(_0x50de8e[_0x5ee5('0x53')]['id']){delete _0x50de8e[_0x5ee5('0x53')]['id'];}return db[_0x5ee5('0x36')]['find']({'where':{'id':_0x50de8e['params']['id']}})[_0x5ee5('0x1e')](handleEntityNotFound(_0x1794c5,null))[_0x5ee5('0x1e')](function(_0x49c3df){if(_0x49c3df){_0x50de8e[_0x5ee5('0x53')][_0x5ee5('0x61')]=_0x49c3df['id'];return db[_0x5ee5('0x62')][_0x5ee5('0x63')](_0x50de8e['body']);}})['then'](respondWithResult(_0x1794c5,null))[_0x5ee5('0x4f')](handleError(_0x1794c5,null));};exports[_0x5ee5('0x64')]=function(_0x2f32e1,_0x219ba4,_0xc81909){var _0x16374a={};var _0x27d244={};var _0x5121c5;var _0x5a8caa;return db[_0x5ee5('0x36')][_0x5ee5('0x5c')]({'where':{'id':_0x2f32e1[_0x5ee5('0x51')]['id']}})['then'](handleEntityNotFound(_0x219ba4,null))['then'](function(_0x3c06c7){if(_0x3c06c7){_0x5121c5=_0x3c06c7;_0x27d244[_0x5ee5('0x3a')]=_[_0x5ee5('0x3c')](db[_0x5ee5('0x62')]['rawAttributes']);_0x27d244[_0x5ee5('0x3e')]=_['keys'](_0x2f32e1[_0x5ee5('0x3e')]);_0x27d244[_0x5ee5('0x47')]=_['intersection'](_0x27d244['model'],_0x27d244[_0x5ee5('0x3e')]);_0x16374a['attributes']=_[_0x5ee5('0x3d')](_0x27d244['model'],qs['fields'](_0x2f32e1[_0x5ee5('0x3e')]['fields']));_0x16374a['attributes']=_0x16374a[_0x5ee5('0x3f')][_0x5ee5('0x41')]?_0x16374a['attributes']:_0x27d244[_0x5ee5('0x3a')];_0x16374a[_0x5ee5('0x44')]=qs[_0x5ee5('0x45')](_0x2f32e1[_0x5ee5('0x3e')][_0x5ee5('0x45')]);_0x16374a[_0x5ee5('0x46')]=qs['filters'](_['pick'](_0x2f32e1[_0x5ee5('0x3e')],_0x27d244[_0x5ee5('0x47')]));if(_0x2f32e1['query']['filter']){_0x16374a['where']=_['merge'](_0x16374a[_0x5ee5('0x46')],{'$or':_['map'](_0x16374a['attributes'],function(_0x4ecb8c){var _0x2e8ec1={};_0x2e8ec1[_0x4ecb8c]={'$like':'%'+_0x2f32e1[_0x5ee5('0x3e')][_0x5ee5('0x4a')]+'%'};return _0x2e8ec1;})});}if(_0x2f32e1[_0x5ee5('0x3e')][_0x5ee5('0x65')]){var _0x5ad118=_0x2f32e1['query'][_0x5ee5('0x65')]['split'](',');var _0x4ac81c={};_0x4ac81c[_0x5ad118[0x0]]={'$gte':moment(_0x5ad118[0x1])[_0x5ee5('0x66')](_0x5ee5('0x67'))};_0x16374a[_0x5ee5('0x46')]=_[_0x5ee5('0x49')](_0x16374a[_0x5ee5('0x46')],_0x4ac81c);}_0x16374a=_[_0x5ee5('0x49')]({},_0x16374a,_0x2f32e1[_0x5ee5('0x4b')]);return _0x5121c5[_0x5ee5('0x64')](_0x16374a);}})[_0x5ee5('0x1e')](function(_0x3dc843){if(_0x3dc843){_0x5a8caa=_0x3dc843[_0x5ee5('0x41')];if(!_0x2f32e1[_0x5ee5('0x3e')]['hasOwnProperty']('nolimit')){_0x16374a[_0x5ee5('0x2e')]=qs[_0x5ee5('0x2e')](_0x2f32e1[_0x5ee5('0x3e')]['limit']);_0x16374a['offset']=qs['offset'](_0x2f32e1['query']['offset']);}return _0x5121c5[_0x5ee5('0x64')](_0x16374a);}})['then'](function(_0x1d6f31){if(_0x1d6f31){return _0x1d6f31?{'count':_0x5a8caa,'rows':_0x1d6f31}:null;}})[_0x5ee5('0x1e')](respondWithResult(_0x219ba4,null))[_0x5ee5('0x4f')](handleError(_0x219ba4,null));};
\ No newline at end of file