Built motion from commit da617fac.|2.6.6
[motion2.git] / server / api / intServicenowField / intServicenowField.controller.js
index ba1ed4d..0f9895e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752d=['includeAll','findAll','rows','catch','show','keys','include','merge','options','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','apply','save','update','destroy','then','end','error','stack','name','send','ServicenowField','rawAttributes','key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','type'];(function(_0x2c8b7a,_0x483fe0){var _0x1c1cf9=function(_0x464bcf){while(--_0x464bcf){_0x2c8b7a['push'](_0x2c8b7a['shift']());}};_0x1c1cf9(++_0x483fe0);}(_0x752d,0x1bd));var _0xd752=function(_0x56c574,_0x1c028c){_0x56c574=_0x56c574-0x0;var _0x21d0f0=_0x752d[_0x56c574];return _0x21d0f0;};'use strict';var emlformat=require(_0xd752('0x0'));var rimraf=require(_0xd752('0x1'));var zipdir=require(_0xd752('0x2'));var jsonpatch=require(_0xd752('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd752('0x4'));var Mustache=require(_0xd752('0x5'));var util=require(_0xd752('0x6'));var path=require('path');var sox=require(_0xd752('0x7'));var csv=require('to-csv');var ejs=require(_0xd752('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd752('0x9'));var squel=require(_0xd752('0xa'));var crypto=require(_0xd752('0xb'));var jsforce=require(_0xd752('0xc'));var deskjs=require(_0xd752('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd752('0xe'));var Redis=require('ioredis');var authService=require(_0xd752('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd752('0x10'));var hardwareService=require(_0xd752('0x11'));var logger=require('../../config/logger')(_0xd752('0x12'));var utils=require(_0xd752('0x13'));var config=require(_0xd752('0x14'));var licenseUtil=require(_0xd752('0x15'));var db=require(_0xd752('0x16'))['db'];function respondWithStatusCode(_0x51cfee,_0x569923){_0x569923=_0x569923||0xcc;return function(_0x570a0a){if(_0x570a0a){return _0x51cfee[_0xd752('0x17')](_0x569923);}return _0x51cfee[_0xd752('0x18')](_0x569923)['end']();};}function respondWithResult(_0x1eed7e,_0x4e61a3){_0x4e61a3=_0x4e61a3||0xc8;return function(_0x5c3d67){if(_0x5c3d67){return _0x1eed7e['status'](_0x4e61a3)[_0xd752('0x19')](_0x5c3d67);}};}function respondWithFilteredResult(_0x3939d0,_0x5e9145){return function(_0x16da3e){if(_0x16da3e){var _0xdb8430=typeof _0x5e9145['offset']===_0xd752('0x1a')&&typeof _0x5e9145[_0xd752('0x1b')]===_0xd752('0x1a');var _0x917dde=_0x16da3e['count'];var _0x42dd56=_0xdb8430?0x0:_0x5e9145['offset'];var _0x1f90ca=_0xdb8430?_0x16da3e[_0xd752('0x1c')]:_0x5e9145['offset']+_0x5e9145['limit'];var _0x367855;if(_0x1f90ca>=_0x917dde){_0x1f90ca=_0x917dde;_0x367855=0xc8;}else{_0x367855=0xce;}_0x3939d0[_0xd752('0x18')](_0x367855);return _0x3939d0['set']('Content-Range',_0x42dd56+'-'+_0x1f90ca+'/'+_0x917dde)[_0xd752('0x19')](_0x16da3e);}return null;};}function patchUpdates(_0x3e01c8){return function(_0x326924){try{jsonpatch[_0xd752('0x1d')](_0x326924,_0x3e01c8,!![]);}catch(_0x1b8123){return BPromise['reject'](_0x1b8123);}return _0x326924[_0xd752('0x1e')]();};}function saveUpdates(_0x3f678d,_0x4e6caa){return function(_0x1fdaed){if(_0x1fdaed){return _0x1fdaed[_0xd752('0x1f')](_0x3f678d)['then'](function(_0x4772a8){return _0x4772a8;});}return null;};}function removeEntity(_0x3c86db,_0x333a1d){return function(_0x51844a){if(_0x51844a){return _0x51844a[_0xd752('0x20')]()[_0xd752('0x21')](function(){_0x3c86db[_0xd752('0x18')](0xcc)[_0xd752('0x22')]();});}};}function handleEntityNotFound(_0x369d56,_0x29e021){return function(_0x779771){if(!_0x779771){_0x369d56[_0xd752('0x17')](0x194);}return _0x779771;};}function handleError(_0x1716d0,_0x4d43ce){_0x4d43ce=_0x4d43ce||0x1f4;return function(_0x5111cc){logger[_0xd752('0x23')](_0x5111cc[_0xd752('0x24')]);if(_0x5111cc[_0xd752('0x25')]){delete _0x5111cc[_0xd752('0x25')];}_0x1716d0['status'](_0x4d43ce)[_0xd752('0x26')](_0x5111cc);};}exports['index']=function(_0x215d38,_0x502e5e){var _0x12c9cb={},_0x6184c3={},_0x1a3fb3={'count':0x0,'rows':[]};var _0x18bcb8=_['map'](db[_0xd752('0x27')][_0xd752('0x28')],function(_0x778a0a){return{'name':_0x778a0a['fieldName'],'type':_0x778a0a['type'][_0xd752('0x29')]};});_0x6184c3['model']=_[_0xd752('0x2a')](_0x18bcb8,_0xd752('0x25'));_0x6184c3['query']=_['keys'](_0x215d38[_0xd752('0x2b')]);_0x6184c3[_0xd752('0x2c')]=_[_0xd752('0x2d')](_0x6184c3[_0xd752('0x2e')],_0x6184c3[_0xd752('0x2b')]);_0x12c9cb['attributes']=_[_0xd752('0x2d')](_0x6184c3[_0xd752('0x2e')],qs['fields'](_0x215d38[_0xd752('0x2b')][_0xd752('0x2f')]));_0x12c9cb[_0xd752('0x30')]=_0x12c9cb['attributes'][_0xd752('0x31')]?_0x12c9cb[_0xd752('0x30')]:_0x6184c3[_0xd752('0x2e')];if(!_0x215d38[_0xd752('0x2b')][_0xd752('0x32')](_0xd752('0x33'))){_0x12c9cb[_0xd752('0x1b')]=qs['limit'](_0x215d38[_0xd752('0x2b')]['limit']);_0x12c9cb[_0xd752('0x34')]=qs[_0xd752('0x34')](_0x215d38[_0xd752('0x2b')][_0xd752('0x34')]);}_0x12c9cb[_0xd752('0x35')]=qs[_0xd752('0x36')](_0x215d38[_0xd752('0x2b')][_0xd752('0x36')]);_0x12c9cb[_0xd752('0x37')]=qs[_0xd752('0x2c')](_[_0xd752('0x38')](_0x215d38[_0xd752('0x2b')],_0x6184c3[_0xd752('0x2c')]),_0x18bcb8);if(_0x215d38[_0xd752('0x2b')][_0xd752('0x39')]){_0x12c9cb[_0xd752('0x37')]=_['merge'](_0x12c9cb[_0xd752('0x37')],{'$or':_['map'](_0x18bcb8,function(_0x46028f){if(_0x46028f[_0xd752('0x3a')]!=='VIRTUAL'){var _0x454b70={};_0x454b70[_0x46028f[_0xd752('0x25')]]={'$like':'%'+_0x215d38[_0xd752('0x2b')][_0xd752('0x39')]+'%'};return _0x454b70;}})});}_0x12c9cb=_['merge']({},_0x12c9cb,_0x215d38['options']);var _0x51fe2b={'where':_0x12c9cb[_0xd752('0x37')]};return db[_0xd752('0x27')][_0xd752('0x1c')](_0x51fe2b)['then'](function(_0x11692d){_0x1a3fb3[_0xd752('0x1c')]=_0x11692d;if(_0x215d38[_0xd752('0x2b')][_0xd752('0x3b')]){_0x12c9cb['include']=[{'all':!![]}];}return db[_0xd752('0x27')][_0xd752('0x3c')](_0x12c9cb);})[_0xd752('0x21')](function(_0x575825){_0x1a3fb3[_0xd752('0x3d')]=_0x575825;return _0x1a3fb3;})[_0xd752('0x21')](respondWithFilteredResult(_0x502e5e,_0x12c9cb))[_0xd752('0x3e')](handleError(_0x502e5e,null));};exports[_0xd752('0x3f')]=function(_0x15dd97,_0x142640){var _0x156cd1={'raw':!![],'where':{'id':_0x15dd97['params']['id']}},_0x4babbd={};_0x4babbd[_0xd752('0x2e')]=_[_0xd752('0x40')](db['ServicenowField']['rawAttributes']);_0x4babbd['query']=_['keys'](_0x15dd97[_0xd752('0x2b')]);_0x4babbd[_0xd752('0x2c')]=_[_0xd752('0x2d')](_0x4babbd[_0xd752('0x2e')],_0x4babbd[_0xd752('0x2b')]);_0x156cd1[_0xd752('0x30')]=_[_0xd752('0x2d')](_0x4babbd[_0xd752('0x2e')],qs['fields'](_0x15dd97[_0xd752('0x2b')]['fields']));_0x156cd1[_0xd752('0x30')]=_0x156cd1[_0xd752('0x30')][_0xd752('0x31')]?_0x156cd1[_0xd752('0x30')]:_0x4babbd[_0xd752('0x2e')];if(_0x15dd97[_0xd752('0x2b')][_0xd752('0x3b')]){_0x156cd1[_0xd752('0x41')]=[{'all':!![]}];}_0x156cd1=_[_0xd752('0x42')]({},_0x156cd1,_0x15dd97[_0xd752('0x43')]);return db[_0xd752('0x27')]['find'](_0x156cd1)['then'](handleEntityNotFound(_0x142640,null))[_0xd752('0x21')](respondWithResult(_0x142640,null))['catch'](handleError(_0x142640,null));};exports['create']=function(_0x5be048,_0x41087f){return db['ServicenowField'][_0xd752('0x44')](_0x5be048[_0xd752('0x45')],{})[_0xd752('0x21')](respondWithResult(_0x41087f,0xc9))['catch'](handleError(_0x41087f,null));};exports[_0xd752('0x1f')]=function(_0xfe0cf2,_0x1e2708){if(_0xfe0cf2['body']['id']){delete _0xfe0cf2[_0xd752('0x45')]['id'];}return db['ServicenowField'][_0xd752('0x46')]({'where':{'id':_0xfe0cf2[_0xd752('0x47')]['id']}})['then'](handleEntityNotFound(_0x1e2708,null))['then'](saveUpdates(_0xfe0cf2[_0xd752('0x45')],null))[_0xd752('0x21')](respondWithResult(_0x1e2708,null))['catch'](handleError(_0x1e2708,null));};exports[_0xd752('0x20')]=function(_0x3ab62f,_0x4e8960){return db[_0xd752('0x27')]['find']({'where':{'id':_0x3ab62f[_0xd752('0x47')]['id']}})[_0xd752('0x21')](handleEntityNotFound(_0x4e8960,null))[_0xd752('0x21')](removeEntity(_0x4e8960,null))[_0xd752('0x3e')](handleError(_0x4e8960,null));};
\ No newline at end of file
+var _0x5b5f=['eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','options','create','body','find'];(function(_0x5b34a7,_0x3f1c19){var _0x136c49=function(_0xa77a47){while(--_0xa77a47){_0x5b34a7['push'](_0x5b34a7['shift']());}};_0x136c49(++_0x3f1c19);}(_0x5b5f,0x1c2));var _0xf5b5=function(_0x57163b,_0x41db5f){_0x57163b=_0x57163b-0x0;var _0x13c1ea=_0x5b5f[_0x57163b];return _0x13c1ea;};'use strict';var emlformat=require(_0xf5b5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf5b5('0x1'));var jsonpatch=require(_0xf5b5('0x2'));var rp=require(_0xf5b5('0x3'));var moment=require('moment');var BPromise=require(_0xf5b5('0x4'));var Mustache=require('mustache');var util=require(_0xf5b5('0x5'));var path=require(_0xf5b5('0x6'));var sox=require(_0xf5b5('0x7'));var csv=require(_0xf5b5('0x8'));var ejs=require(_0xf5b5('0x9'));var fs=require('fs');var fs_extra=require(_0xf5b5('0xa'));var _=require(_0xf5b5('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf5b5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf5b5('0x8'));var querystring=require(_0xf5b5('0xd'));var Papa=require(_0xf5b5('0xe'));var Redis=require(_0xf5b5('0xf'));var authService=require(_0xf5b5('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf5b5('0x11'))(_0xf5b5('0x12'));var utils=require(_0xf5b5('0x13'));var config=require(_0xf5b5('0x14'));var licenseUtil=require(_0xf5b5('0x15'));var db=require(_0xf5b5('0x16'))['db'];function respondWithStatusCode(_0x1ca48d,_0x26b756){_0x26b756=_0x26b756||0xcc;return function(_0x28dc84){if(_0x28dc84){return _0x1ca48d[_0xf5b5('0x17')](_0x26b756);}return _0x1ca48d[_0xf5b5('0x18')](_0x26b756)['end']();};}function respondWithResult(_0x2eb737,_0x4588dd){_0x4588dd=_0x4588dd||0xc8;return function(_0x172be3){if(_0x172be3){return _0x2eb737[_0xf5b5('0x18')](_0x4588dd)[_0xf5b5('0x19')](_0x172be3);}};}function respondWithFilteredResult(_0x396c6c,_0x56b9f0){return function(_0x41c8cc){if(_0x41c8cc){var _0x349f32=typeof _0x56b9f0[_0xf5b5('0x1a')]==='undefined'&&typeof _0x56b9f0['limit']===_0xf5b5('0x1b');var _0x431681=_0x41c8cc[_0xf5b5('0x1c')];var _0x1487fb=_0x349f32?0x0:_0x56b9f0[_0xf5b5('0x1a')];var _0x362f04=_0x349f32?_0x41c8cc[_0xf5b5('0x1c')]:_0x56b9f0[_0xf5b5('0x1a')]+_0x56b9f0[_0xf5b5('0x1d')];var _0x20ff18;if(_0x362f04>=_0x431681){_0x362f04=_0x431681;_0x20ff18=0xc8;}else{_0x20ff18=0xce;}_0x396c6c['status'](_0x20ff18);return _0x396c6c[_0xf5b5('0x1e')](_0xf5b5('0x1f'),_0x1487fb+'-'+_0x362f04+'/'+_0x431681)[_0xf5b5('0x19')](_0x41c8cc);}return null;};}function patchUpdates(_0x4a3d1f){return function(_0x3b4eab){try{jsonpatch[_0xf5b5('0x20')](_0x3b4eab,_0x4a3d1f,!![]);}catch(_0x1be063){return BPromise['reject'](_0x1be063);}return _0x3b4eab[_0xf5b5('0x21')]();};}function saveUpdates(_0x1b48f0,_0x456703){return function(_0x42614f){if(_0x42614f){return _0x42614f[_0xf5b5('0x22')](_0x1b48f0)[_0xf5b5('0x23')](function(_0x2ee67f){return _0x2ee67f;});}return null;};}function removeEntity(_0x57330e,_0x51b7e7){return function(_0x241b44){if(_0x241b44){return _0x241b44[_0xf5b5('0x24')]()[_0xf5b5('0x23')](function(){_0x57330e[_0xf5b5('0x18')](0xcc)[_0xf5b5('0x25')]();});}};}function handleEntityNotFound(_0x5868bc,_0x273342){return function(_0x5c60ab){if(!_0x5c60ab){_0x5868bc[_0xf5b5('0x17')](0x194);}return _0x5c60ab;};}function handleError(_0x57ae15,_0x3f8e8d){_0x3f8e8d=_0x3f8e8d||0x1f4;return function(_0x31529a){logger[_0xf5b5('0x26')](_0x31529a[_0xf5b5('0x27')]);if(_0x31529a[_0xf5b5('0x28')]){delete _0x31529a[_0xf5b5('0x28')];}_0x57ae15[_0xf5b5('0x18')](_0x3f8e8d)[_0xf5b5('0x29')](_0x31529a);};}exports['index']=function(_0x257910,_0x510555){var _0x4b7bd7={},_0x329fb8={},_0x53fa22={'count':0x0,'rows':[]};var _0x567a98=_[_0xf5b5('0x2a')](db[_0xf5b5('0x2b')][_0xf5b5('0x2c')],function(_0x4e923f){return{'name':_0x4e923f[_0xf5b5('0x2d')],'type':_0x4e923f[_0xf5b5('0x2e')][_0xf5b5('0x2f')]};});_0x329fb8[_0xf5b5('0x30')]=_[_0xf5b5('0x2a')](_0x567a98,'name');_0x329fb8[_0xf5b5('0x31')]=_['keys'](_0x257910[_0xf5b5('0x31')]);_0x329fb8['filters']=_[_0xf5b5('0x32')](_0x329fb8['model'],_0x329fb8[_0xf5b5('0x31')]);_0x4b7bd7[_0xf5b5('0x33')]=_['intersection'](_0x329fb8[_0xf5b5('0x30')],qs[_0xf5b5('0x34')](_0x257910[_0xf5b5('0x31')]['fields']));_0x4b7bd7[_0xf5b5('0x33')]=_0x4b7bd7[_0xf5b5('0x33')][_0xf5b5('0x35')]?_0x4b7bd7[_0xf5b5('0x33')]:_0x329fb8[_0xf5b5('0x30')];if(!_0x257910['query'][_0xf5b5('0x36')](_0xf5b5('0x37'))){_0x4b7bd7[_0xf5b5('0x1d')]=qs[_0xf5b5('0x1d')](_0x257910[_0xf5b5('0x31')][_0xf5b5('0x1d')]);_0x4b7bd7[_0xf5b5('0x1a')]=qs[_0xf5b5('0x1a')](_0x257910['query'][_0xf5b5('0x1a')]);}_0x4b7bd7[_0xf5b5('0x38')]=qs[_0xf5b5('0x39')](_0x257910[_0xf5b5('0x31')][_0xf5b5('0x39')]);_0x4b7bd7['where']=qs['filters'](_[_0xf5b5('0x3a')](_0x257910['query'],_0x329fb8[_0xf5b5('0x3b')]),_0x567a98);if(_0x257910[_0xf5b5('0x31')][_0xf5b5('0x3c')]){_0x4b7bd7[_0xf5b5('0x3d')]=_[_0xf5b5('0x3e')](_0x4b7bd7[_0xf5b5('0x3d')],{'$or':_[_0xf5b5('0x2a')](_0x567a98,function(_0x3429d1){if(_0x3429d1[_0xf5b5('0x2e')]!==_0xf5b5('0x3f')){var _0x4536ea={};_0x4536ea[_0x3429d1['name']]={'$like':'%'+_0x257910['query'][_0xf5b5('0x3c')]+'%'};return _0x4536ea;}})});}_0x4b7bd7=_[_0xf5b5('0x3e')]({},_0x4b7bd7,_0x257910['options']);var _0x27ce36={'where':_0x4b7bd7['where']};return db[_0xf5b5('0x2b')][_0xf5b5('0x1c')](_0x27ce36)[_0xf5b5('0x23')](function(_0x3a6470){_0x53fa22[_0xf5b5('0x1c')]=_0x3a6470;if(_0x257910[_0xf5b5('0x31')][_0xf5b5('0x40')]){_0x4b7bd7[_0xf5b5('0x41')]=[{'all':!![]}];}return db[_0xf5b5('0x2b')][_0xf5b5('0x42')](_0x4b7bd7);})[_0xf5b5('0x23')](function(_0x303a3a){_0x53fa22['rows']=_0x303a3a;return _0x53fa22;})[_0xf5b5('0x23')](respondWithFilteredResult(_0x510555,_0x4b7bd7))[_0xf5b5('0x43')](handleError(_0x510555,null));};exports[_0xf5b5('0x44')]=function(_0x5cd681,_0x453164){var _0x16d153={'raw':!![],'where':{'id':_0x5cd681[_0xf5b5('0x45')]['id']}},_0x1d4d3d={};_0x1d4d3d['model']=_[_0xf5b5('0x46')](db['ServicenowField'][_0xf5b5('0x2c')]);_0x1d4d3d[_0xf5b5('0x31')]=_[_0xf5b5('0x46')](_0x5cd681[_0xf5b5('0x31')]);_0x1d4d3d['filters']=_[_0xf5b5('0x32')](_0x1d4d3d[_0xf5b5('0x30')],_0x1d4d3d['query']);_0x16d153[_0xf5b5('0x33')]=_[_0xf5b5('0x32')](_0x1d4d3d['model'],qs['fields'](_0x5cd681[_0xf5b5('0x31')][_0xf5b5('0x34')]));_0x16d153[_0xf5b5('0x33')]=_0x16d153[_0xf5b5('0x33')]['length']?_0x16d153[_0xf5b5('0x33')]:_0x1d4d3d[_0xf5b5('0x30')];if(_0x5cd681[_0xf5b5('0x31')][_0xf5b5('0x40')]){_0x16d153[_0xf5b5('0x41')]=[{'all':!![]}];}_0x16d153=_[_0xf5b5('0x3e')]({},_0x16d153,_0x5cd681[_0xf5b5('0x47')]);return db[_0xf5b5('0x2b')]['find'](_0x16d153)['then'](handleEntityNotFound(_0x453164,null))[_0xf5b5('0x23')](respondWithResult(_0x453164,null))[_0xf5b5('0x43')](handleError(_0x453164,null));};exports['create']=function(_0x2c7791,_0xfcf16e){return db[_0xf5b5('0x2b')][_0xf5b5('0x48')](_0x2c7791[_0xf5b5('0x49')],{})['then'](respondWithResult(_0xfcf16e,0xc9))[_0xf5b5('0x43')](handleError(_0xfcf16e,null));};exports[_0xf5b5('0x22')]=function(_0x414fce,_0x51c401){if(_0x414fce[_0xf5b5('0x49')]['id']){delete _0x414fce[_0xf5b5('0x49')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x414fce[_0xf5b5('0x45')]['id']}})[_0xf5b5('0x23')](handleEntityNotFound(_0x51c401,null))['then'](saveUpdates(_0x414fce[_0xf5b5('0x49')],null))[_0xf5b5('0x23')](respondWithResult(_0x51c401,null))['catch'](handleError(_0x51c401,null));};exports[_0xf5b5('0x24')]=function(_0x16db96,_0x32a079){return db['ServicenowField'][_0xf5b5('0x4a')]({'where':{'id':_0x16db96['params']['id']}})[_0xf5b5('0x23')](handleEntityNotFound(_0x32a079,null))[_0xf5b5('0x23')](removeEntity(_0x32a079,null))['catch'](handleError(_0x32a079,null));};
\ No newline at end of file