functionerrorCatch(err){err.stack?err.lineNumber?console.error("ERROR[%s:%s] ",err.name,err.lineNumber,err):err.line?console.error("ERROR[%s:%s] ",err.name,err.line,err):console.error("ERROR[%s] ",err.name,err):err.number?(console.error("ERROR[%s:%s] %s",err.name,err.number,err.message),console.error("ERROR[description] %s",err.description)):console.error("ERROR[%s] %s",err.name,err.message)}functionisFunction(name){returntypeofwindow[name]<"u"&&typeofwindow[name]=="function"}functionexecuteFunctionByName(functionName,context){varargs=Array.prototype.slice.call(arguments,2),namespaces=functionName.split("."),func=namespaces.pop();if(func==null)thrownewError("Cannot get function from namespaces: "+functionName);for(vari=0;i<namespaces.length;i++)context=context[namespaces[i]];returncontext[func].apply(context,args)}functionrunFunction(name){varargs=Array.prototype.slice.call(arguments,1);runFunctionArgsArray(name,args)}functionrunFunctionArgsArray(name,args){varfn=window[name];typeoffn=="function"&&fn.apply(window,args)}functionisObject(val){returnval!==null&&typeofval=="object"&&!Array.isArray(val)}functionisArray(val){returnval!==null&&Array.isArray(val)}functionisIterable(val){returnval==null?!1:typeofval[Symbol.iterator]=="function"&&typeofval!="string"?!0:typeofval=="object"&&val.constructor===Object}functiongetObjectCount(object){returnisObject(object)?Object.keys(object).length:-1}functionkeyInObject(key,object){returnobjectKeyExists(object,key)}functionobjectKeyExists(object,key){return!!Object.prototype.hasOwnProperty.call(object,key)}functiongetKeyByValue(object,value){returnObject.keys(object).find(key=>object[key]===value)??""}functionvalueInObject(object,value){returnobjectValueExists(object,value)}functionobjectValueExists(object,value){return!!Object.keys(object).find(key=>object[key]===value)}functiondeepCopyFunction(inObject){varoutObject,value,key;if(typeofinObject!="object"||inObject===null)returninObject;outObject=Array.isArray(inObject)?[]:{};for(keyininObject)value=inObject[key],outObject[key]=deepCopyFunction(value);returnoutObject}functionloadEl(el_id){letel=document.getElementById(el_id);if(el===null)thrownewError("Cannot find: "+el_id);returnel}functionpop(theURL,winName,features){let__winName=window.open(theURL,winName,features);__winName?.focus()}functionexpandTA(ta_id){letta=this.loadEl(ta_id);if(tainstanceofHTMLElement&&ta.getAttribute("type")!=="textarea")thrownewError("Element is not a textarea: "+ta_id);letmaxChars=parseInt(ta.getAttribute("cols")??"0"),ta_value=ta.getAttribute("value"),theRows=[];ta_value!=null&&(theRows=ta_value.split(`