Built motion from commit 092f8824.|2.5.49
[motion2.git] / server / api / intSugarcrmField / intSugarcrmField.controller.js
index 6d4e7a9..5b6714a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','VIRTUAL','filter','merge','options','SugarcrmField','count','include','findAll','rows','show','includeAll','find','catch','create','body','params','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','set','Content-Range','json','apply','update','then','destroy','end','error','stack'];(function(_0x485aaf,_0x2f55a4){var _0x5c655f=function(_0x26efe4){while(--_0x26efe4){_0x485aaf['push'](_0x485aaf['shift']());}};_0x5c655f(++_0x2f55a4);}(_0x277c,0x153));var _0xc277=function(_0x24ccc4,_0x59822a){_0x24ccc4=_0x24ccc4-0x0;var _0x20afb0=_0x277c[_0x24ccc4];return _0x20afb0;};'use strict';var pdf=require(_0xc277('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xc277('0x1'));var zipdir=require(_0xc277('0x2'));var jsonpatch=require(_0xc277('0x3'));var rp=require(_0xc277('0x4'));var moment=require(_0xc277('0x5'));var BPromise=require(_0xc277('0x6'));var Mustache=require(_0xc277('0x7'));var util=require(_0xc277('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xc277('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc277('0xa'));var squel=require('squel');var crypto=require(_0xc277('0xb'));var jsforce=require(_0xc277('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc277('0x9'));var querystring=require(_0xc277('0xd'));var Papa=require(_0xc277('0xe'));var Redis=require(_0xc277('0xf'));var authService=require(_0xc277('0x10'));var qs=require(_0xc277('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc277('0x12'))(_0xc277('0x13'));var utils=require(_0xc277('0x14'));var config=require(_0xc277('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc277('0x16'))['db'];function respondWithStatusCode(_0x4a7700,_0xb6b933){_0xb6b933=_0xb6b933||0xcc;return function(_0x2bba87){if(_0x2bba87){return _0x4a7700[_0xc277('0x17')](_0xb6b933);}return _0x4a7700[_0xc277('0x18')](_0xb6b933)['end']();};}function respondWithResult(_0x222bc8,_0x182d35){_0x182d35=_0x182d35||0xc8;return function(_0x8895bd){if(_0x8895bd){return _0x222bc8['status'](_0x182d35)['json'](_0x8895bd);}};}function respondWithFilteredResult(_0x178e6d,_0x5c212c){return function(_0x46d20c){if(_0x46d20c){var _0x5d73f8=_0x46d20c['count'],_0x306046=_0x5c212c['offset'],_0x1162b9=_0x5c212c[_0xc277('0x19')]+_0x5c212c['limit'],_0x15f560;if(_0x1162b9>=_0x5d73f8){_0x1162b9=_0x5d73f8;_0x15f560=0xc8;}else{_0x15f560=0xce;}_0x178e6d['status'](_0x15f560);return _0x178e6d[_0xc277('0x1a')](_0xc277('0x1b'),_0x306046+'-'+_0x1162b9+'/'+_0x5d73f8)[_0xc277('0x1c')](_0x46d20c);}return null;};}function patchUpdates(_0x176dfb){return function(_0xe2b7c1){try{jsonpatch[_0xc277('0x1d')](_0xe2b7c1,_0x176dfb,!![]);}catch(_0x391cc3){return BPromise['reject'](_0x391cc3);}return _0xe2b7c1['save']();};}function saveUpdates(_0x697d6f,_0x28900e){return function(_0x2bdc25){if(_0x2bdc25){return _0x2bdc25[_0xc277('0x1e')](_0x697d6f)[_0xc277('0x1f')](function(_0xa3f62e){return _0xa3f62e;});}return null;};}function removeEntity(_0xb4685f,_0x42cb0b){return function(_0x1bc888){if(_0x1bc888){return _0x1bc888[_0xc277('0x20')]()[_0xc277('0x1f')](function(){_0xb4685f['status'](0xcc)[_0xc277('0x21')]();});}};}function handleEntityNotFound(_0x21af1b,_0x54b2e1){return function(_0x463fa6){if(!_0x463fa6){_0x21af1b['sendStatus'](0x194);}return _0x463fa6;};}function handleError(_0x48124d,_0x3292ab){_0x3292ab=_0x3292ab||0x1f4;return function(_0x57b03){logger[_0xc277('0x22')](_0x57b03[_0xc277('0x23')]);if(_0x57b03[_0xc277('0x24')]){delete _0x57b03[_0xc277('0x24')];}_0x48124d[_0xc277('0x18')](_0x3292ab)[_0xc277('0x25')](_0x57b03);};}exports[_0xc277('0x26')]=function(_0x3e04cb,_0x40d17a){var _0x5e480e={},_0x5f3933={},_0x31b6d4={'count':0x0,'rows':[]};var _0x4318f4=_['map'](db['SugarcrmField'][_0xc277('0x27')],function(_0x3bc773){return{'name':_0x3bc773[_0xc277('0x28')],'type':_0x3bc773[_0xc277('0x29')][_0xc277('0x2a')]};});_0x5f3933['model']=_[_0xc277('0x2b')](_0x4318f4,'name');_0x5f3933[_0xc277('0x2c')]=_[_0xc277('0x2d')](_0x3e04cb[_0xc277('0x2c')]);_0x5f3933[_0xc277('0x2e')]=_['intersection'](_0x5f3933[_0xc277('0x2f')],_0x5f3933['query']);_0x5e480e[_0xc277('0x30')]=_[_0xc277('0x31')](_0x5f3933[_0xc277('0x2f')],qs[_0xc277('0x32')](_0x3e04cb['query'][_0xc277('0x32')]));_0x5e480e[_0xc277('0x30')]=_0x5e480e['attributes'][_0xc277('0x33')]?_0x5e480e['attributes']:_0x5f3933[_0xc277('0x2f')];if(!_0x3e04cb[_0xc277('0x2c')][_0xc277('0x34')](_0xc277('0x35'))){_0x5e480e[_0xc277('0x36')]=qs[_0xc277('0x36')](_0x3e04cb[_0xc277('0x2c')][_0xc277('0x36')]);_0x5e480e[_0xc277('0x19')]=qs[_0xc277('0x19')](_0x3e04cb[_0xc277('0x2c')]['offset']);}_0x5e480e[_0xc277('0x37')]=qs[_0xc277('0x38')](_0x3e04cb[_0xc277('0x2c')]['sort']);_0x5e480e[_0xc277('0x39')]=qs[_0xc277('0x2e')](_[_0xc277('0x3a')](_0x3e04cb[_0xc277('0x2c')],_0x5f3933[_0xc277('0x2e')]),_0x4318f4);if(_0x3e04cb['query']['filter']){_0x5e480e[_0xc277('0x39')]=_['merge'](_0x5e480e[_0xc277('0x39')],{'$or':_[_0xc277('0x2b')](_0x4318f4,function(_0x112a89){if(_0x112a89[_0xc277('0x29')]!==_0xc277('0x3b')){var _0x3a2bbd={};_0x3a2bbd[_0x112a89[_0xc277('0x24')]]={'$like':'%'+_0x3e04cb[_0xc277('0x2c')][_0xc277('0x3c')]+'%'};return _0x3a2bbd;}})});}_0x5e480e=_[_0xc277('0x3d')]({},_0x5e480e,_0x3e04cb[_0xc277('0x3e')]);var _0x4eaa6c={'where':_0x5e480e[_0xc277('0x39')]};return db[_0xc277('0x3f')][_0xc277('0x40')](_0x4eaa6c)['then'](function(_0x1dcd88){_0x31b6d4[_0xc277('0x40')]=_0x1dcd88;if(_0x3e04cb['query']['includeAll']){_0x5e480e[_0xc277('0x41')]=[{'all':!![]}];}return db[_0xc277('0x3f')][_0xc277('0x42')](_0x5e480e);})[_0xc277('0x1f')](function(_0x114eec){_0x31b6d4[_0xc277('0x43')]=_0x114eec;return _0x31b6d4;})[_0xc277('0x1f')](respondWithFilteredResult(_0x40d17a,_0x5e480e))['catch'](handleError(_0x40d17a,null));};exports[_0xc277('0x44')]=function(_0x450842,_0x142ca6){var _0x5f4487={'raw':!![],'where':{'id':_0x450842['params']['id']}},_0x4d4c4a={};_0x4d4c4a['model']=_['keys'](db[_0xc277('0x3f')]['rawAttributes']);_0x4d4c4a[_0xc277('0x2c')]=_[_0xc277('0x2d')](_0x450842[_0xc277('0x2c')]);_0x4d4c4a['filters']=_[_0xc277('0x31')](_0x4d4c4a[_0xc277('0x2f')],_0x4d4c4a[_0xc277('0x2c')]);_0x5f4487[_0xc277('0x30')]=_['intersection'](_0x4d4c4a[_0xc277('0x2f')],qs[_0xc277('0x32')](_0x450842['query'][_0xc277('0x32')]));_0x5f4487[_0xc277('0x30')]=_0x5f4487[_0xc277('0x30')][_0xc277('0x33')]?_0x5f4487[_0xc277('0x30')]:_0x4d4c4a[_0xc277('0x2f')];if(_0x450842[_0xc277('0x2c')][_0xc277('0x45')]){_0x5f4487[_0xc277('0x41')]=[{'all':!![]}];}_0x5f4487=_[_0xc277('0x3d')]({},_0x5f4487,_0x450842[_0xc277('0x3e')]);return db['SugarcrmField'][_0xc277('0x46')](_0x5f4487)[_0xc277('0x1f')](handleEntityNotFound(_0x142ca6,null))[_0xc277('0x1f')](respondWithResult(_0x142ca6,null))[_0xc277('0x47')](handleError(_0x142ca6,null));};exports['create']=function(_0x401684,_0x4d7702){return db[_0xc277('0x3f')][_0xc277('0x48')](_0x401684[_0xc277('0x49')],{})[_0xc277('0x1f')](respondWithResult(_0x4d7702,0xc9))[_0xc277('0x47')](handleError(_0x4d7702,null));};exports['update']=function(_0x37fb3f,_0x40868b){if(_0x37fb3f[_0xc277('0x49')]['id']){delete _0x37fb3f[_0xc277('0x49')]['id'];}return db['SugarcrmField'][_0xc277('0x46')]({'where':{'id':_0x37fb3f[_0xc277('0x4a')]['id']}})[_0xc277('0x1f')](handleEntityNotFound(_0x40868b,null))['then'](saveUpdates(_0x37fb3f[_0xc277('0x49')],null))['then'](respondWithResult(_0x40868b,null))[_0xc277('0x47')](handleError(_0x40868b,null));};exports[_0xc277('0x20')]=function(_0x2265d3,_0x2df8dd){return db[_0xc277('0x3f')][_0xc277('0x46')]({'where':{'id':_0x2265d3[_0xc277('0x4a')]['id']}})[_0xc277('0x1f')](handleEntityNotFound(_0x2df8dd,null))[_0xc277('0x1f')](removeEntity(_0x2df8dd,null))[_0xc277('0x47')](handleError(_0x2df8dd,null));};
\ No newline at end of file
+var _0xbc31=['hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','catch','create','body','find','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','json','limit','undefined','count','offset','Content-Range','reject','save','update','then','end','error','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','query','keys','filters','model','intersection','fields','attributes','length'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xbc31,0xa6));var _0x1bc3=function(_0x4a5f54,_0x52b134){_0x4a5f54=_0x4a5f54-0x0;var _0x36b486=_0xbc31[_0x4a5f54];return _0x36b486;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1bc3('0x0'));var zipdir=require(_0x1bc3('0x1'));var jsonpatch=require(_0x1bc3('0x2'));var rp=require(_0x1bc3('0x3'));var moment=require('moment');var BPromise=require(_0x1bc3('0x4'));var Mustache=require('mustache');var util=require(_0x1bc3('0x5'));var path=require(_0x1bc3('0x6'));var sox=require(_0x1bc3('0x7'));var csv=require('to-csv');var ejs=require(_0x1bc3('0x8'));var fs=require('fs');var fs_extra=require(_0x1bc3('0x9'));var _=require('lodash');var squel=require(_0x1bc3('0xa'));var crypto=require(_0x1bc3('0xb'));var jsforce=require(_0x1bc3('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1bc3('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1bc3('0xe'));var authService=require(_0x1bc3('0xf'));var qs=require(_0x1bc3('0x10'));var as=require(_0x1bc3('0x11'));var hardwareService=require(_0x1bc3('0x12'));var logger=require(_0x1bc3('0x13'))(_0x1bc3('0x14'));var utils=require(_0x1bc3('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x574896,_0x405510){_0x405510=_0x405510||0xcc;return function(_0x244223){if(_0x244223){return _0x574896[_0x1bc3('0x16')](_0x405510);}return _0x574896[_0x1bc3('0x17')](_0x405510)['end']();};}function respondWithResult(_0x2965ef,_0x14e24a){_0x14e24a=_0x14e24a||0xc8;return function(_0x253f40){if(_0x253f40){return _0x2965ef[_0x1bc3('0x17')](_0x14e24a)[_0x1bc3('0x18')](_0x253f40);}};}function respondWithFilteredResult(_0xcf56b5,_0xe93eec){return function(_0xb2b084){if(_0xb2b084){var _0xb2ada8=typeof _0xe93eec['offset']==='undefined'&&typeof _0xe93eec[_0x1bc3('0x19')]===_0x1bc3('0x1a');var _0x164961=_0xb2b084[_0x1bc3('0x1b')];var _0x1aa101=_0xb2ada8?0x0:_0xe93eec[_0x1bc3('0x1c')];var _0x5db585=_0xb2ada8?_0xb2b084['count']:_0xe93eec['offset']+_0xe93eec[_0x1bc3('0x19')];var _0x2e30db;if(_0x5db585>=_0x164961){_0x5db585=_0x164961;_0x2e30db=0xc8;}else{_0x2e30db=0xce;}_0xcf56b5[_0x1bc3('0x17')](_0x2e30db);return _0xcf56b5['set'](_0x1bc3('0x1d'),_0x1aa101+'-'+_0x5db585+'/'+_0x164961)[_0x1bc3('0x18')](_0xb2b084);}return null;};}function patchUpdates(_0x5d8193){return function(_0x200157){try{jsonpatch['apply'](_0x200157,_0x5d8193,!![]);}catch(_0x94a3c5){return BPromise[_0x1bc3('0x1e')](_0x94a3c5);}return _0x200157[_0x1bc3('0x1f')]();};}function saveUpdates(_0x4e760a,_0x4e8c7c){return function(_0x27cbb4){if(_0x27cbb4){return _0x27cbb4[_0x1bc3('0x20')](_0x4e760a)[_0x1bc3('0x21')](function(_0x345374){return _0x345374;});}return null;};}function removeEntity(_0x2cbb50,_0x55071b){return function(_0x535f79){if(_0x535f79){return _0x535f79['destroy']()[_0x1bc3('0x21')](function(){_0x2cbb50[_0x1bc3('0x17')](0xcc)[_0x1bc3('0x22')]();});}};}function handleEntityNotFound(_0x5db2eb,_0x3d107a){return function(_0x238581){if(!_0x238581){_0x5db2eb['sendStatus'](0x194);}return _0x238581;};}function handleError(_0x5ca27b,_0x56e6c2){_0x56e6c2=_0x56e6c2||0x1f4;return function(_0x1e8c93){logger[_0x1bc3('0x23')](_0x1e8c93[_0x1bc3('0x24')]);if(_0x1e8c93[_0x1bc3('0x25')]){delete _0x1e8c93[_0x1bc3('0x25')];}_0x5ca27b[_0x1bc3('0x17')](_0x56e6c2)[_0x1bc3('0x26')](_0x1e8c93);};}exports[_0x1bc3('0x27')]=function(_0xcde2e2,_0x1ac17){var _0x5c90e2={},_0x5bca43={},_0x385cfa={'count':0x0,'rows':[]};var _0x54063c=_[_0x1bc3('0x28')](db[_0x1bc3('0x29')][_0x1bc3('0x2a')],function(_0x435ecd){return{'name':_0x435ecd[_0x1bc3('0x2b')],'type':_0x435ecd[_0x1bc3('0x2c')]['key']};});_0x5bca43['model']=_[_0x1bc3('0x28')](_0x54063c,_0x1bc3('0x25'));_0x5bca43[_0x1bc3('0x2d')]=_[_0x1bc3('0x2e')](_0xcde2e2['query']);_0x5bca43[_0x1bc3('0x2f')]=_['intersection'](_0x5bca43[_0x1bc3('0x30')],_0x5bca43[_0x1bc3('0x2d')]);_0x5c90e2['attributes']=_[_0x1bc3('0x31')](_0x5bca43[_0x1bc3('0x30')],qs[_0x1bc3('0x32')](_0xcde2e2[_0x1bc3('0x2d')][_0x1bc3('0x32')]));_0x5c90e2['attributes']=_0x5c90e2[_0x1bc3('0x33')][_0x1bc3('0x34')]?_0x5c90e2[_0x1bc3('0x33')]:_0x5bca43[_0x1bc3('0x30')];if(!_0xcde2e2[_0x1bc3('0x2d')][_0x1bc3('0x35')](_0x1bc3('0x36'))){_0x5c90e2['limit']=qs['limit'](_0xcde2e2[_0x1bc3('0x2d')][_0x1bc3('0x19')]);_0x5c90e2[_0x1bc3('0x1c')]=qs[_0x1bc3('0x1c')](_0xcde2e2[_0x1bc3('0x2d')][_0x1bc3('0x1c')]);}_0x5c90e2[_0x1bc3('0x37')]=qs[_0x1bc3('0x38')](_0xcde2e2[_0x1bc3('0x2d')][_0x1bc3('0x38')]);_0x5c90e2['where']=qs[_0x1bc3('0x2f')](_['pick'](_0xcde2e2[_0x1bc3('0x2d')],_0x5bca43[_0x1bc3('0x2f')]),_0x54063c);if(_0xcde2e2['query'][_0x1bc3('0x39')]){_0x5c90e2[_0x1bc3('0x3a')]=_[_0x1bc3('0x3b')](_0x5c90e2[_0x1bc3('0x3a')],{'$or':_[_0x1bc3('0x28')](_0x54063c,function(_0x5705b9){if(_0x5705b9[_0x1bc3('0x2c')]!==_0x1bc3('0x3c')){var _0x32e290={};_0x32e290[_0x5705b9[_0x1bc3('0x25')]]={'$like':'%'+_0xcde2e2['query'][_0x1bc3('0x39')]+'%'};return _0x32e290;}})});}_0x5c90e2=_[_0x1bc3('0x3b')]({},_0x5c90e2,_0xcde2e2[_0x1bc3('0x3d')]);var _0x385982={'where':_0x5c90e2[_0x1bc3('0x3a')]};return db[_0x1bc3('0x29')][_0x1bc3('0x1b')](_0x385982)[_0x1bc3('0x21')](function(_0x1015e6){_0x385cfa['count']=_0x1015e6;if(_0xcde2e2[_0x1bc3('0x2d')]['includeAll']){_0x5c90e2[_0x1bc3('0x3e')]=[{'all':!![]}];}return db['SugarcrmField'][_0x1bc3('0x3f')](_0x5c90e2);})[_0x1bc3('0x21')](function(_0x100895){_0x385cfa[_0x1bc3('0x40')]=_0x100895;return _0x385cfa;})[_0x1bc3('0x21')](respondWithFilteredResult(_0x1ac17,_0x5c90e2))['catch'](handleError(_0x1ac17,null));};exports[_0x1bc3('0x41')]=function(_0x3f2370,_0x5cf7b1){var _0x5ace5e={'raw':!![],'where':{'id':_0x3f2370[_0x1bc3('0x42')]['id']}},_0x1a85eb={};_0x1a85eb[_0x1bc3('0x30')]=_[_0x1bc3('0x2e')](db[_0x1bc3('0x29')][_0x1bc3('0x2a')]);_0x1a85eb[_0x1bc3('0x2d')]=_[_0x1bc3('0x2e')](_0x3f2370[_0x1bc3('0x2d')]);_0x1a85eb['filters']=_[_0x1bc3('0x31')](_0x1a85eb[_0x1bc3('0x30')],_0x1a85eb[_0x1bc3('0x2d')]);_0x5ace5e[_0x1bc3('0x33')]=_[_0x1bc3('0x31')](_0x1a85eb[_0x1bc3('0x30')],qs['fields'](_0x3f2370['query'][_0x1bc3('0x32')]));_0x5ace5e[_0x1bc3('0x33')]=_0x5ace5e[_0x1bc3('0x33')][_0x1bc3('0x34')]?_0x5ace5e[_0x1bc3('0x33')]:_0x1a85eb[_0x1bc3('0x30')];if(_0x3f2370['query'][_0x1bc3('0x43')]){_0x5ace5e[_0x1bc3('0x3e')]=[{'all':!![]}];}_0x5ace5e=_['merge']({},_0x5ace5e,_0x3f2370['options']);return db[_0x1bc3('0x29')]['find'](_0x5ace5e)[_0x1bc3('0x21')](handleEntityNotFound(_0x5cf7b1,null))[_0x1bc3('0x21')](respondWithResult(_0x5cf7b1,null))[_0x1bc3('0x44')](handleError(_0x5cf7b1,null));};exports[_0x1bc3('0x45')]=function(_0x36814b,_0x3f6d88){return db['SugarcrmField']['create'](_0x36814b[_0x1bc3('0x46')],{})[_0x1bc3('0x21')](respondWithResult(_0x3f6d88,0xc9))['catch'](handleError(_0x3f6d88,null));};exports['update']=function(_0x3a329f,_0x40b5fe){if(_0x3a329f[_0x1bc3('0x46')]['id']){delete _0x3a329f['body']['id'];}return db['SugarcrmField'][_0x1bc3('0x47')]({'where':{'id':_0x3a329f['params']['id']}})[_0x1bc3('0x21')](handleEntityNotFound(_0x40b5fe,null))['then'](saveUpdates(_0x3a329f[_0x1bc3('0x46')],null))['then'](respondWithResult(_0x40b5fe,null))['catch'](handleError(_0x40b5fe,null));};exports[_0x1bc3('0x48')]=function(_0x18f95e,_0x4e2f9a){return db[_0x1bc3('0x29')][_0x1bc3('0x47')]({'where':{'id':_0x18f95e[_0x1bc3('0x42')]['id']}})['then'](handleEntityNotFound(_0x4e2f9a,null))[_0x1bc3('0x21')](removeEntity(_0x4e2f9a,null))[_0x1bc3('0x44')](handleError(_0x4e2f9a,null));};
\ No newline at end of file