@opcua/for-node-red 2.0.3 → 2.0.5

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.
@@ -0,0 +1,171 @@
1
+ <style>
2
+ .sterfve-combo-box{position:relative;width:100%}.sterfve-combo-box .sterfve-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:150px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfve-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome;font-size:8pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome;font-size:8pt;font-weight:900;margin-right:5px}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-left:15px}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.input-group{align-items:center;border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.input-group input{border:none;flex:1;outline:none;padding:8px}.input-group button{background-color:#f1f1f1;border:none;border-left:1px solid #ccc;cursor:pointer;padding:8px 16px}.input-group button:hover{background-color:#ddd}.info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfve-combo-box .sterfve-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
3
+ /*# sourceMappingURL=OpcUa-Client2-Monitor.css.map */
4
+ </style>
5
+
6
+ <script type="text/javascript">
7
+ function _0x3b9d(){const _0x226c93=['application/json','<div\x20class=\x22spinner\x22></div>','Objects','OPCUA\x20Client\x20Monitor\x20','OpcUa-Client2-Monitor','/checkNodeId','#node-input-subscription','3081070cBnlKw','hasClass','referenceTypeId','nodeClass','find','error','<li>error\x20','currentParent','#node-input-endpoint','err','reset','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','10355940CEIduj','securityMode','json','fetched','checked','opcua','resolveParentNode','length','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','ReferenceType','POST','loading','top','node-input-startImmediately','prop','$inputGroup','.spinner','fetched\x20:\x20','append','270XLGyPq','DataType','browseName','993xwbMsH','$dropdown','UserName','password','../../icons/opcuanodeLogo.png','#node-input-inputs','subscriptions','ns=0;i=85',':visible','toggle','Organizes','hide','stringify','userIdentityType','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','sterfve-dropdown','node','val','Object','Method','replaceWith','SandyBrown','i=34','endpointNode','children','nodes','log','throw','$tree','remove','appendTo','failure','suppressed','startImmediately','CadetBlue','left','pageY','status','i=61','278697EMBfvh','opc.tcp://opcuademo.sterfive.com:26543','then','target','filter','node_label_italic','statusText','toggleClass','isSelectable','catch','$input','HasChild','i=35','stopPropagation','match','trigger','expandable\x20expanded','focus\x20click','removeClass','data','Good','Invalid','!!failure!!','Forward','$info','sterfive-info','nodeBrowser','reference','#node-input-startImmediately','function','Unspecified','7061544DBuzcR','element',';\x22></i>\x20','nodeId','\x20Fetching\x20done','<ul></ul></li>','baseUrl','VariableType','statusCode','Inverse','options','<div/>','ObjectType','sterfve-combo-box','nodeAddressString','ns=0;i=46','expanded','fa-cog','fechting\x20failed\x20with\x20error','empty','input-group','change','fa-list-alt','$toggleTreeBtn','references','View','show','OpcUa-Endpoint2','/opcua-endpoint2','parentNode','userPrivatekey','widget','$verifyBtn','addClass','#C0DEED','message','click','right','next','assign','already\x20fetched','expandable','$combo','/browse','1346344gkEqnn','Variable','ns=0;i=35','DarkOrange','DodgerBlue','typeDefinition','fa-sliders','text','registerType','<li><i\x20class=\x22fa\x20','verify','endpoint','fa-question','11144tWrmpH','name','inputs','48867nRjZtC','value'];_0x3b9d=function(){return _0x226c93;};return _0x3b9d();}function _0x3ded(_0x19b17e,_0xac02b6){const _0x3b9dd7=_0x3b9d();return _0x3ded=function(_0x3dedd9,_0x4e37c9){_0x3dedd9=_0x3dedd9-0xa5;let _0xa84efb=_0x3b9dd7[_0x3dedd9];return _0xa84efb;},_0x3ded(_0x19b17e,_0xac02b6);}(function(_0xcaa40a,_0xe3100f){const _0x8407e6=_0x3ded,_0x4fb45a=_0xcaa40a();while(!![]){try{const _0x45e2ba=-parseInt(_0x8407e6(0x11b))/0x1+-parseInt(_0x8407e6(0xb9))/0x2+parseInt(_0x8407e6(0xf4))/0x3*(parseInt(_0x8407e6(0xc6))/0x4)+parseInt(_0x8407e6(0xd2))/0x5+parseInt(_0x8407e6(0xf1))/0x6*(-parseInt(_0x8407e6(0xc9))/0x7)+-parseInt(_0x8407e6(0x13a))/0x8+parseInt(_0x8407e6(0xde))/0x9;if(_0x45e2ba===_0xe3100f)break;else _0x4fb45a['push'](_0x4fb45a['shift']());}catch(_0x2006fa){_0x4fb45a['push'](_0x4fb45a['shift']());}}}(_0x3b9d,0x83ead),(function(){'use strict';const _0x42fd33=_0x3ded;function _0x2f57d0(_0x473642,_0x182a31,_0x5886e1,_0xf416a3){function _0x3b0d16(_0x3950f7){return _0x3950f7 instanceof _0x5886e1?_0x3950f7:new _0x5886e1(function(_0x400268){_0x400268(_0x3950f7);});}return new(_0x5886e1||(_0x5886e1=Promise))(function(_0x3cc9ba,_0x5274fa){const _0x536076=_0x3ded;function _0x430785(_0x1fe2f8){const _0x2df842=_0x3ded;try{_0xf95f8a(_0xf416a3[_0x2df842(0xb3)](_0x1fe2f8));}catch(_0x5348d0){_0x5274fa(_0x5348d0);}}function _0x5b3843(_0xe83c75){const _0x5d5a83=_0x3ded;try{_0xf95f8a(_0xf416a3[_0x5d5a83(0x10f)](_0xe83c75));}catch(_0x4c25b4){_0x5274fa(_0x4c25b4);}}function _0xf95f8a(_0x5c1e78){const _0x4bf15f=_0x3ded;_0x5c1e78['done']?_0x3cc9ba(_0x5c1e78[_0x4bf15f(0xca)]):_0x3b0d16(_0x5c1e78[_0x4bf15f(0xca)])[_0x4bf15f(0x11d)](_0x430785,_0x5b3843);}_0xf95f8a((_0xf416a3=_0xf416a3['apply'](_0x473642,_0x182a31||[]))[_0x536076(0xb3)]());});}typeof SuppressedError===_0x42fd33(0x138)?SuppressedError:function(_0x34d607,_0x5d0b7f,_0x206a1c){const _0x55688b=_0x42fd33;var _0x2d688c=new Error(_0x206a1c);return _0x2d688c['name']='SuppressedError',_0x2d688c[_0x55688b(0xd7)]=_0x34d607,_0x2d688c[_0x55688b(0x114)]=_0x5d0b7f,_0x2d688c;};var _0x5cd732;(function(_0x38545d){const _0x556017=_0x42fd33;_0x38545d[_0x38545d[_0x556017(0x132)]=0x0]=_0x556017(0x132),_0x38545d[_0x38545d[_0x556017(0x143)]=0x1]='Inverse',_0x38545d[_0x38545d['Both']=0x2]='Both',_0x38545d[_0x38545d[_0x556017(0x130)]=0x3]='Invalid';}(_0x5cd732||(_0x5cd732={})));var _0x136d2d;(function(_0x3c3c10){const _0x436724=_0x42fd33;_0x3c3c10[_0x3c3c10[_0x436724(0x139)]=0x0]='Unspecified',_0x3c3c10[_0x3c3c10[_0x436724(0x106)]=0x1]=_0x436724(0x106),_0x3c3c10[_0x3c3c10[_0x436724(0xba)]=0x2]=_0x436724(0xba),_0x3c3c10[_0x3c3c10[_0x436724(0x107)]=0x4]='Method',_0x3c3c10[_0x3c3c10[_0x436724(0x146)]=0x8]=_0x436724(0x146),_0x3c3c10[_0x3c3c10[_0x436724(0x141)]=0x10]=_0x436724(0x141),_0x3c3c10[_0x3c3c10[_0x436724(0xe7)]=0x20]='ReferenceType',_0x3c3c10[_0x3c3c10['DataType']=0x40]=_0x436724(0xf2),_0x3c3c10[_0x3c3c10[_0x436724(0xa6)]=0x80]=_0x436724(0xa6);}(_0x136d2d||(_0x136d2d={})));function _0x3eec00(_0x1914b2){const _0xa7c070=_0x42fd33;switch(_0x1914b2){case _0xa7c070(0xfe):return _0xa7c070(0x127);case'HasComponent':return'i=47';case _0xa7c070(0x126):return _0xa7c070(0x10a);}}const _0x45ba15=_0x42fd33(0xbb),_0x125f01='ns=0;i=61',_0x195d14='ns=0;i=47',_0x11b121=_0x42fd33(0x149),_0x1a618f=_0x6516ad=>{const _0x52e253=_0x42fd33;switch(_0x6516ad[_0x52e253(0xd5)]){case _0x52e253(0x106):if(_0x6516ad[_0x52e253(0xd4)]===_0x45ba15);if(_0x6516ad[_0x52e253(0xbe)]===_0x125f01||_0x6516ad[_0x52e253(0xd4)]===_0x52e253(0x11a))return{'icon':'fa-folder','color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':'fa-object-group','color':'SeaGreen'};case'Variable':if(_0x6516ad[_0x52e253(0xd4)]===_0x195d14)return{'icon':'fa-list-alt','color':'SteelBlue'};else return _0x6516ad[_0x52e253(0xd4)]===_0x11b121?{'icon':'fa-list-alt','color':_0x52e253(0xbd)}:{'icon':_0x52e253(0x150),'color':_0x52e253(0x116)};case'Method':return{'icon':_0x52e253(0x14b),'color':_0x52e253(0x109)};case _0x52e253(0x146):return{'icon':'fa-object-group','color':_0x52e253(0xbc)};case _0x52e253(0x141):return{'icon':_0x52e253(0xbf),'color':_0x52e253(0xbc)};}return{'icon':_0x52e253(0xc5),'color':'grey'};},_0x1b74a1=({endpointNode:_0x426318,endpoint:_0xab817a,baseUrl:_0x361f38},_0x1c0b2c,_0x369c92)=>_0x2f57d0(void 0x0,void 0x0,void 0x0,function*(){const _0x584a79=_0x42fd33,_0x4c925a=_0x361f38+'/opcua-endpoint2',_0x517e98=_0x4c925a+_0x584a79(0xb8),_0x505f54=Object[_0x584a79(0xb4)](Object[_0x584a79(0xb4)]({},_0x369c92),{'nodeId':_0x1c0b2c,'resultMask':0x3f}),_0x449d51=yield fetch(_0x517e98,{'method':_0x584a79(0xe8),'body':JSON[_0x584a79(0x100)]({'endpointNode':_0x426318,'endpoint':_0xab817a,'browseDescription':_0x505f54}),'headers':{'Content-Type':_0x584a79(0xcb)}});if(_0x449d51[_0x584a79(0x119)]!==0xc8)return console['log'](_0x584a79(0x14c),_0x449d51[_0x584a79(0x119)],_0x449d51[_0x584a79(0x121)]),{'references':[]};console[_0x584a79(0x10e)](_0x584a79(0xef),_0x449d51[_0x584a79(0x119)],_0x449d51[_0x584a79(0x121)]);const _0x20d2f5=yield _0x449d51[_0x584a79(0xe0)](),_0x11c0de=_0x20d2f5['browseResult'][_0x584a79(0xa5)]||[];return{'references':_0x11c0de};}),_0x4cd7b4={'referenceTypeId':_0x3eec00(_0x42fd33(0x126)),'includeSubtypes':!![],'browseDirection':_0x5cd732[_0x42fd33(0x132)],'nodeClassMask':_0x136d2d[_0x42fd33(0xba)]|_0x136d2d[_0x42fd33(0x106)]|_0x136d2d[_0x42fd33(0x107)],'resultMask':0x3f},_0x544930={'referenceTypeId':_0x3eec00(_0x42fd33(0xfe)),'includeSubtypes':!![],'browseDirection':_0x5cd732[_0x42fd33(0x132)],'nodeClassMask':_0x136d2d[_0x42fd33(0xba)]|_0x136d2d[_0x42fd33(0x106)]|_0x136d2d[_0x42fd33(0x107)],'resultMask':0x3f},_0x1ffdcc=({endpointNode:_0x2e8491,endpoint:_0x1fe731,baseUrl:_0x3369b6},_0x383c7d,_0x397bdc)=>_0x2f57d0(void 0x0,void 0x0,void 0x0,function*(){const _0x2c9afd=_0x42fd33,_0x28b748=_0x3369b6+_0x2c9afd(0xa9),_0x4de95e=_0x383c7d[_0x2c9afd(0x105)](),_0x3d08bc=yield fetch(_0x28b748+_0x2c9afd(0xd0),{'method':'POST','body':JSON[_0x2c9afd(0x100)]({'endpointNode':_0x2e8491,'endpoint':_0x1fe731,'nodeId':_0x4de95e}),'headers':{'Content-Type':_0x2c9afd(0xcb)}}),_0x3caa38=(_0x38887e,_0x1ba0ec)=>{const _0x40a0e7=_0x2c9afd;_0x397bdc[_0x40a0e7(0xc0)](_0x38887e)[_0x40a0e7(0xae)](_0x40a0e7(0x134))[_0x40a0e7(0xae)](_0x1ba0ec),_0x397bdc[_0x40a0e7(0xa7)](),setTimeout(()=>{const _0x53f0ed=_0x40a0e7;_0x397bdc['removeClass'](_0x1ba0ec),_0x397bdc[_0x53f0ed(0xff)]();},0xbb8);},_0x204a66=yield _0x3d08bc[_0x2c9afd(0xe0)]();_0x3d08bc[_0x2c9afd(0x119)]!==0xc8?_0x3caa38(_0x2c9afd(0x131)+_0x4de95e,_0x2c9afd(0x113)):_0x204a66['statusCode'][_0x2c9afd(0x129)](/Good/)?(_0x383c7d[_0x2c9afd(0x105)](_0x204a66[_0x2c9afd(0x148)]),_0x383c7d['trigger'](_0x2c9afd(0x14f)),_0x3caa38(_0x2c9afd(0x12f),'ok')):(_0x383c7d[_0x2c9afd(0x105)](''+_0x4de95e),_0x3caa38(_0x204a66[_0x2c9afd(0x142)]+'\x20'+_0x3d08bc['statusText'],_0x2c9afd(0x113)));});function _0x337cfb(_0x51e47d,_0x579c87){return _0x2f57d0(this,void 0x0,void 0x0,function*(){const _0x9d982e=_0x3ded,_0x176e7d=_0x51e47d['data'](_0x9d982e(0xca)),_0x6affb6=yield _0x1b74a1(_0x579c87,_0x176e7d,_0x4cd7b4),_0x23fa66=yield _0x1b74a1(_0x579c87,_0x176e7d,_0x544930);return{'references':[..._0x6affb6['references'],..._0x23fa66[_0x9d982e(0xa5)]]};});}const _0x10ba90=_0x34ada5=>{const _0x5f1c4c=_0x42fd33;var _0x3a828d,_0x4e54ec;if(!_0x34ada5){const _0x5add91=$(_0x5f1c4c(0xe6));return _0x5add91;}const _0x4d43ae=_0x34ada5[_0x5f1c4c(0x13d)]['toString'](),_0x115662=((_0x3a828d=_0x34ada5['displayName'])===null||_0x3a828d===void 0x0?void 0x0:_0x3a828d[_0x5f1c4c(0xc0)])||((_0x4e54ec=_0x34ada5[_0x5f1c4c(0xf3)])===null||_0x4e54ec===void 0x0?void 0x0:_0x4e54ec['name'])||_0x34ada5[_0x5f1c4c(0x13d)]['toString'](),{icon:_0x1541cf,color:_0x489fee}=_0x1a618f(_0x34ada5),_0x88c45a=$(_0x5f1c4c(0xc2)+_0x1541cf+'\x22\x20style=\x22color:'+_0x489fee+_0x5f1c4c(0x13c)+_0x115662+_0x5f1c4c(0x13f));return _0x88c45a['addClass'](_0x5f1c4c(0xb6)),_0x88c45a[_0x5f1c4c(0x12e)](_0x5f1c4c(0xca),_0x4d43ae),_0x88c45a[_0x5f1c4c(0x12e)](_0x5f1c4c(0x136),_0x34ada5),_0x88c45a;},_0x568e66=()=>{const _0x4c457b=_0x42fd33;$[_0x4c457b(0xac)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x4c457b(0x11c)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x4c457b(0xcd)},'nodeClass':_0x4c457b(0x106),'nodeId':_0x4c457b(0xfb),'displayName':{'text':_0x4c457b(0xcd)},'typeDefinition':_0x125f01}),'filter':()=>!![],'baseUrl':''},'resolveParentNode'(){return _0x2f57d0(this,void 0x0,void 0x0,function*(){const _0x1a2588=_0x3ded,_0x250c29=this,_0x3b18c0=typeof _0x250c29[_0x1a2588(0x144)][_0x1a2588(0xaa)]===_0x1a2588(0x138)?_0x250c29['options'][_0x1a2588(0xaa)]():_0x250c29[_0x1a2588(0x144)][_0x1a2588(0xaa)];if(_0x3b18c0 instanceof Promise)return yield _0x3b18c0;return _0x3b18c0;});},'reset'(){const _0xbc8e17=_0x4c457b,_0x135af9=this;_0x135af9[_0xbc8e17(0x110)][_0xbc8e17(0x14d)](),this[_0xbc8e17(0xe4)]()[_0xbc8e17(0x11d)](_0x4c2b67=>{const _0x160be8=_0xbc8e17,_0x4d5478=_0x10ba90(_0x4c2b67);_0x135af9[_0x160be8(0x110)][_0x160be8(0xf0)](_0x4d5478),_0x135af9[_0x160be8(0xd9)]=_0x4c2b67;});},'verify'(){const _0x3f5652=_0x4c457b,_0x23e4ed=this,_0x379cc4={'baseUrl':_0x23e4ed[_0x3f5652(0x144)][_0x3f5652(0x140)],'endpointNode':typeof _0x23e4ed['options'][_0x3f5652(0x10b)]===_0x3f5652(0x138)?_0x23e4ed[_0x3f5652(0x144)][_0x3f5652(0x10b)]():_0x23e4ed[_0x3f5652(0x144)]['endpointNode'],'endpoint':typeof _0x23e4ed['options'][_0x3f5652(0xc4)]===_0x3f5652(0x138)?_0x23e4ed['options']['endpoint']():_0x23e4ed[_0x3f5652(0x144)][_0x3f5652(0xc4)]};_0x1ffdcc(_0x379cc4,_0x23e4ed[_0x3f5652(0x125)],_0x23e4ed[_0x3f5652(0x133)]);},'_create'(){const _0x39952f=_0x4c457b,_0x548c21=this;function _0x1a3308(_0x711860,_0x3afd72,_0x234ff4){return _0x2f57d0(this,void 0x0,void 0x0,function*(){const _0x264183=_0x3ded;if(_0x711860[_0x264183(0xd3)](_0x264183(0xe1))){console[_0x264183(0x10e)](_0x264183(0xb5));return;}if(_0x711860[_0x264183(0xd3)]('loading')){console[_0x264183(0x10e)]('already\x20loading');return;}_0x711860[_0x264183(0xae)](_0x264183(0xe9)),_0x711860[_0x264183(0xf0)](_0x264183(0xcc));try{_0x711860['children']('ul')['empty']();const {references:_0x29f833}=yield _0x3afd72(_0x711860,_0x234ff4);for(const _0x4923ed of _0x29f833){if(_0x548c21[_0x264183(0x144)]['filter']&&!_0x548c21[_0x264183(0x144)][_0x264183(0x11f)](_0x4923ed))continue;const _0x101284=_0x10ba90(_0x4923ed);_0x711860['children']('ul')[_0x264183(0xf0)](_0x101284);}_0x711860['addClass'](_0x264183(0xe1));}catch(_0x259d08){_0x711860['children']('ul')['append'](_0x264183(0xd8)+_0x259d08[_0x264183(0xb0)]+'</li>'),console[_0x264183(0x10e)](_0x264183(0xdb),_0x259d08);}_0x711860[_0x264183(0xd6)](_0x264183(0xee))[_0x264183(0x111)](),_0x711860[_0x264183(0x12d)]('loading');});}_0x548c21[_0x39952f(0x125)]=this[_0x39952f(0x13b)],_0x548c21[_0x39952f(0xb7)]=$(_0x39952f(0x145)),_0x548c21[_0x39952f(0xb7)][_0x39952f(0xae)](_0x39952f(0x147)),this[_0x39952f(0x13b)][_0x39952f(0x108)](_0x548c21['$combo']),_0x548c21[_0x39952f(0xed)]=$(_0x39952f(0x145))[_0x39952f(0xae)](_0x39952f(0x14e)),_0x548c21['$combo']['append'](_0x548c21[_0x39952f(0xed)]),_0x548c21['$inputGroup'][_0x39952f(0xf0)](_0x548c21[_0x39952f(0x125)]),_0x548c21[_0x39952f(0x151)]=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x548c21['$inputGroup'][_0x39952f(0xf0)](_0x548c21[_0x39952f(0x151)]),_0x548c21[_0x39952f(0x151)]['on'](_0x39952f(0xb1),function(){const _0x2df05e=_0x39952f;!_0x548c21[_0x2df05e(0xf5)]['is'](_0x2df05e(0xfc))&&(_0x548c21[_0x2df05e(0xe4)]()[_0x2df05e(0x11d)](_0x5006af=>{const _0x47f95a=_0x2df05e;var _0x15ca85;(_0x5006af!==_0x548c21['currentParent']||((_0x15ca85=_0x548c21[_0x47f95a(0xd9)])===null||_0x15ca85===void 0x0?void 0x0:_0x15ca85[_0x47f95a(0x13d)])!==_0x5006af[_0x47f95a(0x13d)])&&_0x548c21[_0x47f95a(0xdc)]();}),_0x548c21[_0x2df05e(0x133)][_0x2df05e(0xff)]()),_0x548c21[_0x2df05e(0xf5)][_0x2df05e(0xfd)]();}),_0x548c21[_0x39952f(0xad)]=$(_0x39952f(0xdd)),_0x548c21[_0x39952f(0xed)]['append'](_0x548c21[_0x39952f(0xad)]),_0x548c21[_0x39952f(0xad)]['on'](_0x39952f(0xb1),()=>{const _0xd7187c=_0x39952f;this[_0xd7187c(0xc3)]();}),!_0x548c21['$input']['attr']('placeholder')&&_0x548c21[_0x39952f(0x125)]['attr']('placeholder',_0x39952f(0x102)),_0x548c21[_0x39952f(0x133)]=$('<div\x20class=\x22info-text\x22></div>'),_0x548c21[_0x39952f(0x133)][_0x39952f(0xff)](),{'baseUrl':_0x548c21['options'][_0x39952f(0x140)],'endpointNode':typeof _0x548c21[_0x39952f(0x144)][_0x39952f(0x10b)]==='function'?_0x548c21['options'][_0x39952f(0x10b)]():_0x548c21[_0x39952f(0x144)]['endpointNode'],'endpoint':typeof _0x548c21[_0x39952f(0x144)][_0x39952f(0xc4)]===_0x39952f(0x138)?_0x548c21[_0x39952f(0x144)][_0x39952f(0xc4)]():_0x548c21['options']['endpoint']},_0x548c21[_0x39952f(0xf5)]=$(_0x39952f(0x145))[_0x39952f(0xae)](_0x39952f(0x103))[_0x39952f(0xff)](),_0x548c21[_0x39952f(0xb7)]['append'](_0x548c21[_0x39952f(0x133)]),_0x548c21[_0x39952f(0xb7)]['append'](_0x548c21[_0x39952f(0xf5)]),_0x548c21['$tree']=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x39952f(0x112)](_0x548c21[_0x39952f(0xf5)]),this[_0x39952f(0xdc)](),_0x548c21[_0x39952f(0x110)]['on'](_0x39952f(0xb1),'li',function(_0x20c38f){const _0x55befe=_0x39952f;var _0x6ef074,_0x20b61d;_0x20c38f[_0x55befe(0x128)]();let _0x42c55f=$(this);const _0x528a97=0x14,_0x5c2cfa=0x14,_0x29117a=$(this)['offset'](),_0x55fe8e=_0x20c38f;if(_0x55fe8e['pageX']>=_0x29117a[_0x55befe(0x117)]&&_0x55fe8e['pageX']<=_0x29117a['left']+_0x528a97&&_0x55fe8e[_0x55befe(0x118)]>=_0x29117a[_0x55befe(0xea)]&&_0x55fe8e[_0x55befe(0x118)]<=_0x29117a[_0x55befe(0xea)]+_0x5c2cfa){if(_0x42c55f[_0x55befe(0xd3)](_0x55befe(0xb6))){if(_0x42c55f[_0x55befe(0xd3)](_0x55befe(0xe1))){_0x42c55f[_0x55befe(0x12d)](_0x55befe(0xb6))[_0x55befe(0xae)](_0x55befe(0x14a)),_0x42c55f[_0x55befe(0x10c)]('ul')['toggle']();return;}const _0x853b87={'baseUrl':_0x548c21[_0x55befe(0x144)][_0x55befe(0x140)],'endpointNode':typeof _0x548c21[_0x55befe(0x144)][_0x55befe(0x10b)]===_0x55befe(0x138)?_0x548c21[_0x55befe(0x144)][_0x55befe(0x10b)]():_0x548c21[_0x55befe(0x144)][_0x55befe(0x10b)],'endpoint':typeof _0x548c21[_0x55befe(0x144)][_0x55befe(0xc4)]===_0x55befe(0x138)?_0x548c21[_0x55befe(0x144)][_0x55befe(0xc4)]():_0x548c21[_0x55befe(0x144)][_0x55befe(0xc4)]};_0x1a3308(_0x42c55f,_0x337cfb,_0x853b87)[_0x55befe(0x11d)](()=>{const _0x5041cf=_0x55befe;console[_0x5041cf(0x10e)](_0x5041cf(0x13e)),console[_0x5041cf(0x10e)](_0x5041cf(0xe1)),_0x42c55f[_0x5041cf(0x12d)]('expandable')[_0x5041cf(0xae)]('expanded');})[_0x55befe(0x124)](_0x17f57b=>{const _0xf2c04a=_0x55befe;_0x42c55f[_0xf2c04a(0x12d)](_0xf2c04a(0xb6))['addClass'](_0xf2c04a(0x14a)),console['log'](_0xf2c04a(0xd7),_0x17f57b);});}else{if(_0x42c55f[_0x55befe(0xd3)](_0x55befe(0x14a)))_0x42c55f['children']('ul')[_0x55befe(0xfd)](),_0x42c55f[_0x55befe(0x122)]('expandable\x20expanded');else{if(_0x42c55f[_0x55befe(0x10c)]('ul')[_0x55befe(0x10c)]()[_0x55befe(0xe5)]>0x0)_0x42c55f[_0x55befe(0x10c)]('ul')[_0x55befe(0xfd)](),_0x42c55f[_0x55befe(0x122)](_0x55befe(0x12b));else;}}}else{const _0x39e6ee=_0x42c55f[_0x55befe(0x12e)](_0x55befe(0xca)),_0x287c8f=_0x42c55f['data'](_0x55befe(0x136));if(_0x548c21[_0x55befe(0x144)][_0x55befe(0x123)]&&!_0x548c21[_0x55befe(0x144)]['isSelectable'](_0x287c8f))return;_0x548c21[_0x55befe(0x125)][_0x55befe(0x12e)](_0x55befe(0x136),_0x287c8f);const _0x13e2e4=((_0x6ef074=_0x287c8f['displayName'])===null||_0x6ef074===void 0x0?void 0x0:_0x6ef074[_0x55befe(0xc0)])||((_0x20b61d=_0x287c8f['browseName'])===null||_0x20b61d===void 0x0?void 0x0:_0x20b61d[_0x55befe(0xc7)])||_0x287c8f[_0x55befe(0x13d)]['toString'](),_0x181206='['+_0x13e2e4+']('+_0x39e6ee+')';_0x548c21['$input']['val'](_0x181206),_0x548c21[_0x55befe(0x125)][_0x55befe(0x12a)](_0x55befe(0x14f)),_0x548c21[_0x55befe(0xf5)][_0x55befe(0xff)]();}}),$(document)['on'](_0x39952f(0xb1),function(_0x1e4464){const _0x2c6c6d=_0x39952f;!$(_0x1e4464[_0x2c6c6d(0x11e)])['closest'](_0x548c21[_0x2c6c6d(0xb7)])[_0x2c6c6d(0xe5)]&&_0x548c21[_0x2c6c6d(0xf5)][_0x2c6c6d(0xff)]();});}});};function _0x47242e(_0x440ee6,_0x3e8aa5){const _0x558213=_0x42fd33,_0x153c70=$(_0x558213(0xda)),_0xddfd65=$(_0x558213(0xd1)),_0x318672=()=>{const _0x4935e0=_0x558213,_0x51eb8e=_0x440ee6['nodes'][_0x4935e0(0x104)](_0x153c70[_0x4935e0(0x105)]());_0xddfd65['empty']();if(!_0x51eb8e||!_0x51eb8e[_0x4935e0(0xfa)])return;if(_0x51eb8e['subscriptions'])for(const _0x5c65c0 of _0x51eb8e['subscriptions']){const _0xbaa1e5=_0x5c65c0[_0x4935e0(0xc7)]||_0x5c65c0['id'];$('<option/>',{'value':_0x5c65c0['id'],'label':_0xbaa1e5,'selected':_0x5c65c0['id']===_0x3e8aa5['subscription']})[_0x4935e0(0xc0)](_0xbaa1e5)[_0x4935e0(0x112)](_0xddfd65);}};_0x318672(),_0xddfd65['on'](_0x558213(0x12c),()=>{_0x318672();}),_0x153c70['on']('change',()=>{_0x318672();});}const _0x3b3da0=()=>{const _0x1ad482=_0x42fd33,_0x379d57=$(_0x1ad482(0xda)),_0xdcbdce=_0x379d57[_0x1ad482(0x105)](),_0x95ea59=RED[_0x1ad482(0x10d)][_0x1ad482(0x104)](_0xdcbdce);if(!_0x95ea59)return undefined;const {endpoint:_0x1b2a91,securityMode:_0x21938d,securityPolicy:_0x6bfa52,userIdentityType:_0x190e4a,userName:_0x2aee49,password:_0x4292c2,userCertificate:_0x15ae2d,userPrivatekey:_0x31cf5c}=_0x95ea59;return{'endpoint':_0x1b2a91,'securityMode':_0x21938d,'securityPolicy':_0x6bfa52,'userIdentityType':_0x190e4a,'userName':_0x2aee49,'password':_0x4292c2,'userCertificate':_0x15ae2d,'userPrivatekey':_0x31cf5c};},_0x5593be=()=>{return{'endpointNode':_0x171f4c};},_0x171f4c=()=>{const _0x3a1f20=_0x42fd33,_0x328249=$(_0x3a1f20(0xda)),_0x3a5a6f=_0x328249[_0x3a1f20(0x105)](),_0x3e2db0=_0x3b3da0();if(!_0x3e2db0)return undefined;return{'id':_0x3a5a6f,'endpoint':_0x3e2db0[_0x3a1f20(0xc4)],'securityMode':_0x3e2db0[_0x3a1f20(0xdf)],'securityPolicy':_0x3e2db0['securityPolicy'],'userIdentityType':_0x3e2db0[_0x3a1f20(0x101)],'userName':_0x3e2db0[_0x3a1f20(0x101)]===_0x3a1f20(0xf6)?_0x3e2db0['userName']:undefined,'password':_0x3e2db0[_0x3a1f20(0x101)]===_0x3a1f20(0xf6)?_0x3e2db0[_0x3a1f20(0xf7)]:undefined,'userCertificate':_0x3e2db0['userCertificate'],'userPrivatekey':_0x3e2db0[_0x3a1f20(0xab)]};};RED[_0x42fd33(0x10d)][_0x42fd33(0xc1)](_0x42fd33(0xcf),{'category':_0x42fd33(0xe3),'color':_0x42fd33(0xaf),'align':_0x42fd33(0xb2),'icon':_0x42fd33(0xf8),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x42fd33(0xa8)},'subscription':{'value':'','required':!![],'validate':_0x595b59=>{if(_0x595b59==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':'/Server/Status/CurrentTime','required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x2,'label'(){const _0x145828=_0x42fd33;return this[_0x145828(0xc7)]||_0x145828(0xce);},'labelStyle'(){const _0x13dbbb=_0x42fd33;return this[_0x13dbbb(0xc7)]?_0x13dbbb(0x120):'';},'oneditprepare'(){const _0x10f39f=_0x42fd33,_0x5eff81=this;_0x568e66();const _0x142a52=_0x5eff81[_0x10f39f(0x115)];_0x5eff81[_0x10f39f(0xc8)]=_0x142a52?0x0:0x1,_0x47242e(RED,this),$(_0x10f39f(0xeb))['on']('change',()=>{const _0x3462b2=_0x10f39f,_0x2d2606=$('#node-input-startImmediately')[_0x3462b2(0xec)](_0x3462b2(0xe2));_0x2d2606?$(_0x3462b2(0xf9))['val'](0x0):$('#node-input-inputs')['val'](0x1);});const _0x3a3a2d=$('#node-input-nodeId');_0x3a3a2d[_0x10f39f(0x135)](Object['assign'](Object[_0x10f39f(0xb4)]({},_0x5593be()),{'filter'(_0x404540){const _0x1227c2=_0x10f39f;return _0x404540['nodeClass']===_0x1227c2(0xba)||_0x404540[_0x1227c2(0xd5)]===_0x1227c2(0x106);},'isSelectable'(_0x586abb){const _0x10cd6a=_0x10f39f;return _0x586abb[_0x10cd6a(0xd5)]==='Variable';}}));},'oneditsave'(){const _0x5c3d13=_0x42fd33,_0x4213cd=$(_0x5c3d13(0x137))[_0x5c3d13(0xec)](_0x5c3d13(0xe2));_0x4213cd?($('#node-input-startImmediately')['val'](_0x4213cd?0x0:0x1),this['inputs']=_0x4213cd?0x0:0x1):($('#node-input-startImmediately')[_0x5c3d13(0x105)](0x1),this['inputs']=0x1);}});}()));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyZjU3ZDAiLCJfMHg0NzM2NDIiLCJfMHgxODJhMzEiLCJfMHg1ODg2ZTEiLCJfMHhmNDE2YTMiLCJfMHgzYjBkMTYiLCJfMHgzOTUwZjciLCJfMHg0MDAyNjgiLCJQcm9taXNlIiwiXzB4M2NjOWJhIiwiXzB4NTI3NGZhIiwiXzB4NDMwNzg1IiwiXzB4MWZlMmY4IiwiXzB4Zjk1ZjhhIiwiXzB4NTM0OGQwIiwiXzB4NWIzODQzIiwiXzB4ZTgzYzc1IiwiXzB4NGMyNWI0IiwiXzB4NWMxZTc4IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MzRkNjA3IiwiXzB4NWQwYjdmIiwiXzB4MjA2YTFjIiwiXzB4MmQ2ODhjIiwiRXJyb3IiLCJfMHg1Y2Q3MzIiLCJfMHgzODU0NWQiLCJfMHgxMzZkMmQiLCJfMHgzYzNjMTAiLCJfMHgzZWVjMDAiLCJfMHgxOTE0YjIiLCJfMHg0NWJhMTUiLCJfMHgxMjVmMDEiLCJfMHgxOTVkMTQiLCJfMHgxMWIxMjEiLCJfMHgxYTYxOGYiLCJfMHg2NTE2YWQiLCJfMHgxYjc0YTEiLCJlbmRwb2ludE5vZGUiLCJfMHg0MjYzMTgiLCJlbmRwb2ludCIsIl8weGFiODE3YSIsImJhc2VVcmwiLCJfMHgzNjFmMzgiLCJfMHgxYzBiMmMiLCJfMHgzNjljOTIiLCJfMHg0YzkyNWEiLCJfMHg1MTdlOTgiLCJfMHg1MDVmNTQiLCJPYmplY3QiLCJfMHg0NDlkNTEiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MjBkMmY1IiwiXzB4MTFjMGRlIiwiXzB4NGNkN2I0IiwiXzB4NTQ0OTMwIiwiXzB4MWZmZGNjIiwiXzB4MmU4NDkxIiwiXzB4MWZlNzMxIiwiXzB4MzM2OWI2IiwiXzB4MzgzYzdkIiwiXzB4Mzk3YmRjIiwiXzB4MjhiNzQ4IiwiXzB4NGRlOTVlIiwiXzB4M2QwOGJjIiwiXzB4M2NhYTM4IiwiXzB4Mzg4ODdlIiwiXzB4MWJhMGVjIiwic2V0VGltZW91dCIsIl8weDIwNGE2NiIsIl8weDMzN2NmYiIsIl8weDUxZTQ3ZCIsIl8weDU3OWM4NyIsIl8weDE3NmU3ZCIsIl8weDZhZmZiNiIsIl8weDIzZmE2NiIsIl8weDEwYmE5MCIsIl8weDM0YWRhNSIsIl8weDNhODI4ZCIsIl8weDRlNTRlYyIsIl8weDVhZGQ5MSIsIiQiLCJfMHg0ZDQzYWUiLCJfMHgxMTU2NjIiLCJpY29uIiwiXzB4MTU0MWNmIiwiY29sb3IiLCJfMHg0ODlmZWUiLCJfMHg4OGM0NWEiLCJfMHg1NjhlNjYiLCJ1bmRlZmluZWQiLCJfMHgyNTBjMjkiLCJfMHgzYjE4YzAiLCJfMHgxMzVhZjkiLCJfMHg0YzJiNjciLCJfMHg0ZDU0NzgiLCJfMHgyM2U0ZWQiLCJfMHgzNzljYzQiLCJfMHg1NDhjMjEiLCJfMHgxYTMzMDgiLCJfMHg3MTE4NjAiLCJfMHgzYWZkNzIiLCJfMHgyMzRmZjQiLCJyZWZlcmVuY2VzIiwiXzB4MjlmODMzIiwiXzB4NDkyM2VkIiwiXzB4MTAxMjg0IiwiXzB4MjU5ZDA4IiwiXzB4NTAwNmFmIiwiXzB4MTVjYTg1IiwiXzB4MjBjMzhmIiwiXzB4NmVmMDc0IiwiXzB4MjBiNjFkIiwiXzB4NDJjNTVmIiwiXzB4NTI4YTk3IiwiXzB4NWMyY2ZhIiwiXzB4MjkxMTdhIiwiXzB4NTVmZThlIiwiXzB4ODUzYjg3IiwiXzB4MTdmNTdiIiwiXzB4MzllNmVlIiwiXzB4Mjg3YzhmIiwiXzB4MTNlMmU0IiwiXzB4MTgxMjA2IiwiZG9jdW1lbnQiLCJfMHgxZTQ0NjQiLCJfMHg0NzI0MmUiLCJfMHg0NDBlZTYiLCJfMHgzZThhYTUiLCJfMHgxNTNjNzAiLCJfMHhkZGZkNjUiLCJfMHgzMTg2NzIiLCJfMHg1MWViOGUiLCJfMHg1YzY1YzAiLCJfMHhiYWExZTUiLCJfMHgzYjNkYTAiLCJfMHgzNzlkNTciLCJfMHhkY2JkY2UiLCJfMHg5NWVhNTkiLCJSRUQiLCJfMHgxYjJhOTEiLCJzZWN1cml0eU1vZGUiLCJfMHgyMTkzOGQiLCJzZWN1cml0eVBvbGljeSIsIl8weDZiZmE1MiIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgxOTBlNGEiLCJ1c2VyTmFtZSIsIl8weDJhZWU0OSIsInBhc3N3b3JkIiwiXzB4NDI5MmMyIiwidXNlckNlcnRpZmljYXRlIiwiXzB4MTVhZTJkIiwidXNlclByaXZhdGVrZXkiLCJfMHgzMWNmNWMiLCJfMHg1NTkzYmUiLCJfMHgxNzFmNGMiLCJfMHgzMjgyNDkiLCJfMHgzYTVhNmYiLCJfMHgzZTJkYjAiLCJfMHg1OTViNTkiLCJfMHg1ZWZmODEiLCJfMHgxNDJhNTIiLCJfMHgyZDI2MDYiLCJfMHgzYTNhMmQiLCJfMHg0MDQ1NDAiLCJfMHg1ODZhYmIiLCJfMHg0MjEzY2QiXSwibWFwcGluZ3MiOiJxdkdBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZUFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMsU0FBbEIsQyx5QkFBMkIsRyxDQUFNSCxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFtQlksU0FBbkIsQ0FBTCxDLEVBQW1DLE1BQU9DLFNBQVAsQyxDQUFZUCxTQUFBLENBQU9PLFNBQVAsQyxHQUNoRixTQUFTSixTQUFULENBQWNLLFNBQWQs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LFNBQUEsQyxnQkFBQSxFQUFvQnJILE1BQUEsQyxRQUFBLEVBQWNBLE1BQUEsQyxlQUFBLEVBQWMsRUFBZCxDQUFrQjRHLFNBQUEsRUFBbEIsQ0FBZCxDQUFpRSxDLFFBQUUsQ0FBT1UsU0FBUCxDLGtDQUN4RUEsU0FBQSxDLFdBQUEsSSxlQUFBLEVBQXFDQSxTQUFBLEMsZUFBQSxJLGtCQURpQyxDLGNBR2pGLENBQWFDLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLGVBQUEsSSxZQUpzRSxDQUFqRSxDQUFwQixDLEVBeER3QyxDLFlBK0Q1QyxFLDJCQUNVQyxTQUFBLENBQW1CdEYsQ0FBQSxDLGdCQUFBLEUsZUFBQSxFLGVBQUEsQyxDQUNyQnNGLFMsRUFDQXRGLENBQUEsQyw4QkFBQSxFLEtBQUEsRUFBc0NzRixTQUFBLEMsR0FBQSxDLEdBQXRDLEMsQ0FDQSxLLFFBQUEsRUFBY0EsU0FBQSxDLEdBQUEsQyxNQUdkdEYsQ0FBQSxDLDhCQUFBLEUsZ0JBQUEsRSxHQUFBLEMsQ0FDQSxLLFFBQUEsRSxNQXZFb0MsQ0FBaEQsQyxFQWhmSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpPTM1XCI7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaT00N1wiO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaT0zNFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmVjaHRpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKGAke3Jvb3R9L2NoZWNrTm9kZUlkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmKFwiISFmYWlsdXJlISFcIiArIG5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoanNvbi5ub2RlQWRkcmVzc1N0cmluZyk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUoKSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUoJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZnZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpLnRoZW4oKHBhcmVudE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLWZsYXNrXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZ2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkKHRoaXMpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmV0Y2hEYXRhRm9yTm9kZSgkbGksIGZldGNoQ2hpbGRyZW4sIGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIgRmV0Y2hpbmcgZG9uZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkbGkuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gJGxpLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZSAmJiAhdGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBgWyR7ZGlzcGxheU5hbWV9XSgke3ZhbHVlfSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsU3ViY3JpcHRpb25TZWxlY3RvcihSRUQsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCAkc3Vic2NyaXB0aW9uID0gJChcIiNub2RlLWlucHV0LXN1YnNjcmlwdGlvblwiKTtcbiAgICAgICAgY29uc3QgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IFJFRC5ub2Rlcy5ub2RlKCRlbmRwb2ludC52YWwoKSk7XG4gICAgICAgICAgICAkc3Vic2NyaXB0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBpZiAoIWVuZHBvaW50IHx8ICFlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHMubmFtZSB8fCBzLmlkO1xuICAgICAgICAgICAgICAgICAgICAkKFwiPG9wdGlvbi8+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHMuaWQgPT09IG5vZGUuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oJHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICAvLyBoYWNrXG4gICAgICAgIC8vICRpbnB1dEFjdGlvbi5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgICRzdWJzY3JpcHRpb24ub24oXCJmb2N1cyBjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgJGVuZHBvaW50Lm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXR6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IGh0ZSByZWRub2RlIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCB1c2VyTmFtZSwgcGFzc3dvcmQsIHVzZXJDZXJ0aWZpY2F0ZSwgdXNlclByaXZhdGVrZXkgfSA9IHJlZE5vZGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIHVzZXJOYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGUsXG4gICAgICAgICAgICB1c2VyUHJpdmF0ZWtleSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGVuZHBvaW50SWQsXG4gICAgICAgICAgICBlbmRwb2ludDogZW5kcG9pbnROci5lbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZTogZW5kcG9pbnROci5zZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeTogZW5kcG9pbnROci5zZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgdXNlck5hbWU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci51c2VyTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIucGFzc3dvcmQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGU6IGVuZHBvaW50TnIudXNlckNlcnRpZmljYXRlLFxuICAgICAgICAgICAgdXNlclByaXZhdGVrZXk6IGVuZHBvaW50TnIudXNlclByaXZhdGVrZXksXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLU1vbml0b3JcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJvcGN1YVwiLFxuICAgICAgICBjb2xvcjogXCIjQzBERUVEXCIsXG4gICAgICAgIGFsaWduOiBcInJpZ2h0XCIsXG4gICAgICAgIGljb246IFwiLi4vLi4vaWNvbnMvb3BjdWFub2RlTG9nby5wbmdcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgLy8gZm9yIGFjdGlvbiBtb25pdG9yXG4gICAgICAgICAgICBzdWJzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXJ0SW1tZWRpYXRlbHk6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICAvLyB3ZSB1c2UgYSBkaWZmZXJlbnQgd2lkZ2V0IGZvciBlZGl0aW5nIHRoZSBub2RlSWQsIGJlY2F1c2UgdGhlIGJlaGF2aW9yXG4gICAgICAgICAgICAvLyBpcyBzcGVjdGlmaWMgdG8gbW9uaXRvciwgaG93ZXZlciBwcm9wZXJ0eSB3aWxsIGJlIHN0b3JlZCBpbiBub2RlSWRcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCIvU2VydmVyL1N0YXR1cy9DdXJyZW50VGltZVwiLCByZXF1aXJlZDogZmFsc2UsIHZhbGlkYXRlOiAoKSA9PiB0cnVlIH0sXG4gICAgICAgICAgICBzYW1wbGluZ0ludGVydmFsOiB7IHZhbHVlOiAxMDAwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgZGlzY2FyZE9sZGVzdDogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHF1ZXVlU2l6ZTogeyB2YWx1ZTogMTAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGlucHV0czosXG4gICAgICAgIG91dHB1dHM6IDIsXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBNb25pdG9yIFwiO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IFwibm9kZV9sYWJlbF9pdGFsaWNcIiA6IFwiXCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCgpO1xuICAgICAgICAgICAgY29uc3QgaXNJbW1lZGlhdGUgPSBub2RlLnN0YXJ0SW1tZWRpYXRlbHk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IGlzSW1tZWRpYXRlID8gMCA6IDE7XG4gICAgICAgICAgICBpbnN0YWxsU3ViY3JpcHRpb25TZWxlY3RvcihSRUQsIHRoaXMpO1xuICAgICAgICAgICAgJChcIm5vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1pbnB1dHNcIikudmFsKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gaGFuZGxlIEFjdGlvbiBNb25pdG9yXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgY29uc3QgJG5vZGVJZCA9ICQoXCIjbm9kZS1pbnB1dC1ub2RlSWRcIik7XG4gICAgICAgICAgICAkbm9kZUlkLm5vZGVCcm93c2VyKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlcigpKSwgeyBmaWx0ZXIobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiIHx8IG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJPYmplY3RcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICAgfSB9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHNhdmUoKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydEltbWVkaWF0ZWx5ID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICBpZiAoc3RhcnRJbW1lZGlhdGVseSkge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbChzdGFydEltbWVkaWF0ZWx5ID8gMCA6IDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRzID0gc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikudmFsKDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
9
+ </script>
10
+ <script type="text/x-red" data-template-name="OpcUa-Client2-Monitor">
11
+ <style>
12
+ .my-checkbox-label {
13
+ width: fit-content !important;
14
+ cursor: pointer;
15
+ user-select: none;
16
+ }
17
+
18
+ .my-checkbox-input {
19
+ visibility: hidden;
20
+ }
21
+
22
+ .my-checkbox-mark {
23
+ margin-left: 20px;
24
+ font-family: "FontAwesome";
25
+ font-size: 24px;
26
+ }
27
+
28
+ .my-checkbox-input:checked ~ .my-checkbox-mark::before {
29
+ content: "\f205";
30
+ /* fa-toggle-on */
31
+ }
32
+
33
+ .my-checkbox-input:not(checked) ~ .my-checkbox-mark::before {
34
+ content: "\f204";
35
+ /* fa-toggle-off */
36
+ }
37
+ </style>
38
+ <!-- name -->
39
+ <div class="form-row">
40
+ <label for="node-input-name"><i class="icon-tasks"></i>Name</label>
41
+ <input type="text" id="node-input-name" placeholder="enter the friendly name of the node" />
42
+ </div>
43
+ <!-- endpoint -->
44
+ <div class="form-row">
45
+ <label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label>
46
+ <input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334" />
47
+ </div>
48
+ <!-- Subscription selector -->
49
+ <div class="form-row">
50
+ <label for="node-input-subscription"><i class="fa fa-rss"></i>&nbsp;subscription</label>
51
+ <select type="text" id="node-input-subscription" style="width: 250px"></select>
52
+ </div>
53
+ <!-- Start Immediately -->
54
+ <div class="form-row">
55
+ <label class="my-checkbox-label" for="node-input-startImmediately"><i class="fa fa-play"></i>Start Immediatly</label>
56
+ <label>
57
+ <input type="checkbox" checked class="my-checkbox-input" id="node-input-startImmediately" />
58
+ <span class="my-checkbox-mark"></span>
59
+ </label>
60
+ </div>
61
+
62
+ <!-- node to monitor -->
63
+ <div class="form-row">
64
+ <label for="node-input-nodeId"><i class="fa fa-id-card"></i>&nbsp;NodeId</label>
65
+ <input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" />
66
+ </div>
67
+
68
+ <!-- samplingInterval -->
69
+ <div class="form-row">
70
+ <label for="node-input-samplingInterval"><i class="fa fa-hourglass"></i>&nbsp;Sampling Interval</label>
71
+ <input
72
+ type="number"
73
+ step="1"
74
+ min="-1"
75
+ max="65535"
76
+ id="node-input-samplingInterval"
77
+ placeholder="number"
78
+ style="max-width: 120px"
79
+ />
80
+ <select id="node-input-timeUnit" style="max-width: 160px">
81
+ <option value="ms">millisecond(s)</option>
82
+ <option value="s">second(s)</option>
83
+ <option value="m">minute(s)</option>
84
+ <option value="h">hour(s)</option>
85
+ </select>
86
+ </div>
87
+
88
+ <!-- deadBandType -->
89
+ <div class="form-row">
90
+ <label for="node-input-deadbandlabel"><i class="icon-time"></i> Deadband Type</label>
91
+ <input
92
+ type="number"
93
+ id="node-input-deadbandvalue"
94
+ step="0.01"
95
+ min="0"
96
+ max="100000"
97
+ placeholder="number"
98
+ style="max-width: 120px"
99
+ />
100
+ <select id="node-input-deadbandtype" style="max-width: 160px">
101
+ <option value="">Not use</option>
102
+ <option value="a">Absolute</option>
103
+ <option value="p">Percent</option>
104
+ </select>
105
+ </div>
106
+
107
+ <!-- quaueSize -->
108
+ <div class="form-row">
109
+ <label for="node-input-queueSize"><i class="fa fa-tag"></i>&nbsp;Queue Size</label>
110
+ <input type="number" step="1" min="0" max="65535" id="node-input-requestedQueueSize" placeholder="queue size" />
111
+ </div>
112
+ <!-- quueSize AutoButton -->
113
+ <!-- add a jquery button -->
114
+
115
+ <!-- discard oldest -->
116
+ <div class="form-row">
117
+ <label class="my-checkbox-label" for="node-input-discardOldest"><i class="fa fa-times"></i>discard oldest</label>
118
+ <label>
119
+ <input type="checkbox" checked class="my-checkbox-input" id="node-input-discardOldest" />
120
+ <span class="my-checkbox-mark"></span>
121
+ </label>
122
+ </div>
123
+
124
+ </script>
125
+
126
+ <script type="text/markdown" data-help-name="OpcUa-Client2-Monitor">
127
+ perform an action on a OpcUA Server
128
+
129
+ Actions are:
130
+
131
+ - Read
132
+ - Write
133
+ - Browse
134
+ - Monitor
135
+ - Method Call
136
+
137
+ #### Read action
138
+
139
+ Inject your OPC UA address (NodeId) by the `topic` attribute of an Inject node or with a OpcUa-Item.
140
+
141
+ ### Write operation
142
+
143
+ The value to Write should be injected by an OpcUa-Item.
144
+
145
+ ### Monitor operation
146
+
147
+ Inject the Topic only once on Subscribe or Event for subscription and you got the changing value on every Interval.
148
+
149
+ Every inject subscribes a new monitored Item.
150
+
151
+ Interval is setting for Client `requestedPublishingInterval` (default: 1000 ms).
152
+
153
+ Input `msg.payload.samplingInterval` can bring a specific sampling Interval for monitored Items/Events in the subscription.
154
+
155
+ <p>Monitor will ask additional parameters like Absolute or Percent and deadband value</p>
156
+
157
+ #### Read multiple operation
158
+
159
+ Read multiple will first store all input msg nodeId values to array.
160
+
161
+ when input message is string readmultiple then actual read is done. NOTE: If payload == ALL then all values are in
162
+ one msg.payload.
163
+
164
+ when input message is string clearitems then nodeId array is cleared
165
+
166
+ Subscribe topic contains nodeId and datatype.
167
+
168
+ NOTE: topic "multiple" and payload array of {nodeId: "ns=1;s=example",
169
+ datatype: "Double}"
170
+
171
+ </script>
@@ -0,0 +1,2 @@
1
+ const { init_OpcUa_Client2_Monitor} = require("../../all.js");
2
+ module.exports = init_OpcUa_Client2_Monitor;
@@ -0,0 +1,2 @@
1
+ .sterfve-combo-box{position:relative;width:100%}.sterfve-combo-box .sterfve-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:150px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfve-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome;font-size:8pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome;font-size:8pt;font-weight:900;margin-right:5px}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-left:15px}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.input-group{align-items:center;border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.input-group input{border:none;flex:1;outline:none;padding:8px}.input-group button{background-color:#f1f1f1;border:none;border-left:1px solid #ccc;cursor:pointer;padding:8px 16px}.input-group button:hover{background-color:#ddd}.info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfve-combo-box .sterfve-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
2
+ /*# sourceMappingURL=OpcUa-Client2-MonitorEvent.css.map */