Built motion from commit (unavailable).|2.5.11
[motion2.git] / server / api / intDynamics365Field / intDynamics365Field.controller.js
index fabccc2..146cb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e8f=['name','send','index','map','Dynamics365Field','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','include','rows','catch','keys','rawAttributes','options','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','stack'];(function(_0x58a95a,_0x29f374){var _0x404b31=function(_0x28bd8b){while(--_0x28bd8b){_0x58a95a['push'](_0x58a95a['shift']());}};_0x404b31(++_0x29f374);}(_0x9e8f,0x193));var _0xf9e8=function(_0x53ad51,_0xd2c4c3){_0x53ad51=_0x53ad51-0x0;var _0x27e44e=_0x9e8f[_0x53ad51];return _0x27e44e;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xf9e8('0x0'));var rimraf=require(_0xf9e8('0x1'));var zipdir=require(_0xf9e8('0x2'));var jsonpatch=require(_0xf9e8('0x3'));var rp=require(_0xf9e8('0x4'));var moment=require(_0xf9e8('0x5'));var BPromise=require(_0xf9e8('0x6'));var Mustache=require(_0xf9e8('0x7'));var util=require(_0xf9e8('0x8'));var path=require(_0xf9e8('0x9'));var sox=require(_0xf9e8('0xa'));var csv=require(_0xf9e8('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xf9e8('0xc'));var crypto=require(_0xf9e8('0xd'));var jsforce=require(_0xf9e8('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf9e8('0xf'));var Papa=require(_0xf9e8('0x10'));var Redis=require('ioredis');var authService=require(_0xf9e8('0x11'));var qs=require(_0xf9e8('0x12'));var as=require(_0xf9e8('0x13'));var hardwareService=require(_0xf9e8('0x14'));var logger=require(_0xf9e8('0x15'))(_0xf9e8('0x16'));var utils=require(_0xf9e8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf9e8('0x18'));var db=require(_0xf9e8('0x19'))['db'];function respondWithStatusCode(_0x55c4fc,_0x28b6d2){_0x28b6d2=_0x28b6d2||0xcc;return function(_0x513e73){if(_0x513e73){return _0x55c4fc[_0xf9e8('0x1a')](_0x28b6d2);}return _0x55c4fc[_0xf9e8('0x1b')](_0x28b6d2)[_0xf9e8('0x1c')]();};}function respondWithResult(_0x349645,_0x211606){_0x211606=_0x211606||0xc8;return function(_0x16fe19){if(_0x16fe19){return _0x349645[_0xf9e8('0x1b')](_0x211606)[_0xf9e8('0x1d')](_0x16fe19);}};}function respondWithFilteredResult(_0x2d624c,_0x1ffd43){return function(_0x72552c){if(_0x72552c){var _0x33931d=_0x72552c[_0xf9e8('0x1e')],_0x52fea7=_0x1ffd43[_0xf9e8('0x1f')],_0xad8a5b=_0x1ffd43[_0xf9e8('0x1f')]+_0x1ffd43[_0xf9e8('0x20')],_0x531271;if(_0xad8a5b>=_0x33931d){_0xad8a5b=_0x33931d;_0x531271=0xc8;}else{_0x531271=0xce;}_0x2d624c['status'](_0x531271);return _0x2d624c[_0xf9e8('0x21')](_0xf9e8('0x22'),_0x52fea7+'-'+_0xad8a5b+'/'+_0x33931d)[_0xf9e8('0x1d')](_0x72552c);}return null;};}function patchUpdates(_0x5449d2){return function(_0x267c6f){try{jsonpatch['apply'](_0x267c6f,_0x5449d2,!![]);}catch(_0x11418e){return BPromise[_0xf9e8('0x23')](_0x11418e);}return _0x267c6f[_0xf9e8('0x24')]();};}function saveUpdates(_0x5d0500,_0x122bc6){return function(_0x9a7f70){if(_0x9a7f70){return _0x9a7f70['update'](_0x5d0500)[_0xf9e8('0x25')](function(_0x1e877a){return _0x1e877a;});}return null;};}function removeEntity(_0xb63730,_0x23377e){return function(_0x256e32){if(_0x256e32){return _0x256e32[_0xf9e8('0x26')]()[_0xf9e8('0x25')](function(){_0xb63730['status'](0xcc)[_0xf9e8('0x1c')]();});}};}function handleEntityNotFound(_0x12cd94,_0x4de5e4){return function(_0x2e6737){if(!_0x2e6737){_0x12cd94['sendStatus'](0x194);}return _0x2e6737;};}function handleError(_0x424ca1,_0x500431){_0x500431=_0x500431||0x1f4;return function(_0xb6c7c0){logger[_0xf9e8('0x27')](_0xb6c7c0[_0xf9e8('0x28')]);if(_0xb6c7c0[_0xf9e8('0x29')]){delete _0xb6c7c0['name'];}_0x424ca1[_0xf9e8('0x1b')](_0x500431)[_0xf9e8('0x2a')](_0xb6c7c0);};}exports[_0xf9e8('0x2b')]=function(_0x13df25,_0x1cda46){var _0xb185aa={},_0x1637ff={},_0x5bb2c0={'count':0x0,'rows':[]};var _0x57df27=_[_0xf9e8('0x2c')](db[_0xf9e8('0x2d')]['rawAttributes'],function(_0x4ad4f4){return{'name':_0x4ad4f4[_0xf9e8('0x2e')],'type':_0x4ad4f4[_0xf9e8('0x2f')][_0xf9e8('0x30')]};});_0x1637ff['model']=_[_0xf9e8('0x2c')](_0x57df27,_0xf9e8('0x29'));_0x1637ff[_0xf9e8('0x31')]=_['keys'](_0x13df25[_0xf9e8('0x31')]);_0x1637ff['filters']=_[_0xf9e8('0x32')](_0x1637ff[_0xf9e8('0x33')],_0x1637ff[_0xf9e8('0x31')]);_0xb185aa[_0xf9e8('0x34')]=_['intersection'](_0x1637ff[_0xf9e8('0x33')],qs['fields'](_0x13df25[_0xf9e8('0x31')][_0xf9e8('0x35')]));_0xb185aa['attributes']=_0xb185aa[_0xf9e8('0x34')][_0xf9e8('0x36')]?_0xb185aa['attributes']:_0x1637ff['model'];if(!_0x13df25[_0xf9e8('0x31')][_0xf9e8('0x37')]('nolimit')){_0xb185aa[_0xf9e8('0x20')]=qs['limit'](_0x13df25[_0xf9e8('0x31')]['limit']);_0xb185aa[_0xf9e8('0x1f')]=qs[_0xf9e8('0x1f')](_0x13df25['query'][_0xf9e8('0x1f')]);}_0xb185aa[_0xf9e8('0x38')]=qs[_0xf9e8('0x39')](_0x13df25[_0xf9e8('0x31')][_0xf9e8('0x39')]);_0xb185aa[_0xf9e8('0x3a')]=qs['filters'](_[_0xf9e8('0x3b')](_0x13df25[_0xf9e8('0x31')],_0x1637ff[_0xf9e8('0x3c')]),_0x57df27);if(_0x13df25['query'][_0xf9e8('0x3d')]){_0xb185aa['where']=_[_0xf9e8('0x3e')](_0xb185aa[_0xf9e8('0x3a')],{'$or':_[_0xf9e8('0x2c')](_0x57df27,function(_0x45c825){if(_0x45c825[_0xf9e8('0x2f')]!==_0xf9e8('0x3f')){var _0x9db7b9={};_0x9db7b9[_0x45c825[_0xf9e8('0x29')]]={'$like':'%'+_0x13df25[_0xf9e8('0x31')][_0xf9e8('0x3d')]+'%'};return _0x9db7b9;}})});}_0xb185aa=_['merge']({},_0xb185aa,_0x13df25['options']);var _0x3138a8={'where':_0xb185aa[_0xf9e8('0x3a')]};return db['Dynamics365Field']['count'](_0x3138a8)[_0xf9e8('0x25')](function(_0x3ed6f2){_0x5bb2c0[_0xf9e8('0x1e')]=_0x3ed6f2;if(_0x13df25[_0xf9e8('0x31')]['includeAll']){_0xb185aa[_0xf9e8('0x40')]=[{'all':!![]}];}return db[_0xf9e8('0x2d')]['findAll'](_0xb185aa);})['then'](function(_0x594c3b){_0x5bb2c0[_0xf9e8('0x41')]=_0x594c3b;return _0x5bb2c0;})[_0xf9e8('0x25')](respondWithFilteredResult(_0x1cda46,_0xb185aa))[_0xf9e8('0x42')](handleError(_0x1cda46,null));};exports['show']=function(_0x41a550,_0x2146a4){var _0x216b9b={'raw':!![],'where':{'id':_0x41a550['params']['id']}},_0x3770cf={};_0x3770cf['model']=_[_0xf9e8('0x43')](db[_0xf9e8('0x2d')][_0xf9e8('0x44')]);_0x3770cf[_0xf9e8('0x31')]=_[_0xf9e8('0x43')](_0x41a550[_0xf9e8('0x31')]);_0x3770cf['filters']=_[_0xf9e8('0x32')](_0x3770cf['model'],_0x3770cf[_0xf9e8('0x31')]);_0x216b9b[_0xf9e8('0x34')]=_['intersection'](_0x3770cf[_0xf9e8('0x33')],qs[_0xf9e8('0x35')](_0x41a550['query'][_0xf9e8('0x35')]));_0x216b9b[_0xf9e8('0x34')]=_0x216b9b['attributes'][_0xf9e8('0x36')]?_0x216b9b[_0xf9e8('0x34')]:_0x3770cf[_0xf9e8('0x33')];if(_0x41a550[_0xf9e8('0x31')]['includeAll']){_0x216b9b[_0xf9e8('0x40')]=[{'all':!![]}];}_0x216b9b=_[_0xf9e8('0x3e')]({},_0x216b9b,_0x41a550[_0xf9e8('0x45')]);return db['Dynamics365Field'][_0xf9e8('0x46')](_0x216b9b)[_0xf9e8('0x25')](handleEntityNotFound(_0x2146a4,null))[_0xf9e8('0x25')](respondWithResult(_0x2146a4,null))[_0xf9e8('0x42')](handleError(_0x2146a4,null));};exports['create']=function(_0x51673f,_0x354da4){return db[_0xf9e8('0x2d')][_0xf9e8('0x47')](_0x51673f[_0xf9e8('0x48')],{})[_0xf9e8('0x25')](respondWithResult(_0x354da4,0xc9))['catch'](handleError(_0x354da4,null));};exports[_0xf9e8('0x49')]=function(_0x1f1800,_0x13be66){if(_0x1f1800[_0xf9e8('0x48')]['id']){delete _0x1f1800[_0xf9e8('0x48')]['id'];}return db[_0xf9e8('0x2d')][_0xf9e8('0x46')]({'where':{'id':_0x1f1800['params']['id']}})['then'](handleEntityNotFound(_0x13be66,null))[_0xf9e8('0x25')](saveUpdates(_0x1f1800[_0xf9e8('0x48')],null))['then'](respondWithResult(_0x13be66,null))[_0xf9e8('0x42')](handleError(_0x13be66,null));};exports[_0xf9e8('0x26')]=function(_0x5bfd4d,_0x4433bd){return db['Dynamics365Field'][_0xf9e8('0x46')]({'where':{'id':_0x5bfd4d['params']['id']}})[_0xf9e8('0x25')](handleEntityNotFound(_0x4433bd,null))[_0xf9e8('0x25')](removeEntity(_0x4433bd,null))[_0xf9e8('0x42')](handleError(_0x4433bd,null));};
\ No newline at end of file
+var _0x9ab5=['html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','set','Content-Range','json','apply','save','then','destroy','stack','name','send','index','Dynamics365Field','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','update'];(function(_0x5e5b6c,_0x3cef7b){var _0x21ac4f=function(_0x3520e7){while(--_0x3520e7){_0x5e5b6c['push'](_0x5e5b6c['shift']());}};_0x21ac4f(++_0x3cef7b);}(_0x9ab5,0xe1));var _0x59ab=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9ab5[_0x1facfa];return _0x9ec701;};'use strict';var pdf=require(_0x59ab('0x0'));var emlformat=require(_0x59ab('0x1'));var rimraf=require(_0x59ab('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x59ab('0x3'));var rp=require(_0x59ab('0x4'));var moment=require(_0x59ab('0x5'));var BPromise=require(_0x59ab('0x6'));var Mustache=require(_0x59ab('0x7'));var util=require(_0x59ab('0x8'));var path=require('path');var sox=require(_0x59ab('0x9'));var csv=require(_0x59ab('0xa'));var ejs=require(_0x59ab('0xb'));var fs=require('fs');var _=require(_0x59ab('0xc'));var squel=require(_0x59ab('0xd'));var crypto=require(_0x59ab('0xe'));var jsforce=require(_0x59ab('0xf'));var deskjs=require(_0x59ab('0x10'));var toCsv=require(_0x59ab('0xa'));var querystring=require(_0x59ab('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x59ab('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x59ab('0x13'));var hardwareService=require(_0x59ab('0x14'));var logger=require(_0x59ab('0x15'))(_0x59ab('0x16'));var utils=require(_0x59ab('0x17'));var config=require(_0x59ab('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x59ab('0x19'))['db'];function respondWithStatusCode(_0x15e464,_0x17c5f0){_0x17c5f0=_0x17c5f0||0xcc;return function(_0x1159af){if(_0x1159af){return _0x15e464[_0x59ab('0x1a')](_0x17c5f0);}return _0x15e464['status'](_0x17c5f0)[_0x59ab('0x1b')]();};}function respondWithResult(_0x983962,_0x3d8a23){_0x3d8a23=_0x3d8a23||0xc8;return function(_0x2210c1){if(_0x2210c1){return _0x983962[_0x59ab('0x1c')](_0x3d8a23)['json'](_0x2210c1);}};}function respondWithFilteredResult(_0x2be8d3,_0x5ad812){return function(_0x540efc){if(_0x540efc){var _0x1f13bf=_0x540efc['count'],_0x29ef81=_0x5ad812[_0x59ab('0x1d')],_0x53046d=_0x5ad812['offset']+_0x5ad812['limit'],_0x1a31d9;if(_0x53046d>=_0x1f13bf){_0x53046d=_0x1f13bf;_0x1a31d9=0xc8;}else{_0x1a31d9=0xce;}_0x2be8d3[_0x59ab('0x1c')](_0x1a31d9);return _0x2be8d3[_0x59ab('0x1e')](_0x59ab('0x1f'),_0x29ef81+'-'+_0x53046d+'/'+_0x1f13bf)[_0x59ab('0x20')](_0x540efc);}return null;};}function patchUpdates(_0x57a585){return function(_0x4d73c2){try{jsonpatch[_0x59ab('0x21')](_0x4d73c2,_0x57a585,!![]);}catch(_0x14556f){return BPromise['reject'](_0x14556f);}return _0x4d73c2[_0x59ab('0x22')]();};}function saveUpdates(_0x1515ca,_0x221f2f){return function(_0x268e45){if(_0x268e45){return _0x268e45['update'](_0x1515ca)[_0x59ab('0x23')](function(_0x4d4ef3){return _0x4d4ef3;});}return null;};}function removeEntity(_0x2dfce2,_0x2edfd5){return function(_0x2ad552){if(_0x2ad552){return _0x2ad552[_0x59ab('0x24')]()[_0x59ab('0x23')](function(){_0x2dfce2['status'](0xcc)[_0x59ab('0x1b')]();});}};}function handleEntityNotFound(_0xa1bf82,_0x1290f7){return function(_0x53c3a1){if(!_0x53c3a1){_0xa1bf82[_0x59ab('0x1a')](0x194);}return _0x53c3a1;};}function handleError(_0x37708e,_0x272bae){_0x272bae=_0x272bae||0x1f4;return function(_0x387209){logger['error'](_0x387209[_0x59ab('0x25')]);if(_0x387209[_0x59ab('0x26')]){delete _0x387209[_0x59ab('0x26')];}_0x37708e[_0x59ab('0x1c')](_0x272bae)[_0x59ab('0x27')](_0x387209);};}exports[_0x59ab('0x28')]=function(_0x13d91f,_0x353d23){var _0x1c9087={},_0x5f53a5={},_0x298237={'count':0x0,'rows':[]};var _0x401a72=_['map'](db[_0x59ab('0x29')][_0x59ab('0x2a')],function(_0x16f23f){return{'name':_0x16f23f[_0x59ab('0x2b')],'type':_0x16f23f[_0x59ab('0x2c')][_0x59ab('0x2d')]};});_0x5f53a5[_0x59ab('0x2e')]=_[_0x59ab('0x2f')](_0x401a72,_0x59ab('0x26'));_0x5f53a5[_0x59ab('0x30')]=_[_0x59ab('0x31')](_0x13d91f[_0x59ab('0x30')]);_0x5f53a5[_0x59ab('0x32')]=_[_0x59ab('0x33')](_0x5f53a5[_0x59ab('0x2e')],_0x5f53a5[_0x59ab('0x30')]);_0x1c9087[_0x59ab('0x34')]=_[_0x59ab('0x33')](_0x5f53a5[_0x59ab('0x2e')],qs[_0x59ab('0x35')](_0x13d91f[_0x59ab('0x30')][_0x59ab('0x35')]));_0x1c9087[_0x59ab('0x34')]=_0x1c9087[_0x59ab('0x34')][_0x59ab('0x36')]?_0x1c9087['attributes']:_0x5f53a5['model'];if(!_0x13d91f['query'][_0x59ab('0x37')](_0x59ab('0x38'))){_0x1c9087[_0x59ab('0x39')]=qs[_0x59ab('0x39')](_0x13d91f[_0x59ab('0x30')][_0x59ab('0x39')]);_0x1c9087[_0x59ab('0x1d')]=qs[_0x59ab('0x1d')](_0x13d91f[_0x59ab('0x30')]['offset']);}_0x1c9087[_0x59ab('0x3a')]=qs[_0x59ab('0x3b')](_0x13d91f[_0x59ab('0x30')]['sort']);_0x1c9087['where']=qs[_0x59ab('0x32')](_[_0x59ab('0x3c')](_0x13d91f[_0x59ab('0x30')],_0x5f53a5[_0x59ab('0x32')]),_0x401a72);if(_0x13d91f['query'][_0x59ab('0x3d')]){_0x1c9087[_0x59ab('0x3e')]=_[_0x59ab('0x3f')](_0x1c9087[_0x59ab('0x3e')],{'$or':_[_0x59ab('0x2f')](_0x401a72,function(_0x126c26){if(_0x126c26[_0x59ab('0x2c')]!=='VIRTUAL'){var _0x1de3c0={};_0x1de3c0[_0x126c26[_0x59ab('0x26')]]={'$like':'%'+_0x13d91f[_0x59ab('0x30')]['filter']+'%'};return _0x1de3c0;}})});}_0x1c9087=_[_0x59ab('0x3f')]({},_0x1c9087,_0x13d91f[_0x59ab('0x40')]);var _0x412782={'where':_0x1c9087[_0x59ab('0x3e')]};return db['Dynamics365Field']['count'](_0x412782)['then'](function(_0x5ba65c){_0x298237['count']=_0x5ba65c;if(_0x13d91f[_0x59ab('0x30')][_0x59ab('0x41')]){_0x1c9087['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0x59ab('0x42')](_0x1c9087);})['then'](function(_0x2a373d){_0x298237[_0x59ab('0x43')]=_0x2a373d;return _0x298237;})[_0x59ab('0x23')](respondWithFilteredResult(_0x353d23,_0x1c9087))[_0x59ab('0x44')](handleError(_0x353d23,null));};exports[_0x59ab('0x45')]=function(_0x1396b2,_0x55829c){var _0x11ad62={'raw':!![],'where':{'id':_0x1396b2[_0x59ab('0x46')]['id']}},_0x88d7af={};_0x88d7af['model']=_[_0x59ab('0x31')](db[_0x59ab('0x29')][_0x59ab('0x2a')]);_0x88d7af['query']=_['keys'](_0x1396b2[_0x59ab('0x30')]);_0x88d7af[_0x59ab('0x32')]=_[_0x59ab('0x33')](_0x88d7af[_0x59ab('0x2e')],_0x88d7af[_0x59ab('0x30')]);_0x11ad62['attributes']=_[_0x59ab('0x33')](_0x88d7af[_0x59ab('0x2e')],qs[_0x59ab('0x35')](_0x1396b2[_0x59ab('0x30')][_0x59ab('0x35')]));_0x11ad62[_0x59ab('0x34')]=_0x11ad62[_0x59ab('0x34')][_0x59ab('0x36')]?_0x11ad62['attributes']:_0x88d7af[_0x59ab('0x2e')];if(_0x1396b2[_0x59ab('0x30')][_0x59ab('0x41')]){_0x11ad62['include']=[{'all':!![]}];}_0x11ad62=_[_0x59ab('0x3f')]({},_0x11ad62,_0x1396b2[_0x59ab('0x40')]);return db[_0x59ab('0x29')][_0x59ab('0x47')](_0x11ad62)[_0x59ab('0x23')](handleEntityNotFound(_0x55829c,null))['then'](respondWithResult(_0x55829c,null))[_0x59ab('0x44')](handleError(_0x55829c,null));};exports[_0x59ab('0x48')]=function(_0x4592f9,_0x5c3ccf){return db['Dynamics365Field'][_0x59ab('0x48')](_0x4592f9[_0x59ab('0x49')],{})[_0x59ab('0x23')](respondWithResult(_0x5c3ccf,0xc9))['catch'](handleError(_0x5c3ccf,null));};exports[_0x59ab('0x4a')]=function(_0xfbfa1a,_0x549694){if(_0xfbfa1a[_0x59ab('0x49')]['id']){delete _0xfbfa1a['body']['id'];}return db['Dynamics365Field'][_0x59ab('0x47')]({'where':{'id':_0xfbfa1a[_0x59ab('0x46')]['id']}})['then'](handleEntityNotFound(_0x549694,null))[_0x59ab('0x23')](saveUpdates(_0xfbfa1a[_0x59ab('0x49')],null))[_0x59ab('0x23')](respondWithResult(_0x549694,null))[_0x59ab('0x44')](handleError(_0x549694,null));};exports['destroy']=function(_0x3800fe,_0x1a3f5a){return db[_0x59ab('0x29')][_0x59ab('0x47')]({'where':{'id':_0x3800fe['params']['id']}})[_0x59ab('0x23')](handleEntityNotFound(_0x1a3f5a,null))[_0x59ab('0x23')](removeEntity(_0x1a3f5a,null))[_0x59ab('0x44')](handleError(_0x1a3f5a,null));};
\ No newline at end of file