UNPKG

@strato-automation/node-red-contrib-strato-automation

Version:
1 lines 24.5 kB
'use strict';const a12_0x4770cf=a12_0x39b6;(function(_0x27da33,_0x513454){const _0x1c6729=a12_0x39b6,_0x708e95=_0x27da33();while(!![]){try{const _0x295e43=parseInt(_0x1c6729(0x160))/0x1+parseInt(_0x1c6729(0x172))/0x2*(parseInt(_0x1c6729(0x1ca))/0x3)+-parseInt(_0x1c6729(0x1b7))/0x4+-parseInt(_0x1c6729(0x198))/0x5*(-parseInt(_0x1c6729(0x1a6))/0x6)+-parseInt(_0x1c6729(0x15b))/0x7*(-parseInt(_0x1c6729(0x178))/0x8)+parseInt(_0x1c6729(0x174))/0x9+-parseInt(_0x1c6729(0x163))/0xa;if(_0x295e43===_0x513454)break;else _0x708e95['push'](_0x708e95['shift']());}catch(_0x5bd75f){_0x708e95['push'](_0x708e95['shift']());}}}(a12_0x190c,0x26221));const https=require(a12_0x4770cf(0x16f)),{URL}=require(a12_0x4770cf(0x1c5)),EventEmitter=require(a12_0x4770cf(0x1a9)),MIN_REFRESH_INTERVAL_MS=0x1388,DEFAULT_FETCH_TIMEOUT_MS=0x3a98,sharedHttpsAgent=new https[(a12_0x4770cf(0x189))]({'keepAlive':!![],'maxSockets':0x32,'maxFreeSockets':0xa,'timeout':0xea60}),TYPE_ABBR={0x0:'AI',0x1:'AO',0x2:'AV',0x3:'BI',0x4:'BO',0x5:'BV',0xc:'MI',0xd:'MO',0xe:'MV',0x13:a12_0x4770cf(0x148)},ABBR_TO_NUM={'AI':0x0,'AO':0x1,'AV':0x2,'BI':0x3,'BO':0x4,'BV':0x5,'MI':0xc,'MO':0xd,'MV':0xe,'MSV':0x13},KNOWN_OBJECT_ABBREVIATIONS=new Set(Object[a12_0x4770cf(0x14c)](TYPE_ABBR)[a12_0x4770cf(0x1c9)](_0x293a30=>String(_0x293a30))),globalDeviceContextProviderSet=new Set();function simplifyTypeToNum(_0x12a688){const _0x44b23a=a12_0x4770cf;if(typeof _0x12a688==='number')return _0x12a688;if(typeof _0x12a688==='string'){const _0xa9c794=_0x12a688[_0x44b23a(0x16e)]()['toUpperCase']();if(/^\d+$/[_0x44b23a(0x181)](_0xa9c794))return+_0xa9c794;if(ABBR_TO_NUM[_0xa9c794]!=null)return ABBR_TO_NUM[_0xa9c794];}return _0x12a688;}function typeName(_0x37eedc){return TYPE_ABBR[_0x37eedc]!=null?TYPE_ABBR[_0x37eedc]:String(_0x37eedc);}function buildObjectIndexEntry(_0x32dfc0){const _0x4050a6=a12_0x4770cf,_0x54786b=simplifyTypeToNum(_0x32dfc0[_0x4050a6(0x149)]),_0x21055b=_0x32dfc0['objectInstance'],_0x2d21ee={'objectType':_0x54786b,'objectTypeName':typeName(_0x54786b),'objectInstance':_0x21055b,'objectName':_0x32dfc0['objectName']||'','description':_0x32dfc0[_0x4050a6(0x1af)]||'','units':_0x32dfc0[_0x4050a6(0x1c3)]||'','presentValue':_0x32dfc0[_0x4050a6(0x1bc)]};if(_0x32dfc0&&typeof _0x32dfc0===_0x4050a6(0x151)){const _0x14e5b9={..._0x32dfc0};delete _0x14e5b9['objectType'],delete _0x14e5b9[_0x4050a6(0x17c)],Object[_0x4050a6(0x16d)](_0x2d21ee,_0x14e5b9);}return _0x2d21ee;}function a12_0x39b6(_0x71a36f,_0x36fa36){_0x71a36f=_0x71a36f-0x144;const _0x190cfe=a12_0x190c();let _0x39b6ac=_0x190cfe[_0x71a36f];return _0x39b6ac;}function normalizeControllerDevice(_0x44e39f){const _0x349ab0=a12_0x4770cf;if(!_0x44e39f||_0x44e39f[_0x349ab0(0x1cf)]==null)return null;const _0x4c8d16=_0x44e39f[_0x349ab0(0x1ad)]??(_0x44e39f[_0x349ab0(0x167)]&&_0x44e39f[_0x349ab0(0x167)]['net'])??null,_0x4acd4a=_0x44e39f[_0x349ab0(0x1cf)],_0x4d32f4=[],_0x256c2e=new Map(),_0x3faa17=Array[_0x349ab0(0x156)](_0x44e39f[_0x349ab0(0x18b)])?_0x44e39f[_0x349ab0(0x18b)]:[];for(const _0x25677f of _0x3faa17){const _0xd83218=buildObjectIndexEntry(_0x25677f),_0xc9942a=String(_0xd83218[_0x349ab0(0x149)])+'|'+String(_0xd83218['objectInstance']);_0x256c2e['set'](_0xc9942a,_0xd83218),_0x4d32f4[_0x349ab0(0x1c8)](_0xd83218);}_0x4d32f4[_0x349ab0(0x1ac)]((_0x902f90,_0x973b2a)=>_0x902f90[_0x349ab0(0x149)]!==_0x973b2a[_0x349ab0(0x149)]?_0x902f90[_0x349ab0(0x149)]-_0x973b2a[_0x349ab0(0x149)]:_0x902f90[_0x349ab0(0x17c)]-_0x973b2a['objectInstance']);const _0x4bd90a=_0x44e39f['address']?{'net':_0x44e39f[_0x349ab0(0x167)][_0x349ab0(0x161)],'adr':_0x44e39f[_0x349ab0(0x167)]['adr'],'VMac':_0x44e39f['address']['VMac']}:null;return{'key':String(_0x4c8d16??'')+':'+String(_0x4acd4a),'deviceInstance':_0x4acd4a,'networkNumber':_0x4c8d16,'deviceName':_0x44e39f[_0x349ab0(0x1ae)]??_0x44e39f[_0x349ab0(0x1b1)]??_0x44e39f[_0x349ab0(0x17d)]??'','modelName':_0x44e39f['modelName']??'','description':_0x44e39f[_0x349ab0(0x1af)]??'','address':_0x4bd90a,'vendorId':_0x44e39f[_0x349ab0(0x190)]??null,'thirdParty':_0x44e39f['vendorId']!=null?Number(_0x44e39f[_0x349ab0(0x190)])!==0xd5:![],'isOnline':_0x44e39f['isOnline']===!![],'objects':_0x4d32f4,'objByKey':_0x256c2e,'raw':_0x44e39f};}function createControllerSummary(_0x2c4c94){const _0x4239f3=a12_0x4770cf;return{'deviceInstance':_0x2c4c94['deviceInstance'],'networkNumber':_0x2c4c94[_0x4239f3(0x1b3)],'deviceName':_0x2c4c94[_0x4239f3(0x17d)],'modelName':_0x2c4c94['modelName'],'description':_0x2c4c94[_0x4239f3(0x1af)],'address':_0x2c4c94[_0x4239f3(0x167)]?JSON[_0x4239f3(0x18f)](_0x2c4c94['address']):'','vendorId':_0x2c4c94[_0x4239f3(0x190)],'thirdParty':_0x2c4c94[_0x4239f3(0x1b4)],'isOnline':_0x2c4c94[_0x4239f3(0x199)]===!![]};}function fetchBacnetDevices(_0x227e52,_0x1c127b,_0x4db491){return new Promise((_0x2d2bd5,_0x47df2e)=>{const _0x5a08c5=a12_0x39b6;if(!_0x227e52||!_0x1c127b){_0x47df2e(new Error(_0x5a08c5(0x171)));return;}const _0x315a5c=new URL(_0x5a08c5(0x1be)+_0x227e52+'/api/v1/bacnet/connections/Devices/'),_0x575d3a={'protocol':_0x315a5c['protocol'],'hostname':_0x315a5c['hostname'],'port':_0x315a5c[_0x5a08c5(0x1ba)]||0x1bb,'path':_0x315a5c[_0x5a08c5(0x177)]+(_0x315a5c[_0x5a08c5(0x146)]||''),'method':'GET','headers':{'Authorization':_0x5a08c5(0x1b5)+_0x1c127b,'Accept':_0x5a08c5(0x186)},'agent':sharedHttpsAgent},_0x1dab4e=https[_0x5a08c5(0x17a)](_0x575d3a,_0x1f4c8e=>{const _0xe490f5=_0x5a08c5;let _0x5a0705='';_0x1f4c8e['on']('data',_0x2e6c91=>{_0x5a0705+=_0x2e6c91;}),_0x1f4c8e['on'](_0xe490f5(0x1a1),()=>{const _0xc37af1=_0xe490f5;if(_0x1f4c8e[_0xc37af1(0x166)]>=0xc8&&_0x1f4c8e[_0xc37af1(0x166)]<0x12c)try{const _0x5bcd58=JSON[_0xc37af1(0x170)](_0x5a0705);_0x2d2bd5(_0x5bcd58);}catch(_0x5ef6bf){_0x47df2e(new Error(_0xc37af1(0x1c4)));}else _0x1f4c8e['statusCode']===0x191||_0x1f4c8e[_0xc37af1(0x166)]===0x193?_0x47df2e(Object[_0xc37af1(0x16d)](new Error(_0xc37af1(0x1c7)),{'code':_0x1f4c8e[_0xc37af1(0x166)]})):_0x47df2e(Object[_0xc37af1(0x16d)](new Error(_0xc37af1(0x1a4)+_0x1f4c8e[_0xc37af1(0x166)]),{'code':_0x1f4c8e[_0xc37af1(0x166)]}));});}),_0x3028c8=_0x4db491&&Number(_0x4db491[_0x5a08c5(0x18a)])||DEFAULT_FETCH_TIMEOUT_MS,_0x5a783a=_0x1dab4e['setTimeout'](_0x3028c8,()=>{const _0x36252b=_0x5a08c5,_0x5f2ae4=Object[_0x36252b(0x16d)](new Error(_0x36252b(0x162)),{'code':'ETIMEDOUT'});_0x1dab4e[_0x36252b(0x144)](_0x5f2ae4),_0x1dab4e['removeAllListeners']();});_0x1dab4e['on'](_0x5a08c5(0x1bd),_0x122cea=>{const _0x2937f2=_0x5a08c5;clearTimeout(_0x5a783a);const _0x57454d=_0x122cea&&_0x122cea[_0x2937f2(0x187)],_0x4aeefe=_0x122cea&&_0x122cea[_0x2937f2(0x1a0)];let _0x1c15ae=_0x122cea;if(_0x57454d==='ECONNREFUSED'||_0x57454d===_0x2937f2(0x175))_0x1c15ae=Object[_0x2937f2(0x16d)](new Error(_0x2937f2(0x1a3)+_0x227e52+_0x2937f2(0x145)),{'code':_0x57454d,'originalError':_0x122cea});else{if(_0x57454d==='ETIMEDOUT'||_0x57454d==='ESOCKETTIMEDOUT')_0x1c15ae=Object[_0x2937f2(0x16d)](new Error(_0x2937f2(0x19b)+_0x227e52+_0x2937f2(0x1c0)),{'code':_0x57454d,'originalError':_0x122cea});else(_0x57454d==='CERT_HAS_EXPIRED'||_0x57454d===_0x2937f2(0x196))&&(_0x1c15ae=Object[_0x2937f2(0x16d)](new Error(_0x2937f2(0x1c6)+_0x227e52+'.\x20Check\x20SSL\x20certificate\x20configuration.'),{'code':_0x57454d,'originalError':_0x122cea}));}_0x1dab4e['removeAllListeners'](),_0x47df2e(_0x1c15ae);}),_0x1dab4e['on'](_0x5a08c5(0x19c),()=>{clearTimeout(_0x5a783a);}),_0x1dab4e['end']();});}function a12_0x190c(){const _0x3ae497=['refCount','test','invalid\x20devices\x20payload','findController','ocn_ip','findObjectByGuid','application/json','code','applyDevices','Agent','timeoutMs','objects','controllersByKey','no\x20watcher','concat','stringify','vendorId','typeName','get','emit','toCacheShape','function','UNABLE_TO_VERIFY_LEAF_SIGNATURE','lastFetchedAt','5BumCqX','isOnline','configWatchers','Connection\x20timeout\x20to\x20OCN\x20server\x20at\x20','response','registration','unregisterController','intervalMs','message','end','controllersByDI','Cannot\x20connect\x20to\x20OCN\x20server\x20at\x20','HTTP\x20','watcher','89706BqFbrM','getSummary','lastError','events','now','delete','sort','network','objectName','description','length','modelName','getObjects','networkNumber','thirdParty','Bearer\x20','refreshPromise','491412rFLsod','getCacheForConfig','missing-credentials','port','releaseWatcher','presentValue','error','https://','TYPE_ABBR','.\x20Check\x20network\x20connectivity.','acquireConfig','getControllersForConfig','units','Invalid\x20JSON','node:url','SSL\x20certificate\x20error\x20for\x20OCN\x20server\x20at\x20','Unauthorized','push','map','351mVhfIj','setCredentialsProvider','forEach','setIntervalMs','registerGlobalDeviceContextProvider','deviceInstance','ABBR_TO_NUM','destroy','.\x20Check\x20if\x20the\x20server\x20is\x20running\x20and\x20the\x20IP\x20address\x20is\x20correct.','search','listControllersFull','MSV','objectType','max','getWatcherForConfig','values','configId','addRef','lastErrorCode','timer','object','api_token','getUnionControllersByDI','filter','key','isArray','objByKey','lookupControllerByGuid','keys','set','858137eVaOsp','exports','stop','size','refresh','296830DqWVSg','net','timeout','4854520hzjcgi','releaseRef','catch','statusCode','address','lastAttemptAt','has','_hub','from','devices','assign','trim','node:https','parse','missing\x20credentials','2862ZlHcEJ','findObject','360972EKpuhs','ENOTFOUND','finally','pathname','16RzymAS','guid','request','getCredentials','objectInstance','deviceName','getWatcher','controllerRegs'];a12_0x190c=function(){return _0x3ae497;};return a12_0x190c();}class BacnetConfigWatcher extends EventEmitter{constructor(_0xb0eabc,_0x231924,_0x68ed48,_0x1afda6){const _0x1f021e=a12_0x4770cf;super(),this[_0x1f021e(0x14d)]=_0xb0eabc,this[_0x1f021e(0x16a)]=_0x1afda6||null,this[_0x1f021e(0x17b)]=typeof _0x231924===_0x1f021e(0x195)?_0x231924:()=>null,this[_0x1f021e(0x19f)]=Math[_0x1f021e(0x14a)](Number(_0x68ed48&&_0x68ed48[_0x1f021e(0x19f)])||0x7530,MIN_REFRESH_INTERVAL_MS),this['timer']=null,this[_0x1f021e(0x180)]=0x0,this[_0x1f021e(0x197)]=0x0,this[_0x1f021e(0x168)]=0x0,this['lastError']=null,this[_0x1f021e(0x14f)]=null,this[_0x1f021e(0x1b6)]=null,this[_0x1f021e(0x18c)]=new Map(),this['controllersByDI']=new Map();}[a12_0x4770cf(0x1cb)](_0x25a96a){const _0x4bd7cb=a12_0x4770cf;typeof _0x25a96a===_0x4bd7cb(0x195)&&(this[_0x4bd7cb(0x17b)]=_0x25a96a);}[a12_0x4770cf(0x1cd)](_0x2048b1){const _0x59b01c=a12_0x4770cf,_0x44d6c9=Math[_0x59b01c(0x14a)](Number(_0x2048b1)||this[_0x59b01c(0x19f)],MIN_REFRESH_INTERVAL_MS);if(this[_0x59b01c(0x19f)]===_0x44d6c9)return;this['intervalMs']=_0x44d6c9;}['addRef'](){const _0x4b4983=a12_0x4770cf;this[_0x4b4983(0x180)]+=0x1;}[a12_0x4770cf(0x164)](){const _0x529aa4=a12_0x4770cf;if(this['refCount']>0x0)this[_0x529aa4(0x180)]-=0x1;}['start'](){const _0x403d85=a12_0x4770cf;if(this[_0x403d85(0x150)])return;}[a12_0x4770cf(0x15d)](){const _0x556be8=a12_0x4770cf;this[_0x556be8(0x150)]&&(clearInterval(this[_0x556be8(0x150)]),this['timer']=null);}async['refresh'](){const _0x4d09cf=a12_0x4770cf;if(this['refreshPromise'])return this[_0x4d09cf(0x1b6)];return this[_0x4d09cf(0x1b6)]=(async()=>{const _0x71ba8f=_0x4d09cf;this[_0x71ba8f(0x168)]=Date[_0x71ba8f(0x1aa)]();const _0x385d15=this[_0x71ba8f(0x17b)]();if(!_0x385d15||!_0x385d15[_0x71ba8f(0x184)]||!_0x385d15[_0x71ba8f(0x152)]){this['lastError']=new Error(_0x71ba8f(0x171)),this[_0x71ba8f(0x14f)]=_0x71ba8f(0x1b9);return;}const _0x1b1251=await fetchBacnetDevices(_0x385d15[_0x71ba8f(0x184)],_0x385d15[_0x71ba8f(0x152)]);if(!Array[_0x71ba8f(0x156)](_0x1b1251)){this[_0x71ba8f(0x1a8)]=new Error(_0x71ba8f(0x182)),this[_0x71ba8f(0x14f)]='invalid-payload';return;}this[_0x71ba8f(0x188)](_0x1b1251),this[_0x71ba8f(0x1a8)]=null,this[_0x71ba8f(0x14f)]=null,this['lastFetchedAt']=Date['now'](),this[_0x71ba8f(0x193)]('update');})()[_0x4d09cf(0x165)](_0x2b0cf7=>{const _0x1b1d5b=_0x4d09cf;this[_0x1b1d5b(0x1a8)]=_0x2b0cf7,this[_0x1b1d5b(0x14f)]=_0x2b0cf7&&_0x2b0cf7[_0x1b1d5b(0x187)]!=null?_0x2b0cf7[_0x1b1d5b(0x187)]:null,this[_0x1b1d5b(0x193)](_0x1b1d5b(0x1bd),_0x2b0cf7);})[_0x4d09cf(0x176)](()=>{const _0x4e0352=_0x4d09cf;this[_0x4e0352(0x1b6)]=null;}),this['refreshPromise'];}[a12_0x4770cf(0x188)](_0x20da8f){const _0x3052dc=a12_0x4770cf,_0x133e8a=new Map(),_0x7b8c95=new Map();_0x20da8f[_0x3052dc(0x1cc)](_0x4dca7b=>{const _0x5d5772=_0x3052dc,_0x4755b7=normalizeControllerDevice(_0x4dca7b);if(!_0x4755b7)return;_0x133e8a[_0x5d5772(0x15a)](_0x4755b7[_0x5d5772(0x155)],_0x4755b7);const _0x4aec91=String(_0x4755b7['deviceInstance']);!_0x7b8c95[_0x5d5772(0x169)](_0x4aec91)&&_0x7b8c95['set'](_0x4aec91,[]),_0x7b8c95['get'](_0x4aec91)[_0x5d5772(0x1c8)](_0x4755b7);}),this[_0x3052dc(0x18c)]=_0x133e8a,this[_0x3052dc(0x1a2)]=_0x7b8c95;const _0x16ebd1=this['_hub']&&typeof this['_hub']['getUnionControllersByDI']===_0x3052dc(0x195)?this[_0x3052dc(0x16a)][_0x3052dc(0x153)]():this[_0x3052dc(0x1a2)];mergeControllerMetadataIntoGlobalDevices(_0x16ebd1);}['getSummary'](){const _0x51261c=a12_0x4770cf;return{'configId':this[_0x51261c(0x14d)],'lastFetchedAt':this[_0x51261c(0x197)],'lastAttemptAt':this['lastAttemptAt'],'lastError':this[_0x51261c(0x1a8)]?String(this['lastError'][_0x51261c(0x1a0)]||this[_0x51261c(0x1a8)]):null,'lastErrorCode':this[_0x51261c(0x14f)],'controllerCount':this[_0x51261c(0x18c)][_0x51261c(0x15e)]};}['listControllersSummary'](){const _0x1b0e40=a12_0x4770cf;return Array[_0x1b0e40(0x16b)](this['controllersByKey'][_0x1b0e40(0x14c)]())[_0x1b0e40(0x1c9)](_0x7c7d53=>createControllerSummary(_0x7c7d53));}[a12_0x4770cf(0x147)](){const _0x591cba=a12_0x4770cf;return Array[_0x591cba(0x16b)](this[_0x591cba(0x18c)][_0x591cba(0x14c)]())[_0x591cba(0x1c9)](_0x4f7e0f=>({...createControllerSummary(_0x4f7e0f),'objects':_0x4f7e0f[_0x591cba(0x18b)]}));}[a12_0x4770cf(0x183)](_0x20211e,_0x3946ca){const _0x3b76d8=a12_0x4770cf,_0x3daacc=_0x20211e!=null?String(_0x20211e):'',_0x2e5d0d=_0x3946ca!=null?String(_0x3946ca):'';if(_0x2e5d0d){const _0x161b29=_0x2e5d0d+':'+_0x3daacc;return this[_0x3b76d8(0x18c)]['get'](_0x161b29)||null;}if(!_0x3daacc)return null;const _0x58790c=this[_0x3b76d8(0x1a2)][_0x3b76d8(0x192)](_0x3daacc);if(!_0x58790c||!_0x58790c[_0x3b76d8(0x1b0)])return null;if(_0x58790c[_0x3b76d8(0x1b0)]===0x1)return _0x58790c[0x0];for(const _0x28a866 of _0x58790c){if(_0x28a866[_0x3b76d8(0x1b3)]==null)return _0x28a866;}return _0x58790c[0x0];}['getObjects'](_0x35f038,_0x5a75a6){const _0x1874da=a12_0x4770cf,_0x1faca7=this[_0x1874da(0x183)](_0x35f038,_0x5a75a6);return _0x1faca7?_0x1faca7[_0x1874da(0x18b)]['slice']():[];}[a12_0x4770cf(0x173)](_0x5fda33,_0x1febfb,_0x46c29c,_0x54f2cf){const _0x4fbd4a=a12_0x4770cf,_0x58e662=this[_0x4fbd4a(0x183)](_0x5fda33,_0x1febfb);if(!_0x58e662||!_0x58e662[_0x4fbd4a(0x157)])return null;const _0x31d994=simplifyTypeToNum(_0x46c29c),_0x35fc98=String(_0x31d994)+'|'+String(_0x54f2cf);return _0x58e662[_0x4fbd4a(0x157)]['get'](_0x35fc98)||null;}[a12_0x4770cf(0x194)](){const _0x2c58f5=a12_0x4770cf,_0x43fd2d=new Map(),_0x517c77=new Map();for(const _0x574cda of this[_0x2c58f5(0x18c)]['values']()){const _0x424c87=String(_0x574cda['deviceInstance']);!_0x43fd2d[_0x2c58f5(0x169)](_0x424c87)&&_0x43fd2d[_0x2c58f5(0x15a)](_0x424c87,_0x574cda);if(_0x574cda[_0x2c58f5(0x1b3)]!=null){const _0x348aa8=String(_0x574cda[_0x2c58f5(0x1b3)])+':'+_0x424c87;_0x517c77[_0x2c58f5(0x15a)](_0x348aa8,_0x574cda);}}return{'byDI':_0x43fd2d,'byNetDI':_0x517c77,'ts':this[_0x2c58f5(0x197)],'count':_0x43fd2d['size'],'error':this[_0x2c58f5(0x1a8)]?String(this[_0x2c58f5(0x1a8)]['message']||this[_0x2c58f5(0x1a8)]):null,'errorCode':this['lastErrorCode']};}}class BacnetControllerHub{constructor(){const _0xb038d3=a12_0x4770cf;this[_0xb038d3(0x19a)]=new Map(),this[_0xb038d3(0x17f)]=new Map();}[a12_0x4770cf(0x17e)](_0x115f15,_0x2b4d5b,_0x5622d4){const _0x35c919=a12_0x4770cf;if(!_0x115f15)return null;const _0x5acaeb=String(_0x115f15);let _0x52dc5b=this[_0x35c919(0x19a)][_0x35c919(0x192)](_0x5acaeb);if(!_0x52dc5b)return _0x52dc5b=new BacnetConfigWatcher(_0x5acaeb,_0x2b4d5b,_0x5622d4||{},this),_0x52dc5b[_0x35c919(0x14e)](),this[_0x35c919(0x19a)][_0x35c919(0x15a)](_0x5acaeb,_0x52dc5b),_0x52dc5b;return _0x52dc5b[_0x35c919(0x14e)](),typeof _0x2b4d5b===_0x35c919(0x195)&&_0x52dc5b[_0x35c919(0x1cb)](_0x2b4d5b),_0x5622d4&&_0x5622d4[_0x35c919(0x19f)]&&_0x52dc5b['setIntervalMs'](_0x5622d4[_0x35c919(0x19f)]),_0x52dc5b;}[a12_0x4770cf(0x1bb)](_0x2696f3){const _0x2b7bc2=a12_0x4770cf;if(!_0x2696f3)return;const _0x312ebc=String(_0x2696f3),_0x1f6eb1=this[_0x2b7bc2(0x19a)][_0x2b7bc2(0x192)](_0x312ebc);if(!_0x1f6eb1)return;_0x1f6eb1[_0x2b7bc2(0x164)](),_0x1f6eb1['refCount']<=0x0&&(_0x1f6eb1['stop'](),this['configWatchers'][_0x2b7bc2(0x1ab)](_0x312ebc));}[a12_0x4770cf(0x153)](){const _0x144d20=a12_0x4770cf,_0x541744=new Map();for(const _0x17aba1 of this[_0x144d20(0x19a)][_0x144d20(0x14c)]()){if(!_0x17aba1||!_0x17aba1[_0x144d20(0x1a2)])continue;for(const [_0x271eef,_0x275807]of _0x17aba1[_0x144d20(0x1a2)]){if(!_0x541744[_0x144d20(0x169)](_0x271eef))_0x541744[_0x144d20(0x15a)](_0x271eef,_0x275807);else{if(Array['isArray'](_0x275807)&&_0x275807[_0x144d20(0x1b0)]){const _0xa3f364=_0x541744[_0x144d20(0x192)](_0x271eef)[_0x144d20(0x18e)](_0x275807);_0x541744[_0x144d20(0x15a)](_0x271eef,_0xa3f364);}}}}return _0x541744;}[a12_0x4770cf(0x1c1)](_0x203049,_0x46e3cb,_0x172f63){const _0x732a1a=this['getWatcher'](_0x203049,_0x46e3cb,_0x172f63);if(!_0x732a1a)return null;let _0x4e5bb3=![];return{'watcher':_0x732a1a,'release':()=>{const _0x38a35e=a12_0x39b6;if(_0x4e5bb3)return;_0x4e5bb3=!![],this[_0x38a35e(0x1bb)](_0x203049);}};}['registerController'](_0x2c634f){const _0x36d27f=a12_0x4770cf;if(!_0x2c634f||!_0x2c634f[_0x36d27f(0x179)])return null;const _0x575fa5=String(_0x2c634f[_0x36d27f(0x179)]),_0x1677bc=_0x2c634f[_0x36d27f(0x14d)]?String(_0x2c634f[_0x36d27f(0x14d)]):'',_0x221b43=_0x2c634f[_0x36d27f(0x1cf)]!=null?String(_0x2c634f['deviceInstance']):'',_0x28cd2a=_0x2c634f['networkNumber']!=null?String(_0x2c634f['networkNumber']):'',_0xb626b9=typeof _0x2c634f[_0x36d27f(0x17b)]==='function'?_0x2c634f['getCredentials']:()=>null,_0x1cecab=_0x2c634f[_0x36d27f(0x19f)]!=null?Number(_0x2c634f[_0x36d27f(0x19f)]):undefined,_0x4a7cc2=_0x1677bc?this[_0x36d27f(0x17e)](_0x1677bc,_0xb626b9,{'intervalMs':_0x1cecab}):null,_0x3ce54b={'guid':_0x575fa5,'configId':_0x1677bc,'deviceInstance':_0x221b43,'networkNumber':_0x28cd2a};return this[_0x36d27f(0x17f)]['set'](_0x575fa5,_0x3ce54b),{'registration':_0x3ce54b,'watcher':_0x4a7cc2,'update':_0x4a1ae2=>{const _0x4bc473=_0x36d27f;if(!_0x4a1ae2)return;if(_0x4a1ae2[_0x4bc473(0x14d)]!=null&&String(_0x4a1ae2['configId'])!==_0x3ce54b['configId']){this['releaseWatcher'](_0x3ce54b['configId']),_0x3ce54b[_0x4bc473(0x14d)]=String(_0x4a1ae2[_0x4bc473(0x14d)]);if(_0x3ce54b['configId']){const _0x4ceb5c=this[_0x4bc473(0x17e)](_0x3ce54b[_0x4bc473(0x14d)],_0xb626b9,{'intervalMs':_0x4a1ae2[_0x4bc473(0x19f)]!=null?Number(_0x4a1ae2[_0x4bc473(0x19f)]):_0x1cecab});if(_0x4ceb5c)_0x3ce54b[_0x4bc473(0x1a5)]=_0x4ceb5c;}}_0x4a1ae2[_0x4bc473(0x1cf)]!=null&&(_0x3ce54b[_0x4bc473(0x1cf)]=String(_0x4a1ae2['deviceInstance'])),_0x4a1ae2[_0x4bc473(0x1b3)]!=null&&(_0x3ce54b[_0x4bc473(0x1b3)]=String(_0x4a1ae2[_0x4bc473(0x1b3)]));},'dispose':()=>{const _0x2e5699=_0x36d27f;this['controllerRegs'][_0x2e5699(0x1ab)](_0x575fa5);if(_0x3ce54b['configId'])this[_0x2e5699(0x1bb)](_0x3ce54b[_0x2e5699(0x14d)]);this[_0x2e5699(0x17f)][_0x2e5699(0x15e)]===0x0&&mergeControllerMetadataIntoGlobalDevices(new Map());}};}[a12_0x4770cf(0x19e)](_0x1c0b61){const _0x58ea6b=a12_0x4770cf;if(!_0x1c0b61)return;const _0x3e1c41=String(_0x1c0b61),_0x47323b=this['controllerRegs'][_0x58ea6b(0x192)](_0x3e1c41);if(!_0x47323b)return;this[_0x58ea6b(0x17f)][_0x58ea6b(0x1ab)](_0x3e1c41);if(_0x47323b[_0x58ea6b(0x14d)])this[_0x58ea6b(0x1bb)](_0x47323b[_0x58ea6b(0x14d)]);this[_0x58ea6b(0x17f)]['size']===0x0&&mergeControllerMetadataIntoGlobalDevices(new Map());}[a12_0x4770cf(0x14b)](_0x3f9d6d){const _0x288222=a12_0x4770cf;if(!_0x3f9d6d)return null;return this[_0x288222(0x19a)][_0x288222(0x192)](String(_0x3f9d6d))||null;}[a12_0x4770cf(0x1c2)](_0x271620){const _0x593d76=this['getWatcherForConfig'](_0x271620);if(!_0x593d76)return[];return _0x593d76['listControllersSummary']();}async['refreshConfig'](_0x301480){const _0x22c4c3=a12_0x4770cf,_0x14952f=this[_0x22c4c3(0x14b)](_0x301480);if(!_0x14952f)return;await _0x14952f[_0x22c4c3(0x15f)]();}[a12_0x4770cf(0x158)](_0x5cb2b3){const _0x34ec92=a12_0x4770cf;if(!_0x5cb2b3)return null;const _0x228ce4=String(_0x5cb2b3),_0x17a5fa=this[_0x34ec92(0x17f)][_0x34ec92(0x192)](_0x228ce4);if(!_0x17a5fa)return null;const _0x170013=_0x17a5fa['configId']?this[_0x34ec92(0x14b)](_0x17a5fa[_0x34ec92(0x14d)]):null;if(!_0x170013)return{'registration':{..._0x17a5fa},'controller':null,'state':null};const _0x47c354=_0x170013['findController'](_0x17a5fa['deviceInstance'],_0x17a5fa[_0x34ec92(0x1b3)]);return{'registration':{..._0x17a5fa},'controller':_0x47c354,'state':_0x170013[_0x34ec92(0x1a7)]()};}[a12_0x4770cf(0x183)](_0x5b838d,_0x5c3bbd,_0x72513e){const _0x2d4aa5=a12_0x4770cf,_0x1d01e5=this['getWatcherForConfig'](_0x5b838d);if(!_0x1d01e5)return null;return _0x1d01e5[_0x2d4aa5(0x183)](_0x5c3bbd,_0x72513e);}[a12_0x4770cf(0x1b2)](_0x50a1aa,_0x316e69,_0x2d38a5){const _0x39724f=a12_0x4770cf,_0x3dccd3=this[_0x39724f(0x14b)](_0x50a1aa);if(!_0x3dccd3)return[];return _0x3dccd3[_0x39724f(0x1b2)](_0x316e69,_0x2d38a5);}[a12_0x4770cf(0x185)](_0x184c27,_0x3b99d9,_0x22229e){const _0xad38d3=a12_0x4770cf,_0x2d40d=this['lookupControllerByGuid'](_0x184c27);if(!_0x2d40d||!_0x2d40d['registration']||!_0x2d40d[_0xad38d3(0x19d)][_0xad38d3(0x14d)])return null;const _0xfcee7a=this[_0xad38d3(0x14b)](_0x2d40d['registration'][_0xad38d3(0x14d)]);if(!_0xfcee7a)return null;return _0xfcee7a[_0xad38d3(0x173)](_0x2d40d['registration'][_0xad38d3(0x1cf)],_0x2d40d['registration'][_0xad38d3(0x1b3)],_0x3b99d9,_0x22229e);}[a12_0x4770cf(0x1b8)](_0x271f6d){const _0x1656c9=a12_0x4770cf,_0x5a5aab=this[_0x1656c9(0x14b)](_0x271f6d);if(!_0x5a5aab)return{'byDI':new Map(),'byNetDI':new Map(),'ts':0x0,'count':0x0,'error':_0x1656c9(0x18d)};return _0x5a5aab['toCacheShape']();}}const bacnetHubInstance=new BacnetControllerHub();module['exports']=bacnetHubInstance,module[a12_0x4770cf(0x15c)][a12_0x4770cf(0x1bf)]=TYPE_ABBR,module[a12_0x4770cf(0x15c)][a12_0x4770cf(0x1d0)]=ABBR_TO_NUM,module[a12_0x4770cf(0x15c)]['simplifyTypeToNum']=simplifyTypeToNum,module[a12_0x4770cf(0x15c)][a12_0x4770cf(0x191)]=typeName,module[a12_0x4770cf(0x15c)][a12_0x4770cf(0x1ce)]=function registerGlobalDeviceContextProvider(_0xa4594c){if(typeof _0xa4594c!=='function')return()=>{};return globalDeviceContextProviderSet['add'](_0xa4594c),()=>{globalDeviceContextProviderSet['delete'](_0xa4594c);};};function mergeControllerMetadataIntoGlobalDevices(_0x1e04d6){const _0x565d9d=a12_0x4770cf;if(!globalDeviceContextProviderSet[_0x565d9d(0x15e)])return;const _0xc051a8=_0x1e04d6&&_0x1e04d6['size']>0x0,_0x1f312b=_0xc051a8?new Set(_0x1e04d6['keys']()):new Set();function _0x3ae871(_0x56e928){const _0x107fb0=_0x565d9d;if(!_0x56e928||typeof _0x56e928!==_0x107fb0(0x151))return![];const _0x2f8b44=Object[_0x107fb0(0x159)](_0x56e928)[_0x107fb0(0x154)](_0x56b52d=>_0x56b52d!=='pv');if(_0x2f8b44['length']===0x0)return![];return _0x2f8b44[_0x107fb0(0x1cc)](_0x2743b4=>delete _0x56e928[_0x2743b4]),!![];}globalDeviceContextProviderSet[_0x565d9d(0x1cc)](_0x6132a9=>{const _0x2e0d9c=_0x565d9d;let _0x2d31a9=null;try{_0x2d31a9=_0x6132a9&&_0x6132a9();}catch(_0x286d70){return;}if(!_0x2d31a9||typeof _0x2d31a9[_0x2e0d9c(0x192)]!==_0x2e0d9c(0x195)||typeof _0x2d31a9['set']!==_0x2e0d9c(0x195))return;const _0x3fa306=_0x2d31a9[_0x2e0d9c(0x192)](_0x2e0d9c(0x16c));if(!_0x3fa306||typeof _0x3fa306!==_0x2e0d9c(0x151))return;let _0x10ddb6=![];const _0x47ee22=Object[_0x2e0d9c(0x159)](_0x3fa306);for(const _0x36adf6 of _0x47ee22){(!_0xc051a8||!_0x1f312b[_0x2e0d9c(0x169)](_0x36adf6))&&(delete _0x3fa306[_0x36adf6],_0x10ddb6=!![]);}for(const _0x143b91 of Object[_0x2e0d9c(0x159)](_0x3fa306)){const _0xe0b7e=_0x3fa306[_0x143b91];if(!_0xe0b7e||typeof _0xe0b7e!==_0x2e0d9c(0x151))continue;for(const _0x10dfc8 of Object[_0x2e0d9c(0x159)](_0xe0b7e)){const _0x2394df=_0xe0b7e[_0x10dfc8];if(_0x2394df&&typeof _0x2394df===_0x2e0d9c(0x151)&&!Array[_0x2e0d9c(0x156)](_0x2394df)){if(KNOWN_OBJECT_ABBREVIATIONS[_0x2e0d9c(0x169)](_0x10dfc8))for(const _0x2b662c of Object['keys'](_0x2394df)){if(_0x3ae871(_0x2394df[_0x2b662c]))_0x10ddb6=!![];}else{if(_0x3ae871(_0x2394df))_0x10ddb6=!![];}}}}_0x10ddb6&&_0x2d31a9[_0x2e0d9c(0x15a)](_0x2e0d9c(0x16c),_0x3fa306);});}