@opcua/for-node-red 2.14.0 → 2.15.0

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.
@@ -4,8 +4,8 @@
4
4
  </style>
5
5
 
6
6
  <script type="text/javascript">
7
- function _0x43d9(){const _0x1c67cb=['pageY','grey','placeholder','assign','<ul\x20class=\x22sterfive-tree\x22></ul>','li\x20>\x20.tree-text','selected','fetched','length','isTypeRef','nodeClass','<li\x20key=\x22','SandyBrown','nodeId','<div/>','reset','expandable\x20expanded','#node-input-endpoint','position','DataType','$info','log','browsePath','$combo','<div\x20class=\x22spinner\x22></div>','status','<option/>','.tree-text:first','done','/walk-backward','$inputGroup','click','HasSubtype','Variable','endpoint','opcua','HasChild','expanded','DarkOrange','fa-folder','#node-input-inputs','suppressed','empty','node','/Server/ServerStatus/CurrentTime','rgba(61,\x2060,\x204,\x200.525)','next','Both','scrollTop','ObjectType','target','statusCode','checked','OPCUA\x20Client\x20Monitor\x20','name','browseName','registerType','$tree','ns=0;i=40','inputs','failure','BrowseName','HasComponent','relativePath','height','resolveParentNode','9031NCYBWg','Good','json','function','subscriptions','references','fa-list-alt','Invalid','\x22\x20style=\x22color:','li[key=\x22','input-group','node_label_italic','closest','Inverse','displayName','filter','append','verify','subscription','576972DiHdAW','View','Organizes','animate','HasTypeDefinition','ns=0;i=61','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','value','baseUrl','error','nodeAddressString','apply','dblclick','2eyWwcr','$dropdown','reference','fetching\x20failed\x20with\x20error','fa-sliders','Method','fa-object-group','err','loading','element','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','38990SOuImx','statusText','pageX','node-input-startImmediately','DisplayName','text','hasClass','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','prop','stringify','><i\x20class=\x22fa\x20','Objects','then','nodeIds','parentNode','$input','focus\x20click','appendTo','application/json','/checkNodeId','toggle','Object','#C0DEED','ns=0;i=46','addClass',':visible','match','TypeDefinition','<div\x20class=\x22info-text\x22></div>','expandable','startImmediately','children','Forward','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','2920760MMXrlG',':first','HasProperty','Unspecified','ReferenceType','8zYuEwQ','VariableType','monitor\x20variable','__parentNode','attr','referenceTypeId','379194toBrHM','currentParent','</li>','DodgerBlue','message','data','removeClass','IsForward','nodes','.spinner','stopPropagation','4294875ILsJel','hide','right','remove','#node-input-startImmediately','POST','SteelBlue','endpointNode','typeDefinition','change','CadetBlue','options','elements','fa-text-width','5839134QYFsfg','3sTtiWH','ns=0;i=34','SeaGreen','offset','$toggleTreeBtn','already\x20loading','throw','7202363gSmwdA','$verifyBtn','find','val','left','isSelectable','ns=0;i=45','toString','top','NodeClass','call','/opcua-endpoint2','toggleClass'];_0x43d9=function(){return _0x1c67cb;};return _0x43d9();}function _0x1783(_0x2712c7,_0x435999){const _0x43d959=_0x43d9();return _0x1783=function(_0x17834a,_0x252e6d){_0x17834a=_0x17834a-0xba;let _0x2fac03=_0x43d959[_0x17834a];return _0x2fac03;},_0x1783(_0x2712c7,_0x435999);}(function(_0x5b31e4,_0x1e7970){const _0x209000=_0x1783,_0x5522c1=_0x5b31e4();while(!![]){try{const _0x347e65=parseInt(_0x209000(0x141))/0x1*(parseInt(_0x209000(0x179))/0x2)+parseInt(_0x209000(0xcb))/0x3*(parseInt(_0x209000(0x16e))/0x4)+parseInt(_0x209000(0xbc))/0x5+parseInt(_0x209000(0xca))/0x6+-parseInt(_0x209000(0xd2))/0x7*(-parseInt(_0x209000(0x173))/0x8)+-parseInt(_0x209000(0x134))/0x9+-parseInt(_0x209000(0x14c))/0xa*(parseInt(_0x209000(0x121))/0xb);if(_0x347e65===_0x1e7970)break;else _0x5522c1['push'](_0x5522c1['shift']());}catch(_0xee79f2){_0x5522c1['push'](_0x5522c1['shift']());}}}(_0x43d9,0xac2f6),(function(){'use strict';const _0x153b77=_0x1783;function _0x53f14c(_0x7204b0,_0x4f3e0f,_0x4d39d8,_0xaff6f1){function _0x36e37d(_0x303c84){return _0x303c84 instanceof _0x4d39d8?_0x303c84:new _0x4d39d8(function(_0x46fd8e){_0x46fd8e(_0x303c84);});}return new(_0x4d39d8||(_0x4d39d8=Promise))(function(_0xc816eb,_0x399ac2){const _0x3ea660=_0x1783;function _0x274acb(_0x47cace){const _0x4006a7=_0x1783;try{_0x1ff796(_0xaff6f1[_0x4006a7(0x10d)](_0x47cace));}catch(_0x3a2ae5){_0x399ac2(_0x3a2ae5);}}function _0x4ea034(_0x5aa103){const _0x3ef7d0=_0x1783;try{_0x1ff796(_0xaff6f1[_0x3ef7d0(0xd1)](_0x5aa103));}catch(_0x3d4dc4){_0x399ac2(_0x3d4dc4);}}function _0x1ff796(_0x40e25c){const _0x37c51f=_0x1783;_0x40e25c[_0x37c51f(0xfb)]?_0xc816eb(_0x40e25c['value']):_0x36e37d(_0x40e25c[_0x37c51f(0x13b)])[_0x37c51f(0x158)](_0x274acb,_0x4ea034);}_0x1ff796((_0xaff6f1=_0xaff6f1[_0x3ea660(0x13f)](_0x7204b0,_0x4f3e0f||[]))[_0x3ea660(0x10d)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x5cab58,_0x4406e6,_0x389692){const _0x3a18ad=_0x1783;var _0x52f912=new Error(_0x389692);return _0x52f912[_0x3a18ad(0x115)]='SuppressedError',_0x52f912[_0x3a18ad(0x13d)]=_0x5cab58,_0x52f912[_0x3a18ad(0x108)]=_0x4406e6,_0x52f912;};const _0x4578b6='ns=0;i=35',_0x4027dc=_0x153b77(0x139),_0x2c6aa6='ns=0;i=47',_0x22d196=_0x153b77(0x163),_0x5810f4=_0x153b77(0xcc),_0x357fa8=_0x153b77(0xd8),_0x4caac9=_0x153b77(0x119);var _0x4c2eb0;(function(_0x17b633){const _0x5c5839=_0x153b77;_0x17b633[_0x17b633['Forward']=0x0]=_0x5c5839(0x16c),_0x17b633[_0x17b633[_0x5c5839(0x12e)]=0x1]=_0x5c5839(0x12e),_0x17b633[_0x17b633[_0x5c5839(0x10e)]=0x2]=_0x5c5839(0x10e),_0x17b633[_0x17b633[_0x5c5839(0x128)]=0x3]=_0x5c5839(0x128);}(_0x4c2eb0||(_0x4c2eb0={})));var _0x3ef970;(function(_0x37dce8){const _0x382e2b=_0x153b77;_0x37dce8[_0x37dce8[_0x382e2b(0x171)]=0x0]=_0x382e2b(0x171),_0x37dce8[_0x37dce8[_0x382e2b(0x161)]=0x1]=_0x382e2b(0x161),_0x37dce8[_0x37dce8[_0x382e2b(0x100)]=0x2]='Variable',_0x37dce8[_0x37dce8[_0x382e2b(0x146)]=0x4]=_0x382e2b(0x146),_0x37dce8[_0x37dce8[_0x382e2b(0x110)]=0x8]=_0x382e2b(0x110),_0x37dce8[_0x37dce8[_0x382e2b(0x174)]=0x10]='VariableType',_0x37dce8[_0x37dce8['ReferenceType']=0x20]=_0x382e2b(0x172),_0x37dce8[_0x37dce8[_0x382e2b(0xf2)]=0x40]=_0x382e2b(0xf2),_0x37dce8[_0x37dce8[_0x382e2b(0x135)]=0x80]=_0x382e2b(0x135);}(_0x3ef970||(_0x3ef970={})));var _0x4f3095;(function(_0x46916b){const _0x4ff257=_0x153b77;_0x46916b[_0x46916b[_0x4ff257(0x161)]=0x1]=_0x4ff257(0x161),_0x46916b[_0x46916b[_0x4ff257(0x100)]=0x2]=_0x4ff257(0x100),_0x46916b[_0x46916b['Method']=0x4]='Method',_0x46916b[_0x46916b[_0x4ff257(0x110)]=0x8]=_0x4ff257(0x110),_0x46916b[_0x46916b['VariableType']=0x10]=_0x4ff257(0x174),_0x46916b[_0x46916b[_0x4ff257(0x172)]=0x20]=_0x4ff257(0x172),_0x46916b[_0x46916b[_0x4ff257(0xf2)]=0x40]=_0x4ff257(0xf2),_0x46916b[_0x46916b[_0x4ff257(0x135)]=0x80]='View';}(_0x4f3095||(_0x4f3095={})));var _0x285212;(function(_0x203e0f){const _0x54901e=_0x153b77;_0x203e0f[_0x203e0f[_0x54901e(0x172)]=0x1]=_0x54901e(0x172),_0x203e0f[_0x203e0f['IsForward']=0x2]=_0x54901e(0x180),_0x203e0f[_0x203e0f[_0x54901e(0xdb)]=0x4]=_0x54901e(0xdb),_0x203e0f[_0x203e0f['BrowseName']=0x8]=_0x54901e(0x11c),_0x203e0f[_0x203e0f[_0x54901e(0x150)]=0x10]=_0x54901e(0x150),_0x203e0f[_0x203e0f[_0x54901e(0x167)]=0x20]=_0x54901e(0x167);}(_0x285212||(_0x285212={})));function _0x58b7be(_0x3e4b7e){const _0x324d9a=_0x153b77;switch(_0x3e4b7e){case _0x324d9a(0x136):return _0x4578b6;case _0x324d9a(0x170):return _0x22d196;case _0x324d9a(0x11d):return _0x2c6aa6;case _0x324d9a(0x103):return _0x5810f4;case _0x324d9a(0xff):return _0x357fa8;case _0x324d9a(0x138):return _0x4caac9;}}const _0x56498f=_0x5df23e=>{const _0x1aab1c=_0x153b77;switch(_0x5df23e[_0x1aab1c(0xe9)]){case _0x1aab1c(0x161):if(_0x5df23e['referenceTypeId']===_0x4578b6);if(_0x5df23e[_0x1aab1c(0xc4)]===_0x4027dc||_0x5df23e[_0x1aab1c(0x178)]==='i=61')return{'icon':_0x1aab1c(0x106),'color':_0x1aab1c(0x10c)};return{'icon':_0x1aab1c(0x147),'color':_0x1aab1c(0xcd)};case _0x1aab1c(0x100):if(_0x5df23e['referenceTypeId']===_0x2c6aa6)return{'icon':'fa-list-alt','color':_0x1aab1c(0xc2)};else return _0x5df23e[_0x1aab1c(0x178)]===_0x22d196?{'icon':_0x1aab1c(0x127),'color':_0x1aab1c(0x17c)}:{'icon':'fa-list-alt','color':_0x1aab1c(0xc6)};case'Method':return{'icon':'fa-cog','color':_0x1aab1c(0xeb)};case _0x1aab1c(0x110):return{'icon':'fa-object-group','color':'DarkOrange'};case'VariableType':return{'icon':_0x1aab1c(0x145),'color':_0x1aab1c(0x105)};case'DataType':return{'icon':_0x1aab1c(0xc9),'color':_0x1aab1c(0xc6)};}return{'icon':'fa-question','color':_0x1aab1c(0xe0)};},_0xe94ef1=(_0x468374,_0x1f6988,_0x434d14)=>_0x53f14c(void 0x0,[_0x468374,_0x1f6988,_0x434d14],void 0x0,function*({endpointNode:_0x27bf5e,endpoint:_0x16dfed,baseUrl:_0x2e61c2},_0x45156b,_0x530be7){const _0x287082=_0x153b77,_0x179bc9=_0x2e61c2+'/opcua-endpoint2',_0x25604c=_0x179bc9+'/browse',_0x18d55b=Object[_0x287082(0xe2)](Object[_0x287082(0xe2)]({},_0x530be7),{'nodeId':_0x45156b,'resultMask':0x3f}),_0x1c7250=yield fetch(_0x25604c,{'method':_0x287082(0xc1),'body':JSON['stringify']({'endpointNode':_0x27bf5e,'endpoint':_0x16dfed,'browseDescription':_0x18d55b}),'headers':{'Content-Type':_0x287082(0x15e)}});if(_0x1c7250[_0x287082(0xf8)]!==0xc8)return console['log'](_0x287082(0x144),_0x1c7250[_0x287082(0xf8)],_0x1c7250[_0x287082(0x14d)]),{'references':[]};const _0x24a1f2=yield _0x1c7250[_0x287082(0x123)](),_0x2af62e=_0x24a1f2['browseResult'][_0x287082(0x126)]||[];return{'references':_0x2af62e};}),_0x555b77={'referenceTypeId':_0x58b7be(_0x153b77(0x103)),'includeSubtypes':!![],'browseDirection':_0x4c2eb0[_0x153b77(0x16c)],'nodeClassMask':_0x3ef970['Variable']|_0x3ef970[_0x153b77(0x161)]|_0x3ef970[_0x153b77(0x146)],'resultMask':0x3f},_0x38d9c9={'referenceTypeId':_0x58b7be('Organizes'),'includeSubtypes':!![],'browseDirection':_0x4c2eb0[_0x153b77(0x16c)],'nodeClassMask':_0x3ef970[_0x153b77(0x100)]|_0x3ef970[_0x153b77(0x161)]|_0x3ef970[_0x153b77(0x146)],'resultMask':0x3f},_0x562d84=(_0x507e6b,_0x10ac9b)=>_0x53f14c(void 0x0,[_0x507e6b,_0x10ac9b],void 0x0,function*({endpointNode:_0x5481ea,endpoint:_0x5d5cce,baseUrl:_0x59ccc7},{nodeId:_0x4d86d0,rootNodeId:_0x5b5c5a,isType:_0x286fbe}){const _0x130a21=_0x153b77,_0xa36f88=_0x59ccc7+_0x130a21(0xdd),_0x4456cc=_0xa36f88+_0x130a21(0xfc),_0x3b7d0d=yield fetch(_0x4456cc,{'method':_0x130a21(0xc1),'body':JSON['stringify']({'endpointNode':_0x5481ea,'endpoint':_0x5d5cce,'nodeId':_0x4d86d0,'rootNodeId':_0x5b5c5a,'isType':_0x286fbe}),'headers':{'Content-Type':'application/json'}});if(_0x3b7d0d['status']!==0xc8)return null;const _0x5d4812=yield _0x3b7d0d[_0x130a21(0x123)]();return _0x5d4812[_0x130a21(0xf5)];}),_0x5be381=(_0x19d009,_0x196eb3,_0x19cd69)=>_0x53f14c(void 0x0,[_0x19d009,_0x196eb3,_0x19cd69],void 0x0,function*({endpointNode:_0x31a4fd,endpoint:_0x29cff1,baseUrl:_0x4a1df1},_0x4d89e1,_0x5376c1){const _0x184db9=_0x153b77,_0x5aa252=_0x4a1df1+_0x184db9(0xdd),_0x3951ec=_0x5aa252+_0x184db9(0x15f),_0x22fab7=_0x4d89e1['val'](),_0xa48b02=yield fetch(_0x3951ec,{'method':'POST','body':JSON[_0x184db9(0x155)]({'endpointNode':_0x31a4fd,'endpoint':_0x29cff1,'nodeId':_0x22fab7}),'headers':{'Content-Type':_0x184db9(0x15e)}}),_0x3b9511=(_0x4c30eb,_0x33df79)=>{const _0x9c312c=_0x184db9;_0x5376c1[_0x9c312c(0x151)](_0x4c30eb)[_0x9c312c(0x164)]('sterfive-info')['addClass'](_0x33df79),_0x5376c1['show'](),setTimeout(()=>{const _0x1249a0=_0x9c312c;_0x5376c1['removeClass'](_0x33df79),_0x5376c1[_0x1249a0(0xbd)]();},0xbb8);},_0x3d8c49=yield _0xa48b02[_0x184db9(0x123)]();_0xa48b02[_0x184db9(0xf8)]!==0xc8?_0x3b9511('!!failure!!'+_0x22fab7,_0x184db9(0x11b)):_0x3d8c49[_0x184db9(0x112)][_0x184db9(0x166)](/Good/)?(_0x4d89e1[_0x184db9(0xd5)](_0x3d8c49[_0x184db9(0x13e)]),_0x4d89e1['trigger'](_0x184db9(0xc5)),_0x3b9511(_0x184db9(0x122),'ok')):(_0x4d89e1['val'](''+_0x22fab7),_0x3b9511(_0x3d8c49['statusCode']+'\x20'+_0xa48b02['statusText'],'failure'));});function _0x3cda44(_0x2f0692,_0x5e6ffe){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x3f9efc=_0x1783,_0xbf3fb5=_0x2f0692[_0x3f9efc(0x17e)]('value'),_0x635599=yield _0xe94ef1(_0x5e6ffe,_0xbf3fb5,_0x555b77),_0xf8c55d=yield _0xe94ef1(_0x5e6ffe,_0xbf3fb5,_0x38d9c9);return{'references':[..._0x635599[_0x3f9efc(0x126)],..._0xf8c55d[_0x3f9efc(0x126)]]};});}const _0x28f304={'referenceTypeId':_0x58b7be(_0x153b77(0xff)),'includeSubtypes':!![],'browseDirection':_0x4c2eb0[_0x153b77(0x16c)],'nodeClassMask':_0x3ef970[_0x153b77(0x172)]|_0x3ef970['ObjectType']|_0x3ef970['DataType']|_0x3ef970[_0x153b77(0x174)],'resultMask':0x3f};function _0x41b6af(_0x41a289,_0x5c87ca){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x4469af=_0x1783,_0x137665=_0x41a289[_0x4469af(0x17e)](_0x4469af(0x13b)),_0x20b44c=yield _0xe94ef1(_0x5c87ca,_0x137665,_0x28f304);return _0x20b44c;});}const _0xa12d6d=_0x19e9ba=>{const _0xcb9016=_0x153b77;var _0x1e3b34,_0x1f66c8,_0x39b7b4,_0x96e668;if(!_0x19e9ba||!_0x19e9ba[_0xcb9016(0xec)]){const _0x526588=$(_0xcb9016(0x16d));return _0x526588;}const _0x545be3=_0x19e9ba[_0xcb9016(0xec)][_0xcb9016(0xd9)](),_0x1b9371=((_0x1e3b34=_0x19e9ba[_0xcb9016(0x12f)])===null||_0x1e3b34===void 0x0?void 0x0:_0x1e3b34[_0xcb9016(0x151)])||((_0x1f66c8=_0x19e9ba[_0xcb9016(0x116)])===null||_0x1f66c8===void 0x0?void 0x0:_0x1f66c8[_0xcb9016(0x115)])||_0x19e9ba[_0xcb9016(0xec)]['toString'](),{icon:_0x33a714,color:_0x29c31b}=_0x56498f(_0x19e9ba),_0x591375='('+_0x19e9ba['nodeId'][_0xcb9016(0xd9)]()+')\x20'+(((_0x39b7b4=_0x19e9ba['browseName'])===null||_0x39b7b4===void 0x0?void 0x0:_0x39b7b4[_0xcb9016(0x115)])||((_0x96e668=_0x19e9ba['displayName'])===null||_0x96e668===void 0x0?void 0x0:_0x96e668[_0xcb9016(0x151)])||''),_0x462f6a=$(_0xcb9016(0xea)+_0x19e9ba[_0xcb9016(0xec)]['toString']()+'\x22}><span\x20class=\x22tree-text\x22\x20title='+_0x591375+_0xcb9016(0x156)+_0x33a714+_0xcb9016(0x129)+_0x29c31b+';\x22></i>\x20'+_0x1b9371+'</span><ul></ul></li>');return _0x462f6a['addClass'](_0xcb9016(0x169)),_0x462f6a['data'](_0xcb9016(0x13b),_0x545be3),_0x462f6a['data'](_0xcb9016(0x143),_0x19e9ba),_0x462f6a;},_0x14a89f=(_0x9da96,_0x2c5dea)=>{const _0x2b4763=_0x153b77;return _0x2c5dea[_0x2b4763(0xd4)](_0x2b4763(0x12a)+_0x9da96+'\x22]');},_0x380834=(_0x36b8f8,_0x51c015)=>{const _0x57576c=_0x153b77;_0x36b8f8[_0x57576c(0x118)][_0x57576c(0xd4)](_0x57576c(0xe4))['removeClass'](_0x57576c(0xe5)),_0x51c015[_0x57576c(0xd4)](_0x57576c(0xfa))[_0x57576c(0x164)](_0x57576c(0xe5));},_0x4d283d=(_0x43709f,_0xe0bdfe,_0xed4ea3)=>_0x53f14c(void 0x0,void 0x0,void 0x0,function*(){const _0x1e1eb4=_0x153b77;let _0x3efe71=_0xed4ea3[_0x1e1eb4(0x16b)](_0x1e1eb4(0x16f));_0xe0bdfe[_0x1e1eb4(0x11e)][_0x1e1eb4(0xc8)]||[];const _0x6923f7=_0xe0bdfe[_0x1e1eb4(0x159)]||[];if(_0x6923f7[_0x1e1eb4(0xe7)]===0x0)return;for(const _0x454fd5 of _0x6923f7){_0x3efe71[_0x1e1eb4(0x152)](_0x1e1eb4(0x169))&&(yield _0x256ba8(_0x43709f,_0x3efe71));const _0x7160ec=_0x14a89f(_0x454fd5,_0x3efe71);if(_0x7160ec['length']===0x0)return;_0x3efe71=_0x7160ec;}_0x380834(_0x43709f,_0x3efe71),_0x3e3e59(_0x43709f[_0x1e1eb4(0x142)],_0x3efe71);});function _0x3e3e59(_0x3bde1d,_0x39cd00){const _0x415962=_0x153b77,_0x2255b0=_0x39cd00[_0x415962(0xf1)]()[_0x415962(0xda)],_0xb4547f=_0x3bde1d[_0x415962(0x10f)]();if(_0xb4547f==undefined)return;const _0x39c4ca=_0xb4547f+_0x2255b0-_0x3bde1d['height']()/0x2+_0x39cd00[_0x415962(0x11f)]()/0x2;_0x3bde1d[_0x415962(0x137)]({'scrollTop':_0x39c4ca},0x1f4);}const _0x63b052=(_0x5b14bc,_0x294c85)=>_0x53f14c(void 0x0,void 0x0,void 0x0,function*(){const _0xcb55c5=_0x153b77,_0x1eea87=_0x5b14bc[_0xcb55c5(0x15b)][_0xcb55c5(0xd5)](),_0x43dcf9={'nodeId':_0x1eea87,'rootNodeId':_0x294c85['nodeId'],'isType':_0x5b14bc[_0xcb55c5(0xc7)][_0xcb55c5(0xe8)]||![]},_0x15c372=_0x5104c0(_0x5b14bc),_0x389b4b=yield _0x562d84(_0x15c372,_0x43dcf9);if(!_0x389b4b)return;yield _0x4d283d(_0x5b14bc,_0x389b4b,_0x5b14bc[_0xcb55c5(0x118)]);});function _0x3a0bbe(_0x1dc5ea,_0x329032,_0x272f2f,_0x3719f0){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x25bee5=_0x1783;if(_0x329032[_0x25bee5(0x152)]('fetched')){console['log']('already\x20fetched');return;}if(_0x329032[_0x25bee5(0x152)](_0x25bee5(0x149))){console['log'](_0x25bee5(0xd0));return;}_0x329032[_0x25bee5(0x164)]('loading'),_0x329032[_0x25bee5(0x131)](_0x25bee5(0xf7));try{_0x329032['children']('ul')[_0x25bee5(0x109)]();const {references:_0x36f3d8}=yield _0x272f2f(_0x329032,_0x3719f0);for(const _0x15b969 of _0x36f3d8){if(_0x1dc5ea[_0x25bee5(0xc7)][_0x25bee5(0x130)]&&!_0x1dc5ea[_0x25bee5(0xc7)]['filter'](_0x15b969))continue;const _0x2cfdab=_0xa12d6d(_0x15b969);_0x329032[_0x25bee5(0x16b)]('ul')[_0x25bee5(0x131)](_0x2cfdab);}_0x329032['addClass'](_0x25bee5(0xe6));}catch(_0x28fe1d){_0x329032['children']('ul')[_0x25bee5(0x131)]('<li>error\x20'+_0x28fe1d[_0x25bee5(0x17d)]+_0x25bee5(0x17b)),console['log'](_0x25bee5(0x148),_0x28fe1d);}_0x329032[_0x25bee5(0xd4)](_0x25bee5(0xba))[_0x25bee5(0xbf)](),_0x329032['removeClass']('loading');});}function _0x5104c0(_0x14180e){const _0x312954=_0x153b77,_0x194fc9={'baseUrl':_0x14180e['options'][_0x312954(0x13c)],'endpointNode':typeof _0x14180e['options'][_0x312954(0xc3)]===_0x312954(0x124)?_0x14180e[_0x312954(0xc7)][_0x312954(0xc3)]():_0x14180e[_0x312954(0xc7)]['endpointNode'],'endpoint':typeof _0x14180e[_0x312954(0xc7)][_0x312954(0x101)]===_0x312954(0x124)?_0x14180e[_0x312954(0xc7)]['endpoint']():_0x14180e['options'][_0x312954(0x101)]};return _0x194fc9;}function _0x256ba8(_0x46fd69,_0x15d774){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x560167=_0x1783;if(_0x15d774[_0x560167(0x152)]('fetched')){_0x15d774[_0x560167(0x17f)]('expandable')[_0x560167(0x164)](_0x560167(0x104)),_0x15d774[_0x560167(0x16b)]('ul')[_0x560167(0x160)]();return;}const _0x35c1ed=_0x5104c0(_0x46fd69),_0x591150=!_0x46fd69['options']['isTypeRef']?_0x3cda44:_0x41b6af;try{yield _0x3a0bbe(_0x46fd69,_0x15d774,_0x591150,_0x35c1ed),_0x15d774[_0x560167(0x17f)](_0x560167(0x169))[_0x560167(0x164)](_0x560167(0x104));}catch(_0x3f0032){_0x15d774[_0x560167(0x17f)](_0x560167(0x169))[_0x560167(0x164)](_0x560167(0x104)),console[_0x560167(0xf4)](_0x560167(0x13d),_0x3f0032);}});}const _0x4adcb7=()=>{const _0x2e0052=_0x153b77;$['widget']('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x2e0052(0x157)},'nodeClass':'Object','nodeId':'ns=0;i=85','displayName':{'text':_0x2e0052(0x157)},'typeDefinition':_0x4027dc}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x2baff1=_0x1783,_0x2d2333=this;if(!_0x2d2333[_0x2baff1(0x176)]){const _0x463db9=typeof _0x2d2333[_0x2baff1(0xc7)][_0x2baff1(0x15a)]==='function'?_0x2d2333[_0x2baff1(0xc7)][_0x2baff1(0x15a)][_0x2baff1(0xdc)](_0x2d2333):_0x2d2333[_0x2baff1(0xc7)][_0x2baff1(0x15a)];if(_0x463db9 instanceof Promise){const _0x2ba8f2=yield _0x463db9;_0x2d2333[_0x2baff1(0x176)]=_0x2ba8f2;}else _0x2d2333[_0x2baff1(0x176)]=_0x463db9;}return _0x2d2333[_0x2baff1(0x176)];});},'reset'(){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0x5ac9d2=_0x1783,_0x4393d8=this,_0xb90a1d=_0x4393d8;_0xb90a1d[_0x5ac9d2(0x176)]=undefined,_0x4393d8['$tree'][_0x5ac9d2(0x109)]();const _0x31b11a=yield this[_0x5ac9d2(0x120)](),_0xb5ba4d=_0xa12d6d(_0x31b11a);_0x4393d8[_0x5ac9d2(0x118)]['append'](_0xb5ba4d),_0x4393d8[_0x5ac9d2(0x17a)]=_0x31b11a;});},'verify'(){const _0x3f38cc=_0x2e0052,_0x1ad026=this,_0x38945f=_0x5104c0(_0x1ad026);_0x5be381(_0x38945f,_0x1ad026[_0x3f38cc(0x15b)],_0x1ad026[_0x3f38cc(0xf3)]);},'_create'(){const _0x5af1c8=_0x2e0052,_0x49e595=this;_0x49e595['$input']=this[_0x5af1c8(0x14a)],_0x49e595[_0x5af1c8(0xf6)]=$('<div/>'),_0x49e595[_0x5af1c8(0xf6)]['addClass']('sterfive-combo-box'),this['element']['replaceWith'](_0x49e595[_0x5af1c8(0xf6)]),_0x49e595['$inputGroup']=$(_0x5af1c8(0xed))['addClass'](_0x5af1c8(0x12b)),_0x49e595['$combo'][_0x5af1c8(0x131)](_0x49e595[_0x5af1c8(0xfd)]),_0x49e595[_0x5af1c8(0xfd)]['append'](_0x49e595[_0x5af1c8(0x15b)]),_0x49e595['$toggleTreeBtn']=$(_0x5af1c8(0x14b)),_0x49e595[_0x5af1c8(0xfd)][_0x5af1c8(0x131)](_0x49e595[_0x5af1c8(0xcf)]),_0x49e595[_0x5af1c8(0xcf)]['on']('click',function(){return _0x53f14c(this,void 0x0,void 0x0,function*(){const _0xb3f97b=_0x1783;var _0x34eeec;let _0x3b7d23=![],_0xad7fc0;!_0x49e595[_0xb3f97b(0x142)]['is'](_0xb3f97b(0x165))&&(_0x49e595[_0xb3f97b(0xf3)][_0xb3f97b(0xbd)](),_0xad7fc0=yield _0x49e595['resolveParentNode'](),(_0xad7fc0!==_0x49e595['currentParent']||((_0x34eeec=_0x49e595[_0xb3f97b(0x17a)])===null||_0x34eeec===void 0x0?void 0x0:_0x34eeec['nodeId'])!==_0xad7fc0[_0xb3f97b(0xec)])&&(yield _0x49e595['reset']()),_0x3b7d23=!![]),_0x49e595['$dropdown'][_0xb3f97b(0x160)](),_0x3b7d23&&(yield _0x63b052(_0x49e595,_0xad7fc0));});}),_0x49e595['$verifyBtn']=$(_0x5af1c8(0x13a)),_0x49e595[_0x5af1c8(0xfd)][_0x5af1c8(0x131)](_0x49e595[_0x5af1c8(0xd3)]),_0x49e595[_0x5af1c8(0xd3)]['on'](_0x5af1c8(0xfe),()=>{const _0x3048a6=_0x5af1c8;this[_0x3048a6(0x132)]();});!_0x49e595['$input']['attr'](_0x5af1c8(0xe1))&&_0x49e595['$input'][_0x5af1c8(0x177)](_0x5af1c8(0xe1),_0x5af1c8(0x153));_0x49e595[_0x5af1c8(0xf3)]=$(_0x5af1c8(0x168)),_0x49e595[_0x5af1c8(0xf3)]['hide'](),_0x49e595[_0x5af1c8(0x142)]=$('<div/>')[_0x5af1c8(0x164)]('sterfive-dropdown')[_0x5af1c8(0xbd)](),_0x49e595[_0x5af1c8(0xf6)]['append'](_0x49e595[_0x5af1c8(0xf3)]),_0x49e595[_0x5af1c8(0xf6)][_0x5af1c8(0x131)](_0x49e595['$dropdown']),_0x49e595[_0x5af1c8(0x118)]=$(_0x5af1c8(0xe3))['appendTo'](_0x49e595[_0x5af1c8(0x142)]),this[_0x5af1c8(0xee)]();const _0x184ca7=(_0x17f868,_0x2f4a59)=>{const _0x5c0fb0=_0x5af1c8,_0x4b5cb2=0x14,_0x521da5=0x14,_0xa6cb10=_0x17f868[_0x5c0fb0(0xce)](),_0x2d33da=_0x2f4a59;if(_0x2d33da[_0x5c0fb0(0x14e)]>=_0xa6cb10[_0x5c0fb0(0xd6)]&&_0x2d33da[_0x5c0fb0(0x14e)]<=_0xa6cb10['left']+_0x4b5cb2&&_0x2d33da[_0x5c0fb0(0xdf)]>=_0xa6cb10[_0x5c0fb0(0xda)]&&_0x2d33da[_0x5c0fb0(0xdf)]<=_0xa6cb10['top']+_0x521da5)return!![];return![];},_0x46084e=_0x219ea7=>_0x53f14c(this,void 0x0,void 0x0,function*(){const _0x6c201=_0x5af1c8;if(_0x219ea7[_0x6c201(0x152)](_0x6c201(0x169)))_0x256ba8(_0x49e595,_0x219ea7);else{if(_0x219ea7[_0x6c201(0x152)](_0x6c201(0x104)))_0x219ea7[_0x6c201(0x16b)]('ul')[_0x6c201(0x160)](),_0x219ea7[_0x6c201(0xde)]('expandable\x20expanded');else{if(_0x219ea7['children']('ul')[_0x6c201(0x16b)]()[_0x6c201(0xe7)]>0x0)_0x219ea7[_0x6c201(0x16b)]('ul')[_0x6c201(0x160)](),_0x219ea7[_0x6c201(0xde)](_0x6c201(0xef));else;}}});_0x49e595[_0x5af1c8(0x118)]['on'](_0x5af1c8(0x140),'li',function(_0x4e771f){const _0x394757=_0x5af1c8;var _0x405cbe,_0x2bea7d;_0x4e771f['stopPropagation']();let _0x182639=$(this);if(_0x184ca7(_0x182639,_0x4e771f))_0x46084e(_0x182639);else{const _0x134a0b=_0x182639[_0x394757(0x17e)]('value'),_0x535a76=_0x182639[_0x394757(0x17e)](_0x394757(0x143));if(_0x49e595[_0x394757(0xc7)][_0x394757(0xd7)]&&!_0x49e595[_0x394757(0xc7)]['isSelectable'](_0x535a76))return;_0x49e595[_0x394757(0x15b)]['data'](_0x394757(0x143),_0x535a76);const _0x4e0348=((_0x405cbe=_0x535a76[_0x394757(0x12f)])===null||_0x405cbe===void 0x0?void 0x0:_0x405cbe['text'])||((_0x2bea7d=_0x535a76[_0x394757(0x116)])===null||_0x2bea7d===void 0x0?void 0x0:_0x2bea7d[_0x394757(0x115)])||_0x535a76[_0x394757(0xec)][_0x394757(0xd9)](),_0x5bf1c7='['+_0x4e0348+']('+_0x134a0b+')';_0x49e595['$input'][_0x394757(0xd5)](_0x5bf1c7),_0x49e595[_0x394757(0x15b)]['trigger']('change'),_0x49e595['$dropdown'][_0x394757(0xbd)]();}}),_0x49e595['$tree']['on'](_0x5af1c8(0xfe),'li',function(_0x384c7c){const _0x328145=_0x5af1c8;_0x384c7c[_0x328145(0xbb)]();let _0x5e6220=$(this);_0x184ca7(_0x5e6220,_0x384c7c)&&_0x46084e(_0x5e6220),_0x380834(_0x49e595,_0x5e6220);}),$(document)['on'](_0x5af1c8(0xfe),function(_0x4c936c){const _0x22ea75=_0x5af1c8;!$(_0x4c936c[_0x22ea75(0x111)])[_0x22ea75(0x12d)](_0x49e595['$combo'])[_0x22ea75(0xe7)]&&_0x49e595[_0x22ea75(0x142)][_0x22ea75(0xbd)]();});}});};function _0x1dab20(_0x1a9267,_0x19ab5b){const _0x26f182=_0x153b77,_0xc16e3=$('#node-input-endpoint'),_0x19bef5=$('#node-input-subscription'),_0xbe5317=()=>{const _0x1af47d=_0x1783,_0x4bada7=_0x1a9267['nodes'][_0x1af47d(0x10a)](_0xc16e3['val']());_0x19bef5[_0x1af47d(0x109)]();if(!_0x4bada7||!_0x4bada7[_0x1af47d(0x125)])return;if(_0x4bada7[_0x1af47d(0x125)])for(const _0x2ab697 of _0x4bada7['subscriptions']){const _0x2d55a7=_0x2ab697[_0x1af47d(0x115)]||_0x2ab697['id'];$(_0x1af47d(0xf9),{'value':_0x2ab697['id'],'label':_0x2d55a7,'selected':_0x2ab697['id']===_0x19ab5b[_0x1af47d(0x133)]})[_0x1af47d(0x151)](_0x2d55a7)[_0x1af47d(0x15d)](_0x19bef5);}};_0xbe5317(),_0x19bef5['on'](_0x26f182(0x15c),()=>{_0xbe5317();}),_0xc16e3['on'](_0x26f182(0xc5),()=>{_0xbe5317();});}const _0x8309b0=()=>{const _0x4c39ad=_0x153b77,_0x3905e6=$(_0x4c39ad(0xf0)),_0x450a33=_0x3905e6[_0x4c39ad(0xd5)](),_0x47c4b8=RED['nodes'][_0x4c39ad(0x10a)](_0x450a33);if(!_0x47c4b8)return undefined;const {endpoint:_0x48dc9c,securityMode:_0x4fa88e,securityPolicy:_0x1d06f2,userIdentityType:_0x454a1f,credentials:_0x1d10e8}=_0x47c4b8,_0x259884={'endpoint':_0x48dc9c,'securityMode':_0x4fa88e,'securityPolicy':_0x1d06f2,'userIdentityType':_0x454a1f,'credentials':_0x1d10e8};return _0x259884;},_0x446e6b=()=>{return{'endpointNode':_0xd46e15};},_0xd46e15=()=>{const _0x5e0385=_0x153b77,_0x2561bf=$(_0x5e0385(0xf0)),_0xe7bb30=_0x2561bf[_0x5e0385(0xd5)](),_0x44052c=_0x8309b0();if(!_0x44052c)return undefined;return{'id':_0xe7bb30};};RED[_0x153b77(0x181)][_0x153b77(0x117)]('OpcUa-Client2-Monitor',{'category':_0x153b77(0x102),'color':_0x153b77(0x162),'align':_0x153b77(0xbe),'icon':'../../icons/opcuanodeLogo.png','paletteLabel':_0x153b77(0x175),'defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'subscription':{'value':'','required':!![],'validate':_0x46f521=>{if(_0x46f521==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':_0x153b77(0x10b),'required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x26b69f=_0x153b77;return this[_0x26b69f(0x115)]||_0x26b69f(0x114);},'labelStyle'(){const _0x23766e=_0x153b77;return this[_0x23766e(0x115)]?_0x23766e(0x12c):'';},'oneditprepare'(){const _0x34c47e=_0x153b77,_0x561e67=this;_0x4adcb7();const _0x433db1=_0x561e67[_0x34c47e(0x16a)];_0x561e67['inputs']=_0x433db1?0x0:0x1,_0x1dab20(RED,this),$(_0x34c47e(0x14f))['on'](_0x34c47e(0xc5),()=>{const _0x3b970a=_0x34c47e,_0x247f89=$(_0x3b970a(0xc0))[_0x3b970a(0x154)](_0x3b970a(0x113));_0x247f89?$(_0x3b970a(0x107))[_0x3b970a(0xd5)](0x0):$(_0x3b970a(0x107))[_0x3b970a(0xd5)](0x1);});const _0xdd9d01=$('#node-input-nodeId');_0xdd9d01['nodeBrowser'](Object[_0x34c47e(0xe2)](Object[_0x34c47e(0xe2)]({},_0x446e6b()),{'filter'(_0x47a1c5){const _0x21e17d=_0x34c47e;return _0x47a1c5['nodeClass']===_0x21e17d(0x100)||_0x47a1c5[_0x21e17d(0xe9)]===_0x21e17d(0x161);},'isSelectable'(_0x43d073){const _0x377bd8=_0x34c47e;return _0x43d073[_0x377bd8(0xe9)]==='Variable';}}));},'oneditsave'(){const _0x1b17bd=_0x153b77,_0x50a1e2=$(_0x1b17bd(0xc0))[_0x1b17bd(0x154)](_0x1b17bd(0x113));_0x50a1e2?($('#node-input-startImmediately')[_0x1b17bd(0xd5)](_0x50a1e2?0x0:0x1),this[_0x1b17bd(0x11a)]=_0x50a1e2?0x0:0x1):($(_0x1b17bd(0xc0))[_0x1b17bd(0xd5)](0x1),this['inputs']=0x1);}});}()));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1M2YxNGMiLCJfMHg3MjA0YjAiLCJfMHg0ZjNlMGYiLCJfMHg0ZDM5ZDgiLCJfMHhhZmY2ZjEiLCJfMHgzNmUzN2QiLCJfMHgzMDNjODQiLCJfMHg0NmZkOGUiLCJQcm9taXNlIiwiXzB4YzgxNmViIiwiXzB4Mzk5YWMyIiwiXzB4Mjc0YWNiIiwiXzB4NDdjYWNlIiwiXzB4MWZmNzk2IiwiXzB4M2EyYWU1IiwiXzB4NGVhMDM0IiwiXzB4NWFhMTAzIiwiXzB4M2Q0ZGM0IiwiXzB4NDBlMjVjIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NWNhYjU4IiwiXzB4NDQwNmU2IiwiXzB4Mzg5NjkyIiwiXzB4NTJmOTEyIiwiRXJyb3IiLCJfMHg0NTc4YjYiLCJfMHg0MDI3ZGMiLCJfMHgyYzZhYTYiLCJfMHgyMmQxOTYiLCJfMHg1ODEwZjQiLCJfMHgzNTdmYTgiLCJfMHg0Y2FhYzkiLCJfMHg0YzJlYjAiLCJfMHgxN2I2MzMiLCJfMHgzZWY5NzAiLCJfMHgzN2RjZTgiLCJfMHg0ZjMwOTUiLCJfMHg0NjkxNmIiLCJfMHgyODUyMTIiLCJfMHgyMDNlMGYiLCJfMHg1OGI3YmUiLCJfMHgzZTRiN2UiLCJfMHg1NjQ5OGYiLCJfMHg1ZGYyM2UiLCJfMHhlOTRlZjEiLCJfMHg0NjgzNzQiLCJfMHgxZjY5ODgiLCJfMHg0MzRkMTQiLCJlbmRwb2ludE5vZGUiLCJfMHgyN2JmNWUiLCJlbmRwb2ludCIsIl8weDE2ZGZlZCIsImJhc2VVcmwiLCJfMHgyZTYxYzIiLCJfMHg0NTE1NmIiLCJfMHg1MzBiZTciLCJfMHgxNzliYzkiLCJfMHgyNTYwNGMiLCJfMHgxOGQ1NWIiLCJPYmplY3QiLCJfMHgxYzcyNTAiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MjRhMWYyIiwiXzB4MmFmNjJlIiwiXzB4NTU1Yjc3IiwiXzB4MzhkOWM5IiwiXzB4NTYyZDg0IiwiXzB4NTA3ZTZiIiwiXzB4MTBhYzliIiwiXzB4NTQ4MWVhIiwiXzB4NWQ1Y2NlIiwiXzB4NTljY2M3Iiwibm9kZUlkIiwiXzB4NGQ4NmQwIiwicm9vdE5vZGVJZCIsIl8weDViNWM1YSIsImlzVHlwZSIsIl8weDI4NmZiZSIsIl8weGEzNmY4OCIsIl8weDQ0NTZjYyIsIl8weDNiN2QwZCIsIl8weDVkNDgxMiIsIl8weDViZTM4MSIsIl8weDE5ZDAwOSIsIl8weDE5NmViMyIsIl8weDE5Y2Q2OSIsIl8weDMxYTRmZCIsIl8weDI5Y2ZmMSIsIl8weDRhMWRmMSIsIl8weDRkODllMSIsIl8weDUzNzZjMSIsIl8weDVhYTI1MiIsIl8weDM5NTFlYyIsIl8weDIyZmFiNyIsIl8weGE0OGIwMiIsIl8weDNiOTUxMSIsIl8weDRjMzBlYiIsIl8weDMzZGY3OSIsInNldFRpbWVvdXQiLCJfMHgzZDhjNDkiLCJfMHgzY2RhNDQiLCJfMHgyZjA2OTIiLCJfMHg1ZTZmZmUiLCJfMHhiZjNmYjUiLCJfMHg2MzU1OTkiLCJfMHhmOGM1NWQiLCJfMHgyOGYzMDQiLCJfMHg0MWI2YWYiLCJfMHg0MWEyODkiLCJfMHg1Yzg3Y2EiLCJfMHgxMzc2NjUiLCJfMHgyMGI0NGMiLCJfMHhhMTJkNmQiLCJfMHgxOWU5YmEiLCJfMHgxZTNiMzQiLCJfMHgxZjY2YzgiLCJfMHgzOWI3YjQiLCJfMHg5NmU2NjgiLCJfMHg1MjY1ODgiLCIkIiwiXzB4NTQ1YmUzIiwiXzB4MWI5MzcxIiwiaWNvbiIsIl8weDMzYTcxNCIsImNvbG9yIiwiXzB4MjljMzFiIiwiXzB4NTkxMzc1IiwiXzB4NDYyZjZhIiwiXzB4MTRhODlmIiwiXzB4OWRhOTYiLCJfMHgyYzVkZWEiLCJfMHgzODA4MzQiLCJfMHgzNmI4ZjgiLCJfMHg1MWMwMTUiLCJfMHg0ZDI4M2QiLCJfMHg0MzcwOWYiLCJfMHhlMGJkZmUiLCJfMHhlZDRlYTMiLCJfMHgzZWZlNzEiLCJfMHg2OTIzZjciLCJfMHg0NTRmZDUiLCJfMHgyNTZiYTgiLCJfMHg3MTYwZWMiLCJfMHgzZTNlNTkiLCJfMHgzYmRlMWQiLCJfMHgzOWNkMDAiLCJfMHgyMjU1YjAiLCJfMHhiNDU0N2YiLCJ1bmRlZmluZWQiLCJfMHgzOWM0Y2EiLCJfMHg2M2IwNTIiLCJfMHg1YjE0YmMiLCJfMHgyOTRjODUiLCJfMHgxZWVhODciLCJfMHg0M2RjZjkiLCJfMHgxNWMzNzIiLCJfMHg1MTA0YzAiLCJfMHgzODliNGIiLCJfMHgzYTBiYmUiLCJfMHgxZGM1ZWEiLCJfMHgzMjkwMzIiLCJfMHgyNzJmMmYiLCJfMHgzNzE5ZjAiLCJyZWZlcmVuY2VzIiwiXzB4MzZmM2Q4IiwiXzB4MTViOTY5IiwiXzB4MmNmZGFiIiwiXzB4MjhmZTFkIiwiXzB4MTQxODBlIiwiXzB4MTk0ZmM5IiwiXzB4NDZmZDY5IiwiXzB4MTVkNzc0IiwiXzB4MzVjMWVkIiwiXzB4NTkxMTUwIiwiXzB4M2YwMDMyIiwiXzB4NGFkY2I3IiwiXzB4MmQyMzMzIiwiXzB4NDYzZGI5IiwiXzB4MmJhOGYyIiwiXzB4NDM5M2Q4IiwiXzB4YjkwYTFkIiwiXzB4MzFiMTFhIiwiXzB4YjViYTRkIiwiXzB4MWFkMDI2IiwiXzB4Mzg5NDVmIiwiXzB4NDllNTk1IiwiXzB4MzRlZWVjIiwiXzB4M2I3ZDIzIiwiXzB4YWQ3ZmMwIiwiXzB4MTg0Y2E3IiwiXzB4MTdmODY4IiwiXzB4MmY0YTU5IiwiXzB4NGI1Y2IyIiwiXzB4NTIxZGE1IiwiXzB4YTZjYjEwIiwiXzB4MmQzM2RhIiwiXzB4NDYwODRlIiwiXzB4MjE5ZWE3IiwiXzB4NGU3NzFmIiwiXzB4NDA1Y2JlIiwiXzB4MmJlYTdkIiwiXzB4MTgyNjM5IiwiXzB4MTM0YTBiIiwiXzB4NTM1YTc2IiwiXzB4NGUwMzQ4IiwiXzB4NWJmMWM3IiwiXzB4Mzg0YzdjIiwiXzB4NWU2MjIwIiwiZG9jdW1lbnQiLCJfMHg0YzkzNmMiLCJfMHgxZGFiMjAiLCJfMHgxYTkyNjciLCJfMHgxOWFiNWIiLCJfMHhjMTZlMyIsIl8weDE5YmVmNSIsIl8weGJlNTMxNyIsIl8weDRiYWRhNyIsIl8weDJhYjY5NyIsIl8weDJkNTVhNyIsIl8weDgzMDliMCIsIl8weDM5MDVlNiIsIl8weDQ1MGEzMyIsIl8weDQ3YzRiOCIsIlJFRCIsIl8weDQ4ZGM5YyIsInNlY3VyaXR5TW9kZSIsIl8weDRmYTg4ZSIsInNlY3VyaXR5UG9saWN5IiwiXzB4MWQwNmYyIiwidXNlcklkZW50aXR5VHlwZSIsIl8weDQ1NGExZiIsImNyZWRlbnRpYWxzIiwiXzB4MWQxMGU4IiwiXzB4MjU5ODg0IiwiXzB4NDQ2ZTZiIiwiXzB4ZDQ2ZTE1IiwiXzB4MjU2MWJmIiwiXzB4ZTdiYjMwIiwiXzB4NDQwNTJjIiwiXzB4NDZmNTIxIiwiXzB4NTYxZTY3IiwiXzB4NDMzZGIxIiwiXzB4MjQ3Zjg5IiwiXzB4ZGQ5ZDAxIiwiXzB4NDdhMWM1IiwiXzB4NDNkMDczIiwiXzB4NTBhMWUyIl0sIm1hcHBpbmdzIjoicXNIQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixTQUFVQyxTQUFWLENBQW1CQyxTQUFuQixDLHlCQUM1QixTQUFTQyxTQUFULENBQW1CQyxTQUFuQixDLHlCQUE0QixHLENBQU1DLFNBQUEsQ0FBS1QsU0FBQSxDLGdCQUFBLEVBQWVRLFNBQWYsQ0FBTCxDLEVBQStCLE1BQU9FLFNBQVAsQyxDQUFZSixTQUFBLENBQU9JLFNBQVAsQyxHQUM3RSxTQUFTQyxTQUFULENBQWtCQyxTQUFsQixDLHlCQUEyQixHLENBQU1ILFNBQUEsQ0FBS1QsU0FBQSxDLGVBQUEsRUFBbUJZLFNBQW5CLENBQUwsQyxFQUFtQyxNQUFPQyxTQUFQLEMsQ0FBWVAsU0FBQSxDQUFPTyxT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V0FBQSxJLGdCQUFBLEVBQXFDQSxTQUFBLEMsZUFBQSxJLGtCQURpQyxDLGNBR2pGLENBQWFDLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLGVBQUEsSSxZQUpzRSxDQUFqRSxDQUFwQixDLEVBMUR3QyxDLFlBaUU1QyxFLDJCQUNVQyxTQUFBLENBQW1CL0gsQ0FBQSxDLGVBQUEsRSxnQkFBQSxFLGdCQUFBLEMsQ0FDckIrSCxTLEVBQ0EvSCxDQUFBLEMsOEJBQUEsRSxlQUFBLEVBQXNDK0gsU0FBQSxDLEdBQUEsQyxHQUF0QyxDLENBQ0EsSyxnQkFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvSCxDQUFBLEMsZUFBQSxFLGVBQUEsRSxHQUFBLEMsQ0FDQSxLLFFBQUEsRSxNQXpFb0MsQ0FBaEQsQyxFQTdvQkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xLCB0ZW1wbGF0ZV8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoX2EsIF9iKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIF9iXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L3dhbGstYmFja3dhcmRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgcm9vdE5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1R5cGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIGpzb24uYnJvd3NlUGF0aDtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYWtlQ29ubmVjdGlvbih0aGF0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZXhwYW5kTGkodGhhdCwgJGxpKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJGxpLCBmLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC5fX3BhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlLmNhbGwodGhhdCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fX3BhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gcmVzZXQgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoYXQ7XG4gICAgICAgICAgICAgICAgICAgIGEuX19wYXJlbnROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB5aWVsZCB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTdWJzY3JpcHRpb25TZWxlY3RvcihSRUQsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCAkc3Vic2NyaXB0aW9uID0gJChcIiNub2RlLWlucHV0LXN1YnNjcmlwdGlvblwiKTtcbiAgICAgICAgY29uc3QgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IFJFRC5ub2Rlcy5ub2RlKCRlbmRwb2ludC52YWwoKSk7XG4gICAgICAgICAgICAkc3Vic2NyaXB0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBpZiAoIWVuZHBvaW50IHx8ICFlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHMubmFtZSB8fCBzLmlkO1xuICAgICAgICAgICAgICAgICAgICAkKFwiPG9wdGlvbi8+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHMuaWQgPT09IG5vZGUuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oJHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICAvLyBoYWNrXG4gICAgICAgIC8vICRpbnB1dEFjdGlvbi5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgICRzdWJzY3JpcHRpb24ub24oXCJmb2N1cyBjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgJGVuZHBvaW50Lm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gUkVELihlbmRwb2ludElkKTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzYW5pdGl6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IHRoZSBub2RlLXJlZCBzdHVmZilcbiAgICAgICAgY29uc3QgeyBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSwgdXNlcklkZW50aXR5VHlwZSwgY3JlZGVudGlhbHMgfSA9IHJlZE5vZGU7XG4gICAgICAgIGNvbnN0IHJldFZhbHVlID0ge1xuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBzZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgfTtcbiAgICAgICAgLy8geHggY29uc29sZS5sb2coXCJ4eHhcIiwgcmV0VmFsdWUpO1xuICAgICAgICByZXR1cm4gcmV0VmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnROciA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICBpZiAoIWVuZHBvaW50TnIpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBlbmRwb2ludElkLFxuICAgICAgICAgICAgLy8gZW5kcG9pbnQ6IGVuZHBvaW50TnIuZW5kcG9pbnQsXG4gICAgICAgICAgICAvLyBzZWN1cml0eU1vZGU6IGVuZHBvaW50TnIuc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgLy8gc2VjdXJpdHlQb2xpY3k6IGVuZHBvaW50TnIuc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdXNlcklkZW50aXR5VHlwZTogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgLy8gY3JlZGVudGlhbDogZW5kcG9pbnROci5jcmVkZW50aWFscyxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB1c2VyTmFtZTogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlID09PSBcIlVzZXJOYW1lXCIgPyBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gcGFzc3dvcmQ6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci5jcmVkZW50aWFscy5wYXNzd29yZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIHVzZXJDZXJ0aWZpY2F0ZTogZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyQ2VydGlmaWNhdGUsXG4gICAgICAgICAgICAvLyB1c2VyUHJpdmF0ZWtleTogZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyUHJpdmF0ZWtleSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItTW9uaXRvclwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwibW9uaXRvciB2YXJpYWJsZVwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDIgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICAvLyBmb3IgYWN0aW9uIG1vbml0b3JcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRJbW1lZGlhdGVseTogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIC8vIHdlIHVzZSBhIGRpZmZlcmVudCB3aWRnZXQgZm9yIGVkaXRpbmcgdGhlIG5vZGVJZCwgYmVjYXVzZSB0aGUgYmVoYXZpb3JcbiAgICAgICAgICAgIC8vIGlzIHNwZWNpZmljIHRvIG1vbml0b3IsIGhvd2V2ZXIgcHJvcGVydHkgd2lsbCBiZSBzdG9yZWQgaW4gbm9kZUlkXG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiL1NlcnZlci9TZXJ2ZXJTdGF0dXMvQ3VycmVudFRpbWVcIiwgcmVxdWlyZWQ6IGZhbHNlLCB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSB9LFxuICAgICAgICAgICAgc2FtcGxpbmdJbnRlcnZhbDogeyB2YWx1ZTogMTAwMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGRpc2NhcmRPbGRlc3Q6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBxdWV1ZVNpemU6IHsgdmFsdWU6IDEwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBpbnB1dHM6LFxuICAgICAgICBvdXRwdXRzOiAxLCAvL3h4XG4gICAgICAgIC8vIDIgb3V0cHV0LCBzZWNvbmQgZm9yIHJhdyBub2RlLW9wY3VhIGRpYWdub3N0aWNzIG9yIG1vcmUgY29tcGxldGUgbWVzc2FnZVxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBDbGllbnQgTW9uaXRvciBcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW1tZWRpYXRlID0gbm9kZS5zdGFydEltbWVkaWF0ZWx5O1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSBpc0ltbWVkaWF0ZSA/IDAgOiAxO1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgdGhpcyk7XG4gICAgICAgICAgICAkKFwibm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3JcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCIgfHwgbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW1tZWRpYXRlbHkgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgIGlmIChzdGFydEltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikudmFsKHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSBzdGFydEltbWVkaWF0ZWx5ID8gMCA6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
7
+ function _0x4073(_0x107d5a,_0x52bd3b){const _0x4d2ad7=_0x4d2a();return _0x4073=function(_0x4073e2,_0x4524f3){_0x4073e2=_0x4073e2-0x14d;let _0x3db0c0=_0x4d2ad7[_0x4073e2];return _0x3db0c0;},_0x4073(_0x107d5a,_0x52bd3b);}(function(_0x54bc63,_0x4f7fb1){const _0x26ae3c=_0x4073,_0xba414b=_0x54bc63();while(!![]){try{const _0x1a5b3d=parseInt(_0x26ae3c(0x1ed))/0x1+parseInt(_0x26ae3c(0x1b2))/0x2*(-parseInt(_0x26ae3c(0x20d))/0x3)+parseInt(_0x26ae3c(0x20a))/0x4*(parseInt(_0x26ae3c(0x1a9))/0x5)+parseInt(_0x26ae3c(0x1ee))/0x6*(-parseInt(_0x26ae3c(0x14d))/0x7)+-parseInt(_0x26ae3c(0x1a7))/0x8*(parseInt(_0x26ae3c(0x160))/0x9)+-parseInt(_0x26ae3c(0x180))/0xa+parseInt(_0x26ae3c(0x157))/0xb;if(_0x1a5b3d===_0x4f7fb1)break;else _0xba414b['push'](_0xba414b['shift']());}catch(_0x3872e6){_0xba414b['push'](_0xba414b['shift']());}}}(_0x4d2a,0x59b08),(function(){'use strict';const _0x5281a0=_0x4073;function _0x2daa47(_0x283e6b,_0x49e819,_0x28f0d5,_0xc8e94d){function _0x370b2a(_0x4a4167){return _0x4a4167 instanceof _0x28f0d5?_0x4a4167:new _0x28f0d5(function(_0xfa2a97){_0xfa2a97(_0x4a4167);});}return new(_0x28f0d5||(_0x28f0d5=Promise))(function(_0x8bc931,_0x201f85){const _0x44d792=_0x4073;function _0x47fc93(_0x4396d7){const _0x1a38cd=_0x4073;try{_0xe7d81a(_0xc8e94d[_0x1a38cd(0x185)](_0x4396d7));}catch(_0x49c45f){_0x201f85(_0x49c45f);}}function _0xe3a61(_0x5eb3ca){const _0x3a83a9=_0x4073;try{_0xe7d81a(_0xc8e94d[_0x3a83a9(0x1ac)](_0x5eb3ca));}catch(_0x2d9ab7){_0x201f85(_0x2d9ab7);}}function _0xe7d81a(_0x3dd052){const _0x594d66=_0x4073;_0x3dd052['done']?_0x8bc931(_0x3dd052[_0x594d66(0x18a)]):_0x370b2a(_0x3dd052[_0x594d66(0x18a)])[_0x594d66(0x1b5)](_0x47fc93,_0xe3a61);}_0xe7d81a((_0xc8e94d=_0xc8e94d[_0x44d792(0x1ef)](_0x283e6b,_0x49e819||[]))[_0x44d792(0x185)]());});}typeof SuppressedError===_0x5281a0(0x176)?SuppressedError:function(_0x4d8b24,_0x3930c7,_0x3a18ea){const _0x1ab7dc=_0x5281a0;var _0x50b245=new Error(_0x3a18ea);return _0x50b245[_0x1ab7dc(0x1e0)]=_0x1ab7dc(0x1af),_0x50b245[_0x1ab7dc(0x1a2)]=_0x4d8b24,_0x50b245[_0x1ab7dc(0x192)]=_0x3930c7,_0x50b245;};const _0x5b8ede='ns=0;i=35',_0x144f29=_0x5281a0(0x1cd),_0x627352=_0x5281a0(0x153),_0x4d0c21=_0x5281a0(0x209),_0x297422=_0x5281a0(0x211),_0x247df3=_0x5281a0(0x17e),_0x5bc5a3='ns=0;i=40';var _0xd2ad30;(function(_0x1042e8){const _0x395d50=_0x5281a0;_0x1042e8[_0x1042e8[_0x395d50(0x1f6)]=0x0]=_0x395d50(0x1f6),_0x1042e8[_0x1042e8[_0x395d50(0x184)]=0x1]='Inverse',_0x1042e8[_0x1042e8['Both']=0x2]=_0x395d50(0x1c3),_0x1042e8[_0x1042e8[_0x395d50(0x204)]=0x3]=_0x395d50(0x204);}(_0xd2ad30||(_0xd2ad30={})));var _0x184a22;(function(_0x316e4e){const _0x2181ee=_0x5281a0;_0x316e4e[_0x316e4e[_0x2181ee(0x1b7)]=0x0]=_0x2181ee(0x1b7),_0x316e4e[_0x316e4e[_0x2181ee(0x188)]=0x1]='Object',_0x316e4e[_0x316e4e[_0x2181ee(0x1f1)]=0x2]='Variable',_0x316e4e[_0x316e4e[_0x2181ee(0x195)]=0x4]='Method',_0x316e4e[_0x316e4e[_0x2181ee(0x14f)]=0x8]='ObjectType',_0x316e4e[_0x316e4e[_0x2181ee(0x1e5)]=0x10]=_0x2181ee(0x1e5),_0x316e4e[_0x316e4e['ReferenceType']=0x20]=_0x2181ee(0x151),_0x316e4e[_0x316e4e['DataType']=0x40]='DataType',_0x316e4e[_0x316e4e[_0x2181ee(0x1c0)]=0x80]=_0x2181ee(0x1c0);}(_0x184a22||(_0x184a22={})));var _0x16c4cd;(function(_0x1b62c2){const _0x7607ad=_0x5281a0;_0x1b62c2[_0x1b62c2[_0x7607ad(0x188)]=0x1]=_0x7607ad(0x188),_0x1b62c2[_0x1b62c2[_0x7607ad(0x1f1)]=0x2]='Variable',_0x1b62c2[_0x1b62c2['Method']=0x4]=_0x7607ad(0x195),_0x1b62c2[_0x1b62c2['ObjectType']=0x8]=_0x7607ad(0x14f),_0x1b62c2[_0x1b62c2['VariableType']=0x10]='VariableType',_0x1b62c2[_0x1b62c2['ReferenceType']=0x20]=_0x7607ad(0x151),_0x1b62c2[_0x1b62c2['DataType']=0x40]=_0x7607ad(0x1eb),_0x1b62c2[_0x1b62c2[_0x7607ad(0x1c0)]=0x80]='View';}(_0x16c4cd||(_0x16c4cd={})));var _0x8ba48f;(function(_0x4c778f){const _0xaaac8d=_0x5281a0;_0x4c778f[_0x4c778f[_0xaaac8d(0x151)]=0x1]=_0xaaac8d(0x151),_0x4c778f[_0x4c778f[_0xaaac8d(0x1a4)]=0x2]=_0xaaac8d(0x1a4),_0x4c778f[_0x4c778f[_0xaaac8d(0x203)]=0x4]=_0xaaac8d(0x203),_0x4c778f[_0x4c778f[_0xaaac8d(0x1bb)]=0x8]=_0xaaac8d(0x1bb),_0x4c778f[_0x4c778f[_0xaaac8d(0x162)]=0x10]=_0xaaac8d(0x162),_0x4c778f[_0x4c778f['TypeDefinition']=0x20]='TypeDefinition';}(_0x8ba48f||(_0x8ba48f={})));function _0x508a82(_0x21b8af){const _0x3abe1c=_0x5281a0;switch(_0x21b8af){case _0x3abe1c(0x189):return _0x5b8ede;case _0x3abe1c(0x1f8):return _0x4d0c21;case _0x3abe1c(0x1e4):return _0x627352;case _0x3abe1c(0x1f4):return _0x297422;case'HasSubtype':return _0x247df3;case _0x3abe1c(0x1e8):return _0x5bc5a3;}}const _0x1b2c27=_0x16dfc2=>{const _0x3a5f25=_0x5281a0;switch(_0x16dfc2[_0x3a5f25(0x1e6)]){case _0x3a5f25(0x188):if(_0x16dfc2[_0x3a5f25(0x1d1)]===_0x5b8ede);if(_0x16dfc2[_0x3a5f25(0x1fc)]===_0x144f29||_0x16dfc2['referenceTypeId']===_0x3a5f25(0x1a5))return{'icon':_0x3a5f25(0x1c8),'color':_0x3a5f25(0x1ba)};return{'icon':_0x3a5f25(0x16e),'color':_0x3a5f25(0x156)};case _0x3a5f25(0x1f1):if(_0x16dfc2[_0x3a5f25(0x1d1)]===_0x627352)return{'icon':_0x3a5f25(0x1c7),'color':_0x3a5f25(0x1a0)};else return _0x16dfc2[_0x3a5f25(0x1d1)]===_0x4d0c21?{'icon':_0x3a5f25(0x1c7),'color':_0x3a5f25(0x171)}:{'icon':'fa-list-alt','color':_0x3a5f25(0x167)};case _0x3a5f25(0x195):return{'icon':_0x3a5f25(0x18f),'color':_0x3a5f25(0x1dc)};case _0x3a5f25(0x14f):return{'icon':_0x3a5f25(0x16e),'color':'DarkOrange'};case _0x3a5f25(0x1e5):return{'icon':'fa-sliders','color':_0x3a5f25(0x1aa)};case _0x3a5f25(0x1eb):return{'icon':'fa-text-width','color':_0x3a5f25(0x167)};}return{'icon':_0x3a5f25(0x1ca),'color':'grey'};},_0x5a6ae8=(_0x2832b1,_0x145a1c,_0x68c59b)=>_0x2daa47(void 0x0,[_0x2832b1,_0x145a1c,_0x68c59b],void 0x0,function*({endpointNode:_0x278ed5,endpoint:_0x57e73e,baseUrl:_0x507cc9},_0x2d4996,_0x58918e){const _0x5cddd9=_0x5281a0,_0x2ab7e5=_0x507cc9+_0x5cddd9(0x19b),_0x336488=_0x2ab7e5+_0x5cddd9(0x164),_0x1406a3=Object[_0x5cddd9(0x181)](Object[_0x5cddd9(0x181)]({},_0x58918e),{'nodeId':_0x2d4996,'resultMask':0x3f}),_0x5cd57d=yield fetch(_0x336488,{'method':_0x5cddd9(0x1d8),'body':JSON[_0x5cddd9(0x1e7)]({'endpointNode':_0x278ed5,'endpoint':_0x57e73e,'browseDescription':_0x1406a3}),'headers':{'Content-Type':_0x5cddd9(0x1e3)}});if(_0x5cd57d[_0x5cddd9(0x1f3)]!==0xc8)return console['log'](_0x5cddd9(0x1c4),_0x5cd57d[_0x5cddd9(0x1f3)],_0x5cd57d[_0x5cddd9(0x18c)]),{'references':[]};const _0x3cd812=yield _0x5cd57d[_0x5cddd9(0x1b8)](),_0x7a44ba=_0x3cd812['browseResult'][_0x5cddd9(0x1de)]||[];return{'references':_0x7a44ba};}),_0x4819bc={'referenceTypeId':_0x508a82('HasChild'),'includeSubtypes':!![],'browseDirection':_0xd2ad30[_0x5281a0(0x1f6)],'nodeClassMask':_0x184a22[_0x5281a0(0x1f1)]|_0x184a22[_0x5281a0(0x188)]|_0x184a22[_0x5281a0(0x195)],'resultMask':0x3f},_0x3fae57={'referenceTypeId':_0x508a82(_0x5281a0(0x189)),'includeSubtypes':!![],'browseDirection':_0xd2ad30[_0x5281a0(0x1f6)],'nodeClassMask':_0x184a22[_0x5281a0(0x1f1)]|_0x184a22[_0x5281a0(0x188)]|_0x184a22[_0x5281a0(0x195)],'resultMask':0x3f},_0x1814a9=(_0x3dca47,_0x489645)=>_0x2daa47(void 0x0,[_0x3dca47,_0x489645],void 0x0,function*({endpointNode:_0x407711,endpoint:_0x3ff20c,baseUrl:_0x4fa03b},{nodeId:_0x3d646b,rootNodeId:_0x3dad14,isType:_0x3c20a0}){const _0x506f9a=_0x5281a0,_0x2a36d7=_0x4fa03b+'/opcua-endpoint2',_0xc2ecd5=_0x2a36d7+_0x506f9a(0x1b6),_0x13a51d=yield fetch(_0xc2ecd5,{'method':'POST','body':JSON[_0x506f9a(0x1e7)]({'endpointNode':_0x407711,'endpoint':_0x3ff20c,'nodeId':_0x3d646b,'rootNodeId':_0x3dad14,'isType':_0x3c20a0}),'headers':{'Content-Type':'application/json'}});if(_0x13a51d['status']!==0xc8)return null;const _0x52ef32=yield _0x13a51d[_0x506f9a(0x1b8)]();return _0x52ef32[_0x506f9a(0x165)];}),_0xf0ddba=(_0xa3e32d,_0x1528b0,_0x33a12a)=>_0x2daa47(void 0x0,[_0xa3e32d,_0x1528b0,_0x33a12a],void 0x0,function*({endpointNode:_0x3f9bae,endpoint:_0x53b9c7,baseUrl:_0x4e005c},_0x9faf2d,_0xc474d2){const _0x2e80fe=_0x5281a0,_0x1bb7e3=_0x4e005c+'/opcua-endpoint2',_0x35f7b4=_0x1bb7e3+'/checkNodeId',_0x317c58=_0x9faf2d[_0x2e80fe(0x1e1)](),_0x224aea=yield fetch(_0x35f7b4,{'method':'POST','body':JSON[_0x2e80fe(0x1e7)]({'endpointNode':_0x3f9bae,'endpoint':_0x53b9c7,'nodeId':_0x317c58}),'headers':{'Content-Type':_0x2e80fe(0x1e3)}}),_0x18bce8=(_0x9c3b27,_0x5b570e)=>{const _0x4256b1=_0x2e80fe;_0xc474d2[_0x4256b1(0x1b0)](_0x9c3b27)[_0x4256b1(0x1b9)](_0x4256b1(0x15e))[_0x4256b1(0x1b9)](_0x5b570e),_0xc474d2[_0x4256b1(0x1c1)](),setTimeout(()=>{const _0x3958a4=_0x4256b1;_0xc474d2['removeClass'](_0x5b570e),_0xc474d2[_0x3958a4(0x1fb)]();},0xbb8);},_0x39383f=yield _0x224aea['json']();_0x224aea['status']!==0xc8?_0x18bce8(_0x2e80fe(0x163)+_0x317c58,'failure'):_0x39383f[_0x2e80fe(0x161)]['match'](/Good/)?(_0x9faf2d[_0x2e80fe(0x1e1)](_0x39383f['nodeAddressString']),_0x9faf2d[_0x2e80fe(0x177)](_0x2e80fe(0x1f5)),_0x18bce8('Good','ok')):(_0x9faf2d['val'](''+_0x317c58),_0x18bce8(_0x39383f['statusCode']+'\x20'+_0x224aea[_0x2e80fe(0x18c)],_0x2e80fe(0x155)));});function _0x5e99f1(_0x24e258,_0x5b63d7){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x91f67=_0x4073,_0x41a0df=_0x24e258[_0x91f67(0x1b4)](_0x91f67(0x18a)),_0x19f85f=yield _0x5a6ae8(_0x5b63d7,_0x41a0df,_0x4819bc),_0x368bd6=yield _0x5a6ae8(_0x5b63d7,_0x41a0df,_0x3fae57);return{'references':[..._0x19f85f[_0x91f67(0x1de)],..._0x368bd6[_0x91f67(0x1de)]]};});}const _0xa310fc={'referenceTypeId':_0x508a82(_0x5281a0(0x214)),'includeSubtypes':!![],'browseDirection':_0xd2ad30['Forward'],'nodeClassMask':_0x184a22[_0x5281a0(0x151)]|_0x184a22['ObjectType']|_0x184a22[_0x5281a0(0x1eb)]|_0x184a22['VariableType'],'resultMask':0x3f};function _0x5a47a4(_0x3367f1,_0x35b4d6){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x42d541=_0x4073,_0x35123f=_0x3367f1[_0x42d541(0x1b4)](_0x42d541(0x18a)),_0x473898=yield _0x5a6ae8(_0x35b4d6,_0x35123f,_0xa310fc);return _0x473898;});}const _0x52d380=_0x48ac92=>{const _0x52893c=_0x5281a0;var _0x1eb1dc,_0x204a59,_0x45f2f1,_0x3fcb76;if(!_0x48ac92||!_0x48ac92[_0x52893c(0x17f)]){const _0xdfafc0=$(_0x52893c(0x1c5));return _0xdfafc0;}const _0x36edb2=_0x48ac92[_0x52893c(0x17f)][_0x52893c(0x205)](),_0x4064a7=((_0x1eb1dc=_0x48ac92[_0x52893c(0x15a)])===null||_0x1eb1dc===void 0x0?void 0x0:_0x1eb1dc[_0x52893c(0x1b0)])||((_0x204a59=_0x48ac92[_0x52893c(0x197)])===null||_0x204a59===void 0x0?void 0x0:_0x204a59[_0x52893c(0x1e0)])||_0x48ac92[_0x52893c(0x17f)][_0x52893c(0x205)](),{icon:_0x542035,color:_0x1c77b5}=_0x1b2c27(_0x48ac92),_0x2d8eec='('+_0x48ac92[_0x52893c(0x17f)][_0x52893c(0x205)]()+')\x20'+(((_0x45f2f1=_0x48ac92[_0x52893c(0x197)])===null||_0x45f2f1===void 0x0?void 0x0:_0x45f2f1[_0x52893c(0x1e0)])||((_0x3fcb76=_0x48ac92[_0x52893c(0x15a)])===null||_0x3fcb76===void 0x0?void 0x0:_0x3fcb76[_0x52893c(0x1b0)])||''),_0x1cd677=$(_0x52893c(0x1c2)+_0x48ac92['nodeId']['toString']()+_0x52893c(0x17d)+_0x2d8eec+_0x52893c(0x150)+_0x542035+'\x22\x20style=\x22color:'+_0x1c77b5+_0x52893c(0x16f)+_0x4064a7+_0x52893c(0x17c));return _0x1cd677[_0x52893c(0x1b9)](_0x52893c(0x169)),_0x1cd677['data'](_0x52893c(0x18a),_0x36edb2),_0x1cd677[_0x52893c(0x1b4)](_0x52893c(0x212),_0x48ac92),_0x1cd677;},_0x1e62fc=(_0x54096f,_0x2b52c9)=>{const _0x3df376=_0x5281a0;return _0x2b52c9['find'](_0x3df376(0x208)+_0x54096f+'\x22]');},_0x3a813e=(_0x200730,_0x6f3e0e)=>{const _0x5c7e25=_0x5281a0;_0x200730[_0x5c7e25(0x1d3)][_0x5c7e25(0x1cb)]('li\x20>\x20.tree-text')[_0x5c7e25(0x200)](_0x5c7e25(0x18b)),_0x6f3e0e[_0x5c7e25(0x1cb)](_0x5c7e25(0x15f))['addClass']('selected');},_0x30fb4a=(_0x3e000a,_0x298bfa,_0x3ffc0f)=>_0x2daa47(void 0x0,void 0x0,void 0x0,function*(){const _0x36d69f=_0x5281a0;let _0x3b9816=_0x3ffc0f[_0x36d69f(0x1ea)](_0x36d69f(0x1e2));_0x298bfa['relativePath'][_0x36d69f(0x1ff)]||[];const _0x1124ab=_0x298bfa['nodeIds']||[];if(_0x1124ab[_0x36d69f(0x1a8)]===0x0)return;for(const _0x3fe9f0 of _0x1124ab){_0x3b9816[_0x36d69f(0x202)](_0x36d69f(0x169))&&(yield _0x14f58a(_0x3e000a,_0x3b9816));const _0x11924f=_0x1e62fc(_0x3fe9f0,_0x3b9816);if(_0x11924f[_0x36d69f(0x1a8)]===0x0)return;_0x3b9816=_0x11924f;}_0x3a813e(_0x3e000a,_0x3b9816),_0x3b6fb8(_0x3e000a[_0x36d69f(0x193)],_0x3b9816);});function _0x3b6fb8(_0x4c06e6,_0x3747b5){const _0x4e0c40=_0x5281a0,_0x1402e0=_0x3747b5[_0x4e0c40(0x213)]()[_0x4e0c40(0x1f0)],_0x32ee69=_0x4c06e6[_0x4e0c40(0x1fa)]();if(_0x32ee69==undefined)return;const _0x1df438=_0x32ee69+_0x1402e0-_0x4c06e6[_0x4e0c40(0x1cf)]()/0x2+_0x3747b5[_0x4e0c40(0x1cf)]()/0x2;_0x4c06e6[_0x4e0c40(0x1ae)]({'scrollTop':_0x1df438},0x1f4);}const _0x49fbad=(_0x24fb3b,_0x3e9807)=>_0x2daa47(void 0x0,void 0x0,void 0x0,function*(){const _0x3e3c74=_0x5281a0,_0x4566ad=_0x24fb3b[_0x3e3c74(0x1bc)][_0x3e3c74(0x1e1)](),_0x5bf00a={'nodeId':_0x4566ad,'rootNodeId':_0x3e9807[_0x3e3c74(0x17f)],'isType':_0x24fb3b[_0x3e3c74(0x17a)][_0x3e3c74(0x1d9)]||![]},_0x5545c4=_0x27d867(_0x24fb3b),_0x3c32f4=yield _0x1814a9(_0x5545c4,_0x5bf00a);if(!_0x3c32f4)return;yield _0x30fb4a(_0x24fb3b,_0x3c32f4,_0x24fb3b[_0x3e3c74(0x1d3)]);});function _0x34f6c6(_0x337dad,_0x2e4d1b,_0x20fd18,_0x156e71){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x53c08f=_0x4073;if(_0x2e4d1b['hasClass'](_0x53c08f(0x198))){console[_0x53c08f(0x194)](_0x53c08f(0x1d5));return;}if(_0x2e4d1b[_0x53c08f(0x202)](_0x53c08f(0x179))){console[_0x53c08f(0x194)](_0x53c08f(0x187));return;}_0x2e4d1b[_0x53c08f(0x1b9)](_0x53c08f(0x179)),_0x2e4d1b['append'](_0x53c08f(0x175));try{_0x2e4d1b['children']('ul')[_0x53c08f(0x19e)]();const {references:_0xbbc10b}=yield _0x20fd18(_0x2e4d1b,_0x156e71);for(const _0x4b2a58 of _0xbbc10b){if(_0x337dad[_0x53c08f(0x17a)]['filter']&&!_0x337dad[_0x53c08f(0x17a)]['filter'](_0x4b2a58))continue;const _0x4bd0a2=_0x52d380(_0x4b2a58);_0x2e4d1b[_0x53c08f(0x1ea)]('ul')[_0x53c08f(0x1c9)](_0x4bd0a2);}_0x2e4d1b[_0x53c08f(0x1b9)](_0x53c08f(0x198));}catch(_0x50efc9){_0x2e4d1b[_0x53c08f(0x1ea)]('ul')[_0x53c08f(0x1c9)](_0x53c08f(0x1d0)+_0x50efc9['message']+_0x53c08f(0x174)),console['log'](_0x53c08f(0x19c),_0x50efc9);}_0x2e4d1b[_0x53c08f(0x1cb)](_0x53c08f(0x199))[_0x53c08f(0x1fe)](),_0x2e4d1b[_0x53c08f(0x200)]('loading');});}function _0x27d867(_0x2d3a09){const _0x2e36db=_0x5281a0,_0x60b488={'baseUrl':_0x2d3a09[_0x2e36db(0x17a)][_0x2e36db(0x1fd)],'endpointNode':typeof _0x2d3a09[_0x2e36db(0x17a)][_0x2e36db(0x182)]===_0x2e36db(0x176)?_0x2d3a09[_0x2e36db(0x17a)][_0x2e36db(0x182)]():_0x2d3a09['options'][_0x2e36db(0x182)],'endpoint':typeof _0x2d3a09[_0x2e36db(0x17a)][_0x2e36db(0x1d4)]==='function'?_0x2d3a09['options'][_0x2e36db(0x1d4)]():_0x2d3a09[_0x2e36db(0x17a)][_0x2e36db(0x1d4)]};return _0x60b488;}function _0x14f58a(_0x2fb554,_0x44d64c){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x182bee=_0x4073;if(_0x44d64c['hasClass'](_0x182bee(0x198))){_0x44d64c[_0x182bee(0x200)](_0x182bee(0x169))['addClass'](_0x182bee(0x1be)),_0x44d64c[_0x182bee(0x1ea)]('ul')[_0x182bee(0x19d)]();return;}const _0x3213da=_0x27d867(_0x2fb554),_0x3bbd6e=!_0x2fb554[_0x182bee(0x17a)][_0x182bee(0x1d9)]?_0x5e99f1:_0x5a47a4;try{yield _0x34f6c6(_0x2fb554,_0x44d64c,_0x3bbd6e,_0x3213da),_0x44d64c[_0x182bee(0x200)]('expandable')[_0x182bee(0x1b9)](_0x182bee(0x1be));}catch(_0x2a6ab2){_0x44d64c[_0x182bee(0x200)]('expandable')[_0x182bee(0x1b9)](_0x182bee(0x1be)),console[_0x182bee(0x194)](_0x182bee(0x1a2),_0x2a6ab2);}});}const _0x1f22b5=()=>{const _0x2cfe55=_0x5281a0;$[_0x2cfe55(0x18e)](_0x2cfe55(0x16d),{'options':{'endpointNode':()=>({'endpoint':_0x2cfe55(0x1b3)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x2cfe55(0x190)},'nodeClass':'Object','nodeId':'ns=0;i=85','displayName':{'text':_0x2cfe55(0x190)},'typeDefinition':_0x144f29}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x1d8d9c=_0x4073,_0x17367d=this;if(!_0x17367d[_0x1d8d9c(0x1f9)]){const _0x282f83=typeof _0x17367d[_0x1d8d9c(0x17a)][_0x1d8d9c(0x166)]===_0x1d8d9c(0x176)?_0x17367d[_0x1d8d9c(0x17a)][_0x1d8d9c(0x166)][_0x1d8d9c(0x19f)](_0x17367d):_0x17367d[_0x1d8d9c(0x17a)][_0x1d8d9c(0x166)];if(_0x282f83 instanceof Promise){const _0x3a074d=yield _0x282f83;_0x17367d[_0x1d8d9c(0x1f9)]=_0x3a074d;}else _0x17367d[_0x1d8d9c(0x1f9)]=_0x282f83;}return _0x17367d[_0x1d8d9c(0x1f9)];});},'reset'(){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x2151c2=_0x4073,_0x2ad92e=this,_0x2e44ee=_0x2ad92e;_0x2e44ee['__parentNode']=undefined,_0x2ad92e[_0x2151c2(0x1d3)][_0x2151c2(0x19e)]();const _0x2c95f6=yield this['resolveParentNode'](),_0x517bf4=_0x52d380(_0x2c95f6);_0x2ad92e['$tree'][_0x2151c2(0x1c9)](_0x517bf4),_0x2ad92e[_0x2151c2(0x173)]=_0x2c95f6;});},'verify'(){const _0x4a39da=_0x2cfe55,_0x1ff17b=this,_0x3b7a73=_0x27d867(_0x1ff17b);_0xf0ddba(_0x3b7a73,_0x1ff17b[_0x4a39da(0x1bc)],_0x1ff17b[_0x4a39da(0x1a1)]);},'_create'(){const _0x138ed1=_0x2cfe55,_0x4b9407=this;_0x4b9407[_0x138ed1(0x1bc)]=this[_0x138ed1(0x1df)],_0x4b9407[_0x138ed1(0x1ec)]=$('<div/>'),_0x4b9407[_0x138ed1(0x1ec)][_0x138ed1(0x1b9)](_0x138ed1(0x1d7)),this['element'][_0x138ed1(0x1b1)](_0x4b9407[_0x138ed1(0x1ec)]),_0x4b9407[_0x138ed1(0x1f2)]=$(_0x138ed1(0x16c))['addClass']('input-group'),_0x4b9407['$combo'][_0x138ed1(0x1c9)](_0x4b9407[_0x138ed1(0x1f2)]),_0x4b9407[_0x138ed1(0x1f2)]['append'](_0x4b9407[_0x138ed1(0x1bc)]),_0x4b9407[_0x138ed1(0x1a3)]=$(_0x138ed1(0x19a)),_0x4b9407[_0x138ed1(0x1f2)]['append'](_0x4b9407['$toggleTreeBtn']),_0x4b9407[_0x138ed1(0x1a3)]['on'](_0x138ed1(0x1a6),function(){return _0x2daa47(this,void 0x0,void 0x0,function*(){const _0x388b9e=_0x4073;var _0xb6f5d9;let _0x42673f=![],_0x5e280b;!_0x4b9407['$dropdown']['is'](':visible')&&(_0x4b9407[_0x388b9e(0x1a1)]['hide'](),_0x5e280b=yield _0x4b9407[_0x388b9e(0x20f)](),(_0x5e280b!==_0x4b9407[_0x388b9e(0x173)]||((_0xb6f5d9=_0x4b9407[_0x388b9e(0x173)])===null||_0xb6f5d9===void 0x0?void 0x0:_0xb6f5d9['nodeId'])!==_0x5e280b[_0x388b9e(0x17f)])&&(yield _0x4b9407[_0x388b9e(0x1cc)]()),_0x42673f=!![]),_0x4b9407['$dropdown'][_0x388b9e(0x19d)](),_0x42673f&&(yield _0x49fbad(_0x4b9407,_0x5e280b));});}),_0x4b9407[_0x138ed1(0x191)]=$(_0x138ed1(0x15c)),_0x4b9407['$inputGroup'][_0x138ed1(0x1c9)](_0x4b9407[_0x138ed1(0x191)]),_0x4b9407[_0x138ed1(0x191)]['on'](_0x138ed1(0x1a6),()=>{this['verify']();});!_0x4b9407[_0x138ed1(0x1bc)][_0x138ed1(0x168)](_0x138ed1(0x1f7))&&_0x4b9407[_0x138ed1(0x1bc)]['attr']('placeholder',_0x138ed1(0x159));_0x4b9407[_0x138ed1(0x1a1)]=$(_0x138ed1(0x1ce)),_0x4b9407['$info'][_0x138ed1(0x1fb)](),_0x4b9407['$dropdown']=$(_0x138ed1(0x16c))[_0x138ed1(0x1b9)](_0x138ed1(0x210))[_0x138ed1(0x1fb)](),_0x4b9407[_0x138ed1(0x1ec)]['append'](_0x4b9407[_0x138ed1(0x1a1)]),_0x4b9407[_0x138ed1(0x1ec)][_0x138ed1(0x1c9)](_0x4b9407[_0x138ed1(0x193)]),_0x4b9407[_0x138ed1(0x1d3)]=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x138ed1(0x1bf)](_0x4b9407[_0x138ed1(0x193)]),this[_0x138ed1(0x1cc)]();const _0xfe8a9a=(_0x3281f4,_0x5f9651)=>{const _0x53aeff=_0x138ed1,_0x58937b=0x14,_0x5170f8=0x14,_0x156c1a=_0x3281f4[_0x53aeff(0x152)](),_0x330bb6=_0x5f9651;if(_0x330bb6['pageX']>=_0x156c1a['left']&&_0x330bb6['pageX']<=_0x156c1a[_0x53aeff(0x1d2)]+_0x58937b&&_0x330bb6[_0x53aeff(0x1db)]>=_0x156c1a['top']&&_0x330bb6[_0x53aeff(0x1db)]<=_0x156c1a['top']+_0x5170f8)return!![];return![];},_0x5c4305=_0x3d93be=>_0x2daa47(this,void 0x0,void 0x0,function*(){const _0xb02b78=_0x138ed1;if(_0x3d93be[_0xb02b78(0x202)](_0xb02b78(0x169)))_0x14f58a(_0x4b9407,_0x3d93be);else{if(_0x3d93be[_0xb02b78(0x202)](_0xb02b78(0x1be)))_0x3d93be[_0xb02b78(0x1ea)]('ul')['toggle'](),_0x3d93be[_0xb02b78(0x17b)]('expandable\x20expanded');else{if(_0x3d93be[_0xb02b78(0x1ea)]('ul')[_0xb02b78(0x1ea)]()[_0xb02b78(0x1a8)]>0x0)_0x3d93be['children']('ul')['toggle'](),_0x3d93be['toggleClass'](_0xb02b78(0x16b));else;}}});_0x4b9407['$tree']['on']('dblclick','li',function(_0x1f3bad){const _0x34f758=_0x138ed1;var _0x4287be,_0x3a83d7;_0x1f3bad['stopPropagation']();let _0x5461ac=$(this);if(_0xfe8a9a(_0x5461ac,_0x1f3bad))_0x5c4305(_0x5461ac);else{const _0x49146c=_0x5461ac[_0x34f758(0x1b4)]('value'),_0x1c57a4=_0x5461ac[_0x34f758(0x1b4)](_0x34f758(0x212));if(_0x4b9407[_0x34f758(0x17a)][_0x34f758(0x1bd)]&&!_0x4b9407[_0x34f758(0x17a)]['isSelectable'](_0x1c57a4))return;_0x4b9407[_0x34f758(0x1bc)][_0x34f758(0x1b4)](_0x34f758(0x212),_0x1c57a4);const _0x16a579=((_0x4287be=_0x1c57a4['displayName'])===null||_0x4287be===void 0x0?void 0x0:_0x4287be['text'])||((_0x3a83d7=_0x1c57a4['browseName'])===null||_0x3a83d7===void 0x0?void 0x0:_0x3a83d7[_0x34f758(0x1e0)])||_0x1c57a4[_0x34f758(0x17f)]['toString'](),_0x52b819='['+_0x16a579+']('+_0x49146c+')';_0x4b9407['$input'][_0x34f758(0x1e1)](_0x52b819),_0x4b9407[_0x34f758(0x1bc)][_0x34f758(0x177)](_0x34f758(0x1f5)),_0x4b9407[_0x34f758(0x193)]['hide']();}}),_0x4b9407[_0x138ed1(0x1d3)]['on'](_0x138ed1(0x1a6),'li',function(_0x1b4853){const _0x16f99d=_0x138ed1;_0x1b4853[_0x16f99d(0x178)]();let _0x5e4ead=$(this);_0xfe8a9a(_0x5e4ead,_0x1b4853)&&_0x5c4305(_0x5e4ead),_0x3a813e(_0x4b9407,_0x5e4ead);}),$(document)['on'](_0x138ed1(0x1a6),function(_0x28bf3a){const _0x57fa98=_0x138ed1;!$(_0x28bf3a[_0x57fa98(0x183)])[_0x57fa98(0x18d)](_0x4b9407[_0x57fa98(0x1ec)])[_0x57fa98(0x1a8)]&&_0x4b9407[_0x57fa98(0x193)]['hide']();});}});};function _0x9062fd(_0x2c3aef,_0x4df22d){const _0x125ad0=_0x5281a0,_0x1f3301=$('#node-input-endpoint'),_0x3df283=$(_0x125ad0(0x1da)),_0x2dc7fd=()=>{const _0x1a741d=_0x125ad0,_0x2db7fb=_0x2c3aef[_0x1a741d(0x207)][_0x1a741d(0x14e)](_0x1f3301[_0x1a741d(0x1e1)]());_0x3df283[_0x1a741d(0x19e)]();if(!_0x2db7fb||!_0x2db7fb['subscriptions'])return;if(_0x2db7fb[_0x1a741d(0x15b)])for(const _0x25475e of _0x2db7fb[_0x1a741d(0x15b)]){const _0x42978a=_0x25475e['name']||_0x25475e['id'];$(_0x1a741d(0x20e),{'value':_0x25475e['id'],'label':_0x42978a,'selected':_0x25475e['id']===_0x4df22d[_0x1a741d(0x158)]})[_0x1a741d(0x1b0)](_0x42978a)[_0x1a741d(0x1bf)](_0x3df283);}};_0x2dc7fd(),_0x3df283['on'](_0x125ad0(0x15d),()=>{_0x2dc7fd();}),_0x1f3301['on'](_0x125ad0(0x1f5),()=>{_0x2dc7fd();});}const _0x8b9263=()=>{const _0xaabb6e=_0x5281a0,_0x3a9c8f=$(_0xaabb6e(0x170)),_0x5ac22c=_0x3a9c8f[_0xaabb6e(0x1e1)](),_0x14d7af=RED['nodes']['node'](_0x5ac22c);if(!_0x14d7af)return undefined;const {endpoint:_0x564c9a,securityMode:_0x4377dc,securityPolicy:_0x26d3c7,userIdentityType:_0x3f047e,credentials:_0x44972f}=_0x14d7af,_0x5c789e={'endpoint':_0x564c9a,'securityMode':_0x4377dc,'securityPolicy':_0x26d3c7,'userIdentityType':_0x3f047e,'credentials':_0x44972f};return _0x5c789e;},_0x38cb32=()=>{return{'endpointNode':_0x4173b6};},_0x4173b6=()=>{const _0x2de5df=_0x5281a0,_0x262fb6=$(_0x2de5df(0x170)),_0x177bc9=_0x262fb6[_0x2de5df(0x1e1)](),_0x20d330=_0x8b9263();if(!_0x20d330)return undefined;return{'id':_0x177bc9};};RED['nodes'][_0x5281a0(0x1c6)](_0x5281a0(0x16a),{'category':_0x5281a0(0x186),'color':_0x5281a0(0x1d6),'align':'right','icon':_0x5281a0(0x20c),'paletteLabel':_0x5281a0(0x1dd),'defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x5281a0(0x201)},'subscription':{'value':'','required':!![],'validate':_0x4f2d21=>{if(_0x4f2d21==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':'/Server/ServerStatus/CurrentTime','required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){return this['name']||'OPCUA\x20Client\x20Monitor\x20';},'labelStyle'(){return this['name']?'node_label_italic':'';},'oneditprepare'(){const _0x418316=_0x5281a0,_0x558827=this;_0x1f22b5();const _0x1995c8=_0x558827[_0x418316(0x1e9)];_0x558827['inputs']=_0x1995c8?0x0:0x1,_0x9062fd(RED,this),$('node-input-startImmediately')['on'](_0x418316(0x1f5),()=>{const _0x20b767=_0x418316,_0x293f9c=$('#node-input-startImmediately')[_0x20b767(0x1ab)](_0x20b767(0x20b));_0x293f9c?$(_0x20b767(0x196))[_0x20b767(0x1e1)](0x0):$('#node-input-inputs')[_0x20b767(0x1e1)](0x1);});const _0x3305d5=$(_0x418316(0x172));_0x3305d5[_0x418316(0x154)](Object[_0x418316(0x181)](Object[_0x418316(0x181)]({},_0x38cb32()),{'filter'(_0x433116){const _0x287c23=_0x418316;return _0x433116[_0x287c23(0x1e6)]==='Variable'||_0x433116[_0x287c23(0x1e6)]===_0x287c23(0x188);},'isSelectable'(_0x4c7c9b){const _0x320c3b=_0x418316;return _0x4c7c9b[_0x320c3b(0x1e6)]==='Variable';}}));},'oneditsave'(){const _0x14ba86=_0x5281a0,_0xc878df=$(_0x14ba86(0x1ad))[_0x14ba86(0x1ab)](_0x14ba86(0x20b));_0xc878df?($('#node-input-startImmediately')[_0x14ba86(0x1e1)](_0xc878df?0x0:0x1),this[_0x14ba86(0x206)]=_0xc878df?0x0:0x1):($(_0x14ba86(0x1ad))['val'](0x1),this[_0x14ba86(0x206)]=0x1);}});}()));function _0x4d2a(){const _0x51fa6a=['already\x20fetched','#C0DEED','sterfive-combo-box','POST','isTypeRef','#node-input-subscription','pageY','SandyBrown','monitor\x20variable','references','element','name','val',':first','application/json','HasComponent','VariableType','nodeClass','stringify','HasTypeDefinition','startImmediately','children','DataType','$combo','641347AOtbGS','516XIBEJy','apply','top','Variable','$inputGroup','status','HasChild','change','Forward','placeholder','HasProperty','__parentNode','scrollTop','hide','typeDefinition','baseUrl','remove','elements','removeClass','OpcUa-Endpoint2','hasClass','NodeClass','Invalid','toString','inputs','nodes','li[key=\x22','ns=0;i=46','596996adRImc','checked','../../icons/opcuanodeLogo.png','38343jqiKVE','<option/>','resolveParentNode','sterfive-dropdown','ns=0;i=34','reference','position','HasSubtype','47929mbcYPv','node','ObjectType','><i\x20class=\x22fa\x20','ReferenceType','offset','ns=0;i=47','nodeBrowser','failure','SeaGreen','13698685jeVbRF','subscription','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','displayName','subscriptions','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','focus\x20click','sterfive-info','.tree-text:first','4247820ONfVrV','statusCode','DisplayName','!!failure!!','/browse','browsePath','parentNode','CadetBlue','attr','expandable','OpcUa-Client2-Monitor','expandable\x20expanded','<div/>','sterfive.nodeBrowser','fa-object-group',';\x22></i>\x20','#node-input-endpoint','DodgerBlue','#node-input-nodeId','currentParent','</li>','<div\x20class=\x22spinner\x22></div>','function','trigger','stopPropagation','loading','options','toggleClass','</span><ul></ul></li>','\x22}><span\x20class=\x22tree-text\x22\x20title=','ns=0;i=45','nodeId','6634000PbybXT','assign','endpointNode','target','Inverse','next','opcua','already\x20loading','Object','Organizes','value','selected','statusText','closest','widget','fa-cog','Objects','$verifyBtn','suppressed','$dropdown','log','Method','#node-input-inputs','browseName','fetched','.spinner','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','/opcua-endpoint2','err','toggle','empty','call','SteelBlue','$info','error','$toggleTreeBtn','IsForward','i=61','click','8UATsBt','length','15mROaze','DarkOrange','prop','throw','#node-input-startImmediately','animate','SuppressedError','text','replaceWith','38oULCcu','opc.tcp://opcuademo.sterfive.com:26543','data','then','/walk-backward','Unspecified','json','addClass','rgba(61,\x2060,\x204,\x200.525)','BrowseName','$input','isSelectable','expanded','appendTo','View','show','<li\x20key=\x22','Both','fetching\x20failed\x20with\x20error','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','registerType','fa-list-alt','fa-folder','append','fa-question','find','reset','ns=0;i=61','<div\x20class=\x22info-text\x22></div>','height','<li>error\x20','referenceTypeId','left','$tree','endpoint'];_0x4d2a=function(){return _0x51fa6a;};return _0x4d2a();}
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyZGFhNDciLCJfMHgyODNlNmIiLCJfMHg0OWU4MTkiLCJfMHgyOGYwZDUiLCJfMHhjOGU5NGQiLCJfMHgzNzBiMmEiLCJfMHg0YTQxNjciLCJfMHhmYTJhOTciLCJQcm9taXNlIiwiXzB4OGJjOTMxIiwiXzB4MjAxZjg1IiwiXzB4NDdmYzkzIiwiXzB4NDM5NmQ3IiwiXzB4ZTdkODFhIiwiXzB4NDljNDVmIiwiXzB4ZTNhNjEiLCJfMHg1ZWIzY2EiLCJfMHgyZDlhYjciLCJfMHgzZGQwNTIiLCJTdXBwcmVzc2VkRXJyb3IiLCJfMHg0ZDhiMjQiLCJfMHgzOTMwYzciLCJfMHgzYTE4ZWEiLCJfMHg1MGIyNDUiLCJFcnJvciIsIl8weDViOGVkZSIsIl8weDE0NGYyOSIsIl8weDYyNzM1MiIsIl8weDRkMGMyMSIsIl8weDI5NzQyMiIsIl8weDI0N2RmMyIsIl8weDViYzVhMyIsIl8weGQyYWQzMCIsIl8weDEwNDJlOCIsIl8weDE4NGEyMiIsIl8weDMxNmU0ZSIsIl8weDE2YzRjZCIsIl8weDFiNjJjMiIsIl8weDhiYTQ4ZiIsIl8weDRjNzc4ZiIsIl8weDUwOGE4MiIsIl8weDIxYjhhZiIsIl8weDFiMmMyNyIsIl8weDE2ZGZjMiIsIl8weDVhNmFlOCIsIl8weDI4MzJiMSIsIl8weDE0NWExYyIsIl8weDY4YzU5YiIsImVuZHBvaW50Tm9kZSIsIl8weDI3OGVkNSIsImVuZHBvaW50IiwiXzB4NTdlNzNlIiwiYmFzZVVybCIsIl8weDUwN2NjOSIsIl8weDJkNDk5NiIsIl8weDU4OTE4ZSIsIl8weDJhYjdlNSIsIl8weDMzNjQ4OCIsIl8weDE0MDZhMyIsIk9iamVjdCIsIl8weDVjZDU3ZCIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJfMHgzY2Q4MTIiLCJfMHg3YTQ0YmEiLCJfMHg0ODE5YmMiLCJfMHgzZmFlNTciLCJfMHgxODE0YTkiLCJfMHgzZGNhNDciLCJfMHg0ODk2NDUiLCJfMHg0MDc3MTEiLCJfMHgzZmYyMGMiLCJfMHg0ZmEwM2IiLCJub2RlSWQiLCJfMHgzZDY0NmIiLCJyb290Tm9kZUlkIiwiXzB4M2RhZDE0IiwiaXNUeXBlIiwiXzB4M2MyMGEwIiwiXzB4MmEzNmQ3IiwiXzB4YzJlY2Q1IiwiXzB4MTNhNTFkIiwiXzB4NTJlZjMyIiwiXzB4ZjBkZGJhIiwiXzB4YTNlMzJkIiwiXzB4MTUyOGIwIiwiXzB4MzNhMTJhIiwiXzB4M2Y5YmFlIiwiXzB4NTNiOWM3IiwiXzB4NGUwMDVjIiwiXzB4OWZhZjJkIiwiXzB4YzQ3NGQyIiwiXzB4MWJiN2UzIiwiXzB4MzVmN2I0IiwiXzB4MzE3YzU4IiwiXzB4MjI0YWVhIiwiXzB4MThiY2U4IiwiXzB4OWMzYjI3IiwiXzB4NWI1NzBlIiwic2V0VGltZW91dCIsIl8weDM5MzgzZiIsIl8weDVlOTlmMSIsIl8weDI0ZTI1OCIsIl8weDViNjNkNyIsIl8weDQxYTBkZiIsIl8weDE5Zjg1ZiIsIl8weDM2OGJkNiIsIl8weGEzMTBmYyIsIl8weDVhNDdhNCIsIl8weDMzNjdmMSIsIl8weDM1YjRkNiIsIl8weDM1MTIzZiIsIl8weDQ3Mzg5OCIsIl8weDUyZDM4MCIsIl8weDQ4YWM5MiIsIl8weDFlYjFkYyIsIl8weDIwNGE1OSIsIl8weDQ1ZjJmMSIsIl8weDNmY2I3NiIsIl8weGRmYWZjMCIsIiQiLCJfMHgzNmVkYjIiLCJfMHg0MDY0YTciLCJpY29uIiwiXzB4NTQyMDM1IiwiY29sb3IiLCJfMHgxYzc3YjUiLCJfMHgyZDhlZWMiLCJfMHgxY2Q2NzciLCJfMHgxZTYyZmMiLCJfMHg1NDA5NmYiLCJfMHgyYjUyYzkiLCJfMHgzYTgxM2UiLCJfMHgyMDA3MzAiLCJfMHg2ZjNlMGUiLCJfMHgzMGZiNGEiLCJfMHgzZTAwMGEiLCJfMHgyOThiZmEiLCJfMHgzZmZjMGYiLCJfMHgzYjk4MTYiLCJfMHgxMTI0YWIiLCJfMHgzZmU5ZjAiLCJfMHgxNGY1OGEiLCJfMHgxMTkyNGYiLCJfMHgzYjZmYjgiLCJfMHg0YzA2ZTYiLCJfMHgzNzQ3YjUiLCJfMHgxNDAyZTAiLCJfMHgzMmVlNjkiLCJ1bmRlZmluZWQiLCJfMHgxZGY0MzgiLCJfMHg0OWZiYWQiLCJfMHgyNGZiM2IiLCJfMHgzZTk4MDciLCJfMHg0NTY2YWQiLCJfMHg1YmYwMGEiLCJfMHg1NTQ1YzQiLCJfMHgyN2Q4NjciLCJfMHgzYzMyZjQiLCJfMHgzNGY2YzYiLCJfMHgzMzdkYWQiLCJfMHgyZTRkMWIiLCJfMHgyMGZkMTgiLCJfMHgxNTZlNzEiLCJyZWZlcmVuY2VzIiwiXzB4YmJjMTBiIiwiXzB4NGIyYTU4IiwiXzB4NGJkMGEyIiwiXzB4NTBlZmM5IiwiXzB4MmQzYTA5IiwiXzB4NjBiNDg4IiwiXzB4MmZiNTU0IiwiXzB4NDRkNjRjIiwiXzB4MzIxM2RhIiwiXzB4M2JiZDZlIiwiXzB4MmE2YWIyIiwiXzB4MWYyMmI1IiwiXzB4MTczNjdkIiwiXzB4MjgyZjgzIiwiXzB4M2EwNzRkIiwiXzB4MmFkOTJlIiwiXzB4MmU0NGVlIiwiXzB4MmM5NWY2IiwiXzB4NTE3YmY0IiwiXzB4MWZmMTdiIiwiXzB4M2I3YTczIiwiXzB4NGI5NDA3IiwiXzB4YjZmNWQ5IiwiXzB4NDI2NzNmIiwiXzB4NWUyODBiIiwiXzB4ZmU4YTlhIiwiXzB4MzI4MWY0IiwiXzB4NWY5NjUxIiwiXzB4NTg5MzdiIiwiXzB4NTE3MGY4IiwiXzB4MTU2YzFhIiwiXzB4MzMwYmI2IiwiXzB4NWM0MzA1IiwiXzB4M2Q5M2JlIiwiXzB4MWYzYmFkIiwiXzB4NDI4N2JlIiwiXzB4M2E4M2Q3IiwiXzB4NTQ2MWFjIiwiXzB4NDkxNDZjIiwiXzB4MWM1N2E0IiwiXzB4MTZhNTc5IiwiXzB4NTJiODE5IiwiXzB4MWI0ODUzIiwiXzB4NWU0ZWFkIiwiZG9jdW1lbnQiLCJfMHgyOGJmM2EiLCJfMHg5MDYyZmQiLCJfMHgyYzNhZWYiLCJfMHg0ZGYyMmQiLCJfMHgxZjMzMDEiLCJfMHgzZGYyODMiLCJfMHgyZGM3ZmQiLCJfMHgyZGI3ZmIiLCJfMHgyNTQ3NWUiLCJfMHg0Mjk3OGEiLCJfMHg4YjkyNjMiLCJfMHgzYTljOGYiLCJfMHg1YWMyMmMiLCJfMHgxNGQ3YWYiLCJSRUQiLCJfMHg1NjRjOWEiLCJzZWN1cml0eU1vZGUiLCJfMHg0Mzc3ZGMiLCJzZWN1cml0eVBvbGljeSIsIl8weDI2ZDNjNyIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgzZjA0N2UiLCJjcmVkZW50aWFscyIsIl8weDQ0OTcyZiIsIl8weDVjNzg5ZSIsIl8weDM4Y2IzMiIsIl8weDQxNzNiNiIsIl8weDI2MmZiNiIsIl8weDE3N2JjOSIsIl8weDIwZDMzMCIsIl8weDRmMmQyMSIsIl8weDU1ODgyNyIsIl8weDE5OTVjOCIsIl8weDI5M2Y5YyIsIl8weDMzMDVkNSIsIl8weDQzMzExNiIsIl8weDRjN2M5YiIsIl8weGM4NzhkZiJdLCJtYXBwaW5ncyI6Im8wQkFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FBVixDQUFtQkMsU0FBbkIsQyx5QkFDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsUUFBVCxDQUFrQkMsU0FBbEIsQyx5QkFBMkIsRyxDQUFNSCxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFtQlksU0FBbkIsQ0FBTCxDLEVBQW1DLE1BQU9DLFNBQVAsQyxDQUFZUCxTQUFBLENBQU9PLFNBQVAsQyxHQUNoRixTQUFTSixTQUFULENBQWNLLFNBQWQsQyx5QkFBd0JBLFNBQUEsQyxNQUFBLEVBQWNULFNBQUEsQ0FBUVMsU0FBQSxDLGdCQUFBLENBQVIsQ0FBZCxDQUFzQ2IsU0FBQSxDQUFNYSxTQUFBLEMsZ0JBQUEsQ0FBTixFLGdCQUFBLEVBQXlCUCxTQUF6QixDQUFvQ0ksUUFBcEMsQyxFQUM5REYsU0FBQSxDQUFNLENBQUFULFNBQUEsQ0FBWUEsU0FBQSxDLGdCQUFBLEVBQWdCSCxTQUFoQixDQUF5QkMsU0FBQSxFQUFjLEVBQXZDLENBQVosQ0FBRCxDLGdCQUFBLEdBQUwsQyxFQUpHLEMsRUFRWCxPQUFPaUIsZUFBUCxHLGdCQUFBLENBQXdDQSxlQUF4QyxDQUEwRCxTQUFVQyxTQUFWLENBQWlCQyxTQUFqQixDQUE2QkMsU0FBN0IsQywyQkFDdEQsSUFBSUMsU0FBQSxDQUFJLElBQUlDLEtBQUosQ0FBVUYsU0FBVixDQUFSLEMsT0FDT0MsU0FBQSxDLGdCQUFBLEUsZ0JBQUEsQ0FBNEJBLFNBQUEsQyxnQkFBQSxFQUFVSCxTQUF0QyxDQUE2Q0csU0FBQSxDLGdCQUFBLEVBQWVGLFNBQTVELENBQXdFRSxTLEVBRm5GLENBS0EsTUFBTUUsU0FBQSxDLFdBQU4sQ0FDTUMsU0FBQSxDLGdCQUROLENBRU1DLFNBQUEsQyxnQkFGTixDQUdNQyxTQUFBLEMsZ0JBSE4sQ0FJTUMsU0FBQSxDLGdCQUpOLENBS01DLFNBQUEsQyxnQkFMTixDQU1NQyxTQUFBLEMsV0FOTixDQVFBLElBQUlDLFNBQUosQ0FDQSxDQUFDLFNBQVVDLFNBQVYsQywyQkFDR0EsU0FBQSxDQUFnQkEsU0FBQSxDLGdCQUFBLEUsR0FBaEIsRSxpQkFDQUEsU0FBQSxDQUFnQkEsU0FBQSxDLGdCQUFBLEUsR0FBaEIsRSxVQUNBQSxTQUFBLENBQWdCQSxTQUFBLEMsTUFBQSxFLEdBQWhCLEUsaUJBQ0FBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxnQkFBQSxFLEdBQWhCLEUsa0JBSkosQ0FLR0QsU0FBQSxFQUFvQixDQUFBQSxTQUFBLENBQWtCLEVBQWxCLENBTHZCLEdBTUEsSUFBSUUsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLEdBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsU0FDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsV0FDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsU0FDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsYUFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxJQUFWLEUsaUJBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGVBQUEsRSxJQUFWLEUsaUJBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLFVBQUEsRSxJQUFWLEUsV0FDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxJQUFWLEUsa0JBVEosQ0FVR0QsU0FBQSxFQUFjLENBQUFBLFNBQUEsQ0FBWSxFQUFaLENBVmpCLEdBV0EsSUFBSUUsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZ0JBQUEsRSxHQUFkLEUsV0FDQUEsU0FBQSxDQUFjQSxTQUFBLEMsUUFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsWUFBQSxFLEdBQWQsRSxpQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsY0FBQSxFLElBQWQsRSxlQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxlQUFBLEUsSUFBZCxFLGlCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxVQUFBLEUsSUFBZCxFLGlCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxnQkFBQSxFLElBQWQsRSxRQVJKLENBU0dELFNBQUEsRUFBa0IsQ0FBQUEsU0FBQSxDQUFnQixFQUFoQixDQVRyQixHQVVBLElBQUlFLFNBQUosQ0FDQSxDQUFDLFNBQVVDLFNBQVYs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QUFoQixDQUNBNEgsU0FBQSxDLGdCQUFBLEVBQW9CMUwsTUFBQSxDLGdCQUFBLEVBQWNBLE1BQUEsQyxnQkFBQSxFQUFjLEVBQWQsQ0FBa0JpTCxTQUFBLEVBQWxCLENBQWQsQ0FBaUUsQyxRQUFFLENBQU9VLFNBQVAsQyxrQ0FDeEVBLFNBQUEsQyxnQkFBQSxJLFVBQUEsRUFBcUNBLFNBQUEsQyxnQkFBQSxJLGtCQURpQyxDLGNBR2pGLENBQWFDLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLGdCQUFBLEksWUFKc0UsQ0FBakUsQ0FBcEIsQyxFQTFEd0MsQyxZQWlFNUMsRSwyQkFDVUMsU0FBQSxDQUFtQi9ILENBQUEsQyxnQkFBQSxFLGdCQUFBLEUsZ0JBQUEsQyxDQUNyQitILFMsRUFDQS9ILENBQUEsQyw4QkFBQSxFLGdCQUFBLEVBQXNDK0gsU0FBQSxDLEdBQUEsQyxHQUF0QyxDLENBQ0EsSyxnQkFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvSCxDQUFBLEMsZ0JBQUEsRSxLQUFBLEUsR0FBQSxDLENBQ0EsSyxnQkFBQSxFLE1BekVvQyxDQUFoRCxDLEVBN29CSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKF9hLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgJGlucHV0RWxlbWVudF8xLCAkaW5mb18xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCAkaW5wdXRFbGVtZW50LCAkaW5mbykge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBub2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBub2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGpzb24ubm9kZUFkZHJlc3NTdHJpbmcpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtub2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VDb25uZWN0aW9uKHRoYXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9leHBhbmRMaSh0aGF0LCAkbGkpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbGksIGYsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0Ll9fcGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUuY2FsbCh0aGF0KSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBkZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fX3BhcmVudE5vZGUgPSBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9fcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyByZXNldCBwYXJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdGhhdDtcbiAgICAgICAgICAgICAgICAgICAgYS5fX3BhcmVudE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHlpZWxkIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmN1cnJlbnRQYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmlmeSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgbm9kZSkge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0ICRzdWJzY3JpcHRpb24gPSAkKFwiI25vZGUtaW5wdXQtc3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICBjb25zdCBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gUkVELm5vZGVzLm5vZGUoJGVuZHBvaW50LnZhbCgpKTtcbiAgICAgICAgICAgICRzdWJzY3JpcHRpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIGlmICghZW5kcG9pbnQgfHwgIWVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcy5uYW1lIHx8IHMuaWQ7XG4gICAgICAgICAgICAgICAgICAgICQoXCI8b3B0aW9uLz5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHMuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogcy5pZCA9PT0gbm9kZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygkc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vIGhhY2tcbiAgICAgICAgLy8gJGlucHV0QWN0aW9uLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgLy8gICAgICRlbmRwb2ludC5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgJHN1YnNjcmlwdGlvbi5vbihcImZvY3VzIGNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICB9O1xuICAgICAgICAvLyB4eCBjb25zb2xlLmxvZyhcInh4eFwiLCByZXRWYWx1ZSk7XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGVuZHBvaW50SWQsXG4gICAgICAgICAgICAvLyBlbmRwb2ludDogZW5kcG9pbnROci5lbmRwb2ludCxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5TW9kZTogZW5kcG9pbnROci5zZWN1cml0eU1vZGUsXG4gICAgICAgICAgICAvLyBzZWN1cml0eVBvbGljeTogZW5kcG9pbnROci5zZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB1c2VySWRlbnRpdHlUeXBlOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICAvLyBjcmVkZW50aWFsOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJOYW1lOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlck5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBwYXNzd29yZDogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlID09PSBcIlVzZXJOYW1lXCIgPyBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnBhc3N3b3JkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gdXNlckNlcnRpZmljYXRlOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJDZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIC8vIHVzZXJQcml2YXRla2V5OiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJQcml2YXRla2V5LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1Nb25pdG9yXCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJtb25pdG9yIHZhcmlhYmxlXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogMiB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gbW9uaXRvclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFydEltbWVkaWF0ZWx5OiB7IHZhbHVlOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgLy8gd2UgdXNlIGEgZGlmZmVyZW50IHdpZGdldCBmb3IgZWRpdGluZyB0aGUgbm9kZUlkLCBiZWNhdXNlIHRoZSBiZWhhdmlvclxuICAgICAgICAgICAgLy8gaXMgc3BlY2lmaWMgdG8gbW9uaXRvciwgaG93ZXZlciBwcm9wZXJ0eSB3aWxsIGJlIHN0b3JlZCBpbiBub2RlSWRcbiAgICAgICAgICAgIG5vZGVJZDogeyB2YWx1ZTogXCIvU2VydmVyL1NlcnZlclN0YXR1cy9DdXJyZW50VGltZVwiLCByZXF1aXJlZDogZmFsc2UsIHZhbGlkYXRlOiAoKSA9PiB0cnVlIH0sXG4gICAgICAgICAgICBzYW1wbGluZ0ludGVydmFsOiB7IHZhbHVlOiAxMDAwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgZGlzY2FyZE9sZGVzdDogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHF1ZXVlU2l6ZTogeyB2YWx1ZTogMTAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGlucHV0czosXG4gICAgICAgIG91dHB1dHM6IDEsIC8veHhcbiAgICAgICAgLy8gMiBvdXRwdXQsIHNlY29uZCBmb3IgcmF3IG5vZGUtb3BjdWEgZGlhZ25vc3RpY3Mgb3IgbW9yZSBjb21wbGV0ZSBtZXNzYWdlXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBNb25pdG9yIFwiO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IFwibm9kZV9sYWJlbF9pdGFsaWNcIiA6IFwiXCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCgpO1xuICAgICAgICAgICAgY29uc3QgaXNJbW1lZGlhdGUgPSBub2RlLnN0YXJ0SW1tZWRpYXRlbHk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IGlzSW1tZWRpYXRlID8gMCA6IDE7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCB0aGlzKTtcbiAgICAgICAgICAgICQoXCJub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1pbnB1dHNcIikudmFsKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBBY3Rpb24gTW9uaXRvclxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgZmlsdGVyKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbW1lZGlhdGVseSA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
9
9
  </script>
10
10
  <script type="text/x-red" data-template-name="OpcUa-Client2-Monitor">
11
11
  <style>