Built motion from commit (unavailable).|2.5.27
[motion2.git] / server / api / mailSubstatus / mailSubstatus.controller.js
index 4822e0e..67385d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x918a=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','rows','catch','show','params','create','update','body','find','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','stack','name','index','map','MailSubstatus','rawAttributes','fieldName'];(function(_0x9b343a,_0x41e2d1){var _0x585cec=function(_0x2d3cd1){while(--_0x2d3cd1){_0x9b343a['push'](_0x9b343a['shift']());}};_0x585cec(++_0x41e2d1);}(_0x918a,0x1d4));var _0xa918=function(_0x7c85d7,_0x50b68f){_0x7c85d7=_0x7c85d7-0x0;var _0x46a7ac=_0x918a[_0x7c85d7];return _0x46a7ac;};'use strict';var pdf=require(_0xa918('0x0'));var emlformat=require(_0xa918('0x1'));var rimraf=require(_0xa918('0x2'));var zipdir=require(_0xa918('0x3'));var jsonpatch=require(_0xa918('0x4'));var rp=require('request-promise');var moment=require(_0xa918('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa918('0x6'));var util=require('util');var path=require(_0xa918('0x7'));var sox=require(_0xa918('0x8'));var csv=require(_0xa918('0x9'));var ejs=require(_0xa918('0xa'));var fs=require('fs');var _=require(_0xa918('0xb'));var squel=require(_0xa918('0xc'));var crypto=require(_0xa918('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa918('0x9'));var querystring=require(_0xa918('0xe'));var Papa=require(_0xa918('0xf'));var Redis=require(_0xa918('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa918('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa918('0x12'))(_0xa918('0x13'));var utils=require(_0xa918('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa918('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x471b57,_0x440e0c){_0x440e0c=_0x440e0c||0xcc;return function(_0x145dac){if(_0x145dac){return _0x471b57[_0xa918('0x16')](_0x440e0c);}return _0x471b57[_0xa918('0x17')](_0x440e0c)[_0xa918('0x18')]();};}function respondWithResult(_0x1e0a1c,_0x2e844d){_0x2e844d=_0x2e844d||0xc8;return function(_0x3268a6){if(_0x3268a6){return _0x1e0a1c[_0xa918('0x17')](_0x2e844d)[_0xa918('0x19')](_0x3268a6);}};}function respondWithFilteredResult(_0xf48c1a,_0x1d002e){return function(_0x44fd45){if(_0x44fd45){var _0x2e7107=_0x44fd45[_0xa918('0x1a')],_0x207c11=_0x1d002e[_0xa918('0x1b')],_0x409be4=_0x1d002e[_0xa918('0x1b')]+_0x1d002e[_0xa918('0x1c')],_0x23f23f;if(_0x409be4>=_0x2e7107){_0x409be4=_0x2e7107;_0x23f23f=0xc8;}else{_0x23f23f=0xce;}_0xf48c1a[_0xa918('0x17')](_0x23f23f);return _0xf48c1a[_0xa918('0x1d')](_0xa918('0x1e'),_0x207c11+'-'+_0x409be4+'/'+_0x2e7107)[_0xa918('0x19')](_0x44fd45);}return null;};}function patchUpdates(_0x1e3349){return function(_0x28e014){try{jsonpatch['apply'](_0x28e014,_0x1e3349,!![]);}catch(_0x350287){return BPromise[_0xa918('0x1f')](_0x350287);}return _0x28e014[_0xa918('0x20')]();};}function saveUpdates(_0x257917,_0xd33953){return function(_0x1cfef2){if(_0x1cfef2){return _0x1cfef2['update'](_0x257917)[_0xa918('0x21')](function(_0x56c1dd){return _0x56c1dd;});}return null;};}function removeEntity(_0x2e8824,_0x2c0181){return function(_0xa5d760){if(_0xa5d760){return _0xa5d760[_0xa918('0x22')]()[_0xa918('0x21')](function(){_0x2e8824['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xcb8618,_0x48faea){return function(_0x81a4be){if(!_0x81a4be){_0xcb8618[_0xa918('0x16')](0x194);}return _0x81a4be;};}function handleError(_0x1f9377,_0xf0d03){_0xf0d03=_0xf0d03||0x1f4;return function(_0x5dbe98){logger[_0xa918('0x23')](_0x5dbe98[_0xa918('0x24')]);if(_0x5dbe98[_0xa918('0x25')]){delete _0x5dbe98[_0xa918('0x25')];}_0x1f9377['status'](_0xf0d03)['send'](_0x5dbe98);};}exports[_0xa918('0x26')]=function(_0x4dbf32,_0x65f4ed){var _0x842077={},_0x594b7b={},_0x25239c={'count':0x0,'rows':[]};var _0x5564d6=_[_0xa918('0x27')](db[_0xa918('0x28')][_0xa918('0x29')],function(_0x881984){return{'name':_0x881984[_0xa918('0x2a')],'type':_0x881984['type'][_0xa918('0x2b')]};});_0x594b7b[_0xa918('0x2c')]=_[_0xa918('0x27')](_0x5564d6,_0xa918('0x25'));_0x594b7b[_0xa918('0x2d')]=_[_0xa918('0x2e')](_0x4dbf32[_0xa918('0x2d')]);_0x594b7b[_0xa918('0x2f')]=_[_0xa918('0x30')](_0x594b7b[_0xa918('0x2c')],_0x594b7b[_0xa918('0x2d')]);_0x842077[_0xa918('0x31')]=_['intersection'](_0x594b7b[_0xa918('0x2c')],qs[_0xa918('0x32')](_0x4dbf32[_0xa918('0x2d')][_0xa918('0x32')]));_0x842077[_0xa918('0x31')]=_0x842077[_0xa918('0x31')][_0xa918('0x33')]?_0x842077['attributes']:_0x594b7b[_0xa918('0x2c')];if(!_0x4dbf32[_0xa918('0x2d')][_0xa918('0x34')]('nolimit')){_0x842077[_0xa918('0x1c')]=qs[_0xa918('0x1c')](_0x4dbf32[_0xa918('0x2d')][_0xa918('0x1c')]);_0x842077[_0xa918('0x1b')]=qs[_0xa918('0x1b')](_0x4dbf32[_0xa918('0x2d')][_0xa918('0x1b')]);}_0x842077[_0xa918('0x35')]=qs[_0xa918('0x36')](_0x4dbf32[_0xa918('0x2d')][_0xa918('0x36')]);_0x842077[_0xa918('0x37')]=qs[_0xa918('0x2f')](_[_0xa918('0x38')](_0x4dbf32[_0xa918('0x2d')],_0x594b7b['filters']),_0x5564d6);if(_0x4dbf32['query']['filter']){_0x842077[_0xa918('0x37')]=_['merge'](_0x842077[_0xa918('0x37')],{'$or':_[_0xa918('0x27')](_0x5564d6,function(_0x29f54c){if(_0x29f54c[_0xa918('0x39')]!==_0xa918('0x3a')){var _0xe8c35c={};_0xe8c35c[_0x29f54c[_0xa918('0x25')]]={'$like':'%'+_0x4dbf32['query'][_0xa918('0x3b')]+'%'};return _0xe8c35c;}})});}_0x842077=_[_0xa918('0x3c')]({},_0x842077,_0x4dbf32[_0xa918('0x3d')]);var _0xba83fe={'where':_0x842077[_0xa918('0x37')]};return db[_0xa918('0x28')][_0xa918('0x1a')](_0xba83fe)[_0xa918('0x21')](function(_0x1705c6){_0x25239c[_0xa918('0x1a')]=_0x1705c6;if(_0x4dbf32['query'][_0xa918('0x3e')]){_0x842077[_0xa918('0x3f')]=[{'all':!![]}];}return db['MailSubstatus']['findAll'](_0x842077);})['then'](function(_0x2a584d){_0x25239c[_0xa918('0x40')]=_0x2a584d;return _0x25239c;})[_0xa918('0x21')](respondWithFilteredResult(_0x65f4ed,_0x842077))[_0xa918('0x41')](handleError(_0x65f4ed,null));};exports[_0xa918('0x42')]=function(_0x2ec35b,_0x3fac26){var _0x4d6dd7={'raw':!![],'where':{'id':_0x2ec35b[_0xa918('0x43')]['id']}},_0x5450c8={};_0x5450c8['model']=_['keys'](db['MailSubstatus'][_0xa918('0x29')]);_0x5450c8[_0xa918('0x2d')]=_[_0xa918('0x2e')](_0x2ec35b[_0xa918('0x2d')]);_0x5450c8[_0xa918('0x2f')]=_[_0xa918('0x30')](_0x5450c8[_0xa918('0x2c')],_0x5450c8[_0xa918('0x2d')]);_0x4d6dd7[_0xa918('0x31')]=_[_0xa918('0x30')](_0x5450c8[_0xa918('0x2c')],qs[_0xa918('0x32')](_0x2ec35b[_0xa918('0x2d')][_0xa918('0x32')]));_0x4d6dd7['attributes']=_0x4d6dd7[_0xa918('0x31')][_0xa918('0x33')]?_0x4d6dd7[_0xa918('0x31')]:_0x5450c8[_0xa918('0x2c')];if(_0x2ec35b[_0xa918('0x2d')][_0xa918('0x3e')]){_0x4d6dd7[_0xa918('0x3f')]=[{'all':!![]}];}_0x4d6dd7=_['merge']({},_0x4d6dd7,_0x2ec35b[_0xa918('0x3d')]);return db[_0xa918('0x28')]['find'](_0x4d6dd7)['then'](handleEntityNotFound(_0x3fac26,null))['then'](respondWithResult(_0x3fac26,null))[_0xa918('0x41')](handleError(_0x3fac26,null));};exports[_0xa918('0x44')]=function(_0x2a40bc,_0x5a12a5){return db[_0xa918('0x28')][_0xa918('0x44')](_0x2a40bc['body'],{})[_0xa918('0x21')](respondWithResult(_0x5a12a5,0xc9))[_0xa918('0x41')](handleError(_0x5a12a5,null));};exports[_0xa918('0x45')]=function(_0x771467,_0xe41b72){if(_0x771467[_0xa918('0x46')]['id']){delete _0x771467['body']['id'];}return db['MailSubstatus'][_0xa918('0x47')]({'where':{'id':_0x771467[_0xa918('0x43')]['id']}})[_0xa918('0x21')](handleEntityNotFound(_0xe41b72,null))[_0xa918('0x21')](saveUpdates(_0x771467['body'],null))[_0xa918('0x21')](respondWithResult(_0xe41b72,null))[_0xa918('0x41')](handleError(_0xe41b72,null));};exports['destroy']=function(_0x58e5c4,_0x3d19bb){return db['MailSubstatus'][_0xa918('0x47')]({'where':{'id':_0x58e5c4[_0xa918('0x43')]['id']}})[_0xa918('0x21')](handleEntityNotFound(_0x3d19bb,null))[_0xa918('0x21')](removeEntity(_0x3d19bb,null))['catch'](handleError(_0x3d19bb,null));};exports[_0xa918('0x48')]=function(_0x21f589,_0x45c389){return db[_0xa918('0x28')][_0xa918('0x48')]()[_0xa918('0x21')](respondWithResult(_0x45c389,null))['catch'](handleError(_0x45c389,null));};
\ No newline at end of file
+var _0x5ac2=['apply','reject','save','update','then','destroy','error','name','send','index','map','MailSubstatus','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','fields','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','count','offset','limit','set','Content-Range'];(function(_0xef376e,_0x1fd438){var _0x58ff1f=function(_0x15e662){while(--_0x15e662){_0xef376e['push'](_0xef376e['shift']());}};_0x58ff1f(++_0x1fd438);}(_0x5ac2,0xbc));var _0x25ac=function(_0x4a8f3d,_0x696385){_0x4a8f3d=_0x4a8f3d-0x0;var _0x54fe57=_0x5ac2[_0x4a8f3d];return _0x54fe57;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x25ac('0x0'));var zipdir=require(_0x25ac('0x1'));var jsonpatch=require(_0x25ac('0x2'));var rp=require('request-promise');var moment=require(_0x25ac('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x25ac('0x4'));var util=require(_0x25ac('0x5'));var path=require(_0x25ac('0x6'));var sox=require(_0x25ac('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25ac('0x8'));var squel=require(_0x25ac('0x9'));var crypto=require(_0x25ac('0xa'));var jsforce=require(_0x25ac('0xb'));var deskjs=require(_0x25ac('0xc'));var toCsv=require(_0x25ac('0xd'));var querystring=require('querystring');var Papa=require(_0x25ac('0xe'));var Redis=require(_0x25ac('0xf'));var authService=require(_0x25ac('0x10'));var qs=require(_0x25ac('0x11'));var as=require(_0x25ac('0x12'));var hardwareService=require(_0x25ac('0x13'));var logger=require(_0x25ac('0x14'))('api');var utils=require(_0x25ac('0x15'));var config=require(_0x25ac('0x16'));var licenseUtil=require(_0x25ac('0x17'));var db=require(_0x25ac('0x18'))['db'];function respondWithStatusCode(_0x42cab5,_0x568fd2){_0x568fd2=_0x568fd2||0xcc;return function(_0x26f422){if(_0x26f422){return _0x42cab5[_0x25ac('0x19')](_0x568fd2);}return _0x42cab5['status'](_0x568fd2)[_0x25ac('0x1a')]();};}function respondWithResult(_0x48d9f0,_0x275f35){_0x275f35=_0x275f35||0xc8;return function(_0x29b192){if(_0x29b192){return _0x48d9f0[_0x25ac('0x1b')](_0x275f35)[_0x25ac('0x1c')](_0x29b192);}};}function respondWithFilteredResult(_0x13372e,_0x453e7c){return function(_0x5b2b4b){if(_0x5b2b4b){var _0x2b08ee=_0x5b2b4b[_0x25ac('0x1d')],_0x37cb92=_0x453e7c['offset'],_0x4cca4b=_0x453e7c[_0x25ac('0x1e')]+_0x453e7c[_0x25ac('0x1f')],_0x49c17c;if(_0x4cca4b>=_0x2b08ee){_0x4cca4b=_0x2b08ee;_0x49c17c=0xc8;}else{_0x49c17c=0xce;}_0x13372e[_0x25ac('0x1b')](_0x49c17c);return _0x13372e[_0x25ac('0x20')](_0x25ac('0x21'),_0x37cb92+'-'+_0x4cca4b+'/'+_0x2b08ee)[_0x25ac('0x1c')](_0x5b2b4b);}return null;};}function patchUpdates(_0x924166){return function(_0x566c01){try{jsonpatch[_0x25ac('0x22')](_0x566c01,_0x924166,!![]);}catch(_0x454de3){return BPromise[_0x25ac('0x23')](_0x454de3);}return _0x566c01[_0x25ac('0x24')]();};}function saveUpdates(_0x4b8e45,_0x13626a){return function(_0x194390){if(_0x194390){return _0x194390[_0x25ac('0x25')](_0x4b8e45)[_0x25ac('0x26')](function(_0x51d19a){return _0x51d19a;});}return null;};}function removeEntity(_0x2de9a5,_0x230d1b){return function(_0x107c10){if(_0x107c10){return _0x107c10[_0x25ac('0x27')]()[_0x25ac('0x26')](function(){_0x2de9a5[_0x25ac('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a9e98,_0xc33a4e){return function(_0x2098a0){if(!_0x2098a0){_0x2a9e98['sendStatus'](0x194);}return _0x2098a0;};}function handleError(_0x146931,_0x2fa264){_0x2fa264=_0x2fa264||0x1f4;return function(_0x18a9e5){logger[_0x25ac('0x28')](_0x18a9e5['stack']);if(_0x18a9e5['name']){delete _0x18a9e5[_0x25ac('0x29')];}_0x146931[_0x25ac('0x1b')](_0x2fa264)[_0x25ac('0x2a')](_0x18a9e5);};}exports[_0x25ac('0x2b')]=function(_0x2dbcfa,_0x446b7a){var _0x460c6e={},_0x494ecf={},_0x157f00={'count':0x0,'rows':[]};var _0x426047=_[_0x25ac('0x2c')](db[_0x25ac('0x2d')][_0x25ac('0x2e')],function(_0x185335){return{'name':_0x185335['fieldName'],'type':_0x185335[_0x25ac('0x2f')][_0x25ac('0x30')]};});_0x494ecf[_0x25ac('0x31')]=_[_0x25ac('0x2c')](_0x426047,_0x25ac('0x29'));_0x494ecf[_0x25ac('0x32')]=_[_0x25ac('0x33')](_0x2dbcfa[_0x25ac('0x32')]);_0x494ecf[_0x25ac('0x34')]=_[_0x25ac('0x35')](_0x494ecf[_0x25ac('0x31')],_0x494ecf[_0x25ac('0x32')]);_0x460c6e[_0x25ac('0x36')]=_['intersection'](_0x494ecf[_0x25ac('0x31')],qs['fields'](_0x2dbcfa['query']['fields']));_0x460c6e['attributes']=_0x460c6e['attributes']['length']?_0x460c6e[_0x25ac('0x36')]:_0x494ecf['model'];if(!_0x2dbcfa['query']['hasOwnProperty']('nolimit')){_0x460c6e[_0x25ac('0x1f')]=qs[_0x25ac('0x1f')](_0x2dbcfa[_0x25ac('0x32')][_0x25ac('0x1f')]);_0x460c6e['offset']=qs['offset'](_0x2dbcfa['query']['offset']);}_0x460c6e[_0x25ac('0x37')]=qs[_0x25ac('0x38')](_0x2dbcfa['query']['sort']);_0x460c6e[_0x25ac('0x39')]=qs[_0x25ac('0x34')](_[_0x25ac('0x3a')](_0x2dbcfa[_0x25ac('0x32')],_0x494ecf[_0x25ac('0x34')]),_0x426047);if(_0x2dbcfa[_0x25ac('0x32')][_0x25ac('0x3b')]){_0x460c6e[_0x25ac('0x39')]=_['merge'](_0x460c6e[_0x25ac('0x39')],{'$or':_[_0x25ac('0x2c')](_0x426047,function(_0x2d9d21){if(_0x2d9d21[_0x25ac('0x2f')]!==_0x25ac('0x3c')){var _0x5639b0={};_0x5639b0[_0x2d9d21[_0x25ac('0x29')]]={'$like':'%'+_0x2dbcfa['query']['filter']+'%'};return _0x5639b0;}})});}_0x460c6e=_[_0x25ac('0x3d')]({},_0x460c6e,_0x2dbcfa[_0x25ac('0x3e')]);var _0x2908c7={'where':_0x460c6e[_0x25ac('0x39')]};return db['MailSubstatus'][_0x25ac('0x1d')](_0x2908c7)[_0x25ac('0x26')](function(_0x566ab0){_0x157f00[_0x25ac('0x1d')]=_0x566ab0;if(_0x2dbcfa['query']['includeAll']){_0x460c6e[_0x25ac('0x3f')]=[{'all':!![]}];}return db[_0x25ac('0x2d')][_0x25ac('0x40')](_0x460c6e);})[_0x25ac('0x26')](function(_0xb0be71){_0x157f00[_0x25ac('0x41')]=_0xb0be71;return _0x157f00;})[_0x25ac('0x26')](respondWithFilteredResult(_0x446b7a,_0x460c6e))[_0x25ac('0x42')](handleError(_0x446b7a,null));};exports[_0x25ac('0x43')]=function(_0x3bc4b1,_0x3dec6c){var _0x604c1f={'raw':!![],'where':{'id':_0x3bc4b1[_0x25ac('0x44')]['id']}},_0xb4698a={};_0xb4698a[_0x25ac('0x31')]=_['keys'](db[_0x25ac('0x2d')][_0x25ac('0x2e')]);_0xb4698a[_0x25ac('0x32')]=_[_0x25ac('0x33')](_0x3bc4b1[_0x25ac('0x32')]);_0xb4698a[_0x25ac('0x34')]=_['intersection'](_0xb4698a[_0x25ac('0x31')],_0xb4698a[_0x25ac('0x32')]);_0x604c1f['attributes']=_[_0x25ac('0x35')](_0xb4698a['model'],qs[_0x25ac('0x45')](_0x3bc4b1[_0x25ac('0x32')][_0x25ac('0x45')]));_0x604c1f[_0x25ac('0x36')]=_0x604c1f['attributes']['length']?_0x604c1f[_0x25ac('0x36')]:_0xb4698a[_0x25ac('0x31')];if(_0x3bc4b1[_0x25ac('0x32')]['includeAll']){_0x604c1f[_0x25ac('0x3f')]=[{'all':!![]}];}_0x604c1f=_['merge']({},_0x604c1f,_0x3bc4b1[_0x25ac('0x3e')]);return db[_0x25ac('0x2d')][_0x25ac('0x46')](_0x604c1f)[_0x25ac('0x26')](handleEntityNotFound(_0x3dec6c,null))[_0x25ac('0x26')](respondWithResult(_0x3dec6c,null))[_0x25ac('0x42')](handleError(_0x3dec6c,null));};exports['create']=function(_0x3f35cd,_0x3ae8e8){return db['MailSubstatus'][_0x25ac('0x47')](_0x3f35cd[_0x25ac('0x48')],{})[_0x25ac('0x26')](respondWithResult(_0x3ae8e8,0xc9))[_0x25ac('0x42')](handleError(_0x3ae8e8,null));};exports['update']=function(_0x11b41d,_0x4ea188){if(_0x11b41d['body']['id']){delete _0x11b41d[_0x25ac('0x48')]['id'];}return db[_0x25ac('0x2d')][_0x25ac('0x46')]({'where':{'id':_0x11b41d[_0x25ac('0x44')]['id']}})[_0x25ac('0x26')](handleEntityNotFound(_0x4ea188,null))[_0x25ac('0x26')](saveUpdates(_0x11b41d[_0x25ac('0x48')],null))[_0x25ac('0x26')](respondWithResult(_0x4ea188,null))[_0x25ac('0x42')](handleError(_0x4ea188,null));};exports[_0x25ac('0x27')]=function(_0x148ffa,_0x49b160){return db[_0x25ac('0x2d')][_0x25ac('0x46')]({'where':{'id':_0x148ffa[_0x25ac('0x44')]['id']}})[_0x25ac('0x26')](handleEntityNotFound(_0x49b160,null))[_0x25ac('0x26')](removeEntity(_0x49b160,null))[_0x25ac('0x42')](handleError(_0x49b160,null));};exports[_0x25ac('0x49')]=function(_0x5c2ede,_0x180dee){return db[_0x25ac('0x2d')][_0x25ac('0x49')]()['then'](respondWithResult(_0x180dee,null))[_0x25ac('0x42')](handleError(_0x180dee,null));};
\ No newline at end of file