Built motion from commit (unavailable).|2.5.14
[motion2.git] / server / api / openchannelQueueReport / openchannelQueueReport.controller.js
index df4a870..18bfe39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd8=['findAll','rows','catch','show','keys','rawAttributes','find','create','body','update','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','OpenchannelQueueReport','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include'];(function(_0x4c6d6f,_0x291557){var _0x2d4478=function(_0x106946){while(--_0x106946){_0x4c6d6f['push'](_0x4c6d6f['shift']());}};_0x2d4478(++_0x291557);}(_0x5cd8,0x1d2));var _0x85cd=function(_0x3f4d9c,_0x99d4c1){_0x3f4d9c=_0x3f4d9c-0x0;var _0x29b81b=_0x5cd8[_0x3f4d9c];return _0x29b81b;};'use strict';var pdf=require(_0x85cd('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x85cd('0x1'));var zipdir=require(_0x85cd('0x2'));var jsonpatch=require(_0x85cd('0x3'));var rp=require(_0x85cd('0x4'));var moment=require('moment');var BPromise=require(_0x85cd('0x5'));var Mustache=require('mustache');var util=require(_0x85cd('0x6'));var path=require(_0x85cd('0x7'));var sox=require(_0x85cd('0x8'));var csv=require(_0x85cd('0x9'));var ejs=require(_0x85cd('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x85cd('0xb'));var crypto=require(_0x85cd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x85cd('0xd'));var toCsv=require(_0x85cd('0x9'));var querystring=require(_0x85cd('0xe'));var Papa=require(_0x85cd('0xf'));var Redis=require(_0x85cd('0x10'));var authService=require(_0x85cd('0x11'));var qs=require(_0x85cd('0x12'));var as=require(_0x85cd('0x13'));var hardwareService=require(_0x85cd('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x85cd('0x15'));var config=require(_0x85cd('0x16'));var licenseUtil=require(_0x85cd('0x17'));var db=require(_0x85cd('0x18'))['db'];function respondWithStatusCode(_0x4f054b,_0x3c3ffe){_0x3c3ffe=_0x3c3ffe||0xcc;return function(_0x398f7c){if(_0x398f7c){return _0x4f054b[_0x85cd('0x19')](_0x3c3ffe);}return _0x4f054b[_0x85cd('0x1a')](_0x3c3ffe)[_0x85cd('0x1b')]();};}function respondWithResult(_0x3639c2,_0x58c13e){_0x58c13e=_0x58c13e||0xc8;return function(_0x3d4c54){if(_0x3d4c54){return _0x3639c2['status'](_0x58c13e)[_0x85cd('0x1c')](_0x3d4c54);}};}function respondWithFilteredResult(_0x3e5e89,_0x208490){return function(_0x424a01){if(_0x424a01){var _0xedc03b=_0x424a01[_0x85cd('0x1d')],_0x5219ac=_0x208490['offset'],_0x441505=_0x208490[_0x85cd('0x1e')]+_0x208490['limit'],_0x5164e8;if(_0x441505>=_0xedc03b){_0x441505=_0xedc03b;_0x5164e8=0xc8;}else{_0x5164e8=0xce;}_0x3e5e89[_0x85cd('0x1a')](_0x5164e8);return _0x3e5e89[_0x85cd('0x1f')](_0x85cd('0x20'),_0x5219ac+'-'+_0x441505+'/'+_0xedc03b)[_0x85cd('0x1c')](_0x424a01);}return null;};}function patchUpdates(_0x23695f){return function(_0x1123c0){try{jsonpatch[_0x85cd('0x21')](_0x1123c0,_0x23695f,!![]);}catch(_0x44ba80){return BPromise['reject'](_0x44ba80);}return _0x1123c0[_0x85cd('0x22')]();};}function saveUpdates(_0x425779,_0x5bb4cc){return function(_0x490bbb){if(_0x490bbb){return _0x490bbb['update'](_0x425779)['then'](function(_0x254bc5){return _0x254bc5;});}return null;};}function removeEntity(_0x597e6e,_0x3cf6c6){return function(_0x2385e7){if(_0x2385e7){return _0x2385e7[_0x85cd('0x23')]()[_0x85cd('0x24')](function(){_0x597e6e['status'](0xcc)[_0x85cd('0x1b')]();});}};}function handleEntityNotFound(_0x2b00a8,_0x358202){return function(_0x1e5b87){if(!_0x1e5b87){_0x2b00a8[_0x85cd('0x19')](0x194);}return _0x1e5b87;};}function handleError(_0x37646b,_0x4c825c){_0x4c825c=_0x4c825c||0x1f4;return function(_0xb3500f){logger[_0x85cd('0x25')](_0xb3500f[_0x85cd('0x26')]);if(_0xb3500f[_0x85cd('0x27')]){delete _0xb3500f['name'];}_0x37646b[_0x85cd('0x1a')](_0x4c825c)[_0x85cd('0x28')](_0xb3500f);};}exports[_0x85cd('0x29')]=function(_0x5a58a0,_0x48e80d){var _0x2ea68b={},_0x53b51a={},_0x1c6db6={'count':0x0,'rows':[]};var _0x1f36ad=_[_0x85cd('0x2a')](db[_0x85cd('0x2b')]['rawAttributes'],function(_0x225802){return{'name':_0x225802[_0x85cd('0x2c')],'type':_0x225802[_0x85cd('0x2d')][_0x85cd('0x2e')]};});_0x53b51a['model']=_[_0x85cd('0x2a')](_0x1f36ad,_0x85cd('0x27'));_0x53b51a[_0x85cd('0x2f')]=_['keys'](_0x5a58a0['query']);_0x53b51a[_0x85cd('0x30')]=_[_0x85cd('0x31')](_0x53b51a[_0x85cd('0x32')],_0x53b51a[_0x85cd('0x2f')]);_0x2ea68b[_0x85cd('0x33')]=_[_0x85cd('0x31')](_0x53b51a[_0x85cd('0x32')],qs[_0x85cd('0x34')](_0x5a58a0['query'][_0x85cd('0x34')]));_0x2ea68b[_0x85cd('0x33')]=_0x2ea68b[_0x85cd('0x33')][_0x85cd('0x35')]?_0x2ea68b['attributes']:_0x53b51a[_0x85cd('0x32')];if(!_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x36')](_0x85cd('0x37'))){_0x2ea68b[_0x85cd('0x38')]=qs['limit'](_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x38')]);_0x2ea68b['offset']=qs[_0x85cd('0x1e')](_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x1e')]);}_0x2ea68b['order']=qs['sort'](_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x39')]);_0x2ea68b['where']=qs['filters'](_[_0x85cd('0x3a')](_0x5a58a0['query'],_0x53b51a['filters']),_0x1f36ad);if(_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x3b')]){_0x2ea68b[_0x85cd('0x3c')]=_[_0x85cd('0x3d')](_0x2ea68b[_0x85cd('0x3c')],{'$or':_[_0x85cd('0x2a')](_0x1f36ad,function(_0x28a42d){if(_0x28a42d[_0x85cd('0x2d')]!==_0x85cd('0x3e')){var _0x1589bb={};_0x1589bb[_0x28a42d[_0x85cd('0x27')]]={'$like':'%'+_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x3b')]+'%'};return _0x1589bb;}})});}_0x2ea68b=_[_0x85cd('0x3d')]({},_0x2ea68b,_0x5a58a0[_0x85cd('0x3f')]);var _0x4d16bf={'where':_0x2ea68b[_0x85cd('0x3c')]};return db[_0x85cd('0x2b')][_0x85cd('0x1d')](_0x4d16bf)[_0x85cd('0x24')](function(_0x38ecf5){_0x1c6db6[_0x85cd('0x1d')]=_0x38ecf5;if(_0x5a58a0[_0x85cd('0x2f')][_0x85cd('0x40')]){_0x2ea68b[_0x85cd('0x41')]=[{'all':!![]}];}return db[_0x85cd('0x2b')][_0x85cd('0x42')](_0x2ea68b);})['then'](function(_0x5c585c){_0x1c6db6[_0x85cd('0x43')]=_0x5c585c;return _0x1c6db6;})[_0x85cd('0x24')](respondWithFilteredResult(_0x48e80d,_0x2ea68b))[_0x85cd('0x44')](handleError(_0x48e80d,null));};exports[_0x85cd('0x45')]=function(_0x5946c3,_0x324626){var _0x395919={'raw':!![],'where':{'id':_0x5946c3['params']['id']}},_0x2b97a6={};_0x2b97a6[_0x85cd('0x32')]=_[_0x85cd('0x46')](db[_0x85cd('0x2b')][_0x85cd('0x47')]);_0x2b97a6[_0x85cd('0x2f')]=_[_0x85cd('0x46')](_0x5946c3['query']);_0x2b97a6['filters']=_[_0x85cd('0x31')](_0x2b97a6[_0x85cd('0x32')],_0x2b97a6[_0x85cd('0x2f')]);_0x395919['attributes']=_[_0x85cd('0x31')](_0x2b97a6[_0x85cd('0x32')],qs[_0x85cd('0x34')](_0x5946c3['query'][_0x85cd('0x34')]));_0x395919['attributes']=_0x395919['attributes'][_0x85cd('0x35')]?_0x395919[_0x85cd('0x33')]:_0x2b97a6[_0x85cd('0x32')];if(_0x5946c3[_0x85cd('0x2f')][_0x85cd('0x40')]){_0x395919[_0x85cd('0x41')]=[{'all':!![]}];}_0x395919=_['merge']({},_0x395919,_0x5946c3[_0x85cd('0x3f')]);return db[_0x85cd('0x2b')][_0x85cd('0x48')](_0x395919)[_0x85cd('0x24')](handleEntityNotFound(_0x324626,null))[_0x85cd('0x24')](respondWithResult(_0x324626,null))[_0x85cd('0x44')](handleError(_0x324626,null));};exports[_0x85cd('0x49')]=function(_0x6622eb,_0x511b2a){return db['OpenchannelQueueReport'][_0x85cd('0x49')](_0x6622eb[_0x85cd('0x4a')],{})[_0x85cd('0x24')](respondWithResult(_0x511b2a,0xc9))[_0x85cd('0x44')](handleError(_0x511b2a,null));};exports[_0x85cd('0x4b')]=function(_0x172a25,_0x58dffa){if(_0x172a25[_0x85cd('0x4a')]['id']){delete _0x172a25[_0x85cd('0x4a')]['id'];}return db[_0x85cd('0x2b')]['find']({'where':{'id':_0x172a25['params']['id']}})['then'](handleEntityNotFound(_0x58dffa,null))['then'](saveUpdates(_0x172a25['body'],null))[_0x85cd('0x24')](respondWithResult(_0x58dffa,null))['catch'](handleError(_0x58dffa,null));};exports['destroy']=function(_0x5ca77c,_0x38ef4e){return db[_0x85cd('0x2b')][_0x85cd('0x48')]({'where':{'id':_0x5ca77c['params']['id']}})[_0x85cd('0x24')](handleEntityNotFound(_0x38ef4e,null))[_0x85cd('0x24')](removeEntity(_0x38ef4e,null))['catch'](handleError(_0x38ef4e,null));};exports['describe']=function(_0x250f50,_0x47f98d){return db[_0x85cd('0x2b')]['describe']()[_0x85cd('0x24')](respondWithResult(_0x47f98d,null))[_0x85cd('0x44')](handleError(_0x47f98d,null));};
\ No newline at end of file
+var _0x2060=['hasOwnProperty','limit','order','where','pick','merge','type','VIRTUAL','options','count','includeAll','rows','catch','params','rawAttributes','find','create','body','destroy','describe','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','set','Content-Range','apply','reject','save','update','then','status','error','name','send','index','map','OpenchannelQueueReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0x2060,0x1be));var _0x0206=function(_0xfc4566,_0x4635e9){_0xfc4566=_0xfc4566-0x0;var _0x133923=_0x2060[_0xfc4566];return _0x133923;};'use strict';var pdf=require(_0x0206('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0206('0x1'));var zipdir=require(_0x0206('0x2'));var jsonpatch=require(_0x0206('0x3'));var rp=require(_0x0206('0x4'));var moment=require('moment');var BPromise=require(_0x0206('0x5'));var Mustache=require(_0x0206('0x6'));var util=require('util');var path=require(_0x0206('0x7'));var sox=require('sox');var csv=require(_0x0206('0x8'));var ejs=require(_0x0206('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0x0206('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0206('0xb'));var toCsv=require(_0x0206('0x8'));var querystring=require(_0x0206('0xc'));var Papa=require(_0x0206('0xd'));var Redis=require(_0x0206('0xe'));var authService=require(_0x0206('0xf'));var qs=require(_0x0206('0x10'));var as=require(_0x0206('0x11'));var hardwareService=require(_0x0206('0x12'));var logger=require(_0x0206('0x13'))(_0x0206('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0206('0x15'));var db=require(_0x0206('0x16'))['db'];function respondWithStatusCode(_0x58cef1,_0x3e7cc1){_0x3e7cc1=_0x3e7cc1||0xcc;return function(_0x3d4bb6){if(_0x3d4bb6){return _0x58cef1[_0x0206('0x17')](_0x3e7cc1);}return _0x58cef1['status'](_0x3e7cc1)[_0x0206('0x18')]();};}function respondWithResult(_0x430327,_0x1838e0){_0x1838e0=_0x1838e0||0xc8;return function(_0x46acdb){if(_0x46acdb){return _0x430327['status'](_0x1838e0)[_0x0206('0x19')](_0x46acdb);}};}function respondWithFilteredResult(_0x4bedf9,_0x1370bd){return function(_0x1ac4b0){if(_0x1ac4b0){var _0x41a062=_0x1ac4b0['count'],_0x11bc7f=_0x1370bd['offset'],_0x1c1771=_0x1370bd[_0x0206('0x1a')]+_0x1370bd['limit'],_0x26c261;if(_0x1c1771>=_0x41a062){_0x1c1771=_0x41a062;_0x26c261=0xc8;}else{_0x26c261=0xce;}_0x4bedf9['status'](_0x26c261);return _0x4bedf9[_0x0206('0x1b')](_0x0206('0x1c'),_0x11bc7f+'-'+_0x1c1771+'/'+_0x41a062)[_0x0206('0x19')](_0x1ac4b0);}return null;};}function patchUpdates(_0x1bed63){return function(_0x5540e4){try{jsonpatch[_0x0206('0x1d')](_0x5540e4,_0x1bed63,!![]);}catch(_0x43ad08){return BPromise[_0x0206('0x1e')](_0x43ad08);}return _0x5540e4[_0x0206('0x1f')]();};}function saveUpdates(_0x3c189c,_0x41aa22){return function(_0x7ee5a2){if(_0x7ee5a2){return _0x7ee5a2[_0x0206('0x20')](_0x3c189c)['then'](function(_0x5ea4f){return _0x5ea4f;});}return null;};}function removeEntity(_0x5da8a4,_0x5cc687){return function(_0x2a37c7){if(_0x2a37c7){return _0x2a37c7['destroy']()[_0x0206('0x21')](function(){_0x5da8a4[_0x0206('0x22')](0xcc)[_0x0206('0x18')]();});}};}function handleEntityNotFound(_0x4c5452,_0x399f38){return function(_0x1c8ee9){if(!_0x1c8ee9){_0x4c5452[_0x0206('0x17')](0x194);}return _0x1c8ee9;};}function handleError(_0x4c5027,_0x487019){_0x487019=_0x487019||0x1f4;return function(_0x3b9890){logger[_0x0206('0x23')](_0x3b9890['stack']);if(_0x3b9890[_0x0206('0x24')]){delete _0x3b9890[_0x0206('0x24')];}_0x4c5027[_0x0206('0x22')](_0x487019)[_0x0206('0x25')](_0x3b9890);};}exports[_0x0206('0x26')]=function(_0x519a0a,_0x847866){var _0x18513c={},_0xe29e8d={},_0x5ec89c={'count':0x0,'rows':[]};var _0x29405f=_[_0x0206('0x27')](db[_0x0206('0x28')]['rawAttributes'],function(_0xe6320c){return{'name':_0xe6320c[_0x0206('0x29')],'type':_0xe6320c['type'][_0x0206('0x2a')]};});_0xe29e8d[_0x0206('0x2b')]=_[_0x0206('0x27')](_0x29405f,'name');_0xe29e8d[_0x0206('0x2c')]=_[_0x0206('0x2d')](_0x519a0a[_0x0206('0x2c')]);_0xe29e8d[_0x0206('0x2e')]=_[_0x0206('0x2f')](_0xe29e8d[_0x0206('0x2b')],_0xe29e8d[_0x0206('0x2c')]);_0x18513c[_0x0206('0x30')]=_[_0x0206('0x2f')](_0xe29e8d[_0x0206('0x2b')],qs[_0x0206('0x31')](_0x519a0a['query']['fields']));_0x18513c[_0x0206('0x30')]=_0x18513c[_0x0206('0x30')][_0x0206('0x32')]?_0x18513c[_0x0206('0x30')]:_0xe29e8d[_0x0206('0x2b')];if(!_0x519a0a[_0x0206('0x2c')][_0x0206('0x33')]('nolimit')){_0x18513c[_0x0206('0x34')]=qs[_0x0206('0x34')](_0x519a0a[_0x0206('0x2c')][_0x0206('0x34')]);_0x18513c[_0x0206('0x1a')]=qs['offset'](_0x519a0a[_0x0206('0x2c')][_0x0206('0x1a')]);}_0x18513c[_0x0206('0x35')]=qs['sort'](_0x519a0a[_0x0206('0x2c')]['sort']);_0x18513c[_0x0206('0x36')]=qs[_0x0206('0x2e')](_[_0x0206('0x37')](_0x519a0a['query'],_0xe29e8d[_0x0206('0x2e')]),_0x29405f);if(_0x519a0a[_0x0206('0x2c')]['filter']){_0x18513c['where']=_[_0x0206('0x38')](_0x18513c[_0x0206('0x36')],{'$or':_[_0x0206('0x27')](_0x29405f,function(_0x34944c){if(_0x34944c[_0x0206('0x39')]!==_0x0206('0x3a')){var _0x4faa92={};_0x4faa92[_0x34944c[_0x0206('0x24')]]={'$like':'%'+_0x519a0a[_0x0206('0x2c')]['filter']+'%'};return _0x4faa92;}})});}_0x18513c=_['merge']({},_0x18513c,_0x519a0a[_0x0206('0x3b')]);var _0x28c8dc={'where':_0x18513c[_0x0206('0x36')]};return db[_0x0206('0x28')][_0x0206('0x3c')](_0x28c8dc)[_0x0206('0x21')](function(_0x41601e){_0x5ec89c[_0x0206('0x3c')]=_0x41601e;if(_0x519a0a['query'][_0x0206('0x3d')]){_0x18513c['include']=[{'all':!![]}];}return db[_0x0206('0x28')]['findAll'](_0x18513c);})[_0x0206('0x21')](function(_0x3297e7){_0x5ec89c[_0x0206('0x3e')]=_0x3297e7;return _0x5ec89c;})[_0x0206('0x21')](respondWithFilteredResult(_0x847866,_0x18513c))[_0x0206('0x3f')](handleError(_0x847866,null));};exports['show']=function(_0x3d70ae,_0x25c382){var _0x5574e5={'raw':!![],'where':{'id':_0x3d70ae[_0x0206('0x40')]['id']}},_0x1afd1f={};_0x1afd1f[_0x0206('0x2b')]=_[_0x0206('0x2d')](db[_0x0206('0x28')][_0x0206('0x41')]);_0x1afd1f[_0x0206('0x2c')]=_[_0x0206('0x2d')](_0x3d70ae[_0x0206('0x2c')]);_0x1afd1f[_0x0206('0x2e')]=_['intersection'](_0x1afd1f[_0x0206('0x2b')],_0x1afd1f[_0x0206('0x2c')]);_0x5574e5[_0x0206('0x30')]=_[_0x0206('0x2f')](_0x1afd1f[_0x0206('0x2b')],qs[_0x0206('0x31')](_0x3d70ae['query'][_0x0206('0x31')]));_0x5574e5[_0x0206('0x30')]=_0x5574e5[_0x0206('0x30')][_0x0206('0x32')]?_0x5574e5[_0x0206('0x30')]:_0x1afd1f[_0x0206('0x2b')];if(_0x3d70ae['query']['includeAll']){_0x5574e5['include']=[{'all':!![]}];}_0x5574e5=_[_0x0206('0x38')]({},_0x5574e5,_0x3d70ae[_0x0206('0x3b')]);return db[_0x0206('0x28')][_0x0206('0x42')](_0x5574e5)[_0x0206('0x21')](handleEntityNotFound(_0x25c382,null))[_0x0206('0x21')](respondWithResult(_0x25c382,null))[_0x0206('0x3f')](handleError(_0x25c382,null));};exports[_0x0206('0x43')]=function(_0x41bdf2,_0x174d40){return db[_0x0206('0x28')]['create'](_0x41bdf2[_0x0206('0x44')],{})[_0x0206('0x21')](respondWithResult(_0x174d40,0xc9))['catch'](handleError(_0x174d40,null));};exports[_0x0206('0x20')]=function(_0xb17d9f,_0x37f389){if(_0xb17d9f['body']['id']){delete _0xb17d9f['body']['id'];}return db[_0x0206('0x28')][_0x0206('0x42')]({'where':{'id':_0xb17d9f[_0x0206('0x40')]['id']}})[_0x0206('0x21')](handleEntityNotFound(_0x37f389,null))['then'](saveUpdates(_0xb17d9f[_0x0206('0x44')],null))[_0x0206('0x21')](respondWithResult(_0x37f389,null))[_0x0206('0x3f')](handleError(_0x37f389,null));};exports[_0x0206('0x45')]=function(_0xd7176a,_0x1c4ee2){return db[_0x0206('0x28')][_0x0206('0x42')]({'where':{'id':_0xd7176a[_0x0206('0x40')]['id']}})[_0x0206('0x21')](handleEntityNotFound(_0x1c4ee2,null))['then'](removeEntity(_0x1c4ee2,null))[_0x0206('0x3f')](handleError(_0x1c4ee2,null));};exports[_0x0206('0x46')]=function(_0x272996,_0xa4dc5a){return db[_0x0206('0x28')][_0x0206('0x46')]()[_0x0206('0x21')](respondWithResult(_0xa4dc5a,null))['catch'](handleError(_0xa4dc5a,null));};
\ No newline at end of file