UNPKG

@opcua/for-node-red

Version:

The Node-RED node to communicate via OPC UA, powered NodeOPCUA and developed by Sterfive's team

302 lines (222 loc) 79.5 kB
<style> .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}.mask-flag-dropdown .option-item{border:1px solid #ccc;cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;padding:5px 10px;text-align:center;width:1em}.mask-flag-dropdown .option-item .checkbox{border:1px solid #ccc;content:"\f096";display:inline-block;height:20px;margin-right:5px;width:20px}.mask-flag-dropdown .option-item.selected .checkbox{content:"\f046"}.custom-select{background-color:#fff;border:1px solid #ccc;box-sizing:border-box;cursor:pointer;max-height:200px;overflow-y:auto;padding:5px;width:100%}.custom-select .custom-option{align-items:center;border-bottom:1px solid #eee;display:flex;padding:5px 10px}.custom-select .custom-option:last-child{border-bottom:none}.custom-select .custom-option .custom-checkbox{align-items:center;border:1px solid #ccc;display:flex;font-size:14px;height:20px;justify-content:center;margin-right:8px;width:20px}.custom-select .custom-option.selected .custom-checkbox{border-color:#007bff}.custom-select .custom-option .custom-checkbox:before{color:#007bff;content:"\f096";font-family:FontAwesome}.custom-select .custom-option.selected .custom-checkbox:before{content:"\f046"} /*# sourceMappingURL=OpcUa-Client2-Browse.css.map */ </style> <!-- HTML CONTENTS --> <script type="text/x-red" data-template-name="OpcUa-Client2-Browse"> <style> .my-checkbox-label { width: fit-content !important; cursor: pointer; user-select: none; } .my-checkbox-input { visibility: hidden; } .my-checkbox-mark { margin-left: 20px; font-family: "FontAwesome"; font-size: 24px; } .my-checkbox-input:checked ~ .my-checkbox-mark::before { content: "\f205"; /* fa-toggle-on */ } .my-checkbox-input:not(checked) ~ .my-checkbox-mark::before { content: "\f204"; /* fa-toggle-off */ } </style> <h3>Opc-UA Browse</h3> <div class="form-row"> <label for="node-input-name"><i class="icon-tasks"></i><span data-i18n="node-red:common.label.name"></span></label> <input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name" /> </div> <div class="form-row"> <label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label> <input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334" /> </div> <div class="form-row"> <label for="node-input-nodeId" style="width: 100%"> <i class="fa fa-tag"></i> &nbsp;<span>NodeId</span> </label> <input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" /> </div> <div class="form-row"> <label for="node-input-referenceTypeId" style="width: 100%"> <i class="fa fa-tag"></i> &nbsp;<span>ReferenceTypeId</span> </label> <input type="text" id="node-input-referenceTypeId" placeholder="ns=2;s=Variable1 or empty" /> </div> <div class="form-row"> <label class="my-checkbox-label" for="node-input-includeSubtypes"><i class="fa fa-play"></i>Include Subtypes </label> <label> <input type="checkbox" checked class="my-checkbox-input" id="node-input-includeSubtypes" /> <span class="my-checkbox-mark"></span> </label> </div> <div class="form-row"> <label for="node-input-browseDirection" style="width: 150px">Browse Direction</label> <select type="text" id="node-input-browseDirection" style="width: 150px"> <option selected value="Forward">Forward</option> <option value="Inverse">Inverse</option> <option value="Both">Both</option> </select> </div> <div class="form-row"> <label for="node-input-nodeClassMask" style="width: 100%"> <span>Node Class Mask</span> </label> <div> <input type="text" id="node-input-nodeClassMask" placeholder="Object | Variable" /> </div> </div> <div class="form-row"> <label for="node-input-resultMask" style="width: 100%"> <span>Result Mask</span> </label> <div> <input type="text" id="node-input-resultMask" placeholder="NodeClass | BrowseName |DisplayName" /> </div> </div> </script> <!-- MARKDOWN CONTENTS --> <script type="text/markdown" data-help-name="OpcUa-Client2-Browse"> ## Browse OPC UA Node Use this node to extract references. This node is equivalent to the [OPC UA Browse Service](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.2) and automatically handles continuations using [BrowseNext](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.3). ### Properties - **Name**: The name of this node. - **Endpoint**: The predefined endpoint of the OPC UA server to connect to. - **NodeId**: The OPC UA Node ID for which you want to explore the references. - **ReferenceTypeId**: The type of reference you want to follow, selected in the ReferenceType hierarchy. - **IncludeSubType**: A flag that indicates whether to strictly follow (when false) the reference type specified by ReferenceTypeId or also consider any subtype of the ReferenceTypeId (when true). - **BrowseDirection**: indicates whever to follow forward or backward references or both. - **Node Class Mask**: allows to filter which type of target node to consider based on NodeClass. Only target nodes with the selected NodeClasses are returned. - Object - Variable - Method - ObjectType - VariableType - ReferenceType - DataType - View - **Result Mask**: Specifies the fields in the ReferenceDescription structure that should be returned. - ReferenceType - IsForward - NodeClass - BrowseName - DisplayName - TypeDefinition - (NodeId is always provided) ## browse action you can either - Inject your OPC UA address (NodeId) by the `nodeId` or `topic` or `payload` property of an injected message or - use the nodeId attribute defined in the OpcUa-Read node itself ## Input The read operation is triggered when the node receive an input message. ### input message #### specifying the nodeId The nodeId to read can be specified in the following ways, in priority order: 1. :msg.payload.nodeId (string): 2. :msg.nodeId (string): the nodeId to read 3. :msg.topic (string): the nodeId to read or, if `msg.nodeId` is not defined: 4. :parameter.nodeId (string): the nodeId to read defined in the node configuration itself. #### specifying the reference type The reference type to follow can be specified in the following ways, in priority order: 1. :msg.payload.referenceTypeId (string): the reference type to follow 2. :msg.referenceTypeId (string): the reference type to follow or, if `msg.referenceTypeId` is not defined: 3. :parameter.referenceTypeId (string): the reference type to follow defined in the node configuration itself. #### specifying the browse direction The browse direction can be specified in the following ways, in priority order: 1. :msg.payload.browseDirection (string): the browse direction to follow 2. :msg.browseDirection (string): the browse direction to follow or, if `msg.browseDirection` is not defined: 3. :parameter.browseDirection (string): the browse direction to follow defined in the node configuration itself. Valid values for the browse direction are: - "Forward" or 0 (default): follow forward references - "Inverse" or 1: follow backward references - "Both" or 2s: follow both forward and backward references #### specifying the node class mask The node class mask can be specified in the following ways, in priority order: 1. :msg.payloadnodeClassMask (string): the node class mask to apply 2. :msg.nodeClassMask (string): the node class mask to apply or, if `msg.nodeClassMask` is not defined: 3. :parameter.nodeClassMask (string): the node class mask to apply defined in the node configuration itself. Valid values for the node class mask can be specified in two ways: 1. as a number: the node class mask is a bitmask, where each bit represents a node class. 2. as a string: the node class mask can be specified as a separated list of node classes. Valid values for the node class flags are: - "Object" or 1: Object - "Variable" or 2: Variable - "Method" or 4: Method - "ObjectType" or 8: ObjectType - "VariableType" or 16: VariableType - "ReferenceType" or 32: ReferenceType - "DataType" or 64: DataType - "View" or 128: View For instance: - to read only Object and Variable nodes, you can set the node class mask to `3` (1 + 2) or `"Object,Variable"`. - to read only Method nodes, you can set the node class mask to `4` or `"Method"`. - to read only ObjectType and VariableType nodes, you can set the node class mask to `24` (8 + 16) or `"ObjectType,VariableType"`. Note: the node class mask is a bitmask, so you can combine multiple node classes using the `+` operator or by specifying them as a comma-separated string. Note: when the node class mask is a string you can use `|` , `,` or `;` to separate the values. Note: a NodeClassMask of `0` means "all node classes", so it will return all nodes regardless of their class. #### specifying the result mask The result mask can be specified in the following ways, in priority order: 1. :msg.payload.resultMask (string): the result mask to apply 2. :msg.resultMask (string): the result mask to apply or, if `msg.resultMask` is not defined: 3. :parameter.resultMask (string): the result mask to apply defined in the node configuration itself. Valid values for the result mask can be specified in two ways: 1. as a number: the result mask is a bitmask, where each bit represents a field in the ReferenceDescription structure. 2. as a string: the result mask can be specified as a separated list of fields. Valid values for the result mask flags are: - "ReferenceType" or 1: ReferenceType - "IsForward" or 2: IsForward - "NodeClass" or 4: NodeClass - "BrowseName" or 8: BrowseName - "DisplayName" or 16: DisplayName - "TypeDefinition" or 32: TypeDefinition For instance: - to read only the ReferenceType and IsForward fields, you can set the result mask to `3` (1 + 2) or `"ReferenceType,IsForward"`. - to read only the NodeClass and BrowseName fields, you can set the result mask to `12` (4 + 8) or `"NodeClass,BrowseName" - to read all fields except TypeDefinition, you can set the result mask to `63` (1 + 2 + 4 + 8 + 16) or `"ReferenceType,IsForward,NodeClass,BrowseName,DisplayName"`. - to read all fields, you can set the result mask to `63` (1 + 2 + 4 + 8 + 16 + 32) or `"ReferenceType,IsForward,NodeClass,BrowseName,DisplayName,TypeDefinition"`. - Note: the NodeId is always provided in the output message, that's why it is not included in the result mask flags. ### Output Message **msg.payload**: the payload of the output message is an array of objects, each object containing the following properties: - **nodeId**: The NodeId of the target node. (always provided) - **browseName**: The BrowseName of the target node. (if `resultMask` includes `BrowseName`) - **displayName**: The DisplayName of the target node. (if `resultMask` includes `DisplayName`)) - **nodeClass**: The NodeClass of the target node as a String. (if `resultMask` includes `NodeClass`) - **referenceTypeId**: The NodeId of the reference type (if `resultMask` includes `ReferenceType`). - **isForward**: A boolean indicating whether the reference is forward (true) or backward (false). (if `resultMask` includes `IsForward`)) - **typeDefinition**: The TypeDefinition of the target node. (if `resultMask` includes `TypeDefinition`) for example, the output message payload could look like this: ```json [ { "nodeId": "ns=0;i=61", "browseName": "FolderType", "displayName": "FolderType", "nodeClass": "ObjectType", "isForward": true, "referenceTypeId": "ns=0;i=40(HasTypeDefinition)" } // etc... ] ``` ### Reference - Browse Service: https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.2 - Brosse Next Service: https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.3 </script> <!-- END OF CONTENTS --> <script type="text/javascript"> function _0x50bd(){const _0x1818d6=['insertAfter','callback','fetching\x20failed\x20with\x20error','underline','scrollTop','aliased\x20NodeId:\x20','$elementDiv','widget','mousedown.red-ui-typedInput-focus-block','15px','then','replaceChild','#C0DEED','namespaceAliases','background-color','pageY','fa-folder','bannerClass','currentParent','EXPIRED','5px\x2010px','red-ui-typedInput-icon','hasClass','Get\x20Support\x20&\x20Activate\x20License','first','toISOString','replaceWith','16px',',\x200.7)','height','join','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20banner\x20.','toggleClass','body','disarmClick','64px','reference','24UhTLaN','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','match','</strong>.\x20','8px','supportUrl','1140dFwbHn','\x22\x20style=\x22color:','FAILED','opts','inputs','Variable\x20|\x20Object\x20|\x20Method\x20|\x20ObjectType\x20|\x20VariableType','pointer','click','$input','<h2>','browse\x20path:\x20','Get\x20a\x20license\x20now','<a\x20href=\x22#\x22\x20target=\x22sterfive_opcua_nodered_doc\x22\x20title=\x22Click\x20to\x20visit\x20documentation\x22\x20style=\x22position:absolute;\x20top:10px;\x20right:10px;\x20z-index:1000;\x20color:#0066cc;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<i\x20class=\x22fa\x20fa-question-circle\x22\x20style=\x22font-size:18px;\x22></i>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</a>','bp_aliased','absolute','position','preventDefault','opcua','Inverse','<div\x20class=\x22custom-select\x22></div>','<p>','808947bwxIBf','warn','18px','push','keydown','input[type=\x22checkbox\x22]','attr','<span\x20class=\x22custom-checkbox\x22></span>','before','after','text','Your\x20trial\x20license\x20expires\x20in\x20<strong>','buttonText','VariableType','msg','</span><ul></ul></li>','ns=0;i=61','relativePath','permanent','statusText','expandable\x20expanded','data','json','loading','\x22]\x20is\x20not\x20set,\x20using\x20default\x20API\x20namespace','settings','selected','animate','nodeId','DisplayName','slice','32310SXteQF','browsePath','expiryDate','function','reset','location','IsForward','bannerCss','Unspecified','Method','replace','fa-cog','SteelBlue','wrap','nodeClass','sterfive-input-error','left','00000000-0000-0000-0000-000000000000','referenceTypeId','CadetBlue','sterfive.flagEditor','show','1px\x20solid\x20#f5c6cb','TypeDefinition','map','resolveParentNode','closest','messageHtml','Objects','TRIAL','statusCode:\x20','string','endsWith','<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20','10px\x2020px','#2196F3','1.6','100%','nodeId:\x20','append','i=31','_blank','verify','type','<div\x20class=\x22spinner\x22></div>','Upgrade','rgba(255,\x20255,\x20255,\x200.9)','placeholder','DarkOrange','fa-object-group','li\x20>\x20.tree-text','node_label_italic','$combo','stopPropagation','has-node-help-widget','500px','background-color\x200.2s','rgba(','View','setMode','change','#721c24','Variable','.spinner','border','15px\x2030px','offset','50%','NodeClass','width=1200,height=800','blur(20px)','DataType','Failed\x20to\x20check\x20licence\x20status:','slideDown','rgba(0,\x200,\x200,\x200.05)','#node-input-endpoint','<span>','blur(10px)',':focus','$selectTrigger','2px\x20solid\x20#ffc107','$uiSelect','ns=0;i=45','red-ui-typedInput-focus','fa-list-alt','<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>','elements','throw','Organizes','buttonCss','_showTypeMenu','fetched','failure','buttonHoverCss','sterfive-info','<a>','<img>','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','localeCompare','../../icons/opcuanodeLogo.png','err','element','prop','><i\x20class=\x22fa\x20','now','space-between','none','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','Aliased\x20NodeId','.licence-expiry-banner','180px','multiple','623630MTQTQX','empty','<div\x20class=\x22sterfive-info-text\x22></div>','apply','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','done','SandyBrown','nodes','OPCUA\x20Browse','licenceInfo','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','parentNode','toString','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','label','css','10px\x2015px','12px','\x22}><span\x20class=\x22tree-text\x22\x20title=','name','#fff3cd','browse','HasProperty','0\x202px\x208px\x20rgba(0,0,0,0.1)','</li>','#f8d7da','<input\x20type=\x22checkbox\x22>','aliasedNodeId','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','checked','options','150px','value','licence-continue-button','DodgerBlue','each','OpcUa-Client2-Browse','focus','#node-input-resultMask','opc.tcp://opcuademo.sterfive.com:26543','_delay','<iframe></iframe>','ns=0;i=35','<div/>','!!failure!!','.red-ui-tray-body','hide','NodeId','ObjectType','$inputGroup','tabindex','getTime','14285EGsAno','HasSubtype','fa-question','aliasedBrowsePath','SuppressedError','Both','opcua-for-node-red-fix-me','nodeId_aliased','messageCss','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','selectedMenuItem','sterfive-dropdown','opacity','httpNodeRoot\x20missing\x20trailing\x20slash','bold','getItem','bp_indexed','displayName','#333','assign','_showMenu','number','#856404','catch','#999','status','startsWith','33958ryQYuV','ns=0;i=85','#dc3545','#495057','pathname','isTypeRef','$dropdown','appendTo','Forward','filter','target','auto','column','transparent','next','rgba(61,\x2060,\x204,\x200.525)','children','nodeId_nsu','0\x2020px\x2050px\x20rgba(0,0,0,0.25)',':first','endpoint','application/json','500','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','endpointNode','24px','#c82333','addClass','#node-input-referenceTypeId','Your\x20trial\x20period\x20has\x20ended.\x20To\x20continue\x20using\x20this\x20node,\x20please\x20purchase\x20a\x20professional\x20license\x20or\x20contact\x20our\x20support\x20team\x20for\x20assistance.','10px','__parentNode','4750sTThXj','removeClass','$menu','$info','>&nbsp;\x20','flagEditor','$selectLabel','fa-text-width','13px','/browse','.red-ui-tray-content','icon','relative','removeEventListener','5px','opcua-for-nodered-last-overlay-shown','ns=0;i=47','<i>','pointer-events','updateValue','<li\x20key=\x22','message','translateY(-50%)','flex','requestedNodeId','indexOf','I\x20accept\x20to\x20switch\x20to\x20the\x20free\x20version\x20(limited\x20features)','/walk-backward','browseName','You\x20are\x20using\x20the\x20<strong>Free\x20Version</strong>\x20with\x20limited\x20functionality.\x20','dblclick','sterfive-input-group','OpcUa-Endpoint2','$tree','RED.settings[\x22','length','log',':visible','mode','20px','references','nsu','licence-activated','POST','HasTypeDefinition','white','trigger','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20overlay','top','$toggleTreeBtn','Unknown\x20Product','expanded','<span\x20title=','split','slideUp','1563388lhDNot','<button>','fadeIn','SeaGreen','_hideMenu','sterfive-combo-box','<ul\x20class=\x22sterfive-tree\x22></ul>','center','httpNodeRoot','right','30px','HasComponent','Could\x20not\x20find\x20dialog\x20content\x20to\x20show\x20licence\x20banner','trim','mousedown.red-ui-typedInput-close-property-select','sort','</span>','&times;','toggle','fa-sliders','backgroundColor','val','open','main-wrapper','licence-activation-overlay','expandable','background-color:transparent;overflow:hidden;border:3px','nsuNodeID','title','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','Unknown\x20bit\x20name','#555','docs/','40px','prepend','ReferenceType','find','fadeOut','1px\x20solid\x20#ced4da','14px',');\x20-webkit-mask-image:\x20url(','$verifyBtn','isSelectable','node\x20class:\x20','References','.custom-option','_createMenu','forEach','browseResult','\x20day','stringify','FREEWARE','remove','prependTo','1871144uxqOKA','opacity\x200.2s','node','.tree-text:first','ceil','ns=0;i=40','off','url','<unknown>','Invalid','\x20|\x20','Trial\x20License\x20Expired','ns=0;i=34','statusCode','NodeId\x20with\x20namespace\x20Urn','msg.','namesToBits','html','<div>','nodeBrowser','grey','li[key=\x22','keyCode','href','Aliased\x20Browse\x20Path','suppressed','50px','Your\x20<strong>Professional\x20License</strong>\x20has\x20expired.\x20Please\x20renew\x20your\x20license\x20to\x20ensure\x20continued\x20access\x20to\x20support\x20and\x20updates.','Good','HasChild','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','mouseenter','Renew\x20Now','error','</div>','mouseleave','Object','typeDefinition'];_0x50bd=function(){return _0x1818d6;};return _0x50bd();}function _0x4b00(_0xfc27a9,_0x16424b){_0xfc27a9=_0xfc27a9-0xf1;const _0x50bd81=_0x50bd();let _0x4b0018=_0x50bd81[_0xfc27a9];return _0x4b0018;}(function(_0x57864f,_0x2e1c12){const _0x484633=_0x4b00,_0x31a42e=_0x57864f();while(!![]){try{const _0x16b6c3=-parseInt(_0x484633(0x180))/0x1+-parseInt(_0x484633(0x1d7))/0x2+parseInt(_0x484633(0x273))/0x3+-parseInt(_0x484633(0x25e))/0x4*(parseInt(_0x484633(0x165))/0x5)+parseInt(_0x484633(0x258))/0x6*(parseInt(_0x484633(0x131))/0x7)+-parseInt(_0x484633(0x20d))/0x8+-parseInt(_0x484633(0x292))/0x9*(-parseInt(_0x484633(0x1a0))/0xa);if(_0x16b6c3===_0x2e1c12)break;else _0x31a42e['push'](_0x31a42e['shift']());}catch(_0x513183){_0x31a42e['push'](_0x31a42e['shift']());}}}(_0x50bd,0x7220d),(function(){'use strict';const _0x32ff6c=_0x4b00;function _0x1e71ff(_0x352803,_0x1cb11f,_0x4db9df,_0x4e5e5c){function _0x1e635c(_0x476444){return _0x476444 instanceof _0x4db9df?_0x476444:new _0x4db9df(function(_0x1b72bf){_0x1b72bf(_0x476444);});}return new(_0x4db9df||(_0x4db9df=Promise))(function(_0x1feaa8,_0x59aeae){const _0x478e07=_0x4b00;function _0x35fe7d(_0x5991b4){const _0x47a134=_0x4b00;try{_0x13a8df(_0x4e5e5c[_0x47a134(0x18e)](_0x5991b4));}catch(_0x307447){_0x59aeae(_0x307447);}}function _0x110a1b(_0x4bfa3c){const _0x514af6=_0x4b00;try{_0x13a8df(_0x4e5e5c[_0x514af6(0x118)](_0x4bfa3c));}catch(_0x16acd8){_0x59aeae(_0x16acd8);}}function _0x13a8df(_0x654b92){const _0x398128=_0x4b00;_0x654b92[_0x398128(0x136)]?_0x1feaa8(_0x654b92['value']):_0x1e635c(_0x654b92[_0x398128(0x151)])[_0x398128(0x23d)](_0x35fe7d,_0x110a1b);}_0x13a8df((_0x4e5e5c=_0x4e5e5c[_0x478e07(0x134)](_0x352803,_0x1cb11f||[]))['next']());});}typeof SuppressedError===_0x32ff6c(0x295)?SuppressedError:function(_0x415c07,_0x47f5f8,_0x4fba88){const _0x57a004=_0x32ff6c;var _0x2430fd=new Error(_0x4fba88);return _0x2430fd[_0x57a004(0x144)]=_0x57a004(0x169),_0x2430fd[_0x57a004(0x22e)]=_0x415c07,_0x2430fd[_0x57a004(0x226)]=_0x47f5f8,_0x2430fd;};const _0x30635c=_0x32ff6c(0x15b),_0x117da5=_0x32ff6c(0x283),_0x1bdf98=_0x32ff6c(0x1b0),_0x74784d='ns=0;i=46',_0x4ed721=_0x32ff6c(0x219),_0x590923=_0x32ff6c(0x113),_0x3c206c=_0x32ff6c(0x212);var _0x4984e1;(function(_0x3c4b24){const _0x3fcf3e=_0x32ff6c;_0x3c4b24[_0x3c4b24['Forward']=0x0]=_0x3fcf3e(0x188),_0x3c4b24[_0x3c4b24[_0x3fcf3e(0x270)]=0x1]=_0x3fcf3e(0x270),_0x3c4b24[_0x3c4b24['Both']=0x2]=_0x3fcf3e(0x16a),_0x3c4b24[_0x3c4b24[_0x3fcf3e(0x216)]=0x3]=_0x3fcf3e(0x216);}(_0x4984e1||(_0x4984e1={})));var _0x9a3c5b;(function(_0x5e63e0){const _0x5c0c8f=_0x32ff6c;_0x5e63e0[_0x5e63e0[_0x5c0c8f(0x29a)]=0x0]=_0x5c0c8f(0x29a),_0x5e63e0[_0x5e63e0['Object']=0x1]=_0x5c0c8f(0x231),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0xff)]=0x2]=_0x5c0c8f(0xff),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0x29b)]=0x4]=_0x5c0c8f(0x29b),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0x161)]=0x8]='ObjectType',_0x5e63e0[_0x5e63e0['VariableType']=0x10]=_0x5c0c8f(0x280),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0x1fa)]=0x20]=_0x5c0c8f(0x1fa),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0x108)]=0x40]=_0x5c0c8f(0x108),_0x5e63e0[_0x5e63e0[_0x5c0c8f(0xfb)]=0x80]='View';}(_0x9a3c5b||(_0x9a3c5b={})));var _0x3023bf;(function(_0x3faf30){const _0x279101=_0x32ff6c;_0x3faf30[_0x3faf30[_0x279101(0x231)]=0x1]=_0x279101(0x231),_0x3faf30[_0x3faf30['Variable']=0x2]='Variable',_0x3faf30[_0x3faf30['Method']=0x4]='Method',_0x3faf30[_0x3faf30[_0x279101(0x161)]=0x8]='ObjectType',_0x3faf30[_0x3faf30['VariableType']=0x10]=_0x279101(0x280),_0x3faf30[_0x3faf30[_0x279101(0x1fa)]=0x20]=_0x279101(0x1fa),_0x3faf30[_0x3faf30[_0x279101(0x108)]=0x40]=_0x279101(0x108),_0x3faf30[_0x3faf30['View']=0x80]='View';}(_0x3023bf||(_0x3023bf={})));function _0x1aaace(_0x40b419,_0x56b478){const _0x5e3ae6=_0x32ff6c;if(typeof _0x56b478==='number')return _0x56b478;const _0x3cf469=parseInt(_0x56b478,0xa);if(!isNaN(_0x3cf469))return _0x3cf469;const _0xbf69bb=_0x56b478[_0x5e3ae6(0x1d5)](/\||;|,/)[_0x5e3ae6(0x2aa)](_0x4eed17=>_0x4eed17[_0x5e3ae6(0x1e4)]());let _0x55b03b=0x0;for(const _0xc64e67 of _0xbf69bb){_0x55b03b|=_0x40b419[_0xc64e67];}return _0x55b03b;}function _0x47b9e2(_0x87a03c,_0x2aca93){const _0x1fdb82=_0x32ff6c;_0x2aca93=_0x1aaace(_0x87a03c,_0x2aca93);const _0x5b67f5=[];if(!_0x87a03c)return _0x5b67f5[_0x1fdb82(0x251)](_0x1fdb82(0x217));for(const [_0x1f7398,_0x43649e]of Object['entries'](_0x87a03c)){typeof _0x2aca93===_0x1fdb82(0x17a)&&((_0x2aca93&_0x43649e)===_0x43649e&&_0x5b67f5[_0x1fdb82(0x276)](_0x1f7398));}return _0x5b67f5[_0x1fdb82(0x251)](_0x1fdb82(0x217));}var _0x44e087;(function(_0x413b3a){const _0x10f67a=_0x32ff6c;_0x413b3a[_0x413b3a[_0x10f67a(0x1fa)]=0x1]=_0x10f67a(0x1fa),_0x413b3a[_0x413b3a[_0x10f67a(0x298)]=0x2]='IsForward',_0x413b3a[_0x413b3a[_0x10f67a(0x105)]=0x4]=_0x10f67a(0x105),_0x413b3a[_0x413b3a['BrowseName']=0x8]='BrowseName',_0x413b3a[_0x413b3a['DisplayName']=0x10]=_0x10f67a(0x290),_0x413b3a[_0x413b3a[_0x10f67a(0x2a9)]=0x20]=_0x10f67a(0x2a9);}(_0x44e087||(_0x44e087={})));function _0x4b24b9(_0x5b3f2a){const _0x5bdc97=_0x32ff6c;switch(_0x5b3f2a){case'Organizes':return _0x30635c;case _0x5bdc97(0x147):return _0x74784d;case _0x5bdc97(0x1e2):return _0x1bdf98;case _0x5bdc97(0x22a):return _0x4ed721;case _0x5bdc97(0x166):return _0x590923;case _0x5bdc97(0x1cc):return _0x3c206c;}}const _0x1a74d1=_0x5e8a5f=>{const _0x5c0ea8=_0x32ff6c;switch(_0x5e8a5f[_0x5c0ea8(0x2a0)]){case _0x5c0ea8(0x231):if(_0x5e8a5f[_0x5c0ea8(0x2a4)]===_0x30635c);if(_0x5e8a5f[_0x5c0ea8(0x232)]===_0x117da5||_0x5e8a5f[_0x5c0ea8(0x2a4)]==='i=61')return{'icon':_0x5c0ea8(0x243),'color':_0x5c0ea8(0x18f)};return{'icon':_0x5c0ea8(0xf2),'color':_0x5c0ea8(0x1da)};case _0x5c0ea8(0xff):if(_0x5e8a5f[_0x5c0ea8(0x2a4)]===_0x1bdf98)return{'icon':_0x5c0ea8(0x115),'color':_0x5c0ea8(0x29e)};else return _0x5e8a5f[_0x5c0ea8(0x2a4)]===_0x74784d?{'icon':'fa-list-alt','color':_0x5c0ea8(0x153)}:{'icon':_0x5c0ea8(0x115),'color':_0x5c0ea8(0x2a5)};case _0x5c0ea8(0x29b):return{'icon':_0x5c0ea8(0x29d),'color':_0x5c0ea8(0x137)};case _0x5c0ea8(0x161):return{'icon':_0x5c0ea8(0xf2),'color':_0x5c0ea8(0xf1)};case _0x5c0ea8(0x280):return{'icon':_0x5c0ea8(0x1ea),'color':_0x5c0ea8(0xf1)};case'DataType':return{'icon':_0x5c0ea8(0x1a7),'color':_0x5c0ea8(0x2a5)};}return{'icon':_0x5c0ea8(0x167),'color':_0x5c0ea8(0x221)};};function _0x421249(_0x52cef5){const _0x51b295=_0x32ff6c;!_0x52cef5[_0x51b295(0x17f)]('/')&&(_0x52cef5='/'+_0x52cef5);const _0x1dba61='opcUaEndpoint2Config';let _0x380050=RED[_0x51b295(0x28c)][_0x1dba61];!_0x380050&&(console[_0x51b295(0x274)](_0x51b295(0x1c2)+_0x1dba61+_0x51b295(0x28b)),_0x380050=_0x51b295(0x16b));!RED[_0x51b295(0x28c)][_0x51b295(0x1df)][_0x51b295(0x2b2)]('/')&&console[_0x51b295(0x1c4)](_0x51b295(0x172));const _0x35ef77=_0x550ce3(RED['settings'][_0x51b295(0x1df)]+_0x380050+_0x52cef5);return console[_0x51b295(0x1c4)]({'location':window[_0x51b295(0x297)][_0x51b295(0x184)],'apiPath':_0x52cef5,'API_NAMESPACE':_0x380050,'result':_0x35ef77}),_0x35ef77;}function _0x550ce3(_0x288376){const _0x4be6b8=_0x32ff6c;return _0x288376['startsWith']('/')?_0x288376[_0x4be6b8(0x291)](0x1):_0x288376;}const _0x51cd0a=(_0x2901f3,_0x1b1d5a,_0x3d72e4)=>_0x1e71ff(void 0x0,[_0x2901f3,_0x1b1d5a,_0x3d72e4],void 0x0,function*({endpointNode:_0x86200b,endpoint:_0x20fbf4},_0xe6f7d1,_0x41b5a3){const _0x395a39=_0x32ff6c,_0x50842e=Object[_0x395a39(0x178)](Object[_0x395a39(0x178)]({},_0x41b5a3),{'nodeId':_0xe6f7d1,'resultMask':0x3f}),_0x268f5e=_0x421249(_0x395a39(0x1a9)),_0x76a986=yield fetch(_0x268f5e,{'method':_0x395a39(0x1cb),'body':JSON['stringify']({'endpointNode':_0x86200b,'endpoint':_0x20fbf4,'browseDescription':_0x50842e}),'headers':{'Content-Type':_0x395a39(0x195)}});if(_0x76a986['status']!==0xc8)return console[_0x395a39(0x1c4)](_0x395a39(0x235),_0x76a986[_0x395a39(0x17e)],_0x76a986[_0x395a39(0x286)]),{'references':[]};const _0x4030b1=yield _0x76a986[_0x395a39(0x289)](),_0x3bc253=_0x4030b1[_0x395a39(0x207)][_0x395a39(0x1c8)]||[];return{'references':_0x3bc253};}),_0xe584a1={'referenceTypeId':_0x4b24b9(_0x32ff6c(0x22a)),'includeSubtypes':!![],'browseDirection':_0x4984e1[_0x32ff6c(0x188)],'nodeClassMask':_0x9a3c5b[_0x32ff6c(0xff)]|_0x9a3c5b[_0x32ff6c(0x231)]|_0x9a3c5b['Method'],'resultMask':0x3f},_0x205505={'referenceTypeId':_0x4b24b9(_0x32ff6c(0x119)),'includeSubtypes':!![],'browseDirection':_0x4984e1[_0x32ff6c(0x188)],'nodeClassMask':_0x9a3c5b[_0x32ff6c(0xff)]|_0x9a3c5b[_0x32ff6c(0x231)]|_0x9a3c5b[_0x32ff6c(0x29b)],'resultMask':0x3f},_0x2b045d=(_0x3a690f,_0x57e73e)=>_0x1e71ff(void 0x0,[_0x3a690f,_0x57e73e],void 0x0,function*({endpointNode:_0x496d99,endpoint:_0xac2415},{nodeId:_0x5abb87,rootNodeId:_0x35239f,isType:_0x4876b6}){const _0xd8bce4=_0x32ff6c,_0xf50a7a=_0x421249(_0xd8bce4(0x1bb)),_0x42865c=yield fetch(_0xf50a7a,{'method':'POST','body':JSON[_0xd8bce4(0x209)]({'endpointNode':_0x496d99,'endpoint':_0xac2415,'nodeId':_0x5abb87,'rootNodeId':_0x35239f,'isType':_0x4876b6}),'headers':{'Content-Type':_0xd8bce4(0x195)}});if(_0x42865c[_0xd8bce4(0x17e)]!==0xc8)return null;const _0x373a6f=yield _0x42865c[_0xd8bce4(0x289)]();return _0x373a6f[_0xd8bce4(0x293)];}),_0x15179f=(_0x4e49f1,_0x46621)=>{const _0xa5c02d=_0x32ff6c;if(_0x4e49f1[_0xa5c02d(0x21a)]!==_0xa5c02d(0x229))return _0x4e49f1[_0xa5c02d(0x1b8)];switch(_0x46621){case _0xa5c02d(0x293):return _0x4e49f1[_0xa5c02d(0x175)];case _0xa5c02d(0x168):return _0x4e49f1[_0xa5c02d(0x26b)]||_0x4e49f1[_0xa5c02d(0x175)];case _0xa5c02d(0x14c):return _0x4e49f1[_0xa5c02d(0x16c)]||_0x4e49f1[_0xa5c02d(0x191)];case _0xa5c02d(0x1f2):return _0x4e49f1[_0xa5c02d(0x191)];default:case _0xa5c02d(0x28f):return _0x4e49f1[_0xa5c02d(0x28f)];}},_0x1c74a1=_0x3a6d11=>{const _0x562e8c=_0x32ff6c;if(_0x3a6d11[_0x562e8c(0x21a)]!==_0x562e8c(0x229))return _0x562e8c(0x2b0)+_0x3a6d11[_0x562e8c(0x21a)];else{let _0x560aee=[];return _0x560aee[_0x562e8c(0x276)](_0x562e8c(0x2b8)+_0x3a6d11[_0x562e8c(0x28f)]),_0x560aee[_0x562e8c(0x276)](_0x562e8c(0x268)+_0x3a6d11[_0x562e8c(0x175)]),_0x560aee[_0x562e8c(0x276)](_0x562e8c(0x202)+_0x9a3c5b[_0x3a6d11[_0x562e8c(0x2a0)]]),_0x3a6d11['nodeId_nsu']&&_0x560aee[_0x562e8c(0x276)]('nsu\x20nodeId:\x20'+_0x3a6d11[_0x562e8c(0x191)]),_0x3a6d11[_0x562e8c(0x16c)]&&_0x560aee[_0x562e8c(0x276)](_0x562e8c(0x238)+_0x3a6d11['nodeId_aliased']),_0x3a6d11[_0x562e8c(0x175)]&&_0x560aee[_0x562e8c(0x276)]('aliased\x20browsePath:\x20'+_0x3a6d11[_0x562e8c(0x26b)]),_0x560aee[_0x562e8c(0x251)]('\x0a');}};function _0x9c57b3(_0xecacb4){const _0x15bd1b=_0x32ff6c;if(_0xecacb4[_0x15bd1b(0x25a)](/^nsu=/))return _0x15bd1b(0x1f2);if(_0xecacb4['match'](/^(ns=.*;)?(i|b|s|g)=/))return _0x15bd1b(0x28f);if(_0xecacb4[_0x15bd1b(0x25a)](/^nsa=/))return _0x15bd1b(0x14c);if(_0xecacb4[_0x15bd1b(0x25a)](/^(\/|\.)[0-9]+:/))return _0x15bd1b(0x293);if(_0xecacb4[_0x15bd1b(0x25a)](/^(\/|\.).*:/))return _0x15bd1b(0x293);}function _0x2ff618(_0x3c03f2){const _0x56b617=_0x32ff6c,_0x3ad622=_0x9c57b3(_0x3c03f2);switch(_0x3ad622){case'nodeId':return'n';case'aliasedNodeId':return'na';case _0x56b617(0x1f2):return'nsu';case _0x56b617(0x293):return'b';case _0x56b617(0x168):return'ab';default:return't';}}function _0x55b748(_0x5af7c1){const _0x35bf70=_0x32ff6c;let _0xc7ffee;switch(_0x5af7c1){case'n':_0xc7ffee=_0x35bf70(0x28f);break;case'na':_0xc7ffee=_0x35bf70(0x14c);break;case _0x35bf70(0x1c9):_0xc7ffee=_0x35bf70(0x1f2);break;case'b':_0xc7ffee='browsePath';break;case'ab':_0xc7ffee=_0x35bf70(0x168);break;}return _0xc7ffee;}function _0x4aa81d(_0x36d869){const _0x3a0da4=_0x32ff6c;switch(_0x36d869){case _0x3a0da4(0x28f):return'n';case _0x3a0da4(0x14c):return'na';case'nsuNodeID':return _0x3a0da4(0x1c9);case _0x3a0da4(0x293):return'b';case _0x3a0da4(0x168):return'ab';default:return't';}}const _0xfff8ca=(_0x472c52,_0x3dd87a)=>_0x1e71ff(void 0x0,[_0x472c52,_0x3dd87a],void 0x0,function*({endpointNode:_0x1b6148,endpoint:_0x43b612},_0x476668){const _0x3ad93a=_0x32ff6c,_0x5d0a90=_0x421249('/checkNodeId'),_0x3648f3=_0x1b6148['id'],_0x47cb07=RED[_0x3ad93a(0x138)][_0x3ad93a(0x20f)](_0x3648f3);console[_0x3ad93a(0x1c4)](_0x47cb07[_0x3ad93a(0x240)]),_0x47cb07[_0x3ad93a(0x240)];const _0x2b62ea=_0x1b6148[_0x3ad93a(0x240)],_0x5c4423=yield fetch(_0x5d0a90,{'method':_0x3ad93a(0x1cb),'body':JSON['stringify']({'endpointNode':_0x1b6148,'endpoint':_0x43b612,'nodeId':_0x476668,'namespaceAliases':_0x2b62ea}),'headers':{'Content-Type':'application/json'}}),_0x526950=yield _0x5c4423[_0x3ad93a(0x289)]();return{'json':_0x526950,'data':_0x5c4423};}),_0x3d1fc0=(_0x2b21e7,_0x185e86,_0x4b8840,_0x2a5bfe)=>_0x1e71ff(void 0x0,[_0x2b21e7,_0x185e86,_0x4b8840,_0x2a5bfe],void 0x0,function*({endpointNode:_0x277def,endpoint:_0x46c3b0},_0xcf320a,_0x2a39f5,_0x2a7e80){const _0x539710=_0x32ff6c,_0x942093=_0x2a39f5[_0x539710(0x1ec)](),{json:_0x381108,data:_0x527559}=yield _0xfff8ca({'endpointNode':_0x277def,'endpoint':_0x46c3b0},_0x942093),_0x3188f9=(_0x466eea,_0x14ea90)=>{const _0x132649=_0x539710;_0x2a7e80['text'](_0x466eea)[_0x132649(0x19b)](_0x132649(0x11f))[_0x132649(0x19b)](_0x14ea90),_0x2a7e80[_0x132649(0x2a7)](),setTimeout(()=>{const _0x23d619=_0x132649;_0x2a7e80[_0x23d619(0x1a1)](_0x14ea90),_0x2a7e80[_0x23d619(0x15f)]();},0xbb8);};if(_0x527559['status']!==0xc8)return _0x3188f9(_0x539710(0x15d)+_0x942093,'failure'),![];else{if(_0x381108[_0x539710(0x21a)][_0x539710(0x25a)](/Good/)){const _0x147aa0=_0x1c74a1(_0x381108);_0x2a39f5['attr']('title',_0x147aa0);const _0x3fd83a=_0x15179f(_0x381108,_0xcf320a);return _0x2a39f5['val'](_0x3fd83a),_0x2a39f5[_0x539710(0x1ce)](_0x539710(0xfd)),_0x3188f9('Good','ok'),!![];}else return _0x2a39f5[_0x539710(0x1ec)](''+_0x942093),_0x3188f9(_0x381108['statusCode']+'\x20'+_0x527559[_0x539710(0x286)],_0x539710(0x11d)),![];}});function _0x56ec18(_0x45b7fe,_0x4f41b2){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x4656ba=_0x4b00,_0x11b437=_0x45b7fe[_0x4656ba(0x288)]('value'),_0x1bbdd9=yield _0x51cd0a(_0x4f41b2,_0x11b437,_0xe584a1),_0x169318=yield _0x51cd0a(_0x4f41b2,_0x11b437,_0x205505);return{'references':[..._0x1bbdd9[_0x4656ba(0x1c8)],..._0x169318[_0x4656ba(0x1c8)]]};});}const _0x2a1831={'referenceTypeId':_0x4b24b9(_0x32ff6c(0x166)),'includeSubtypes':!![],'browseDirection':_0x4984e1[_0x32ff6c(0x188)],'nodeClassMask':_0x9a3c5b[_0x32ff6c(0x1fa)]|_0x9a3c5b[_0x32ff6c(0x161)]|_0x9a3c5b['DataType']|_0x9a3c5b[_0x32ff6c(0x280)],'resultMask':0x3f};function _0x5a4c8a(_0x2b00fd,_0x1016f5){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x3346bd=_0x4b00,_0x3a2162=_0x2b00fd['data'](_0x3346bd(0x151)),_0x33e715=yield _0x51cd0a(_0x1016f5,_0x3a2162,_0x2a1831);return _0x33e715;});}const _0x5643e3=_0x515d7f=>{const _0x1e105f=_0x32ff6c;var _0x3c8647,_0x906afd,_0x412d06,_0x3073a5;if(!_0x515d7f||!_0x515d7f[_0x1e105f(0x28f)]){const _0x4236e3=$(_0x1e105f(0x13b));return _0x4236e3;}const _0x325e83=_0x515d7f[_0x1e105f(0x28f)][_0x1e105f(0x13d)](),_0x475e5a=((_0x3c8647=_0x515d7f[_0x1e105f(0x176)])===null||_0x3c8647===void 0x0?void 0x0:_0x3c8647[_0x1e105f(0x27d)])||((_0x906afd=_0x515d7f[_0x1e105f(0x1bc)])===null||_0x906afd===void 0x0?void 0x0:_0x906afd[_0x1e105f(0x144)])||_0x515d7f['nodeId'][_0x1e105f(0x13d)](),{icon:_0x46b0d2,color:_0x39bb5f}=_0x1a74d1(_0x515d7f),_0x5591b3='('+_0x515d7f[_0x1e105f(0x28f)]['toString']()+')\x20'+(((_0x412d06=_0x515d7f[_0x1e105f(0x1bc)])===null||_0x412d06===void 0x0?void 0x0:_0x412d06[_0x1e105f(0x144)])||((_0x3073a5=_0x515d7f[_0x1e105f(0x176)])===null||_0x3073a5===void 0x0?void 0x0:_0x3073a5[_0x1e105f(0x27d)])||''),_0x4360af=$(_0x1e105f(0x1b4)+_0x515d7f[_0x1e105f(0x28f)][_0x1e105f(0x13d)]()+_0x1e105f(0x143)+_0x5591b3+_0x1e105f(0x128)+_0x46b0d2+_0x1e105f(0x25f)+_0x39bb5f+';\x22></i>\x20'+_0x475e5a+_0x1e105f(0x282));return _0x4360af[_0x1e105f(0x19b)](_0x1e105f(0x1f0)),_0x4360af[_0x1e105f(0x288)](_0x1e105f(0x151),_0x325e83),_0x4360af[_0x1e105f(0x288)](_0x1e105f(0x257),_0x515d7f),_0x4360af;},_0x2e474a=(_0xed4304,_0x2348ae)=>{const _0x204f10=_0x32ff6c;return _0x2348ae[_0x204f10(0x1fb)](_0x204f10(0x222)+_0xed4304+'\x22]');},_0x1733b3=(_0x2da7a7,_0x582a36)=>{const _0x1f8176=_0x32ff6c;_0x2da7a7[_0x1f8176(0x1c1)][_0x1f8176(0x1fb)](_0x1f8176(0xf3))[_0x1f8176(0x1a1)](_0x1f8176(0x28d)),_0x582a36[_0x1f8176(0x1fb)](_0x1f8176(0x210))[_0x1f8176(0x19b)](_0x1f8176(0x28d));},_0x58dc02=(_0x190e0d,_0x7ac9d5,_0x377f2e)=>_0x1e71ff(void 0x0,void 0x0,void 0x0,function*(){const _0x1ebf54=_0x32ff6c;let _0x14c43e=_0x377f2e['children'](_0x1ebf54(0x193));_0x7ac9d5[_0x1ebf54(0x284)][_0x1ebf54(0x117)]||[];const _0x529245=_0x7ac9d5['nodeIds']||[];if(_0x529245[_0x1ebf54(0x1c3)]===0x0)return;for(const _0x5d31fe of _0x529245){_0x14c43e[_0x1ebf54(0x249)](_0x1ebf54(0x1f0))&&(yield _0x5ae400(_0x190e0d,_0x14c43e));const _0x1cc6f0=_0x2e474a(_0x5d31fe,_0x14c43e);if(_0x1cc6f0[_0x1ebf54(0x1c3)]===0x0)return;_0x14c43e=_0x1cc6f0;}_0x1733b3(_0x190e0d,_0x14c43e),_0x528029(_0x190e0d[_0x1ebf54(0x186)],_0x14c43e);});function _0x528029(_0x57a78f,_0x22bafd){const _0xbe6527=_0x32ff6c,_0x4771ce=_0x22bafd[_0xbe6527(0x26d)]()['top'],_0x9871a9=_0x57a78f['scrollTop']();if(_0x9871a9==undefined)return;const _0x45f570=_0x9871a9+_0x4771ce-_0x57a78f[_0xbe6527(0x250)]()/0x2+_0x22bafd['height']()/0x2;_0x57a78f[_0xbe6527(0x28e)]({'scrollTop':_0x45f570},0x1f4);}const _0x24c6e4=(_0x48161c,_0xfe968f)=>_0x1e71ff(void 0x0,void 0x0,void 0x0,function*(){const _0x20b049=_0x32ff6c,_0x1c79e4=_0x48161c[_0x20b049(0x266)][_0x20b049(0x1ec)](),_0x282b41={'nodeId':_0x1c79e4,'rootNodeId':_0xfe968f['nodeId'],'isType':_0x48161c[_0x20b049(0x14f)]['isTypeRef']||![]},_0x4e788a=_0x5a09ca(_0x48161c),_0x3c208b=yield _0x2b045d(_0x4e788a,_0x282b41);if(!_0x3c208b)return;yield _0x58dc02(_0x48161c,_0x3c208b,_0x48161c['$tree']);});function _0x3a3a1f(_0x3519b6,_0x58a77a,_0x4522e2,_0x38268f){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x5787c0=_0x4b00;if(_0x58a77a[_0x5787c0(0x249)](_0x5787c0(0x11c))){console[_0x5787c0(0x1c4)]('already\x20fetched');return;}if(_0x58a77a[_0x5787c0(0x249)](_0x5787c0(0x28a))){console[_0x5787c0(0x1c4)]('already\x20loading');return;}_0x58a77a[_0x5787c0(0x19b)](_0x5787c0(0x28a)),_0x58a77a[_0x5787c0(0x2b9)](_0x5787c0(0x2be));try{_0x58a77a[_0x5787c0(0x190)]('ul')['empty']();const {references:_0x114b25}=yield _0x4522e2(_0x58a77a,_0x38268f);_0x114b25[_0x5787c0(0x1e6)]((_0x140872,_0xfc73c6)=>{const _0x5dd2f0=_0x5787c0;var _0x29e548,_0x49c0a1;return(((_0x29e548=_0x140872[_0x5dd2f0(0x1bc)])===null||_0x29e548===void 0x0?void 0x0:_0x29e548[_0x5dd2f0(0x144)])||'')[_0x5dd2f0(0x123)](((_0x49c0a1=_0xfc73c6[_0x5dd2f0(0x1bc)])===null||_0x49c0a1===void 0x0?void 0x0:_0x49c0a1[_0x5dd2f0(0x144)])||'');});for(const _0x3ec391 of _0x114b25){if(_0x3519b6[_0x5787c0(0x14f)][_0x5787c0(0x189)]&&!_0x3519b6[_0x5787c0(0x14f)]['filter'](_0x3ec391))continue;const _0x446f23=_0x5643e3(_0x3ec391);_0x58a77a[_0x5787c0(0x190)]('ul')['append'](_0x446f23);}_0x58a77a['addClass'](_0x5787c0(0x11c));}catch(_0xc5ebea){_0x58a77a['children']('ul')['append']('<li>error\x20'+_0xc5ebea[_0x5787c0(0x1b5)]+_0x5787c0(0x149)),console[_0x5787c0(0x1c4)](_0x5787c0(0x125),_0xc5ebea);}_0x58a77a['find'](_0x5787c0(0x100))[_0x5787c0(0x20b)](),_0x58a77a[_0x5787c0(0x1a1)](_0x5787c0(0x28a));});}function _0x5a09ca(_0x1292ef){const _0xaad4f=_0x32ff6c,_0x4809f3={'endpointNode':typeof _0x1292ef[_0xaad4f(0x14f)][_0xaad4f(0x198)]===_0xaad4f(0x295)?_0x1292ef[_0xaad4f(0x14f)][_0xaad4f(0x198)]():_0x1292ef['options'][_0xaad4f(0x198)],'endpoint':typeof _0x1292ef[_0xaad4f(0x14f)][_0xaad4f(0x194)]===_0xaad4f(0x295)?_0x1292ef[_0xaad4f(0x14f)][_0xaad4f(0x194)]():_0x1292ef[_0xaad4f(0x14f)][_0xaad4f(0x194)]};return _0x4809f3;}function _0x5ae400(_0x4071b2,_0x2f8830){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x17ce45=_0x4b00;if(_0x2f8830[_0x17ce45(0x249)](_0x17ce45(0x11c))){_0x2f8830[_0x17ce45(0x1a1)](_0x17ce45(0x1f0))['addClass'](_0x17ce45(0x1d3)),_0x2f8830[_0x17ce45(0x190)]('ul')[_0x17ce45(0x1e9)]();return;}const _0x3aa017=_0x5a09ca(_0x4071b2),_0x4d52f8=!_0x4071b2[_0x17ce45(0x14f)][_0x17ce45(0x185)]?_0x56ec18:_0x5a4c8a;try{yield _0x3a3a1f(_0x4071b2,_0x2f8830,_0x4d52f8,_0x3aa017),_0x2f8830['removeClass'](_0x17ce45(0x1f0))['addClass'](_0x17ce45(0x1d3));}catch(_0xaa22c5){_0x2f8830[_0x17ce45(0x1a1)](_0x17ce45(0x1f0))[_0x17ce45(0x19b)](_0x17ce45(0x1d3)),console[_0x17ce45(0x1c4)](_0x17ce45(0x22e),_0xaa22c5);}});}const _0x3ba332={'browseName':{'namespaceIndex':0x0,'name':_0x32ff6c(0x2ae)},'nodeClass':_0x32ff6c(0x231),'nodeId':_0x32ff6c(0x181),'displayName':{'text':_0x32ff6c(0x2ae)},'typeDefinition':_0x117da5},_0x19edba=()=>{const _0x508e3c=_0x32ff6c;$[_0x508e3c(0x23a)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x508e3c(0x158)}),'endpoint':()=>undefined,'parentNode':()=>_0x3ba332,'filter':()=>!![],'isTypeRef':![]},'resolveParentNode'(){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x2aae45=_0x4b00,_0x25986a=this;if(_0x25986a[_0x2aae45(0x19f)]==undefined){const _0x5e0c40=typeof _0x25986a['options']['parentNode']===_0x2aae45(0x295)?_0x25986a[_0x2aae45(0x14f)][_0x2aae45(0x13c)]['call'](_0x25986a):_0x25986a[_0x2aae45(0x14f)][_0x2aae45(0x13c)];if(_0x5e0c40 instanceof Promise){const _0x566a5c=yield _0x5e0c40;_0x25986a[_0x2aae45(0x19f)]=_0x566a5c;}else _0x25986a[_0x2aae45(0x19f)]=_0x5e0c40;}return _0x25986a[_0x2aae45(0x19f)]||_0x3ba332;});},'reset'(){return _0x1e71ff(this,void 0x0,void 0x0,function*(){const _0x2c6d81=_0x4b00,_0xfcfec5=this,_0x498207=_0xfcfec5;_0x498207['__parentNode']=undefined,_0xfcfec5[_0x2c6d81(0x1c1)][_0x2c6d81(0x132)]();const _0x32e051=yield this[_0x2c6d81(0x2ab)](),_0x288ab9=_0x5643e3(_0x32e051);_0xfcfec5['$tree'][_0x2c6d81(0x2b9)](_0x288ab9),_0xfcfec5[_0x2c6d81(0x245)]=_0x32e051;});},'verify'(_0xe56f2a){const _0x416a28=_0x508e3c,_0x17a7cc=this,_0x2b9c12=_0x5a09ca(_0x17a7cc);_0x3d1fc0(_0x2b9c12,_0xe56f2a,_0x17a7cc[_0x416a28(0x266)],_0x17a7cc[_0x416a28(0x1a3)])[_0x416a28(0x23d)](_0x516da6=>{const _0x5425d1=_0x416a28;!_0x516da6?_0x17a7cc[_0x5425d1(0xf5)]['addClass'](_0x5425d1(0x2a1)):_0x17a7cc[_0x5425d1(0xf5)][_0x5425d1(0x1a1)](_0x5425d1(0x2a1));});},'_hideMenu'(_0x18a9c5){const _0x5615e3=_0x508e3c,_0x1de687=this;$(document)[_0x5615e3(0x213)]('mousedown.red-ui-typedInput-close-property-select'),_0x18a9c5[_0x5615e3(0x15f)](),_0x18a9c5[_0x5615e3(0x140)]({'height':_0x5615e3(0x18b)});if(_0x18a9c5[_0x5615e3(0x261)][_0x5615e3(0x130)]){var _0x24f58b=[];_0x18a9c5[_0x5615e3(0x1fb)](_0x5615e3(0x278))[_0x5615e3(0x154)](function(){const _0x5b3f3d=_0x5615e3;$(this)[_0x5b3f3d(0x127)](_0x5b3f3d(0x14e))&&_0x24f58b['push']($(this)[_0x5b3f3d(0x288)](_0x5b3f3d(0x151)));}),_0x18a9c5[_0x5615e3(0x234)](_0x24f58b);}_0x1de687['$elementDiv']['is'](_0x5615e3(0x1c5))?_0x1de687[_0x5615e3(0x266)][_0x5615e3(0x1ce)](_0x5615e3(0x156)):_0x1de687[_0x5615e3(0x110)]['trigger'](_0x5615e3(0x156));},'_createMenu'(_0x373356,_0x4513d3,_0x49a117){const _0x186124=_0x508e3c;var _0x55f684=this;const _0x3f97d8=$(_0x186124(0x21f))[_0x186124(0x19b)]('sterfive-typedInput-options\x20sterfive-online-menu');return _0x3f97d8['opts']=_0x4513d3,_0x3f97d8[_0x186124(0x234)]=_0x49a117,_0x373356[_0x186124(0x206)](_0x8fa964=>{const _0x368422=_0x186124;typeof _0x8fa964===_0x368422(0x2b1)&&(_0x8fa964={'value':_0x8fa964,'label':_0x8fa964});var _0x36d522=$('<a\x20href=\x22#\x22></a>')[_0x368422(0x279)](_0x368422(0x151),_0x8fa964[_0x368422(0x151)])['appendTo'](_0x3f97d8);_0x8fa964[_0x368422(0x13f)]&&_0x36d522[_0x368422(0x27d)](_0x8fa964[_0x368422(0x13f)]);_0x8fa964[_0x368422(0x1f3)]&&_0x36d522[_0x368422(0x127)](_0x368422(0x1f3),_0x8fa964[_0x368422(0x1f3)]);if(_0x8fa964['icon']){if(_0x8fa964[_0x368422(0x1ab)]['indexOf']('<')===0x0)$(_0x8fa964[_0x368422(0x1ab)])[_0x368422(0x20c)](_0x36d522);else _0x8fa964[_0x368422(0x1ab)][_0x368422(0x1b9)]('/')!==-0x1?$('<i>',{'class':_0x368422(0x248),'style':'mask-image:\x20url('+_0x8fa964[_0x368422(0x1ab)]+_0x368422(0x1ff)+_0x8fa964[_0x368422(0x1ab)]+');'})[_0x368422(0x20c)](_0x36d522):$(_0x368422(0x1b1),{'class':'red-ui-typedInput-icon\x20'+_0x8fa964['icon']})[_0x368422(0x20c)](_0x36d522);}else _0x36d522['css']({'paddingLeft':_0x368422(0x275)});!_0x8fa964[_0x368422(0x1ab)]&&!_0x8fa964[_0x368422(0x13f)]&&_0x36d522[_0x368422(0x27d)](_0x8fa964[_0x368422(0x151)]);var _0x13489e;_0x4513d3[_0x368422(0x130)]&&(_0x13489e=$(_0x368422(0x14b))[_0x368422(0x140)](_0x368422(0x1b2),_0x368422(0x12b))[_0x368422(0x288)]('value',_0x8fa964['value'])[_0x368422(0x20c)](_0x36d522)['on']('mousedown',function(_0x5507e2){const _0x4ae4ce=_0x368422;_0x5507e2[_0x4ae4ce(0x26e)]();})),_0x36d522['on'](_0x368422(0x265),function(_0x102342){const _0x539f5d=_0x368422;_0x102342['preventDefault'](),_0x102342[_0x539f5d(0xf6)](),!_0x4513d3[_0x539f5d(0x130)]?(_0x49a117(_0x8fa964[_0x539f5d(0x151)]),_0x55f684[_0x539f5d(0x1db)](_0x3f97d8)):_0x13489e[_0x539f5d(0x127)](_0x539f5d(0x14e),!_0x13489e[_0x539f5d(0x127)](_0x539f5d(0x14e)));});}),_0x3f97d8['css']({'display':_0x186124(0x12b)}),_0x3f97d8['on'](_0x186124(0x277),function(_0x22eb1f){const _0x343501=_0x186124;if(_0x22eb1f[_0x343501(0x223)]===0x28)_0x22eb1f['preventDefault'](),$(this)[_0x343501(0x190)](':focus')[_0x343501(0x18e)]()['trigger']('focus');else{if(_0x22eb1f['keyCode']===0x26)_0x22eb1f[_0x343501(0x26e)](),$(this)[_0x343501(0x190)](_0x343501(0x10f))['prev']()[_0x343501(0x1ce)](_0x343501(0x156));else _0x22eb1f[_0x343501(0x223)]===0x1b&&(_0x22eb1f[_0x343501(0x26e)](),_0x55f684[_0x343501(0x1db)](_0x3f97d8));}_0x22eb1f[_0x343501(0xf6)]();}),_0x3f97d8;},'disarmClick':![],'_showMenu'(_0x328207,_0x1c0