Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / intSalesforceField / intSalesforceField.controller.js
index 30bfa09..72d7351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef6=['fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','count','offset','limit','apply','save','update','then','sendStatus','error','stack','name','send','map','SalesforceField','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','show','params','keys','find','create','body','catch','destroy','eml-format','rimraf','zip-dir'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0ef6,0x8b));var _0x60ef=function(_0x5dfca5,_0x25be0c){_0x5dfca5=_0x5dfca5-0x0;var _0x5d5a1d=_0x0ef6[_0x5dfca5];return _0x5d5a1d;};'use strict';var emlformat=require(_0x60ef('0x0'));var rimraf=require(_0x60ef('0x1'));var zipdir=require(_0x60ef('0x2'));var jsonpatch=require(_0x60ef('0x3'));var rp=require('request-promise');var moment=require(_0x60ef('0x4'));var BPromise=require(_0x60ef('0x5'));var Mustache=require(_0x60ef('0x6'));var util=require(_0x60ef('0x7'));var path=require(_0x60ef('0x8'));var sox=require(_0x60ef('0x9'));var csv=require('to-csv');var ejs=require(_0x60ef('0xa'));var fs=require('fs');var fs_extra=require(_0x60ef('0xb'));var _=require(_0x60ef('0xc'));var squel=require(_0x60ef('0xd'));var crypto=require('crypto');var jsforce=require(_0x60ef('0xe'));var deskjs=require(_0x60ef('0xf'));var toCsv=require('to-csv');var querystring=require(_0x60ef('0x10'));var Papa=require('papaparse');var Redis=require(_0x60ef('0x11'));var authService=require(_0x60ef('0x12'));var qs=require(_0x60ef('0x13'));var as=require(_0x60ef('0x14'));var hardwareService=require(_0x60ef('0x15'));var logger=require('../../config/logger')(_0x60ef('0x16'));var utils=require(_0x60ef('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x60ef('0x18'));var db=require(_0x60ef('0x19'))['db'];function respondWithStatusCode(_0x4ee571,_0x90e53c){_0x90e53c=_0x90e53c||0xcc;return function(_0x430f43){if(_0x430f43){return _0x4ee571['sendStatus'](_0x90e53c);}return _0x4ee571['status'](_0x90e53c)[_0x60ef('0x1a')]();};}function respondWithResult(_0x2567cf,_0x1999d3){_0x1999d3=_0x1999d3||0xc8;return function(_0x24583b){if(_0x24583b){return _0x2567cf[_0x60ef('0x1b')](_0x1999d3)[_0x60ef('0x1c')](_0x24583b);}};}function respondWithFilteredResult(_0x41f37d,_0x110170){return function(_0x395666){if(_0x395666){var _0x1b2452=_0x395666[_0x60ef('0x1d')],_0x142e9a=_0x110170['offset'],_0x486d02=_0x110170[_0x60ef('0x1e')]+_0x110170[_0x60ef('0x1f')],_0x3eeace;if(_0x486d02>=_0x1b2452){_0x486d02=_0x1b2452;_0x3eeace=0xc8;}else{_0x3eeace=0xce;}_0x41f37d[_0x60ef('0x1b')](_0x3eeace);return _0x41f37d['set']('Content-Range',_0x142e9a+'-'+_0x486d02+'/'+_0x1b2452)[_0x60ef('0x1c')](_0x395666);}return null;};}function patchUpdates(_0xc4a61e){return function(_0x1e4024){try{jsonpatch[_0x60ef('0x20')](_0x1e4024,_0xc4a61e,!![]);}catch(_0x5e7832){return BPromise['reject'](_0x5e7832);}return _0x1e4024[_0x60ef('0x21')]();};}function saveUpdates(_0x51b224,_0x2e9bfe){return function(_0x1a1f2c){if(_0x1a1f2c){return _0x1a1f2c[_0x60ef('0x22')](_0x51b224)[_0x60ef('0x23')](function(_0x260fc4){return _0x260fc4;});}return null;};}function removeEntity(_0x4b43db,_0x3cb14c){return function(_0x447fdd){if(_0x447fdd){return _0x447fdd['destroy']()['then'](function(){_0x4b43db[_0x60ef('0x1b')](0xcc)[_0x60ef('0x1a')]();});}};}function handleEntityNotFound(_0x45fb26,_0x50a4e2){return function(_0x5e4cd9){if(!_0x5e4cd9){_0x45fb26[_0x60ef('0x24')](0x194);}return _0x5e4cd9;};}function handleError(_0x184cf6,_0x211f5d){_0x211f5d=_0x211f5d||0x1f4;return function(_0x25d5cd){logger[_0x60ef('0x25')](_0x25d5cd[_0x60ef('0x26')]);if(_0x25d5cd[_0x60ef('0x27')]){delete _0x25d5cd[_0x60ef('0x27')];}_0x184cf6['status'](_0x211f5d)[_0x60ef('0x28')](_0x25d5cd);};}exports['index']=function(_0x364031,_0x573b59){var _0x2ceb30={},_0x3160b4={},_0x187e86={'count':0x0,'rows':[]};var _0x2cd31d=_[_0x60ef('0x29')](db[_0x60ef('0x2a')]['rawAttributes'],function(_0x1bdb03){return{'name':_0x1bdb03['fieldName'],'type':_0x1bdb03[_0x60ef('0x2b')][_0x60ef('0x2c')]};});_0x3160b4[_0x60ef('0x2d')]=_[_0x60ef('0x29')](_0x2cd31d,'name');_0x3160b4[_0x60ef('0x2e')]=_['keys'](_0x364031[_0x60ef('0x2e')]);_0x3160b4[_0x60ef('0x2f')]=_[_0x60ef('0x30')](_0x3160b4[_0x60ef('0x2d')],_0x3160b4['query']);_0x2ceb30[_0x60ef('0x31')]=_['intersection'](_0x3160b4['model'],qs[_0x60ef('0x32')](_0x364031[_0x60ef('0x2e')][_0x60ef('0x32')]));_0x2ceb30['attributes']=_0x2ceb30[_0x60ef('0x31')][_0x60ef('0x33')]?_0x2ceb30[_0x60ef('0x31')]:_0x3160b4[_0x60ef('0x2d')];if(!_0x364031[_0x60ef('0x2e')][_0x60ef('0x34')](_0x60ef('0x35'))){_0x2ceb30['limit']=qs[_0x60ef('0x1f')](_0x364031[_0x60ef('0x2e')][_0x60ef('0x1f')]);_0x2ceb30[_0x60ef('0x1e')]=qs[_0x60ef('0x1e')](_0x364031[_0x60ef('0x2e')][_0x60ef('0x1e')]);}_0x2ceb30[_0x60ef('0x36')]=qs[_0x60ef('0x37')](_0x364031[_0x60ef('0x2e')][_0x60ef('0x37')]);_0x2ceb30[_0x60ef('0x38')]=qs[_0x60ef('0x2f')](_[_0x60ef('0x39')](_0x364031['query'],_0x3160b4[_0x60ef('0x2f')]),_0x2cd31d);if(_0x364031['query'][_0x60ef('0x3a')]){_0x2ceb30['where']=_[_0x60ef('0x3b')](_0x2ceb30[_0x60ef('0x38')],{'$or':_['map'](_0x2cd31d,function(_0x2eb9d0){if(_0x2eb9d0[_0x60ef('0x2b')]!==_0x60ef('0x3c')){var _0x437aad={};_0x437aad[_0x2eb9d0[_0x60ef('0x27')]]={'$like':'%'+_0x364031[_0x60ef('0x2e')][_0x60ef('0x3a')]+'%'};return _0x437aad;}})});}_0x2ceb30=_['merge']({},_0x2ceb30,_0x364031['options']);var _0x5db86c={'where':_0x2ceb30[_0x60ef('0x38')]};return db[_0x60ef('0x2a')][_0x60ef('0x1d')](_0x5db86c)[_0x60ef('0x23')](function(_0x61b217){_0x187e86[_0x60ef('0x1d')]=_0x61b217;if(_0x364031[_0x60ef('0x2e')][_0x60ef('0x3d')]){_0x2ceb30[_0x60ef('0x3e')]=[{'all':!![]}];}return db[_0x60ef('0x2a')]['findAll'](_0x2ceb30);})[_0x60ef('0x23')](function(_0x30f2f3){_0x187e86['rows']=_0x30f2f3;return _0x187e86;})['then'](respondWithFilteredResult(_0x573b59,_0x2ceb30))['catch'](handleError(_0x573b59,null));};exports[_0x60ef('0x3f')]=function(_0x220a05,_0x7acfd5){var _0x4f4f12={'raw':!![],'where':{'id':_0x220a05[_0x60ef('0x40')]['id']}},_0x4a8e71={};_0x4a8e71[_0x60ef('0x2d')]=_[_0x60ef('0x41')](db[_0x60ef('0x2a')]['rawAttributes']);_0x4a8e71['query']=_[_0x60ef('0x41')](_0x220a05[_0x60ef('0x2e')]);_0x4a8e71['filters']=_['intersection'](_0x4a8e71[_0x60ef('0x2d')],_0x4a8e71[_0x60ef('0x2e')]);_0x4f4f12[_0x60ef('0x31')]=_['intersection'](_0x4a8e71['model'],qs[_0x60ef('0x32')](_0x220a05[_0x60ef('0x2e')][_0x60ef('0x32')]));_0x4f4f12[_0x60ef('0x31')]=_0x4f4f12[_0x60ef('0x31')][_0x60ef('0x33')]?_0x4f4f12['attributes']:_0x4a8e71[_0x60ef('0x2d')];if(_0x220a05['query'][_0x60ef('0x3d')]){_0x4f4f12[_0x60ef('0x3e')]=[{'all':!![]}];}_0x4f4f12=_[_0x60ef('0x3b')]({},_0x4f4f12,_0x220a05['options']);return db[_0x60ef('0x2a')][_0x60ef('0x42')](_0x4f4f12)['then'](handleEntityNotFound(_0x7acfd5,null))[_0x60ef('0x23')](respondWithResult(_0x7acfd5,null))['catch'](handleError(_0x7acfd5,null));};exports[_0x60ef('0x43')]=function(_0x125b22,_0x3d0bcc){return db['SalesforceField'][_0x60ef('0x43')](_0x125b22[_0x60ef('0x44')],{})[_0x60ef('0x23')](respondWithResult(_0x3d0bcc,0xc9))[_0x60ef('0x45')](handleError(_0x3d0bcc,null));};exports[_0x60ef('0x22')]=function(_0x10b62f,_0x3093fd){if(_0x10b62f[_0x60ef('0x44')]['id']){delete _0x10b62f[_0x60ef('0x44')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x10b62f['params']['id']}})[_0x60ef('0x23')](handleEntityNotFound(_0x3093fd,null))[_0x60ef('0x23')](saveUpdates(_0x10b62f['body'],null))['then'](respondWithResult(_0x3093fd,null))[_0x60ef('0x45')](handleError(_0x3093fd,null));};exports[_0x60ef('0x46')]=function(_0x536efd,_0xbc0e39){return db[_0x60ef('0x2a')][_0x60ef('0x42')]({'where':{'id':_0x536efd[_0x60ef('0x40')]['id']}})[_0x60ef('0x23')](handleEntityNotFound(_0xbc0e39,null))[_0x60ef('0x23')](removeEntity(_0xbc0e39,null))[_0x60ef('0x45')](handleError(_0xbc0e39,null));};
\ No newline at end of file
+var _0xc154=['find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../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','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','error','send','index','map','fieldName','type','name','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','SalesforceField','then','includeAll','rows','catch','show','length','include','options','create','body','params'];(function(_0x3135f7,_0x13571d){var _0x22294a=function(_0x338155){while(--_0x338155){_0x3135f7['push'](_0x3135f7['shift']());}};_0x22294a(++_0x13571d);}(_0xc154,0x1cf));var _0x4c15=function(_0x2bda85,_0x5466b1){_0x2bda85=_0x2bda85-0x0;var _0xbff55f=_0xc154[_0x2bda85];return _0xbff55f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4c15('0x0'));var zipdir=require(_0x4c15('0x1'));var jsonpatch=require(_0x4c15('0x2'));var rp=require(_0x4c15('0x3'));var moment=require(_0x4c15('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4c15('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4c15('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c15('0x7'));var _=require(_0x4c15('0x8'));var squel=require(_0x4c15('0x9'));var crypto=require(_0x4c15('0xa'));var jsforce=require(_0x4c15('0xb'));var deskjs=require(_0x4c15('0xc'));var toCsv=require(_0x4c15('0xd'));var querystring=require(_0x4c15('0xe'));var Papa=require(_0x4c15('0xf'));var Redis=require(_0x4c15('0x10'));var authService=require(_0x4c15('0x11'));var qs=require(_0x4c15('0x12'));var as=require(_0x4c15('0x13'));var hardwareService=require(_0x4c15('0x14'));var logger=require(_0x4c15('0x15'))(_0x4c15('0x16'));var utils=require(_0x4c15('0x17'));var config=require(_0x4c15('0x18'));var licenseUtil=require(_0x4c15('0x19'));var db=require(_0x4c15('0x1a'))['db'];function respondWithStatusCode(_0x713855,_0xdc15dc){_0xdc15dc=_0xdc15dc||0xcc;return function(_0x1b8568){if(_0x1b8568){return _0x713855[_0x4c15('0x1b')](_0xdc15dc);}return _0x713855[_0x4c15('0x1c')](_0xdc15dc)[_0x4c15('0x1d')]();};}function respondWithResult(_0x5cd5f8,_0x23acb6){_0x23acb6=_0x23acb6||0xc8;return function(_0x2a0419){if(_0x2a0419){return _0x5cd5f8[_0x4c15('0x1c')](_0x23acb6)['json'](_0x2a0419);}};}function respondWithFilteredResult(_0x5ad2f4,_0x366705){return function(_0xcdacdd){if(_0xcdacdd){var _0x536041=typeof _0x366705[_0x4c15('0x1e')]===_0x4c15('0x1f')&&typeof _0x366705['limit']===_0x4c15('0x1f');var _0x3d49b8=_0xcdacdd[_0x4c15('0x20')];var _0x59b3e6=_0x536041?0x0:_0x366705[_0x4c15('0x1e')];var _0x2880d0=_0x536041?_0xcdacdd[_0x4c15('0x20')]:_0x366705['offset']+_0x366705[_0x4c15('0x21')];var _0x519f49;if(_0x2880d0>=_0x3d49b8){_0x2880d0=_0x3d49b8;_0x519f49=0xc8;}else{_0x519f49=0xce;}_0x5ad2f4[_0x4c15('0x1c')](_0x519f49);return _0x5ad2f4[_0x4c15('0x22')](_0x4c15('0x23'),_0x59b3e6+'-'+_0x2880d0+'/'+_0x3d49b8)[_0x4c15('0x24')](_0xcdacdd);}return null;};}function patchUpdates(_0x801196){return function(_0x5d2a4c){try{jsonpatch[_0x4c15('0x25')](_0x5d2a4c,_0x801196,!![]);}catch(_0x1864ec){return BPromise['reject'](_0x1864ec);}return _0x5d2a4c[_0x4c15('0x26')]();};}function saveUpdates(_0x1daa64,_0x381895){return function(_0x5679ca){if(_0x5679ca){return _0x5679ca[_0x4c15('0x27')](_0x1daa64)['then'](function(_0x357211){return _0x357211;});}return null;};}function removeEntity(_0x4a6d93,_0x4c4ae8){return function(_0x187419){if(_0x187419){return _0x187419[_0x4c15('0x28')]()['then'](function(){_0x4a6d93[_0x4c15('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x184365,_0x9b2757){return function(_0x4a081c){if(!_0x4a081c){_0x184365['sendStatus'](0x194);}return _0x4a081c;};}function handleError(_0x22206f,_0x2901b1){_0x2901b1=_0x2901b1||0x1f4;return function(_0x369ef1){logger[_0x4c15('0x29')](_0x369ef1['stack']);if(_0x369ef1['name']){delete _0x369ef1['name'];}_0x22206f[_0x4c15('0x1c')](_0x2901b1)[_0x4c15('0x2a')](_0x369ef1);};}exports[_0x4c15('0x2b')]=function(_0x2b9b08,_0x33ddad){var _0x32c8e4={},_0x3029b2={},_0x2b3bb6={'count':0x0,'rows':[]};var _0x2e56fa=_[_0x4c15('0x2c')](db['SalesforceField']['rawAttributes'],function(_0x73fe3b){return{'name':_0x73fe3b[_0x4c15('0x2d')],'type':_0x73fe3b[_0x4c15('0x2e')]['key']};});_0x3029b2['model']=_[_0x4c15('0x2c')](_0x2e56fa,_0x4c15('0x2f'));_0x3029b2['query']=_[_0x4c15('0x30')](_0x2b9b08[_0x4c15('0x31')]);_0x3029b2['filters']=_[_0x4c15('0x32')](_0x3029b2[_0x4c15('0x33')],_0x3029b2[_0x4c15('0x31')]);_0x32c8e4[_0x4c15('0x34')]=_['intersection'](_0x3029b2[_0x4c15('0x33')],qs[_0x4c15('0x35')](_0x2b9b08['query']['fields']));_0x32c8e4[_0x4c15('0x34')]=_0x32c8e4['attributes']['length']?_0x32c8e4[_0x4c15('0x34')]:_0x3029b2[_0x4c15('0x33')];if(!_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x36')](_0x4c15('0x37'))){_0x32c8e4[_0x4c15('0x21')]=qs[_0x4c15('0x21')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x21')]);_0x32c8e4[_0x4c15('0x1e')]=qs[_0x4c15('0x1e')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x1e')]);}_0x32c8e4[_0x4c15('0x38')]=qs['sort'](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x39')]);_0x32c8e4[_0x4c15('0x3a')]=qs[_0x4c15('0x3b')](_[_0x4c15('0x3c')](_0x2b9b08['query'],_0x3029b2[_0x4c15('0x3b')]),_0x2e56fa);if(_0x2b9b08[_0x4c15('0x31')]['filter']){_0x32c8e4['where']=_[_0x4c15('0x3d')](_0x32c8e4[_0x4c15('0x3a')],{'$or':_[_0x4c15('0x2c')](_0x2e56fa,function(_0x30f553){if(_0x30f553[_0x4c15('0x2e')]!==_0x4c15('0x3e')){var _0x504afe={};_0x504afe[_0x30f553[_0x4c15('0x2f')]]={'$like':'%'+_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x3f')]+'%'};return _0x504afe;}})});}_0x32c8e4=_[_0x4c15('0x3d')]({},_0x32c8e4,_0x2b9b08['options']);var _0x21ab1f={'where':_0x32c8e4['where']};return db[_0x4c15('0x40')][_0x4c15('0x20')](_0x21ab1f)[_0x4c15('0x41')](function(_0x224f50){_0x2b3bb6['count']=_0x224f50;if(_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x42')]){_0x32c8e4['include']=[{'all':!![]}];}return db[_0x4c15('0x40')]['findAll'](_0x32c8e4);})[_0x4c15('0x41')](function(_0x60edc4){_0x2b3bb6[_0x4c15('0x43')]=_0x60edc4;return _0x2b3bb6;})[_0x4c15('0x41')](respondWithFilteredResult(_0x33ddad,_0x32c8e4))[_0x4c15('0x44')](handleError(_0x33ddad,null));};exports[_0x4c15('0x45')]=function(_0x26e471,_0x3990fa){var _0xc77a58={'raw':!![],'where':{'id':_0x26e471['params']['id']}},_0x11e8c2={};_0x11e8c2[_0x4c15('0x33')]=_[_0x4c15('0x30')](db[_0x4c15('0x40')]['rawAttributes']);_0x11e8c2[_0x4c15('0x31')]=_[_0x4c15('0x30')](_0x26e471['query']);_0x11e8c2[_0x4c15('0x3b')]=_['intersection'](_0x11e8c2['model'],_0x11e8c2['query']);_0xc77a58['attributes']=_[_0x4c15('0x32')](_0x11e8c2['model'],qs[_0x4c15('0x35')](_0x26e471[_0x4c15('0x31')][_0x4c15('0x35')]));_0xc77a58[_0x4c15('0x34')]=_0xc77a58[_0x4c15('0x34')][_0x4c15('0x46')]?_0xc77a58[_0x4c15('0x34')]:_0x11e8c2[_0x4c15('0x33')];if(_0x26e471[_0x4c15('0x31')][_0x4c15('0x42')]){_0xc77a58[_0x4c15('0x47')]=[{'all':!![]}];}_0xc77a58=_[_0x4c15('0x3d')]({},_0xc77a58,_0x26e471[_0x4c15('0x48')]);return db[_0x4c15('0x40')]['find'](_0xc77a58)['then'](handleEntityNotFound(_0x3990fa,null))['then'](respondWithResult(_0x3990fa,null))[_0x4c15('0x44')](handleError(_0x3990fa,null));};exports[_0x4c15('0x49')]=function(_0x5cf422,_0x74eb4c){return db[_0x4c15('0x40')][_0x4c15('0x49')](_0x5cf422[_0x4c15('0x4a')],{})[_0x4c15('0x41')](respondWithResult(_0x74eb4c,0xc9))[_0x4c15('0x44')](handleError(_0x74eb4c,null));};exports[_0x4c15('0x27')]=function(_0xe41e9d,_0x34dae1){if(_0xe41e9d[_0x4c15('0x4a')]['id']){delete _0xe41e9d['body']['id'];}return db[_0x4c15('0x40')]['find']({'where':{'id':_0xe41e9d[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x34dae1,null))[_0x4c15('0x41')](saveUpdates(_0xe41e9d[_0x4c15('0x4a')],null))[_0x4c15('0x41')](respondWithResult(_0x34dae1,null))['catch'](handleError(_0x34dae1,null));};exports[_0x4c15('0x28')]=function(_0x25fb48,_0x2b6caa){return db[_0x4c15('0x40')][_0x4c15('0x4c')]({'where':{'id':_0x25fb48[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x2b6caa,null))[_0x4c15('0x41')](removeEntity(_0x2b6caa,null))[_0x4c15('0x44')](handleError(_0x2b6caa,null));};
\ No newline at end of file