Built motion from commit (unavailable).|2.5.22
[motion2.git] / server / api / faxTransferReport / faxTransferReport.controller.js
index 1720e2d..acc224c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','keys','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','filter','merge','VIRTUAL','options','where','count','includeAll','include','findAll','rows','show','find','catch','create','body','params','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','limit','set'];(function(_0x4aed2c,_0x5b5df2){var _0x11438f=function(_0x57a967){while(--_0x57a967){_0x4aed2c['push'](_0x4aed2c['shift']());}};_0x11438f(++_0x5b5df2);}(_0xdb28,0x106));var _0x8db2=function(_0x433a18,_0x5329b7){_0x433a18=_0x433a18-0x0;var _0x50ad65=_0xdb28[_0x433a18];return _0x50ad65;};'use strict';var pdf=require(_0x8db2('0x0'));var emlformat=require(_0x8db2('0x1'));var rimraf=require(_0x8db2('0x2'));var zipdir=require(_0x8db2('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8db2('0x4'));var moment=require(_0x8db2('0x5'));var BPromise=require(_0x8db2('0x6'));var Mustache=require(_0x8db2('0x7'));var util=require(_0x8db2('0x8'));var path=require('path');var sox=require(_0x8db2('0x9'));var csv=require(_0x8db2('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0xa'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var db=require(_0x8db2('0x17'))['db'];function respondWithStatusCode(_0x1349f6,_0x204f49){_0x204f49=_0x204f49||0xcc;return function(_0x37d017){if(_0x37d017){return _0x1349f6['sendStatus'](_0x204f49);}return _0x1349f6['status'](_0x204f49)[_0x8db2('0x18')]();};}function respondWithResult(_0x15e87c,_0x350d61){_0x350d61=_0x350d61||0xc8;return function(_0x1d6a15){if(_0x1d6a15){return _0x15e87c[_0x8db2('0x19')](_0x350d61)[_0x8db2('0x1a')](_0x1d6a15);}};}function respondWithFilteredResult(_0x2f177a,_0x3c96a7){return function(_0x131252){if(_0x131252){var _0x16c8c2=_0x131252['count'],_0x5489a9=_0x3c96a7[_0x8db2('0x1b')],_0x13b0f5=_0x3c96a7[_0x8db2('0x1b')]+_0x3c96a7[_0x8db2('0x1c')],_0x24da1b;if(_0x13b0f5>=_0x16c8c2){_0x13b0f5=_0x16c8c2;_0x24da1b=0xc8;}else{_0x24da1b=0xce;}_0x2f177a[_0x8db2('0x19')](_0x24da1b);return _0x2f177a[_0x8db2('0x1d')](_0x8db2('0x1e'),_0x5489a9+'-'+_0x13b0f5+'/'+_0x16c8c2)['json'](_0x131252);}return null;};}function patchUpdates(_0x5df464){return function(_0x77789){try{jsonpatch[_0x8db2('0x1f')](_0x77789,_0x5df464,!![]);}catch(_0x1310d3){return BPromise[_0x8db2('0x20')](_0x1310d3);}return _0x77789['save']();};}function saveUpdates(_0x431d60,_0x36a9ff){return function(_0x260940){if(_0x260940){return _0x260940[_0x8db2('0x21')](_0x431d60)[_0x8db2('0x22')](function(_0x597260){return _0x597260;});}return null;};}function removeEntity(_0x124467,_0x3e30e6){return function(_0x18f69c){if(_0x18f69c){return _0x18f69c[_0x8db2('0x23')]()[_0x8db2('0x22')](function(){_0x124467[_0x8db2('0x19')](0xcc)[_0x8db2('0x18')]();});}};}function handleEntityNotFound(_0x5c6614,_0x256202){return function(_0x4f6516){if(!_0x4f6516){_0x5c6614['sendStatus'](0x194);}return _0x4f6516;};}function handleError(_0x52a9ca,_0x4d923c){_0x4d923c=_0x4d923c||0x1f4;return function(_0xec8cd2){logger[_0x8db2('0x24')](_0xec8cd2[_0x8db2('0x25')]);if(_0xec8cd2[_0x8db2('0x26')]){delete _0xec8cd2[_0x8db2('0x26')];}_0x52a9ca[_0x8db2('0x19')](_0x4d923c)['send'](_0xec8cd2);};}exports[_0x8db2('0x27')]=function(_0x372311,_0x430dd5){var _0x8b7cec={},_0x483aee={},_0x2e0691={'count':0x0,'rows':[]};var _0x11f398=_[_0x8db2('0x28')](db[_0x8db2('0x29')][_0x8db2('0x2a')],function(_0x21bae5){return{'name':_0x21bae5[_0x8db2('0x2b')],'type':_0x21bae5[_0x8db2('0x2c')][_0x8db2('0x2d')]};});_0x483aee['model']=_[_0x8db2('0x28')](_0x11f398,'name');_0x483aee['query']=_[_0x8db2('0x2e')](_0x372311[_0x8db2('0x2f')]);_0x483aee[_0x8db2('0x30')]=_['intersection'](_0x483aee[_0x8db2('0x31')],_0x483aee['query']);_0x8b7cec[_0x8db2('0x32')]=_[_0x8db2('0x33')](_0x483aee[_0x8db2('0x31')],qs['fields'](_0x372311['query'][_0x8db2('0x34')]));_0x8b7cec[_0x8db2('0x32')]=_0x8b7cec['attributes']['length']?_0x8b7cec[_0x8db2('0x32')]:_0x483aee[_0x8db2('0x31')];if(!_0x372311[_0x8db2('0x2f')][_0x8db2('0x35')](_0x8db2('0x36'))){_0x8b7cec[_0x8db2('0x1c')]=qs[_0x8db2('0x1c')](_0x372311[_0x8db2('0x2f')][_0x8db2('0x1c')]);_0x8b7cec[_0x8db2('0x1b')]=qs['offset'](_0x372311[_0x8db2('0x2f')][_0x8db2('0x1b')]);}_0x8b7cec['order']=qs[_0x8db2('0x37')](_0x372311[_0x8db2('0x2f')]['sort']);_0x8b7cec['where']=qs[_0x8db2('0x30')](_['pick'](_0x372311[_0x8db2('0x2f')],_0x483aee[_0x8db2('0x30')]),_0x11f398);if(_0x372311[_0x8db2('0x2f')][_0x8db2('0x38')]){_0x8b7cec['where']=_[_0x8db2('0x39')](_0x8b7cec['where'],{'$or':_[_0x8db2('0x28')](_0x11f398,function(_0xd550ae){if(_0xd550ae[_0x8db2('0x2c')]!==_0x8db2('0x3a')){var _0x50e88a={};_0x50e88a[_0xd550ae['name']]={'$like':'%'+_0x372311[_0x8db2('0x2f')][_0x8db2('0x38')]+'%'};return _0x50e88a;}})});}_0x8b7cec=_['merge']({},_0x8b7cec,_0x372311[_0x8db2('0x3b')]);var _0x24bcfe={'where':_0x8b7cec[_0x8db2('0x3c')]};return db['FaxTransferReport'][_0x8db2('0x3d')](_0x24bcfe)[_0x8db2('0x22')](function(_0x953349){_0x2e0691[_0x8db2('0x3d')]=_0x953349;if(_0x372311[_0x8db2('0x2f')][_0x8db2('0x3e')]){_0x8b7cec[_0x8db2('0x3f')]=[{'all':!![]}];}return db[_0x8db2('0x29')][_0x8db2('0x40')](_0x8b7cec);})[_0x8db2('0x22')](function(_0x21cf7c){_0x2e0691[_0x8db2('0x41')]=_0x21cf7c;return _0x2e0691;})[_0x8db2('0x22')](respondWithFilteredResult(_0x430dd5,_0x8b7cec))['catch'](handleError(_0x430dd5,null));};exports[_0x8db2('0x42')]=function(_0x2b2472,_0x5e0382){var _0x49a7ae={'raw':!![],'where':{'id':_0x2b2472['params']['id']}},_0x249c73={};_0x249c73[_0x8db2('0x31')]=_[_0x8db2('0x2e')](db[_0x8db2('0x29')][_0x8db2('0x2a')]);_0x249c73[_0x8db2('0x2f')]=_[_0x8db2('0x2e')](_0x2b2472[_0x8db2('0x2f')]);_0x249c73['filters']=_[_0x8db2('0x33')](_0x249c73[_0x8db2('0x31')],_0x249c73[_0x8db2('0x2f')]);_0x49a7ae[_0x8db2('0x32')]=_['intersection'](_0x249c73[_0x8db2('0x31')],qs[_0x8db2('0x34')](_0x2b2472[_0x8db2('0x2f')][_0x8db2('0x34')]));_0x49a7ae['attributes']=_0x49a7ae[_0x8db2('0x32')]['length']?_0x49a7ae[_0x8db2('0x32')]:_0x249c73[_0x8db2('0x31')];if(_0x2b2472[_0x8db2('0x2f')]['includeAll']){_0x49a7ae['include']=[{'all':!![]}];}_0x49a7ae=_[_0x8db2('0x39')]({},_0x49a7ae,_0x2b2472['options']);return db[_0x8db2('0x29')][_0x8db2('0x43')](_0x49a7ae)[_0x8db2('0x22')](handleEntityNotFound(_0x5e0382,null))[_0x8db2('0x22')](respondWithResult(_0x5e0382,null))[_0x8db2('0x44')](handleError(_0x5e0382,null));};exports[_0x8db2('0x45')]=function(_0x4355e2,_0xab6bdd){return db[_0x8db2('0x29')][_0x8db2('0x45')](_0x4355e2[_0x8db2('0x46')],{})[_0x8db2('0x22')](respondWithResult(_0xab6bdd,0xc9))['catch'](handleError(_0xab6bdd,null));};exports[_0x8db2('0x21')]=function(_0x2ada52,_0xdbba64){if(_0x2ada52[_0x8db2('0x46')]['id']){delete _0x2ada52['body']['id'];}return db['FaxTransferReport'][_0x8db2('0x43')]({'where':{'id':_0x2ada52[_0x8db2('0x47')]['id']}})[_0x8db2('0x22')](handleEntityNotFound(_0xdbba64,null))['then'](saveUpdates(_0x2ada52['body'],null))['then'](respondWithResult(_0xdbba64,null))[_0x8db2('0x44')](handleError(_0xdbba64,null));};exports[_0x8db2('0x23')]=function(_0x55c7dd,_0x383fa1){return db[_0x8db2('0x29')][_0x8db2('0x43')]({'where':{'id':_0x55c7dd[_0x8db2('0x47')]['id']}})['then'](handleEntityNotFound(_0x383fa1,null))['then'](removeEntity(_0x383fa1,null))[_0x8db2('0x44')](handleError(_0x383fa1,null));};exports[_0x8db2('0x48')]=function(_0x2908e4,_0x2f0bd0){return db[_0x8db2('0x29')][_0x8db2('0x48')]()[_0x8db2('0x22')](respondWithResult(_0x2f0bd0,null))[_0x8db2('0x44')](handleError(_0x2f0bd0,null));};
\ No newline at end of file
+var _0x4250=['merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','end','json','count','offset','limit','status','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','index','map','FaxTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter'];(function(_0x3dba3f,_0x4c0925){var _0x74c474=function(_0x44babd){while(--_0x44babd){_0x3dba3f['push'](_0x3dba3f['shift']());}};_0x74c474(++_0x4c0925);}(_0x4250,0x146));var _0x0425=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x4250[_0x45e98e];return _0x374dba;};'use strict';var pdf=require(_0x0425('0x0'));var emlformat=require(_0x0425('0x1'));var rimraf=require(_0x0425('0x2'));var zipdir=require(_0x0425('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0425('0x4'));var moment=require(_0x0425('0x5'));var BPromise=require(_0x0425('0x6'));var Mustache=require('mustache');var util=require(_0x0425('0x7'));var path=require(_0x0425('0x8'));var sox=require(_0x0425('0x9'));var csv=require(_0x0425('0xa'));var ejs=require(_0x0425('0xb'));var fs=require('fs');var _=require(_0x0425('0xc'));var squel=require(_0x0425('0xd'));var crypto=require(_0x0425('0xe'));var jsforce=require(_0x0425('0xf'));var deskjs=require(_0x0425('0x10'));var toCsv=require(_0x0425('0xa'));var querystring=require(_0x0425('0x11'));var Papa=require(_0x0425('0x12'));var Redis=require(_0x0425('0x13'));var authService=require(_0x0425('0x14'));var qs=require(_0x0425('0x15'));var as=require(_0x0425('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0425('0x17'));var utils=require('../../config/utils');var config=require(_0x0425('0x18'));var licenseUtil=require(_0x0425('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x107fe1,_0x24dd34){_0x24dd34=_0x24dd34||0xcc;return function(_0x1c67ec){if(_0x1c67ec){return _0x107fe1[_0x0425('0x1a')](_0x24dd34);}return _0x107fe1['status'](_0x24dd34)[_0x0425('0x1b')]();};}function respondWithResult(_0x23e4fb,_0x5be3af){_0x5be3af=_0x5be3af||0xc8;return function(_0x4c8c50){if(_0x4c8c50){return _0x23e4fb['status'](_0x5be3af)[_0x0425('0x1c')](_0x4c8c50);}};}function respondWithFilteredResult(_0x33afcb,_0x1cd255){return function(_0x4a6389){if(_0x4a6389){var _0x4e439a=_0x4a6389[_0x0425('0x1d')],_0xe39d40=_0x1cd255[_0x0425('0x1e')],_0x326425=_0x1cd255[_0x0425('0x1e')]+_0x1cd255[_0x0425('0x1f')],_0x12095a;if(_0x326425>=_0x4e439a){_0x326425=_0x4e439a;_0x12095a=0xc8;}else{_0x12095a=0xce;}_0x33afcb[_0x0425('0x20')](_0x12095a);return _0x33afcb[_0x0425('0x21')](_0x0425('0x22'),_0xe39d40+'-'+_0x326425+'/'+_0x4e439a)['json'](_0x4a6389);}return null;};}function patchUpdates(_0x33678a){return function(_0x157042){try{jsonpatch[_0x0425('0x23')](_0x157042,_0x33678a,!![]);}catch(_0x41f9c7){return BPromise[_0x0425('0x24')](_0x41f9c7);}return _0x157042[_0x0425('0x25')]();};}function saveUpdates(_0x152cf7,_0x34765d){return function(_0x17b1c4){if(_0x17b1c4){return _0x17b1c4[_0x0425('0x26')](_0x152cf7)['then'](function(_0x225906){return _0x225906;});}return null;};}function removeEntity(_0x573ba9,_0x4bcab6){return function(_0x1c4cd3){if(_0x1c4cd3){return _0x1c4cd3[_0x0425('0x27')]()[_0x0425('0x28')](function(){_0x573ba9[_0x0425('0x20')](0xcc)[_0x0425('0x1b')]();});}};}function handleEntityNotFound(_0x347c29,_0x95eceb){return function(_0x4d3c0f){if(!_0x4d3c0f){_0x347c29[_0x0425('0x1a')](0x194);}return _0x4d3c0f;};}function handleError(_0x4d3f93,_0xd7adb4){_0xd7adb4=_0xd7adb4||0x1f4;return function(_0x1d53a9){logger[_0x0425('0x29')](_0x1d53a9['stack']);if(_0x1d53a9[_0x0425('0x2a')]){delete _0x1d53a9[_0x0425('0x2a')];}_0x4d3f93[_0x0425('0x20')](_0xd7adb4)[_0x0425('0x2b')](_0x1d53a9);};}exports[_0x0425('0x2c')]=function(_0x2bbcd0,_0x36146d){var _0x43db4f={},_0x13d82a={},_0x154aa5={'count':0x0,'rows':[]};var _0x120a5b=_[_0x0425('0x2d')](db[_0x0425('0x2e')]['rawAttributes'],function(_0x1a47a4){return{'name':_0x1a47a4[_0x0425('0x2f')],'type':_0x1a47a4[_0x0425('0x30')][_0x0425('0x31')]};});_0x13d82a[_0x0425('0x32')]=_[_0x0425('0x2d')](_0x120a5b,_0x0425('0x2a'));_0x13d82a[_0x0425('0x33')]=_[_0x0425('0x34')](_0x2bbcd0[_0x0425('0x33')]);_0x13d82a[_0x0425('0x35')]=_[_0x0425('0x36')](_0x13d82a[_0x0425('0x32')],_0x13d82a[_0x0425('0x33')]);_0x43db4f[_0x0425('0x37')]=_[_0x0425('0x36')](_0x13d82a[_0x0425('0x32')],qs[_0x0425('0x38')](_0x2bbcd0[_0x0425('0x33')][_0x0425('0x38')]));_0x43db4f[_0x0425('0x37')]=_0x43db4f[_0x0425('0x37')][_0x0425('0x39')]?_0x43db4f[_0x0425('0x37')]:_0x13d82a['model'];if(!_0x2bbcd0[_0x0425('0x33')]['hasOwnProperty'](_0x0425('0x3a'))){_0x43db4f[_0x0425('0x1f')]=qs[_0x0425('0x1f')](_0x2bbcd0[_0x0425('0x33')][_0x0425('0x1f')]);_0x43db4f['offset']=qs[_0x0425('0x1e')](_0x2bbcd0['query'][_0x0425('0x1e')]);}_0x43db4f[_0x0425('0x3b')]=qs['sort'](_0x2bbcd0[_0x0425('0x33')][_0x0425('0x3c')]);_0x43db4f[_0x0425('0x3d')]=qs['filters'](_[_0x0425('0x3e')](_0x2bbcd0[_0x0425('0x33')],_0x13d82a[_0x0425('0x35')]),_0x120a5b);if(_0x2bbcd0[_0x0425('0x33')][_0x0425('0x3f')]){_0x43db4f[_0x0425('0x3d')]=_[_0x0425('0x40')](_0x43db4f['where'],{'$or':_['map'](_0x120a5b,function(_0x55de73){if(_0x55de73[_0x0425('0x30')]!=='VIRTUAL'){var _0x13aec5={};_0x13aec5[_0x55de73[_0x0425('0x2a')]]={'$like':'%'+_0x2bbcd0[_0x0425('0x33')][_0x0425('0x3f')]+'%'};return _0x13aec5;}})});}_0x43db4f=_[_0x0425('0x40')]({},_0x43db4f,_0x2bbcd0['options']);var _0x14946c={'where':_0x43db4f[_0x0425('0x3d')]};return db[_0x0425('0x2e')][_0x0425('0x1d')](_0x14946c)[_0x0425('0x28')](function(_0x208581){_0x154aa5[_0x0425('0x1d')]=_0x208581;if(_0x2bbcd0['query'][_0x0425('0x41')]){_0x43db4f[_0x0425('0x42')]=[{'all':!![]}];}return db[_0x0425('0x2e')][_0x0425('0x43')](_0x43db4f);})['then'](function(_0x3dab51){_0x154aa5[_0x0425('0x44')]=_0x3dab51;return _0x154aa5;})['then'](respondWithFilteredResult(_0x36146d,_0x43db4f))[_0x0425('0x45')](handleError(_0x36146d,null));};exports[_0x0425('0x46')]=function(_0xe322de,_0x5930f3){var _0x3786dc={'raw':!![],'where':{'id':_0xe322de[_0x0425('0x47')]['id']}},_0x6ea0f={};_0x6ea0f[_0x0425('0x32')]=_[_0x0425('0x34')](db[_0x0425('0x2e')][_0x0425('0x48')]);_0x6ea0f[_0x0425('0x33')]=_['keys'](_0xe322de[_0x0425('0x33')]);_0x6ea0f[_0x0425('0x35')]=_[_0x0425('0x36')](_0x6ea0f['model'],_0x6ea0f[_0x0425('0x33')]);_0x3786dc[_0x0425('0x37')]=_[_0x0425('0x36')](_0x6ea0f[_0x0425('0x32')],qs['fields'](_0xe322de[_0x0425('0x33')][_0x0425('0x38')]));_0x3786dc[_0x0425('0x37')]=_0x3786dc[_0x0425('0x37')][_0x0425('0x39')]?_0x3786dc[_0x0425('0x37')]:_0x6ea0f[_0x0425('0x32')];if(_0xe322de[_0x0425('0x33')][_0x0425('0x41')]){_0x3786dc[_0x0425('0x42')]=[{'all':!![]}];}_0x3786dc=_[_0x0425('0x40')]({},_0x3786dc,_0xe322de[_0x0425('0x49')]);return db[_0x0425('0x2e')][_0x0425('0x4a')](_0x3786dc)[_0x0425('0x28')](handleEntityNotFound(_0x5930f3,null))[_0x0425('0x28')](respondWithResult(_0x5930f3,null))[_0x0425('0x45')](handleError(_0x5930f3,null));};exports[_0x0425('0x4b')]=function(_0x516e6b,_0x9cbd3a){return db[_0x0425('0x2e')]['create'](_0x516e6b[_0x0425('0x4c')],{})[_0x0425('0x28')](respondWithResult(_0x9cbd3a,0xc9))[_0x0425('0x45')](handleError(_0x9cbd3a,null));};exports['update']=function(_0x554a1e,_0x2dfdec){if(_0x554a1e[_0x0425('0x4c')]['id']){delete _0x554a1e[_0x0425('0x4c')]['id'];}return db[_0x0425('0x2e')][_0x0425('0x4a')]({'where':{'id':_0x554a1e[_0x0425('0x47')]['id']}})['then'](handleEntityNotFound(_0x2dfdec,null))['then'](saveUpdates(_0x554a1e[_0x0425('0x4c')],null))[_0x0425('0x28')](respondWithResult(_0x2dfdec,null))[_0x0425('0x45')](handleError(_0x2dfdec,null));};exports[_0x0425('0x27')]=function(_0x5d717e,_0x3fc412){return db[_0x0425('0x2e')]['find']({'where':{'id':_0x5d717e['params']['id']}})[_0x0425('0x28')](handleEntityNotFound(_0x3fc412,null))[_0x0425('0x28')](removeEntity(_0x3fc412,null))['catch'](handleError(_0x3fc412,null));};exports[_0x0425('0x4d')]=function(_0x11e444,_0x154985){return db[_0x0425('0x2e')][_0x0425('0x4d')]()[_0x0425('0x28')](respondWithResult(_0x154985,null))['catch'](handleError(_0x154985,null));};
\ No newline at end of file