{"version":3,"names":["VirtualService","servername","oRPC","this","version","URL","multicall","autoroute","onerror","rpc","receive","purge","revert","add","name","alias","validateMethodName","stop","Function","call","args","info","send","XMLRPC","lastError","routeServer","services","stack","queue","Array","timers","timeout","ontimeout","getService","serviceName","test","ct","eval","e","modConst","length","i","methodname","service","a","arguments","supportsMulticall","push","typematch","vDunno","nCase","nMask","Boolean","getNode","data","tree","nc","childNodes","nodeType","shift","toObject","ret","tagName","firstChild","String","nodeValue","Number","sn","isIE","Date","RegExp","$2","$3","$1","$4","$5","$6","child","handleError","Error","isNaN","parseInt","decodeBase64","sEncoded","atob","nBits","sDecoded","base64","replace","indexOf","charAt","fromCharCode","substring","charCodeAt","getObject","type","message","obj","window","XMLHttpRequest","ActiveXObject","DOMParser","parseFromString","loadXML","structToXML","prop","retstr","getXML","stringToXML","intToXML","doubleToXML","booleanoXML","dateToXML","year","substr","doYear","getUTCYear","doZero","getMonth","getUTCDate","getHours","getMinutes","getSeconds","nr","arrayToXML","undefined","isFinite","booleanToXML","cancel","id","abort","serverAddress","functionName","methodName","params","http","isNS","async","setInterval","srv","open","setRequestHeader","navigator","userAgent","clearInterval","xmldom","self","DEBUG","alert","processResult","responseText","status","rpcErr","main","dom","responseXML","getElementsByTagName","faultCode","faultString","onreceive","statusText","ver","appVersion","productSub"],"sources":["vcXMLRPC.js"],"sourcesContent":["function VirtualService(servername, oRPC) {\r\n\tthis.version = '0.91';\r\n\tthis.URL = servername;\r\n\tthis.multicall = false;\r\n\tthis.autoroute = true;\r\n\tthis.onerror = null;\r\n\t\r\n\tthis.rpc = oRPC;\r\n\tthis.receive = {};\r\n\t\r\n\tthis.purge = function(receive){\r\n\t\treturn this.rpc.purge(this, receive);\r\n\t}\r\n\t\r\n\tthis.revert = function(){\r\n\t\tthis.rpc.revert(this);\r\n\t}\r\n\t\r\n\tthis.add = function(name, alias, receive){\r\n\t\tthis.rpc.validateMethodName();if(this.rpc.stop){this.rpc.stop = false;return false}\r\n\t\tif(receive) this.receive[name] = receive;\r\n\t\tthis[(alias || name)] = new Function('var args = new Array(), i;for(i=0;i<arguments.length;i++){args.push(arguments[i]);};return this.call(\"' + name + '\", args);');\r\n\t\treturn true;\r\n\t}\r\n\t\r\n\t//internal function for sending data\r\n\tthis.call = function(name, args){\r\n\t\tvar info = this.rpc.send(this.URL, name, args, this.receive[name], this.multicall, this.autoroute);\r\n\t\t\r\n\t\tif(info){\r\n\t\t\tif(!this.multicall) this.autoroute = info[0];\r\n\t\t\treturn info[1];\r\n\t\t}\r\n\t\telse{\r\n\t\t\tif(this.onerror) this.onerror(XMLRPC.lastError);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\nXMLRPC = {\r\n\trouteServer : \"http://www.vcdn.org/cgi-bin/rpcproxy.cgi\",\r\n\tautoroute : true,\r\n\tmulticall : false,\r\n\r\n\tservices : {},\r\n\tstack : {},\r\n\tqueue : new Array(),\r\n\ttimers : new Array(),\r\n\ttimeout : 30000,\r\n\t\r\n\tontimeout : null,\r\n\t\r\n\tgetService : function(serviceName){\r\n\t\t//serviceNames cannot contain / or .\r\n\t\tif(/[\\/\\.]/.test(serviceName)){\r\n\t\t\treturn new VirtualService(serviceName, this);\r\n\t\t}\r\n\t\telse if(this.services[serviceName]){\r\n\t\t\treturn this.services[serviceName];\r\n\t\t}\r\n\t\telse{\r\n\t\t\ttry{\r\n\t\t\t\tvar ct = eval(serviceName);\r\n\t\t\t\tthis.services[serviceName] = new ct(this);\r\n\t\t\t}\r\n\t\t\tcatch(e){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\r\n\tpurge : function(modConst, receive){\r\n\t\tif(this.stack[modConst.URL].length){\r\n\t\t\tvar info = this.send(modConst.URL, \"system.multicall\", [this.stack[modConst.URL]], receive, false, modConst.autoroute);\r\n\t\t\tmodConst.autoroute = info[0];\r\n\t\t\tthis.revert(modConst);\r\n\t\t\t\r\n\t\t\tif(info){\r\n\t\t\t\tmodConst.autoroute = info[0];\r\n\t\t\t\treturn info[1];\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tif(modConst.onerror) modConst.onerror(this.lastError);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\r\n\trevert : function(modConst){\r\n\t\tthis.stack[modConst.URL] = new Array();\r\n\t},\r\n\t\r\n\tcall : function(){\r\n\t\t//[optional info || receive, servername,] functionname, args......\r\n\t\tvar args = new Array(), i, a = arguments;\r\n\t\tvar servername, methodname, receive, service, info, autoroute, multicall;\r\n\t\t\r\n\t\tif(typeof a[0] == \"object\"){\r\n\t\t\treceive = a[0][0];\r\n\t\t\tservername = a[0][1].URL;\r\n\t\t\tmethodname = a[1];\r\n\t\t\tmulticall = (a[0][1].supportsMulticall && a[0][1].multicall);\r\n\t\t\tautoroute = a[0][1].autoroute;\r\n\t\t\tservice = a[0][1];\r\n\t\t}\r\n\t\telse if(typeof a[0] == \"function\"){\r\n\t\t\ti = 3;\r\n\t\t\treceive = a[0];\r\n\t\t\tservername = a[1];\r\n\t\t\tmethodname = a[2];\r\n\t\t}\r\n\t\telse{\r\n\t\t\ti = 2;\r\n\t\t\tservername = a[0];\r\n\t\t\tmethodname = a[1];\r\n\t\t}\r\n\t\t\t\r\n\t\tfor(i=i;i<a.length;i++){\r\n\t\t\targs.push(a[i]);\r\n\t\t}\r\n\t\t\r\n\t\tinfo = this.send(servername, methodname, args, receive, multicall, autoroute);\r\n\t\tif(info){\r\n\t\t\t(service || this).autoroute = info[0];\r\n\t\t\treturn info[1];\r\n\t\t}\r\n\t\telse{\r\n\t\t\tif(service && service.onerror) service.onerror(this.lastError);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t\r\n\t},\r\n\t\r\n\t/***\r\n\t* Perform typematching on 'vDunno' and return a boolean value corresponding\r\n\t* to the result of the evaluation-match of the mask-value stated in the 2nd argument.\r\n\t* The 2nd argument is optional (none will be treated as a 0-mask) or a sum of\r\n\t* several masks as follows:\r\n\t* type/s    ->  mask/s\r\n\t* --------------------\r\n\t* undefined ->  0/1 [default]\r\n\t* number    ->  2\r\n\t* boolean   ->  4\r\n\t* string    ->  8\r\n\t* function  -> 16\r\n\t* object    -> 32\r\n\t* --------------------\r\n\t* Examples:\r\n\t* Want [String] only: (eqv. (typeof(vDunno) == 'string') )\r\n\t*  Soya.Common.typematch(unknown, 8)\r\n\t* Anything else than 'undefined' acceptable:\r\n\t*  Soya.Common.typematch(unknown)\r\n\t* Want [Number], [Boolean] or [Function]:\r\n\t*  Soya.Common.typematch(unknown, 2 + 4 + 16)\r\n\t* Want [Number] only:\r\n\t*  Soya.Common.typematch(unknown, 2)\r\n\t**/\r\n\ttypematch : function (vDunno, nCase){\r\n\t\tvar nMask;\r\n\t\tswitch(typeof(vDunno)){\r\n\t\t\tcase 'number'  : nMask = 2;  break;\r\n\t\t\tcase 'boolean' : nMask = 4;  break;\r\n\t\t\tcase 'string'  : nMask = 8;  break;\r\n\t\t\tcase 'function': nMask = 16; break;\r\n\t\t\tcase 'object'  : nMask = 32; break;\r\n\t\t\tdefault\t     : nMask = 1;  break;\r\n\t\t}\r\n\t\treturn Boolean(nMask & (nCase || 62));\r\n\t},\r\n\t\r\n\tgetNode : function(data, tree){\r\n\t\tvar nc = 0;//nodeCount\r\n\t\t//node = 1\r\n\t\tif(data != null){\r\n\t\t\tfor(i=0;i<data.childNodes.length;i++){\r\n\t\t\t\tif(data.childNodes[i].nodeType == 1){\r\n\t\t\t\t\tif(nc == tree[0]){\r\n\t\t\t\t\t\tdata = data.childNodes[i];\r\n\t\t\t\t\t\tif(tree.length > 1){\r\n\t\t\t\t\t\t\ttree.shift();\r\n\t\t\t\t\t\t\tdata = this.getNode(data, tree);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnc++\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t},\r\n\t\r\n\ttoObject : function(data){\r\n\t\tvar ret, i;\r\n\t\tswitch(data.tagName){\r\n\t\t\tcase \"string\":\r\n\t\t\t\treturn (data.firstChild) ? new String(data.firstChild.nodeValue) : \"\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"int\":\r\n\t\t\tcase \"i4\":\r\n\t\t\tcase \"double\":\r\n\t\t\t\treturn (data.firstChild) ? new Number(data.firstChild.nodeValue) : 0;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dateTime.iso8601\":\r\n\t\t\t\t/*\r\n\t\t\t\tHave to read the spec to be able to completely \r\n\t\t\t\tparse all the possibilities in iso8601\r\n\t\t\t\t07-17-1998 14:08:55\r\n\t\t\t\t19980717T14:08:55\r\n\t\t\t\t*/\r\n\t\t\t\t\r\n\t\t\t\tvar sn = (isIE) ? \"-\" : \"/\";\r\n\t\t\t\t\r\n\t\t\t\tif(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})/.test(data.firstChild.nodeValue)){;//data.text)){\r\n\t      \t\treturn new Date(RegExp.$2 + sn + RegExp.$3 + sn + \r\n\t      \t\t\t\t\t\t\tRegExp.$1 + \" \" + RegExp.$4 + \":\" + \r\n\t      \t\t\t\t\t\t\tRegExp.$5 + \":\" + RegExp.$6);\r\n\t      \t}\r\n\t    \t\telse{\r\n\t    \t\t\treturn new Date();\r\n\t    \t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"array\":\r\n\t\t\t\tdata = this.getNode(data, [0]);\r\n\t\t\t\t\r\n\t\t\t\tif(data && data.tagName == \"data\"){\r\n\t\t\t\t\tret = new Array();\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar i = 0;\r\n\t\t\t\t\twhile(child = this.getNode(data, [i++])){\r\n      \t\t\t\tret.push(this.toObject(child));\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tthis.handleError(new Error(\"Malformed XMLRPC Message1\"));\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"struct\":\r\n\t\t\t\tret = {};\r\n\t\t\t\t\t\r\n\t\t\t\tvar i = 0;\r\n\t\t\t\twhile(child = this.getNode(data, [i++])){\r\n\t\t\t\t\tif(child.tagName == \"member\"){\r\n\t\t\t\t\t\tret[this.getNode(child, [0]).firstChild.nodeValue] = this.toObject(this.getNode(child, [1]));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse{\r\n\t\t\t\t\t\tthis.handleError(new Error(\"Malformed XMLRPC Message2\"));\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn ret;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"boolean\":\r\n\t\t\t\treturn Boolean(isNaN(parseInt(data.firstChild.nodeValue)) ? (data.firstChild.nodeValue == \"true\") : parseInt(data.firstChild.nodeValue))\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"base64\":\r\n\t\t\t\treturn this.decodeBase64(data.firstChild.nodeValue);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"value\":\r\n\t\t\t\tchild = this.getNode(data, [0]);\r\n\t\t\t\treturn (!child) ? ((data.firstChild) ? new String(data.firstChild.nodeValue) : \"\") : this.toObject(child);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.handleError(new Error(\"Malformed XMLRPC Message: \" + data.tagName));\r\n\t\t\t\treturn false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/*** Decode Base64 ******\r\n\t* Original Idea & Code by thomas@saltstorm.net\r\n\t* from Soya.Encode.Base64 [http://soya.saltstorm.net]\r\n\t**/\r\n\tdecodeBase64 : function(sEncoded){\r\n\t\t// Input must be dividable with 4.\r\n\t\tif(!sEncoded || (sEncoded.length % 4) > 0)\r\n\t\t  return sEncoded;\r\n\t\r\n\t\t/* Use NN's built-in base64 decoder if available.\r\n\t\t   This procedure is horribly slow running under NN4,\r\n\t\t   so the NN built-in equivalent comes in very handy. :) */\r\n\t\r\n\t\telse if(typeof(atob) != 'undefined')\r\n\t\t  return atob(sEncoded);\r\n\t\r\n\t  \tvar nBits, i, sDecoded = '';\r\n\t  \tvar base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n\t\tsEncoded = sEncoded.replace(/\\W|=/g, '');\r\n\t\r\n\t\tfor(i=0; i < sEncoded.length; i += 4){\r\n\t\t\tnBits =\r\n\t\t\t\t(base64.indexOf(sEncoded.charAt(i))   & 0xff) << 18 |\r\n\t\t\t\t(base64.indexOf(sEncoded.charAt(i+1)) & 0xff) << 12 |\r\n\t\t\t\t(base64.indexOf(sEncoded.charAt(i+2)) & 0xff) <<  6 |\r\n\t\t\t\tbase64.indexOf(sEncoded.charAt(i+3)) & 0xff;\r\n\t\t\tsDecoded += String.fromCharCode(\r\n\t\t\t\t(nBits & 0xff0000) >> 16, (nBits & 0xff00) >> 8, nBits & 0xff);\r\n\t\t}\r\n\t\r\n\t\t// not sure if the following statement behaves as supposed under\r\n\t\t// all circumstances, but tests up til now says it does.\r\n\t\r\n\t\treturn sDecoded.substring(0, sDecoded.length -\r\n\t\t ((sEncoded.charCodeAt(i - 2) == 61) ? 2 :\r\n\t\t  (sEncoded.charCodeAt(i - 1) == 61 ? 1 : 0)));\r\n\t},\r\n\t\r\n\tgetObject : function(type, message){\r\n\t\tif(type == \"HTTP\"){\r\n\t\t\tobj = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : false))\r\n\t\t\t//if(isIE)\r\n\t\t\t//\tobj = new ActiveXObject(\"microsoft.XMLHTTP\"); \r\n\t\t\t//else if(isNS)\r\n\t\t\t//\tobj = new XMLHttpRequest();\r\n\t\t}\r\n\t\telse if(type == \"XMLDOM\"){\r\n\t\t\tif (window.DOMParser) {\r\n\t\t\t\tobj = new DOMParser();\r\n\t\t\t\tobj = obj.parseFromString(message, \"text/xml\");\r\n\t\t\t}else if (window.ActiveXObject) {\r\n\t\t\t\tobj = new ActiveXObject(\"microsoft.XMLDOM\"); \r\n\t\t\t\tobj.loadXML(message)\r\n\t\t\t}\r\n\t\t}\r\n\t\telse{\r\n\t\t\tthis.handleError(new Error(\"Unknown Object\"));\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\t\r\n\tvalidateMethodName : function(name){\r\n\t\t/*do Checking:\r\n\t\t\r\n\t\tThe string may only contain identifier characters, \r\n\t\tupper and lower-case A-Z, the numeric characters, 0-9, \r\n\t\tunderscore, dot, colon and slash. \r\n\t\t\r\n\t\t*/\r\n\t\tif(/^[A-Za-z0-9\\._\\/:]+$/.test(name))\r\n\t\t\treturn true\r\n\t\telse\r\n\t\t\tthis.handleError(new Error(\"Incorrect method name\"));\r\n\t},\r\n\t\r\n\tstructToXML : function(obj) {\r\n\t\tretstr = \"<struct>\";\r\n\t\t\r\n\t\tfor(prop in obj) {\r\n\t\t\tif(typeof obj[prop] != \"function\") {\r\n\t\t\t\tretstr += \"<member><name>\" + prop + \"</name><value>\" + this.getXML(obj[prop]) + \"</value></member>\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tretstr += \"</struct>\";\r\n\t\t\r\n\t\treturn retstr;\r\n\t},\r\n\t\r\n\tstringToXML : function(obj) {\r\n\t\treturn \"<string><![CDATA[\" + obj.replace(/\\]\\]/g, \"] ]\") + \"]]></string>\";\r\n\t},\r\n\t\r\n\tintToXML : function(obj) {\r\n\t\treturn \"<int>\" + obj + \"</int>\";\r\n\t},\r\n\t\r\n\tdoubleToXML : function(obj) {\r\n\t\treturn \"<double>\" + obj + \"</double>\";\r\n\t},\r\n\t\r\n\tbooleanoXML : function(obj) {\r\n\t\tif (obj) return \"<boolean>1</boolean>\";\r\n\t\telse return \"<boolean>0</boolean>\";\r\n\t},\r\n\t\r\n\tdateToXML : function(obj) {\r\n\t\treturn \"<dateTime.iso8601>\" + doYear(obj.getUTCYear()) + doZero(obj.getMonth()) + doZero(obj.getUTCDate()) + \"T\" + doZero(obj.getHours()) + \":\" + doZero(obj.getMinutes()) + \":\" + doZero(obj.getSeconds()) + \"</dateTime.iso8601>\";\r\n\t\t\r\n\t\tfunction doZero(nr) {\r\n\t\t\tnr = String(\"0\" + nr);\r\n\t\t\treturn nr.substr(nr.length-2, 2);\r\n\t\t}\r\n\t\t\r\n\t\tfunction doYear(year) {\r\n\t\t\tif(year > 9999 || year < 0) \r\n\t\t\t\tXMLRPC.handleError(new Error(\"Unsupported year: \" + year));\r\n\t\t\t\t\r\n\t\t\tyear = String(\"0000\" + year)\r\n\t\t\treturn year.substr(year.length-4, 4);\r\n\t\t}\r\n\t},\r\n\t\r\n\tarrayToXML : function(obj) {\r\n\t\tvar retstr = \"<array><data>\";\r\n\t\tfor (var i = 0; i < obj.length; i++) {\r\n\t\t\tretstr += \"<value>\" + this.getXML(obj[i]) + \"</value>\";\r\n\t\t}\r\n\t\treturn retstr + \"</data></array>\";\r\n\t},\r\n\t\r\n\tgetXML : function(obj) {\r\n\t\tif (obj == null || obj == undefined || (typeof obj == \"number\" && !isFinite(obj))) {\r\n\t\t\treturn \"<nil/>\";\r\n\t\t}else if (typeof(obj) == typeof(true)) {\r\n\t\t\treturn this.booleanToXML(obj);\r\n\t\t}else if (typeof(obj) == typeof(\"\")) {\r\n\t\t\treturn this.stringToXML(obj);\r\n\t\t}else if (typeof(obj) == typeof(0)) {\r\n\t\t\treturn this.intToXML(obj);\r\n\t\t}else if (typeof(obj) == typeof(0.1)) {\r\n\t\t\treturn this.doubleToXML(obj);\r\n\t\t}else if (obj instanceof Array) {\r\n\t\t\treturn this.arrayToXML(obj);\r\n\t\t}else if (obj instanceof Date) {\r\n\t\t\treturn this.dateToXML(obj);\r\n\t\t}else if (typeof(obj) == typeof({})) {\r\n\t\t\treturn this.structToXML(obj);\r\n\t\t}else {\r\n\t\t\tthis.handleError(new Error(\"Invalid object type\"));\r\n\t\t}\r\n\t},\r\n\t\r\n\thandleError : function(e){\r\n\t\tif(!this.onerror || !this.onerror(e)){\r\n\t\t\t//alert(\"An error has occured: \" + e.message);\r\n\t\t\tthrow e;\r\n\t\t}\r\n\t\tthis.stop = true;\r\n\t\tthis.lastError = e;\r\n\t},\r\n\t\r\n\tcancel : function(id){\r\n\t\t//You can only cancel a request when it was executed async (I think)\r\n\t\tif(!this.queue[id]) return false;\r\n\t\t\r\n\t\tthis.queue[id][0].abort();\r\n\t\treturn true;\r\n\t},\r\n\t\r\n\tsend : function(serverAddress, functionName, args, receive, multicall, autoroute){\r\n\t\tvar id, http;\r\n\t\t//default is sync\r\n\t\tthis.validateMethodName();\r\n\t\tif(this.stop){this.stop = false; return false;}\r\n\t\t\r\n\t\t//setting up multicall\r\n\t\tmulticall = (multicall != null) ? multicall : this.multicall;\r\n\t\t\r\n\t\tif(multicall){\r\n\t\t\tif(!this.stack[serverAddress]) this.stack[serverAddress] = new Array();\r\n\t\t\tthis.stack[serverAddress].push({methodName : functionName, params : args});\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t\t//creating http object\r\n\t\tvar http = this.getObject(\"HTTP\");\r\n\t\t\r\n\t\t//setting some things for async/sync transfers\r\n\t\tif(!receive || isNS){;\r\n\t\t\tasync = false;\r\n\t\t}\r\n\t\telse{\r\n\t\t\tasync = true;\r\n\t\t\t/* The timer functionality is implemented instead of\r\n\t\t\t\tthe onreadystatechange event because somehow\r\n\t\t\t\tthe calling of this event crashed IE5.x\r\n\t\t\t*/\r\n\t\t\tid = this.queue.push([http, receive, null, new Date()])-1;\r\n\t\t\t\r\n\t\t\tthis.queue[id][2] = new Function(\"var id='\" + id + \"';var dt = new Date(new Date().getTime() - XMLRPC.queue[id][3].getTime());diff = parseInt(dt.getSeconds()*1000 + dt.getMilliseconds());if(diff > XMLRPC.timeout){if(XMLRPC.ontimeout) XMLRPC.ontimeout(); clearInterval(XMLRPC.timers[id]);XMLRPC.cancel(id);return};if(XMLRPC.queue[id][0].readyState == 4){XMLRPC.queue[id][0].onreadystatechange = function(){};XMLRPC.receive(id);clearInterval(XMLRPC.timers[id])}\");\r\n\t\t\tthis.timers[id] = setInterval(\"XMLRPC.queue[\" + id + \"][2]()\", 20);\r\n\t\t}\r\n\t\t\r\n\t\t//setting up the routing\r\n\t\tautoroute = (autoroute || this.autoroute);\r\n\t\t\r\n\t\t//'active' is only set when direct sending the message has failed\r\n\t\tvar srv = (autoroute == \"active\") ? this.routeServer : serverAddress;\r\n\t\t\r\n\t\ttry{\r\n\t\t\thttp.open('POST', srv, async);\r\n\t\t\thttp.setRequestHeader(\"User-Agent\", \"vcXMLRPC v0.91 (\" + navigator.userAgent + \")\");\r\n\t\t\thttp.setRequestHeader(\"Host\", srv.replace(/^https?:\\/{2}([:\\[\\]\\-\\w\\.]+)\\/?.*/, '$1'));\r\n\t\t\thttp.setRequestHeader(\"Content-type\", \"text/xml\");\r\n\t\t\tif(autoroute == \"active\"){\r\n\t\t\t\thttp.setRequestHeader(\"X-Proxy-Request\", serverAddress);\r\n\t\t\t\thttp.setRequestHeader(\"X-Compress-Response\", \"gzip\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e){\r\n\t\t\tif(autoroute == true){\r\n\t\t\t\t//Access has been denied, Routing call.\r\n\t\t\t\tautoroute = \"active\";\r\n\t\t\t\tif(id){\r\n\t\t\t\t\tdelete this.queue[id];\r\n\t\t\t\t\tclearInterval(this.timers[id]);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.send(serverAddress, functionName, args, receive, multicall, autoroute);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//Routing didn't work either..Throwing error\r\n\t\t\tthis.handleError(new Error(\"Could not sent XMLRPC Message (Reason: Access Denied on client)\"));\r\n\t\t\tif(this.stop){this.stop = false;return false}\r\n\t\t}\r\n\t\t\r\n\t\t//Construct the message\r\n\t\tvar message = '<?xml version=\"1.0\"?><methodCall><methodName>' + functionName + '</methodName><params>';\r\n   \tfor(i=0;i<args.length;i++){\r\n   \t\tmessage += '<param><value>' + this.getXML(args[i]) + '</value></param>';\r\n\t\t}\r\n\t\tmessage += '</params></methodCall>';\r\n\t\t\r\n\t\tvar xmldom = this.getObject('XMLDOM', message);\r\n\t\tif(self.DEBUG) alert(message);\r\n\t\t\r\n\t\ttry{\r\n\t\t\t//send message\r\n\t\t\thttp.send(xmldom);\r\n\t\t}\r\n\t\tcatch(e){\r\n\t\t\t//Most likely the message timed out(what happend to your internet connection?)\r\n\t\t\tthis.handleError(new Error(\"XMLRPC Message not Sent(Reason: \" + e.message + \")\"));\r\n\t\t\tif(this.stop){this.stop = false;return false}\r\n\t\t}\r\n\t\t\r\n\t\tif(!async && receive)\r\n\t\t\treturn [autoroute, receive(this.processResult(http))];\r\n\t\telse if(receive)\r\n\t\t\treturn [autoroute, id];\r\n\t\telse\r\n\t\t\treturn [autoroute, this.processResult(http)];\r\n\t},\r\n\t\r\n\treceive : function(id){\r\n\t\t//Function for handling async transfers..\r\n\t\tif(this.queue[id]){\r\n\t\t\tvar data = this.processResult(this.queue[id][0]);\r\n\t\t\tthis.queue[id][1](data);\r\n\t\t\tdelete this.queue[id];\r\n\t\t}\r\n\t\telse{\r\n\t\t\tthis.handleError(new Error(\"Error while processing queue\"));\r\n\t\t}\r\n\t},\r\n\t\r\n\tprocessResult : function(http){\r\n\t\tif(self.DEBUG) alert(http.responseText);\r\n\t\tif(http.status == 200){\r\n\t\t\t//getIncoming message\r\n\t\t   dom = http.responseXML;\r\n\r\n\t\t   if(dom){\r\n\t\t   \tvar rpcErr, main;\r\n\r\n\t\t   \t//Check for XMLRPC Errors\r\n\t\t   \trpcErr = dom.getElementsByTagName(\"fault\");\r\n\t\t   \tif(rpcErr.length > 0){\r\n\t\t   \t\trpcErr = this.toObject(rpcErr[0].firstChild);\r\n\t\t   \t\tthis.handleError(new Error(rpcErr.faultCode, rpcErr.faultString));\r\n\t\t   \t\treturn false\r\n\t\t   \t}\r\n\r\n\t\t   \t//handle method result\r\n\t\t   \tmain = dom.getElementsByTagName(\"param\");\r\n\t\t      if(main.length == 0) this.handleError(new Error(\"Malformed XMLRPC Message\"));\r\n\t\t\t\tdata = this.toObject(this.getNode(main[0], [0]));\r\n\r\n\t\t\t\t//handle receiving\r\n\t\t\t\tif(this.onreceive) this.onreceive(data);\r\n\t\t\t\treturn data;\r\n\t\t   }\r\n\t\t   else{\r\n\t\t  \t\tthis.handleError(new Error(\"Malformed XMLRPC Message\"));\r\n\t\t\t}\r\n\t\t}\r\n\t\telse{\r\n\t\t\tthis.handleError(new Error(\"HTTP Exception: (\" + http.status + \") \" + http.statusText + \"\\n\\n\" + http.responseText));\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//Smell something\r\nver = navigator.appVersion;\r\nisNS = Boolean(navigator.productSub)\r\nisIE = (ver.indexOf(\"MSIE\") != -1) ? 1 : 0;\r\n\r\n"],"mappings":"AAAA,SAASA,eAAeC,EAAYC,GACnCC,KAAKC,QAAU,OACfD,KAAKE,IAAMJ,EACXE,KAAKG,WAAY,EACjBH,KAAKI,WAAY,EACjBJ,KAAKK,QAAU,KAEfL,KAAKM,IAAMP,EACXC,KAAKO,QAAU,CAAC,EAEhBP,KAAKQ,MAAQ,SAASD,GACrB,OAAOP,KAAKM,IAAIE,MAAMR,KAAMO,EAC7B,EAEAP,KAAKS,OAAS,WACbT,KAAKM,IAAIG,OAAOT,KACjB,EAEAA,KAAKU,IAAM,SAASC,EAAMC,EAAOL,GACF,OAA9BP,KAAKM,IAAIO,qBAAwBb,KAAKM,IAAIQ,MAAMd,KAAKM,IAAIQ,MAAO,GAAa,IAC1EP,IAASP,KAAKO,QAAQI,GAAQJ,GACjCP,KAAMY,GAASD,GAAS,IAAII,SAAS,yGAA2GJ,EAAO,cAChJ,EACR,EAGAX,KAAKgB,KAAO,SAASL,EAAMM,GAC1B,IAAIC,EAAOlB,KAAKM,IAAIa,KAAKnB,KAAKE,IAAKS,EAAMM,EAAMjB,KAAKO,QAAQI,GAAOX,KAAKG,UAAWH,KAAKI,WAExF,OAAGc,GACElB,KAAKG,YAAWH,KAAKI,UAAYc,EAAK,IACnCA,EAAK,KAGTlB,KAAKK,SAASL,KAAKK,QAAQe,OAAOC,YAC9B,EAET,CACD,CAGAD,OAAS,CACRE,YAAc,2CACdlB,WAAY,EACZD,WAAY,EAEZoB,SAAW,CAAC,EACZC,MAAQ,CAAC,EACTC,MAAQ,IAAIC,MACZC,OAAS,IAAID,MACbE,QAAU,IAEVC,UAAY,KAEZC,WAAa,SAASC,aAErB,GAAG,SAASC,KAAKD,aAChB,OAAO,IAAIlC,eAAekC,YAAa/B,MAEnC,GAAGA,KAAKuB,SAASQ,aACrB,OAAO/B,KAAKuB,SAASQ,aAGrB,IACC,IAAIE,GAAKC,KAAKH,aACd/B,KAAKuB,SAASQ,aAAe,IAAIE,GAAGjC,KACrC,CACA,MAAMmC,GACL,OAAO,CACR,CAEF,EAEA3B,MAAQ,SAAS4B,EAAU7B,GAC1B,GAAGP,KAAKwB,MAAMY,EAASlC,KAAKmC,OAAO,CAClC,IAAInB,EAAOlB,KAAKmB,KAAKiB,EAASlC,IAAK,mBAAoB,CAACF,KAAKwB,MAAMY,EAASlC,MAAOK,GAAS,EAAO6B,EAAShC,WAI5G,OAHAgC,EAAShC,UAAYc,EAAK,GAC1BlB,KAAKS,OAAO2B,GAETlB,GACFkB,EAAShC,UAAYc,EAAK,GACnBA,EAAK,KAGTkB,EAAS/B,SAAS+B,EAAS/B,QAAQL,KAAKqB,YACpC,EAET,CACD,EAEAZ,OAAS,SAAS2B,GACjBpC,KAAKwB,MAAMY,EAASlC,KAAO,IAAIwB,KAChC,EAEAV,KAAO,WAEN,IAAwBsB,EACpBxC,EAAYyC,EAAYhC,EAASiC,EAAStB,EAAMd,EAAWD,EAD3Dc,EAAO,IAAIS,MAAYe,EAAIC,UAuB/B,IApBkB,iBAARD,EAAE,IACXlC,EAAUkC,EAAE,GAAG,GACf3C,EAAa2C,EAAE,GAAG,GAAGvC,IACrBqC,EAAaE,EAAE,GACftC,EAAasC,EAAE,GAAG,GAAGE,mBAAqBF,EAAE,GAAG,GAAGtC,UAClDC,EAAYqC,EAAE,GAAG,GAAGrC,UACpBoC,EAAUC,EAAE,GAAG,IAEO,mBAARA,EAAE,IAChBH,EAAI,EACJ/B,EAAUkC,EAAE,GACZ3C,EAAa2C,EAAE,GACfF,EAAaE,EAAE,KAGfH,EAAI,EACJxC,EAAa2C,EAAE,GACfF,EAAaE,EAAE,IAGRH,EAAEG,EAAEJ,OAAOC,IAClBrB,EAAK2B,KAAKH,EAAEH,IAIb,OADApB,EAAOlB,KAAKmB,KAAKrB,EAAYyC,EAAYtB,EAAMV,EAASJ,EAAWC,MAEjEoC,GAAWxC,MAAMI,UAAYc,EAAK,GAC5BA,EAAK,KAGTsB,GAAWA,EAAQnC,SAASmC,EAAQnC,QAAQL,KAAKqB,YAC7C,EAGT,EA0BAwB,UAAY,SAAUC,EAAQC,GAC7B,IAAIC,EACJ,cAAcF,GACb,IAAK,SAAYE,EAAQ,EAAI,MAC7B,IAAK,UAAYA,EAAQ,EAAI,MAC7B,IAAK,SAAYA,EAAQ,EAAI,MAC7B,IAAK,WAAYA,EAAQ,GAAI,MAC7B,IAAK,SAAYA,EAAQ,GAAI,MAC7B,QAAeA,EAAQ,EAExB,OAAOC,QAAQD,GAASD,GAAS,IAClC,EAEAG,QAAU,SAASC,EAAMC,GACxB,IAAIC,EAAK,EAET,GAAW,MAARF,EACF,IAAIb,EAAE,EAAEA,EAAEa,EAAKG,WAAWjB,OAAOC,IAChC,GAAkC,GAA/Ba,EAAKG,WAAWhB,GAAGiB,SAAc,CACnC,GAAGF,GAAMD,EAAK,GAMb,OALAD,EAAOA,EAAKG,WAAWhB,GACpBc,EAAKf,OAAS,IAChBe,EAAKI,QACLL,EAAOnD,KAAKkD,QAAQC,EAAMC,IAEpBD,EAERE,GACD,CAIF,OAAO,CACR,EAEAI,SAAW,SAASN,GACnB,IAAIO,EACJ,OAAOP,EAAKQ,SACX,IAAK,SACJ,OAAQR,EAAKS,WAAc,IAAIC,OAAOV,EAAKS,WAAWE,WAAa,GAEpE,IAAK,MACL,IAAK,KACL,IAAK,SACJ,OAAQX,EAAKS,WAAc,IAAIG,OAAOZ,EAAKS,WAAWE,WAAa,EAEpE,IAAK,mBAQJ,IAAIE,EAAMC,KAAQ,IAAM,IAExB,MAAG,iDAAiDjC,KAAKmB,EAAKS,WAAWE,WAC7D,IAAII,KAAKC,OAAOC,GAAKJ,EAAKG,OAAOE,GAAKL,EACxCG,OAAOG,GAAK,IAAMH,OAAOI,GAAK,IAC9BJ,OAAOK,GAAK,IAAML,OAAOM,IAGxB,IAAIP,KAIhB,IAAK,QAGJ,IAFAf,EAAOnD,KAAKkD,QAAQC,EAAM,CAAC,MAEA,QAAhBA,EAAKQ,QAAkB,CACjCD,EAAM,IAAIhC,MAGV,IADA,IAAIY,EAAI,EACFoC,MAAQ1E,KAAKkD,QAAQC,EAAM,CAACb,OAC7BoB,EAAId,KAAK5C,KAAKyD,SAASiB,QAG5B,OAAOhB,CACR,CAGC,OADA1D,KAAK2E,YAAY,IAAIC,MAAM,+BACpB,EAGT,IAAK,SACJlB,EAAM,CAAC,EAGP,IADIpB,EAAI,EACFoC,MAAQ1E,KAAKkD,QAAQC,EAAM,CAACb,OAAM,CACvC,GAAoB,UAAjBoC,MAAMf,QAKR,OADA3D,KAAK2E,YAAY,IAAIC,MAAM,+BACpB,EAJPlB,EAAI1D,KAAKkD,QAAQwB,MAAO,CAAC,IAAId,WAAWE,WAAa9D,KAAKyD,SAASzD,KAAKkD,QAAQwB,MAAO,CAAC,IAM1F,CAEA,OAAOhB,EAER,IAAK,UACJ,OAAOT,QAAQ4B,MAAMC,SAAS3B,EAAKS,WAAWE,YAA4C,QAA7BX,EAAKS,WAAWE,UAAuBgB,SAAS3B,EAAKS,WAAWE,YAG9H,IAAK,SACJ,OAAO9D,KAAK+E,aAAa5B,EAAKS,WAAWE,WAE1C,IAAK,QAEJ,OADAY,MAAQ1E,KAAKkD,QAAQC,EAAM,CAAC,IACnBuB,MAA4E1E,KAAKyD,SAASiB,OAA/EvB,EAAKS,WAAc,IAAIC,OAAOV,EAAKS,WAAWE,WAAa,GAGhF,QAEC,OADA9D,KAAK2E,YAAY,IAAIC,MAAM,6BAA+BzB,EAAKQ,WACxD,EAGV,EAMAoB,aAAe,SAASC,GAEvB,IAAIA,GAAaA,EAAS3C,OAAS,EAAK,EACtC,OAAO2C,EAMJ,GAAmB,oBAATC,KACb,OAAOA,KAAKD,GAEZ,IAAIE,EAAO5C,EAAG6C,EAAW,GACrBC,EAAS,oEAGf,IAFAJ,EAAWA,EAASK,QAAQ,QAAS,IAEjC/C,EAAE,EAAGA,EAAI0C,EAAS3C,OAAQC,GAAK,EAClC4C,GACyC,IAAvCE,EAAOE,QAAQN,EAASO,OAAOjD,MAAiB,IACT,IAAvC8C,EAAOE,QAAQN,EAASO,OAAOjD,EAAE,MAAe,IACT,IAAvC8C,EAAOE,QAAQN,EAASO,OAAOjD,EAAE,MAAgB,EACX,IAAvC8C,EAAOE,QAAQN,EAASO,OAAOjD,EAAE,IAClC6C,GAAYtB,OAAO2B,cACT,SAARN,IAAqB,IAAa,MAARA,IAAmB,EAAW,IAARA,GAMnD,OAAOC,EAASM,UAAU,EAAGN,EAAS9C,QACL,IAA9B2C,EAASU,WAAWpD,EAAI,GAAY,EACN,IAA9B0C,EAASU,WAAWpD,EAAI,GAAW,EAAI,GAC3C,EAEAqD,UAAY,SAASC,EAAMC,GAqB1B,MApBW,QAARD,EACFE,IAAOC,OAAOC,eAAiB,IAAIA,iBAAkBD,OAAOE,eAAgB,IAAIA,cAAc,qBAM/E,UAARL,EACHG,OAAOG,WACVJ,IAAM,IAAII,UACVJ,IAAMA,IAAIK,gBAAgBN,EAAS,aAC1BE,OAAOE,gBAChBH,IAAM,IAAIG,cAAc,oBACxBH,IAAIM,QAAQP,IAIb7F,KAAK2E,YAAY,IAAIC,MAAM,mBAGrBkB,GACR,EAEAjF,mBAAqB,SAASF,GAQ7B,GAAG,uBAAuBqB,KAAKrB,GAC9B,OAAO,EAEPX,KAAK2E,YAAY,IAAIC,MAAM,yBAC7B,EAEAyB,YAAc,SAASP,GAGtB,IAAIQ,QAFJC,OAAS,WAEGT,EACY,mBAAbA,EAAIQ,QACbC,QAAU,iBAAmBD,KAAO,iBAAmBtG,KAAKwG,OAAOV,EAAIQ,OAAS,qBAKlF,OAFAC,QAAU,YAEHA,MACR,EAEAE,YAAc,SAASX,GACtB,MAAO,oBAAsBA,EAAIT,QAAQ,QAAS,OAAS,cAC5D,EAEAqB,SAAW,SAASZ,GACnB,MAAO,QAAUA,EAAM,QACxB,EAEAa,YAAc,SAASb,GACtB,MAAO,WAAaA,EAAM,WAC3B,EAEAc,YAAc,SAASd,GACtB,OAAIA,EAAY,uBACJ,sBACb,EAEAe,UAAY,SAASf,GACpB,MAAO,qBAOP,SAAgBgB,IACZA,EAAO,MAAQA,EAAO,IACxB1F,OAAOuD,YAAY,IAAIC,MAAM,qBAAuBkC,IAGrD,OADAA,EAAOjD,OAAO,OAASiD,IACXC,OAAOD,EAAKzE,OAAO,EAAG,EACnC,CAb8B2E,CAAOlB,EAAImB,cAAgBC,EAAOpB,EAAIqB,YAAcD,EAAOpB,EAAIsB,cAAgB,IAAMF,EAAOpB,EAAIuB,YAAc,IAAMH,EAAOpB,EAAIwB,cAAgB,IAAMJ,EAAOpB,EAAIyB,cAAgB,sBAE9M,SAASL,EAAOM,GAEf,OADAA,EAAK3D,OAAO,IAAM2D,IACRT,OAAOS,EAAGnF,OAAO,EAAG,EAC/B,CASD,EAEAoF,WAAa,SAAS3B,GAErB,IADA,IAAIS,EAAS,gBACJjE,EAAI,EAAGA,EAAIwD,EAAIzD,OAAQC,IAC/BiE,GAAU,UAAYvG,KAAKwG,OAAOV,EAAIxD,IAAM,WAE7C,OAAOiE,EAAS,iBACjB,EAEAC,OAAS,SAASV,GACjB,OAAW,MAAPA,GAAsB4B,MAAP5B,GAAmC,iBAAPA,IAAoB6B,SAAS7B,GACpE,SACiB,kBAARA,EACT9F,KAAK4H,aAAa9B,GACD,iBAARA,EACT9F,KAAKyG,YAAYX,GACA,iBAARA,EACT9F,KAAK0G,SAASZ,GACG,iBAARA,EACT9F,KAAK2G,YAAYb,GACfA,aAAepE,MACjB1B,KAAKyH,WAAW3B,GACdA,aAAe5B,KACjBlE,KAAK6G,UAAUf,UACNA,SAAe,CAAC,EACzB9F,KAAKqG,YAAYP,QAExB9F,KAAK2E,YAAY,IAAIC,MAAM,uBAE7B,EAEAD,YAAc,SAASxC,GACtB,IAAInC,KAAKK,UAAYL,KAAKK,QAAQ8B,GAEjC,MAAMA,EAEPnC,KAAKc,MAAO,EACZd,KAAKqB,UAAYc,CAClB,EAEA0F,OAAS,SAASC,GAEjB,QAAI9H,KAAKyB,MAAMqG,KAEf9H,KAAKyB,MAAMqG,GAAI,GAAGC,SACX,EACR,EAEA5G,KAAO,SAAS6G,EAAeC,EAAchH,EAAMV,EAASJ,EAAWC,GACtE,IAAI0H,EAGJ,GADA9H,KAAKa,qBACFb,KAAKc,KAAyB,OAAnBd,KAAKc,MAAO,GAAc,EAKxC,GAFAX,EAA0B,MAAbA,EAAqBA,EAAYH,KAAKG,UAKlD,OAFIH,KAAKwB,MAAMwG,KAAgBhI,KAAKwB,MAAMwG,GAAiB,IAAItG,OAC/D1B,KAAKwB,MAAMwG,GAAepF,KAAK,CAACsF,WAAaD,EAAcE,OAASlH,KAC7D,EAIR,IAAImH,EAAOpI,KAAK2F,UAAU,SAGtBpF,GAAW8H,KACdC,OAAQ,GAGRA,OAAQ,EAKRR,EAAK9H,KAAKyB,MAAMmB,KAAK,CAACwF,EAAM7H,EAAS,KAAM,IAAI2D,OAAS,EAExDlE,KAAKyB,MAAMqG,GAAI,GAAK,IAAI/G,SAAS,WAAa+G,EAAK,2ZACnD9H,KAAK2B,OAAOmG,GAAMS,YAAY,gBAAkBT,EAAK,SAAU,KAOhE,IAAIU,EAAoB,WAHxBpI,EAAaA,GAAaJ,KAAKI,WAGKJ,KAAKsB,YAAc0G,EAEvD,IACCI,EAAKK,KAAK,OAAQD,EAAKF,OACvBF,EAAKM,iBAAiB,aAAc,mBAAqBC,UAAUC,UAAY,KAC/ER,EAAKM,iBAAiB,OAAQF,EAAInD,QAAQ,qCAAsC,OAChF+C,EAAKM,iBAAiB,eAAgB,YACtB,UAAbtI,IACFgI,EAAKM,iBAAiB,kBAAmBV,GACzCI,EAAKM,iBAAiB,sBAAuB,QAE/C,CACA,MAAMvG,GACL,GAAgB,GAAb/B,EAOF,OALAA,EAAY,SACT0H,WACK9H,KAAKyB,MAAMqG,GAClBe,cAAc7I,KAAK2B,OAAOmG,KAEpB9H,KAAKmB,KAAK6G,EAAeC,EAAchH,EAAMV,EAASJ,EAAWC,GAKzE,GADAJ,KAAK2E,YAAY,IAAIC,MAAM,oEACxB5E,KAAKc,KAAwB,OAAlBd,KAAKc,MAAO,GAAa,CACxC,CAGA,IAAI+E,EAAU,gDAAkDoC,EAAe,wBAC7E,IAAI3F,EAAE,EAAEA,EAAErB,EAAKoB,OAAOC,IACrBuD,GAAW,iBAAmB7F,KAAKwG,OAAOvF,EAAKqB,IAAM,mBAExDuD,GAAW,yBAEX,IAAIiD,EAAS9I,KAAK2F,UAAU,SAAUE,GACnCkD,KAAKC,OAAOC,MAAMpD,GAErB,IAECuC,EAAKjH,KAAK2H,EACX,CACA,MAAM3G,GAGL,GADAnC,KAAK2E,YAAY,IAAIC,MAAM,mCAAqCzC,EAAE0D,QAAU,MACzE7F,KAAKc,KAAwB,OAAlBd,KAAKc,MAAO,GAAa,CACxC,CAEA,OAAIwH,OAAS/H,EACL,CAACH,EAAWG,EAAQP,KAAKkJ,cAAcd,KACvC7H,EACA,CAACH,EAAW0H,GAEZ,CAAC1H,EAAWJ,KAAKkJ,cAAcd,GACxC,EAEA7H,QAAU,SAASuH,GAElB,GAAG9H,KAAKyB,MAAMqG,GAAI,CACjB,IAAI3E,EAAOnD,KAAKkJ,cAAclJ,KAAKyB,MAAMqG,GAAI,IAC7C9H,KAAKyB,MAAMqG,GAAI,GAAG3E,UACXnD,KAAKyB,MAAMqG,EACnB,MAEC9H,KAAK2E,YAAY,IAAIC,MAAM,gCAE7B,EAEAsE,cAAgB,SAASd,GAExB,GADGW,KAAKC,OAAOC,MAAMb,EAAKe,cACR,KAAff,EAAKgB,OAAc,CAKlB,IAAIC,EAAQC,EADb,GAFAC,IAAMnB,EAAKoB,YAERD,IAKF,OADAF,EAASE,IAAIE,qBAAqB,UACxBpH,OAAS,GAClBgH,EAASrJ,KAAKyD,SAAS4F,EAAO,GAAGzF,YACjC5D,KAAK2E,YAAY,IAAIC,MAAMyE,EAAOK,UAAWL,EAAOM,eAC7C,IAKY,IADpBL,EAAOC,IAAIE,qBAAqB,UACtBpH,QAAarC,KAAK2E,YAAY,IAAIC,MAAM,6BACpDzB,KAAOnD,KAAKyD,SAASzD,KAAKkD,QAAQoG,EAAK,GAAI,CAAC,KAGzCtJ,KAAK4J,WAAW5J,KAAK4J,UAAUzG,MAC3BA,MAGLnD,KAAK2E,YAAY,IAAIC,MAAM,4BAE/B,MAEC5E,KAAK2E,YAAY,IAAIC,MAAM,oBAAsBwD,EAAKgB,OAAS,KAAOhB,EAAKyB,WAAa,OAASzB,EAAKe,cAExG,GAIDW,IAAMnB,UAAUoB,WAChB1B,KAAOpF,QAAQ0F,UAAUqB,YACzB/F,MAAgC,GAAxB6F,IAAIxE,QAAQ,QAAiB,EAAI"}