@opcua/for-node-red 3.7.1 → 3.8.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.
- package/README.md +2 -1
- package/all.js +1 -1
- package/config-panel/assets/index-DDkINW5U.js +49 -0
- package/config-panel/assets/index-DayGs2U8.css +1 -0
- package/config-panel/index.html +2 -2
- package/examples/explore_coffee_machine.json +1 -1
- package/examples/job_manager.json +1 -1
- package/examples/monitored-items.json +630 -0
- package/package.json +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.css +1 -1
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +55 -9
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.css +1 -1
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +31 -5
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.css +1 -1
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +4 -4
- package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.css +1 -1
- package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.html +10 -4
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.css +1 -1
- package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.html +169 -92
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.css +1 -1
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +199 -38
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.css +1 -1
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +61 -13
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.css +1 -1
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +4 -4
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.css +1 -1
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +4 -4
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +2 -2
- package/config-panel/assets/index-2UIiGW7e.js +0 -40
- package/config-panel/assets/index-D642mSgA.css +0 -1
@@ -1,11 +1,11 @@
|
|
1
1
|
<style>
|
2
|
-
|
2
|
+
.sterfive-combo-box{position:relative;width:100%}.sterfive-online-menu{height:auto;position:fixed;width:auto}.sterfive-input-error{border-color:var(--red-ui-form-input-border-error-color)!important;border-style:solid;border-width:1px}.sterfive-typedInput-options{background:#fff;border-style:solid;border-width:1px;border:1px solid var(--red-ui-primary-border-color);box-sizing:border-box;max-height:350px;overflow-y:auto;position:absolute;white-space:nowrap;z-index:2000}.sterfive-typedInput-options a{align-items:center;border-bottom:1px solid;border-color:var(--red-ui-secondary-border-color);border-style:solid;border-width:1px;color:var(--red-ui-form-text-color);display:flex;font-size:13px;padding:6px 18px 6px 6px;text-decoration:none}.sterfive-typedInput-options a:hover{background:var(--red-ui-workspace-button-background-hover);text-decoration:none}.sterfive-typedInput-options a:focus{outline:none}.sterfive-typedInput-options a:active,.sterfive-typedInput-options a:focus{background:var(--red-ui-workspace-button-background-active);text-decoration:none}.sterfive-typedInput-options a input[type=checkbox]{margin:0 6px 0 0}.sterfive-typedInput-options .sterfive-typedInput-icon{margin-right:6px}.sterfive-typedInput-options .sterfive-typedInput-icon:not(.fa){background-color:var(--red-ui-primary-text-color);height:14px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;width:12px}.sterfive-combo-box .sterfive-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:400px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfive-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li span.selected{border:.5px dotted #33f}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-inline-start:2%!important}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.sterfive-input-group{border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.sterfive-input-group button,.sterfive-input-group input{border:none;outline:none;padding:10px}.sterfive-input-group input{flex:1}.sterfive-input-group button{background-color:var(--red-ui-form-button-background);color:#7b7a7a;cursor:pointer}.sterfive-input-group button:hover{background-color:var(--red-ui-secondary-background-hover)}.sterfive-info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfive-combo-box .sterfive-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
|
3
3
|
/*# sourceMappingURL=OpcUa-Client2-ExtensionObject.css.map */
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
function _0x1acb(_0x3b5f03,_0x4886ad){const _0x86b727=_0x86b7();return _0x1acb=function(_0x1acbab,_0x3246d9){_0x1acbab=_0x1acbab-0x1df;let _0x2cce12=_0x86b727[_0x1acbab];return _0x2cce12;},_0x1acb(_0x3b5f03,_0x4886ad);}(function(_0x3d416f,_0x220314){const _0x14a62a=_0x1acb,_0x2efe22=_0x3d416f();while(!![]){try{const _0xc243d2=-parseInt(_0x14a62a(0x1f7))/0x1+parseInt(_0x14a62a(0x226))/0x2+parseInt(_0x14a62a(0x253))/0x3+-parseInt(_0x14a62a(0x201))/0x4*(-parseInt(_0x14a62a(0x259))/0x5)+parseInt(_0x14a62a(0x281))/0x6+-parseInt(_0x14a62a(0x229))/0x7*(parseInt(_0x14a62a(0x23b))/0x8)+parseInt(_0x14a62a(0x210))/0x9*(-parseInt(_0x14a62a(0x2e6))/0xa);if(_0xc243d2===_0x220314)break;else _0x2efe22['push'](_0x2efe22['shift']());}catch(_0x19d349){_0x2efe22['push'](_0x2efe22['shift']());}}}(_0x86b7,0xdc56b),(function(){'use strict';const _0x15362e=_0x1acb;function _0x3a6786(_0x4c060f,_0x1a57ca,_0x23dd6a,_0x443965){function _0x2a2cf3(_0x43531c){return _0x43531c instanceof _0x23dd6a?_0x43531c:new _0x23dd6a(function(_0x17a9d3){_0x17a9d3(_0x43531c);});}return new(_0x23dd6a||(_0x23dd6a=Promise))(function(_0x1f9adc,_0x3dd084){const _0x27e96d=_0x1acb;function _0x52102a(_0x83712f){const _0x714f59=_0x1acb;try{_0x35f265(_0x443965[_0x714f59(0x224)](_0x83712f));}catch(_0xa3da6e){_0x3dd084(_0xa3da6e);}}function _0x5436a1(_0x2883c2){try{_0x35f265(_0x443965['throw'](_0x2883c2));}catch(_0x1dfd66){_0x3dd084(_0x1dfd66);}}function _0x35f265(_0x13a56c){const _0x109e24=_0x1acb;_0x13a56c[_0x109e24(0x1e5)]?_0x1f9adc(_0x13a56c[_0x109e24(0x225)]):_0x2a2cf3(_0x13a56c[_0x109e24(0x225)])['then'](_0x52102a,_0x5436a1);}_0x35f265((_0x443965=_0x443965['apply'](_0x4c060f,_0x1a57ca||[]))[_0x27e96d(0x224)]());});}typeof SuppressedError===_0x15362e(0x24a)?SuppressedError:function(_0x196bfe,_0x5508fd,_0x4678dd){const _0x3e924c=_0x15362e;var _0xbc68a0=new Error(_0x4678dd);return _0xbc68a0[_0x3e924c(0x2a7)]=_0x3e924c(0x23a),_0xbc68a0[_0x3e924c(0x21c)]=_0x196bfe,_0xbc68a0[_0x3e924c(0x2b2)]=_0x5508fd,_0xbc68a0;};const _0x174184='ns=0;i=35',_0x56690f=_0x15362e(0x27d),_0x577ef0=_0x15362e(0x296),_0x5b66b9=_0x15362e(0x217),_0x5be701=_0x15362e(0x29b),_0xdd0beb=_0x15362e(0x2f7),_0x2d718f=_0x15362e(0x231);var _0x11db7a;(function(_0x222851){const _0x35d7a0=_0x15362e;_0x222851[_0x222851[_0x35d7a0(0x26a)]=0x0]=_0x35d7a0(0x26a),_0x222851[_0x222851[_0x35d7a0(0x218)]=0x1]='Inverse',_0x222851[_0x222851[_0x35d7a0(0x1f5)]=0x2]=_0x35d7a0(0x1f5),_0x222851[_0x222851[_0x35d7a0(0x247)]=0x3]=_0x35d7a0(0x247);}(_0x11db7a||(_0x11db7a={})));var _0x5a9546;(function(_0xf4c2d8){const _0x203946=_0x15362e;_0xf4c2d8[_0xf4c2d8[_0x203946(0x2ed)]=0x0]=_0x203946(0x2ed),_0xf4c2d8[_0xf4c2d8['Object']=0x1]='Object',_0xf4c2d8[_0xf4c2d8[_0x203946(0x206)]=0x2]=_0x203946(0x206),_0xf4c2d8[_0xf4c2d8[_0x203946(0x290)]=0x4]=_0x203946(0x290),_0xf4c2d8[_0xf4c2d8[_0x203946(0x2a1)]=0x8]=_0x203946(0x2a1),_0xf4c2d8[_0xf4c2d8[_0x203946(0x2af)]=0x10]=_0x203946(0x2af),_0xf4c2d8[_0xf4c2d8[_0x203946(0x275)]=0x20]='ReferenceType',_0xf4c2d8[_0xf4c2d8[_0x203946(0x2c4)]=0x40]='DataType',_0xf4c2d8[_0xf4c2d8[_0x203946(0x283)]=0x80]=_0x203946(0x283);}(_0x5a9546||(_0x5a9546={})));var _0xcfdffe;(function(_0x6b6ca8){const _0x3a54c=_0x15362e;_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x278)]=0x1]=_0x3a54c(0x278),_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x206)]=0x2]=_0x3a54c(0x206),_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x290)]=0x4]=_0x3a54c(0x290),_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x2a1)]=0x8]=_0x3a54c(0x2a1),_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x2af)]=0x10]='VariableType',_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x275)]=0x20]=_0x3a54c(0x275),_0x6b6ca8[_0x6b6ca8['DataType']=0x40]=_0x3a54c(0x2c4),_0x6b6ca8[_0x6b6ca8[_0x3a54c(0x283)]=0x80]=_0x3a54c(0x283);}(_0xcfdffe||(_0xcfdffe={})));var _0x5f033e;(function(_0x3808f3){const _0x2be787=_0x15362e;_0x3808f3[_0x3808f3['ReferenceType']=0x1]=_0x2be787(0x275),_0x3808f3[_0x3808f3[_0x2be787(0x2c6)]=0x2]=_0x2be787(0x2c6),_0x3808f3[_0x3808f3[_0x2be787(0x22c)]=0x4]='NodeClass',_0x3808f3[_0x3808f3['BrowseName']=0x8]=_0x2be787(0x1e8),_0x3808f3[_0x3808f3[_0x2be787(0x25e)]=0x10]='DisplayName',_0x3808f3[_0x3808f3['TypeDefinition']=0x20]=_0x2be787(0x2bc);}(_0x5f033e||(_0x5f033e={})));function _0x3e6ee7(_0x25ca7c){const _0x2fc736=_0x15362e;switch(_0x25ca7c){case'Organizes':return _0x174184;case _0x2fc736(0x2a2):return _0x5b66b9;case'HasComponent':return _0x577ef0;case _0x2fc736(0x20a):return _0x5be701;case'HasSubtype':return _0xdd0beb;case'HasTypeDefinition':return _0x2d718f;}}const _0x462f64=_0x1c9554=>{const _0x41bf0c=_0x15362e;switch(_0x1c9554['nodeClass']){case'Object':if(_0x1c9554['referenceTypeId']===_0x174184);if(_0x1c9554[_0x41bf0c(0x272)]===_0x56690f||_0x1c9554[_0x41bf0c(0x2b8)]==='i=61')return{'icon':_0x41bf0c(0x27b),'color':_0x41bf0c(0x204)};return{'icon':'fa-object-group','color':'SeaGreen'};case _0x41bf0c(0x206):if(_0x1c9554['referenceTypeId']===_0x577ef0)return{'icon':'fa-list-alt','color':_0x41bf0c(0x2b9)};else return _0x1c9554[_0x41bf0c(0x2b8)]===_0x5b66b9?{'icon':_0x41bf0c(0x2b6),'color':_0x41bf0c(0x25a)}:{'icon':_0x41bf0c(0x2b6),'color':_0x41bf0c(0x2ae)};case'Method':return{'icon':_0x41bf0c(0x27a),'color':_0x41bf0c(0x228)};case _0x41bf0c(0x2a1):return{'icon':_0x41bf0c(0x294),'color':_0x41bf0c(0x2ff)};case _0x41bf0c(0x2af):return{'icon':'fa-sliders','color':_0x41bf0c(0x2ff)};case _0x41bf0c(0x2c4):return{'icon':'fa-text-width','color':_0x41bf0c(0x2ae)};}return{'icon':_0x41bf0c(0x2b7),'color':_0x41bf0c(0x1f1)};},_0x1e9abf=(_0x5f458f,_0x2d5784,_0x74c904)=>_0x3a6786(void 0x0,[_0x5f458f,_0x2d5784,_0x74c904],void 0x0,function*({endpointNode:_0x31d04b,endpoint:_0x2082fc,baseUrl:_0x562c3e},_0xe9c122,_0x1517a7){const _0x364e4e=_0x15362e,_0x32fbf9=_0x562c3e+'/opcua-for-node-red',_0x31a0e4=_0x32fbf9+_0x364e4e(0x22d),_0x25ddb3=Object[_0x364e4e(0x25c)](Object['assign']({},_0x1517a7),{'nodeId':_0xe9c122,'resultMask':0x3f}),_0x1420b0=yield fetch(_0x31a0e4,{'method':_0x364e4e(0x207),'body':JSON[_0x364e4e(0x269)]({'endpointNode':_0x31d04b,'endpoint':_0x2082fc,'browseDescription':_0x25ddb3}),'headers':{'Content-Type':'application/json'}});if(_0x1420b0[_0x364e4e(0x200)]!==0xc8)return console['log'](_0x364e4e(0x297),_0x1420b0['status'],_0x1420b0['statusText']),{'references':[]};const _0x45f87c=yield _0x1420b0[_0x364e4e(0x299)](),_0x19fa98=_0x45f87c['browseResult']['references']||[];return{'references':_0x19fa98};}),_0x5886f9={'referenceTypeId':_0x3e6ee7(_0x15362e(0x20a)),'includeSubtypes':!![],'browseDirection':_0x11db7a['Forward'],'nodeClassMask':_0x5a9546[_0x15362e(0x206)]|_0x5a9546[_0x15362e(0x278)]|_0x5a9546[_0x15362e(0x290)],'resultMask':0x3f},_0x2b0302={'referenceTypeId':_0x3e6ee7(_0x15362e(0x205)),'includeSubtypes':!![],'browseDirection':_0x11db7a['Forward'],'nodeClassMask':_0x5a9546[_0x15362e(0x206)]|_0x5a9546[_0x15362e(0x278)]|_0x5a9546[_0x15362e(0x290)],'resultMask':0x3f},_0x31f8a1=(_0x4935ff,_0x38fc84)=>_0x3a6786(void 0x0,[_0x4935ff,_0x38fc84],void 0x0,function*({endpointNode:_0x2db79e,endpoint:_0x4426d,baseUrl:_0x1b6598},{nodeId:_0x4d7642,rootNodeId:_0x596190,isType:_0x2203cc}){const _0x4298b0=_0x15362e,_0x47a543=_0x1b6598+'/opcua-for-node-red',_0x39589c=_0x47a543+_0x4298b0(0x28b),_0x5b7b39=yield fetch(_0x39589c,{'method':_0x4298b0(0x207),'body':JSON['stringify']({'endpointNode':_0x2db79e,'endpoint':_0x4426d,'nodeId':_0x4d7642,'rootNodeId':_0x596190,'isType':_0x2203cc}),'headers':{'Content-Type':'application/json'}});if(_0x5b7b39[_0x4298b0(0x200)]!==0xc8)return null;const _0x32b95c=yield _0x5b7b39['json']();return _0x32b95c[_0x4298b0(0x27e)];}),_0x1c8bde=(_0xcc51,_0x17c89c)=>{const _0x291a2a=_0x15362e;if(_0xcc51[_0x291a2a(0x2c2)]!==_0x291a2a(0x1f9))return _0xcc51['requestedNodeId'];switch(_0x17c89c){case _0x291a2a(0x27e):return _0xcc51[_0x291a2a(0x1fb)];case _0x291a2a(0x2ac):return _0xcc51[_0x291a2a(0x264)]||_0xcc51['bp_indexed'];case _0x291a2a(0x28a):return _0xcc51['nodeId_aliased']||_0xcc51[_0x291a2a(0x285)];case _0x291a2a(0x20b):return _0xcc51[_0x291a2a(0x285)];default:case _0x291a2a(0x24d):return _0xcc51[_0x291a2a(0x24d)];}},_0x23fce5=_0x2f28ab=>{const _0x17e3b4=_0x15362e;if(_0x2f28ab[_0x17e3b4(0x2c2)]!=='Good')return _0x17e3b4(0x2a0)+_0x2f28ab['statusCode'];else{let _0x194e5e=[];return _0x194e5e['push'](_0x17e3b4(0x24b)+_0x2f28ab[_0x17e3b4(0x24d)]),_0x194e5e['push'](_0x17e3b4(0x2d1)+_0x2f28ab[_0x17e3b4(0x1fb)]),_0x194e5e[_0x17e3b4(0x251)]('node\x20class:\x20'+_0x5a9546[_0x2f28ab[_0x17e3b4(0x2c8)]]),_0x2f28ab[_0x17e3b4(0x285)]&&_0x194e5e[_0x17e3b4(0x251)](_0x17e3b4(0x21d)+_0x2f28ab[_0x17e3b4(0x285)]),_0x2f28ab[_0x17e3b4(0x289)]&&_0x194e5e[_0x17e3b4(0x251)](_0x17e3b4(0x212)+_0x2f28ab[_0x17e3b4(0x289)]),_0x2f28ab[_0x17e3b4(0x1fb)]&&_0x194e5e['push']('aliased\x20browsePath:\x20'+_0x2f28ab[_0x17e3b4(0x264)]),_0x194e5e[_0x17e3b4(0x2c3)]('\x0a');}};function _0x40aadf(_0x2ff015){const _0x4cc5cd=_0x15362e;if(_0x2ff015[_0x4cc5cd(0x214)](/^nsu=/))return _0x4cc5cd(0x20b);if(_0x2ff015[_0x4cc5cd(0x214)](/^(ns=.*;)?(i|b|s|g)=/))return _0x4cc5cd(0x24d);if(_0x2ff015['match'](/^nsa=/))return _0x4cc5cd(0x28a);if(_0x2ff015[_0x4cc5cd(0x214)](/^(\/|\.)[0-9]+:/))return _0x4cc5cd(0x27e);if(_0x2ff015[_0x4cc5cd(0x214)](/^(\/|\.).*:/))return _0x4cc5cd(0x27e);}function _0x56abd0(_0x36754e){const _0x5f2f99=_0x15362e,_0x3a5938=_0x40aadf(_0x36754e);switch(_0x3a5938){case'nodeId':return'n';case'aliasedNodeId':return'na';case _0x5f2f99(0x20b):return _0x5f2f99(0x1e3);case'browsePath':return'b';case _0x5f2f99(0x2ac):return'ab';default:return't';}}function _0x1df80e(_0x576689){const _0x5a3486=_0x15362e;let _0x67efb5;switch(_0x576689){case'n':_0x67efb5=_0x5a3486(0x24d);break;case'na':_0x67efb5=_0x5a3486(0x28a);break;case _0x5a3486(0x1e3):_0x67efb5=_0x5a3486(0x20b);break;case'b':_0x67efb5=_0x5a3486(0x27e);break;case'ab':_0x67efb5=_0x5a3486(0x2ac);break;}return _0x67efb5;}function _0x5f3281(_0x501814){const _0x49cb30=_0x15362e;switch(_0x501814){case'nodeId':return'n';case _0x49cb30(0x28a):return'na';case _0x49cb30(0x20b):return _0x49cb30(0x1e3);case'browsePath':return'b';case _0x49cb30(0x2ac):return'ab';default:return't';}}const _0x4a8f59=(_0x367df7,_0x57f12a)=>_0x3a6786(void 0x0,[_0x367df7,_0x57f12a],void 0x0,function*({endpointNode:_0x81c55f,endpoint:_0x4eb6f8,baseUrl:_0x51fe15},_0x9521b4){const _0x5b3981=_0x15362e,_0x5e85ec=_0x51fe15+_0x5b3981(0x298),_0x4abfff=_0x5e85ec+_0x5b3981(0x2a5),_0x2c1d9d=_0x81c55f['id'],_0x5cd7b7=RED[_0x5b3981(0x2f1)][_0x5b3981(0x1f3)](_0x2c1d9d);console[_0x5b3981(0x2c9)](_0x5cd7b7[_0x5b3981(0x261)]),_0x5cd7b7[_0x5b3981(0x261)];const _0x517893=_0x81c55f[_0x5b3981(0x261)],_0xffcc2=yield fetch(_0x4abfff,{'method':_0x5b3981(0x207),'body':JSON[_0x5b3981(0x269)]({'endpointNode':_0x81c55f,'endpoint':_0x4eb6f8,'nodeId':_0x9521b4,'namespaceAliases':_0x517893}),'headers':{'Content-Type':_0x5b3981(0x1ea)}}),_0xd239e2=yield _0xffcc2[_0x5b3981(0x299)]();return{'json':_0xd239e2,'data':_0xffcc2};}),_0xee056a=(_0x5a27da,_0x2fa471,_0x27e76d,_0x619d9f)=>_0x3a6786(void 0x0,[_0x5a27da,_0x2fa471,_0x27e76d,_0x619d9f],void 0x0,function*({endpointNode:_0x32cf2e,endpoint:_0x2577ef,baseUrl:_0x28d9aa},_0x580372,_0x416d80,_0x3253b5){const _0x4d0810=_0x15362e,_0x54e02f=_0x416d80['val'](),{json:_0x2ade25,data:_0x2231e1}=yield _0x4a8f59({'endpointNode':_0x32cf2e,'endpoint':_0x2577ef,'baseUrl':_0x28d9aa},_0x54e02f),_0x538bf7=(_0x55bc71,_0x36d59e)=>{const _0x5331d9=_0x1acb;_0x3253b5[_0x5331d9(0x1e9)](_0x55bc71)[_0x5331d9(0x2e1)](_0x5331d9(0x232))['addClass'](_0x36d59e),_0x3253b5['show'](),setTimeout(()=>{const _0x1ca728=_0x5331d9;_0x3253b5['removeClass'](_0x36d59e),_0x3253b5[_0x1ca728(0x258)]();},0xbb8);};if(_0x2231e1[_0x4d0810(0x200)]!==0xc8)return _0x538bf7('!!failure!!'+_0x54e02f,_0x4d0810(0x277)),![];else{if(_0x2ade25[_0x4d0810(0x2c2)][_0x4d0810(0x214)](/Good/)){const _0x33753f=_0x23fce5(_0x2ade25);_0x416d80[_0x4d0810(0x2b3)](_0x4d0810(0x240),_0x33753f);const _0x487a39=_0x1c8bde(_0x2ade25,_0x580372);return _0x416d80['val'](_0x487a39),_0x416d80[_0x4d0810(0x276)](_0x4d0810(0x1e1)),_0x538bf7(_0x4d0810(0x1f9),'ok'),!![];}else return _0x416d80[_0x4d0810(0x26d)](''+_0x54e02f),_0x538bf7(_0x2ade25[_0x4d0810(0x2c2)]+'\x20'+_0x2231e1['statusText'],_0x4d0810(0x277)),![];}});function _0x50947a(_0x4eef7a,_0x3182c6){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x2c10d2=_0x1acb,_0x25fcc9=_0x4eef7a['data'](_0x2c10d2(0x225)),_0x428e47=yield _0x1e9abf(_0x3182c6,_0x25fcc9,_0x5886f9),_0x41b836=yield _0x1e9abf(_0x3182c6,_0x25fcc9,_0x2b0302);return{'references':[..._0x428e47[_0x2c10d2(0x2d5)],..._0x41b836[_0x2c10d2(0x2d5)]]};});}const _0x5a82f5={'referenceTypeId':_0x3e6ee7(_0x15362e(0x2d4)),'includeSubtypes':!![],'browseDirection':_0x11db7a[_0x15362e(0x26a)],'nodeClassMask':_0x5a9546[_0x15362e(0x275)]|_0x5a9546[_0x15362e(0x2a1)]|_0x5a9546[_0x15362e(0x2c4)]|_0x5a9546['VariableType'],'resultMask':0x3f};function _0x21e164(_0x2b3485,_0x29d0be){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x32f62e=_0x1acb,_0x28d5e5=_0x2b3485[_0x32f62e(0x29e)](_0x32f62e(0x225)),_0x100532=yield _0x1e9abf(_0x29d0be,_0x28d5e5,_0x5a82f5);return _0x100532;});}const _0x488a88=_0x5960c4=>{const _0x245675=_0x15362e;var _0x8914e0,_0x4c4c1a,_0x1de53f,_0xe7beca;if(!_0x5960c4||!_0x5960c4['nodeId']){const _0xe594ef=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0xe594ef;}const _0x4978dd=_0x5960c4[_0x245675(0x24d)][_0x245675(0x233)](),_0x4eaa3d=((_0x8914e0=_0x5960c4['displayName'])===null||_0x8914e0===void 0x0?void 0x0:_0x8914e0[_0x245675(0x1e9)])||((_0x4c4c1a=_0x5960c4[_0x245675(0x263)])===null||_0x4c4c1a===void 0x0?void 0x0:_0x4c4c1a[_0x245675(0x2a7)])||_0x5960c4[_0x245675(0x24d)][_0x245675(0x233)](),{icon:_0x4a8f56,color:_0x412e73}=_0x462f64(_0x5960c4),_0x40bd40='('+_0x5960c4[_0x245675(0x24d)][_0x245675(0x233)]()+')\x20'+(((_0x1de53f=_0x5960c4[_0x245675(0x263)])===null||_0x1de53f===void 0x0?void 0x0:_0x1de53f[_0x245675(0x2a7)])||((_0xe7beca=_0x5960c4['displayName'])===null||_0xe7beca===void 0x0?void 0x0:_0xe7beca[_0x245675(0x1e9)])||''),_0x5a97a7=$(_0x245675(0x2ad)+_0x5960c4[_0x245675(0x24d)][_0x245675(0x233)]()+_0x245675(0x27c)+_0x40bd40+'><i\x20class=\x22fa\x20'+_0x4a8f56+'\x22\x20style=\x22color:'+_0x412e73+';\x22></i>\x20'+_0x4eaa3d+_0x245675(0x20c));return _0x5a97a7[_0x245675(0x2e1)](_0x245675(0x274)),_0x5a97a7[_0x245675(0x29e)](_0x245675(0x225),_0x4978dd),_0x5a97a7[_0x245675(0x29e)](_0x245675(0x1e6),_0x5960c4),_0x5a97a7;},_0x438fc8=(_0xc46a2c,_0x206a56)=>{const _0x4f2d7a=_0x15362e;return _0x206a56[_0x4f2d7a(0x2bb)](_0x4f2d7a(0x2d8)+_0xc46a2c+'\x22]');},_0x1dde8f=(_0x401636,_0x36fabf)=>{const _0xcd3140=_0x15362e;_0x401636[_0xcd3140(0x1df)][_0xcd3140(0x2bb)](_0xcd3140(0x223))['removeClass'](_0xcd3140(0x244)),_0x36fabf[_0xcd3140(0x2bb)]('.tree-text:first')[_0xcd3140(0x2e1)](_0xcd3140(0x244));},_0x10774=(_0x4c9a08,_0x10e000,_0x378946)=>_0x3a6786(void 0x0,void 0x0,void 0x0,function*(){const _0x114c32=_0x15362e;let _0x1b24a7=_0x378946[_0x114c32(0x2da)](_0x114c32(0x2e2));_0x10e000[_0x114c32(0x237)]['elements']||[];const _0x161af7=_0x10e000['nodeIds']||[];if(_0x161af7['length']===0x0)return;for(const _0x37e6f8 of _0x161af7){_0x1b24a7[_0x114c32(0x2e7)](_0x114c32(0x274))&&(yield _0x25a558(_0x4c9a08,_0x1b24a7));const _0x6731cd=_0x438fc8(_0x37e6f8,_0x1b24a7);if(_0x6731cd[_0x114c32(0x230)]===0x0)return;_0x1b24a7=_0x6731cd;}_0x1dde8f(_0x4c9a08,_0x1b24a7),_0x2b9bef(_0x4c9a08['$dropdown'],_0x1b24a7);});function _0x2b9bef(_0x3a8228,_0x3fde08){const _0xba7cc0=_0x15362e,_0x28eb3f=_0x3fde08[_0xba7cc0(0x2f5)]()['top'],_0xfa189f=_0x3a8228[_0xba7cc0(0x1ec)]();if(_0xfa189f==undefined)return;const _0x2d3077=_0xfa189f+_0x28eb3f-_0x3a8228[_0xba7cc0(0x1eb)]()/0x2+_0x3fde08[_0xba7cc0(0x1eb)]()/0x2;_0x3a8228[_0xba7cc0(0x20e)]({'scrollTop':_0x2d3077},0x1f4);}const _0x2e251d=(_0x492c78,_0x5552f8)=>_0x3a6786(void 0x0,void 0x0,void 0x0,function*(){const _0x32ca16=_0x15362e,_0xc8900d=_0x492c78[_0x32ca16(0x286)][_0x32ca16(0x26d)](),_0x368d5e={'nodeId':_0xc8900d,'rootNodeId':_0x5552f8['nodeId'],'isType':_0x492c78[_0x32ca16(0x2e9)][_0x32ca16(0x2ec)]||![]},_0x24ca15=_0x1edd26(_0x492c78),_0x301722=yield _0x31f8a1(_0x24ca15,_0x368d5e);if(!_0x301722)return;yield _0x10774(_0x492c78,_0x301722,_0x492c78['$tree']);});function _0x57cb8c(_0x16f1d7,_0x2f20ef,_0x464791,_0x15ede1){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0xb5fa5=_0x1acb;if(_0x2f20ef[_0xb5fa5(0x2e7)](_0xb5fa5(0x270))){console[_0xb5fa5(0x2c9)]('already\x20fetched');return;}if(_0x2f20ef[_0xb5fa5(0x2e7)](_0xb5fa5(0x252))){console[_0xb5fa5(0x2c9)](_0xb5fa5(0x2cc));return;}_0x2f20ef[_0xb5fa5(0x2e1)](_0xb5fa5(0x252)),_0x2f20ef[_0xb5fa5(0x2d9)](_0xb5fa5(0x284));try{_0x2f20ef['children']('ul')['empty']();const {references:_0x3eaf7c}=yield _0x464791(_0x2f20ef,_0x15ede1);_0x3eaf7c[_0xb5fa5(0x262)]((_0x4d6164,_0x27e990)=>{const _0x2d4875=_0xb5fa5;var _0x365c08,_0x317869;return(((_0x365c08=_0x4d6164['browseName'])===null||_0x365c08===void 0x0?void 0x0:_0x365c08[_0x2d4875(0x2a7)])||'')[_0x2d4875(0x24c)](((_0x317869=_0x27e990[_0x2d4875(0x263)])===null||_0x317869===void 0x0?void 0x0:_0x317869[_0x2d4875(0x2a7)])||'');});for(const _0x4c2eb7 of _0x3eaf7c){if(_0x16f1d7[_0xb5fa5(0x2e9)][_0xb5fa5(0x2ef)]&&!_0x16f1d7[_0xb5fa5(0x2e9)][_0xb5fa5(0x2ef)](_0x4c2eb7))continue;const _0x11e82b=_0x488a88(_0x4c2eb7);_0x2f20ef['children']('ul')['append'](_0x11e82b);}_0x2f20ef[_0xb5fa5(0x2e1)](_0xb5fa5(0x270));}catch(_0x1b1c3e){_0x2f20ef[_0xb5fa5(0x2da)]('ul')[_0xb5fa5(0x2d9)]('<li>error\x20'+_0x1b1c3e[_0xb5fa5(0x221)]+_0xb5fa5(0x2b1)),console['log'](_0xb5fa5(0x202),_0x1b1c3e);}_0x2f20ef[_0xb5fa5(0x2bb)](_0xb5fa5(0x23c))[_0xb5fa5(0x2df)](),_0x2f20ef[_0xb5fa5(0x1e2)](_0xb5fa5(0x252));});}function _0x1edd26(_0x49674a){const _0x39feb8=_0x15362e,_0x5b16f5={'baseUrl':_0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x246)],'endpointNode':typeof _0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x267)]===_0x39feb8(0x24a)?_0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x267)]():_0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x267)],'endpoint':typeof _0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x234)]==='function'?_0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x234)]():_0x49674a[_0x39feb8(0x2e9)][_0x39feb8(0x234)]};return _0x5b16f5;}function _0x25a558(_0x42f713,_0x4c6438){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x213b84=_0x1acb;if(_0x4c6438[_0x213b84(0x2e7)]('fetched')){_0x4c6438[_0x213b84(0x1e2)](_0x213b84(0x274))[_0x213b84(0x2e1)](_0x213b84(0x215)),_0x4c6438['children']('ul')['toggle']();return;}const _0x5a5cfd=_0x1edd26(_0x42f713),_0x48df8c=!_0x42f713[_0x213b84(0x2e9)]['isTypeRef']?_0x50947a:_0x21e164;try{yield _0x57cb8c(_0x42f713,_0x4c6438,_0x48df8c,_0x5a5cfd),_0x4c6438[_0x213b84(0x1e2)]('expandable')[_0x213b84(0x2e1)]('expanded');}catch(_0x35a561){_0x4c6438[_0x213b84(0x1e2)](_0x213b84(0x274))[_0x213b84(0x2e1)](_0x213b84(0x215)),console[_0x213b84(0x2c9)](_0x213b84(0x21c),_0x35a561);}});}const _0x33970e={'browseName':{'namespaceIndex':0x0,'name':_0x15362e(0x208)},'nodeClass':'Object','nodeId':_0x15362e(0x266),'displayName':{'text':_0x15362e(0x208)},'typeDefinition':_0x56690f},_0x56d612=()=>{const _0x291498=_0x15362e;$[_0x291498(0x236)](_0x291498(0x27f),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x33970e,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x5c2b6d=_0x1acb,_0x49d7c9=this;if(_0x49d7c9[_0x5c2b6d(0x26f)]==undefined){const _0x10ed3d=typeof _0x49d7c9[_0x5c2b6d(0x2e9)][_0x5c2b6d(0x260)]===_0x5c2b6d(0x24a)?_0x49d7c9[_0x5c2b6d(0x2e9)][_0x5c2b6d(0x260)][_0x5c2b6d(0x25f)](_0x49d7c9):_0x49d7c9[_0x5c2b6d(0x2e9)][_0x5c2b6d(0x260)];if(_0x10ed3d instanceof Promise){const _0x382b75=yield _0x10ed3d;_0x49d7c9['__parentNode']=_0x382b75;}else _0x49d7c9[_0x5c2b6d(0x26f)]=_0x10ed3d;}return _0x49d7c9[_0x5c2b6d(0x26f)]||_0x33970e;});},'reset'(){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x2164ce=_0x1acb,_0x451ce3=this,_0x5f7dae=_0x451ce3;_0x5f7dae[_0x2164ce(0x26f)]=undefined,_0x451ce3[_0x2164ce(0x1df)][_0x2164ce(0x216)]();const _0x2b5a1a=yield this[_0x2164ce(0x301)](),_0x4cf592=_0x488a88(_0x2b5a1a);_0x451ce3[_0x2164ce(0x1df)][_0x2164ce(0x2d9)](_0x4cf592),_0x451ce3[_0x2164ce(0x243)]=_0x2b5a1a;});},'verify'(_0x29b05a){const _0x1192c3=_0x291498,_0x2f4d63=this,_0x111112=_0x1edd26(_0x2f4d63);_0xee056a(_0x111112,_0x29b05a,_0x2f4d63[_0x1192c3(0x286)],_0x2f4d63['$info'])[_0x1192c3(0x1fe)](_0x16bcba=>{const _0x19db81=_0x1192c3;!_0x16bcba?_0x2f4d63[_0x19db81(0x2cd)][_0x19db81(0x2e1)](_0x19db81(0x2ea)):_0x2f4d63[_0x19db81(0x2cd)]['removeClass']('input-error');});},'_hideMenu'(_0x5295a8){const _0x530df3=_0x291498,_0x57b026=this;$(document)[_0x530df3(0x292)](_0x530df3(0x2e8)),_0x5295a8[_0x530df3(0x258)](),_0x5295a8[_0x530df3(0x2f4)]({'height':_0x530df3(0x2bf)});if(_0x5295a8[_0x530df3(0x300)][_0x530df3(0x28e)]){var _0x58734c=[];_0x5295a8[_0x530df3(0x2bb)](_0x530df3(0x1ed))['each'](function(){const _0x26b827=_0x530df3;$(this)[_0x26b827(0x1e4)](_0x26b827(0x2d0))&&_0x58734c[_0x26b827(0x251)]($(this)['data'](_0x26b827(0x225)));}),_0x5295a8[_0x530df3(0x2dc)](_0x58734c);}_0x57b026[_0x530df3(0x2d3)]['is'](_0x530df3(0x248))?_0x57b026[_0x530df3(0x286)][_0x530df3(0x276)](_0x530df3(0x1f6)):_0x57b026[_0x530df3(0x293)][_0x530df3(0x276)](_0x530df3(0x1f6));},'_createMenu'(_0x5e51ff,_0xc7442c,_0x1c4908){const _0x29d20d=_0x291498;var _0xa2344e=this;const _0x43d34a=$(_0x29d20d(0x222))[_0x29d20d(0x2e1)](_0x29d20d(0x29d));return _0x43d34a['opts']=_0xc7442c,_0x43d34a[_0x29d20d(0x2dc)]=_0x1c4908,_0x5e51ff[_0x29d20d(0x280)](_0x47a25c=>{const _0x572582=_0x29d20d;typeof _0x47a25c==='string'&&(_0x47a25c={'value':_0x47a25c,'label':_0x47a25c});var _0x3ce39e=$(_0x572582(0x288))[_0x572582(0x2b3)]('value',_0x47a25c[_0x572582(0x225)])[_0x572582(0x2f0)](_0x43d34a);_0x47a25c[_0x572582(0x279)]&&_0x3ce39e[_0x572582(0x1e9)](_0x47a25c[_0x572582(0x279)]);_0x47a25c[_0x572582(0x240)]&&_0x3ce39e['prop']('title',_0x47a25c[_0x572582(0x240)]);if(_0x47a25c[_0x572582(0x2ce)]){if(_0x47a25c['icon'][_0x572582(0x265)]('<')===0x0)$(_0x47a25c['icon'])[_0x572582(0x25b)](_0x3ce39e);else _0x47a25c[_0x572582(0x2ce)][_0x572582(0x265)]('/')!==-0x1?$(_0x572582(0x26e),{'class':_0x572582(0x2fb),'style':_0x572582(0x21f)+_0x47a25c['icon']+_0x572582(0x28c)+_0x47a25c['icon']+');'})[_0x572582(0x25b)](_0x3ce39e):$(_0x572582(0x26e),{'class':_0x572582(0x2c0)+_0x47a25c[_0x572582(0x2ce)]})[_0x572582(0x25b)](_0x3ce39e);}else _0x3ce39e[_0x572582(0x2f4)]({'paddingLeft':_0x572582(0x20f)});!_0x47a25c[_0x572582(0x2ce)]&&!_0x47a25c[_0x572582(0x279)]&&_0x3ce39e['text'](_0x47a25c['value']);var _0x1568af;_0xc7442c[_0x572582(0x28e)]&&(_0x1568af=$('<input\x20type=\x22checkbox\x22>')['css'](_0x572582(0x1f4),'none')[_0x572582(0x29e)](_0x572582(0x225),_0x47a25c[_0x572582(0x225)])[_0x572582(0x25b)](_0x3ce39e)['on'](_0x572582(0x245),function(_0xf1ab36){const _0x2329ee=_0x572582;_0xf1ab36[_0x2329ee(0x21e)]();})),_0x3ce39e['on'](_0x572582(0x2be),function(_0x1ea95e){const _0x4182a9=_0x572582;_0x1ea95e[_0x4182a9(0x21e)](),_0x1ea95e[_0x4182a9(0x271)](),!_0xc7442c[_0x4182a9(0x28e)]?(_0x1c4908(_0x47a25c[_0x4182a9(0x225)]),_0xa2344e[_0x4182a9(0x2d6)](_0x43d34a)):_0x1568af[_0x4182a9(0x1e4)](_0x4182a9(0x2d0),!_0x1568af[_0x4182a9(0x1e4)](_0x4182a9(0x2d0)));});}),_0x43d34a[_0x29d20d(0x2f4)]({'display':_0x29d20d(0x211)}),_0x43d34a['on'](_0x29d20d(0x2a3),function(_0x3f8039){const _0x3b3222=_0x29d20d;if(_0x3f8039[_0x3b3222(0x2c1)]===0x28)_0x3f8039[_0x3b3222(0x21e)](),$(this)[_0x3b3222(0x2da)](_0x3b3222(0x2aa))[_0x3b3222(0x224)]()[_0x3b3222(0x276)](_0x3b3222(0x1f6));else{if(_0x3f8039[_0x3b3222(0x2c1)]===0x26)_0x3f8039[_0x3b3222(0x21e)](),$(this)['children'](':focus')[_0x3b3222(0x2cb)]()[_0x3b3222(0x276)](_0x3b3222(0x1f6));else _0x3f8039[_0x3b3222(0x2c1)]===0x1b&&(_0x3f8039[_0x3b3222(0x21e)](),_0xa2344e[_0x3b3222(0x2d6)](_0x43d34a));}_0x3f8039[_0x3b3222(0x271)]();}),_0x43d34a;},'disarmClick':![],'_showMenu'(_0x58679f,_0x19ad4e){const _0x44fee2=_0x291498;if(this['disarmClick']){this[_0x44fee2(0x2f6)]=![];return;}var _0x13cc70=this,_0x44f6d7=_0x19ad4e[_0x44fee2(0x20d)](),_0x5580ff=_0x19ad4e['height'](),_0x201454=_0x58679f[_0x44fee2(0x1eb)](),_0x4dd7da=_0x5580ff+_0x44f6d7[_0x44fee2(0x256)];_0x4dd7da+_0x201454-$(document)['scrollTop']()>$(window)[_0x44fee2(0x1eb)]()&&(_0x4dd7da-=_0x4dd7da+_0x201454-$(window)[_0x44fee2(0x1eb)]()+0x5),_0x4dd7da<0x0&&(_0x58679f[_0x44fee2(0x1eb)](_0x201454+_0x4dd7da),_0x4dd7da=0x0),_0x58679f[_0x44fee2(0x2f4)]({'top':_0x4dd7da+'px','left':_0x44f6d7['left']+'px'}),_0x58679f[_0x44fee2(0x23f)](0x64),this[_0x44fee2(0x2f8)](function(){const _0x29dffb=_0x44fee2;_0x13cc70[_0x29dffb(0x2e5)][_0x29dffb(0x2e1)](_0x29dffb(0x2fd)),$(document)['on'](_0x29dffb(0x2e8),function(_0x14ba11){const _0xa67529=_0x29dffb;!$(_0x14ba11['target'])['closest'](_0x58679f)[_0xa67529(0x230)]&&_0x13cc70[_0xa67529(0x2d6)](_0x58679f),$(_0x14ba11[_0xa67529(0x203)])[_0xa67529(0x1ee)](_0x19ad4e)['length']&&(_0x13cc70[_0xa67529(0x2f6)]=!![],_0x14ba11[_0xa67529(0x21e)]());});});},'_showTypeMenu'(){const _0x3eeb0a=_0x291498,_0x4b05e7=this;this[_0x3eeb0a(0x242)](_0x4b05e7['$menu'],_0x4b05e7[_0x3eeb0a(0x2cd)]),_0x4b05e7[_0x3eeb0a(0x2a6)][_0x3eeb0a(0x258)]();const _0x50c8a2=_0x4b05e7[_0x3eeb0a(0x2c7)];var _0x3eaaf3=_0x4b05e7[_0x3eeb0a(0x1f2)][_0x3eeb0a(0x2bb)](_0x3eeb0a(0x22f)+_0x50c8a2+'\x27');setTimeout(function(){const _0x105b94=_0x3eeb0a;_0x3eaaf3[_0x105b94(0x276)](_0x105b94(0x1f6));},0x78);},'_initMenu'(){const _0x25b598=_0x291498,_0x6ec706=this;_0x6ec706[_0x25b598(0x293)]['attr'](_0x25b598(0x1f8),-0x1),_0x6ec706[_0x25b598(0x293)]['on'](_0x25b598(0x21b),function(_0x58cb89){const _0x47dad8=_0x25b598;_0x58cb89[_0x47dad8(0x21e)]();});_0x6ec706[_0x25b598(0x1f2)]&&_0x6ec706[_0x25b598(0x1f2)]['remove']();const _0x43515b=[{'label':'text','value':'t','title':_0x25b598(0x2ba),'icon':_0x25b598(0x2ee)},{'label':_0x25b598(0x1f0),'value':'msg','title':_0x25b598(0x2b5),'icon':'<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>'},{'label':_0x25b598(0x2a9),'value':'n','icon':_0x25b598(0x2b0)},{'label':'Aliased\x20NodeId','value':'na','icon':_0x25b598(0x2eb)},{'label':_0x25b598(0x2d7),'value':_0x25b598(0x1e3),'icon':'<i\x20class=\x22fa\x20fa-id-card\x22/> \x20'},{'label':'BrowsePath','value':'b','icon':_0x25b598(0x2ca)},{'label':'Aliased\x20Browse\x20Path','value':'ab','icon':'<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> '}],_0x98adbe=_0x56abd0(_0x6ec706[_0x25b598(0x286)][_0x25b598(0x26d)]()),_0x1d05bd=_0x43515b[_0x25b598(0x2bb)](_0x5d453b=>_0x5d453b['value']===_0x98adbe);_0x6ec706[_0x25b598(0x2b4)][_0x25b598(0x216)]()[_0x25b598(0x2d9)](_0x25b598(0x241)+((_0x1d05bd===null||_0x1d05bd===void 0x0?void 0x0:_0x1d05bd[_0x25b598(0x240)])||'')+'> \x20'+((_0x1d05bd===null||_0x1d05bd===void 0x0?void 0x0:_0x1d05bd['icon'])||'')+_0x25b598(0x219)),_0x6ec706['selectedMenuItem']=_0x98adbe;const _0x2af6b6=this;_0x6ec706['$menu']=this[_0x25b598(0x227)](_0x43515b,{},_0x1e7bb8=>{const _0x43caa4=_0x25b598,_0x2cf59e=_0x1df80e(_0x1e7bb8);_0x2cf59e&&_0x2af6b6[_0x43caa4(0x213)](_0x2cf59e);const _0x36f2f9=_0x43515b[_0x43caa4(0x2bb)](_0x3b26dd=>_0x3b26dd['value']===_0x1e7bb8);_0x6ec706[_0x43caa4(0x2c7)]=_0x1e7bb8,_0x6ec706[_0x43caa4(0x2b4)][_0x43caa4(0x216)]()[_0x43caa4(0x2d9)](_0x43caa4(0x241)+((_0x36f2f9===null||_0x36f2f9===void 0x0?void 0x0:_0x36f2f9['title'])||'')+_0x43caa4(0x2f9)+((_0x36f2f9===null||_0x36f2f9===void 0x0?void 0x0:_0x36f2f9[_0x43caa4(0x2ce)])||'')+_0x43caa4(0x219));}),_0x6ec706[_0x25b598(0x1f2)][_0x25b598(0x2f0)](document['body']),_0x6ec706[_0x25b598(0x1f2)][_0x25b598(0x258)](),_0x6ec706[_0x25b598(0x293)][_0x25b598(0x238)]();},'mode'(){const _0x3fe490=_0x291498,_0xdabda4=this;return _0x1df80e(_0xdabda4[_0x3fe490(0x2c7)]);},'setMode'(_0xb235d7){const _0x447371=_0x291498,_0x444269=this,_0x3a7dd7=_0x5f3281(_0xb235d7);_0x444269[_0x447371(0x2c7)]=_0x3a7dd7;},'_create'(){const _0x15b4b4=_0x291498,_0xa9c494=this;_0xa9c494['$input']=this[_0x15b4b4(0x1fd)],_0xa9c494[_0x15b4b4(0x286)][_0x15b4b4(0x2f4)](_0x15b4b4(0x28d),_0x15b4b4(0x211)),_0xa9c494[_0x15b4b4(0x2d3)]=_0xa9c494[_0x15b4b4(0x286)]['wrap'](_0x15b4b4(0x222))[_0x15b4b4(0x2a8)]()['addClass'](_0x15b4b4(0x2db)),_0xa9c494[_0x15b4b4(0x2cd)]=$(_0x15b4b4(0x2ab)),_0xa9c494['$combo'][_0x15b4b4(0x2e1)](_0x15b4b4(0x1fa)),_0xa9c494[_0x15b4b4(0x286)][_0x15b4b4(0x2d2)](_0xa9c494[_0x15b4b4(0x2cd)]),_0xa9c494[_0x15b4b4(0x2e4)]=$(_0x15b4b4(0x2ab))[_0x15b4b4(0x2e1)](_0x15b4b4(0x250)),_0xa9c494[_0x15b4b4(0x2cd)]['append'](_0xa9c494[_0x15b4b4(0x2e4)]),_0xa9c494[_0x15b4b4(0x2e4)][_0x15b4b4(0x2d9)](_0xa9c494['$input']),_0xa9c494[_0x15b4b4(0x273)]=$(_0x15b4b4(0x24e)),_0xa9c494[_0x15b4b4(0x286)][_0x15b4b4(0x2f3)](_0xa9c494[_0x15b4b4(0x273)]),_0xa9c494[_0x15b4b4(0x273)]['on'](_0x15b4b4(0x2be),function(){return _0x3a6786(this,void 0x0,void 0x0,function*(){const _0x38826a=_0x1acb;var _0x55a34f;let _0x2ff922=![],_0x13fb86;!_0xa9c494[_0x38826a(0x2a6)]['is'](':visible')&&(_0xa9c494[_0x38826a(0x1e7)]['hide'](),_0x13fb86=yield _0xa9c494['resolveParentNode'](),(_0x13fb86!==_0xa9c494[_0x38826a(0x243)]||((_0x55a34f=_0xa9c494['currentParent'])===null||_0x55a34f===void 0x0?void 0x0:_0x55a34f[_0x38826a(0x24d)])!==_0x13fb86['nodeId'])&&(yield _0xa9c494['reset']()),_0x2ff922=!![]),_0xa9c494[_0x38826a(0x2a6)][_0x38826a(0x2fa)](),_0x2ff922&&(yield _0x2e251d(_0xa9c494,_0x13fb86));});}),_0xa9c494[_0x15b4b4(0x2f2)]=$(_0x15b4b4(0x254)),_0xa9c494[_0x15b4b4(0x286)]['after'](_0xa9c494[_0x15b4b4(0x2f2)]),_0xa9c494[_0x15b4b4(0x2f2)]['on'](_0x15b4b4(0x2be),()=>{const _0x267440=_0x15b4b4,_0x22b470=_0xa9c494[_0x267440(0x291)]();if(!_0x22b470)return;this[_0x267440(0x213)](_0x22b470);});const _0x39ede6=_0x428d38=>_0x3a6786(this,void 0x0,void 0x0,function*(){const _0x169e90=_0x15b4b4,_0x21722e=this;let _0x4f13c9=_0x21722e[_0x169e90(0x291)]();if(!_0x4f13c9)return;const _0x5d7533=_0x1edd26(_0x21722e),{data:_0x2b3b90,json:_0x59c153}=yield _0x4a8f59(_0x5d7533,_0x428d38);if(_0x2b3b90[_0x169e90(0x200)]!==0xc8)return;if(_0x59c153[_0x169e90(0x2c2)][_0x169e90(0x214)](/Good/)){const _0x3c7149=_0x1c8bde(_0x59c153,_0x4f13c9);_0x21722e[_0x169e90(0x286)][_0x169e90(0x26d)](_0x3c7149),_0x21722e[_0x169e90(0x286)][_0x169e90(0x276)](_0x169e90(0x1e1));}});{_0xa9c494[_0x15b4b4(0x2e5)]=$('<div>'),_0xa9c494[_0x15b4b4(0x286)][_0x15b4b4(0x2e0)](_0xa9c494[_0x15b4b4(0x2e5)]),_0xa9c494[_0x15b4b4(0x293)]=$(_0x15b4b4(0x22e))[_0x15b4b4(0x25b)](_0xa9c494[_0x15b4b4(0x2e5)]),$(_0x15b4b4(0x2de))[_0x15b4b4(0x2fa)](!![])[_0x15b4b4(0x2f0)](_0xa9c494[_0x15b4b4(0x293)]),_0xa9c494[_0x15b4b4(0x293)]['on'](_0x15b4b4(0x2be),function(_0x3d6feb){const _0x182542=_0x15b4b4;_0x3d6feb['preventDefault'](),_0x3d6feb[_0x182542(0x271)](),_0xa9c494[_0x182542(0x22a)]();}),_0xa9c494[_0x15b4b4(0x293)]['on'](_0x15b4b4(0x2a3),function(_0x520f91){const _0x3e6c52=_0x15b4b4;_0x520f91[_0x3e6c52(0x2c1)]===0x28&&_0xa9c494[_0x3e6c52(0x22a)](),_0x520f91[_0x3e6c52(0x271)]();})['on']('focus',function(){const _0x27c7b2=_0x15b4b4;_0xa9c494[_0x27c7b2(0x2e5)][_0x27c7b2(0x2e1)](_0x27c7b2(0x2fd));})['on']('blur',function(){const _0x35b99a=_0x15b4b4;_0xa9c494[_0x35b99a(0x2e5)]['removeClass'](_0x35b99a(0x2fd));}),_0xa9c494[_0x15b4b4(0x2b4)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')[_0x15b4b4(0x2f0)](_0xa9c494[_0x15b4b4(0x293)]);}this[_0x15b4b4(0x1fc)]();!_0xa9c494[_0x15b4b4(0x286)]['attr']('placeholder')&&_0xa9c494[_0x15b4b4(0x286)][_0x15b4b4(0x2b3)](_0x15b4b4(0x209),_0x15b4b4(0x257));_0xa9c494['$info']=$(_0x15b4b4(0x249)),_0xa9c494[_0x15b4b4(0x1e7)][_0x15b4b4(0x258)](),_0xa9c494[_0x15b4b4(0x2cd)][_0x15b4b4(0x2d9)](_0xa9c494[_0x15b4b4(0x1e7)]),_0xa9c494['$dropdown']=$(_0x15b4b4(0x2ab))[_0x15b4b4(0x2e1)]('sterfive-dropdown')[_0x15b4b4(0x258)]()['appendTo'](_0xa9c494['$combo']),_0xa9c494[_0x15b4b4(0x1df)]=$(_0x15b4b4(0x26c))[_0x15b4b4(0x2f0)](_0xa9c494[_0x15b4b4(0x2a6)]),this[_0x15b4b4(0x287)]();const _0x7ed4c0=(_0x5b75d3,_0x472eba)=>{const _0x413cb0=_0x15b4b4,_0x151d36=0x14,_0x20c1f1=0x14,_0x4a90d4=_0x5b75d3['offset'](),_0xb094c3=_0x472eba;if(_0xb094c3['pageX']>=_0x4a90d4['left']&&_0xb094c3[_0x413cb0(0x23e)]<=_0x4a90d4[_0x413cb0(0x282)]+_0x151d36&&_0xb094c3['pageY']>=_0x4a90d4[_0x413cb0(0x256)]&&_0xb094c3[_0x413cb0(0x25d)]<=_0x4a90d4[_0x413cb0(0x256)]+_0x20c1f1)return!![];return![];},_0x4829d0=_0x4a9a5d=>_0x3a6786(this,void 0x0,void 0x0,function*(){const _0x4c0600=_0x15b4b4;if(_0x4a9a5d['hasClass'](_0x4c0600(0x274)))_0x25a558(_0xa9c494,_0x4a9a5d);else{if(_0x4a9a5d[_0x4c0600(0x2e7)](_0x4c0600(0x215)))_0x4a9a5d[_0x4c0600(0x2da)]('ul')['toggle'](),_0x4a9a5d['toggleClass'](_0x4c0600(0x2fe));else{if(_0x4a9a5d['children']('ul')[_0x4c0600(0x2da)]()['length']>0x0)_0x4a9a5d[_0x4c0600(0x2da)]('ul')['toggle'](),_0x4a9a5d[_0x4c0600(0x1e0)](_0x4c0600(0x2fe));else;}}});_0xa9c494['$tree']['on']('dblclick','li',function(_0x5aa5ad){const _0x28d19c=_0x15b4b4;var _0x5caa3d,_0x353559;_0x5aa5ad[_0x28d19c(0x271)]();let _0x48938f=$(this);if(_0x7ed4c0(_0x48938f,_0x5aa5ad))_0x4829d0(_0x48938f);else{const _0x1fcec4=_0x48938f[_0x28d19c(0x29e)](_0x28d19c(0x225)),_0x2f6e16=_0x48938f[_0x28d19c(0x29e)](_0x28d19c(0x1e6));if(_0xa9c494[_0x28d19c(0x2e9)][_0x28d19c(0x1ff)]&&!_0xa9c494[_0x28d19c(0x2e9)]['isSelectable'](_0x2f6e16))return;_0xa9c494[_0x28d19c(0x286)][_0x28d19c(0x29e)](_0x28d19c(0x1e6),_0x2f6e16),((_0x5caa3d=_0x2f6e16['displayName'])===null||_0x5caa3d===void 0x0?void 0x0:_0x5caa3d['text'])||((_0x353559=_0x2f6e16[_0x28d19c(0x263)])===null||_0x353559===void 0x0?void 0x0:_0x353559[_0x28d19c(0x2a7)])||_0x2f6e16['nodeId'][_0x28d19c(0x233)]();let _0x315675=_0xa9c494[_0x28d19c(0x291)]();!_0x315675&&(_0x315675=_0x28d19c(0x24d),_0xa9c494['setMode'](_0x315675)),_0x39ede6(_0x1fcec4)[_0x28d19c(0x1fe)](()=>{const _0x60c2c9=_0x28d19c;_0xa9c494['$dropdown'][_0x60c2c9(0x258)]();})[_0x28d19c(0x28f)](_0x5e51cc=>{const _0x5f3709=_0x28d19c;_0xa9c494[_0x5f3709(0x2a6)]['hide']();});}}),_0xa9c494[_0x15b4b4(0x1df)]['on']('click','li',function(_0x54bf90){const _0x4f4423=_0x15b4b4;_0x54bf90[_0x4f4423(0x271)]();let _0xaa10a=$(this);_0x7ed4c0(_0xaa10a,_0x54bf90)&&_0x4829d0(_0xaa10a),_0x1dde8f(_0xa9c494,_0xaa10a);}),$(document)['on']('click',function(_0x17d1cb){const _0x5ab20c=_0x15b4b4;!$(_0x17d1cb[_0x5ab20c(0x203)])[_0x5ab20c(0x1ee)](_0xa9c494[_0x5ab20c(0x2cd)])['length']&&_0xa9c494['$dropdown'][_0x5ab20c(0x258)]();});}});},_0xa735dc=()=>{const _0x5ece04=_0x15362e,_0x5097f8=$(_0x5ece04(0x29a)),_0x283935=_0x5097f8[_0x5ece04(0x26d)](),_0x3cb113=RED['nodes'][_0x5ece04(0x1f3)](_0x283935);if(!_0x3cb113)return undefined;const {endpoint:_0x5a12b0,securityMode:_0x270412,securityPolicy:_0x12267c,userIdentityType:_0x2ea278,credentials:_0x3bf0bf,namespaceAliases:_0x22b9d3}=_0x3cb113,_0x37e19e={'endpoint':_0x5a12b0,'securityMode':_0x270412,'securityPolicy':_0x12267c,'userIdentityType':_0x2ea278,'credentials':_0x3bf0bf,'namespaceAliases':_0x22b9d3};return _0x37e19e;},_0x10ff77=()=>{const _0x139a7c=_0x15362e,_0x7e5c4b=$(_0x139a7c(0x29a)),_0x37f587=_0x7e5c4b[_0x139a7c(0x26d)](),_0x2c5b93=_0xa735dc();if(!_0x2c5b93)return undefined;const _0x502675=_0x2c5b93['namespaceAliases'];return Object[_0x139a7c(0x25c)]({'namespaceAliases':_0x502675,'id':_0x37f587},_0x2c5b93);},_0x2b856a=()=>{return{'endpointNode':_0x10ff77};},_0x494182=()=>{const _0x4031d3=_0x15362e,_0x58306d=$(_0x4031d3(0x29c));console[_0x4031d3(0x2c9)](_0x4031d3(0x2a4),_0x58306d[_0x4031d3(0x230)]);if(_0x58306d[_0x4031d3(0x230)]){console['log'](_0x4031d3(0x1ef));const _0x24ee44=$(_0x4031d3(0x23d),{'src':_0x4031d3(0x26b),'scrolling':'no','style':_0x4031d3(0x2c5),'allowtransparency':_0x4031d3(0x255),'width':_0x4031d3(0x220),'height':_0x4031d3(0x2dd)});_0x58306d['append'](_0x24ee44),_0x24ee44[_0x4031d3(0x2f4)]({'position':_0x4031d3(0x2bd),'right':_0x4031d3(0x295),'bottom':_0x4031d3(0x235)});}};RED[_0x15362e(0x2f1)]['registerType'](_0x15362e(0x2fc),{'category':'opcua','color':_0x15362e(0x22b),'align':'right','icon':_0x15362e(0x239),'paletteLabel':_0x15362e(0x2cf),'defaults':{'inputs':{'value':0x1},'output':{'value':0x1},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'dataType':{'value':'','required':!![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x3aba11=_0x15362e;return this[_0x3aba11(0x2a7)]||_0x3aba11(0x268);},'labelStyle'(){const _0x190697=_0x15362e;return this[_0x190697(0x2a7)]?'node_label_italic':'';},'oneditprepare'(){const _0x575331=_0x15362e,_0x285dfc=this;_0x56d612(),_0x494182(),_0x285dfc[_0x575331(0x24f)]=0x1;const _0x4c617d=$(_0x575331(0x2e3)),_0x3310e5={'nodeId':'i=22','referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':'Structure'},'displayName':{'text':'Structure'},'nodeClass':'DataType','typeDefinition':_0x575331(0x29f)};_0x4c617d[_0x575331(0x21a)](Object['assign'](Object['assign']({},_0x2b856a()),{'parentNode':()=>_0x3310e5,'isSelectable'(_0xf82643){const _0x52d4be=_0x575331;return _0xf82643['nodeClass']===_0x52d4be(0x2c4);},'isTypeRef':!![]}));},'oneditsave'(){}});}()));function _0x86b7(){const _0x22aec7=['true','top','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','hide','5UThZzE','DodgerBlue','prependTo','assign','pageY','DisplayName','call','parentNode','namespaceAliases','sort','browseName','bp_aliased','indexOf','ns=0;i=85','endpointNode','OPCUA\x20Client\x20Extension\x20Object','stringify','Forward','/opcua-for-node-red/support-frame.html','<ul\x20class=\x22sterfive-tree\x22></ul>','val','<i>','__parentNode','fetched','stopPropagation','typeDefinition','$toggleTreeBtn','expandable','ReferenceType','trigger','failure','Object','label','fa-cog','fa-folder','\x22}><span\x20class=\x22tree-text\x22\x20title=','ns=0;i=61','browsePath','sterfive.nodeBrowser','forEach','1746696FKsXbF','left','View','<div\x20class=\x22spinner\x22></div>','nodeId_nsu','$input','reset','<a\x20href=\x22#\x22></a>','nodeId_aliased','aliasedNodeId','/walk-backward',');\x20-webkit-mask-image:\x20url(','border','multiple','catch','Method','mode','off','$selectTrigger','fa-object-group','20px','ns=0;i=47','fetching\x20failed\x20with\x20error','/opcua-for-node-red','json','#node-input-endpoint','ns=0;i=34','.red-ui-tray-body','sterfive-typedInput-options\x20sterfive-online-menu','data','i=0','statusCode:\x20','ObjectType','HasProperty','keydown','installFeedbackWidget\x20','/checkNodeId','$dropdown','name','parent','NodeId',':focus','<div/>','aliasedBrowsePath','<li\x20key=\x22','CadetBlue','VariableType','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20','</li>','suppressed','attr','$selectLabel','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','fa-list-alt','fa-question','referenceTypeId','SteelBlue','Value\x20is\x20not\x20verified','find','TypeDefinition','absolute','click','auto','red-ui-typedInput-icon\x20','keyCode','statusCode','join','DataType','background-color:transparent;overflow:hidden;border:3px','IsForward','selectedMenuItem','nodeClass','log','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','prev','already\x20loading','$combo','icon','extension\x20object','checked','browse\x20path:\x20','replaceWith','$elementDiv','HasSubtype','references','_hideMenu','NodeId\x20with\x20namespace\x20Urn','li[key=\x22','append','children','main-wrapper','callback','30px','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','remove','before','addClass',':first','#node-input-dataType','$inputGroup','$uiSelect','907750gjKBpq','hasClass','mousedown.red-ui-typedInput-close-property-select','options','input-error','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','isTypeRef','Unspecified','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','filter','appendTo','nodes','$verifyBtn','after','css','position','disarmClick','ns=0;i=45','_delay','> \x20','toggle','red-ui-typedInput-icon','OpcUa-Client2-ExtensionObject','red-ui-typedInput-focus','expandable\x20expanded','DarkOrange','opts','resolveParentNode','$tree','toggleClass','change','removeClass','nsu','prop','done','reference','$info','BrowseName','text','application/json','height','scrollTop','input[type=\x22checkbox\x22]','closest','installing\x20iframe','msg.','grey','$menu','node','pointer-events','Both','focus','692126BGnwOk','tabindex','Good','sterfive-combo-box','bp_indexed','_initMenu','element','then','isSelectable','status','5924924FuopRR','err','target','rgba(61,\x2060,\x204,\x200.525)','Organizes','Variable','POST','Objects','placeholder','HasChild','nsuNodeID','</span><ul></ul></li>','offset','animate','18px','45EJXZtB','none','aliased\x20NodeId:\x20','verify','match','expanded','empty','ns=0;i=46','Inverse','</span>','nodeBrowser','mousedown.red-ui-typedInput-focus-block','error','nsu\x20nodeId:\x20','preventDefault','mask-image:\x20url(','180px','message','<div>','li\x20>\x20.tree-text','next','value','470062bPmANp','_createMenu','SandyBrown','3827383oasrKb','_showTypeMenu','#C0DEED','NodeClass','/browse','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','[value=\x27','length','ns=0;i=40','sterfive-info','toString','endpoint','16px','widget','relativePath','show','../../icons/opcuanodeLogo.png','SuppressedError','8Csjxhr','.spinner','<iframe></iframe>','pageX','slideDown','title','<span\x20title=','_showMenu','currentParent','selected','mousedown','baseUrl','Invalid',':visible','<div\x20class=\x22info-text\x22></div>','function','nodeId:\x20','localeCompare','nodeId','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','inputs','input-group','push','loading','1763697CAtBGo','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>'];_0x86b7=function(){return _0x22aec7;};return _0x86b7();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgzYTY3ODYiLCJfMHg0YzA2MGYiLCJfMHgxYTU3Y2EiLCJfMHgyM2RkNmEiLCJfMHg0NDM5NjUiLCJfMHgyYTJjZjMiLCJfMHg0MzUzMWMiLCJfMHgxN2E5ZDMiLCJQcm9taXNlIiwiXzB4MWY5YWRjIiwiXzB4M2RkMDg0IiwiXzB4NTIxMDJhIiwiXzB4ODM3MTJmIiwiXzB4MzVmMjY1IiwiXzB4YTNkYTZlIiwiXzB4NTQzNmExIiwiXzB4Mjg4M2MyIiwiXzB4MWRmZDY2IiwiXzB4MTNhNTZjIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MTk2YmZlIiwiXzB4NTUwOGZkIiwiXzB4NDY3OGRkIiwiXzB4YmM2OGEwIiwiRXJyb3IiLCJfMHgxNzQxODQiLCJfMHg1NjY5MGYiLCJfMHg1NzdlZjAiLCJfMHg1YjY2YjkiLCJfMHg1YmU3MDEiLCJfMHhkZDBiZWIiLCJfMHgyZDcxOGYiLCJfMHgxMWRiN2EiLCJfMHgyMjI4NTEiLCJfMHg1YTk1NDYiLCJfMHhmNGMyZDgiLCJfMHhjZmRmZmUiLCJfMHg2YjZjYTgiLCJfMHg1ZjAzM2UiLCJfMHgzODA4ZjMiLCJfMHgzZTZlZTciLCJfMHgyNWNhN2MiLCJfMHg0NjJmNjQiLCJfMHgxYzk1NTQiLCJfMHgxZTlhYmYiLCJfMHg1ZjQ1OGYiLCJfMHgyZDU3ODQiLCJfMHg3NGM5MDQiLCJlbmRwb2ludE5vZGUiLCJfMHgzMWQwNGIiLCJlbmRwb2ludCIsIl8weDIwODJmYyIsImJhc2VVcmwiLCJfMHg1NjJjM2UiLCJfMHhlOWMxMjIiLCJfMHgxNTE3YTciLCJfMHgzMmZiZjkiLCJfMHgzMWEwZTQiLCJfMHgyNWRkYjMiLCJPYmplY3QiLCJfMHgxNDIwYjAiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NDVmODdjIiwiXzB4MTlmYTk4IiwiXzB4NTg4NmY5IiwiXzB4MmIwMzAyIiwiXzB4MzFmOGExIiwiXzB4NDkzNWZmIiwiXzB4MzhmYzg0IiwiXzB4MmRiNzllIiwiXzB4NDQyNmQiLCJfMHgxYjY1OTgiLCJub2RlSWQiLCJfMHg0ZDc2NDIiLCJyb290Tm9kZUlkIiwiXzB4NTk2MTkwIiwiaXNUeXBlIiwiXzB4MjIwM2NjIiwiXzB4NDdhNTQzIiwiXzB4Mzk1ODljIiwiXzB4NWI3YjM5IiwiXzB4MzJiOTVjIiwiXzB4MWM4YmRlIiwiXzB4Y2M1MSIsIl8weDE3Yzg5YyIsIl8weDIzZmNlNSIsIl8weDJmMjhhYiIsIl8weDE5NGU1ZSIsIl8weDQwYWFkZiIsIl8weDJmZjAxNSIsIl8weDU2YWJkMCIsIl8weDM2NzU0ZSIsIl8weDNhNTkzOCIsIl8weDFkZjgwZSIsIl8weDU3NjY4OSIsIl8weDY3ZWZiNSIsIl8weDVmMzI4MSIsIl8weDUwMTgxNCIsIl8weDRhOGY1OSIsIl8weDM2N2RmNyIsIl8weDU3ZjEyYSIsIl8weDgxYzU1ZiIsIl8weDRlYjZmOCIsIl8weDUxZmUxNSIsIl8weDk1MjFiNCIsIl8weDVlODVlYyIsIl8weDRhYmZmZiIsIl8weDJjMWQ5ZCIsIl8weDVjZDdiNyIsIlJFRCIsIl8weDUxNzg5MyIsIl8weGZmY2MyIiwiXzB4ZDIzOWUyIiwiXzB4ZWUwNTZhIiwiXzB4NWEyN2RhIiwiXzB4MmZhNDcxIiwiXzB4MjdlNzZkIiwiXzB4NjE5ZDlmIiwiXzB4MzJjZjJlIiwiXzB4MjU3N2VmIiwiXzB4MjhkOWFhIiwiXzB4NTgwMzcyIiwiXzB4NDE2ZDgwIiwiXzB4MzI1M2I1IiwiXzB4NTRlMDJmIiwianNvbiIsIl8weDJhZGUyNSIsImRhdGEiLCJfMHgyMjMxZTEiLCJfMHg1MzhiZjciLCJfMHg1NWJjNzEiLCJfMHgzNmQ1OWUiLCJzZXRUaW1lb3V0IiwiXzB4MzM3NTNmIiwiXzB4NDg3YTM5IiwiXzB4NTA5NDdhIiwiXzB4NGVlZjdhIiwiXzB4MzE4MmM2IiwiXzB4MjVmY2M5IiwiXzB4NDI4ZTQ3IiwiXzB4NDFiODM2IiwiXzB4NWE4MmY1IiwiXzB4MjFlMTY0IiwiXzB4MmIzNDg1IiwiXzB4MjlkMGJlIiwiXzB4MjhkNWU1IiwiXzB4MTAwNTMyIiwiXzB4NDg4YTg4IiwiXzB4NTk2MGM0IiwiXzB4ODkxNGUwIiwiXzB4NGM0YzFhIiwiXzB4MWRlNTNmIiwiXzB4ZTdiZWNhIiwiXzB4ZTU5NGVmIiwiJCIsIl8weDQ5NzhkZCIsIl8weDRlYWEzZCIsImljb24iLCJfMHg0YThmNTYiLCJjb2xvciIsIl8weDQxMmU3MyIsIl8weDQwYmQ0MCIsIl8weDVhOTdhNyIsIl8weDQzOGZjOCIsIl8weGM0NmEyYyIsIl8weDIwNmE1NiIsIl8weDFkZGU4ZiIsIl8weDQwMTYzNiIsIl8weDM2ZmFiZiIsIl8weDEwNzc0IiwiXzB4NGM5YTA4IiwiXzB4MTBlMDAwIiwiXzB4Mzc4OTQ2IiwiXzB4MWIyNGE3IiwiXzB4MTYxYWY3IiwiXzB4MzdlNmY4IiwiXzB4MjVhNTU4IiwiXzB4NjczMWNkIiwiXzB4MmI5YmVmIiwiXzB4M2E4MjI4IiwiXzB4M2ZkZTA4IiwiXzB4MjhlYjNmIiwiXzB4ZmExODlmIiwidW5kZWZpbmVkIiwiXzB4MmQzMDc3IiwiXzB4MmUyNTFkIiwiXzB4NDkyYzc4IiwiXzB4NTU1MmY4IiwiXzB4Yzg5MDBkIiwiXzB4MzY4ZDVlIiwiXzB4MjRjYTE1IiwiXzB4MWVkZDI2IiwiXzB4MzAxNzIyIiwiXzB4NTdjYjhjIiwiXzB4MTZmMWQ3IiwiXzB4MmYyMGVmIiwiXzB4NDY0NzkxIiwiXzB4MTVlZGUxIiwicmVmZXJlbmNlcyIsIl8weDNlYWY3YyIsIl8weDRkNjE2NCIsIl8weDI3ZTk5MCIsIl8weDM2NWMwOCIsIl8weDMxNzg2OSIsIl8weDRjMmViNyIsIl8weDExZTgyYiIsIl8weDFiMWMzZSIsIl8weDQ5Njc0YSIsIl8weDViMTZmNSIsIl8weDQyZjcxMyIsIl8weDRjNjQzOCIsIl8weDVhNWNmZCIsIl8weDQ4ZGY4YyIsIl8weDM1YTU2MSIsIl8weDMzOTcwZSIsIl8weDU2ZDYxMiIsIl8weDQ5ZDdjOSIsIl8weDEwZWQzZCIsIl8weDM4MmI3NSIsIl8weDQ1MWNlMyIsIl8weDVmN2RhZSIsIl8weDJiNWExYSIsIl8weDRjZjU5MiIsIl8weDI5YjA1YSIsIl8weDJmNGQ2MyIsIl8weDExMTExMiIsIl8weDE2YmNiYSIsIl8weDUyOTVhOCIsIl8weDU3YjAyNiIsImRvY3VtZW50IiwiXzB4NTg3MzRjIiwiXzB4NWU1MWZmIiwiXzB4Yzc0NDJjIiwiXzB4MWM0OTA4IiwiXzB4YTIzNDRlIiwiXzB4NDNkMzRhIiwiXzB4NDdhMjVjIiwiXzB4M2NlMzllIiwiXzB4MTU2OGFmIiwiXzB4ZjFhYjM2IiwiXzB4MWVhOTVlIiwiXzB4M2Y4MDM5IiwiXzB4NTg2NzlmIiwiXzB4MTlhZDRlIiwiXzB4MTNjYzcwIiwiXzB4NDRmNmQ3IiwiXzB4NTU4MGZmIiwiXzB4MjAxNDU0IiwiXzB4NGRkN2RhIiwid2luZG93IiwiXzB4MTRiYTExIiwiXzB4NGIwNWU3IiwiXzB4NTBjOGEyIiwiXzB4M2VhYWYzIiwiXzB4NmVjNzA2IiwiXzB4NThjYjg5IiwiXzB4NDM1MTViIiwiXzB4OThhZGJlIiwiXzB4MWQwNWJkIiwiXzB4NWQ0NTNiIiwiXzB4MmFmNmI2IiwiXzB4MWU3YmI4IiwiXzB4MmNmNTllIiwiXzB4MzZmMmY5IiwiXzB4M2IyNmRkIiwiXzB4ZGFiZGE0IiwiXzB4YjIzNWQ3IiwiXzB4NDQ0MjY5IiwiXzB4M2E3ZGQ3IiwiXzB4YTljNDk0IiwiXzB4NTVhMzRmIiwiXzB4MmZmOTIyIiwiXzB4MTNmYjg2IiwiXzB4MjJiNDcwIiwiXzB4MzllZGU2IiwiXzB4NDI4ZDM4IiwiXzB4MjE3MjJlIiwiXzB4NGYxM2M5IiwiXzB4NWQ3NTMzIiwiXzB4MmIzYjkwIiwiXzB4NTljMTUzIiwiXzB4M2M3MTQ5IiwiXzB4M2Q2ZmViIiwiXzB4NTIwZjkxIiwiXzB4N2VkNGMwIiwiXzB4NWI3NWQzIiwiXzB4NDcyZWJhIiwiXzB4MTUxZDM2IiwiXzB4MjBjMWYxIiwiXzB4NGE5MGQ0IiwiXzB4YjA5NGMzIiwiXzB4NDgyOWQwIiwiXzB4NGE5YTVkIiwiXzB4NWFhNWFkIiwiXzB4NWNhYTNkIiwiXzB4MzUzNTU5IiwiXzB4NDg5MzhmIiwiXzB4MWZjZWM0IiwiXzB4MmY2ZTE2IiwiXzB4MzE1Njc1IiwiXzB4NWU1MWNjIiwiXzB4NTRiZjkwIiwiXzB4YWExMGEiLCJfMHgxN2QxY2IiLCJfMHhhNzM1ZGMiLCJfMHg1MDk3ZjgiLCJfMHgyODM5MzUiLCJfMHgzY2IxMTMiLCJfMHg1YTEyYjAiLCJzZWN1cml0eU1vZGUiLCJfMHgyNzA0MTIiLCJzZWN1cml0eVBvbGljeSIsIl8weDEyMjY3YyIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyZWEyNzgiLCJjcmVkZW50aWFscyIsIl8weDNiZjBiZiIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHgyMmI5ZDMiLCJfMHgzN2UxOWUiLCJfMHgxMGZmNzciLCJfMHg3ZTVjNGIiLCJfMHgzN2Y1ODciLCJfMHgyYzViOTMiLCJfMHg1MDI2NzUiLCJfMHgyYjg1NmEiLCJfMHg0OTQxODIiLCJfMHg1ODMwNmQiLCJfMHgyNGVlNDQiLCJfMHgyODVkZmMiLCJfMHg0YzYxN2QiLCJfMHgzMzEwZTUiLCJfMHhmODI2NDMiXSwibWFwcGluZ3MiOiJveUJBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZ0JBQUEsRUFBZVEsU0FBZixDQUFMLEMsRUFBK0IsTUFBT0UsU0FBUCxDLENBQVlKLFNBQUEsQ0FBT0ksU0FBUCxDLEdBQzdFLFNBQVNDLFNBQVQsQ0FBa0JDLFNBQWxCLEMsQ0FBMkIsRyxDQUFNSCxTQUFBLENBQUtULFNBQUEsQyxPQUFBLEVBQW1CWSxTQUFuQixDQUFMLEMsRUFBbUMsTUFBT0MsU0FBUCxDLENBQVlQLFNBQUEsQ0FBT08sU0FBUCxDLEdBQ2hGLFNBQVNKLFNBQVQsQ0FBY0ssU0FBZCxDLHlCQUF3QkEsU0FBQSxDLGdCQUFBLEVBQWNULFNBQUEsQ0FBUVMsU0FBQSxDLGdCQUFBLENBQVIsQ0FBZCxDQUFzQ2IsU0FBQSxDQUFNYSxTQUFBLEMsZ0JBQUEsQ0FBTixFLE1BQUEsRUFBeUJQLFNBQXpCLENBQW9DSSxTQUFwQyxDLEVBQzlERixTQUFBLENBQU0sQ0FBQVQsU0FBQSxDQUFZQSxTQUFBLEMsT0FBQSxFQUFnQkgsU0FBaEIsQ0FBeUJDLFNBQUEsRUFBYyxFQUF2QyxDQUFaLENBQUQsQyxnQkFBQSxHQUFMLEMsRUFKRyxDLEVBUVgsT0FBT2lCLGVBQVAsRyxnQkFBQSxDQUF3Q0EsZUFBeEMsQ0FBMEQsU0FBVUMsU0FBVixDQUFpQkMsU0FBakIsQ0FBNkJDLFNBQTdCLEMsMkJBQ3RELElBQUlDLFNBQUEsQ0FBSSxJQUFJQyxLQUFKLENBQVVGLFNBQVYsQ0FBUixDLE9BQ09DLFNBQUEsQyxnQkFBQSxFLGdCQUFBLENBQTRCQSxTQUFBLEMsZ0JBQUEsRUFBVUgsU0FBdEMsQ0FBNkNHLFNBQUEsQyxnQkFBQSxFQUFlRixTQUE1RCxDQUF3RUUsUyxFQUZuRixDQUtBLE1BQU1FLFNBQUEsQyxXQUFOLENBQ01DLFNBQUEsQyxnQkFETixDQUVNQyxTQUFBLEMsZ0JBRk4sQ0FHTUMsU0FBQSxDLGdCQUhOLENBSU1DLFNBQUEsQyxnQkFKTixDQUtNQyxTQUFBLEMsZ0JBTE4sQ0FNTUMsU0FBQSxDLGdCQU5OLENBUUEsSUFBSUMsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENBQWdCQSxTQUFBLEMsZ0JBQUEsRSxHQUFoQixFLGlCQUNBQSxTQUFBLENBQWdCQSxTQUFBLEMsZ0JBQUEsRSxHQUFoQixFLFVBQ0FBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxnQkFBQSxFLEdBQWhCLEUsaUJBQ0FBLFNBQUEsQ0FBZ0JBLFNBQUEsQyxnQkFBQSxFLEdBQWhCLEUsa0JBSkosQ0FLR0QsU0FBQSxFQUFvQixDQUFBQSxTQUFBLENBQWtCLEVBQWxCLENBTHZCLEdBTUEsSUFBSUUsU0FBSixDQUNBLENBQUMsU0FBVUMsU0FBVixDLDJCQUNHQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLEdBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsUUFBQSxFLEdBQVYsRSxTQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLEdBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxHQUFWLEUsaUJBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsR0FBVixFLGlCQUNBQSxTQUFBLENBQVVBLFNBQUEsQyxnQkFBQSxFLElBQVYsRSxpQkFDQUEsU0FBQSxDQUFVQSxTQUFBLEMsZ0JBQUEsRSxJQUFWLEUsZ0JBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsSUFBVixFLFdBQ0FBLFNBQUEsQ0FBVUEsU0FBQSxDLGdCQUFBLEUsSUFBVixFLGtCQVRKLENBVUdELFNBQUEsRUFBYyxDQUFBQSxTQUFBLENBQVksRUFBWixDQVZqQixHQVdBLElBQUlFLFNBQUosQ0FDQSxDQUFDLFNBQVVDLFNBQVYsQywwQkFDR0EsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLEdBQWQsRSxnQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLEdBQWQsRSxnQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLEdBQWQsRSxnQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLEdBQWQsRSxnQkFDQUEsU0FBQSxDQUFjQSxTQUFBLEMsZUFBQSxFLElBQWQsRSxlQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxlQUFBLEUsSUFBZCxFLGdCQUNBQSxTQUFBLENBQWNBLFNBQUEsQyxVQUFBLEUsSUFBZCxFLGdCQUNB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QSxDQUFZaEwsQ0FBQSxDLGdCQUFBLENBQWxCLENBQ01pTCxTQUFBLENBQXFCLEMsUUFDdkIsQyxNQUR1QixDLGlCQUV2QixDLEVBRnVCLEMsWUFHdkIsQ0FBWSxDLGdCQUFFLEMsR0FBRixDLE1BQXFCLEMsV0FBckIsQ0FIVyxDLGFBSXZCLENBQWEsQyxNQUFFLEMsV0FBRixDQUpVLEMsV0FLdkIsQyxVQUx1QixDLGdCQU12QixDLGdCQU51QixDQUQzQixDQVNBRCxTQUFBLEMsZ0JBQUEsRUFBc0JqUixNQUFBLEMsUUFBQSxFQUFjQSxNQUFBLEMsUUFBQSxFQUFjLEVBQWQsQ0FBa0I0USxTQUFBLEVBQWxCLENBQWQsQ0FBaUUsQyxZQUFFLENBQVksSUFBTU0sU0FBcEIsQyxjQUF3QyxDQUFhQyxTQUFiLEMsa0NBQ2hIQSxTQUFBLEMsV0FBQSxJLGtCQUR3RSxDLFdBRWhGLEMsSUFGZ0YsQ0FBakUsQ0FBdEIsQyxFQXBDZ0QsQyxZQXdDcEQsRSxFQXhDb0QsQ0FBeEQsQyxFQTlpQ0osRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBjb25zdCBPcmdhbml6ZXNSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNVwiO1xuICAgIGNvbnN0IEZvbGRlclR5cGUgPSBcIm5zPTA7aT02MVwiO1xuICAgIGNvbnN0IEhhc0NvbXBvbmVudFJlZk5vZGVJZCA9IFwibnM9MDtpPTQ3XCI7XG4gICAgY29uc3QgSGFzUHJvcGVydHlSZWZOb2RlSWQgPSBcIm5zPTA7aT00NlwiO1xuICAgIGNvbnN0IEhhc0NoaWxkUmVmTm9kZUlkID0gXCJucz0wO2k9MzRcIjtcbiAgICBjb25zdCBIYXNTdWJ0eXBlUmVmTm9kZUlkID0gXCJucz0wO2k9NDVcIjtcbiAgICBjb25zdCBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZCA9IFwibnM9MDtpPTQwXCI7XG5cbiAgICB2YXIgQnJvd3NlRGlyZWN0aW9uO1xuICAgIChmdW5jdGlvbiAoQnJvd3NlRGlyZWN0aW9uKSB7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJGb3J3YXJkXCJdID0gMF0gPSBcIkZvcndhcmRcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmVyc2VcIl0gPSAxXSA9IFwiSW52ZXJzZVwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiQm90aFwiXSA9IDJdID0gXCJCb3RoXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZhbGlkXCJdID0gM10gPSBcIkludmFsaWRcIjtcbiAgICB9KShCcm93c2VEaXJlY3Rpb24gfHwgKEJyb3dzZURpcmVjdGlvbiA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzcztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzcykge1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVW5zcGVjaWZpZWRcIl0gPSAwXSA9IFwiVW5zcGVjaWZpZWRcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzIHx8IChOb2RlQ2xhc3MgPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3NNYXNrO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzTWFzaykge1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzTWFzayB8fCAoTm9kZUNsYXNzTWFzayA9IHt9KSk7XG4gICAgdmFyIFJlc3VsdE1hc2s7XG4gICAgKGZ1bmN0aW9uIChSZXN1bHRNYXNrKSB7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAxXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJJc0ZvcndhcmRcIl0gPSAyXSA9IFwiSXNGb3J3YXJkXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIk5vZGVDbGFzc1wiXSA9IDRdID0gXCJOb2RlQ2xhc3NcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiQnJvd3NlTmFtZVwiXSA9IDhdID0gXCJCcm93c2VOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkRpc3BsYXlOYW1lXCJdID0gMTZdID0gXCJEaXNwbGF5TmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJUeXBlRGVmaW5pdGlvblwiXSA9IDMyXSA9IFwiVHlwZURlZmluaXRpb25cIjtcbiAgICB9KShSZXN1bHRNYXNrIHx8IChSZXN1bHRNYXNrID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JnYW5pemVzUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1Byb3BlcnR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1Byb3BlcnR5UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NvbXBvbmVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDb21wb25lbnRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ2hpbGRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ2hpbGRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzU3VidHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNTdWJ0eXBlUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1R5cGVEZWZpbml0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SWNvbiA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZWZlcmVuY2Uubm9kZUNsYXNzKSB7XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IE9yZ2FuaXplc1JlZk5vZGVJZCkgO1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UudHlwZURlZmluaXRpb24gPT09IEZvbGRlclR5cGUgfHwgcmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gXCJpPTYxXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1mb2xkZXJcIiwgY29sb3I6IFwicmdiYSg2MSwgNjAsIDQsIDAuNTI1KVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIlNlYUdyZWVuXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNDb21wb25lbnRSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJTdGVlbEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNQcm9wZXJ0eVJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkRvZGdlckJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJNZXRob2RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWNvZ1wiLCBjb2xvcjogXCJTYW5keUJyb3duXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1zbGlkZXJzXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIkRhdGFUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS10ZXh0LXdpZHRoXCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1xdWVzdGlvblwiLCBjb2xvcjogXCJncmV5XCIgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJvd3NlID0gKF9hLCBub2RlSWRfMSwgdGVtcGxhdGVfMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBub2RlSWRfMSwgdGVtcGxhdGVfMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYnJvd3NlIGZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSByZXNwb25zZS5icm93c2VSZXN1bHQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlcyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUxID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNDaGlsZFwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHRlbXBsYXRlMiA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiT3JnYW5pemVzXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3Qgd2Fsa0JhY2t3YXJkID0gKF9hLCBfYikgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBfYl0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgeyBub2RlSWQsIHJvb3ROb2RlSWQsIGlzVHlwZSB9KSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS93YWxrLWJhY2t3YXJkYDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIHJvb3ROb2RlSWQsXG4gICAgICAgICAgICAgICAgaXNUeXBlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiBqc29uLmJyb3dzZVBhdGg7XG4gICAgfSk7XG4gICAgY29uc3QgY2hvb3NlTm9kZUlkID0gKGRhdGEsIG1vZGUpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSAhPT0gXCJHb29kXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlcXVlc3RlZE5vZGVJZDtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2FsaWFzZWQgfHwgZGF0YS5icF9pbmRleGVkO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWRfYWxpYXNlZCB8fCBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX25zdTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBtYWtlVG9vbHRpcCA9IChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gYHN0YXR1c0NvZGU6ICR7ZGF0YS5zdGF0dXNDb2RlfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgc3RyID0gW107XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZUlkOiAke2RhdGEubm9kZUlkfWApO1xuICAgICAgICAgICAgc3RyLnB1c2goYGJyb3dzZSBwYXRoOiAke2RhdGEuYnBfaW5kZXhlZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBub2RlIGNsYXNzOiAke05vZGVDbGFzc1tkYXRhLm5vZGVDbGFzc119YCk7XG4gICAgICAgICAgICBpZiAoZGF0YS5ub2RlSWRfbnN1KSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYG5zdSBub2RlSWQ6ICR7ZGF0YS5ub2RlSWRfbnN1fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX2FsaWFzZWQpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgYWxpYXNlZCBOb2RlSWQ6ICR7ZGF0YS5ub2RlSWRfYWxpYXNlZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLmJwX2luZGV4ZWQpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgYWxpYXNlZCBicm93c2VQYXRoOiAke2RhdGEuYnBfYWxpYXNlZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdHIuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TW9kZShlbmhhbmNlZE5vZGVJZCkge1xuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL15uc3U9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5zdU5vZGVJRFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihucz0uKjspPyhpfGJ8c3xnKT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibm9kZUlkXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnNhPS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJhbGlhc2VkTm9kZUlkXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKFxcL3xcXC4pWzAtOV0rOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKFxcL3xcXC4pLio6LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmaWd1cmVPdXRNZW5VSXRlbVZhbHVlKHN0cikge1xuICAgICAgICBjb25zdCBtb2RlID0gZmlndXJlT3V0TW9kZShzdHIpO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5hXCI7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnN1XCI7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImFiXCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcInRcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0b01vZGUodikge1xuICAgICAgICBsZXQgbW9kZTtcbiAgICAgICAgc3dpdGNoICh2KSB7XG4gICAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5vZGVJZFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5hXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5zdVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5zdU5vZGVJRFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImJcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJicm93c2VQYXRoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYWJcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJhbGlhc2VkQnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2RlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmcm9tTW9kZShtb2RlKSB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibmFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuc3VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYlwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYWJcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IF9jYWxsQ2hlY2tOb2RlSWQgPSAoX2EsIG5vZGVJZF8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3QgZUlkID0gZW5kcG9pbnROb2RlLmlkO1xuICAgICAgICBjb25zdCBuID0gUkVELm5vZGVzLm5vZGUoZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2cobi5uYW1lc3BhY2VBbGlhc2VzKTtcbiAgICAgICAgbi5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROb2RlLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIHsganNvbiwgZGF0YSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKF9hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbW9kZSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3QgZW5oYW5jZWROb2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCB7IGpzb24sIGRhdGEgfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIGVuaGFuY2VkTm9kZUlkKTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgZW5oYW5jZWROb2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSBtYWtlVG9vbHRpcChqc29uKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LmF0dHIoXCJ0aXRsZVwiLCB0b29sdGlwKTtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVJZCA9IGNob29zZU5vZGVJZChqc29uLCBtb2RlKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChzZWxlY3RlZE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke2VuaGFuY2VkTm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSB8fCAhcmVmZXJlbmNlLm5vZGVJZCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBgKCR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfSkgJHsoKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lKSB8fCAoKF9kID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudGV4dCkgfHwgXCJcIn1gO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaSBrZXk9XCIke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX1cIn0+PHNwYW4gY2xhc3M9XCJ0cmVlLXRleHRcIiB0aXRsZT0ke3RpdGxlfT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTwvc3Bhbj48dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kRWxlbWVudCA9IChub2RlSWQsICR0cmVlKSA9PiB7XG4gICAgICAgIHJldHVybiAkdHJlZS5maW5kKGBsaVtrZXk9XCIke25vZGVJZH1cIl1gKTtcbiAgICB9O1xuICAgIGNvbnN0IHNlbGVjdFNpbmdsZSA9ICh0aGF0LCAkbGkpID0+IHtcbiAgICAgICAgdGhhdC4kdHJlZS5maW5kKFwibGkgPiAudHJlZS10ZXh0XCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIC8vIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAgICAkbGkuZmluZChcIi50cmVlLXRleHQ6Zmlyc3RcIikuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGF1dG9FeHBhbmQgPSAodGhhdCwgYnJvd3NlUGF0aCwgJHRyZWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBleHBhbmQgdGhlIHRyZWUgdG8gc2hvdyB0aGUgbm9kZUlkXG4gICAgICAgIGxldCAkY3VycmVudCA9ICR0cmVlLmNoaWxkcmVuKFwiOmZpcnN0XCIpO1xuICAgICAgICBicm93c2VQYXRoLnJlbGF0aXZlUGF0aC5lbGVtZW50cyB8fCBbXTtcbiAgICAgICAgY29uc3Qgbm9kZUlkcyA9IGJyb3dzZVBhdGgubm9kZUlkcyB8fCBbXTtcbiAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBuIG9mIG5vZGVJZHMpIHtcbiAgICAgICAgICAgIGlmICgkY3VycmVudC5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGV4cGFuZCBhbmQgc2VsZWN0IHRoZSByaWdodCBlbGVtZW50XG4gICAgICAgICAgICAgICAgeWllbGQgX2V4cGFuZExpKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gZmluZEVsZW1lbnQobiwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKCRlbGVtZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRjdXJyZW50ID0gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgc2Nyb2xsVG9MaSh0aGF0LiRkcm9wZG93biwgJGN1cnJlbnQpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIHNjcm9sbFRvTGkoJGNvbnRhaW5lciwgJHRhcmdldExpKSB7XG4gICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBpdGVtIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXJcbiAgICAgICAgY29uc3QgbGlQb3MgPSAkdGFyZ2V0TGkucG9zaXRpb24oKS50b3A7XG4gICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBjb250YWluZXJTY3JvbGxUb3AgPSAkY29udGFpbmVyLnNjcm9sbFRvcCgpO1xuICAgICAgICBpZiAoY29udGFpbmVyU2Nyb2xsVG9wID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gdG8gc2Nyb2xsIHRvIChjdXJyZW50IHNjcm9sbCArIGl0ZW0ncyBwb3NpdGlvbilcbiAgICAgICAgLy8gQWRqdXN0IHRoaXMgY2FsY3VsYXRpb24gYmFzZWQgb24geW91ciBuZWVkc1xuICAgICAgICBjb25zdCBzY3JvbGxUbyA9IGNvbnRhaW5lclNjcm9sbFRvcCArIGxpUG9zIC0gJGNvbnRhaW5lci5oZWlnaHQoKSAvIDIgKyAkdGFyZ2V0TGkuaGVpZ2h0KCkgLyAyO1xuICAgICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byBlbnN1cmUgdGhlIGl0ZW0gaXMgdmlzaWJsZVxuICAgICAgICAkY29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUbyxcbiAgICAgICAgfSwgNTAwKTsgLy8gQWRqdXN0IHRoZSBkdXJhdGlvbiAoNTAwbXMpIGFzIG5lZWRlZFxuICAgIH1cbiAgICBjb25zdCByZWFjaFNlbGVjdGlvbiA9ICh0aGF0LCBwYXJlbnROb2RlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhhdC4kaW5wdXQudmFsKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICByb290Tm9kZUlkOiBwYXJlbnROb2RlLm5vZGVJZCxcbiAgICAgICAgICAgIGlzVHlwZTogdGhhdC5vcHRpb25zLmlzVHlwZVJlZiB8fCBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICBjb25zdCBicm93c2VQYXRoID0geWllbGQgd2Fsa0JhY2t3YXJkKGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWJyb3dzZVBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBhdXRvRXhwYW5kKHRoYXQsIGJyb3dzZVBhdGgsIHRoYXQuJHRyZWUpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIHNvcnQgcmVmZXJlbmNlICAgYnkgYnJvd3NlTmFtZVxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMuc29ydCgoYSwgYikgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKCgoX2EgPSBhLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSB8fCBcIlwiKS5sb2NhbGVDb21wYXJlKCgoX2IgPSBiLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCBcIlwiKTsgfSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYWtlQ29ubmVjdGlvbih0aGF0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZXhwYW5kTGkodGhhdCwgJGxpKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJGxpLCBmLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UGFyZW50Tm9kZSA9IHtcbiAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IGRlZmF1bHRQYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9fcGFyZW50Tm9kZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlLmNhbGwodGhhdCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fX3BhcmVudE5vZGUgfHwgZGVmYXVsdFBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gcmVzZXQgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoYXQ7XG4gICAgICAgICAgICAgICAgICAgIGEuX19wYXJlbnROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB5aWVsZCB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkobW9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgbW9kZSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcImlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8ucmVtb3ZlQ2xhc3MoXCJpbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9oaWRlTWVudShtZW51KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiKTtcbiAgICAgICAgICAgICAgICBtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1lbnUub3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5maW5kKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoXCJjaGVja2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQucHVzaCgkKHRoaXMpLmRhdGEoXCJ2YWx1ZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJGVsZW1lbnREaXYuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIC8veHggfSBlbHNlIGlmICh0aGlzLiRvcHRpb25TZWxlY3RUcmlnZ2VyLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy94eCAgICAgdGhhdC4kb3B0aW9uU2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZU1lbnUobWVudU9wdGlvbnMsIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnUgPSAkKFwiPGRpdj5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS10eXBlZElucHV0LW9wdGlvbnMgc3RlcmZpdmUtb25saW5lLW1lbnVcIik7XG4gICAgICAgICAgICAgICAgbWVudS5vcHRzID0gb3B0cztcbiAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgbWVudU9wdGlvbnMuZm9yRWFjaCgob3B0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHQgPSB7IHZhbHVlOiBvcHQsIGxhYmVsOiBvcHQgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSAkKCc8YSBocmVmPVwiI1wiPjwvYT4nKS5hdHRyKFwidmFsdWVcIiwgb3B0LnZhbHVlKS5hcHBlbmRUbyhtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQubGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnByb3AoXCJ0aXRsZVwiLCBvcHQudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uLmluZGV4T2YoXCI8XCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChvcHQuaWNvbikucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5pY29uLmluZGV4T2YoXCIvXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcIm1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpOyAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpO1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHsgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvbiBcIiArIG9wdC5pY29uIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5jc3MoeyBwYWRkaW5nTGVmdDogXCIxOHB4XCIgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHQuaWNvbiAmJiAhb3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNiO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2IgPSAkKCc8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oXCJtb3VzZWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3Aub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYi5wcm9wKFwiY2hlY2tlZFwiLCAhY2IucHJvcChcImNoZWNrZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBET1dOXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLm5leHQoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVQXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLnByZXYoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFU0NBUEVcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZW51O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FybUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgIF9zaG93TWVudShtZW51LCByZWxhdGl2ZVRvKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYXJtQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhcm1DbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVsYXRpdmVUby5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVsYXRpdmVUby5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgbWVudUhlaWdodCA9IG1lbnUuaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IGhlaWdodCArIHBvcy50b3A7XG4gICAgICAgICAgICAgICAgaWYgKHRvcCArIG1lbnVIZWlnaHQgLSAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKSA+ICQod2luZG93KS5oZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0b3AgLT0gdG9wICsgbWVudUhlaWdodCAtICQod2luZG93KS5oZWlnaHQoKSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuaGVpZ2h0KG1lbnVIZWlnaHQgKyB0b3ApO1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wICsgXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwb3MubGVmdCArIFwicHhcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LnNsaWRlRG93bigxMDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGF5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChtZW51KS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChyZWxhdGl2ZVRvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmRpc2FybUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2hvd1R5cGVNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dNZW51KHRoYXQuJG1lbnUsIHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoYXQuc2VsZWN0ZWRNZW51SXRlbTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0aGF0LiRtZW51LmZpbmQoXCJbdmFsdWU9J1wiICsgdHlwZSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH0sIDEyMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2luaXRNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuYXR0cihcInRhYmluZGV4XCIsIC0xKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWZvY3VzLWJsb2NrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJG1lbnUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kbWVudS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZmEtaWQtY2FyZFxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVMaXN0ID0gW1xuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcInRleHRcIiwgdmFsdWU6IFwidFwiLCB0aXRsZTogXCJWYWx1ZSBpcyBub3QgdmVyaWZpZWRcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZm9udFwiL2k+ICcgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibXNnLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwibXNnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJub2RlIGlkIG9yICBicm93c2UgcGF0aCBjb21lcyBmcm9tIGluamVjdGVkIG1zZyBwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tb1wiLz4nLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZFwiLCB2YWx1ZTogXCJuXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz4xICZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQWxpYXNlZCBOb2RlSWRcIiwgdmFsdWU6IFwibmFcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWQgd2l0aCBuYW1lc3BhY2UgVXJuXCIsIHZhbHVlOiBcIm5zdVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1pZC1jYXJkXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQnJvd3NlUGF0aFwiLCB2YWx1ZTogXCJiXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQWxpYXNlZCBCcm93c2UgUGF0aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiYWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBmaWd1cmVPdXRNZW5VSXRlbVZhbHVlKHRoYXQuJGlucHV0LnZhbCgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gYSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSBhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51ID0gdGhpcy5fY3JlYXRlTWVudSh0eXBlTGlzdCwge30sICh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0b01vZGUodik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBNZW51IHNlbGVjdGVkICFcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gdik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHY7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnNob3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01vZGUodGhhdC5zZWxlY3RlZE1lbnVJdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRNb2RlKG1vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gZnJvbU1vZGUobW9kZSk7XG4gICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmNzcyhcImJvcmRlclwiLCBcIm5vbmVcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRlbGVtZW50RGl2ID0gdGhhdC4kaW5wdXQud3JhcChcIjxkaXY+XCIpLnBhcmVudCgpLmFkZENsYXNzKFwibWFpbi13cmFwcGVyXCIpO1xuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gQ29tYm8gYnJvd3NlclxuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRjb21iby5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWlucHV0LXdyYXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBhZGQgYnV0dG9uIG9uIHRoZSByaWdodCBzaWRlXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB0b2dnbGVUcmVlQnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJvcGVuIE9QQ1VBIEFkZHJlc3NTcGFjZSBCcm93c2VyXCI+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB2ZXJpZnlCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwidmVyaWZ5IG5vZGVJZCBvciBicm93c2VQYXRoXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplSW5wdXQgPSAoaW5wdXQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbkRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhLCBqc29uIH0gPSB5aWVsZCBfY2FsbENoZWNrTm9kZUlkKGNvbm5lY3Rpb25EYXRhLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVJZCA9IGNob29zZU5vZGVJZChqc29uLCBtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChzZWxlY3RlZE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBwcmVwZW5kZWQgYnV0dG9uXG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdCA9ICQoXCI8ZGl2PlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYmVmb3JlKHRoYXQuJHVpU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlciA9ICQoJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiPjwvYnV0dG9uPicpLnByZXBlbmRUbyh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgICQoJzxpIGNsYXNzPVwicmVkLXVpLXR5cGVkSW5wdXQtaWNvbiBmYSBmYS1jYXJldC1kb3duXCI+PC9pPicpLnRvZ2dsZSh0cnVlKS5hcHBlbmRUbyh0aGF0LiRzZWxlY3RUcmlnZ2VyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2hvd1R5cGVNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2hvd1R5cGVNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJmb2N1c1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiYmx1clwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgb3B0ID0gdGhhdC50eXBlTWFwW3RoYXQucHJvcGVydHlUeXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvcHQuaGFzVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5yZW1vdmVDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwgPSAkKCc8c3BhbiBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LXR5cGUtbGFiZWxcIj48L3NwYW4+JykuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRNZW51KCk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB0ZW1wb3JhdHkgaW5mbyBwYW5lbFxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGRyb3AgZG93biB0cmVlXG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpLmFwcGVuZFRvKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGRyb3Bkb3duLnNob3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzT25MZWZ0U2l6ZSA9ICgkbGksIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gMjA7IC8vIFNldCB3aWR0aCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVIZWlnaHQgPSAyMDsgLy8gU2V0IGhlaWdodCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50UG9zID0gJGxpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgdG9nZ2xlRXhwYW5zaW9uID0gKCRsaSkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2V4cGFuZExpKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJkYmxjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkbGkuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gJGxpLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZSAmJiAhdGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnNldE1vZGUobW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVJbnB1dCh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIGNvbnRhaW5pbmc6XG4gICAgICogIC0gdGhlIGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LFxuICAgICAqICAtIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICogIC0gY3JlZGVudGlhbHNcbiAgICAgKiAgLSBuYW1lc3BhY2VBbGlhc2VzXG4gICAgICpcbiAgICAgKiBleHRyYWN0ZWQgZnJvbSB0aGUgdWkgd2lkZ2V0ICNub2RlLWlucHV0LWVuZHBvaW50XG4gICAgICovXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscywgbmFtZXNwYWNlQWxpYXNlcyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5yLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgbmFtZXNwYWNlQWxpYXNlcywgaWQ6IGVuZHBvaW50SWQgfSwgZW5kcG9pbnROcik7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMsXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGluc3RhbGxGZWVkYmFja1dpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLy8gcmV0dXJuO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgdHJheUNvbnRlbnQgPSAkKFwiLnJlZC11aS10cmF5LWJvZHlcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5zdGFsbEZlZWRiYWNrV2lkZ2V0IFwiLCB0cmF5Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBpZiAodHJheUNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxpbmcgaWZyYW1lXCIpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpZnJhbWUgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gJChcIjxpZnJhbWU+PC9pZnJhbWU+XCIsIHtcbiAgICAgICAgICAgICAgICBzcmM6IFwiL29wY3VhLWZvci1ub2RlLXJlZC9zdXBwb3J0LWZyYW1lLmh0bWxcIixcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IFwibm9cIixcbiAgICAgICAgICAgICAgICBzdHlsZTogXCJiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbjtib3JkZXI6M3B4XCIsXG4gICAgICAgICAgICAgICAgYWxsb3d0cmFuc3BhcmVuY3k6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4MHB4XCIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjMwcHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBpZnJhbWUgdG8gdGhlIGZlZWRiYWNrIGVsZW1lbnRcbiAgICAgICAgICAgIHRyYXlDb250ZW50LmFwcGVuZChpZnJhbWUpO1xuICAgICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGZlZWRiYWNrIGVsZW1lbnQgYXQgdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgdHJheSBjb250ZW50XG4gICAgICAgICAgICBpZnJhbWUuY3NzKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIjIwcHhcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiMTZweFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItRXh0ZW5zaW9uT2JqZWN0XCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJleHRlbnNpb24gb2JqZWN0XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBpbnB1dHM6IDEsXG4gICAgICAgIG91dHB1dHM6IDEsXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBIENsaWVudCBFeHRlbnNpb24gT2JqZWN0XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBpbnN0YWxsRmVlZGJhY2tXaWRnZXQoKTtcbiAgICAgICAgICAgIG5vZGUuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIGNvbnN0ICRkYXRhVHlwZSA9ICQoXCIjbm9kZS1pbnB1dC1kYXRhVHlwZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZXNOb2RlRGVzYyA9IHtcbiAgICAgICAgICAgICAgICBub2RlSWQ6IFwiaT0yMlwiLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZVR5cGVJZDogXCJcIixcbiAgICAgICAgICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIlN0cnVjdHVyZVwiIH0sXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJTdHJ1Y3R1cmVcIiB9LFxuICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJEYXRhVHlwZVwiLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBcImk9MFwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICRkYXRhVHlwZS5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgcGFyZW50Tm9kZTogKCkgPT4gcmVmZXJlbmNlc05vZGVEZXNjLCBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJEYXRhVHlwZVwiO1xuICAgICAgICAgICAgICAgIH0sIGlzVHlwZVJlZjogdHJ1ZSB9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHNhdmUoKSB7IH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
7
|
+
function _0x233a(_0x3b2c5c,_0x483a54){const _0x113328=_0x1133();return _0x233a=function(_0x233a29,_0x384351){_0x233a29=_0x233a29-0x193;let _0x188488=_0x113328[_0x233a29];return _0x188488;},_0x233a(_0x3b2c5c,_0x483a54);}function _0x1133(){const _0x21de87=['push','483495djakgv','158340WMDEwD','ns=0;i=34',':first','aliasedNodeId','i=61','mousedown.red-ui-typedInput-close-property-select','change','throw','requestedNodeId','CadetBlue','$uiSelect','status','fa-question','blur','namespaceAliases','before','hasClass','browseResult','json','baseUrl','height','Aliased\x20Browse\x20Path','_delay','mask-image:\x20url(','expandable','opc.tcp://opcuademo.sterfive.com:26543','ns=0;i=35','[value=\x27','preventDefault','HasProperty','after','options','Both','prev','$inputGroup','VariableType','<input\x20type=\x22checkbox\x22>','red-ui-typedInput-focus','Structure','<div/>','registerType','View','DisplayName','ns=0;i=61','browseName','next','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','Object','fa-list-alt','358983TAEosd','expandable\x20expanded','$info','border','fetching\x20failed\x20with\x20error','<i\x20class=\x22fa\x20fa-id-card\x22/> \x20','mousedown','ns=0;i=45','sterfive-dropdown','_createMenu','setMode','Organizes','$elementDiv','toggleClass','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> ','css','pageY','show','off','localeCompare','$verifyBtn','browse\x20path:\x20','dblclick','$menu','nodeBrowser','msg','<span\x20title=','Objects','<iframe></iframe>','OpcUa-Endpoint2','trigger','mode','input[type=\x22checkbox\x22]','sterfive-input-group','<i\x20class=\x22fa\x20fa-bookmark\x22/> \x20','title','red-ui-typedInput-icon\x20','nsu\x20nodeId:\x20','click','prependTo','keydown','$selectTrigger','keyCode','<li>error\x20',':focus','failure','SuppressedError','tabindex','nsuNodeID','sort','DataType','NodeId\x20with\x20namespace\x20Urn','Aliased\x20NodeId','</li>','4296300iUQsXi','resolveParentNode','/browse','fa-object-group',';\x22></i>\x20','bp_aliased','fa-folder','<div\x20class=\x22sterfive-info-text\x22></div>','children','currentParent','val','<a\x20href=\x22#\x22></a>','bp_indexed','OpcUa-Client2-ExtensionObject','ObjectType','nodes','error','/opcua-for-node-red/support-frame.html','sterfive-combo-box','/opcua-for-node-red','closest','_showMenu','TypeDefinition','ReferenceType','offset','focus','OPCUA\x20Client\x20Extension\x20Object','fetched','filter','callback','label',':visible','scrollTop','node_label_italic','sterfive.nodeBrowser','parent','right','opts','endpoint','HasTypeDefinition','180px','$dropdown','selectedMenuItem','Good','__parentNode','HasSubtype','prop','appendTo','pageX','position','extension\x20object','DarkOrange','/walk-backward','message','element','statusCode','name','10OMaPmN','value','expanded','each','red-ui-typedInput-icon','ns=0;i=46','IsForward','POST','Inverse','installFeedbackWidget\x20','apply','aliased\x20NodeId:\x20','hide','background-color:transparent;overflow:hidden;border:3px','ns=0;i=40','none','stringify','aliasedBrowsePath','append','Value\x20is\x20not\x20verified','absolute','li\x20>\x20.tree-text','16px','indexOf','nodeId:\x20','Invalid','references','</span>','err','removeClass','NodeClass','reference','72gRckcX','_hideMenu','already\x20loading','empty','icon','function','length','call','li[key=\x22','../../icons/opcuanodeLogo.png','toggle','done','nodeClass','Variable','i=22','find','_showTypeMenu','!!failure!!','SandyBrown','.spinner','nodeId','opcua','log','forEach','> \x20','already\x20fetched','nodeId_nsu','\x22}><span\x20class=\x22tree-text\x22\x20title=','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','3180472NbqDGr','30px','displayName','><i\x20class=\x22fa\x20','20px','Method','then','10478454KWIIwo','1570657KvTvqu','fa-cog','browsePath','endpointNode','remove','nodeId_aliased','multiple','isSelectable','assign','$toggleTreeBtn','parentNode','target','Forward','sterfive-input-error','match','rgba(61,\x2060,\x204,\x200.525)','SteelBlue','selected','BrowseName','#node-input-endpoint','sterfive-typedInput-options\x20sterfive-online-menu','catch','<div>','text','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','SeaGreen','reset','loading','isTypeRef','top','verify','$selectLabel','$tree','placeholder','$combo','statusText','nsu','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','.tree-text:first','mousedown.red-ui-typedInput-focus-block','addClass','<i>','data','<div\x20class=\x22spinner\x22></div>','toString','true','stopPropagation','$input','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','Unspecified','disarmClick','referenceTypeId','18px','attr','pointer-events',');\x20-webkit-mask-image:\x20url(','left','slideDown','.red-ui-tray-body'];_0x1133=function(){return _0x21de87;};return _0x1133();}(function(_0x59a61e,_0x117cfb){const _0x2bb263=_0x233a,_0x459f22=_0x59a61e();while(!![]){try{const _0x1b9247=parseInt(_0x2bb263(0x1de))/0x1+-parseInt(_0x2bb263(0x199))/0x2*(parseInt(_0x2bb263(0x21a))/0x3)+-parseInt(_0x2bb263(0x1d6))/0x4+-parseInt(_0x2bb263(0x282))/0x5+parseInt(_0x2bb263(0x21b))/0x6+parseInt(_0x2bb263(0x1dd))/0x7+-parseInt(_0x2bb263(0x1b9))/0x8*(-parseInt(_0x2bb263(0x24c))/0x9);if(_0x1b9247===_0x117cfb)break;else _0x459f22['push'](_0x459f22['shift']());}catch(_0x47c834){_0x459f22['push'](_0x459f22['shift']());}}}(_0x1133,0xf25ed),(function(){'use strict';const _0x5426ac=_0x233a;function _0x42870c(_0x55d385,_0x2bb276,_0x1a10c4,_0x2a44f1){function _0x5a644a(_0x38b518){return _0x38b518 instanceof _0x1a10c4?_0x38b518:new _0x1a10c4(function(_0x566c03){_0x566c03(_0x38b518);});}return new(_0x1a10c4||(_0x1a10c4=Promise))(function(_0x14c865,_0x1d70ec){const _0x30fd1f=_0x233a;function _0x2922de(_0x750998){const _0x549e9e=_0x233a;try{_0x10b8b1(_0x2a44f1[_0x549e9e(0x248)](_0x750998));}catch(_0x2b2284){_0x1d70ec(_0x2b2284);}}function _0x2268a5(_0x4e8672){const _0x8c1d6=_0x233a;try{_0x10b8b1(_0x2a44f1[_0x8c1d6(0x222)](_0x4e8672));}catch(_0x354b1f){_0x1d70ec(_0x354b1f);}}function _0x10b8b1(_0x1ce26d){const _0x5a8894=_0x233a;_0x1ce26d[_0x5a8894(0x1c4)]?_0x14c865(_0x1ce26d[_0x5a8894(0x19a)]):_0x5a644a(_0x1ce26d[_0x5a8894(0x19a)])['then'](_0x2922de,_0x2268a5);}_0x10b8b1((_0x2a44f1=_0x2a44f1[_0x30fd1f(0x1a3)](_0x55d385,_0x2bb276||[]))['next']());});}typeof SuppressedError===_0x5426ac(0x1be)?SuppressedError:function(_0xd52add,_0x4c5824,_0x48215f){const _0x4896d4=_0x5426ac;var _0x4d3d5d=new Error(_0x48215f);return _0x4d3d5d[_0x4896d4(0x198)]=_0x4896d4(0x27a),_0x4d3d5d[_0x4896d4(0x292)]=_0xd52add,_0x4d3d5d['suppressed']=_0x4c5824,_0x4d3d5d;};const _0x56db82=_0x5426ac(0x235),_0x315e3a=_0x5426ac(0x246),_0x34dc9c='ns=0;i=47',_0xc8059f=_0x5426ac(0x19e),_0x562dc3=_0x5426ac(0x21c),_0x29635e=_0x5426ac(0x253),_0x58998a=_0x5426ac(0x1a7);var _0x5a8fe3;(function(_0x4b0542){const _0x2036eb=_0x5426ac;_0x4b0542[_0x4b0542[_0x2036eb(0x1ea)]=0x0]=_0x2036eb(0x1ea),_0x4b0542[_0x4b0542[_0x2036eb(0x1a1)]=0x1]=_0x2036eb(0x1a1),_0x4b0542[_0x4b0542[_0x2036eb(0x23b)]=0x2]=_0x2036eb(0x23b),_0x4b0542[_0x4b0542[_0x2036eb(0x1b2)]=0x3]='Invalid';}(_0x5a8fe3||(_0x5a8fe3={})));var _0x2313ab;(function(_0x17ec0f){const _0x4f1d4b=_0x5426ac;_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x20f)]=0x0]=_0x4f1d4b(0x20f),_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x24a)]=0x1]=_0x4f1d4b(0x24a),_0x17ec0f[_0x17ec0f['Variable']=0x2]=_0x4f1d4b(0x1c6),_0x17ec0f[_0x17ec0f['Method']=0x4]=_0x4f1d4b(0x1db),_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x290)]=0x8]=_0x4f1d4b(0x290),_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x23e)]=0x10]='VariableType',_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x299)]=0x20]='ReferenceType',_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x27e)]=0x40]='DataType',_0x17ec0f[_0x17ec0f[_0x4f1d4b(0x244)]=0x80]=_0x4f1d4b(0x244);}(_0x2313ab||(_0x2313ab={})));var _0x192477;(function(_0x5af783){const _0x557090=_0x5426ac;_0x5af783[_0x5af783['Object']=0x1]='Object',_0x5af783[_0x5af783[_0x557090(0x1c6)]=0x2]=_0x557090(0x1c6),_0x5af783[_0x5af783[_0x557090(0x1db)]=0x4]=_0x557090(0x1db),_0x5af783[_0x5af783[_0x557090(0x290)]=0x8]=_0x557090(0x290),_0x5af783[_0x5af783[_0x557090(0x23e)]=0x10]=_0x557090(0x23e),_0x5af783[_0x5af783[_0x557090(0x299)]=0x20]=_0x557090(0x299),_0x5af783[_0x5af783[_0x557090(0x27e)]=0x40]=_0x557090(0x27e),_0x5af783[_0x5af783[_0x557090(0x244)]=0x80]=_0x557090(0x244);}(_0x192477||(_0x192477={})));var _0x2dae69;(function(_0x4601df){const _0x31fc9e=_0x5426ac;_0x4601df[_0x4601df[_0x31fc9e(0x299)]=0x1]='ReferenceType',_0x4601df[_0x4601df[_0x31fc9e(0x19f)]=0x2]=_0x31fc9e(0x19f),_0x4601df[_0x4601df[_0x31fc9e(0x1b7)]=0x4]=_0x31fc9e(0x1b7),_0x4601df[_0x4601df[_0x31fc9e(0x1f0)]=0x8]=_0x31fc9e(0x1f0),_0x4601df[_0x4601df[_0x31fc9e(0x245)]=0x10]=_0x31fc9e(0x245),_0x4601df[_0x4601df['TypeDefinition']=0x20]=_0x31fc9e(0x298);}(_0x2dae69||(_0x2dae69={})));function _0x311370(_0x45adc0){const _0x422431=_0x5426ac;switch(_0x45adc0){case _0x422431(0x257):return _0x56db82;case _0x422431(0x238):return _0xc8059f;case'HasComponent':return _0x34dc9c;case'HasChild':return _0x562dc3;case _0x422431(0x2af):return _0x29635e;case _0x422431(0x2a9):return _0x58998a;}}const _0xcf5f35=_0x290e3d=>{const _0x53bac5=_0x5426ac;switch(_0x290e3d[_0x53bac5(0x1c5)]){case _0x53bac5(0x24a):if(_0x290e3d[_0x53bac5(0x211)]===_0x56db82);if(_0x290e3d['typeDefinition']===_0x315e3a||_0x290e3d[_0x53bac5(0x211)]===_0x53bac5(0x21f))return{'icon':_0x53bac5(0x288),'color':_0x53bac5(0x1ed)};return{'icon':_0x53bac5(0x285),'color':_0x53bac5(0x1f7)};case _0x53bac5(0x1c6):if(_0x290e3d[_0x53bac5(0x211)]===_0x34dc9c)return{'icon':_0x53bac5(0x24b),'color':_0x53bac5(0x1ee)};else return _0x290e3d[_0x53bac5(0x211)]===_0xc8059f?{'icon':_0x53bac5(0x24b),'color':'DodgerBlue'}:{'icon':_0x53bac5(0x24b),'color':_0x53bac5(0x224)};case'Method':return{'icon':_0x53bac5(0x1df),'color':_0x53bac5(0x1cb)};case _0x53bac5(0x290):return{'icon':_0x53bac5(0x285),'color':'DarkOrange'};case _0x53bac5(0x23e):return{'icon':'fa-sliders','color':_0x53bac5(0x193)};case _0x53bac5(0x27e):return{'icon':'fa-text-width','color':_0x53bac5(0x224)};}return{'icon':_0x53bac5(0x227),'color':'grey'};},_0x45141e=(_0x29173b,_0x1dd525,_0x4db692)=>_0x42870c(void 0x0,[_0x29173b,_0x1dd525,_0x4db692],void 0x0,function*({endpointNode:_0x159fd3,endpoint:_0x100f27,baseUrl:_0x38efb7},_0x28dbe2,_0x29dc3e){const _0x413a8f=_0x5426ac,_0x2099a7=_0x38efb7+_0x413a8f(0x295),_0x250731=_0x2099a7+_0x413a8f(0x284),_0x2a22ce=Object[_0x413a8f(0x1e6)](Object[_0x413a8f(0x1e6)]({},_0x29dc3e),{'nodeId':_0x28dbe2,'resultMask':0x3f}),_0x521fa3=yield fetch(_0x250731,{'method':_0x413a8f(0x1a0),'body':JSON[_0x413a8f(0x1a9)]({'endpointNode':_0x159fd3,'endpoint':_0x100f27,'browseDescription':_0x2a22ce}),'headers':{'Content-Type':'application/json'}});if(_0x521fa3[_0x413a8f(0x226)]!==0xc8)return console['log'](_0x413a8f(0x250),_0x521fa3[_0x413a8f(0x226)],_0x521fa3[_0x413a8f(0x201)]),{'references':[]};const _0x3ca3cd=yield _0x521fa3[_0x413a8f(0x22d)](),_0x18b5a4=_0x3ca3cd[_0x413a8f(0x22c)]['references']||[];return{'references':_0x18b5a4};}),_0x5371d1={'referenceTypeId':_0x311370('HasChild'),'includeSubtypes':!![],'browseDirection':_0x5a8fe3['Forward'],'nodeClassMask':_0x2313ab['Variable']|_0x2313ab['Object']|_0x2313ab[_0x5426ac(0x1db)],'resultMask':0x3f},_0x38dbc7={'referenceTypeId':_0x311370('Organizes'),'includeSubtypes':!![],'browseDirection':_0x5a8fe3[_0x5426ac(0x1ea)],'nodeClassMask':_0x2313ab[_0x5426ac(0x1c6)]|_0x2313ab[_0x5426ac(0x24a)]|_0x2313ab['Method'],'resultMask':0x3f},_0x593b47=(_0xd2a7c,_0x52c856)=>_0x42870c(void 0x0,[_0xd2a7c,_0x52c856],void 0x0,function*({endpointNode:_0x10bd99,endpoint:_0x53479d,baseUrl:_0x510421},{nodeId:_0x2fb21a,rootNodeId:_0xe4e03d,isType:_0xa90675}){const _0x51274d=_0x5426ac,_0x53ecc3=_0x510421+_0x51274d(0x295),_0x45b52c=_0x53ecc3+_0x51274d(0x194),_0x4f7e6d=yield fetch(_0x45b52c,{'method':'POST','body':JSON['stringify']({'endpointNode':_0x10bd99,'endpoint':_0x53479d,'nodeId':_0x2fb21a,'rootNodeId':_0xe4e03d,'isType':_0xa90675}),'headers':{'Content-Type':'application/json'}});if(_0x4f7e6d[_0x51274d(0x226)]!==0xc8)return null;const _0x130867=yield _0x4f7e6d[_0x51274d(0x22d)]();return _0x130867[_0x51274d(0x1e0)];}),_0x590aa5=(_0x456d99,_0x36af41)=>{const _0x195ea5=_0x5426ac;if(_0x456d99['statusCode']!==_0x195ea5(0x2ad))return _0x456d99[_0x195ea5(0x223)];switch(_0x36af41){case _0x195ea5(0x1e0):return _0x456d99[_0x195ea5(0x28e)];case'aliasedBrowsePath':return _0x456d99['bp_aliased']||_0x456d99[_0x195ea5(0x28e)];case _0x195ea5(0x21e):return _0x456d99[_0x195ea5(0x1e3)]||_0x456d99['nodeId_nsu'];case _0x195ea5(0x27c):return _0x456d99[_0x195ea5(0x1d3)];default:case _0x195ea5(0x1cd):return _0x456d99[_0x195ea5(0x1cd)];}},_0x453d08=_0x4a1e05=>{const _0x215ce1=_0x5426ac;if(_0x4a1e05[_0x215ce1(0x197)]!==_0x215ce1(0x2ad))return'statusCode:\x20'+_0x4a1e05['statusCode'];else{let _0x5a0026=[];return _0x5a0026['push'](_0x215ce1(0x1b1)+_0x4a1e05[_0x215ce1(0x1cd)]),_0x5a0026[_0x215ce1(0x219)](_0x215ce1(0x261)+_0x4a1e05[_0x215ce1(0x28e)]),_0x5a0026['push']('node\x20class:\x20'+_0x2313ab[_0x4a1e05[_0x215ce1(0x1c5)]]),_0x4a1e05[_0x215ce1(0x1d3)]&&_0x5a0026['push'](_0x215ce1(0x271)+_0x4a1e05['nodeId_nsu']),_0x4a1e05['nodeId_aliased']&&_0x5a0026[_0x215ce1(0x219)](_0x215ce1(0x1a4)+_0x4a1e05['nodeId_aliased']),_0x4a1e05['bp_indexed']&&_0x5a0026['push']('aliased\x20browsePath:\x20'+_0x4a1e05[_0x215ce1(0x287)]),_0x5a0026['join']('\x0a');}};function _0x1a8df3(_0x16be60){const _0x153cdd=_0x5426ac;if(_0x16be60[_0x153cdd(0x1ec)](/^nsu=/))return _0x153cdd(0x27c);if(_0x16be60['match'](/^(ns=.*;)?(i|b|s|g)=/))return'nodeId';if(_0x16be60['match'](/^nsa=/))return _0x153cdd(0x21e);if(_0x16be60['match'](/^(\/|\.)[0-9]+:/))return'browsePath';if(_0x16be60[_0x153cdd(0x1ec)](/^(\/|\.).*:/))return'browsePath';}function _0xf21eb8(_0x4f43a5){const _0x893737=_0x5426ac,_0x515815=_0x1a8df3(_0x4f43a5);switch(_0x515815){case _0x893737(0x1cd):return'n';case _0x893737(0x21e):return'na';case _0x893737(0x27c):return'nsu';case'browsePath':return'b';case _0x893737(0x1aa):return'ab';default:return't';}}function _0x4e47f(_0x4a1c50){const _0x1ea34d=_0x5426ac;let _0x5c91b4;switch(_0x4a1c50){case'n':_0x5c91b4=_0x1ea34d(0x1cd);break;case'na':_0x5c91b4=_0x1ea34d(0x21e);break;case'nsu':_0x5c91b4=_0x1ea34d(0x27c);break;case'b':_0x5c91b4=_0x1ea34d(0x1e0);break;case'ab':_0x5c91b4=_0x1ea34d(0x1aa);break;}return _0x5c91b4;}function _0x39b8fa(_0x5650b7){const _0x2f0388=_0x5426ac;switch(_0x5650b7){case'nodeId':return'n';case _0x2f0388(0x21e):return'na';case _0x2f0388(0x27c):return _0x2f0388(0x202);case _0x2f0388(0x1e0):return'b';case _0x2f0388(0x1aa):return'ab';default:return't';}}const _0x588f14=(_0x2704fd,_0x350a4e)=>_0x42870c(void 0x0,[_0x2704fd,_0x350a4e],void 0x0,function*({endpointNode:_0x25d101,endpoint:_0x4d6efd,baseUrl:_0x1a415f},_0x553070){const _0xfeec1b=_0x5426ac,_0x2e0bee=_0x1a415f+_0xfeec1b(0x295),_0x4d1ac7=_0x2e0bee+'/checkNodeId',_0x59b073=_0x25d101['id'],_0x2ecfa1=RED[_0xfeec1b(0x291)]['node'](_0x59b073);console['log'](_0x2ecfa1[_0xfeec1b(0x229)]),_0x2ecfa1[_0xfeec1b(0x229)];const _0x4c45d1=_0x25d101[_0xfeec1b(0x229)],_0xef9641=yield fetch(_0x4d1ac7,{'method':_0xfeec1b(0x1a0),'body':JSON['stringify']({'endpointNode':_0x25d101,'endpoint':_0x4d6efd,'nodeId':_0x553070,'namespaceAliases':_0x4c45d1}),'headers':{'Content-Type':'application/json'}}),_0x5eef96=yield _0xef9641[_0xfeec1b(0x22d)]();return{'json':_0x5eef96,'data':_0xef9641};}),_0x5f118b=(_0x481536,_0x1424e,_0x534474,_0x55d9a4)=>_0x42870c(void 0x0,[_0x481536,_0x1424e,_0x534474,_0x55d9a4],void 0x0,function*({endpointNode:_0x3d75e5,endpoint:_0x301e82,baseUrl:_0x21c8e5},_0x3f3976,_0x1c500f,_0x59c237){const _0x2149eb=_0x5426ac,_0xd8aaf1=_0x1c500f['val'](),{json:_0x436d04,data:_0x385a53}=yield _0x588f14({'endpointNode':_0x3d75e5,'endpoint':_0x301e82,'baseUrl':_0x21c8e5},_0xd8aaf1),_0x27f92e=(_0x43e78a,_0x3482f5)=>{const _0x1d6bfe=_0x233a;_0x59c237['text'](_0x43e78a)['addClass']('sterfive-info')[_0x1d6bfe(0x206)](_0x3482f5),_0x59c237[_0x1d6bfe(0x25d)](),setTimeout(()=>{const _0x2df9c1=_0x1d6bfe;_0x59c237['removeClass'](_0x3482f5),_0x59c237[_0x2df9c1(0x1a5)]();},0xbb8);};if(_0x385a53[_0x2149eb(0x226)]!==0xc8)return _0x27f92e(_0x2149eb(0x1ca)+_0xd8aaf1,_0x2149eb(0x279)),![];else{if(_0x436d04['statusCode'][_0x2149eb(0x1ec)](/Good/)){const _0x541f9d=_0x453d08(_0x436d04);_0x1c500f[_0x2149eb(0x213)](_0x2149eb(0x26f),_0x541f9d);const _0x391920=_0x590aa5(_0x436d04,_0x3f3976);return _0x1c500f[_0x2149eb(0x28c)](_0x391920),_0x1c500f[_0x2149eb(0x26a)](_0x2149eb(0x221)),_0x27f92e('Good','ok'),!![];}else return _0x1c500f['val'](''+_0xd8aaf1),_0x27f92e(_0x436d04[_0x2149eb(0x197)]+'\x20'+_0x385a53[_0x2149eb(0x201)],_0x2149eb(0x279)),![];}});function _0x427810(_0x199489,_0x1187f1){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x312839=_0x233a,_0x4dc751=_0x199489[_0x312839(0x208)](_0x312839(0x19a)),_0x3c5a65=yield _0x45141e(_0x1187f1,_0x4dc751,_0x5371d1),_0x440ead=yield _0x45141e(_0x1187f1,_0x4dc751,_0x38dbc7);return{'references':[..._0x3c5a65[_0x312839(0x1b3)],..._0x440ead['references']]};});}const _0x2bf9e5={'referenceTypeId':_0x311370(_0x5426ac(0x2af)),'includeSubtypes':!![],'browseDirection':_0x5a8fe3[_0x5426ac(0x1ea)],'nodeClassMask':_0x2313ab['ReferenceType']|_0x2313ab[_0x5426ac(0x290)]|_0x2313ab[_0x5426ac(0x27e)]|_0x2313ab[_0x5426ac(0x23e)],'resultMask':0x3f};function _0x71ace8(_0x2e9eac,_0x462ffc){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x4cd4d1=_0x233a,_0x1c8670=_0x2e9eac[_0x4cd4d1(0x208)](_0x4cd4d1(0x19a)),_0x459e09=yield _0x45141e(_0x462ffc,_0x1c8670,_0x2bf9e5);return _0x459e09;});}const _0x3eaa1e=_0x43bef1=>{const _0x297f68=_0x5426ac;var _0x46dfa1,_0x132167,_0xd58f23,_0x3fddc6;if(!_0x43bef1||!_0x43bef1['nodeId']){const _0x327546=$(_0x297f68(0x20e));return _0x327546;}const _0xa963ed=_0x43bef1[_0x297f68(0x1cd)][_0x297f68(0x20a)](),_0x752fb7=((_0x46dfa1=_0x43bef1[_0x297f68(0x1d8)])===null||_0x46dfa1===void 0x0?void 0x0:_0x46dfa1[_0x297f68(0x1f5)])||((_0x132167=_0x43bef1[_0x297f68(0x247)])===null||_0x132167===void 0x0?void 0x0:_0x132167['name'])||_0x43bef1[_0x297f68(0x1cd)]['toString'](),{icon:_0x445ea5,color:_0x307c57}=_0xcf5f35(_0x43bef1),_0x2c4211='('+_0x43bef1[_0x297f68(0x1cd)][_0x297f68(0x20a)]()+')\x20'+(((_0xd58f23=_0x43bef1[_0x297f68(0x247)])===null||_0xd58f23===void 0x0?void 0x0:_0xd58f23[_0x297f68(0x198)])||((_0x3fddc6=_0x43bef1['displayName'])===null||_0x3fddc6===void 0x0?void 0x0:_0x3fddc6[_0x297f68(0x1f5)])||''),_0x7bf9f4=$('<li\x20key=\x22'+_0x43bef1[_0x297f68(0x1cd)][_0x297f68(0x20a)]()+_0x297f68(0x1d4)+_0x2c4211+_0x297f68(0x1d9)+_0x445ea5+'\x22\x20style=\x22color:'+_0x307c57+_0x297f68(0x286)+_0x752fb7+'</span><ul></ul></li>');return _0x7bf9f4['addClass']('expandable'),_0x7bf9f4[_0x297f68(0x208)]('value',_0xa963ed),_0x7bf9f4['data']('reference',_0x43bef1),_0x7bf9f4;},_0x55bc23=(_0x3fe6b5,_0x503633)=>{const _0x48f0cb=_0x5426ac;return _0x503633[_0x48f0cb(0x1c8)](_0x48f0cb(0x1c1)+_0x3fe6b5+'\x22]');},_0x438d02=(_0x1a1024,_0x406588)=>{const _0x3779ea=_0x5426ac;_0x1a1024[_0x3779ea(0x1fe)][_0x3779ea(0x1c8)](_0x3779ea(0x1ae))[_0x3779ea(0x1b6)](_0x3779ea(0x1ef)),_0x406588[_0x3779ea(0x1c8)](_0x3779ea(0x204))[_0x3779ea(0x206)](_0x3779ea(0x1ef));},_0x8b0d20=(_0x4fa6cf,_0x13308d,_0x48836d)=>_0x42870c(void 0x0,void 0x0,void 0x0,function*(){const _0x13cd0b=_0x5426ac;let _0x1f4468=_0x48836d['children'](_0x13cd0b(0x21d));_0x13308d['relativePath']['elements']||[];const _0xb87cf0=_0x13308d['nodeIds']||[];if(_0xb87cf0[_0x13cd0b(0x1bf)]===0x0)return;for(const _0x514ea5 of _0xb87cf0){_0x1f4468[_0x13cd0b(0x22b)]('expandable')&&(yield _0x5bf9fb(_0x4fa6cf,_0x1f4468));const _0x557f15=_0x55bc23(_0x514ea5,_0x1f4468);if(_0x557f15[_0x13cd0b(0x1bf)]===0x0)return;_0x1f4468=_0x557f15;}_0x438d02(_0x4fa6cf,_0x1f4468),_0x3f4b24(_0x4fa6cf[_0x13cd0b(0x2ab)],_0x1f4468);});function _0x3f4b24(_0x2afe55,_0x58d339){const _0x3b31a0=_0x5426ac,_0x51b476=_0x58d339[_0x3b31a0(0x2b3)]()[_0x3b31a0(0x1fb)],_0x59dc5e=_0x2afe55[_0x3b31a0(0x2a2)]();if(_0x59dc5e==undefined)return;const _0x320a03=_0x59dc5e+_0x51b476-_0x2afe55[_0x3b31a0(0x22f)]()/0x2+_0x58d339[_0x3b31a0(0x22f)]()/0x2;_0x2afe55['animate']({'scrollTop':_0x320a03},0x1f4);}const _0x2a8076=(_0x55aebc,_0x1751e0)=>_0x42870c(void 0x0,void 0x0,void 0x0,function*(){const _0x5bdc88=_0x5426ac,_0x1cbe2c=_0x55aebc[_0x5bdc88(0x20d)][_0x5bdc88(0x28c)](),_0x4e6b7d={'nodeId':_0x1cbe2c,'rootNodeId':_0x1751e0[_0x5bdc88(0x1cd)],'isType':_0x55aebc[_0x5bdc88(0x23a)][_0x5bdc88(0x1fa)]||![]},_0x5f48c6=_0xc0dc0(_0x55aebc),_0x33641b=yield _0x593b47(_0x5f48c6,_0x4e6b7d);if(!_0x33641b)return;yield _0x8b0d20(_0x55aebc,_0x33641b,_0x55aebc[_0x5bdc88(0x1fe)]);});function _0x51250d(_0x5314fc,_0x2ff805,_0x19a76b,_0x7329de){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x4c4bb8=_0x233a;if(_0x2ff805[_0x4c4bb8(0x22b)](_0x4c4bb8(0x29d))){console[_0x4c4bb8(0x1cf)](_0x4c4bb8(0x1d2));return;}if(_0x2ff805[_0x4c4bb8(0x22b)](_0x4c4bb8(0x1f9))){console[_0x4c4bb8(0x1cf)](_0x4c4bb8(0x1bb));return;}_0x2ff805[_0x4c4bb8(0x206)](_0x4c4bb8(0x1f9)),_0x2ff805[_0x4c4bb8(0x1ab)](_0x4c4bb8(0x209));try{_0x2ff805['children']('ul')[_0x4c4bb8(0x1bc)]();const {references:_0x261305}=yield _0x19a76b(_0x2ff805,_0x7329de);_0x261305[_0x4c4bb8(0x27d)]((_0x2fb2f4,_0x2ab103)=>{const _0x4664ce=_0x4c4bb8;var _0x17a4e0,_0x2c3eda;return(((_0x17a4e0=_0x2fb2f4[_0x4664ce(0x247)])===null||_0x17a4e0===void 0x0?void 0x0:_0x17a4e0[_0x4664ce(0x198)])||'')[_0x4664ce(0x25f)](((_0x2c3eda=_0x2ab103[_0x4664ce(0x247)])===null||_0x2c3eda===void 0x0?void 0x0:_0x2c3eda[_0x4664ce(0x198)])||'');});for(const _0x4f9a76 of _0x261305){if(_0x5314fc[_0x4c4bb8(0x23a)][_0x4c4bb8(0x29e)]&&!_0x5314fc[_0x4c4bb8(0x23a)][_0x4c4bb8(0x29e)](_0x4f9a76))continue;const _0x5666d8=_0x3eaa1e(_0x4f9a76);_0x2ff805['children']('ul')[_0x4c4bb8(0x1ab)](_0x5666d8);}_0x2ff805[_0x4c4bb8(0x206)]('fetched');}catch(_0x4b888f){_0x2ff805[_0x4c4bb8(0x28a)]('ul')[_0x4c4bb8(0x1ab)](_0x4c4bb8(0x277)+_0x4b888f[_0x4c4bb8(0x195)]+_0x4c4bb8(0x281)),console[_0x4c4bb8(0x1cf)](_0x4c4bb8(0x1b5),_0x4b888f);}_0x2ff805[_0x4c4bb8(0x1c8)](_0x4c4bb8(0x1cc))[_0x4c4bb8(0x1e2)](),_0x2ff805[_0x4c4bb8(0x1b6)](_0x4c4bb8(0x1f9));});}function _0xc0dc0(_0x5a9370){const _0x2f285f=_0x5426ac,_0x3c2e47={'baseUrl':_0x5a9370['options'][_0x2f285f(0x22e)],'endpointNode':typeof _0x5a9370[_0x2f285f(0x23a)][_0x2f285f(0x1e1)]==='function'?_0x5a9370[_0x2f285f(0x23a)][_0x2f285f(0x1e1)]():_0x5a9370[_0x2f285f(0x23a)][_0x2f285f(0x1e1)],'endpoint':typeof _0x5a9370['options']['endpoint']==='function'?_0x5a9370[_0x2f285f(0x23a)][_0x2f285f(0x2a8)]():_0x5a9370[_0x2f285f(0x23a)][_0x2f285f(0x2a8)]};return _0x3c2e47;}function _0x5bf9fb(_0x5d6131,_0x330e42){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0xb9870a=_0x233a;if(_0x330e42[_0xb9870a(0x22b)]('fetched')){_0x330e42['removeClass']('expandable')[_0xb9870a(0x206)](_0xb9870a(0x19b)),_0x330e42[_0xb9870a(0x28a)]('ul')['toggle']();return;}const _0x333f7b=_0xc0dc0(_0x5d6131),_0x5e47d4=!_0x5d6131[_0xb9870a(0x23a)][_0xb9870a(0x1fa)]?_0x427810:_0x71ace8;try{yield _0x51250d(_0x5d6131,_0x330e42,_0x5e47d4,_0x333f7b),_0x330e42[_0xb9870a(0x1b6)](_0xb9870a(0x233))['addClass'](_0xb9870a(0x19b));}catch(_0x107a9d){_0x330e42[_0xb9870a(0x1b6)]('expandable')['addClass'](_0xb9870a(0x19b)),console[_0xb9870a(0x1cf)](_0xb9870a(0x292),_0x107a9d);}});}const _0x1166fa={'browseName':{'namespaceIndex':0x0,'name':_0x5426ac(0x267)},'nodeClass':_0x5426ac(0x24a),'nodeId':'ns=0;i=85','displayName':{'text':_0x5426ac(0x267)},'typeDefinition':_0x315e3a},_0x34d07a=()=>{const _0x45f854=_0x5426ac;$['widget'](_0x45f854(0x2a4),{'options':{'endpointNode':()=>({'endpoint':_0x45f854(0x234)}),'endpoint':()=>undefined,'parentNode':()=>_0x1166fa,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x771699=_0x233a,_0x228c83=this;if(_0x228c83[_0x771699(0x2ae)]==undefined){const _0x1776ff=typeof _0x228c83[_0x771699(0x23a)][_0x771699(0x1e8)]==='function'?_0x228c83[_0x771699(0x23a)][_0x771699(0x1e8)][_0x771699(0x1c0)](_0x228c83):_0x228c83[_0x771699(0x23a)][_0x771699(0x1e8)];if(_0x1776ff instanceof Promise){const _0x2bc026=yield _0x1776ff;_0x228c83['__parentNode']=_0x2bc026;}else _0x228c83[_0x771699(0x2ae)]=_0x1776ff;}return _0x228c83['__parentNode']||_0x1166fa;});},'reset'(){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x3b5f15=_0x233a,_0x49f5b0=this,_0x10dbd6=_0x49f5b0;_0x10dbd6['__parentNode']=undefined,_0x49f5b0['$tree'][_0x3b5f15(0x1bc)]();const _0x5351cf=yield this[_0x3b5f15(0x283)](),_0x45b766=_0x3eaa1e(_0x5351cf);_0x49f5b0['$tree'][_0x3b5f15(0x1ab)](_0x45b766),_0x49f5b0[_0x3b5f15(0x28b)]=_0x5351cf;});},'verify'(_0x355a23){const _0x20ab24=_0x45f854,_0x51df11=this,_0x1e212d=_0xc0dc0(_0x51df11);_0x5f118b(_0x1e212d,_0x355a23,_0x51df11[_0x20ab24(0x20d)],_0x51df11[_0x20ab24(0x24e)])[_0x20ab24(0x1dc)](_0x1e2026=>{const _0x446feb=_0x20ab24;!_0x1e2026?_0x51df11[_0x446feb(0x200)][_0x446feb(0x206)](_0x446feb(0x1eb)):_0x51df11[_0x446feb(0x200)][_0x446feb(0x1b6)](_0x446feb(0x1eb));});},'_hideMenu'(_0x37cce3){const _0x42ab34=_0x45f854,_0x37c592=this;$(document)[_0x42ab34(0x25e)](_0x42ab34(0x220)),_0x37cce3[_0x42ab34(0x1a5)](),_0x37cce3['css']({'height':'auto'});if(_0x37cce3[_0x42ab34(0x2a7)][_0x42ab34(0x1e4)]){var _0x507dc9=[];_0x37cce3['find'](_0x42ab34(0x26c))[_0x42ab34(0x19c)](function(){const _0x21508e=_0x42ab34;$(this)['prop']('checked')&&_0x507dc9[_0x21508e(0x219)]($(this)['data'](_0x21508e(0x19a)));}),_0x37cce3[_0x42ab34(0x29f)](_0x507dc9);}_0x37c592[_0x42ab34(0x258)]['is'](':visible')?_0x37c592['$input'][_0x42ab34(0x26a)](_0x42ab34(0x29b)):_0x37c592['$selectTrigger'][_0x42ab34(0x26a)]('focus');},'_createMenu'(_0x13cc6c,_0x5c226c,_0x3f7286){const _0x30a248=_0x45f854;var _0x50016f=this;const _0x358985=$(_0x30a248(0x1f4))['addClass'](_0x30a248(0x1f2));return _0x358985[_0x30a248(0x2a7)]=_0x5c226c,_0x358985['callback']=_0x3f7286,_0x13cc6c[_0x30a248(0x1d0)](_0x36ff4c=>{const _0x50416e=_0x30a248;typeof _0x36ff4c==='string'&&(_0x36ff4c={'value':_0x36ff4c,'label':_0x36ff4c});var _0x56ec03=$(_0x50416e(0x28d))[_0x50416e(0x213)]('value',_0x36ff4c['value'])['appendTo'](_0x358985);_0x36ff4c[_0x50416e(0x2a0)]&&_0x56ec03[_0x50416e(0x1f5)](_0x36ff4c['label']);_0x36ff4c[_0x50416e(0x26f)]&&_0x56ec03[_0x50416e(0x2b0)](_0x50416e(0x26f),_0x36ff4c[_0x50416e(0x26f)]);if(_0x36ff4c[_0x50416e(0x1bd)]){if(_0x36ff4c[_0x50416e(0x1bd)][_0x50416e(0x1b0)]('<')===0x0)$(_0x36ff4c[_0x50416e(0x1bd)])[_0x50416e(0x273)](_0x56ec03);else _0x36ff4c[_0x50416e(0x1bd)][_0x50416e(0x1b0)]('/')!==-0x1?$(_0x50416e(0x207),{'class':_0x50416e(0x19d),'style':_0x50416e(0x232)+_0x36ff4c[_0x50416e(0x1bd)]+_0x50416e(0x215)+_0x36ff4c[_0x50416e(0x1bd)]+');'})[_0x50416e(0x273)](_0x56ec03):$(_0x50416e(0x207),{'class':_0x50416e(0x270)+_0x36ff4c['icon']})[_0x50416e(0x273)](_0x56ec03);}else _0x56ec03['css']({'paddingLeft':_0x50416e(0x212)});!_0x36ff4c[_0x50416e(0x1bd)]&&!_0x36ff4c[_0x50416e(0x2a0)]&&_0x56ec03[_0x50416e(0x1f5)](_0x36ff4c['value']);var _0x273f20;_0x5c226c['multiple']&&(_0x273f20=$(_0x50416e(0x23f))[_0x50416e(0x25b)](_0x50416e(0x214),'none')['data'](_0x50416e(0x19a),_0x36ff4c['value'])[_0x50416e(0x273)](_0x56ec03)['on'](_0x50416e(0x252),function(_0x303c92){const _0x42b97e=_0x50416e;_0x303c92[_0x42b97e(0x237)]();})),_0x56ec03['on'](_0x50416e(0x272),function(_0x558130){const _0x38b9ff=_0x50416e;_0x558130['preventDefault'](),_0x558130['stopPropagation'](),!_0x5c226c[_0x38b9ff(0x1e4)]?(_0x3f7286(_0x36ff4c[_0x38b9ff(0x19a)]),_0x50016f[_0x38b9ff(0x1ba)](_0x358985)):_0x273f20['prop']('checked',!_0x273f20[_0x38b9ff(0x2b0)]('checked'));});}),_0x358985['css']({'display':_0x30a248(0x1a8)}),_0x358985['on'](_0x30a248(0x274),function(_0x4a761e){const _0x57fa0b=_0x30a248;if(_0x4a761e['keyCode']===0x28)_0x4a761e[_0x57fa0b(0x237)](),$(this)[_0x57fa0b(0x28a)](_0x57fa0b(0x278))[_0x57fa0b(0x248)]()[_0x57fa0b(0x26a)](_0x57fa0b(0x29b));else{if(_0x4a761e[_0x57fa0b(0x276)]===0x26)_0x4a761e[_0x57fa0b(0x237)](),$(this)['children'](_0x57fa0b(0x278))[_0x57fa0b(0x23c)]()[_0x57fa0b(0x26a)](_0x57fa0b(0x29b));else _0x4a761e[_0x57fa0b(0x276)]===0x1b&&(_0x4a761e[_0x57fa0b(0x237)](),_0x50016f[_0x57fa0b(0x1ba)](_0x358985));}_0x4a761e[_0x57fa0b(0x20c)]();}),_0x358985;},'disarmClick':![],'_showMenu'(_0x2178f3,_0x3b2407){const _0x5e9065=_0x45f854;if(this['disarmClick']){this[_0x5e9065(0x210)]=![];return;}var _0x46b918=this,_0x14429a=_0x3b2407[_0x5e9065(0x29a)](),_0x38c904=_0x3b2407[_0x5e9065(0x22f)](),_0x399b99=_0x2178f3[_0x5e9065(0x22f)](),_0x1f3399=_0x38c904+_0x14429a[_0x5e9065(0x1fb)];_0x1f3399+_0x399b99-$(document)[_0x5e9065(0x2a2)]()>$(window)[_0x5e9065(0x22f)]()&&(_0x1f3399-=_0x1f3399+_0x399b99-$(window)[_0x5e9065(0x22f)]()+0x5),_0x1f3399<0x0&&(_0x2178f3['height'](_0x399b99+_0x1f3399),_0x1f3399=0x0),_0x2178f3['css']({'top':_0x1f3399+'px','left':_0x14429a['left']+'px'}),_0x2178f3[_0x5e9065(0x217)](0x64),this[_0x5e9065(0x231)](function(){const _0x31fa2a=_0x5e9065;_0x46b918[_0x31fa2a(0x225)]['addClass'](_0x31fa2a(0x240)),$(document)['on'](_0x31fa2a(0x220),function(_0x9b8c56){const _0x3e611e=_0x31fa2a;!$(_0x9b8c56[_0x3e611e(0x1e9)])[_0x3e611e(0x296)](_0x2178f3)[_0x3e611e(0x1bf)]&&_0x46b918[_0x3e611e(0x1ba)](_0x2178f3),$(_0x9b8c56[_0x3e611e(0x1e9)])[_0x3e611e(0x296)](_0x3b2407)[_0x3e611e(0x1bf)]&&(_0x46b918['disarmClick']=!![],_0x9b8c56[_0x3e611e(0x237)]());});});},'_showTypeMenu'(){const _0x482075=_0x45f854,_0x553b76=this;this[_0x482075(0x297)](_0x553b76[_0x482075(0x263)],_0x553b76['$combo']),_0x553b76[_0x482075(0x2ab)][_0x482075(0x1a5)]();const _0x134739=_0x553b76[_0x482075(0x2ac)];var _0x52f1ba=_0x553b76[_0x482075(0x263)]['find'](_0x482075(0x236)+_0x134739+'\x27');setTimeout(function(){const _0x5cc890=_0x482075;_0x52f1ba['trigger'](_0x5cc890(0x29b));},0x78);},'_initMenu'(){const _0x3fb5f3=_0x45f854,_0x283b6e=this;_0x283b6e['$selectTrigger']['attr'](_0x3fb5f3(0x27b),-0x1),_0x283b6e[_0x3fb5f3(0x275)]['on'](_0x3fb5f3(0x205),function(_0x5d9f54){_0x5d9f54['preventDefault']();});_0x283b6e['$menu']&&_0x283b6e[_0x3fb5f3(0x263)]['remove']();const _0x4e362d=[{'label':'text','value':'t','title':_0x3fb5f3(0x1ac),'icon':'<i\x20class=\x22fa\x20fa-font\x22/i>\x20'},{'label':'msg.','value':_0x3fb5f3(0x265),'title':_0x3fb5f3(0x1f6),'icon':'<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>'},{'label':'NodeId','value':'n','icon':'<i\x20class=\x22fa\x20fa-tag\x22/>1\x20 \x20'},{'label':_0x3fb5f3(0x280),'value':'na','icon':_0x3fb5f3(0x26e)},{'label':_0x3fb5f3(0x27f),'value':'nsu','icon':_0x3fb5f3(0x251)},{'label':'BrowsePath','value':'b','icon':'<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/> '},{'label':_0x3fb5f3(0x230),'value':'ab','icon':_0x3fb5f3(0x25a)}],_0x49dd8e=_0xf21eb8(_0x283b6e[_0x3fb5f3(0x20d)][_0x3fb5f3(0x28c)]()),_0x8f2a27=_0x4e362d[_0x3fb5f3(0x1c8)](_0x2fbab1=>_0x2fbab1[_0x3fb5f3(0x19a)]===_0x49dd8e);_0x283b6e[_0x3fb5f3(0x1fd)][_0x3fb5f3(0x1bc)]()[_0x3fb5f3(0x1ab)]('<span\x20title='+((_0x8f2a27===null||_0x8f2a27===void 0x0?void 0x0:_0x8f2a27[_0x3fb5f3(0x26f)])||'')+_0x3fb5f3(0x1d1)+((_0x8f2a27===null||_0x8f2a27===void 0x0?void 0x0:_0x8f2a27['icon'])||'')+_0x3fb5f3(0x1b4)),_0x283b6e['selectedMenuItem']=_0x49dd8e;const _0x25a610=this;_0x283b6e[_0x3fb5f3(0x263)]=this[_0x3fb5f3(0x255)](_0x4e362d,{},_0x5b240e=>{const _0x68332=_0x3fb5f3,_0x162b9c=_0x4e47f(_0x5b240e);_0x162b9c&&_0x25a610[_0x68332(0x1fc)](_0x162b9c);const _0x10dd47=_0x4e362d[_0x68332(0x1c8)](_0xfc10bb=>_0xfc10bb[_0x68332(0x19a)]===_0x5b240e);_0x283b6e[_0x68332(0x2ac)]=_0x5b240e,_0x283b6e['$selectLabel'][_0x68332(0x1bc)]()['append'](_0x68332(0x266)+((_0x10dd47===null||_0x10dd47===void 0x0?void 0x0:_0x10dd47[_0x68332(0x26f)])||'')+_0x68332(0x1d1)+((_0x10dd47===null||_0x10dd47===void 0x0?void 0x0:_0x10dd47[_0x68332(0x1bd)])||'')+_0x68332(0x1b4));}),_0x283b6e[_0x3fb5f3(0x263)][_0x3fb5f3(0x2b1)](document['body']),_0x283b6e[_0x3fb5f3(0x263)][_0x3fb5f3(0x1a5)](),_0x283b6e['$selectTrigger']['show']();},'mode'(){const _0x49b39b=_0x45f854,_0x62c16a=this;return _0x4e47f(_0x62c16a[_0x49b39b(0x2ac)]);},'setMode'(_0x5b6a15){const _0x4fbf73=_0x45f854,_0x42c93a=this,_0x345369=_0x39b8fa(_0x5b6a15);_0x42c93a[_0x4fbf73(0x2ac)]=_0x345369;},'_create'(){const _0x5d4d43=_0x45f854,_0x34441a=this;_0x34441a[_0x5d4d43(0x20d)]=this[_0x5d4d43(0x196)],_0x34441a['$input'][_0x5d4d43(0x25b)](_0x5d4d43(0x24f),_0x5d4d43(0x1a8)),_0x34441a[_0x5d4d43(0x258)]=_0x34441a[_0x5d4d43(0x20d)]['wrap'](_0x5d4d43(0x1f4))[_0x5d4d43(0x2a5)]()['addClass']('main-wrapper'),_0x34441a[_0x5d4d43(0x200)]=$(_0x5d4d43(0x242)),_0x34441a[_0x5d4d43(0x200)][_0x5d4d43(0x206)](_0x5d4d43(0x294)),_0x34441a['$input']['replaceWith'](_0x34441a[_0x5d4d43(0x200)]),_0x34441a['$inputGroup']=$(_0x5d4d43(0x242))['addClass'](_0x5d4d43(0x26d)),_0x34441a[_0x5d4d43(0x200)][_0x5d4d43(0x1ab)](_0x34441a[_0x5d4d43(0x23d)]),_0x34441a[_0x5d4d43(0x23d)][_0x5d4d43(0x1ab)](_0x34441a[_0x5d4d43(0x20d)]),_0x34441a[_0x5d4d43(0x1e7)]=$('<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x34441a[_0x5d4d43(0x20d)]['after'](_0x34441a[_0x5d4d43(0x1e7)]),_0x34441a[_0x5d4d43(0x1e7)]['on'](_0x5d4d43(0x272),function(){return _0x42870c(this,void 0x0,void 0x0,function*(){const _0x367797=_0x233a;var _0x37bf70;let _0x598a4f=![],_0x58699a;!_0x34441a[_0x367797(0x2ab)]['is'](_0x367797(0x2a1))&&(_0x34441a[_0x367797(0x24e)][_0x367797(0x1a5)](),_0x58699a=yield _0x34441a[_0x367797(0x283)](),(_0x58699a!==_0x34441a['currentParent']||((_0x37bf70=_0x34441a[_0x367797(0x28b)])===null||_0x37bf70===void 0x0?void 0x0:_0x37bf70[_0x367797(0x1cd)])!==_0x58699a[_0x367797(0x1cd)])&&(yield _0x34441a[_0x367797(0x1f8)]()),_0x598a4f=!![]),_0x34441a[_0x367797(0x2ab)][_0x367797(0x1c3)](),_0x598a4f&&(yield _0x2a8076(_0x34441a,_0x58699a));});}),_0x34441a['$verifyBtn']=$(_0x5d4d43(0x203)),_0x34441a[_0x5d4d43(0x20d)][_0x5d4d43(0x239)](_0x34441a[_0x5d4d43(0x260)]),_0x34441a[_0x5d4d43(0x260)]['on']('click',()=>{const _0xf19c8f=_0x5d4d43,_0x3b8963=_0x34441a[_0xf19c8f(0x26b)]();if(!_0x3b8963)return;this['verify'](_0x3b8963);});const _0x17e6ae=_0x26ee82=>_0x42870c(this,void 0x0,void 0x0,function*(){const _0x3e19f4=_0x5d4d43,_0x1c6c12=this;let _0x5c9b5a=_0x1c6c12[_0x3e19f4(0x26b)]();if(!_0x5c9b5a)return;const _0x4f6aad=_0xc0dc0(_0x1c6c12),{data:_0x3fa44b,json:_0x310f2c}=yield _0x588f14(_0x4f6aad,_0x26ee82);if(_0x3fa44b[_0x3e19f4(0x226)]!==0xc8)return;if(_0x310f2c['statusCode'][_0x3e19f4(0x1ec)](/Good/)){const _0x5ce183=_0x590aa5(_0x310f2c,_0x5c9b5a);_0x1c6c12['$input']['val'](_0x5ce183),_0x1c6c12['$input'][_0x3e19f4(0x26a)](_0x3e19f4(0x221));}});{_0x34441a[_0x5d4d43(0x225)]=$(_0x5d4d43(0x1f4)),_0x34441a['$input'][_0x5d4d43(0x22a)](_0x34441a[_0x5d4d43(0x225)]),_0x34441a['$selectTrigger']=$(_0x5d4d43(0x1d5))[_0x5d4d43(0x273)](_0x34441a[_0x5d4d43(0x225)]),$(_0x5d4d43(0x249))['toggle'](!![])[_0x5d4d43(0x2b1)](_0x34441a[_0x5d4d43(0x275)]),_0x34441a['$selectTrigger']['on']('click',function(_0xe7a581){const _0x2efd85=_0x5d4d43;_0xe7a581[_0x2efd85(0x237)](),_0xe7a581[_0x2efd85(0x20c)](),_0x34441a[_0x2efd85(0x1c9)]();}),_0x34441a[_0x5d4d43(0x275)]['on'](_0x5d4d43(0x274),function(_0x37b710){const _0xa53d42=_0x5d4d43;_0x37b710[_0xa53d42(0x276)]===0x28&&_0x34441a[_0xa53d42(0x1c9)](),_0x37b710['stopPropagation']();})['on'](_0x5d4d43(0x29b),function(){const _0xb43e3e=_0x5d4d43;_0x34441a[_0xb43e3e(0x225)][_0xb43e3e(0x206)](_0xb43e3e(0x240));})['on'](_0x5d4d43(0x228),function(){const _0x1bd680=_0x5d4d43;_0x34441a[_0x1bd680(0x225)][_0x1bd680(0x1b6)]('red-ui-typedInput-focus');}),_0x34441a[_0x5d4d43(0x1fd)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')[_0x5d4d43(0x2b1)](_0x34441a[_0x5d4d43(0x275)]);}this['_initMenu']();!_0x34441a[_0x5d4d43(0x20d)][_0x5d4d43(0x213)](_0x5d4d43(0x1ff))&&_0x34441a['$input']['attr'](_0x5d4d43(0x1ff),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x34441a[_0x5d4d43(0x24e)]=$(_0x5d4d43(0x289)),_0x34441a[_0x5d4d43(0x24e)][_0x5d4d43(0x1a5)](),_0x34441a['$combo'][_0x5d4d43(0x1ab)](_0x34441a[_0x5d4d43(0x24e)]),_0x34441a['$dropdown']=$(_0x5d4d43(0x242))[_0x5d4d43(0x206)](_0x5d4d43(0x254))[_0x5d4d43(0x1a5)]()[_0x5d4d43(0x2b1)](_0x34441a[_0x5d4d43(0x200)]),_0x34441a['$tree']=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x5d4d43(0x2b1)](_0x34441a[_0x5d4d43(0x2ab)]),this[_0x5d4d43(0x1f8)]();const _0x51b4f2=(_0x38f52e,_0x3b257a)=>{const _0xee4e8a=_0x5d4d43,_0x2967fd=0x14,_0x39883a=0x14,_0x1a34ca=_0x38f52e['offset'](),_0x4b8619=_0x3b257a;if(_0x4b8619['pageX']>=_0x1a34ca[_0xee4e8a(0x216)]&&_0x4b8619[_0xee4e8a(0x2b2)]<=_0x1a34ca['left']+_0x2967fd&&_0x4b8619['pageY']>=_0x1a34ca[_0xee4e8a(0x1fb)]&&_0x4b8619[_0xee4e8a(0x25c)]<=_0x1a34ca[_0xee4e8a(0x1fb)]+_0x39883a)return!![];return![];},_0x2cd71c=_0x20cd7a=>_0x42870c(this,void 0x0,void 0x0,function*(){const _0x14ff38=_0x5d4d43;if(_0x20cd7a[_0x14ff38(0x22b)](_0x14ff38(0x233)))_0x5bf9fb(_0x34441a,_0x20cd7a);else{if(_0x20cd7a[_0x14ff38(0x22b)](_0x14ff38(0x19b)))_0x20cd7a[_0x14ff38(0x28a)]('ul')[_0x14ff38(0x1c3)](),_0x20cd7a['toggleClass'](_0x14ff38(0x24d));else{if(_0x20cd7a[_0x14ff38(0x28a)]('ul')[_0x14ff38(0x28a)]()[_0x14ff38(0x1bf)]>0x0)_0x20cd7a[_0x14ff38(0x28a)]('ul')[_0x14ff38(0x1c3)](),_0x20cd7a[_0x14ff38(0x259)](_0x14ff38(0x24d));else;}}});_0x34441a[_0x5d4d43(0x1fe)]['on'](_0x5d4d43(0x262),'li',function(_0xdfd909){const _0x1dfb43=_0x5d4d43;var _0x168788,_0x2fd6a6;_0xdfd909[_0x1dfb43(0x20c)]();let _0x23fbe3=$(this);if(_0x51b4f2(_0x23fbe3,_0xdfd909))_0x2cd71c(_0x23fbe3);else{const _0x20a1bb=_0x23fbe3[_0x1dfb43(0x208)](_0x1dfb43(0x19a)),_0x3c2ee2=_0x23fbe3[_0x1dfb43(0x208)](_0x1dfb43(0x1b8));if(_0x34441a[_0x1dfb43(0x23a)][_0x1dfb43(0x1e5)]&&!_0x34441a['options'][_0x1dfb43(0x1e5)](_0x3c2ee2))return;_0x34441a[_0x1dfb43(0x20d)][_0x1dfb43(0x208)](_0x1dfb43(0x1b8),_0x3c2ee2),((_0x168788=_0x3c2ee2['displayName'])===null||_0x168788===void 0x0?void 0x0:_0x168788[_0x1dfb43(0x1f5)])||((_0x2fd6a6=_0x3c2ee2[_0x1dfb43(0x247)])===null||_0x2fd6a6===void 0x0?void 0x0:_0x2fd6a6['name'])||_0x3c2ee2['nodeId']['toString']();let _0x1c71e2=_0x34441a[_0x1dfb43(0x26b)]();!_0x1c71e2&&(_0x1c71e2='nodeId',_0x34441a[_0x1dfb43(0x256)](_0x1c71e2)),_0x17e6ae(_0x20a1bb)['then'](()=>{const _0x36b27d=_0x1dfb43;_0x34441a['$dropdown'][_0x36b27d(0x1a5)]();})[_0x1dfb43(0x1f3)](_0x40f41d=>{const _0x50da40=_0x1dfb43;_0x34441a['$dropdown'][_0x50da40(0x1a5)]();});}}),_0x34441a['$tree']['on']('click','li',function(_0x34c048){const _0x120e25=_0x5d4d43;_0x34c048[_0x120e25(0x20c)]();let _0x3779ec=$(this);_0x51b4f2(_0x3779ec,_0x34c048)&&_0x2cd71c(_0x3779ec),_0x438d02(_0x34441a,_0x3779ec);}),$(document)['on']('click',function(_0x31460c){const _0x117314=_0x5d4d43;!$(_0x31460c[_0x117314(0x1e9)])[_0x117314(0x296)](_0x34441a[_0x117314(0x200)])['length']&&_0x34441a[_0x117314(0x2ab)][_0x117314(0x1a5)]();});}});},_0x287591=()=>{const _0x5207d4=_0x5426ac,_0x2deb1c=$(_0x5207d4(0x1f1)),_0x2bfda6=_0x2deb1c['val'](),_0x3db56e=RED[_0x5207d4(0x291)]['node'](_0x2bfda6);if(!_0x3db56e)return undefined;const {endpoint:_0x304443,securityMode:_0x3371bf,securityPolicy:_0x165fd2,userIdentityType:_0x5b096b,credentials:_0x58ac8a,namespaceAliases:_0x35d552}=_0x3db56e,_0x45227e={'endpoint':_0x304443,'securityMode':_0x3371bf,'securityPolicy':_0x165fd2,'userIdentityType':_0x5b096b,'credentials':_0x58ac8a,'namespaceAliases':_0x35d552};return _0x45227e;},_0xa50ca5=()=>{const _0x192b3d=_0x5426ac,_0xb0f338=$('#node-input-endpoint'),_0x13868b=_0xb0f338['val'](),_0x317f56=_0x287591();if(!_0x317f56)return undefined;const _0x2c0ff9=_0x317f56[_0x192b3d(0x229)];return Object['assign']({'namespaceAliases':_0x2c0ff9,'id':_0x13868b},_0x317f56);},_0x2d0be4=()=>{return{'endpointNode':_0xa50ca5};},_0x1acc04=()=>{const _0x4fab42=_0x5426ac,_0x5e573e=$(_0x4fab42(0x218));console[_0x4fab42(0x1cf)](_0x4fab42(0x1a2),_0x5e573e[_0x4fab42(0x1bf)]);if(_0x5e573e[_0x4fab42(0x1bf)]){console[_0x4fab42(0x1cf)]('installing\x20iframe');const _0xf2d898=$(_0x4fab42(0x268),{'src':_0x4fab42(0x293),'scrolling':'no','style':_0x4fab42(0x1a6),'allowtransparency':_0x4fab42(0x20b),'width':_0x4fab42(0x2aa),'height':_0x4fab42(0x1d7)});_0x5e573e[_0x4fab42(0x1ab)](_0xf2d898),_0xf2d898[_0x4fab42(0x25b)]({'position':_0x4fab42(0x1ad),'right':_0x4fab42(0x1da),'bottom':_0x4fab42(0x1af)});}};RED[_0x5426ac(0x291)][_0x5426ac(0x243)](_0x5426ac(0x28f),{'category':_0x5426ac(0x1ce),'color':'#C0DEED','align':_0x5426ac(0x2a6),'icon':_0x5426ac(0x1c2),'paletteLabel':_0x5426ac(0x2b4),'defaults':{'inputs':{'value':0x1},'output':{'value':0x1},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x5426ac(0x269)},'dataType':{'value':'','required':!![]}},'inputs':0x1,'outputs':0x1,'label'(){const _0x5651d0=_0x5426ac;return this['name']||_0x5651d0(0x29c);},'labelStyle'(){const _0x50027c=_0x5426ac;return this[_0x50027c(0x198)]?_0x50027c(0x2a3):'';},'oneditprepare'(){const _0x5522b0=_0x5426ac,_0x5093e8=this;_0x34d07a(),_0x1acc04(),_0x5093e8['inputs']=0x1;const _0x330aee=$('#node-input-dataType'),_0x27180e={'nodeId':_0x5522b0(0x1c7),'referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':_0x5522b0(0x241)},'displayName':{'text':'Structure'},'nodeClass':_0x5522b0(0x27e),'typeDefinition':'i=0'};_0x330aee[_0x5522b0(0x264)](Object[_0x5522b0(0x1e6)](Object[_0x5522b0(0x1e6)]({},_0x2d0be4()),{'parentNode':()=>_0x27180e,'isSelectable'(_0x2896a9){const _0x9f0d6=_0x5522b0;return _0x2896a9['nodeClass']===_0x9f0d6(0x27e);},'isTypeRef':!![]}));},'oneditsave'(){}});}()));
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg0Mjg3MGMiLCJfMHg1NWQzODUiLCJfMHgyYmIyNzYiLCJfMHgxYTEwYzQiLCJfMHgyYTQ0ZjEiLCJfMHg1YTY0NGEiLCJfMHgzOGI1MTgiLCJfMHg1NjZjMDMiLCJQcm9taXNlIiwiXzB4MTRjODY1IiwiXzB4MWQ3MGVjIiwiXzB4MjkyMmRlIiwiXzB4NzUwOTk4IiwiXzB4MTBiOGIxIiwiXzB4MmIyMjg0IiwiXzB4MjI2OGE1IiwiXzB4NGU4NjcyIiwiXzB4MzU0YjFmIiwiXzB4MWNlMjZkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4ZDUyYWRkIiwiXzB4NGM1ODI0IiwiXzB4NDgyMTVmIiwiXzB4NGQzZDVkIiwiRXJyb3IiLCJfMHg1NmRiODIiLCJfMHgzMTVlM2EiLCJfMHgzNGRjOWMiLCJfMHhjODA1OWYiLCJfMHg1NjJkYzMiLCJfMHgyOTYzNWUiLCJfMHg1ODk5OGEiLCJfMHg1YThmZTMiLCJfMHg0YjA1NDIiLCJfMHgyMzEzYWIiLCJfMHgxN2VjMGYiLCJfMHgxOTI0NzciLCJfMHg1YWY3ODMiLCJfMHgyZGFlNjkiLCJfMHg0NjAxZGYiLCJfMHgzMTEzNzAiLCJfMHg0NWFkYzAiLCJfMHhjZjVmMzUiLCJfMHgyOTBlM2QiLCJfMHg0NTE0MWUiLCJfMHgyOTE3M2IiLCJfMHgxZGQ1MjUiLCJfMHg0ZGI2OTIiLCJlbmRwb2ludE5vZGUiLCJfMHgxNTlmZDMiLCJlbmRwb2ludCIsIl8weDEwMGYyNyIsImJhc2VVcmwiLCJfMHgzOGVmYjciLCJfMHgyOGRiZTIiLCJfMHgyOWRjM2UiLCJfMHgyMDk5YTciLCJfMHgyNTA3MzEiLCJfMHgyYTIyY2UiLCJPYmplY3QiLCJfMHg1MjFmYTMiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4M2NhM2NkIiwiXzB4MThiNWE0IiwiXzB4NTM3MWQxIiwiXzB4MzhkYmM3IiwiXzB4NTkzYjQ3IiwiXzB4ZDJhN2MiLCJfMHg1MmM4NTYiLCJfMHgxMGJkOTkiLCJfMHg1MzQ3OWQiLCJfMHg1MTA0MjEiLCJub2RlSWQiLCJfMHgyZmIyMWEiLCJyb290Tm9kZUlkIiwiXzB4ZTRlMDNkIiwiaXNUeXBlIiwiXzB4YTkwNjc1IiwiXzB4NTNlY2MzIiwiXzB4NDViNTJjIiwiXzB4NGY3ZTZkIiwiXzB4MTMwODY3IiwiXzB4NTkwYWE1IiwiXzB4NDU2ZDk5IiwiXzB4MzZhZjQxIiwiXzB4NDUzZDA4IiwiXzB4NGExZTA1IiwiXzB4NWEwMDI2IiwiXzB4MWE4ZGYzIiwiXzB4MTZiZTYwIiwiXzB4ZjIxZWI4IiwiXzB4NGY0M2E1IiwiXzB4NTE1ODE1IiwiXzB4NGU0N2YiLCJfMHg0YTFjNTAiLCJfMHg1YzkxYjQiLCJfMHgzOWI4ZmEiLCJfMHg1NjUwYjciLCJfMHg1ODhmMTQiLCJfMHgyNzA0ZmQiLCJfMHgzNTBhNGUiLCJfMHgyNWQxMDEiLCJfMHg0ZDZlZmQiLCJfMHgxYTQxNWYiLCJfMHg1NTMwNzAiLCJfMHgyZTBiZWUiLCJfMHg0ZDFhYzciLCJfMHg1OWIwNzMiLCJfMHgyZWNmYTEiLCJSRUQiLCJfMHg0YzQ1ZDEiLCJfMHhlZjk2NDEiLCJfMHg1ZWVmOTYiLCJfMHg1ZjExOGIiLCJfMHg0ODE1MzYiLCJfMHgxNDI0ZSIsIl8weDUzNDQ3NCIsIl8weDU1ZDlhNCIsIl8weDNkNzVlNSIsIl8weDMwMWU4MiIsIl8weDIxYzhlNSIsIl8weDNmMzk3NiIsIl8weDFjNTAwZiIsIl8weDU5YzIzNyIsIl8weGQ4YWFmMSIsImpzb24iLCJfMHg0MzZkMDQiLCJkYXRhIiwiXzB4Mzg1YTUzIiwiXzB4MjdmOTJlIiwiXzB4NDNlNzhhIiwiXzB4MzQ4MmY1Iiwic2V0VGltZW91dCIsIl8weDU0MWY5ZCIsIl8weDM5MTkyMCIsIl8weDQyNzgxMCIsIl8weDE5OTQ4OSIsIl8weDExODdmMSIsIl8weDRkYzc1MSIsIl8weDNjNWE2NSIsIl8weDQ0MGVhZCIsIl8weDJiZjllNSIsIl8weDcxYWNlOCIsIl8weDJlOWVhYyIsIl8weDQ2MmZmYyIsIl8weDFjODY3MCIsIl8weDQ1OWUwOSIsIl8weDNlYWExZSIsIl8weDQzYmVmMSIsIl8weDQ2ZGZhMSIsIl8weDEzMjE2NyIsIl8weGQ1OGYyMyIsIl8weDNmZGRjNiIsIl8weDMyNzU0NiIsIiQiLCJfMHhhOTYzZWQiLCJfMHg3NTJmYjciLCJpY29uIiwiXzB4NDQ1ZWE1IiwiY29sb3IiLCJfMHgzMDdjNTciLCJfMHgyYzQyMTEiLCJfMHg3YmY5ZjQiLCJfMHg1NWJjMjMiLCJfMHgzZmU2YjUiLCJfMHg1MDM2MzMiLCJfMHg0MzhkMDIiLCJfMHgxYTEwMjQiLCJfMHg0MDY1ODgiLCJfMHg4YjBkMjAiLCJfMHg0ZmE2Y2YiLCJfMHgxMzMwOGQiLCJfMHg0ODgzNmQiLCJfMHgxZjQ0NjgiLCJfMHhiODdjZjAiLCJfMHg1MTRlYTUiLCJfMHg1YmY5ZmIiLCJfMHg1NTdmMTUiLCJfMHgzZjRiMjQiLCJfMHgyYWZlNTUiLCJfMHg1OGQzMzkiLCJfMHg1MWI0NzYiLCJfMHg1OWRjNWUiLCJ1bmRlZmluZWQiLCJfMHgzMjBhMDMiLCJfMHgyYTgwNzYiLCJfMHg1NWFlYmMiLCJfMHgxNzUxZTAiLCJfMHgxY2JlMmMiLCJfMHg0ZTZiN2QiLCJfMHg1ZjQ4YzYiLCJfMHhjMGRjMCIsIl8weDMzNjQxYiIsIl8weDUxMjUwZCIsIl8weDUzMTRmYyIsIl8weDJmZjgwNSIsIl8weDE5YTc2YiIsIl8weDczMjlkZSIsInJlZmVyZW5jZXMiLCJfMHgyNjEzMDUiLCJfMHgyZmIyZjQiLCJfMHgyYWIxMDMiLCJfMHgxN2E0ZTAiLCJfMHgyYzNlZGEiLCJfMHg0ZjlhNzYiLCJfMHg1NjY2ZDgiLCJfMHg0Yjg4OGYiLCJfMHg1YTkzNzAiLCJfMHgzYzJlNDciLCJfMHg1ZDYxMzEiLCJfMHgzMzBlNDIiLCJfMHgzMzNmN2IiLCJfMHg1ZTQ3ZDQiLCJfMHgxMDdhOWQiLCJfMHgxMTY2ZmEiLCJfMHgzNGQwN2EiLCJfMHgyMjhjODMiLCJfMHgxNzc2ZmYiLCJfMHgyYmMwMjYiLCJfMHg0OWY1YjAiLCJfMHgxMGRiZDYiLCJfMHg1MzUxY2YiLCJfMHg0NWI3NjYiLCJfMHgzNTVhMjMiLCJfMHg1MWRmMTEiLCJfMHgxZTIxMmQiLCJfMHgxZTIwMjYiLCJfMHgzN2NjZTMiLCJfMHgzN2M1OTIiLCJkb2N1bWVudCIsIl8weDUwN2RjOSIsIl8weDEzY2M2YyIsIl8weDVjMjI2YyIsIl8weDNmNzI4NiIsIl8weDUwMDE2ZiIsIl8weDM1ODk4NSIsIl8weDM2ZmY0YyIsIl8weDU2ZWMwMyIsIl8weDI3M2YyMCIsIl8weDMwM2M5MiIsIl8weDU1ODEzMCIsIl8weDRhNzYxZSIsIl8weDIxNzhmMyIsIl8weDNiMjQwNyIsIl8weDQ2YjkxOCIsIl8weDE0NDI5YSIsIl8weDM4YzkwNCIsIl8weDM5OWI5OSIsIl8weDFmMzM5OSIsIndpbmRvdyIsIl8weDliOGM1NiIsIl8weDU1M2I3NiIsIl8weDEzNDczOSIsIl8weDUyZjFiYSIsIl8weDI4M2I2ZSIsIl8weDVkOWY1NCIsIl8weDRlMzYyZCIsIl8weDQ5ZGQ4ZSIsIl8weDhmMmEyNyIsIl8weDJmYmFiMSIsIl8weDI1YTYxMCIsIl8weDViMjQwZSIsIl8weDE2MmI5YyIsIl8weDEwZGQ0NyIsIl8weGZjMTBiYiIsIl8weDYyYzE2YSIsIl8weDViNmExNSIsIl8weDQyYzkzYSIsIl8weDM0NTM2OSIsIl8weDM0NDQxYSIsIl8weDM3YmY3MCIsIl8weDU5OGE0ZiIsIl8weDU4Njk5YSIsIl8weDNiODk2MyIsIl8weDE3ZTZhZSIsIl8weDI2ZWU4MiIsIl8weDFjNmMxMiIsIl8weDVjOWI1YSIsIl8weDRmNmFhZCIsIl8weDNmYTQ0YiIsIl8weDMxMGYyYyIsIl8weDVjZTE4MyIsIl8weGU3YTU4MSIsIl8weDM3YjcxMCIsIl8weDUxYjRmMiIsIl8weDM4ZjUyZSIsIl8weDNiMjU3YSIsIl8weDI5NjdmZCIsIl8weDM5ODgzYSIsIl8weDFhMzRjYSIsIl8weDRiODYxOSIsIl8weDJjZDcxYyIsIl8weDIwY2Q3YSIsIl8weGRmZDkwOSIsIl8weDE2ODc4OCIsIl8weDJmZDZhNiIsIl8weDIzZmJlMyIsIl8weDIwYTFiYiIsIl8weDNjMmVlMiIsIl8weDFjNzFlMiIsIl8weDQwZjQxZCIsIl8weDM0YzA0OCIsIl8weDM3NzllYyIsIl8weDMxNDYwYyIsIl8weDI4NzU5MSIsIl8weDJkZWIxYyIsIl8weDJiZmRhNiIsIl8weDNkYjU2ZSIsIl8weDMwNDQ0MyIsInNlY3VyaXR5TW9kZSIsIl8weDMzNzFiZiIsInNlY3VyaXR5UG9saWN5IiwiXzB4MTY1ZmQyIiwidXNlcklkZW50aXR5VHlwZSIsIl8weDViMDk2YiIsImNyZWRlbnRpYWxzIiwiXzB4NThhYzhhIiwibmFtZXNwYWNlQWxpYXNlcyIsIl8weDM1ZDU1MiIsIl8weDQ1MjI3ZSIsIl8weGE1MGNhNSIsIl8weGIwZjMzOCIsIl8weDEzODY4YiIsIl8weDMxN2Y1NiIsIl8weDJjMGZmOSIsIl8weDJkMGJlNCIsIl8weDFhY2MwNCIsIl8weDVlNTczZSIsIl8weGYyZDg5OCIsIl8weDUwOTNlOCIsIl8weDMzMGFlZSIsIl8weDI3MTgwZSIsIl8weDI4OTZhOSJdLCJtYXBwaW5ncyI6Im82S0FBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FBVixDQUFtQkMsU0FBbkIsQyx5QkFDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FD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QSxDQUFZaEwsQ0FBQSxDLHNCQUFBLENBQWxCLENBQ01pTCxTQUFBLENBQXFCLEMsUUFDdkIsQyxnQkFEdUIsQyxpQkFFdkIsQyxFQUZ1QixDLFlBR3ZCLENBQVksQyxnQkFBRSxDLEdBQUYsQyxNQUFxQixDLGdCQUFyQixDQUhXLEMsYUFJdkIsQ0FBYSxDLE1BQUUsQyxXQUFGLENBSlUsQyxXQUt2QixDLGdCQUx1QixDLGdCQU12QixDLEtBTnVCLENBRDNCLENBU0FELFNBQUEsQyxnQkFBQSxFQUFzQmpSLE1BQUEsQyxnQkFBQSxFQUFjQSxNQUFBLEMsZ0JBQUEsRUFBYyxFQUFkLENBQWtCNFEsU0FBQSxFQUFsQixDQUFkLENBQWlFLEMsWUFBRSxDQUFZLElBQU1NLFNBQXBCLEMsY0FBd0MsQ0FBYUMsU0FBYixDLGlDQUNoSEEsU0FBQSxDLFdBQUEsSSxpQkFEd0UsQyxXQUVoRixDLElBRmdGLENBQWpFLENBQXRCLEMsRUFwQ2dELEMsWUF3Q3BELEUsRUF4Q29ELENBQXhELEMsRUE5aUNKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNob29zZU5vZGVJZCA9IChkYXRhLCBtb2RlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXF1ZXN0ZWROb2RlSWQ7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9hbGlhc2VkIHx8IGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX2FsaWFzZWQgfHwgZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbWFrZVRvb2x0aXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGBzdGF0dXNDb2RlOiAke2RhdGEuc3RhdHVzQ29kZX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHN0ciA9IFtdO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGVJZDogJHtkYXRhLm5vZGVJZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBicm93c2UgcGF0aDogJHtkYXRhLmJwX2luZGV4ZWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZSBjbGFzczogJHtOb2RlQ2xhc3NbZGF0YS5ub2RlQ2xhc3NdfWApO1xuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX25zdSkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBuc3Ugbm9kZUlkOiAke2RhdGEubm9kZUlkX25zdX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9hbGlhc2VkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgTm9kZUlkOiAke2RhdGEubm9kZUlkX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5icF9pbmRleGVkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgYnJvd3NlUGF0aDogJHtkYXRhLmJwX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1vZGUoZW5oYW5jZWROb2RlSWQpIHtcbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnN1PS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14obnM9Lio7KT8oaXxifHN8Zyk9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zYT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKVswLTldKzovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKS4qOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGZpZ3VyZU91dE1vZGUoc3RyKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdG9Nb2RlKHYpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuc3VcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImFiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZEJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZnJvbU1vZGUobW9kZSkge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5hXCI7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnN1XCI7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImFiXCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcInRcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBfY2FsbENoZWNrTm9kZUlkID0gKF9hLCBub2RlSWRfMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBub2RlSWRfMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9jaGVja05vZGVJZGA7XG4gICAgICAgIGNvbnN0IGVJZCA9IGVuZHBvaW50Tm9kZS5pZDtcbiAgICAgICAgY29uc3QgbiA9IFJFRC5ub2Rlcy5ub2RlKGVJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG4ubmFtZXNwYWNlQWxpYXNlcyk7XG4gICAgICAgIG4ubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50Tm9kZS5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiB7IGpzb24sIGRhdGEgfTtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG1vZGUsICRpbnB1dEVsZW1lbnQsICRpbmZvKSB7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkTm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgeyBqc29uLCBkYXRhIH0gPSB5aWVsZCBfY2FsbENoZWNrTm9kZUlkKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBlbmhhbmNlZE5vZGVJZCk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIGVuaGFuY2VkTm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29sdGlwID0gbWFrZVRvb2x0aXAoanNvbik7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC5hdHRyKFwidGl0bGVcIiwgdG9vbHRpcCk7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtlbmhhbmNlZE5vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBzb3J0IHJlZmVyZW5jZSAgIGJ5IGJyb3dzZU5hbWVcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzLnNvcnQoKGEsIGIpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoKF9hID0gYS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgfHwgXCJcIikubG9jYWxlQ29tcGFyZSgoKF9iID0gYi5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgXCJcIik7IH0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFBhcmVudE5vZGUgPSB7XG4gICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiBkZWZhdWx0UGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fX3BhcmVudE5vZGUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlIHx8IGRlZmF1bHRQYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KG1vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIG1vZGUsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLnJlbW92ZUNsYXNzKFwic3RlcmZpdmUtaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaGlkZU1lbnUobWVudSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIik7XG4gICAgICAgICAgICAgICAgbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChtZW51Lm9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuZmluZCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKFwiY2hlY2tlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnB1c2goJCh0aGlzKS5kYXRhKFwidmFsdWVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayhzZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRlbGVtZW50RGl2LmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAvL3h4IH0gZWxzZSBpZiAodGhpcy4kb3B0aW9uU2VsZWN0VHJpZ2dlci5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8veHggICAgIHRoYXQuJG9wdGlvblNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGVNZW51KG1lbnVPcHRpb25zLCBvcHRzLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51ID0gJChcIjxkaXY+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtdHlwZWRJbnB1dC1vcHRpb25zIHN0ZXJmaXZlLW9ubGluZS1tZW51XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUub3B0cyA9IG9wdHM7XG4gICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIG1lbnVPcHRpb25zLmZvckVhY2goKG9wdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0ID0geyB2YWx1ZTogb3B0LCBsYWJlbDogb3B0IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gJCgnPGEgaHJlZj1cIiNcIj48L2E+JykuYXR0cihcInZhbHVlXCIsIG9wdC52YWx1ZSkuYXBwZW5kVG8obWVudSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5wcm9wKFwidGl0bGVcIiwgb3B0LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiPFwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQob3B0Lmljb24pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiL1wiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJtYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTsgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7IGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb24gXCIgKyBvcHQuaWNvbiB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AuY3NzKHsgcGFkZGluZ0xlZnQ6IFwiMThweFwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0Lmljb24gJiYgIW9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiID0gJCgnPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcyhcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKFwidmFsdWVcIiwgb3B0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVwZW5kVG8ob3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9wLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2IucHJvcChcImNoZWNrZWRcIiwgIWNiLnByb3AoXCJjaGVja2VkXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51Lm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRE9XTlxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5uZXh0KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVUFxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5wcmV2KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAyNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNDQVBFXG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhcm1DbGljazogZmFsc2UsXG4gICAgICAgICAgICBfc2hvd01lbnUobWVudSwgcmVsYXRpdmVUbykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FybUNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYXJtQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlbGF0aXZlVG8ub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlbGF0aXZlVG8uaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIG1lbnVIZWlnaHQgPSBtZW51LmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSBoZWlnaHQgKyBwb3MudG9wO1xuICAgICAgICAgICAgICAgIGlmICh0b3AgKyBtZW51SGVpZ2h0IC0gJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkgPiAkKHdpbmRvdykuaGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wIC09IHRvcCArIG1lbnVIZWlnaHQgLSAkKHdpbmRvdykuaGVpZ2h0KCkgKyA1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtZW51LmhlaWdodChtZW51SGVpZ2h0ICsgdG9wKTtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcCArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zLmxlZnQgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5zbGlkZURvd24oMTAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxheShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QobWVudSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChldmVudC50YXJnZXQpLmNsb3Nlc3QocmVsYXRpdmVUbykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5kaXNhcm1DbGljayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3Nob3dUeXBlTWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93TWVudSh0aGF0LiRtZW51LCB0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGF0LnNlbGVjdGVkTWVudUl0ZW07XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gdGhhdC4kbWVudS5maW5kKFwiW3ZhbHVlPSdcIiArIHR5cGUgKyBcIidcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9LCAxMjApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbml0TWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLmF0dHIoXCJ0YWJpbmRleFwiLCAtMSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1mb2N1cy1ibG9ja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRtZW51KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGZhLWlkLWNhcmRcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlTGlzdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJ0ZXh0XCIsIHZhbHVlOiBcInRcIiwgdGl0bGU6IFwiVmFsdWUgaXMgbm90IHZlcmlmaWVkXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWZvbnRcIi9pPiAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm1zZy5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIm1zZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwibm9kZSBpZCBvciAgYnJvd3NlIHBhdGggY29tZXMgZnJvbSBpbmplY3RlZCBtc2cgcGFyYW1ldGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZS1vcGVuLW9cIi8+JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWRcIiwgdmFsdWU6IFwiblwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+MSAmbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkFsaWFzZWQgTm9kZUlkXCIsIHZhbHVlOiBcIm5hXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkIHdpdGggbmFtZXNwYWNlIFVyblwiLCB2YWx1ZTogXCJuc3VcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtaWQtY2FyZFwiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkJyb3dzZVBhdGhcIiwgdmFsdWU6IFwiYlwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFsaWFzZWQgQnJvd3NlIFBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcImFiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZSh0aGF0LiRpbnB1dC52YWwoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IGEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gYTtcbiAgICAgICAgICAgICAgICBjb25zdCB0dCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudSA9IHRoaXMuX2NyZWF0ZU1lbnUodHlwZUxpc3QsIHt9LCAodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdG9Nb2RlKHYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gTWVudSBzZWxlY3RlZCAhXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IHYpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSB2O1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Nb2RlKHRoYXQuc2VsZWN0ZWRNZW51SXRlbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0TW9kZShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGZyb21Nb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5jc3MoXCJib3JkZXJcIiwgXCJub25lXCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXRcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kZWxlbWVudERpdiA9IHRoYXQuJGlucHV0LndyYXAoXCI8ZGl2PlwiKS5wYXJlbnQoKS5hZGRDbGFzcyhcIm1haW4td3JhcHBlclwiKTtcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIENvbWJvIGJyb3dzZXJcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1pbnB1dC13cmFwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gYWRkIGJ1dHRvbiBvbiB0aGUgcmlnaHQgc2lkZVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdG9nZ2xlVHJlZUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwib3BlbiBPUENVQSBBZGRyZXNzU3BhY2UgQnJvd3NlclwiPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyZWUgd2lkZ2V0IGlzIGdvaW5nIHRvIGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHlpZWxkIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAhPT0gdGhhdC5jdXJyZW50UGFyZW50IHx8ICgoX2EgPSB0aGF0LmN1cnJlbnRQYXJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWQpICE9PSBwYXJlbnROb2RlLm5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGF0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gJiYgKHlpZWxkIHJlYWNoU2VsZWN0aW9uKHRoYXQsIHBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdmVyaWZ5QnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cInZlcmlmeSBub2RlSWQgb3IgYnJvd3NlUGF0aFwiPjxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZUlucHV0ID0gKGlucHV0KSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25EYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwganNvbiB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZChjb25uZWN0aW9uRGF0YSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgcHJlcGVuZGVkIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QgPSAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmJlZm9yZSh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIgPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nKS5wcmVwZW5kVG8odGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICAkKCc8aSBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LWljb24gZmEgZmEtY2FyZXQtZG93blwiPjwvaT4nKS50b2dnbGUodHJ1ZSkuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiZm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImJsdXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIG9wdCA9IHRoYXQudHlwZU1hcFt0aGF0LnByb3BlcnR5VHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob3B0Lmhhc1ZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QucmVtb3ZlQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsID0gJCgnPHNwYW4gY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC10eXBlLWxhYmVsXCI+PC9zcGFuPicpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TWVudSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdGVtcG9yYXR5IGluZm8gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cInN0ZXJmaXZlLWluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBkcm9wIGRvd24gdHJlZVxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKS5hcHBlbmRUbyh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRkcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5zZXRNb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSW5wdXQodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBjb250YWluaW5nOlxuICAgICAqICAtIHRoZSBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSxcbiAgICAgKiAgLSB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAqICAtIGNyZWRlbnRpYWxzXG4gICAgICogIC0gbmFtZXNwYWNlQWxpYXNlc1xuICAgICAqXG4gICAgICogZXh0cmFjdGVkIGZyb20gdGhlIHVpIHdpZGdldCAjbm9kZS1pbnB1dC1lbmRwb2ludFxuICAgICAqL1xuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gUkVELihlbmRwb2ludElkKTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzYW5pdGl6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IHRoZSBub2RlLXJlZCBzdHVmZilcbiAgICAgICAgY29uc3QgeyBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSwgdXNlcklkZW50aXR5VHlwZSwgY3JlZGVudGlhbHMsIG5hbWVzcGFjZUFsaWFzZXMgfSA9IHJlZE5vZGU7XG4gICAgICAgIGNvbnN0IHJldFZhbHVlID0ge1xuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBzZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROci5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IG5hbWVzcGFjZUFsaWFzZXMsIGlkOiBlbmRwb2ludElkIH0sIGVuZHBvaW50TnIpO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBpbnN0YWxsRmVlZGJhY2tXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8vIHJldHVybjtcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgIGNvbnN0IHRyYXlDb250ZW50ID0gJChcIi5yZWQtdWktdHJheS1ib2R5XCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxGZWVkYmFja1dpZGdldCBcIiwgdHJheUNvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgaWYgKHRyYXlDb250ZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnN0YWxsaW5nIGlmcmFtZVwiKTtcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgaWZyYW1lIGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGlmcmFtZSA9ICQoXCI8aWZyYW1lPjwvaWZyYW1lPlwiLCB7XG4gICAgICAgICAgICAgICAgc3JjOiBcIi9vcGN1YS1mb3Itbm9kZS1yZWQvc3VwcG9ydC1mcmFtZS5odG1sXCIsXG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nOiBcIm5vXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IFwiYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjNweFwiLFxuICAgICAgICAgICAgICAgIGFsbG93dHJhbnNwYXJlbmN5OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxODBweFwiLFxuICAgICAgICAgICAgICAgIGhlaWdodDogXCIzMHB4XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgaWZyYW1lIHRvIHRoZSBmZWVkYmFjayBlbGVtZW50XG4gICAgICAgICAgICB0cmF5Q29udGVudC5hcHBlbmQoaWZyYW1lKTtcbiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHRoZSBmZWVkYmFjayBlbGVtZW50IGF0IHRoZSBib3R0b20gcmlnaHQgb2YgdGhlIHRyYXkgY29udGVudFxuICAgICAgICAgICAgaWZyYW1lLmNzcyh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICByaWdodDogXCIyMHB4XCIsXG4gICAgICAgICAgICAgICAgYm90dG9tOiBcIjE2cHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUV4dGVuc2lvbk9iamVjdFwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwiZXh0ZW5zaW9uIG9iamVjdFwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICBkYXRhVHlwZTogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5wdXRzOiAxLFxuICAgICAgICBvdXRwdXRzOiAxLFxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBDbGllbnQgRXh0ZW5zaW9uIE9iamVjdFwiO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IFwibm9kZV9sYWJlbF9pdGFsaWNcIiA6IFwiXCI7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHByZXBhcmUoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcztcbiAgICAgICAgICAgIGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCgpO1xuICAgICAgICAgICAgaW5zdGFsbEZlZWRiYWNrV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkZGF0YVR5cGUgPSAkKFwiI25vZGUtaW5wdXQtZGF0YVR5cGVcIik7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VzTm9kZURlc2MgPSB7XG4gICAgICAgICAgICAgICAgbm9kZUlkOiBcImk9MjJcIixcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJTdHJ1Y3R1cmVcIiB9LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiU3RydWN0dXJlXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiRGF0YVR5cGVcIixcbiAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogXCJpPTBcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAkZGF0YVR5cGUubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgICAgICAgICB9LCBpc1R5cGVSZWY6IHRydWUgfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-ExtensionObject">
|
11
11
|
<h3>OpcUa ExtensionObject</h3>
|
@@ -18,7 +18,7 @@ function _0x1acb(_0x3b5f03,_0x4886ad){const _0x86b727=_0x86b7();return _0x1acb=f
|
|
18
18
|
<input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334" />
|
19
19
|
</div>
|
20
20
|
<div class="form-row">
|
21
|
-
<label for="node-input-dataType"><i class="fa fa-tag"></i>DataType NodeId</label>
|
21
|
+
<label for="node-input-dataType" style="width: 100%"><i class="fa fa-tag"></i>DataType NodeId</label>
|
22
22
|
<input type="text" id="node-input-dataType" placeholder="ns=2;s=DataType or empty" />
|
23
23
|
</div>
|
24
24
|
|
@@ -27,5 +27,11 @@ function _0x1acb(_0x3b5f03,_0x4886ad){const _0x86b727=_0x86b7();return _0x1acb=f
|
|
27
27
|
<script type="text/markdown" data-help-name="OpcUa-Client2-ExtensionObject">
|
28
28
|
construct an extension object from a type definition
|
29
29
|
|
30
|
+
You can use this node to construct an extension object from a type definition.
|
31
|
+
|
32
|
+
The node will automatically fetch the type definition from the server and display the structure of the type definition in the output message
|
33
|
+
|
34
|
+
You can then inject the result of this node to a function nodes that upadte and modity the extension object content and then use it to inject a ExtensionOjbect to a write node or a method call node for instance.
|
35
|
+
|
30
36
|
</script>
|
31
37
|
//# sourceMappingURL=OpcUa-Client2-ExtensionObject.html.map
|