Built motion from commit d5e4af8c.|2.6.23
[motion2.git] / server / api / squareMessage / squareMessage.controller.js
index b95845c..bbe6f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9755=['filters','pick','filter','merge','then','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','error','stack','name','send','index','SquareMessage','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x237fb7,_0x29d56b){var _0x329073=function(_0x10fbb3){while(--_0x10fbb3){_0x237fb7['push'](_0x237fb7['shift']());}};_0x329073(++_0x29d56b);}(_0x9755,0x1c6));var _0x5975=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0x9755[_0x5c619e];return _0x445cf8;};'use strict';var emlformat=require(_0x5975('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5975('0x1'));var jsonpatch=require(_0x5975('0x2'));var rp=require(_0x5975('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5975('0x4'));var path=require(_0x5975('0x5'));var sox=require(_0x5975('0x6'));var csv=require(_0x5975('0x7'));var ejs=require(_0x5975('0x8'));var fs=require('fs');var fs_extra=require(_0x5975('0x9'));var _=require(_0x5975('0xa'));var squel=require('squel');var crypto=require(_0x5975('0xb'));var jsforce=require(_0x5975('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x5975('0x7'));var querystring=require(_0x5975('0xd'));var Papa=require(_0x5975('0xe'));var Redis=require('ioredis');var authService=require(_0x5975('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5975('0x10'));var logger=require(_0x5975('0x11'))(_0x5975('0x12'));var utils=require('../../config/utils');var config=require(_0x5975('0x13'));var licenseUtil=require(_0x5975('0x14'));var db=require(_0x5975('0x15'))['db'];function respondWithStatusCode(_0x52bdaa,_0x119571){_0x119571=_0x119571||0xcc;return function(_0x2ad3ed){if(_0x2ad3ed){return _0x52bdaa[_0x5975('0x16')](_0x119571);}return _0x52bdaa[_0x5975('0x17')](_0x119571)['end']();};}function respondWithResult(_0x5e355a,_0x331385){_0x331385=_0x331385||0xc8;return function(_0x1543c5){if(_0x1543c5){return _0x5e355a[_0x5975('0x17')](_0x331385)['json'](_0x1543c5);}};}function respondWithFilteredResult(_0x1a3299,_0x4de825){return function(_0x145f39){if(_0x145f39){var _0x58da02=typeof _0x4de825[_0x5975('0x18')]===_0x5975('0x19')&&typeof _0x4de825[_0x5975('0x1a')]===_0x5975('0x19');var _0x25f2a0=_0x145f39[_0x5975('0x1b')];var _0x203829=_0x58da02?0x0:_0x4de825['offset'];var _0x4e6806=_0x58da02?_0x145f39['count']:_0x4de825['offset']+_0x4de825['limit'];var _0x296185;if(_0x4e6806>=_0x25f2a0){_0x4e6806=_0x25f2a0;_0x296185=0xc8;}else{_0x296185=0xce;}_0x1a3299['status'](_0x296185);return _0x1a3299[_0x5975('0x1c')](_0x5975('0x1d'),_0x203829+'-'+_0x4e6806+'/'+_0x25f2a0)[_0x5975('0x1e')](_0x145f39);}return null;};}function patchUpdates(_0x1977bb){return function(_0x5a9df3){try{jsonpatch[_0x5975('0x1f')](_0x5a9df3,_0x1977bb,!![]);}catch(_0x133e32){return BPromise[_0x5975('0x20')](_0x133e32);}return _0x5a9df3['save']();};}function saveUpdates(_0x34b195,_0xc916a8){return function(_0x1689e2){if(_0x1689e2){return _0x1689e2[_0x5975('0x21')](_0x34b195)['then'](function(_0x48d708){return _0x48d708;});}return null;};}function removeEntity(_0x1cef80,_0x2da6c8){return function(_0x504892){if(_0x504892){return _0x504892[_0x5975('0x22')]()['then'](function(){_0x1cef80[_0x5975('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e8b5a,_0x28c52f){return function(_0x4a1c85){if(!_0x4a1c85){_0x5e8b5a[_0x5975('0x16')](0x194);}return _0x4a1c85;};}function handleError(_0x763302,_0x57efee){_0x57efee=_0x57efee||0x1f4;return function(_0x54f304){logger[_0x5975('0x23')](_0x54f304[_0x5975('0x24')]);if(_0x54f304[_0x5975('0x25')]){delete _0x54f304[_0x5975('0x25')];}_0x763302[_0x5975('0x17')](_0x57efee)[_0x5975('0x26')](_0x54f304);};}exports[_0x5975('0x27')]=function(_0x24ee17,_0x406e65){var _0x52c4d8={},_0x37db84={},_0xd65354={'count':0x0,'rows':[]};var _0x2920b0=_['map'](db[_0x5975('0x28')]['rawAttributes'],function(_0x4bfd10){return{'name':_0x4bfd10[_0x5975('0x29')],'type':_0x4bfd10[_0x5975('0x2a')][_0x5975('0x2b')]};});_0x37db84[_0x5975('0x2c')]=_[_0x5975('0x2d')](_0x2920b0,'name');_0x37db84[_0x5975('0x2e')]=_[_0x5975('0x2f')](_0x24ee17['query']);_0x37db84['filters']=_['intersection'](_0x37db84[_0x5975('0x2c')],_0x37db84[_0x5975('0x2e')]);_0x52c4d8[_0x5975('0x30')]=_[_0x5975('0x31')](_0x37db84[_0x5975('0x2c')],qs[_0x5975('0x32')](_0x24ee17[_0x5975('0x2e')][_0x5975('0x32')]));_0x52c4d8[_0x5975('0x30')]=_0x52c4d8[_0x5975('0x30')][_0x5975('0x33')]?_0x52c4d8[_0x5975('0x30')]:_0x37db84[_0x5975('0x2c')];if(!_0x24ee17[_0x5975('0x2e')][_0x5975('0x34')](_0x5975('0x35'))){_0x52c4d8[_0x5975('0x1a')]=qs[_0x5975('0x1a')](_0x24ee17[_0x5975('0x2e')][_0x5975('0x1a')]);_0x52c4d8['offset']=qs[_0x5975('0x18')](_0x24ee17[_0x5975('0x2e')]['offset']);}_0x52c4d8[_0x5975('0x36')]=qs[_0x5975('0x37')](_0x24ee17[_0x5975('0x2e')]['sort']);_0x52c4d8[_0x5975('0x38')]=qs[_0x5975('0x39')](_[_0x5975('0x3a')](_0x24ee17['query'],_0x37db84[_0x5975('0x39')]),_0x2920b0);if(_0x24ee17[_0x5975('0x2e')][_0x5975('0x3b')]){_0x52c4d8['where']=_['merge'](_0x52c4d8[_0x5975('0x38')],{'$or':_[_0x5975('0x2d')](_0x2920b0,function(_0x4dca2f){if(_0x4dca2f['type']!=='VIRTUAL'){var _0x3d9ff6={};_0x3d9ff6[_0x4dca2f[_0x5975('0x25')]]={'$like':'%'+_0x24ee17[_0x5975('0x2e')][_0x5975('0x3b')]+'%'};return _0x3d9ff6;}})});}_0x52c4d8=_[_0x5975('0x3c')]({},_0x52c4d8,_0x24ee17['options']);var _0x464473={'where':_0x52c4d8[_0x5975('0x38')]};return db[_0x5975('0x28')][_0x5975('0x1b')](_0x464473)[_0x5975('0x3d')](function(_0x559ade){_0xd65354['count']=_0x559ade;if(_0x24ee17['query'][_0x5975('0x3e')]){_0x52c4d8[_0x5975('0x3f')]=[{'all':!![]}];}return db[_0x5975('0x28')]['findAll'](_0x52c4d8);})[_0x5975('0x3d')](function(_0x1cff9f){_0xd65354[_0x5975('0x40')]=_0x1cff9f;return _0xd65354;})['then'](respondWithFilteredResult(_0x406e65,_0x52c4d8))[_0x5975('0x41')](handleError(_0x406e65,null));};exports[_0x5975('0x42')]=function(_0x1251ab,_0x17b2c6){var _0x5ed816={'raw':!![],'where':{'id':_0x1251ab[_0x5975('0x43')]['id']}},_0x3cfb3a={};_0x3cfb3a[_0x5975('0x2c')]=_[_0x5975('0x2f')](db[_0x5975('0x28')][_0x5975('0x44')]);_0x3cfb3a[_0x5975('0x2e')]=_['keys'](_0x1251ab[_0x5975('0x2e')]);_0x3cfb3a[_0x5975('0x39')]=_['intersection'](_0x3cfb3a['model'],_0x3cfb3a[_0x5975('0x2e')]);_0x5ed816[_0x5975('0x30')]=_[_0x5975('0x31')](_0x3cfb3a['model'],qs[_0x5975('0x32')](_0x1251ab['query'][_0x5975('0x32')]));_0x5ed816[_0x5975('0x30')]=_0x5ed816[_0x5975('0x30')][_0x5975('0x33')]?_0x5ed816[_0x5975('0x30')]:_0x3cfb3a[_0x5975('0x2c')];if(_0x1251ab[_0x5975('0x2e')][_0x5975('0x3e')]){_0x5ed816[_0x5975('0x3f')]=[{'all':!![]}];}_0x5ed816=_[_0x5975('0x3c')]({},_0x5ed816,_0x1251ab[_0x5975('0x45')]);return db[_0x5975('0x28')][_0x5975('0x46')](_0x5ed816)['then'](handleEntityNotFound(_0x17b2c6,null))[_0x5975('0x3d')](respondWithResult(_0x17b2c6,null))[_0x5975('0x41')](handleError(_0x17b2c6,null));};exports[_0x5975('0x47')]=function(_0x664cd8,_0x350077){return db['SquareMessage'][_0x5975('0x47')](_0x664cd8[_0x5975('0x48')],{})['then'](respondWithResult(_0x350077,0xc9))[_0x5975('0x41')](handleError(_0x350077,null));};exports[_0x5975('0x21')]=function(_0x5045b1,_0x4214e8){if(_0x5045b1['body']['id']){delete _0x5045b1[_0x5975('0x48')]['id'];}return db[_0x5975('0x28')][_0x5975('0x46')]({'where':{'id':_0x5045b1[_0x5975('0x43')]['id']}})['then'](handleEntityNotFound(_0x4214e8,null))[_0x5975('0x3d')](saveUpdates(_0x5045b1['body'],null))[_0x5975('0x3d')](respondWithResult(_0x4214e8,null))['catch'](handleError(_0x4214e8,null));};exports[_0x5975('0x22')]=function(_0x135060,_0x4b1c7a){return db[_0x5975('0x28')][_0x5975('0x46')]({'where':{'id':_0x135060[_0x5975('0x43')]['id']}})[_0x5975('0x3d')](handleEntityNotFound(_0x4b1c7a,null))[_0x5975('0x3d')](removeEntity(_0x4b1c7a,null))['catch'](handleError(_0x4b1c7a,null));};
\ No newline at end of file
+var _0xc2c7=['nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc2c7,0x134));var _0x7c2c=function(_0x12e428,_0x3ad891){_0x12e428=_0x12e428-0x0;var _0x564df9=_0xc2c7[_0x12e428];return _0x564df9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c2c('0x0'));var zipdir=require(_0x7c2c('0x1'));var jsonpatch=require(_0x7c2c('0x2'));var rp=require(_0x7c2c('0x3'));var moment=require(_0x7c2c('0x4'));var BPromise=require(_0x7c2c('0x5'));var Mustache=require(_0x7c2c('0x6'));var util=require(_0x7c2c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7c2c('0x8'));var ejs=require(_0x7c2c('0x9'));var fs=require('fs');var fs_extra=require(_0x7c2c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7c2c('0xb'));var deskjs=require(_0x7c2c('0xc'));var toCsv=require(_0x7c2c('0x8'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var authService=require(_0x7c2c('0xf'));var qs=require(_0x7c2c('0x10'));var as=require(_0x7c2c('0x11'));var hardwareService=require(_0x7c2c('0x12'));var logger=require(_0x7c2c('0x13'))(_0x7c2c('0x14'));var utils=require(_0x7c2c('0x15'));var config=require(_0x7c2c('0x16'));var licenseUtil=require(_0x7c2c('0x17'));var db=require(_0x7c2c('0x18'))['db'];function respondWithStatusCode(_0xae8441,_0x45847d){_0x45847d=_0x45847d||0xcc;return function(_0x68398a){if(_0x68398a){return _0xae8441[_0x7c2c('0x19')](_0x45847d);}return _0xae8441[_0x7c2c('0x1a')](_0x45847d)[_0x7c2c('0x1b')]();};}function respondWithResult(_0x4c4aaf,_0x5b5729){_0x5b5729=_0x5b5729||0xc8;return function(_0x102778){if(_0x102778){return _0x4c4aaf[_0x7c2c('0x1a')](_0x5b5729)[_0x7c2c('0x1c')](_0x102778);}};}function respondWithFilteredResult(_0x5ae94f,_0x11424c){return function(_0x206ecd){if(_0x206ecd){var _0x5e55e0=typeof _0x11424c[_0x7c2c('0x1d')]==='undefined'&&typeof _0x11424c[_0x7c2c('0x1e')]==='undefined';var _0x342ea2=_0x206ecd[_0x7c2c('0x1f')];var _0x14453f=_0x5e55e0?0x0:_0x11424c[_0x7c2c('0x1d')];var _0x17df4a=_0x5e55e0?_0x206ecd[_0x7c2c('0x1f')]:_0x11424c[_0x7c2c('0x1d')]+_0x11424c[_0x7c2c('0x1e')];var _0x2d356e;if(_0x17df4a>=_0x342ea2){_0x17df4a=_0x342ea2;_0x2d356e=0xc8;}else{_0x2d356e=0xce;}_0x5ae94f[_0x7c2c('0x1a')](_0x2d356e);return _0x5ae94f[_0x7c2c('0x20')](_0x7c2c('0x21'),_0x14453f+'-'+_0x17df4a+'/'+_0x342ea2)['json'](_0x206ecd);}return null;};}function patchUpdates(_0x1c5491){return function(_0x4adb62){try{jsonpatch['apply'](_0x4adb62,_0x1c5491,!![]);}catch(_0x15ae33){return BPromise[_0x7c2c('0x22')](_0x15ae33);}return _0x4adb62[_0x7c2c('0x23')]();};}function saveUpdates(_0x38ae30,_0x41552f){return function(_0x1883b5){if(_0x1883b5){return _0x1883b5[_0x7c2c('0x24')](_0x38ae30)['then'](function(_0x10c356){return _0x10c356;});}return null;};}function removeEntity(_0x4dedd8,_0x302c93){return function(_0x57f510){if(_0x57f510){return _0x57f510[_0x7c2c('0x25')]()[_0x7c2c('0x26')](function(){_0x4dedd8[_0x7c2c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6ec7,_0x31a50c){return function(_0x30c53e){if(!_0x30c53e){_0x4d6ec7[_0x7c2c('0x19')](0x194);}return _0x30c53e;};}function handleError(_0x150690,_0x31d8f3){_0x31d8f3=_0x31d8f3||0x1f4;return function(_0xa8e145){logger[_0x7c2c('0x27')](_0xa8e145['stack']);if(_0xa8e145[_0x7c2c('0x28')]){delete _0xa8e145[_0x7c2c('0x28')];}_0x150690[_0x7c2c('0x1a')](_0x31d8f3)[_0x7c2c('0x29')](_0xa8e145);};}exports[_0x7c2c('0x2a')]=function(_0x1f8846,_0xf2bfd1){var _0x26f472={},_0xa040ff={},_0x5769ec={'count':0x0,'rows':[]};var _0x465ad6=_[_0x7c2c('0x2b')](db[_0x7c2c('0x2c')][_0x7c2c('0x2d')],function(_0x53ad23){return{'name':_0x53ad23[_0x7c2c('0x2e')],'type':_0x53ad23[_0x7c2c('0x2f')][_0x7c2c('0x30')]};});_0xa040ff[_0x7c2c('0x31')]=_[_0x7c2c('0x2b')](_0x465ad6,_0x7c2c('0x28'));_0xa040ff[_0x7c2c('0x32')]=_['keys'](_0x1f8846[_0x7c2c('0x32')]);_0xa040ff[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0xa040ff[_0x7c2c('0x31')],_0xa040ff[_0x7c2c('0x32')]);_0x26f472['attributes']=_['intersection'](_0xa040ff[_0x7c2c('0x31')],qs['fields'](_0x1f8846['query'][_0x7c2c('0x35')]));_0x26f472[_0x7c2c('0x36')]=_0x26f472[_0x7c2c('0x36')][_0x7c2c('0x37')]?_0x26f472['attributes']:_0xa040ff[_0x7c2c('0x31')];if(!_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x38')](_0x7c2c('0x39'))){_0x26f472[_0x7c2c('0x1e')]=qs[_0x7c2c('0x1e')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1e')]);_0x26f472[_0x7c2c('0x1d')]=qs[_0x7c2c('0x1d')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1d')]);}_0x26f472[_0x7c2c('0x3a')]=qs['sort'](_0x1f8846['query'][_0x7c2c('0x3b')]);_0x26f472['where']=qs['filters'](_['pick'](_0x1f8846[_0x7c2c('0x32')],_0xa040ff[_0x7c2c('0x33')]),_0x465ad6);if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]){_0x26f472[_0x7c2c('0x3d')]=_[_0x7c2c('0x3e')](_0x26f472[_0x7c2c('0x3d')],{'$or':_[_0x7c2c('0x2b')](_0x465ad6,function(_0x2b6520){if(_0x2b6520[_0x7c2c('0x2f')]!==_0x7c2c('0x3f')){var _0x58696a={};_0x58696a[_0x2b6520['name']]={'$like':'%'+_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]+'%'};return _0x58696a;}})});}_0x26f472=_[_0x7c2c('0x3e')]({},_0x26f472,_0x1f8846[_0x7c2c('0x40')]);var _0x5e8c96={'where':_0x26f472[_0x7c2c('0x3d')]};return db[_0x7c2c('0x2c')][_0x7c2c('0x1f')](_0x5e8c96)[_0x7c2c('0x26')](function(_0x18e288){_0x5769ec[_0x7c2c('0x1f')]=_0x18e288;if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x26f472[_0x7c2c('0x42')]=[{'all':!![]}];}return db['SquareMessage'][_0x7c2c('0x43')](_0x26f472);})['then'](function(_0x2c3f40){_0x5769ec[_0x7c2c('0x44')]=_0x2c3f40;return _0x5769ec;})['then'](respondWithFilteredResult(_0xf2bfd1,_0x26f472))[_0x7c2c('0x45')](handleError(_0xf2bfd1,null));};exports['show']=function(_0x3014fb,_0x33b2be){var _0x9b9813={'raw':!![],'where':{'id':_0x3014fb['params']['id']}},_0x26351e={};_0x26351e[_0x7c2c('0x31')]=_['keys'](db['SquareMessage'][_0x7c2c('0x2d')]);_0x26351e[_0x7c2c('0x32')]=_[_0x7c2c('0x46')](_0x3014fb['query']);_0x26351e[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0x26351e['model'],_0x26351e[_0x7c2c('0x32')]);_0x9b9813['attributes']=_[_0x7c2c('0x34')](_0x26351e[_0x7c2c('0x31')],qs['fields'](_0x3014fb['query'][_0x7c2c('0x35')]));_0x9b9813[_0x7c2c('0x36')]=_0x9b9813['attributes'][_0x7c2c('0x37')]?_0x9b9813['attributes']:_0x26351e['model'];if(_0x3014fb[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x9b9813[_0x7c2c('0x42')]=[{'all':!![]}];}_0x9b9813=_[_0x7c2c('0x3e')]({},_0x9b9813,_0x3014fb[_0x7c2c('0x40')]);return db[_0x7c2c('0x2c')][_0x7c2c('0x47')](_0x9b9813)[_0x7c2c('0x26')](handleEntityNotFound(_0x33b2be,null))[_0x7c2c('0x26')](respondWithResult(_0x33b2be,null))['catch'](handleError(_0x33b2be,null));};exports['create']=function(_0xeb067b,_0x3091bd){return db[_0x7c2c('0x2c')]['create'](_0xeb067b['body'],{})[_0x7c2c('0x26')](respondWithResult(_0x3091bd,0xc9))[_0x7c2c('0x45')](handleError(_0x3091bd,null));};exports[_0x7c2c('0x24')]=function(_0x2b79d5,_0x5f3de8){if(_0x2b79d5['body']['id']){delete _0x2b79d5['body']['id'];}return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x2b79d5[_0x7c2c('0x48')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x5f3de8,null))[_0x7c2c('0x26')](saveUpdates(_0x2b79d5['body'],null))[_0x7c2c('0x26')](respondWithResult(_0x5f3de8,null))[_0x7c2c('0x45')](handleError(_0x5f3de8,null));};exports['destroy']=function(_0x19621a,_0x56e09d){return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x19621a[_0x7c2c('0x48')]['id']}})['then'](handleEntityNotFound(_0x56e09d,null))['then'](removeEntity(_0x56e09d,null))[_0x7c2c('0x45')](handleError(_0x56e09d,null));};
\ No newline at end of file