@opcua/for-node-red 2.5.1 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +1 -1
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +2 -2
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +2 -2
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +2 -2
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +2 -2
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +2 -2
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +2 -2
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
function _0x1eaf(){const _0x1915e4=['ReferenceType','502617LbtFwg','length','ns=0;i=34','statusCode','Both',';\x22></i>\x20','endpointNode','filter','prop','Organizes','fetching\x20failed\x20with\x20error','opc.tcp://opcuademo.sterfive.com:26543','$inputGroup','499400gTNNSu','parentNode','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','#node-input-endpoint','replaceWith','Good','grey','application/json','.spinner','VariableType','removeClass','monitor\x20variable','fa-sliders','ObjectType','appendTo','endpoint','SuppressedError','toString','POST','done','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','statusText','$toggleTreeBtn','failure','value','OPCUA\x20Client\x20Monitor\x20','node-input-startImmediately','View','Object','catch','opcua','val','loading','options','HasChild','log','already\x20fetched','reference','<option/>','\x20Fetching\x20done','NodeClass','attr','HasProperty','/Server/ServerStatus/CurrentTime','change','478557yctkPf','json','nodes','DodgerBlue','isTypeRef','$input','OpcUa-Endpoint2','message','baseUrl','node_label_italic','throw','children','$verifyBtn','<ul></ul></li>','<div/>','closest','verify','currentParent','#node-input-inputs','show','$dropdown','append','hide','<div\x20class=\x22info-text\x22></div>','ns=0;i=47','function','1292435laJsIg','isSelectable','CadetBlue','sterfive-combo-box','2GnvcMb','nodeClass','stringify','BrowseName','ns=0;i=85','Inverse','expandable','$tree','rgba(61,\x2060,\x204,\x200.525)','/checkNodeId','node','/browse','nodeBrowser','apply','pageY','TypeDefinition','referenceTypeId','element','Method','left','8ZZMhig','</li>','expandable\x20expanded','toggle','pageX','text','Objects','remove','2087435pKpsxL','err','expanded','$info','82667HGCrLm','DataType','empty','1131180TPfDau','status','focus\x20click','sterfive-info','ns=0;i=61','subscription','IsForward','fetched','find','reset','offset','<div\x20class=\x22spinner\x22></div>','click','ns=0;i=40','SeaGreen','next','checked','DarkOrange','fa-object-group','data',':visible','SteelBlue','fa-folder','startImmediately','nodeId','resolveParentNode','registerType','Variable','error','../../icons/opcuanodeLogo.png','nodeAddressString','Invalid','displayName','browseResult','SandyBrown','Forward','input-group','Unspecified','placeholder','top','stopPropagation','references','\x22\x20style=\x22color:','<ul\x20class=\x22sterfive-tree\x22></ul>','name','inputs','hasClass','fetched\x20:\x20','match','addClass','toggleClass','sterfive-dropdown','fa-list-alt','trigger','browseName','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','/opcua-endpoint2','#node-input-startImmediately','widget','assign','subscriptions','then','DisplayName','$combo','sterfive.nodeBrowser'];_0x1eaf=function(){return _0x1915e4;};return _0x1eaf();}function _0x32cb(_0x1b584b,_0x302355){const _0x1eaf16=_0x1eaf();return _0x32cb=function(_0x32cbbb,_0x551729){_0x32cbbb=_0x32cbbb-0x6d;let _0x5b385c=_0x1eaf16[_0x32cbbb];return _0x5b385c;},_0x32cb(_0x1b584b,_0x302355);}(function(_0x1c8253,_0x557ca9){const _0x553bca=_0x32cb,_0x11ec5a=_0x1c8253();while(!![]){try{const _0x23c111=parseInt(_0x553bca(0x80))/0x1+parseInt(_0x553bca(0x11d))/0x2*(-parseInt(_0x553bca(0xc5))/0x3)+parseInt(_0x553bca(0xd2))/0x4+-parseInt(_0x553bca(0x119))/0x5+parseInt(_0x553bca(0x83))/0x6+parseInt(_0x553bca(0x7c))/0x7+parseInt(_0x553bca(0x74))/0x8*(-parseInt(_0x553bca(0xff))/0x9);if(_0x23c111===_0x557ca9)break;else _0x11ec5a['push'](_0x11ec5a['shift']());}catch(_0x1846c9){_0x11ec5a['push'](_0x11ec5a['shift']());}}}(_0x1eaf,0x3480d),(function(){'use strict';const _0x398814=_0x32cb;function _0x1c1602(_0x1f0d06,_0xa5637b,_0x9394a1,_0x33b369){function _0x2db3fc(_0x53ef5b){return _0x53ef5b instanceof _0x9394a1?_0x53ef5b:new _0x9394a1(function(_0x2e8f96){_0x2e8f96(_0x53ef5b);});}return new(_0x9394a1||(_0x9394a1=Promise))(function(_0x518acc,_0x2db611){const _0x5a1248=_0x32cb;function _0x2791a0(_0x2e049f){try{_0x2be515(_0x33b369['next'](_0x2e049f));}catch(_0x20cd9a){_0x2db611(_0x20cd9a);}}function _0x4e11e0(_0x44a31d){const _0x4951a2=_0x32cb;try{_0x2be515(_0x33b369[_0x4951a2(0x109)](_0x44a31d));}catch(_0x35a751){_0x2db611(_0x35a751);}}function _0x2be515(_0x5a1716){const _0x1bc914=_0x32cb;_0x5a1716[_0x1bc914(0xe5)]?_0x518acc(_0x5a1716[_0x1bc914(0xea)]):_0x2db3fc(_0x5a1716[_0x1bc914(0xea)])[_0x1bc914(0xc0)](_0x2791a0,_0x4e11e0);}_0x2be515((_0x33b369=_0x33b369[_0x5a1248(0x6d)](_0x1f0d06,_0xa5637b||[]))[_0x5a1248(0x92)]());});}typeof SuppressedError===_0x398814(0x118)?SuppressedError:function(_0x3f5ba8,_0xd9fa80,_0x345e96){const _0x2ad609=_0x398814;var _0xcb8df7=new Error(_0x345e96);return _0xcb8df7[_0x2ad609(0xaf)]=_0x2ad609(0xe2),_0xcb8df7['error']=_0x3f5ba8,_0xcb8df7['suppressed']=_0xd9fa80,_0xcb8df7;};const _0x385b81='ns=0;i=35',_0x4a18da=_0x398814(0x87),_0x804013=_0x398814(0x117),_0x4b073f='ns=0;i=46',_0x3bd8c1=_0x398814(0xc7),_0xf47dc1='ns=0;i=45',_0x5ef3ea=_0x398814(0x90);var _0x14e004;(function(_0x4c64b5){const _0x595675=_0x398814;_0x4c64b5[_0x4c64b5[_0x595675(0xa6)]=0x0]='Forward',_0x4c64b5[_0x4c64b5[_0x595675(0x122)]=0x1]=_0x595675(0x122),_0x4c64b5[_0x4c64b5[_0x595675(0xc9)]=0x2]=_0x595675(0xc9),_0x4c64b5[_0x4c64b5[_0x595675(0xa2)]=0x3]=_0x595675(0xa2);}(_0x14e004||(_0x14e004={})));var _0x2e0bb6;(function(_0x4f714c){const _0x5d72b4=_0x398814;_0x4f714c[_0x4f714c[_0x5d72b4(0xa8)]=0x0]=_0x5d72b4(0xa8),_0x4f714c[_0x4f714c[_0x5d72b4(0xee)]=0x1]='Object',_0x4f714c[_0x4f714c[_0x5d72b4(0x9e)]=0x2]=_0x5d72b4(0x9e),_0x4f714c[_0x4f714c['Method']=0x4]=_0x5d72b4(0x72),_0x4f714c[_0x4f714c[_0x5d72b4(0xdf)]=0x8]=_0x5d72b4(0xdf),_0x4f714c[_0x4f714c['VariableType']=0x10]=_0x5d72b4(0xdb),_0x4f714c[_0x4f714c[_0x5d72b4(0xc4)]=0x20]='ReferenceType',_0x4f714c[_0x4f714c[_0x5d72b4(0x81)]=0x40]=_0x5d72b4(0x81),_0x4f714c[_0x4f714c[_0x5d72b4(0xed)]=0x80]=_0x5d72b4(0xed);}(_0x2e0bb6||(_0x2e0bb6={})));var _0x1f9736;(function(_0x40e4aa){const _0x47ff0a=_0x398814;_0x40e4aa[_0x40e4aa[_0x47ff0a(0xee)]=0x1]=_0x47ff0a(0xee),_0x40e4aa[_0x40e4aa[_0x47ff0a(0x9e)]=0x2]=_0x47ff0a(0x9e),_0x40e4aa[_0x40e4aa['Method']=0x4]=_0x47ff0a(0x72),_0x40e4aa[_0x40e4aa['ObjectType']=0x8]=_0x47ff0a(0xdf),_0x40e4aa[_0x40e4aa[_0x47ff0a(0xdb)]=0x10]='VariableType',_0x40e4aa[_0x40e4aa[_0x47ff0a(0xc4)]=0x20]='ReferenceType',_0x40e4aa[_0x40e4aa[_0x47ff0a(0x81)]=0x40]='DataType',_0x40e4aa[_0x40e4aa[_0x47ff0a(0xed)]=0x80]=_0x47ff0a(0xed);}(_0x1f9736||(_0x1f9736={})));var _0xb9b1ad;(function(_0x18d02d){const _0x3422b3=_0x398814;_0x18d02d[_0x18d02d[_0x3422b3(0xc4)]=0x1]=_0x3422b3(0xc4),_0x18d02d[_0x18d02d[_0x3422b3(0x89)]=0x2]=_0x3422b3(0x89),_0x18d02d[_0x18d02d[_0x3422b3(0xfa)]=0x4]=_0x3422b3(0xfa),_0x18d02d[_0x18d02d[_0x3422b3(0x120)]=0x8]='BrowseName',_0x18d02d[_0x18d02d[_0x3422b3(0xc1)]=0x10]=_0x3422b3(0xc1),_0x18d02d[_0x18d02d[_0x3422b3(0x6f)]=0x20]=_0x3422b3(0x6f);}(_0xb9b1ad||(_0xb9b1ad={})));function _0x3ff1f7(_0x4fb0bf){const _0x5c90ed=_0x398814;switch(_0x4fb0bf){case _0x5c90ed(0xce):return _0x385b81;case _0x5c90ed(0xfc):return _0x4b073f;case'HasComponent':return _0x804013;case'HasChild':return _0x3bd8c1;case'HasSubtype':return _0xf47dc1;case'HasTypeDefinition':return _0x5ef3ea;}}const _0x5af75b=_0x4cb003=>{const _0xbde16=_0x398814;switch(_0x4cb003[_0xbde16(0x11e)]){case _0xbde16(0xee):if(_0x4cb003[_0xbde16(0x70)]===_0x385b81);if(_0x4cb003['typeDefinition']===_0x4a18da||_0x4cb003[_0xbde16(0x70)]==='i=61')return{'icon':_0xbde16(0x99),'color':_0xbde16(0x125)};return{'icon':_0xbde16(0x95),'color':_0xbde16(0x91)};case _0xbde16(0x9e):if(_0x4cb003[_0xbde16(0x70)]===_0x804013)return{'icon':_0xbde16(0xb7),'color':_0xbde16(0x98)};else return _0x4cb003[_0xbde16(0x70)]===_0x4b073f?{'icon':_0xbde16(0xb7),'color':_0xbde16(0x102)}:{'icon':_0xbde16(0xb7),'color':_0xbde16(0x11b)};case _0xbde16(0x72):return{'icon':'fa-cog','color':_0xbde16(0xa5)};case _0xbde16(0xdf):return{'icon':'fa-object-group','color':_0xbde16(0x94)};case _0xbde16(0xdb):return{'icon':_0xbde16(0xde),'color':_0xbde16(0x94)};}return{'icon':'fa-question','color':_0xbde16(0xd8)};},_0x2b5c04=({endpointNode:_0x2a8e24,endpoint:_0x54899c,baseUrl:_0x528dd7},_0x15e04a,_0xf5c38a)=>_0x1c1602(void 0x0,void 0x0,void 0x0,function*(){const _0x1020b3=_0x398814,_0x5edbb1=_0x528dd7+_0x1020b3(0xbb),_0x2743d4=_0x5edbb1+_0x1020b3(0x128),_0x151db6=Object[_0x1020b3(0xbe)](Object[_0x1020b3(0xbe)]({},_0xf5c38a),{'nodeId':_0x15e04a,'resultMask':0x3f}),_0x2ad3de=yield fetch(_0x2743d4,{'method':_0x1020b3(0xe4),'body':JSON[_0x1020b3(0x11f)]({'endpointNode':_0x2a8e24,'endpoint':_0x54899c,'browseDescription':_0x151db6}),'headers':{'Content-Type':'application/json'}});if(_0x2ad3de[_0x1020b3(0x84)]!==0xc8)return console[_0x1020b3(0xf5)](_0x1020b3(0xcf),_0x2ad3de[_0x1020b3(0x84)],_0x2ad3de[_0x1020b3(0xe7)]),{'references':[]};console[_0x1020b3(0xf5)](_0x1020b3(0xb2),_0x2ad3de['status'],_0x2ad3de['statusText']);const _0x54a708=yield _0x2ad3de[_0x1020b3(0x100)](),_0x45ff0d=_0x54a708[_0x1020b3(0xa4)][_0x1020b3(0xac)]||[];return{'references':_0x45ff0d};}),_0x19d71a={'referenceTypeId':_0x3ff1f7(_0x398814(0xf4)),'includeSubtypes':!![],'browseDirection':_0x14e004[_0x398814(0xa6)],'nodeClassMask':_0x2e0bb6[_0x398814(0x9e)]|_0x2e0bb6[_0x398814(0xee)]|_0x2e0bb6[_0x398814(0x72)],'resultMask':0x3f},_0x84e475={'referenceTypeId':_0x3ff1f7(_0x398814(0xce)),'includeSubtypes':!![],'browseDirection':_0x14e004[_0x398814(0xa6)],'nodeClassMask':_0x2e0bb6['Variable']|_0x2e0bb6[_0x398814(0xee)]|_0x2e0bb6['Method'],'resultMask':0x3f},_0x33a54f=({endpointNode:_0x5393ba,endpoint:_0xdca284,baseUrl:_0x569117},_0x484f6e,_0x4dff45)=>_0x1c1602(void 0x0,void 0x0,void 0x0,function*(){const _0xee5262=_0x398814,_0x1cf873=_0x569117+_0xee5262(0xbb),_0x46c6d6=_0x484f6e[_0xee5262(0xf1)](),_0x53602f=yield fetch(_0x1cf873+_0xee5262(0x126),{'method':'POST','body':JSON['stringify']({'endpointNode':_0x5393ba,'endpoint':_0xdca284,'nodeId':_0x46c6d6}),'headers':{'Content-Type':_0xee5262(0xd9)}}),_0x2c7872=(_0x582caf,_0x5b728e)=>{const _0x4ad187=_0xee5262;_0x4dff45['text'](_0x582caf)[_0x4ad187(0xb4)](_0x4ad187(0x86))[_0x4ad187(0xb4)](_0x5b728e),_0x4dff45[_0x4ad187(0x112)](),setTimeout(()=>{const _0x2b06aa=_0x4ad187;_0x4dff45[_0x2b06aa(0xdc)](_0x5b728e),_0x4dff45[_0x2b06aa(0x115)]();},0xbb8);},_0x3dd637=yield _0x53602f[_0xee5262(0x100)]();_0x53602f[_0xee5262(0x84)]!==0xc8?_0x2c7872('!!failure!!'+_0x46c6d6,_0xee5262(0xe9)):_0x3dd637[_0xee5262(0xc8)][_0xee5262(0xb3)](/Good/)?(_0x484f6e[_0xee5262(0xf1)](_0x3dd637[_0xee5262(0xa1)]),_0x484f6e[_0xee5262(0xb8)](_0xee5262(0xfe)),_0x2c7872(_0xee5262(0xd7),'ok')):(_0x484f6e['val'](''+_0x46c6d6),_0x2c7872(_0x3dd637[_0xee5262(0xc8)]+'\x20'+_0x53602f[_0xee5262(0xe7)],_0xee5262(0xe9)));});function _0x55ca54(_0x13f793,_0x322af7){return _0x1c1602(this,void 0x0,void 0x0,function*(){const _0x422e63=_0x32cb,_0x1136ee=_0x13f793[_0x422e63(0x96)](_0x422e63(0xea)),_0x19759d=yield _0x2b5c04(_0x322af7,_0x1136ee,_0x19d71a),_0x2e9eb2=yield _0x2b5c04(_0x322af7,_0x1136ee,_0x84e475);return{'references':[..._0x19759d[_0x422e63(0xac)],..._0x2e9eb2['references']]};});}const _0x31ffe3={'referenceTypeId':_0x3ff1f7('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0x14e004['Forward'],'nodeClassMask':_0x2e0bb6[_0x398814(0xc4)]|_0x2e0bb6[_0x398814(0xdf)]|_0x2e0bb6['DataType']|_0x2e0bb6[_0x398814(0xdb)],'resultMask':0x3f};function _0x7f2a9d(_0x50046f,_0x1e3c10){return _0x1c1602(this,void 0x0,void 0x0,function*(){const _0x3c451c=_0x32cb,_0x4ba428=_0x50046f[_0x3c451c(0x96)](_0x3c451c(0xea)),_0x4db5d1=yield _0x2b5c04(_0x1e3c10,_0x4ba428,_0x31ffe3);return _0x4db5d1;});}const _0x2177be=_0x118707=>{const _0x27f49a=_0x398814;var _0x5e06cf,_0x5a19e6;if(!_0x118707){const _0x24e05a=$(_0x27f49a(0xd4));return _0x24e05a;}const _0x12c87d=_0x118707[_0x27f49a(0x9b)]['toString'](),_0x4e42e0=((_0x5e06cf=_0x118707[_0x27f49a(0xa3)])===null||_0x5e06cf===void 0x0?void 0x0:_0x5e06cf['text'])||((_0x5a19e6=_0x118707[_0x27f49a(0xb9)])===null||_0x5a19e6===void 0x0?void 0x0:_0x5a19e6[_0x27f49a(0xaf)])||_0x118707['nodeId'][_0x27f49a(0xe3)](),{icon:_0x4cc460,color:_0xd21e83}=_0x5af75b(_0x118707),_0x4953ba=$('<li><i\x20class=\x22fa\x20'+_0x4cc460+_0x27f49a(0xad)+_0xd21e83+_0x27f49a(0xca)+_0x4e42e0+_0x27f49a(0x10c));return _0x4953ba['addClass'](_0x27f49a(0x123)),_0x4953ba[_0x27f49a(0x96)](_0x27f49a(0xea),_0x12c87d),_0x4953ba[_0x27f49a(0x96)](_0x27f49a(0xf7),_0x118707),_0x4953ba;},_0x56e2b0=()=>{const _0x3672da=_0x398814;$[_0x3672da(0xbd)](_0x3672da(0xc3),{'options':{'endpointNode':()=>({'endpoint':_0x3672da(0xd0)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x3672da(0x7a)},'nodeClass':_0x3672da(0xee),'nodeId':_0x3672da(0x121),'displayName':{'text':_0x3672da(0x7a)},'typeDefinition':_0x4a18da}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x1c1602(this,void 0x0,void 0x0,function*(){const _0x39e994=_0x32cb,_0x6ec175=this,_0x180143=typeof _0x6ec175[_0x39e994(0xf3)][_0x39e994(0xd3)]==='function'?_0x6ec175[_0x39e994(0xf3)][_0x39e994(0xd3)]():_0x6ec175[_0x39e994(0xf3)][_0x39e994(0xd3)];if(_0x180143 instanceof Promise)return yield _0x180143;return _0x180143;});},'reset'(){const _0x5eeb40=_0x3672da,_0x25d12c=this;_0x25d12c[_0x5eeb40(0x124)][_0x5eeb40(0x82)](),this[_0x5eeb40(0x9c)]()['then'](_0x612115=>{const _0x12ffca=_0x5eeb40,_0x53f2a6=_0x2177be(_0x612115);_0x25d12c[_0x12ffca(0x124)][_0x12ffca(0x114)](_0x53f2a6),_0x25d12c[_0x12ffca(0x110)]=_0x612115;});},'verify'(){const _0x40fd12=_0x3672da,_0x12c315=this,_0x211cac={'baseUrl':_0x12c315[_0x40fd12(0xf3)]['baseUrl'],'endpointNode':typeof _0x12c315[_0x40fd12(0xf3)][_0x40fd12(0xcb)]===_0x40fd12(0x118)?_0x12c315[_0x40fd12(0xf3)][_0x40fd12(0xcb)]():_0x12c315[_0x40fd12(0xf3)][_0x40fd12(0xcb)],'endpoint':typeof _0x12c315['options'][_0x40fd12(0xe1)]===_0x40fd12(0x118)?_0x12c315[_0x40fd12(0xf3)][_0x40fd12(0xe1)]():_0x12c315[_0x40fd12(0xf3)][_0x40fd12(0xe1)]};_0x33a54f(_0x211cac,_0x12c315[_0x40fd12(0x104)],_0x12c315[_0x40fd12(0x7f)]);},'_create'(){const _0x446db8=_0x3672da,_0x424d4b=this;function _0x14be34(_0x1cb2de,_0x36532d,_0x4cf925){return _0x1c1602(this,void 0x0,void 0x0,function*(){const _0xa6de0e=_0x32cb;if(_0x1cb2de[_0xa6de0e(0xb1)]('fetched')){console['log'](_0xa6de0e(0xf6));return;}if(_0x1cb2de[_0xa6de0e(0xb1)](_0xa6de0e(0xf2))){console[_0xa6de0e(0xf5)]('already\x20loading');return;}_0x1cb2de['addClass'](_0xa6de0e(0xf2)),_0x1cb2de['append'](_0xa6de0e(0x8e));try{_0x1cb2de['children']('ul')[_0xa6de0e(0x82)]();const {references:_0x11be00}=yield _0x36532d(_0x1cb2de,_0x4cf925);for(const _0x14564f of _0x11be00){if(_0x424d4b['options']['filter']&&!_0x424d4b['options'][_0xa6de0e(0xcc)](_0x14564f))continue;const _0x5cad02=_0x2177be(_0x14564f);_0x1cb2de[_0xa6de0e(0x10a)]('ul')[_0xa6de0e(0x114)](_0x5cad02);}_0x1cb2de[_0xa6de0e(0xb4)](_0xa6de0e(0x8a));}catch(_0x64f5f6){_0x1cb2de['children']('ul')[_0xa6de0e(0x114)]('<li>error\x20'+_0x64f5f6[_0xa6de0e(0x106)]+_0xa6de0e(0x75)),console[_0xa6de0e(0xf5)](_0xa6de0e(0x7d),_0x64f5f6);}_0x1cb2de[_0xa6de0e(0x8b)](_0xa6de0e(0xda))[_0xa6de0e(0x7b)](),_0x1cb2de[_0xa6de0e(0xdc)](_0xa6de0e(0xf2));});}_0x424d4b[_0x446db8(0x104)]=this[_0x446db8(0x71)],_0x424d4b['$combo']=$(_0x446db8(0x10d)),_0x424d4b[_0x446db8(0xc2)][_0x446db8(0xb4)](_0x446db8(0x11c)),this['element'][_0x446db8(0xd6)](_0x424d4b[_0x446db8(0xc2)]),_0x424d4b[_0x446db8(0xd1)]=$(_0x446db8(0x10d))[_0x446db8(0xb4)](_0x446db8(0xa7)),_0x424d4b['$combo'][_0x446db8(0x114)](_0x424d4b[_0x446db8(0xd1)]),_0x424d4b[_0x446db8(0xd1)][_0x446db8(0x114)](_0x424d4b[_0x446db8(0x104)]),_0x424d4b['$toggleTreeBtn']=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x424d4b[_0x446db8(0xd1)][_0x446db8(0x114)](_0x424d4b[_0x446db8(0xe8)]),_0x424d4b[_0x446db8(0xe8)]['on']('click',function(){const _0xeca18f=_0x446db8;!_0x424d4b[_0xeca18f(0x113)]['is'](_0xeca18f(0x97))&&(_0x424d4b[_0xeca18f(0x9c)]()[_0xeca18f(0xc0)](_0x3af338=>{const _0x50610b=_0xeca18f;var _0x1d3b08;(_0x3af338!==_0x424d4b[_0x50610b(0x110)]||((_0x1d3b08=_0x424d4b[_0x50610b(0x110)])===null||_0x1d3b08===void 0x0?void 0x0:_0x1d3b08[_0x50610b(0x9b)])!==_0x3af338['nodeId'])&&_0x424d4b[_0x50610b(0x8c)]();}),_0x424d4b[_0xeca18f(0x7f)][_0xeca18f(0x115)]()),_0x424d4b[_0xeca18f(0x113)][_0xeca18f(0x77)]();}),_0x424d4b[_0x446db8(0x10b)]=$(_0x446db8(0xe6)),_0x424d4b[_0x446db8(0xd1)][_0x446db8(0x114)](_0x424d4b[_0x446db8(0x10b)]),_0x424d4b[_0x446db8(0x10b)]['on']('click',()=>{const _0x3c0475=_0x446db8;this[_0x3c0475(0x10f)]();}),!_0x424d4b[_0x446db8(0x104)][_0x446db8(0xfb)](_0x446db8(0xa9))&&_0x424d4b['$input'][_0x446db8(0xfb)](_0x446db8(0xa9),_0x446db8(0xba)),_0x424d4b[_0x446db8(0x7f)]=$(_0x446db8(0x116)),_0x424d4b[_0x446db8(0x7f)]['hide'](),{'baseUrl':_0x424d4b[_0x446db8(0xf3)][_0x446db8(0x107)],'endpointNode':typeof _0x424d4b[_0x446db8(0xf3)][_0x446db8(0xcb)]===_0x446db8(0x118)?_0x424d4b['options']['endpointNode']():_0x424d4b[_0x446db8(0xf3)][_0x446db8(0xcb)],'endpoint':typeof _0x424d4b['options'][_0x446db8(0xe1)]===_0x446db8(0x118)?_0x424d4b[_0x446db8(0xf3)][_0x446db8(0xe1)]():_0x424d4b[_0x446db8(0xf3)][_0x446db8(0xe1)]},_0x424d4b['$dropdown']=$('<div/>')[_0x446db8(0xb4)](_0x446db8(0xb6))['hide'](),_0x424d4b[_0x446db8(0xc2)][_0x446db8(0x114)](_0x424d4b[_0x446db8(0x7f)]),_0x424d4b[_0x446db8(0xc2)][_0x446db8(0x114)](_0x424d4b['$dropdown']),_0x424d4b[_0x446db8(0x124)]=$(_0x446db8(0xae))[_0x446db8(0xe0)](_0x424d4b[_0x446db8(0x113)]),this[_0x446db8(0x8c)](),_0x424d4b[_0x446db8(0x124)]['on'](_0x446db8(0x8f),'li',function(_0x581958){const _0x38d541=_0x446db8;var _0x4e3156,_0x4c69bd;_0x581958[_0x38d541(0xab)]();let _0x590e2c=$(this);const _0x19ccb4=0x14,_0x15c347=0x14,_0x127016=$(this)[_0x38d541(0x8d)](),_0xcd4b24=_0x581958;if(_0xcd4b24[_0x38d541(0x78)]>=_0x127016['left']&&_0xcd4b24[_0x38d541(0x78)]<=_0x127016[_0x38d541(0x73)]+_0x19ccb4&&_0xcd4b24[_0x38d541(0x6e)]>=_0x127016[_0x38d541(0xaa)]&&_0xcd4b24[_0x38d541(0x6e)]<=_0x127016[_0x38d541(0xaa)]+_0x15c347){if(_0x590e2c[_0x38d541(0xb1)](_0x38d541(0x123))){if(_0x590e2c['hasClass']('fetched')){_0x590e2c['removeClass'](_0x38d541(0x123))[_0x38d541(0xb4)](_0x38d541(0x7e)),_0x590e2c[_0x38d541(0x10a)]('ul')[_0x38d541(0x77)]();return;}const _0x405578={'baseUrl':_0x424d4b[_0x38d541(0xf3)]['baseUrl'],'endpointNode':typeof _0x424d4b[_0x38d541(0xf3)]['endpointNode']===_0x38d541(0x118)?_0x424d4b['options'][_0x38d541(0xcb)]():_0x424d4b[_0x38d541(0xf3)][_0x38d541(0xcb)],'endpoint':typeof _0x424d4b[_0x38d541(0xf3)][_0x38d541(0xe1)]===_0x38d541(0x118)?_0x424d4b[_0x38d541(0xf3)][_0x38d541(0xe1)]():_0x424d4b[_0x38d541(0xf3)][_0x38d541(0xe1)]},_0x181a26=!_0x424d4b[_0x38d541(0xf3)][_0x38d541(0x103)]?_0x55ca54:_0x7f2a9d;_0x14be34(_0x590e2c,_0x181a26,_0x405578)[_0x38d541(0xc0)](()=>{const _0x39b761=_0x38d541;console[_0x39b761(0xf5)](_0x39b761(0xf9)),console[_0x39b761(0xf5)](_0x39b761(0x8a)),_0x590e2c['removeClass']('expandable')['addClass'](_0x39b761(0x7e));})[_0x38d541(0xef)](_0x140c10=>{const _0xfed285=_0x38d541;_0x590e2c['removeClass'](_0xfed285(0x123))[_0xfed285(0xb4)]('expanded'),console['log'](_0xfed285(0x9f),_0x140c10);});}else{if(_0x590e2c[_0x38d541(0xb1)](_0x38d541(0x7e)))_0x590e2c['children']('ul')['toggle'](),_0x590e2c[_0x38d541(0xb5)](_0x38d541(0x76));else{if(_0x590e2c[_0x38d541(0x10a)]('ul')[_0x38d541(0x10a)]()[_0x38d541(0xc6)]>0x0)_0x590e2c['children']('ul')[_0x38d541(0x77)](),_0x590e2c[_0x38d541(0xb5)](_0x38d541(0x76));else;}}}else{const _0x1c652f=_0x590e2c[_0x38d541(0x96)](_0x38d541(0xea)),_0x1aaf3d=_0x590e2c[_0x38d541(0x96)](_0x38d541(0xf7));if(_0x424d4b[_0x38d541(0xf3)][_0x38d541(0x11a)]&&!_0x424d4b['options'][_0x38d541(0x11a)](_0x1aaf3d))return;_0x424d4b[_0x38d541(0x104)][_0x38d541(0x96)](_0x38d541(0xf7),_0x1aaf3d);const _0x40f187=((_0x4e3156=_0x1aaf3d[_0x38d541(0xa3)])===null||_0x4e3156===void 0x0?void 0x0:_0x4e3156[_0x38d541(0x79)])||((_0x4c69bd=_0x1aaf3d['browseName'])===null||_0x4c69bd===void 0x0?void 0x0:_0x4c69bd[_0x38d541(0xaf)])||_0x1aaf3d[_0x38d541(0x9b)][_0x38d541(0xe3)](),_0x385e21='['+_0x40f187+']('+_0x1c652f+')';_0x424d4b[_0x38d541(0x104)]['val'](_0x385e21),_0x424d4b[_0x38d541(0x104)][_0x38d541(0xb8)](_0x38d541(0xfe)),_0x424d4b[_0x38d541(0x113)][_0x38d541(0x115)]();}}),$(document)['on']('click',function(_0x333b52){const _0x38de4b=_0x446db8;!$(_0x333b52['target'])[_0x38de4b(0x10e)](_0x424d4b[_0x38de4b(0xc2)])['length']&&_0x424d4b['$dropdown']['hide']();});}});};function _0x34bebb(_0x21c533,_0x498ddd){const _0x544897=_0x398814,_0x3c2701=$(_0x544897(0xd5)),_0x412556=$('#node-input-subscription'),_0x22295e=()=>{const _0x45378c=_0x544897,_0x29b625=_0x21c533[_0x45378c(0x101)][_0x45378c(0x127)](_0x3c2701['val']());_0x412556[_0x45378c(0x82)]();if(!_0x29b625||!_0x29b625[_0x45378c(0xbf)])return;if(_0x29b625[_0x45378c(0xbf)])for(const _0x1d1557 of _0x29b625[_0x45378c(0xbf)]){const _0x1cbc29=_0x1d1557[_0x45378c(0xaf)]||_0x1d1557['id'];$(_0x45378c(0xf8),{'value':_0x1d1557['id'],'label':_0x1cbc29,'selected':_0x1d1557['id']===_0x498ddd[_0x45378c(0x88)]})[_0x45378c(0x79)](_0x1cbc29)[_0x45378c(0xe0)](_0x412556);}};_0x22295e(),_0x412556['on'](_0x544897(0x85),()=>{_0x22295e();}),_0x3c2701['on']('change',()=>{_0x22295e();});}const _0x402d16=()=>{const _0x5a9809=_0x398814,_0x420422=$('#node-input-endpoint'),_0x100c46=_0x420422['val'](),_0x232eff=RED[_0x5a9809(0x101)][_0x5a9809(0x127)](_0x100c46);if(!_0x232eff)return undefined;const {endpoint:_0x5ad7d8,securityMode:_0x17649e,securityPolicy:_0x46feed,userIdentityType:_0x2ddbd8,credentials:_0x4565f3}=_0x232eff,_0x2260ca={'endpoint':_0x5ad7d8,'securityMode':_0x17649e,'securityPolicy':_0x46feed,'userIdentityType':_0x2ddbd8,'credentials':_0x4565f3};return console[_0x5a9809(0xf5)]('xxx',_0x2260ca),_0x2260ca;},_0x5e1a99=()=>{return{'endpointNode':_0x12e95f};},_0x12e95f=()=>{const _0x2fd767=_0x398814,_0x324f7e=$(_0x2fd767(0xd5)),_0x2f9541=_0x324f7e['val'](),_0xcd32b=_0x402d16();if(!_0xcd32b)return undefined;return{'id':_0x2f9541};};RED['nodes'][_0x398814(0x9d)]('OpcUa-Client2-Monitor',{'category':_0x398814(0xf0),'color':'#C0DEED','align':'right','icon':_0x398814(0xa0),'paletteLabel':_0x398814(0xdd),'defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x398814(0x105)},'subscription':{'value':'','required':!![],'validate':_0x1d6052=>{if(_0x1d6052==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':_0x398814(0xfd),'required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x40831b=_0x398814;return this[_0x40831b(0xaf)]||_0x40831b(0xeb);},'labelStyle'(){const _0x4de445=_0x398814;return this[_0x4de445(0xaf)]?_0x4de445(0x108):'';},'oneditprepare'(){const _0x2de45b=_0x398814,_0x570e72=this;_0x56e2b0();const _0x1e547c=_0x570e72[_0x2de45b(0x9a)];_0x570e72[_0x2de45b(0xb0)]=_0x1e547c?0x0:0x1,_0x34bebb(RED,this),$(_0x2de45b(0xec))['on'](_0x2de45b(0xfe),()=>{const _0x130584=_0x2de45b,_0x3fcfc7=$('#node-input-startImmediately')[_0x130584(0xcd)](_0x130584(0x93));_0x3fcfc7?$('#node-input-inputs')[_0x130584(0xf1)](0x0):$(_0x130584(0x111))[_0x130584(0xf1)](0x1);});const _0x42062f=$('#node-input-nodeId');_0x42062f[_0x2de45b(0x129)](Object[_0x2de45b(0xbe)](Object['assign']({},_0x5e1a99()),{'filter'(_0x7578d){const _0xeae9bc=_0x2de45b;return _0x7578d['nodeClass']===_0xeae9bc(0x9e)||_0x7578d[_0xeae9bc(0x11e)]==='Object';},'isSelectable'(_0x57624e){const _0x1e98d6=_0x2de45b;return _0x57624e['nodeClass']===_0x1e98d6(0x9e);}}));},'oneditsave'(){const _0xa344a9=_0x398814,_0x5aa986=$(_0xa344a9(0xbc))['prop'](_0xa344a9(0x93));_0x5aa986?($('#node-input-startImmediately')[_0xa344a9(0xf1)](_0x5aa986?0x0:0x1),this[_0xa344a9(0xb0)]=_0x5aa986?0x0:0x1):($(_0xa344a9(0xbc))[_0xa344a9(0xf1)](0x1),this[_0xa344a9(0xb0)]=0x1);}});}()));
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxYzE2MDIiLCJfMHgxZjBkMDYiLCJfMHhhNTYzN2IiLCJfMHg5Mzk0YTEiLCJfMHgzM2IzNjkiLCJfMHgyZGIzZmMiLCJfMHg1M2VmNWIiLCJfMHgyZThmOTYiLCJQcm9taXNlIiwiXzB4NTE4YWNjIiwiXzB4MmRiNjExIiwiXzB4Mjc5MWEwIiwiXzB4MmUwNDlmIiwiXzB4MmJlNTE1IiwiXzB4MjBjZDlhIiwiXzB4NGUxMWUwIiwiXzB4NDRhMzFkIiwiXzB4MzVhNzUxIiwiXzB4NWExNzE2IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4M2Y1YmE4IiwiXzB4ZDlmYTgwIiwiXzB4MzQ1ZTk2IiwiXzB4Y2I4ZGY3IiwiRXJyb3IiLCJfMHgzODViODEiLCJfMHg0YTE4ZGEiLCJfMHg4MDQwMTMiLCJfMHg0YjA3M2YiLCJfMHgzYmQ4YzEiLCJfMHhmNDdkYzEiLCJfMHg1ZWYzZWEiLCJfMHgxNGUwMDQiLCJfMHg0YzY0YjUiLCJfMHgyZTBiYjYiLCJfMHg0ZjcxNGMiLCJfMHgxZjk3MzYiLCJfMHg0MGU0YWEiLCJfMHhiOWIxYWQiLCJfMHgxOGQwMmQiLCJfMHgzZmYxZjciLCJfMHg0ZmIwYmYiLCJfMHg1YWY3NWIiLCJfMHg0Y2IwMDMiLCJfMHgyYjVjMDQiLCJlbmRwb2ludE5vZGUiLCJfMHgyYThlMjQiLCJlbmRwb2ludCIsIl8weDU0ODk5YyIsImJhc2VVcmwiLCJfMHg1MjhkZDciLCJfMHgxNWUwNGEiLCJfMHhmNWMzOGEiLCJfMHg1ZWRiYjEiLCJfMHgyNzQzZDQiLCJfMHgxNTFkYjYiLCJPYmplY3QiLCJfMHgyYWQzZGUiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NTRhNzA4IiwiXzB4NDVmZjBkIiwiXzB4MTlkNzFhIiwiXzB4ODRlNDc1IiwiXzB4MzNhNTRmIiwiXzB4NTM5M2JhIiwiXzB4ZGNhMjg0IiwiXzB4NTY5MTE3IiwiXzB4NDg0ZjZlIiwiXzB4NGRmZjQ1IiwiXzB4MWNmODczIiwiXzB4NDZjNmQ2IiwiXzB4NTM2MDJmIiwiXzB4MmM3ODcyIiwiXzB4NTgyY2FmIiwiXzB4NWI3MjhlIiwic2V0VGltZW91dCIsIl8weDNkZDYzNyIsIl8weDU1Y2E1NCIsIl8weDEzZjc5MyIsIl8weDMyMmFmNyIsIl8weDExMzZlZSIsIl8weDE5NzU5ZCIsIl8weDJlOWViMiIsIl8weDMxZmZlMyIsIl8weDdmMmE5ZCIsIl8weDUwMDQ2ZiIsIl8weDFlM2MxMCIsIl8weDRiYTQyOCIsIl8weDRkYjVkMSIsIl8weDIxNzdiZSIsIl8weDExODcwNyIsIl8weDVlMDZjZiIsIl8weDVhMTllNiIsIl8weDI0ZTA1YSIsIiQiLCJfMHgxMmM4N2QiLCJfMHg0ZTQyZTAiLCJpY29uIiwiXzB4NGNjNDYwIiwiY29sb3IiLCJfMHhkMjFlODMiLCJfMHg0OTUzYmEiLCJfMHg1NmUyYjAiLCJ1bmRlZmluZWQiLCJfMHg2ZWMxNzUiLCJfMHgxODAxNDMiLCJfMHgyNWQxMmMiLCJfMHg2MTIxMTUiLCJfMHg1M2YyYTYiLCJfMHgxMmMzMTUiLCJfMHgyMTFjYWMiLCJfMHg0MjRkNGIiLCJfMHgxNGJlMzQiLCJfMHgxY2IyZGUiLCJfMHgzNjUzMmQiLCJfMHg0Y2Y5MjUiLCJyZWZlcmVuY2VzIiwiXzB4MTFiZTAwIiwiXzB4MTQ1NjRmIiwiXzB4NWNhZDAyIiwiXzB4NjRmNWY2IiwiXzB4M2FmMzM4IiwiXzB4MWQzYjA4IiwiXzB4NTgxOTU4IiwiXzB4NGUzMTU2IiwiXzB4NGM2OWJkIiwiXzB4NTkwZTJjIiwiXzB4MTljY2I0IiwiXzB4MTVjMzQ3IiwiXzB4MTI3MDE2IiwiXzB4Y2Q0YjI0IiwiXzB4NDA1NTc4IiwiXzB4MTgxYTI2IiwiXzB4MTQwYzEwIiwiXzB4MWM2NTJmIiwiXzB4MWFhZjNkIiwiXzB4NDBmMTg3IiwiXzB4Mzg1ZTIxIiwiZG9jdW1lbnQiLCJfMHgzMzNiNTIiLCJfMHgzNGJlYmIiLCJfMHgyMWM1MzMiLCJfMHg0OThkZGQiLCJfMHgzYzI3MDEiLCJfMHg0MTI1NTYiLCJfMHgyMjI5NWUiLCJfMHgyOWI2MjUiLCJfMHgxZDE1NTciLCJfMHgxY2JjMjkiLCJfMHg0MDJkMTYiLCJfMHg0MjA0MjIiLCJfMHgxMDBjNDYiLCJfMHgyMzJlZmYiLCJSRUQiLCJfMHg1YWQ3ZDgiLCJzZWN1cml0eU1vZGUiLCJfMHgxNzY0OWUiLCJzZWN1cml0eVBvbGljeSIsIl8weDQ2ZmVlZCIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyZGRiZDgiLCJjcmVkZW50aWFscyIsIl8weDQ1NjVmMyIsIl8weDIyNjBjYSIsIl8weDVlMWE5OSIsIl8weDEyZTk1ZiIsIl8weDMyNGY3ZSIsIl8weDJmOTU0MSIsIl8weGNkMzJiIiwiXzB4MWQ2MDUyIiwiXzB4NTcwZTcyIiwiXzB4MWU1NDdjIiwiXzB4M2ZjZmM3IiwiXzB4NDIwNjJmIiwiXzB4NzU3OGQiLCJfMHg1NzYyNGUiLCJfMHg1YWE5ODYiXSwibWFwcGluZ3MiOiIyZ0hBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMsQ0FBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxNQUFBLEVBQWVRLFNBQWYsQ0FBTCxDLEVBQStCLE1BQU9FLFNBQVAsQyxDQUFZSixTQUFBLENBQU9JLFNBQVAsQyxHQUM3RSxTQUFTQyxTQUFULENBQWtCQyxTQUFsQixDLHlCQUEyQixHLENBQU1ILFNBQUEsQ0FBS1QsU0FBQSxDLGdCQUFBLEVBQW1CWSxTQUFuQixDQUFMLEMsRUFBbUMsTUFBT0MsU0FBUCxDLENBQVlQLFNBQUEsQ0FBT08sU0FBUCxDLEdBQ2hGLFNBQVNKLFNBQVQsQ0FBY0ssU0FBZCxDLHlCQUF3QkEsU0FBQSxDLGVBQUEsRUFBY1QsU0FBQSxDQUFRUyxTQUFBLEMsZUFBQSxDQUFSLENBQWQsQ0FBc0NiLFNBQUEsQ0FBTWEsU0FBQSxDLGVBQUEsQ0FBTixFLGVBQUEsRUFBeUJQLFNBQXpCLENBQW9DSSxTQUFwQyxDLEVBQzlERixTQUFBLENBQU0sQ0FBQVQsU0FBQSxDQUFZQSxTQUFBLEMsZUFBQSxFQUFnQkgsU0FBaEIsQ0FBeUJDLFNBQUEsRUFBYyxFQUF2QyxDQUFaLENBQUQsQyxlQUFBLEdBQUwsQyxFQUpHLEMsRUFRWCxPQUFPaUIsZUFBUCxHLGdCQUFBLENBQXdDQSxlQUF4QyxDQUEwRCxTQUFVQyxTQUFWLENBQWlCQyxTQUFqQixDQUE2QkMsU0FBN0IsQywyQkFDdEQsSUFBSUMsU0FBQSxDQUFJLElBQUlDLEtBQUosQ0FBVUYsU0FBVixDQUFSLEMsT0FDT0MsU0FBQSxDLGVBQUEsRSxlQUFBLENBQTRCQSxTQUFBLEMsT0FBQSxFQUFVSCxTQUF0QyxDQUE2Q0csU0FBQSxDLFlBQUEsRUFBZUYsU0FBNUQsQ0FBd0VFLFMsRUFGbkYsQ0FLQSxNQUFNRSxTQUFBLEMsV0FBTixDQUNNQyxTQUFBLEMsZUFETixDQUVNQyxTQUFBLEMsZ0JBRk4sQ0FHTUMsU0FBQSxDLFdBSE4sQ0FJTUMsU0FBQSxDLGVBSk4sQ0FLTUMsU0FBQSxDLFdBTE4sQ0FNTUMsU0FBQSxDLGVBTk4sQ0FRQSxJQUFJQyxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxlQUFBLEUsR0FBaEIsRSxVQUNBQSxTQUFBLENBQWdCQSxTQUFBLEMsZ0JBQUEsRSxHQUFoQixFLGlCQUNBQSxTQUFBLENBQWdCQSxTQUFBLEMsZUFBQSxFLEdBQWhCLEUsZ0JBQ0FBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxlQUFBLEUsR0FBaEIsRSxpQkFKSixDQUtHRCxTQUFBLEVBQW9CLENBQUFBLFNBQUEsQ0FBa0IsRUFBbEIsQ0FMdkIsR0FNQSxJQUFJRSxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBVUEsU0FBQSxDLGVBQUEsRSxHQUFWLEUsZ0JBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGVBQUEsRSxHQUFWLEUsU0FDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLEdBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsUUFBQSxFLEdBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLEdBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsY0FBQSxFLElBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLElBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLElBQVYsRSxnQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZUFBQSxFLElBQVYsRSxpQkFUSixDQVVHRCxTQUFBLEVBQWMsQ0FBQUEsU0FBQSxDQUFZLEVBQVosQ0FWakIsR0FXQSxJQUFJRSxTQUFKLENBQ0EsQ0FBQyxTQUFVQyxTQUFWLEMsMkJBQ0dBLFNBQUEsQ0FBY0EsU0FBQSxDLGVBQUEsRSxHQUFkLEUsZ0JBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLGVBQUEsRSxHQUFkLEUsZ0JBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLFFBQUEsRSxHQUFkLEUsZ0JBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLFlBQUEsRSxHQUFkLEUsZ0JBQ0FBLFNBQUEsQ0FBY0EsU0FBQSxDLGVBQUEsRSxJQUFkLEUsZUFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLElBQWQsRSxnQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLElBQWQsRSxXQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxlQUFBLEUsSUFBZCxFLGlCQVJKLENBU0dELFNBQUEsRUFBa0IsQ0FBQUEsU0FBQSxDQUFnQixFQUFoQixD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LENBQ1o4RSxTLENBQ0E5RSxDQUFBLEMsb0JBQUEsRSxlQUFBLEUsR0FBQSxDLENBR0FBLENBQUEsQyxnQkFBQSxFLGVBQUEsRSxHQUFBLEMsRUFOUixDQUZBLENBY0EsTUFBTStFLFNBQUEsQ0FBVS9FLENBQUEsQyxvQkFBQSxDQUFoQixDQUNBK0UsU0FBQSxDLGdCQUFBLEVBQW9CdkgsTUFBQSxDLGVBQUEsRUFBY0EsTUFBQSxDLFFBQUEsRUFBYyxFQUFkLENBQWtCOEcsU0FBQSxFQUFsQixDQUFkLENBQWlFLEMsUUFBRSxDQUFPVSxRQUFQLEMsa0NBQ3hFQSxRQUFBLEMsV0FBQSxJLGVBQUEsRUFBcUNBLFFBQUEsQyxnQkFBQSxJLFVBRGlDLEMsY0FHakYsQ0FBYUMsU0FBYixDLGtDQUNXQSxTQUFBLEMsV0FBQSxJLGlCQUpzRSxDQUFqRSxDQUFwQixDLEVBMUR3QyxDLFlBaUU1QyxFLDJCQUNVQyxTQUFBLENBQW1CbEYsQ0FBQSxDLGVBQUEsRSxNQUFBLEUsZUFBQSxDLENBQ3JCa0YsUyxFQUNBbEYsQ0FBQSxDLDhCQUFBLEUsZUFBQSxFQUFzQ2tGLFNBQUEsQyxHQUFBLEMsR0FBdEMsQyxDQUNBLEssZUFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2RsRixDQUFBLEMsZUFBQSxFLGVBQUEsRSxHQUFBLEMsQ0FDQSxLLGVBQUEsRSxNQXpFb0MsQ0FBaEQsQyxFQTloQkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1xdWVzdGlvblwiLCBjb2xvcjogXCJncmV5XCIgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJvd3NlID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSByZXNwb25zZS5icm93c2VSZXN1bHQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlcyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUxID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNDaGlsZFwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHRlbXBsYXRlMiA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiT3JnYW5pemVzXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sICRpbnB1dEVsZW1lbnQsICRpbmZvKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaChgJHtyb290fS9jaGVja05vZGVJZGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIG5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoanNvbi5ub2RlQWRkcmVzc1N0cmluZyk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke25vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSgkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpLnRoZW4oKHBhcmVudE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLWZsYXNrXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUgPSAkKGA8dWwgY2xhc3M9XCJzdGVyZml2ZS10cmVlXCI+PC91bD5gKS5hcHBlbmRUbyh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gMjA7IC8vIFNldCB3aWR0aCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVIZWlnaHQgPSAyMDsgLy8gU2V0IGhlaWdodCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50UG9zID0gJCh0aGlzKS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZldGNoRGF0YUZvck5vZGUoJGxpLCBmLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiIEZldGNoaW5nIGRvbmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgbm9kZSkge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0ICRzdWJzY3JpcHRpb24gPSAkKFwiI25vZGUtaW5wdXQtc3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICBjb25zdCBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gUkVELm5vZGVzLm5vZGUoJGVuZHBvaW50LnZhbCgpKTtcbiAgICAgICAgICAgICRzdWJzY3JpcHRpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIGlmICghZW5kcG9pbnQgfHwgIWVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcy5uYW1lIHx8IHMuaWQ7XG4gICAgICAgICAgICAgICAgICAgICQoXCI8b3B0aW9uLz5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHMuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogcy5pZCA9PT0gbm9kZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygkc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vIGhhY2tcbiAgICAgICAgLy8gJGlucHV0QWN0aW9uLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgLy8gICAgICRlbmRwb2ludC5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgJHN1YnNjcmlwdGlvbi5vbihcImZvY3VzIGNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICB9O1xuICAgICAgICBjb25zb2xlLmxvZyhcInh4eFwiLCByZXRWYWx1ZSk7XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGVuZHBvaW50SWQsXG4gICAgICAgICAgICAvLyBlbmRwb2ludDogZW5kcG9pbnROci5lbmRwb2ludCxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5TW9kZTogZW5kcG9pbnROci5zZWN1cml0eU1vZGUsXG4gICAgICAgICAgICAvLyBzZWN1cml0eVBvbGljeTogZW5kcG9pbnROci5zZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB1c2VySWRlbnRpdHlUeXBlOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICAvLyBjcmVkZW50aWFsOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJOYW1lOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlck5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBwYXNzd29yZDogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlID09PSBcIlVzZXJOYW1lXCIgPyBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnBhc3N3b3JkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gdXNlckNlcnRpZmljYXRlOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJDZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIC8vIHVzZXJQcml2YXRla2V5OiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJQcml2YXRla2V5LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1Nb25pdG9yXCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJtb25pdG9yIHZhcmlhYmxlXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogMiB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gbW9uaXRvclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFydEltbWVkaWF0ZWx5OiB7IHZhbHVlOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgLy8gd2UgdXNlIGEgZGlmZmVyZW50IHdpZGdldCBmb3IgZWRpdGluZyB0aGUgbm9kZUlkLCBiZWNhdXNlIHRoZSBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgc3BlY2lmaWMgdG8gbW9uaXRvciwgaG93ZXZlciBwcm9wZXJ0eSB3aWxsIGJlIHN0b3JlZCBpbiBub2RlSWRcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCIvU2VydmVyL1NlcnZlclN0YXR1cy9DdXJyZW50VGltZVwiLCByZXF1aXJlZDogZmFsc2UsIHZhbGlkYXRlOiAoKSA9PiB0cnVlIH0sXG4gICAgICAgICAgICBzYW1wbGluZ0ludGVydmFsOiB7IHZhbHVlOiAxMDAwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgZGlzY2FyZE9sZGVzdDogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHF1ZXVlU2l6ZTogeyB2YWx1ZTogMTAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGlucHV0czosXG4gICAgICAgIG91dHB1dHM6IDEsIC8veHhcbiAgICAgICAgLy8gMiBvdXRwdXQsIHNlY29uZCBmb3IgcmF3IG5vZGUtb3BjdWEgZGlhZ25vc3RpY3Mgb3IgbW9yZSBjb21wbGV0ZSBtZXNzYWdlXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBNb25pdG9yIFwiO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IFwibm9kZV9sYWJlbF9pdGFsaWNcIiA6IFwiXCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCgpO1xuICAgICAgICAgICAgY29uc3QgaXNJbW1lZGlhdGUgPSBub2RlLnN0YXJ0SW1tZWRpYXRlbHk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IGlzSW1tZWRpYXRlID8gMCA6IDE7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCB0aGlzKTtcbiAgICAgICAgICAgICQoXCJub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1pbnB1dHNcIikudmFsKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBBY3Rpb24gTW9uaXRvclxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgZmlsdGVyKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbW1lZGlhdGVseSA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
7
|
+
function _0xf29d(_0x23c68a,_0x3d3f20){const _0x55fe76=_0x55fe();return _0xf29d=function(_0xf29d4a,_0x391add){_0xf29d4a=_0xf29d4a-0x1f0;let _0x3b6541=_0x55fe76[_0xf29d4a];return _0x3b6541;},_0xf29d(_0x23c68a,_0x3d3f20);}function _0x55fe(){const _0x52e652=['subscription','ns=0;i=34','ns=0;i=45','ns=0;i=61','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','$toggleTreeBtn','right','resolveParentNode','#node-input-inputs','placeholder','fa-cog','ns=0;i=85','toggle','OpcUa-Endpoint2','nodeClass','toString','match','value','/browse','<li><i\x20class=\x22fa\x20','trigger','Forward','Objects',':visible','widget','fetching\x20failed\x20with\x20error','application/json','\x20Fetching\x20done','DataType','ObjectType','$verifyBtn','val','!!failure!!','<div/>','length','then','stringify','pageX','1318925LbdWzI','$input','CadetBlue','focus\x20click','TypeDefinition','expandable','append','VariableType','startImmediately','<ul\x20class=\x22sterfive-tree\x22></ul>','left','1214050nsdlzi','err','statusCode','#C0DEED','browseName','stopPropagation','json','Inverse','1706812LKgISC','target','prop','node','sterfive-info','nodes','monitor\x20variable','sterfive.nodeBrowser','expanded',';\x22></i>\x20','fa-object-group','hide','nodeId','references','already\x20fetched','Unspecified','input-group','Method','HasSubtype','grey','fa-question','log','toggleClass','addClass','already\x20loading','424272foWoYu','4070976GafPuF','subscriptions','ns=0;i=40','/opcua-endpoint2','node_label_italic','status','isSelectable','offset','18yJGEeL','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','endpointNode','failure','1505172XDEstR','SandyBrown','HasComponent','fetched\x20:\x20','removeClass','loading','statusText','SuppressedError','fa-sliders','$dropdown','View','text','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','fa-folder','opcua','baseUrl','catch','currentParent','8eggmWC','reference','Object','hasClass','Invalid','function','typeDefinition','../../icons/opcuanodeLogo.png','/checkNodeId','appendTo','117HffkfG','Both','sterfive-dropdown','assign','empty','DisplayName','top','parentNode','$combo','$tree','</li>','name','pageY','reset','fa-list-alt','Good','HasChild','throw','DodgerBlue','IsForward','HasTypeDefinition','data','/Server/ServerStatus/CurrentTime','error','click','verify','<li>error\x20','rgba(61,\x2060,\x204,\x200.525)','Variable','fetched','#node-input-subscription','POST','Organizes','children','ReferenceType','endpoint','element','NodeClass','DarkOrange','$inputGroup','<ul></ul></li>','expandable\x20expanded','HasProperty','message','remove','<div\x20class=\x22spinner\x22></div>','change','next','done','inputs','options','node-input-startImmediately','xxx','SteelBlue','#node-input-endpoint','filter','2206408NlTpgn','nodeAddressString','$info','ns=0;i=47','replaceWith','checked','referenceTypeId'];_0x55fe=function(){return _0x52e652;};return _0x55fe();}(function(_0x395be2,_0x24e0aa){const _0x2c2f2b=_0xf29d,_0x2a6f2e=_0x395be2();while(!![]){try{const _0xad1b1b=-parseInt(_0x2c2f2b(0x271))/0x1+parseInt(_0x2c2f2b(0x258))/0x2+parseInt(_0x2c2f2b(0x27e))/0x3*(-parseInt(_0x2c2f2b(0x290))/0x4)+-parseInt(_0x2c2f2b(0x245))/0x5*(parseInt(_0x2c2f2b(0x27a))/0x6)+parseInt(_0x2c2f2b(0x272))/0x7+-parseInt(_0x2c2f2b(0x218))/0x8+-parseInt(_0x2c2f2b(0x29a))/0x9*(-parseInt(_0x2c2f2b(0x250))/0xa);if(_0xad1b1b===_0x24e0aa)break;else _0x2a6f2e['push'](_0x2a6f2e['shift']());}catch(_0x785601){_0x2a6f2e['push'](_0x2a6f2e['shift']());}}}(_0x55fe,0x7e8db),(function(){'use strict';const _0xdd644=_0xf29d;function _0xf1c3e5(_0x188122,_0x173bef,_0x3a34f7,_0xd83df0){function _0x218427(_0x1b7725){return _0x1b7725 instanceof _0x3a34f7?_0x1b7725:new _0x3a34f7(function(_0x1b9b3a){_0x1b9b3a(_0x1b7725);});}return new(_0x3a34f7||(_0x3a34f7=Promise))(function(_0x83b6d7,_0x257787){const _0x10d590=_0xf29d;function _0x4b9218(_0x51ce12){try{_0x5213b8(_0xd83df0['next'](_0x51ce12));}catch(_0x1678e5){_0x257787(_0x1678e5);}}function _0x1df65f(_0x31c258){const _0x183a12=_0xf29d;try{_0x5213b8(_0xd83df0[_0x183a12(0x1f1)](_0x31c258));}catch(_0x24927c){_0x257787(_0x24927c);}}function _0x5213b8(_0x39bb95){const _0x556699=_0xf29d;_0x39bb95[_0x556699(0x210)]?_0x83b6d7(_0x39bb95[_0x556699(0x230)]):_0x218427(_0x39bb95[_0x556699(0x230)])['then'](_0x4b9218,_0x1df65f);}_0x5213b8((_0xd83df0=_0xd83df0['apply'](_0x188122,_0x173bef||[]))[_0x10d590(0x20f)]());});}typeof SuppressedError===_0xdd644(0x295)?SuppressedError:function(_0x2b4adc,_0x1a210f,_0x2b8640){const _0x341d99=_0xdd644;var _0x444062=new Error(_0x2b8640);return _0x444062[_0x341d99(0x2a5)]=_0x341d99(0x285),_0x444062[_0x341d99(0x1f7)]=_0x2b4adc,_0x444062['suppressed']=_0x1a210f,_0x444062;};const _0x31cd12='ns=0;i=35',_0xa1b3e0=_0xdd644(0x222),_0x165ed9=_0xdd644(0x21b),_0x16914f='ns=0;i=46',_0x385618=_0xdd644(0x220),_0x2a5908=_0xdd644(0x221),_0x4c472b=_0xdd644(0x274);var _0x58eca5;(function(_0x30ad97){const _0x5b6e6c=_0xdd644;_0x30ad97[_0x30ad97[_0x5b6e6c(0x234)]=0x0]=_0x5b6e6c(0x234),_0x30ad97[_0x30ad97['Inverse']=0x1]=_0x5b6e6c(0x257),_0x30ad97[_0x30ad97[_0x5b6e6c(0x29b)]=0x2]=_0x5b6e6c(0x29b),_0x30ad97[_0x30ad97[_0x5b6e6c(0x294)]=0x3]=_0x5b6e6c(0x294);}(_0x58eca5||(_0x58eca5={})));var _0x1c07fb;(function(_0x4c9ca6){const _0x10b430=_0xdd644;_0x4c9ca6[_0x4c9ca6[_0x10b430(0x267)]=0x0]=_0x10b430(0x267),_0x4c9ca6[_0x4c9ca6['Object']=0x1]='Object',_0x4c9ca6[_0x4c9ca6['Variable']=0x2]='Variable',_0x4c9ca6[_0x4c9ca6[_0x10b430(0x269)]=0x4]='Method',_0x4c9ca6[_0x4c9ca6[_0x10b430(0x23c)]=0x8]=_0x10b430(0x23c),_0x4c9ca6[_0x4c9ca6['VariableType']=0x10]='VariableType',_0x4c9ca6[_0x4c9ca6[_0x10b430(0x202)]=0x20]=_0x10b430(0x202),_0x4c9ca6[_0x4c9ca6['DataType']=0x40]=_0x10b430(0x23b),_0x4c9ca6[_0x4c9ca6[_0x10b430(0x288)]=0x80]=_0x10b430(0x288);}(_0x1c07fb||(_0x1c07fb={})));var _0x39df33;(function(_0x1024c0){const _0x3f30a6=_0xdd644;_0x1024c0[_0x1024c0[_0x3f30a6(0x292)]=0x1]=_0x3f30a6(0x292),_0x1024c0[_0x1024c0[_0x3f30a6(0x1fc)]=0x2]=_0x3f30a6(0x1fc),_0x1024c0[_0x1024c0[_0x3f30a6(0x269)]=0x4]='Method',_0x1024c0[_0x1024c0['ObjectType']=0x8]=_0x3f30a6(0x23c),_0x1024c0[_0x1024c0['VariableType']=0x10]=_0x3f30a6(0x24c),_0x1024c0[_0x1024c0[_0x3f30a6(0x202)]=0x20]=_0x3f30a6(0x202),_0x1024c0[_0x1024c0['DataType']=0x40]='DataType',_0x1024c0[_0x1024c0[_0x3f30a6(0x288)]=0x80]=_0x3f30a6(0x288);}(_0x39df33||(_0x39df33={})));var _0x39223c;(function(_0x10fd88){const _0x5b4a09=_0xdd644;_0x10fd88[_0x10fd88[_0x5b4a09(0x202)]=0x1]=_0x5b4a09(0x202),_0x10fd88[_0x10fd88['IsForward']=0x2]=_0x5b4a09(0x1f3),_0x10fd88[_0x10fd88[_0x5b4a09(0x205)]=0x4]=_0x5b4a09(0x205),_0x10fd88[_0x10fd88['BrowseName']=0x8]='BrowseName',_0x10fd88[_0x10fd88[_0x5b4a09(0x29f)]=0x10]=_0x5b4a09(0x29f),_0x10fd88[_0x10fd88['TypeDefinition']=0x20]=_0x5b4a09(0x249);}(_0x39223c||(_0x39223c={})));function _0x3728fa(_0x3f3489){const _0x4c031a=_0xdd644;switch(_0x3f3489){case _0x4c031a(0x200):return _0x31cd12;case _0x4c031a(0x20a):return _0x16914f;case _0x4c031a(0x280):return _0x165ed9;case _0x4c031a(0x1f0):return _0x385618;case _0x4c031a(0x26a):return _0x2a5908;case _0x4c031a(0x1f4):return _0x4c472b;}}const _0x39f87c=_0x5b53d7=>{const _0x1f5ad8=_0xdd644;switch(_0x5b53d7['nodeClass']){case'Object':if(_0x5b53d7[_0x1f5ad8(0x21e)]===_0x31cd12);if(_0x5b53d7[_0x1f5ad8(0x296)]===_0xa1b3e0||_0x5b53d7['referenceTypeId']==='i=61')return{'icon':_0x1f5ad8(0x28b),'color':_0x1f5ad8(0x1fb)};return{'icon':_0x1f5ad8(0x262),'color':'SeaGreen'};case _0x1f5ad8(0x1fc):if(_0x5b53d7[_0x1f5ad8(0x21e)]===_0x165ed9)return{'icon':_0x1f5ad8(0x2a8),'color':_0x1f5ad8(0x215)};else return _0x5b53d7[_0x1f5ad8(0x21e)]===_0x16914f?{'icon':_0x1f5ad8(0x2a8),'color':_0x1f5ad8(0x1f2)}:{'icon':_0x1f5ad8(0x2a8),'color':_0x1f5ad8(0x247)};case'Method':return{'icon':_0x1f5ad8(0x229),'color':_0x1f5ad8(0x27f)};case'ObjectType':return{'icon':_0x1f5ad8(0x262),'color':'DarkOrange'};case _0x1f5ad8(0x24c):return{'icon':_0x1f5ad8(0x286),'color':_0x1f5ad8(0x206)};}return{'icon':_0x1f5ad8(0x26c),'color':_0x1f5ad8(0x26b)};},_0x4fbfbd=({endpointNode:_0x2bf834,endpoint:_0x2b59d2,baseUrl:_0x587394},_0x1a228a,_0x21426c)=>_0xf1c3e5(void 0x0,void 0x0,void 0x0,function*(){const _0x4696c3=_0xdd644,_0xe10eb7=_0x587394+_0x4696c3(0x275),_0x3aa1a5=_0xe10eb7+_0x4696c3(0x231),_0x2da845=Object[_0x4696c3(0x29d)](Object[_0x4696c3(0x29d)]({},_0x21426c),{'nodeId':_0x1a228a,'resultMask':0x3f}),_0x333447=yield fetch(_0x3aa1a5,{'method':_0x4696c3(0x1ff),'body':JSON[_0x4696c3(0x243)]({'endpointNode':_0x2bf834,'endpoint':_0x2b59d2,'browseDescription':_0x2da845}),'headers':{'Content-Type':_0x4696c3(0x239)}});if(_0x333447[_0x4696c3(0x277)]!==0xc8)return console[_0x4696c3(0x26d)](_0x4696c3(0x238),_0x333447[_0x4696c3(0x277)],_0x333447['statusText']),{'references':[]};console[_0x4696c3(0x26d)](_0x4696c3(0x281),_0x333447[_0x4696c3(0x277)],_0x333447[_0x4696c3(0x284)]);const _0x274497=yield _0x333447[_0x4696c3(0x256)](),_0x5a96fe=_0x274497['browseResult'][_0x4696c3(0x265)]||[];return{'references':_0x5a96fe};}),_0x27b537={'referenceTypeId':_0x3728fa('HasChild'),'includeSubtypes':!![],'browseDirection':_0x58eca5[_0xdd644(0x234)],'nodeClassMask':_0x1c07fb[_0xdd644(0x1fc)]|_0x1c07fb[_0xdd644(0x292)]|_0x1c07fb['Method'],'resultMask':0x3f},_0x54cba5={'referenceTypeId':_0x3728fa(_0xdd644(0x200)),'includeSubtypes':!![],'browseDirection':_0x58eca5['Forward'],'nodeClassMask':_0x1c07fb[_0xdd644(0x1fc)]|_0x1c07fb[_0xdd644(0x292)]|_0x1c07fb[_0xdd644(0x269)],'resultMask':0x3f},_0x35e769=({endpointNode:_0x2c28e5,endpoint:_0x347d8a,baseUrl:_0x458633},_0x5c2a1b,_0x2ce239)=>_0xf1c3e5(void 0x0,void 0x0,void 0x0,function*(){const _0x185049=_0xdd644,_0x47b84b=_0x458633+_0x185049(0x275),_0x5f35d8=_0x5c2a1b[_0x185049(0x23e)](),_0x5b1407=yield fetch(_0x47b84b+_0x185049(0x298),{'method':'POST','body':JSON[_0x185049(0x243)]({'endpointNode':_0x2c28e5,'endpoint':_0x347d8a,'nodeId':_0x5f35d8}),'headers':{'Content-Type':_0x185049(0x239)}}),_0x3829eb=(_0x41c2c5,_0xe0e0ae)=>{const _0x38e023=_0x185049;_0x2ce239[_0x38e023(0x289)](_0x41c2c5)[_0x38e023(0x26f)](_0x38e023(0x25c))[_0x38e023(0x26f)](_0xe0e0ae),_0x2ce239['show'](),setTimeout(()=>{const _0x50bf79=_0x38e023;_0x2ce239['removeClass'](_0xe0e0ae),_0x2ce239[_0x50bf79(0x263)]();},0xbb8);},_0x611f2d=yield _0x5b1407['json']();_0x5b1407[_0x185049(0x277)]!==0xc8?_0x3829eb(_0x185049(0x23f)+_0x5f35d8,'failure'):_0x611f2d[_0x185049(0x252)][_0x185049(0x22f)](/Good/)?(_0x5c2a1b[_0x185049(0x23e)](_0x611f2d[_0x185049(0x219)]),_0x5c2a1b['trigger']('change'),_0x3829eb(_0x185049(0x2a9),'ok')):(_0x5c2a1b[_0x185049(0x23e)](''+_0x5f35d8),_0x3829eb(_0x611f2d[_0x185049(0x252)]+'\x20'+_0x5b1407['statusText'],_0x185049(0x27d)));});function _0x55e65a(_0x5c3378,_0x18baa9){return _0xf1c3e5(this,void 0x0,void 0x0,function*(){const _0x8e4b0b=_0xf29d,_0x554471=_0x5c3378[_0x8e4b0b(0x1f5)](_0x8e4b0b(0x230)),_0x1b0898=yield _0x4fbfbd(_0x18baa9,_0x554471,_0x27b537),_0xb112f0=yield _0x4fbfbd(_0x18baa9,_0x554471,_0x54cba5);return{'references':[..._0x1b0898[_0x8e4b0b(0x265)],..._0xb112f0[_0x8e4b0b(0x265)]]};});}const _0xadc967={'referenceTypeId':_0x3728fa(_0xdd644(0x26a)),'includeSubtypes':!![],'browseDirection':_0x58eca5[_0xdd644(0x234)],'nodeClassMask':_0x1c07fb[_0xdd644(0x202)]|_0x1c07fb[_0xdd644(0x23c)]|_0x1c07fb['DataType']|_0x1c07fb[_0xdd644(0x24c)],'resultMask':0x3f};function _0x4d0516(_0x84542f,_0x5741f7){return _0xf1c3e5(this,void 0x0,void 0x0,function*(){const _0x1a27f8=_0xf29d,_0x5a53ec=_0x84542f[_0x1a27f8(0x1f5)](_0x1a27f8(0x230)),_0x16baed=yield _0x4fbfbd(_0x5741f7,_0x5a53ec,_0xadc967);return _0x16baed;});}const _0x67d1f8=_0x36e3b0=>{const _0x1e3213=_0xdd644;var _0x39f7e9,_0x46339c;if(!_0x36e3b0){const _0x47518e=$(_0x1e3213(0x27b));return _0x47518e;}const _0xe09d49=_0x36e3b0[_0x1e3213(0x264)][_0x1e3213(0x22e)](),_0x5257b2=((_0x39f7e9=_0x36e3b0['displayName'])===null||_0x39f7e9===void 0x0?void 0x0:_0x39f7e9[_0x1e3213(0x289)])||((_0x46339c=_0x36e3b0[_0x1e3213(0x254)])===null||_0x46339c===void 0x0?void 0x0:_0x46339c[_0x1e3213(0x2a5)])||_0x36e3b0[_0x1e3213(0x264)][_0x1e3213(0x22e)](),{icon:_0x54257b,color:_0x592885}=_0x39f87c(_0x36e3b0),_0x3acfff=$(_0x1e3213(0x232)+_0x54257b+'\x22\x20style=\x22color:'+_0x592885+_0x1e3213(0x261)+_0x5257b2+_0x1e3213(0x208));return _0x3acfff[_0x1e3213(0x26f)](_0x1e3213(0x24a)),_0x3acfff[_0x1e3213(0x1f5)](_0x1e3213(0x230),_0xe09d49),_0x3acfff['data']('reference',_0x36e3b0),_0x3acfff;},_0x5eb4d4=()=>{const _0x45ab98=_0xdd644;$[_0x45ab98(0x237)](_0x45ab98(0x25f),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x45ab98(0x235)},'nodeClass':_0x45ab98(0x292),'nodeId':_0x45ab98(0x22a),'displayName':{'text':_0x45ab98(0x235)},'typeDefinition':_0xa1b3e0}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0xf1c3e5(this,void 0x0,void 0x0,function*(){const _0x2eaaea=_0xf29d,_0x50b532=this,_0xc313c=typeof _0x50b532['options'][_0x2eaaea(0x2a1)]==='function'?_0x50b532[_0x2eaaea(0x212)][_0x2eaaea(0x2a1)]():_0x50b532[_0x2eaaea(0x212)][_0x2eaaea(0x2a1)];if(_0xc313c instanceof Promise)return yield _0xc313c;return _0xc313c;});},'reset'(){const _0x5b8076=_0x45ab98,_0x25595c=this;_0x25595c[_0x5b8076(0x2a3)]['empty'](),this['resolveParentNode']()['then'](_0x27a116=>{const _0x555d7a=_0x5b8076,_0x4dab85=_0x67d1f8(_0x27a116);_0x25595c[_0x555d7a(0x2a3)][_0x555d7a(0x24b)](_0x4dab85),_0x25595c[_0x555d7a(0x28f)]=_0x27a116;});},'verify'(){const _0x5f3559=_0x45ab98,_0x49bf07=this,_0x3f9038={'baseUrl':_0x49bf07[_0x5f3559(0x212)]['baseUrl'],'endpointNode':typeof _0x49bf07[_0x5f3559(0x212)][_0x5f3559(0x27c)]===_0x5f3559(0x295)?_0x49bf07[_0x5f3559(0x212)]['endpointNode']():_0x49bf07[_0x5f3559(0x212)][_0x5f3559(0x27c)],'endpoint':typeof _0x49bf07[_0x5f3559(0x212)]['endpoint']===_0x5f3559(0x295)?_0x49bf07[_0x5f3559(0x212)][_0x5f3559(0x203)]():_0x49bf07['options']['endpoint']};_0x35e769(_0x3f9038,_0x49bf07[_0x5f3559(0x246)],_0x49bf07['$info']);},'_create'(){const _0x3069d6=_0x45ab98,_0x2d10d2=this;function _0x4e4687(_0x360633,_0xdb05b8,_0xe7ba4){return _0xf1c3e5(this,void 0x0,void 0x0,function*(){const _0x2c17a8=_0xf29d;if(_0x360633[_0x2c17a8(0x293)](_0x2c17a8(0x1fd))){console[_0x2c17a8(0x26d)](_0x2c17a8(0x266));return;}if(_0x360633[_0x2c17a8(0x293)](_0x2c17a8(0x283))){console[_0x2c17a8(0x26d)](_0x2c17a8(0x270));return;}_0x360633[_0x2c17a8(0x26f)](_0x2c17a8(0x283)),_0x360633[_0x2c17a8(0x24b)](_0x2c17a8(0x20d));try{_0x360633[_0x2c17a8(0x201)]('ul')[_0x2c17a8(0x29e)]();const {references:_0x1d7025}=yield _0xdb05b8(_0x360633,_0xe7ba4);for(const _0x197127 of _0x1d7025){if(_0x2d10d2[_0x2c17a8(0x212)]['filter']&&!_0x2d10d2[_0x2c17a8(0x212)][_0x2c17a8(0x217)](_0x197127))continue;const _0x2888dd=_0x67d1f8(_0x197127);_0x360633['children']('ul')['append'](_0x2888dd);}_0x360633[_0x2c17a8(0x26f)](_0x2c17a8(0x1fd));}catch(_0x3831f4){_0x360633[_0x2c17a8(0x201)]('ul')[_0x2c17a8(0x24b)](_0x2c17a8(0x1fa)+_0x3831f4[_0x2c17a8(0x20b)]+_0x2c17a8(0x2a4)),console[_0x2c17a8(0x26d)](_0x2c17a8(0x251),_0x3831f4);}_0x360633['find']('.spinner')[_0x2c17a8(0x20c)](),_0x360633['removeClass']('loading');});}_0x2d10d2[_0x3069d6(0x246)]=this['element'],_0x2d10d2['$combo']=$(_0x3069d6(0x240)),_0x2d10d2[_0x3069d6(0x2a2)][_0x3069d6(0x26f)]('sterfive-combo-box'),this[_0x3069d6(0x204)][_0x3069d6(0x21c)](_0x2d10d2[_0x3069d6(0x2a2)]),_0x2d10d2[_0x3069d6(0x207)]=$('<div/>')['addClass'](_0x3069d6(0x268)),_0x2d10d2['$combo'][_0x3069d6(0x24b)](_0x2d10d2['$inputGroup']),_0x2d10d2[_0x3069d6(0x207)][_0x3069d6(0x24b)](_0x2d10d2[_0x3069d6(0x246)]),_0x2d10d2['$toggleTreeBtn']=$(_0x3069d6(0x223)),_0x2d10d2['$inputGroup']['append'](_0x2d10d2[_0x3069d6(0x224)]),_0x2d10d2[_0x3069d6(0x224)]['on']('click',function(){const _0x8f77b6=_0x3069d6;!_0x2d10d2['$dropdown']['is'](_0x8f77b6(0x236))&&(_0x2d10d2[_0x8f77b6(0x226)]()['then'](_0x79f012=>{const _0x2ae664=_0x8f77b6;var _0x47ac5f;(_0x79f012!==_0x2d10d2['currentParent']||((_0x47ac5f=_0x2d10d2[_0x2ae664(0x28f)])===null||_0x47ac5f===void 0x0?void 0x0:_0x47ac5f['nodeId'])!==_0x79f012[_0x2ae664(0x264)])&&_0x2d10d2[_0x2ae664(0x2a7)]();}),_0x2d10d2[_0x8f77b6(0x21a)][_0x8f77b6(0x263)]()),_0x2d10d2[_0x8f77b6(0x287)][_0x8f77b6(0x22b)]();}),_0x2d10d2[_0x3069d6(0x23d)]=$(_0x3069d6(0x28a)),_0x2d10d2['$inputGroup'][_0x3069d6(0x24b)](_0x2d10d2['$verifyBtn']),_0x2d10d2[_0x3069d6(0x23d)]['on'](_0x3069d6(0x1f8),()=>{const _0x411d9f=_0x3069d6;this[_0x411d9f(0x1f9)]();}),!_0x2d10d2[_0x3069d6(0x246)]['attr'](_0x3069d6(0x228))&&_0x2d10d2[_0x3069d6(0x246)]['attr'](_0x3069d6(0x228),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20'),_0x2d10d2['$info']=$('<div\x20class=\x22info-text\x22></div>'),_0x2d10d2['$info'][_0x3069d6(0x263)](),{'baseUrl':_0x2d10d2[_0x3069d6(0x212)]['baseUrl'],'endpointNode':typeof _0x2d10d2[_0x3069d6(0x212)][_0x3069d6(0x27c)]===_0x3069d6(0x295)?_0x2d10d2[_0x3069d6(0x212)][_0x3069d6(0x27c)]():_0x2d10d2['options']['endpointNode'],'endpoint':typeof _0x2d10d2[_0x3069d6(0x212)]['endpoint']===_0x3069d6(0x295)?_0x2d10d2[_0x3069d6(0x212)]['endpoint']():_0x2d10d2[_0x3069d6(0x212)]['endpoint']},_0x2d10d2[_0x3069d6(0x287)]=$(_0x3069d6(0x240))[_0x3069d6(0x26f)](_0x3069d6(0x29c))[_0x3069d6(0x263)](),_0x2d10d2[_0x3069d6(0x2a2)][_0x3069d6(0x24b)](_0x2d10d2[_0x3069d6(0x21a)]),_0x2d10d2[_0x3069d6(0x2a2)][_0x3069d6(0x24b)](_0x2d10d2['$dropdown']),_0x2d10d2[_0x3069d6(0x2a3)]=$(_0x3069d6(0x24e))[_0x3069d6(0x299)](_0x2d10d2[_0x3069d6(0x287)]),this[_0x3069d6(0x2a7)](),_0x2d10d2[_0x3069d6(0x2a3)]['on'](_0x3069d6(0x1f8),'li',function(_0x5055a2){const _0x46d639=_0x3069d6;var _0x51754d,_0x544367;_0x5055a2[_0x46d639(0x255)]();let _0x17bca6=$(this);const _0x5bcdba=0x14,_0x153a6e=0x14,_0x3d49c2=$(this)[_0x46d639(0x279)](),_0x14b109=_0x5055a2;if(_0x14b109[_0x46d639(0x244)]>=_0x3d49c2['left']&&_0x14b109[_0x46d639(0x244)]<=_0x3d49c2[_0x46d639(0x24f)]+_0x5bcdba&&_0x14b109[_0x46d639(0x2a6)]>=_0x3d49c2[_0x46d639(0x2a0)]&&_0x14b109[_0x46d639(0x2a6)]<=_0x3d49c2['top']+_0x153a6e){if(_0x17bca6[_0x46d639(0x293)](_0x46d639(0x24a))){if(_0x17bca6[_0x46d639(0x293)](_0x46d639(0x1fd))){_0x17bca6['removeClass']('expandable')['addClass']('expanded'),_0x17bca6[_0x46d639(0x201)]('ul')[_0x46d639(0x22b)]();return;}const _0x1f66a5={'baseUrl':_0x2d10d2[_0x46d639(0x212)][_0x46d639(0x28d)],'endpointNode':typeof _0x2d10d2[_0x46d639(0x212)]['endpointNode']===_0x46d639(0x295)?_0x2d10d2[_0x46d639(0x212)][_0x46d639(0x27c)]():_0x2d10d2[_0x46d639(0x212)][_0x46d639(0x27c)],'endpoint':typeof _0x2d10d2[_0x46d639(0x212)]['endpoint']===_0x46d639(0x295)?_0x2d10d2[_0x46d639(0x212)][_0x46d639(0x203)]():_0x2d10d2[_0x46d639(0x212)]['endpoint']},_0x43fe5b=!_0x2d10d2[_0x46d639(0x212)]['isTypeRef']?_0x55e65a:_0x4d0516;_0x4e4687(_0x17bca6,_0x43fe5b,_0x1f66a5)[_0x46d639(0x242)](()=>{const _0x3c82fa=_0x46d639;console[_0x3c82fa(0x26d)](_0x3c82fa(0x23a)),console['log']('fetched'),_0x17bca6[_0x3c82fa(0x282)](_0x3c82fa(0x24a))[_0x3c82fa(0x26f)](_0x3c82fa(0x260));})[_0x46d639(0x28e)](_0x285b76=>{const _0x5358ac=_0x46d639;_0x17bca6[_0x5358ac(0x282)]('expandable')[_0x5358ac(0x26f)](_0x5358ac(0x260)),console[_0x5358ac(0x26d)](_0x5358ac(0x1f7),_0x285b76);});}else{if(_0x17bca6[_0x46d639(0x293)](_0x46d639(0x260)))_0x17bca6[_0x46d639(0x201)]('ul')[_0x46d639(0x22b)](),_0x17bca6[_0x46d639(0x26e)](_0x46d639(0x209));else{if(_0x17bca6[_0x46d639(0x201)]('ul')[_0x46d639(0x201)]()['length']>0x0)_0x17bca6[_0x46d639(0x201)]('ul')['toggle'](),_0x17bca6[_0x46d639(0x26e)](_0x46d639(0x209));else;}}}else{const _0x247ade=_0x17bca6[_0x46d639(0x1f5)](_0x46d639(0x230)),_0x4a9094=_0x17bca6[_0x46d639(0x1f5)](_0x46d639(0x291));if(_0x2d10d2[_0x46d639(0x212)][_0x46d639(0x278)]&&!_0x2d10d2['options'][_0x46d639(0x278)](_0x4a9094))return;_0x2d10d2['$input'][_0x46d639(0x1f5)](_0x46d639(0x291),_0x4a9094);const _0x2bf1cf=((_0x51754d=_0x4a9094['displayName'])===null||_0x51754d===void 0x0?void 0x0:_0x51754d[_0x46d639(0x289)])||((_0x544367=_0x4a9094['browseName'])===null||_0x544367===void 0x0?void 0x0:_0x544367['name'])||_0x4a9094[_0x46d639(0x264)][_0x46d639(0x22e)](),_0x346b50='['+_0x2bf1cf+']('+_0x247ade+')';_0x2d10d2['$input'][_0x46d639(0x23e)](_0x346b50),_0x2d10d2['$input'][_0x46d639(0x233)](_0x46d639(0x20e)),_0x2d10d2[_0x46d639(0x287)][_0x46d639(0x263)]();}}),$(document)['on'](_0x3069d6(0x1f8),function(_0x26c589){const _0x5358b0=_0x3069d6;!$(_0x26c589[_0x5358b0(0x259)])['closest'](_0x2d10d2['$combo'])[_0x5358b0(0x241)]&&_0x2d10d2[_0x5358b0(0x287)]['hide']();});}});};function _0x564306(_0x190c9e,_0xfc39c){const _0x1d8120=_0xdd644,_0x2dd4f2=$(_0x1d8120(0x216)),_0x2d3e9a=$(_0x1d8120(0x1fe)),_0x26fedb=()=>{const _0x4df2c4=_0x1d8120,_0x5df534=_0x190c9e[_0x4df2c4(0x25d)][_0x4df2c4(0x25b)](_0x2dd4f2[_0x4df2c4(0x23e)]());_0x2d3e9a[_0x4df2c4(0x29e)]();if(!_0x5df534||!_0x5df534[_0x4df2c4(0x273)])return;if(_0x5df534[_0x4df2c4(0x273)])for(const _0x34dd23 of _0x5df534['subscriptions']){const _0x171d47=_0x34dd23[_0x4df2c4(0x2a5)]||_0x34dd23['id'];$('<option/>',{'value':_0x34dd23['id'],'label':_0x171d47,'selected':_0x34dd23['id']===_0xfc39c[_0x4df2c4(0x21f)]})[_0x4df2c4(0x289)](_0x171d47)[_0x4df2c4(0x299)](_0x2d3e9a);}};_0x26fedb(),_0x2d3e9a['on'](_0x1d8120(0x248),()=>{_0x26fedb();}),_0x2dd4f2['on']('change',()=>{_0x26fedb();});}const _0xd4cdb8=()=>{const _0x38bc72=_0xdd644,_0x3afa14=$('#node-input-endpoint'),_0x47e174=_0x3afa14[_0x38bc72(0x23e)](),_0x574ed0=RED[_0x38bc72(0x25d)][_0x38bc72(0x25b)](_0x47e174);if(!_0x574ed0)return undefined;const {endpoint:_0x24fc52,securityMode:_0xa3c441,securityPolicy:_0x4966e5,userIdentityType:_0x4712a2,credentials:_0x1ce65}=_0x574ed0,_0x530083={'endpoint':_0x24fc52,'securityMode':_0xa3c441,'securityPolicy':_0x4966e5,'userIdentityType':_0x4712a2,'credentials':_0x1ce65};return console[_0x38bc72(0x26d)](_0x38bc72(0x214),_0x530083),_0x530083;},_0x139940=()=>{return{'endpointNode':_0x32dbae};},_0x32dbae=()=>{const _0x4569d9=$('#node-input-endpoint'),_0x388359=_0x4569d9['val'](),_0x5253ff=_0xd4cdb8();if(!_0x5253ff)return undefined;return{'id':_0x388359};};RED[_0xdd644(0x25d)]['registerType']('OpcUa-Client2-Monitor',{'category':_0xdd644(0x28c),'color':_0xdd644(0x253),'align':_0xdd644(0x225),'icon':_0xdd644(0x297),'paletteLabel':_0xdd644(0x25e),'defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0xdd644(0x22c)},'subscription':{'value':'','required':!![],'validate':_0xf42b9e=>{if(_0xf42b9e==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':_0xdd644(0x1f6),'required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x4ba0a6=_0xdd644;return this[_0x4ba0a6(0x2a5)]||'OPCUA\x20Client\x20Monitor\x20';},'labelStyle'(){const _0x2fd1f8=_0xdd644;return this[_0x2fd1f8(0x2a5)]?_0x2fd1f8(0x276):'';},'oneditprepare'(){const _0x1aaabc=_0xdd644,_0x56964d=this;_0x5eb4d4();const _0x1b181e=_0x56964d[_0x1aaabc(0x24d)];_0x56964d[_0x1aaabc(0x211)]=_0x1b181e?0x0:0x1,_0x564306(RED,this),$(_0x1aaabc(0x213))['on'](_0x1aaabc(0x20e),()=>{const _0x137546=_0x1aaabc,_0x318877=$('#node-input-startImmediately')[_0x137546(0x25a)](_0x137546(0x21d));_0x318877?$('#node-input-inputs')['val'](0x0):$(_0x137546(0x227))['val'](0x1);});const _0x238f15=$('#node-input-nodeId');_0x238f15['nodeBrowser'](Object[_0x1aaabc(0x29d)](Object['assign']({},_0x139940()),{'filter'(_0x4b4ee6){const _0x51f384=_0x1aaabc;return _0x4b4ee6[_0x51f384(0x22d)]===_0x51f384(0x1fc)||_0x4b4ee6[_0x51f384(0x22d)]===_0x51f384(0x292);},'isSelectable'(_0x5022ec){const _0x2e686e=_0x1aaabc;return _0x5022ec[_0x2e686e(0x22d)]==='Variable';}}));},'oneditsave'(){const _0x4dd4bf=_0xdd644,_0x58ba7b=$('#node-input-startImmediately')[_0x4dd4bf(0x25a)](_0x4dd4bf(0x21d));_0x58ba7b?($('#node-input-startImmediately')['val'](_0x58ba7b?0x0:0x1),this['inputs']=_0x58ba7b?0x0:0x1):($('#node-input-startImmediately')[_0x4dd4bf(0x23e)](0x1),this[_0x4dd4bf(0x211)]=0x1);}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHhmMWMzZTUiLCJfMHgxODgxMjIiLCJfMHgxNzNiZWYiLCJfMHgzYTM0ZjciLCJfMHhkODNkZjAiLCJfMHgyMTg0MjciLCJfMHgxYjc3MjUiLCJfMHgxYjliM2EiLCJQcm9taXNlIiwiXzB4ODNiNmQ3IiwiXzB4MjU3Nzg3IiwiXzB4NGI5MjE4IiwiXzB4NTFjZTEyIiwiXzB4NTIxM2I4IiwiXzB4MTY3OGU1IiwiXzB4MWRmNjVmIiwiXzB4MzFjMjU4IiwiXzB4MjQ5MjdjIiwiXzB4MzliYjk1IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MmI0YWRjIiwiXzB4MWEyMTBmIiwiXzB4MmI4NjQwIiwiXzB4NDQ0MDYyIiwiRXJyb3IiLCJfMHgzMWNkMTIiLCJfMHhhMWIzZTAiLCJfMHgxNjVlZDkiLCJfMHgxNjkxNGYiLCJfMHgzODU2MTgiLCJfMHgyYTU5MDgiLCJfMHg0YzQ3MmIiLCJfMHg1OGVjYTUiLCJfMHgzMGFkOTciLCJfMHgxYzA3ZmIiLCJfMHg0YzljYTYiLCJfMHgzOWRmMzMiLCJfMHgxMDI0YzAiLCJfMHgzOTIyM2MiLCJfMHgxMGZkODgiLCJfMHgzNzI4ZmEiLCJfMHgzZjM0ODkiLCJfMHgzOWY4N2MiLCJfMHg1YjUzZDciLCJfMHg0ZmJmYmQiLCJlbmRwb2ludE5vZGUiLCJfMHgyYmY4MzQiLCJlbmRwb2ludCIsIl8weDJiNTlkMiIsImJhc2VVcmwiLCJfMHg1ODczOTQiLCJfMHgxYTIyOGEiLCJfMHgyMTQyNmMiLCJfMHhlMTBlYjciLCJfMHgzYWExYTUiLCJfMHgyZGE4NDUiLCJPYmplY3QiLCJfMHgzMzM0NDciLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4Mjc0NDk3IiwiXzB4NWE5NmZlIiwiXzB4MjdiNTM3IiwiXzB4NTRjYmE1IiwiXzB4MzVlNzY5IiwiXzB4MmMyOGU1IiwiXzB4MzQ3ZDhhIiwiXzB4NDU4NjMzIiwiXzB4NWMyYTFiIiwiXzB4MmNlMjM5IiwiXzB4NDdiODRiIiwiXzB4NWYzNWQ4IiwiXzB4NWIxNDA3IiwiXzB4MzgyOWViIiwiXzB4NDFjMmM1IiwiXzB4ZTBlMGFlIiwic2V0VGltZW91dCIsIl8weDYxMWYyZCIsIl8weDU1ZTY1YSIsIl8weDVjMzM3OCIsIl8weDE4YmFhOSIsIl8weDU1NDQ3MSIsIl8weDFiMDg5OCIsIl8weGIxMTJmMCIsIl8weGFkYzk2NyIsIl8weDRkMDUxNiIsIl8weDg0NTQyZiIsIl8weDU3NDFmNyIsIl8weDVhNTNlYyIsIl8weDE2YmFlZCIsIl8weDY3ZDFmOCIsIl8weDM2ZTNiMCIsIl8weDM5ZjdlOSIsIl8weDQ2MzM5YyIsIl8weDQ3NTE4ZSIsIiQiLCJfMHhlMDlkNDkiLCJfMHg1MjU3YjIiLCJpY29uIiwiXzB4NTQyNTdiIiwiY29sb3IiLCJfMHg1OTI4ODUiLCJfMHgzYWNmZmYiLCJfMHg1ZWI0ZDQiLCJ1bmRlZmluZWQiLCJfMHg1MGI1MzIiLCJfMHhjMzEzYyIsIl8weDI1NTk1YyIsIl8weDI3YTExNiIsIl8weDRkYWI4NSIsIl8weDQ5YmYwNyIsIl8weDNmOTAzOCIsIl8weDJkMTBkMiIsIl8weDRlNDY4NyIsIl8weDM2MDYzMyIsIl8weGRiMDViOCIsIl8weGU3YmE0IiwicmVmZXJlbmNlcyIsIl8weDFkNzAyNSIsIl8weDE5NzEyNyIsIl8weDI4ODhkZCIsIl8weDM4MzFmNCIsIl8weDc5ZjAxMiIsIl8weDQ3YWM1ZiIsIl8weDUwNTVhMiIsIl8weDUxNzU0ZCIsIl8weDU0NDM2NyIsIl8weDE3YmNhNiIsIl8weDViY2RiYSIsIl8weDE1M2E2ZSIsIl8weDNkNDljMiIsIl8weDE0YjEwOSIsIl8weDFmNjZhNSIsIl8weDQzZmU1YiIsIl8weDI4NWI3NiIsIl8weDI0N2FkZSIsIl8weDRhOTA5NCIsIl8weDJiZjFjZiIsIl8weDM0NmI1MCIsImRvY3VtZW50IiwiXzB4MjZjNTg5IiwiXzB4NTY0MzA2IiwiXzB4MTkwYzllIiwiXzB4ZmMzOWMiLCJfMHgyZGQ0ZjIiLCJfMHgyZDNlOWEiLCJfMHgyNmZlZGIiLCJfMHg1ZGY1MzQiLCJfMHgzNGRkMjMiLCJfMHgxNzFkNDciLCJfMHhkNGNkYjgiLCJfMHgzYWZhMTQiLCJfMHg0N2UxNzQiLCJfMHg1NzRlZDAiLCJSRUQiLCJfMHgyNGZjNTIiLCJzZWN1cml0eU1vZGUiLCJfMHhhM2M0NDEiLCJzZWN1cml0eVBvbGljeSIsIl8weDQ5NjZlNSIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHg0NzEyYTIiLCJjcmVkZW50aWFscyIsIl8weDFjZTY1IiwiXzB4NTMwMDgzIiwiXzB4MTM5OTQwIiwiXzB4MzJkYmFlIiwiXzB4NDU2OWQ5IiwiXzB4Mzg4MzU5IiwiXzB4NTI1M2ZmIiwiXzB4ZjQyYjllIiwiXzB4NTY5NjRkIiwiXzB4MWIxODFlIiwiXzB4MzE4ODc3IiwiXzB4MjM4ZjE1IiwiXzB4NGI0ZWU2IiwiXzB4NTAyMmVjIiwiXzB4NThiYTdiIl0sIm1hcHBpbmdzIjoibStHQUFBLENBQUMsVSxDQUNHLGEsdUJBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixTQUFVQyxTQUFWLENBQW1CQyxTQUFuQixDLHlCQUM1QixTQUFTQyxTQUFULENBQW1CQyxTQUFuQixDLENBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsTUFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMsU0FBbEIsQyx5QkFBMkIsRyxDQUFNSCxTQUFBLENBQUtULFNBQUEsQyxn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Y3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBjb25zdCBPcmdhbml6ZXNSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNVwiO1xuICAgIGNvbnN0IEZvbGRlclR5cGUgPSBcIm5zPTA7aT02MVwiO1xuICAgIGNvbnN0IEhhc0NvbXBvbmVudFJlZk5vZGVJZCA9IFwibnM9MDtpPTQ3XCI7XG4gICAgY29uc3QgSGFzUHJvcGVydHlSZWZOb2RlSWQgPSBcIm5zPTA7aT00NlwiO1xuICAgIGNvbnN0IEhhc0NoaWxkUmVmTm9kZUlkID0gXCJucz0wO2k9MzRcIjtcbiAgICBjb25zdCBIYXNTdWJ0eXBlUmVmTm9kZUlkID0gXCJucz0wO2k9NDVcIjtcbiAgICBjb25zdCBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZCA9IFwibnM9MDtpPTQwXCI7XG5cbiAgICB2YXIgQnJvd3NlRGlyZWN0aW9uO1xuICAgIChmdW5jdGlvbiAoQnJvd3NlRGlyZWN0aW9uKSB7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJGb3J3YXJkXCJdID0gMF0gPSBcIkZvcndhcmRcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmVyc2VcIl0gPSAxXSA9IFwiSW52ZXJzZVwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiQm90aFwiXSA9IDJdID0gXCJCb3RoXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZhbGlkXCJdID0gM10gPSBcIkludmFsaWRcIjtcbiAgICB9KShCcm93c2VEaXJlY3Rpb24gfHwgKEJyb3dzZURpcmVjdGlvbiA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzcztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzcykge1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVW5zcGVjaWZpZWRcIl0gPSAwXSA9IFwiVW5zcGVjaWZpZWRcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzIHx8IChOb2RlQ2xhc3MgPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3NNYXNrO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzTWFzaykge1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzTWFzayB8fCAoTm9kZUNsYXNzTWFzayA9IHt9KSk7XG4gICAgdmFyIFJlc3VsdE1hc2s7XG4gICAgKGZ1bmN0aW9uIChSZXN1bHRNYXNrKSB7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAxXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJJc0ZvcndhcmRcIl0gPSAyXSA9IFwiSXNGb3J3YXJkXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIk5vZGVDbGFzc1wiXSA9IDRdID0gXCJOb2RlQ2xhc3NcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiQnJvd3NlTmFtZVwiXSA9IDhdID0gXCJCcm93c2VOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkRpc3BsYXlOYW1lXCJdID0gMTZdID0gXCJEaXNwbGF5TmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJUeXBlRGVmaW5pdGlvblwiXSA9IDMyXSA9IFwiVHlwZURlZmluaXRpb25cIjtcbiAgICB9KShSZXN1bHRNYXNrIHx8IChSZXN1bHRNYXNrID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JnYW5pemVzUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1Byb3BlcnR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1Byb3BlcnR5UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NvbXBvbmVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDb21wb25lbnRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ2hpbGRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ2hpbGRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzU3VidHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNTdWJ0eXBlUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1R5cGVEZWZpbml0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SWNvbiA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZWZlcmVuY2Uubm9kZUNsYXNzKSB7XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IE9yZ2FuaXplc1JlZk5vZGVJZCkgO1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UudHlwZURlZmluaXRpb24gPT09IEZvbGRlclR5cGUgfHwgcmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gXCJpPTYxXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1mb2xkZXJcIiwgY29sb3I6IFwicmdiYSg2MSwgNjAsIDQsIDAuNTI1KVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIlNlYUdyZWVuXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNDb21wb25lbnRSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJTdGVlbEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNQcm9wZXJ0eVJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkRvZGdlckJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJNZXRob2RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWNvZ1wiLCBjb2xvcjogXCJTYW5keUJyb3duXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1zbGlkZXJzXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCAkaW5wdXRFbGVtZW50LCAkaW5mbykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCBub2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2goYCR7cm9vdH0vY2hlY2tOb2RlSWRgLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBub2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGpzb24ubm9kZUFkZHJlc3NTdHJpbmcpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtub2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUoKSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUoJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICQodGhpcykub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mZXRjaERhdGFGb3JOb2RlKCRsaSwgZiwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiBGZXRjaGluZyBkb25lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTdWJzY3JpcHRpb25TZWxlY3RvcihSRUQsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCAkc3Vic2NyaXB0aW9uID0gJChcIiNub2RlLWlucHV0LXN1YnNjcmlwdGlvblwiKTtcbiAgICAgICAgY29uc3QgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IFJFRC5ub2Rlcy5ub2RlKCRlbmRwb2ludC52YWwoKSk7XG4gICAgICAgICAgICAkc3Vic2NyaXB0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBpZiAoIWVuZHBvaW50IHx8ICFlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHMubmFtZSB8fCBzLmlkO1xuICAgICAgICAgICAgICAgICAgICAkKFwiPG9wdGlvbi8+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHMuaWQgPT09IG5vZGUuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oJHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICAvLyBoYWNrXG4gICAgICAgIC8vICRpbnB1dEFjdGlvbi5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgICRzdWJzY3JpcHRpb24ub24oXCJmb2N1cyBjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgJGVuZHBvaW50Lm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gUkVELihlbmRwb2ludElkKTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzYW5pdGl6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IHRoZSBub2RlLXJlZCBzdHVmZilcbiAgICAgICAgY29uc3QgeyBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSwgdXNlcklkZW50aXR5VHlwZSwgY3JlZGVudGlhbHMgfSA9IHJlZE5vZGU7XG4gICAgICAgIGNvbnN0IHJldFZhbHVlID0ge1xuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBzZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coXCJ4eHhcIiwgcmV0VmFsdWUpO1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBlbmRwb2ludElkLFxuICAgICAgICAgICAgLy8gZW5kcG9pbnQ6IGVuZHBvaW50TnIuZW5kcG9pbnQsXG4gICAgICAgICAgICAvLyBzZWN1cml0eU1vZGU6IGVuZHBvaW50TnIuc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgLy8gc2VjdXJpdHlQb2xpY3k6IGVuZHBvaW50TnIuc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdXNlcklkZW50aXR5VHlwZTogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgLy8gY3JlZGVudGlhbDogZW5kcG9pbnROci5jcmVkZW50aWFscyxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB1c2VyTmFtZTogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlID09PSBcIlVzZXJOYW1lXCIgPyBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gcGFzc3dvcmQ6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci5jcmVkZW50aWFscy5wYXNzd29yZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIHVzZXJDZXJ0aWZpY2F0ZTogZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyQ2VydGlmaWNhdGUsXG4gICAgICAgICAgICAvLyB1c2VyUHJpdmF0ZWtleTogZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyUHJpdmF0ZWtleSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItTW9uaXRvclwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwibW9uaXRvciB2YXJpYWJsZVwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDIgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICAvLyBmb3IgYWN0aW9uIG1vbml0b3JcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRJbW1lZGlhdGVseTogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIC8vIHdlIHVzZSBhIGRpZmZlcmVudCB3aWRnZXQgZm9yIGVkaXRpbmcgdGhlIG5vZGVJZCwgYmVjYXVzZSB0aGUgYmVoYXZpb3JcbiAgICAgICAgICAgIC8vIGlzIHNwZWNpZmljIHRvIG1vbml0b3IsIGhvd2V2ZXIgcHJvcGVydHkgd2lsbCBiZSBzdG9yZWQgaW4gbm9kZUlkXG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiL1NlcnZlci9TZXJ2ZXJTdGF0dXMvQ3VycmVudFRpbWVcIiwgcmVxdWlyZWQ6IGZhbHNlLCB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSB9LFxuICAgICAgICAgICAgc2FtcGxpbmdJbnRlcnZhbDogeyB2YWx1ZTogMTAwMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGRpc2NhcmRPbGRlc3Q6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBxdWV1ZVNpemU6IHsgdmFsdWU6IDEwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBpbnB1dHM6LFxuICAgICAgICBvdXRwdXRzOiAxLCAvL3h4XG4gICAgICAgIC8vIDIgb3V0cHV0LCBzZWNvbmQgZm9yIHJhdyBub2RlLW9wY3VhIGRpYWdub3N0aWNzIG9yIG1vcmUgY29tcGxldGUgbWVzc2FnZVxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBDbGllbnQgTW9uaXRvciBcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW1tZWRpYXRlID0gbm9kZS5zdGFydEltbWVkaWF0ZWx5O1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSBpc0ltbWVkaWF0ZSA/IDAgOiAxO1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgdGhpcyk7XG4gICAgICAgICAgICAkKFwibm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3JcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCIgfHwgbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW1tZWRpYXRlbHkgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgIGlmIChzdGFydEltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikudmFsKHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSBzdGFydEltbWVkaWF0ZWx5ID8gMCA6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-Monitor">
|
11
11
|
<style>
|