{
  "version": 3,
  "sources": ["../../../../node_modules/d3-array/dist/d3-array.js", "../../../../node_modules/d3-time/dist/d3-time.js", "../../../../node_modules/d3-time-format/dist/d3-time-format.js", "../../../../node_modules/d3-format/dist/d3-format.js", "../../src/index.node.ts", "../../src/pem/trustwave.ts", "../../src/__package__.ts", "../../src/espConnection.ts", "../../src/connection.ts", "../../src/services/wsdl/FileSpray/v1.29/FileSpray.ts", "../../src/services/fileSpray.ts", "../../src/services/wsdl/ws_access/v1.17/ws_access.ts", "../../src/services/wsAccess.ts", "../../src/services/wsdl/ws_account/v1.07/ws_account.ts", "../../src/services/wsAccount.ts", "../../src/services/wsCloud.ts", "../../src/services/wsdl/WsCloud/v1.02/WsCloud.ts", "../../src/services/wsdl/ws_codesign/v1.1/ws_codesign.ts", "../../src/services/wsCodesign.ts", "../../src/services/wsdl/WsDali/v1.07/WsDali.ts", "../../src/services/wsDali.ts", "../../src/services/wsdl/WsDfu/v1.67/WsDfu.ts", "../../src/services/wsDFU.ts", "../../src/services/wsdl/WsDFUXRef/v1.04/WsDFUXRef.ts", "../../src/services/wsDFUXRef.ts", "../../src/services/wsEcl.ts", "../../src/services/wsdl/ws_elk/v1/ws_elk.ts", "../../src/services/wsElk.ts", "../../src/services/wsLogaccess.ts", "../../src/services/wsdl/ws_logaccess/v1.08/ws_logaccess.ts", "../../src/services/wsMachine.ts", "../../src/services/wsdl/ws_machine/v1.19/ws_machine.ts", "../../src/services/wsdl/WsPackageProcess/v1.08/WsPackageProcess.ts", "../../src/services/wsPackageProcess.ts", "../../src/services/wsdl/WsResources/v1.01/WsResources.ts", "../../src/services/wsResources.ts", "../../src/services/wsdl/WsSasha/v1.01/WsSasha.ts", "../../src/services/wsSasha.ts", "../../src/services/wsSMC.ts", "../../src/services/wsdl/WsSMC/v1.29/WsSMC.ts", "../../src/services/wsdl/wsstore/v1.02/wsstore.ts", "../../src/services/wsStore.ts", "../../src/services/wsdl/WsTopology/v1.33/WsTopology.ts", "../../src/services/wsTopology.ts", "../../src/services/wsWorkunits.ts", "../../src/services/wsdl/WsWorkunits/v2.08/WsWorkunits.ts", "../../src/ecl/activity.ts", "../../src/ecl/workunit.ts", "../../src/ecl/graph.ts", "../../src/ecl/resource.ts", "../../src/ecl/result.ts", "../../src/ecl/xsdParser.ts", "../../src/ecl/scope.ts", "../../src/ecl/sourceFile.ts", "../../src/ecl/timer.ts", "../../src/ecl/logicalFile.ts", "../../src/ecl/machine.ts", "../../src/ecl/query.ts", "../../src/ecl/topology.ts", "../../src/ecl/targetCluster.ts", "../../src/ecl/queryGraph.ts", "../../src/ecl/store.ts", "../../src/ecl/dfuWorkunit.ts", "../../src/clienttools/eclcc.ts", "../../src/clienttools/eclMeta.ts"],
  "sourcesContent": ["// https://d3js.org/d3-array/ v1.2.4 Copyright 2018 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction bisector(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n\nvar ascendingBisect = bisector(ascending);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n\nfunction pairs(array, f) {\n  if (f == null) f = pair;\n  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n  while (i < n) pairs[i] = f(p, p = array[++i]);\n  return pairs;\n}\n\nfunction pair(a, b) {\n  return [a, b];\n}\n\nfunction cross(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n\nfunction descending(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\nfunction number(x) {\n  return x === null ? NaN : +x;\n}\n\nfunction variance(values, valueof) {\n  var n = values.length,\n      m = 0,\n      i = -1,\n      mean = 0,\n      value,\n      delta,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  if (m > 1) return sum / (m - 1);\n}\n\nfunction deviation(array, f) {\n  var v = variance(array, f);\n  return v ? Math.sqrt(v) : v;\n}\n\nfunction extent(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\nfunction constant(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction identity(x) {\n  return x;\n}\n\nfunction range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n\nvar e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction ticks(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n\nfunction sturges(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n\nfunction histogram() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisectRight(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n\nfunction quantile(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction freedmanDiaconis(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction scott(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction max(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n\nfunction mean(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n\nfunction median(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      numbers = [];\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  return quantile(numbers.sort(ascending), 0.5);\n}\n\nfunction merge(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n\nfunction min(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n\nfunction permute(array, indexes) {\n  var i = indexes.length, permutes = new Array(i);\n  while (i--) permutes[i] = array[indexes[i]];\n  return permutes;\n}\n\nfunction scan(values, compare) {\n  if (!(n = values.length)) return;\n  var n,\n      i = 0,\n      j = 0,\n      xi,\n      xj = values[j];\n\n  if (compare == null) compare = ascending;\n\n  while (++i < n) {\n    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n      xj = xi, j = i;\n    }\n  }\n\n  if (compare(xj, xj) === 0) return j;\n}\n\nfunction shuffle(array, i0, i1) {\n  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n\nfunction sum(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n\nfunction transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n\nfunction zip() {\n  return transpose(arguments);\n}\n\nexports.bisect = bisectRight;\nexports.bisectRight = bisectRight;\nexports.bisectLeft = bisectLeft;\nexports.ascending = ascending;\nexports.bisector = bisector;\nexports.cross = cross;\nexports.descending = descending;\nexports.deviation = deviation;\nexports.extent = extent;\nexports.histogram = histogram;\nexports.thresholdFreedmanDiaconis = freedmanDiaconis;\nexports.thresholdScott = scott;\nexports.thresholdSturges = sturges;\nexports.max = max;\nexports.mean = mean;\nexports.median = median;\nexports.merge = merge;\nexports.min = min;\nexports.pairs = pairs;\nexports.permute = permute;\nexports.quantile = quantile;\nexports.range = range;\nexports.scan = scan;\nexports.shuffle = shuffle;\nexports.sum = sum;\nexports.ticks = ticks;\nexports.tickIncrement = tickIncrement;\nexports.tickStep = tickStep;\nexports.transpose = transpose;\nexports.variance = variance;\nexports.zip = zip;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(global = global || self, factory(global.d3 = global.d3 || {}));\n}(this, function (exports) { 'use strict';\n\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n\nvar millisecond = newInterval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return newInterval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\nvar milliseconds = millisecond.range;\n\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\nvar second = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\nvar seconds = second.range;\n\nvar minute = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\nvar minutes = minute.range;\n\nvar hour = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\nvar hours = hour.range;\n\nvar day = newInterval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\nvar days = day.range;\n\nfunction weekday(i) {\n  return newInterval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\nvar month = newInterval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\nvar months = month.range;\n\nvar year = newInterval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\nvar years = year.range;\n\nvar utcMinute = newInterval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\nvar utcMinutes = utcMinute.range;\n\nvar utcHour = newInterval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\nvar utcHours = utcHour.range;\n\nvar utcDay = newInterval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\nvar utcDays = utcDay.range;\n\nfunction utcWeekday(i) {\n  return newInterval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\nvar utcMonth = newInterval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\nvar utcMonths = utcMonth.range;\n\nvar utcYear = newInterval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\nvar utcYears = utcYear.range;\n\nexports.timeDay = day;\nexports.timeDays = days;\nexports.timeFriday = friday;\nexports.timeFridays = fridays;\nexports.timeHour = hour;\nexports.timeHours = hours;\nexports.timeInterval = newInterval;\nexports.timeMillisecond = millisecond;\nexports.timeMilliseconds = milliseconds;\nexports.timeMinute = minute;\nexports.timeMinutes = minutes;\nexports.timeMonday = monday;\nexports.timeMondays = mondays;\nexports.timeMonth = month;\nexports.timeMonths = months;\nexports.timeSaturday = saturday;\nexports.timeSaturdays = saturdays;\nexports.timeSecond = second;\nexports.timeSeconds = seconds;\nexports.timeSunday = sunday;\nexports.timeSundays = sundays;\nexports.timeThursday = thursday;\nexports.timeThursdays = thursdays;\nexports.timeTuesday = tuesday;\nexports.timeTuesdays = tuesdays;\nexports.timeWednesday = wednesday;\nexports.timeWednesdays = wednesdays;\nexports.timeWeek = sunday;\nexports.timeWeeks = sundays;\nexports.timeYear = year;\nexports.timeYears = years;\nexports.utcDay = utcDay;\nexports.utcDays = utcDays;\nexports.utcFriday = utcFriday;\nexports.utcFridays = utcFridays;\nexports.utcHour = utcHour;\nexports.utcHours = utcHours;\nexports.utcMillisecond = millisecond;\nexports.utcMilliseconds = milliseconds;\nexports.utcMinute = utcMinute;\nexports.utcMinutes = utcMinutes;\nexports.utcMonday = utcMonday;\nexports.utcMondays = utcMondays;\nexports.utcMonth = utcMonth;\nexports.utcMonths = utcMonths;\nexports.utcSaturday = utcSaturday;\nexports.utcSaturdays = utcSaturdays;\nexports.utcSecond = second;\nexports.utcSeconds = seconds;\nexports.utcSunday = utcSunday;\nexports.utcSundays = utcSundays;\nexports.utcThursday = utcThursday;\nexports.utcThursdays = utcThursdays;\nexports.utcTuesday = utcTuesday;\nexports.utcTuesdays = utcTuesdays;\nexports.utcWednesday = utcWednesday;\nexports.utcWednesdays = utcWednesdays;\nexports.utcWeek = utcSunday;\nexports.utcWeeks = utcSundays;\nexports.utcYear = utcYear;\nexports.utcYears = utcYears;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "// https://d3js.org/d3-time-format/ v2.3.0 Copyright 2020 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\ntypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n(global = global || self, factory(global.d3 = global.d3 || {}, global.d3));\n}(this, function (exports, d3Time) { 'use strict';\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);\n          week = d3Time.utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);\n          week = d3Time.timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n\nvar locale;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  exports.timeFormat = locale.format;\n  exports.timeParse = locale.parse;\n  exports.utcFormat = locale.utcFormat;\n  exports.utcParse = locale.utcParse;\n  return locale;\n}\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : exports.utcFormat(isoSpecifier);\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : exports.utcParse(isoSpecifier);\n\nexports.isoFormat = formatIso;\nexports.isoParse = parseIso;\nexports.timeFormatDefaultLocale = defaultLocale;\nexports.timeFormatLocale = formatLocale;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "// https://d3js.org/d3-format/ v1.4.5 Copyright 2020 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {}));\n}(this, (function (exports) { 'use strict';\n\nfunction formatDecimal(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n\nfunction exponent(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n\nfunction formatGroup(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n\nfunction formatNumerals(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n\nvar prefixExponent;\n\nfunction formatPrefixAuto(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\nfunction formatRounded(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\nvar formatTypes = {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\nfunction identity(x) {\n  return x;\n}\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nfunction formatLocale(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n\nvar locale;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  exports.format = locale.format;\n  exports.formatPrefix = locale.formatPrefix;\n  return locale;\n}\n\nfunction precisionFixed(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n\nfunction precisionPrefix(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n\nfunction precisionRound(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n\nexports.FormatSpecifier = FormatSpecifier;\nexports.formatDefaultLocale = defaultLocale;\nexports.formatLocale = formatLocale;\nexports.formatSpecifier = formatSpecifier;\nexports.precisionFixed = precisionFixed;\nexports.precisionPrefix = precisionPrefix;\nexports.precisionRound = precisionRound;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "// DOM Parser polyfill  ---\nimport { root } from \"@hpcc-js/util\";\nimport { DOMParser } from \"@xmldom/xmldom\";\nroot.DOMParser = DOMParser;\n\n//  fetch setup for Node.js ---\nimport * as https from \"node:https\";\nimport { Buffer } from \"node:buffer\";\nimport { fetch, Agent } from \"undici\";\n\n//  NodeJS >= v18 has native fetch  ---\nif (root.fetch === undefined) {\n    throw new Error(\"@hpcc-js/comms requires Node.js >= 18.0.0 for native fetch support\");\n}\nroot.__hpcc_undiciFetch = fetch;\nroot.__hpcc_rejectUnauthorizedAgent = new Agent({\n    connect: {\n        rejectUnauthorized: false\n    }\n});\n\nimport { trustwave } from \"./pem/trustwave.ts\";\n\nlet globalCA = \"\";\nif (https.globalAgent.options.ca !== undefined) {\n    if (Array.isArray(https.globalAgent.options.ca) && https.globalAgent.options.ca.length) {\n        if (typeof https.globalAgent.options.ca[0] === \"string\") {\n            globalCA = https.globalAgent.options.ca.join(\"\\n\");\n        } else if (https.globalAgent.options.ca[0] instanceof Buffer) {\n            globalCA = https.globalAgent.options.ca.map(row => row.toString()).join(\"\\n\");\n        }\n    } else if (typeof https.globalAgent.options.ca === \"string\") {\n        globalCA = https.globalAgent.options.ca;\n    } else if (https.globalAgent.options.ca instanceof Buffer) {\n        globalCA = https.globalAgent.options.ca.toString();\n    }\n    globalCA += \"\\n\";\n}\n\nroot.__hpcc_trustwaveAgent = new https.Agent({\n    ca: globalCA + trustwave\n});\n\nexport * from \"./index.common.ts\";\n\n//  Client Tools  ---\nexport * from \"./clienttools/eclcc.ts\";\nexport * from \"./clienttools/eclMeta.ts\";\n", "export const trustwave = `\nTrustwave Secure Global Extended Validation CA, Level 1\nSecureTrust Corporation\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\n-----BEGIN CERTIFICATE-----\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\n-----END CERTIFICATE-----\n\nSecureTrust Domain Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\n-----BEGIN CERTIFICATE-----\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\nWd5m\n-----END CERTIFICATE-----\n\nSecureTrust Extended Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E31E46D341B2B2633CE480D915F81D\n-----BEGIN CERTIFICATE-----\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\nxcZsEgIzOCeH0SOWg4FA\n-----END CERTIFICATE-----\n\nSecureTrust Organization Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E58E9ADD372C871D25843FDAB852D9\n-----BEGIN CERTIFICATE-----\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\nVCHAI2OcWyloxrYd4zMipw0YjDw=\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00DDEDF6F64298490E694C36EFA422C88F\n-----BEGIN CERTIFICATE-----\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\nn+z3isMPClgpNw/eWSbaSLZ+\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n390A3F7EECA8FB4347DCAF701861662B\n-----BEGIN CERTIFICATE-----\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00C1BD27B383958D0D8BCA5E4F08D009D9\n-----BEGIN CERTIFICATE-----\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\npvuAANrc0Alu4nJC\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n35962F305C5A0BEC400D4E9877528C65\n-----BEGIN CERTIFICATE-----\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n4B2C6646F434775B67DF34A04DD504E6\n-----BEGIN CERTIFICATE-----\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n0092B8744F71CED0E26C72A3D8D5D925B2\n-----BEGIN CERTIFICATE-----\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\nRR4SZQ==\n-----END CERTIFICATE-----\n\nSecureTrust TWG Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\n-----BEGIN CERTIFICATE-----\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\n-----END CERTIFICATE-----\n\nTrustwave Global Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AD30465CF22697F246B101EC92953B\n-----BEGIN CERTIFICATE-----\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\n-----END CERTIFICATE-----\n\nTrustwave Global Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D99FB3B180C281020314A2D1C7640017\n-----BEGIN CERTIFICATE-----\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\n-----END CERTIFICATE-----\n\nTrustwave Global Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A69703AEFE5D37D18858C74026B004\n-----BEGIN CERTIFICATE-----\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\n-----BEGIN CERTIFICATE-----\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\nZ8RE9xRtOFBqYdv9H5CeTVk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AF531423847B85FB677932AAF80508\n-----BEGIN CERTIFICATE-----\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\nzEZifAHbPM3SJbRu\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\n-----BEGIN CERTIFICATE-----\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A8B57C104843994DACD79E28633E5F\n-----BEGIN CERTIFICATE-----\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\n-----BEGIN CERTIFICATE-----\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9B07A17CC5376157813389A2930A44A\n-----BEGIN CERTIFICATE-----\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A331594530006781829387E40DBCB6\n-----BEGIN CERTIFICATE-----\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\n-----BEGIN CERTIFICATE-----\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\n-----END CERTIFICATE-----\n\nTrustwave S/MIME SHA256 CA, Level 1\nXRamp Security Services Inc\n3A83B71EE02C3CCA1CE1A2643E9B66EA\n-----BEGIN CERTIFICATE-----\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\necyzakgVYZ/Ezalz8nQwhCA=\n-----END CERTIFICATE-----\n\nTrustwave XRamp Global Extended Validation CA, Level 1\nXRamp Security Services Inc\n00D3D519C2B2EB5C7040F64CBC957BBD2C\n-----BEGIN CERTIFICATE-----\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\n-----END CERTIFICATE-----\n\nSecure Global CA\nSecureTrust Corporation\n075622A4E8D48A894DF413C8F0F8EAA5\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nSecureTrust CA\nSecureTrust Corporation\n0CF08E5C0816A5AD427FF0EB271859D0\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\nTrustwave Holdings, Inc.\n05F70E86DA49F346352EBAB2\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\nyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\nTrustwave Holdings, Inc.\n0D6A5F083F285C3E5195DF5D\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\nTrustwave Holdings, Inc.\n08BD85976C9927A48068473B\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\nSw==\n-----END CERTIFICATE-----\n`;", "export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n", "import { join } from \"@hpcc-js/util\";\nimport { createConnection, IConnection, IOptions, ResponseType } from \"./connection.ts\";\n\nexport type ESPResponseType = ResponseType | \"json2\" | \"xsd\";\n\nexport function isArray(arg: any) {\n    return Object.prototype.toString.call(arg) === \"[object Array]\";\n}\n\nexport interface Exception {\n    Code: number;\n    Message: string;\n}\n\nexport interface Exceptions {\n    Source: string;\n    Exception: Exception[];\n}\n\nexport class ESPExceptions extends Error implements Exceptions {\n    isESPExceptions = true;\n    action: string;\n    request: string;\n    Source: string;\n    Exception: Exception[];\n\n    constructor(action: string, request: any, exceptions: Exceptions) {\n        super(\"ESPException:  \" + exceptions.Source);\n        this.action = action;\n        this.request = request;\n        this.Source = exceptions.Source;\n        this.Exception = exceptions.Exception;\n        if (exceptions.Exception.length) {\n            this.message = `${exceptions.Exception[0].Code}:  ${exceptions.Exception[0].Message}`;\n        } else {\n            this.message = \"\";\n        }\n    }\n}\n\nexport function isExceptions(err: any): err is Exceptions {\n    return err instanceof ESPExceptions || (err.isESPExceptions && Array.isArray(err.Exception));\n}\n\nfunction isConnection(optsConnection: IOptions | IConnection): optsConnection is IConnection {\n    return (optsConnection as IConnection).send !== undefined;\n}\n\nexport class ESPConnection implements IConnection {\n    private _connection: IConnection;\n    get baseUrl() { return this._connection.opts().baseUrl; }\n    private _service: string;\n    private _version: string;\n\n    constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\n        this._connection = isConnection(optsConnection) ? optsConnection : createConnection(optsConnection);\n        this._service = service;\n        this._version = version;\n    }\n\n    service(): string;\n    service(_: string): ESPConnection;\n    service(_?: string): string | ESPConnection {\n        if (_ === void 0) return this._service;\n        this._service = _;\n        return this;\n    }\n\n    version(): string;\n    version(_: string): ESPConnection;\n    version(_?: string): string | ESPConnection {\n        if (_ === void 0) return this._version;\n        this._version = _;\n        return this;\n    }\n\n    toESPStringArray(target: any, arrayName: string): any {\n        if (isArray(target[arrayName])) {\n            for (let i = 0; i < target[arrayName].length; ++i) {\n                target[arrayName + \"_i\" + i] = target[arrayName][i];\n            }\n            delete target[arrayName];\n        }\n        return target;\n    }\n\n    //  IConnection  ---\n    opts(_: Partial<IOptions>): this;\n    opts(): IOptions;\n    opts(_?: Partial<IOptions>): this | IOptions {\n        if (_ === void 0) return this._connection.opts();\n        this._connection.opts(_);\n        return this;\n    }\n\n    send(action: string, _request: any = {}, espResponseType: ESPResponseType = \"json\", largeUpload: boolean = false, abortSignal?: AbortSignal, espResponseField?: string): Promise<any> {\n        const request = { ..._request, ...{ ver_: this._version } };\n        if (largeUpload) {\n            request[\"upload_\"] = true;\n        }\n        if (abortSignal) {\n            request[\"abortSignal_\"] = abortSignal;\n        }\n        let serviceAction: string;\n        let responseType: ResponseType = \"json\";\n        switch (espResponseType) {\n            case \"text\":\n                serviceAction = join(this._service, action);\n                responseType = \"text\";\n                break;\n            case \"xsd\":\n                serviceAction = join(this._service, action + \".xsd\");\n                responseType = \"text\";\n                break;\n            case \"json2\":\n                serviceAction = join(this._service, action + \"/json\");\n                espResponseType = \"json\";\n                const actionParts = action.split(\"/\");\n                action = actionParts.pop()!;\n                break;\n            default:\n                serviceAction = join(this._service, action + \".json\");\n        }\n        return this._connection.send(serviceAction, request, responseType).then((response) => {\n            if (espResponseType === \"json\") {\n                let retVal;\n                if (response && response.Exceptions) {\n                    throw new ESPExceptions(action, request, response.Exceptions);\n                } else if (response) {\n                    retVal = response[espResponseField || (action + \"Response\")];\n                }\n                if (!retVal) {\n                    throw new ESPExceptions(action, request, {\n                        Source: \"ESPConnection.send\",\n                        Exception: [{ Code: 0, Message: \"Missing Response\" }]\n                    });\n                }\n                return retVal;\n            }\n            return response;\n        });\n    }\n\n    clone() {\n        return new ESPConnection(this._connection.clone(), this._service, this._version);\n    }\n}\n\nexport class Service {\n    protected _connection: ESPConnection;\n    get baseUrl() { return this._connection.opts().baseUrl; }\n\n    constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\n        this._connection = new ESPConnection(optsConnection, service, version);\n    }\n\n    opts() {\n        return this._connection.opts();\n    }\n\n    connection(): ESPConnection {\n        return this._connection.clone();\n    }\n}\n", "import { join, promiseTimeout, root, scopedLogger, utf8ToBase64 } from \"@hpcc-js/util\";\n\nconst logger = scopedLogger(\"comms/connection.ts\");\n\nexport type RequestType = \"post\" | \"get\" | \"jsonp\";\nexport type ResponseType = \"json\" | \"text\";\n\nexport type IOptionsSend = (options: IOptions, action: string, request: any, responseType: ResponseType, defaultSend: SendFunc, header?: any) => Promise<any>;\nexport interface IOptions {\n    baseUrl: string;\n    type?: RequestType;\n    userID?: string;\n    password?: string;\n    rejectUnauthorized?: boolean;\n    timeoutSecs?: number;\n    hookSend?: IOptionsSend;\n    encodeRequest?: boolean; // defaults to true\n}\nexport function instanceOfIOptions(object: any): object is IOptions {\n    return \"baseUrl\" in object;\n}\n\nconst DefaultOptions: IOptions = {\n    type: \"post\",\n    baseUrl: \"\",\n    userID: \"\",\n    password: \"\",\n    rejectUnauthorized: true,\n    timeoutSecs: 60\n};\n\nexport interface IConnection {\n    opts(_: Partial<IOptions>): this;\n    opts(): IOptions;\n    baseUrl: string;\n\n    send(action: string, request: any, responseType?: ResponseType): Promise<any>;\n    clone(): IConnection;\n}\nexport function instanceOfIConnection(object: any): object is IConnection {\n    return typeof object.opts === \"function\" &&\n        typeof object.send === \"function\" &&\n        typeof object.clone === \"function\";\n}\n\n//  comms  ---\n\nfunction encode(uriComponent: string | number | boolean, encodeRequest: boolean): string {\n    return (encodeRequest === undefined || encodeRequest === true) ? encodeURIComponent(uriComponent) : \"\" + uriComponent;\n}\n\nexport function serializeRequest(obj: any, encodeRequest: boolean = true, prefix: string = \"\"): string {\n    if (prefix) {\n        prefix += \".\";\n    }\n    if (typeof obj !== \"object\") {\n        return encode(obj, encodeRequest);\n    }\n\n    const str: string[] = [];\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            if (obj[key] instanceof Array) {\n                //  Specific to ESP - but no REST standard exists...\n                let includeItemCount = false;\n                obj[key].forEach((row: any, i: number) => {\n                    if (typeof row === \"object\") {\n                        includeItemCount = true;\n                        str.push(serializeRequest(row, encodeRequest, prefix + encode(`${key}.${i}`, encodeRequest)));\n                    } else {\n                        str.push(prefix + encode(`${key}_i${i}`, encodeRequest) + \"=\" + serializeRequest(row, encodeRequest));\n                    }\n                });\n                if (includeItemCount) {\n                    str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key].length);\n                }\n            } else if (typeof obj[key] === \"object\") {\n                if (obj[key] && obj[key][\"Item\"] instanceof Array) {  // Specific to ws_machine.GetTargetClusterInfo?\n                    str.push(serializeRequest(obj[key][\"Item\"], encodeRequest, prefix + encode(key, encodeRequest)));\n                    str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key][\"Item\"].length);\n                } else {\n                    str.push(serializeRequest(obj[key], encodeRequest, prefix + encode(key, encodeRequest)));\n                }\n            } else if (obj[key] !== undefined) {\n                str.push(prefix + encode(key, encodeRequest) + \"=\" + encode(obj[key], encodeRequest));\n            } else {\n                str.push(prefix + encode(key, encodeRequest));\n            }\n        }\n    }\n    return str.join(\"&\");\n}\n\nexport function deserializeResponse(body: string) {\n    return JSON.parse(body);\n}\n\nexport function jsonp(opts: IOptions, action: string, request: any = {}, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n    if (header) {\n        console.warn(\"Header attributes ignored for JSONP connections\");\n    }\n    return new Promise<any>((resolve, reject) => {\n        let respondedTimeout = opts.timeoutSecs! * 1000;\n        const respondedTick = 5000;\n        const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n        (window as any)[callbackName] = function (response: any) {\n            respondedTimeout = 0;\n            doCallback();\n            resolve(responseType === \"json\" && typeof response === \"string\" ? deserializeResponse(response) : response);\n        };\n        const script = document.createElement(\"script\");\n        let url = join(opts.baseUrl, action);\n        url += url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n        script.src = url + \"jsonp=\" + callbackName + \"&\" + serializeRequest(request, opts.encodeRequest);\n        document.body.appendChild(script);\n        const progress = setInterval(function () {\n            if (respondedTimeout <= 0) {\n                clearInterval(progress);\n            } else {\n                respondedTimeout -= respondedTick;\n                if (respondedTimeout <= 0) {\n                    clearInterval(progress);\n                    logger.error(\"Request timeout:  \" + script.src);\n                    doCallback();\n                    reject(Error(\"Request timeout:  \" + script.src));\n                } else {\n                    logger.debug(\"Request pending (\" + respondedTimeout / 1000 + \" sec):  \" + script.src);\n                }\n            }\n        }, respondedTick);\n\n        function doCallback() {\n            delete (window as any)[callbackName];\n            document.body.removeChild(script);\n        }\n    });\n}\n\nfunction authHeader(opts: IOptions): object {\n    return opts.userID ? { Authorization: `Basic ${utf8ToBase64(`${opts.userID}:${opts.password}`)}` } : {};\n}\n\n//  _omitMap is a workaround for older HPCC-Platform instances without credentials ---\nconst _omitMap: { [baseUrl: string]: boolean } = {};\nfunction doFetch(opts: IOptions, action: string, requestInit: RequestInit, headersInit: HeadersInit, responseType: string) {\n    headersInit = {\n        ...authHeader(opts),\n        ...headersInit\n    };\n\n    requestInit = {\n        credentials: _omitMap[opts.baseUrl] ? \"omit\" : \"include\",\n        ...requestInit,\n        headers: headersInit\n    };\n\n    if (opts.baseUrl.indexOf(\"https:\") === 0) {\n        //  NodeJS / node-fetch only  ---\n        if (opts.rejectUnauthorized === false && root.__hpcc_rejectUnauthorizedAgent) {\n            requestInit[\"dispatcher\"] = root.__hpcc_rejectUnauthorizedAgent;\n        } else if (root.__hpcc_trustwaveAgent) {\n            requestInit[\"agent\"] = root.__hpcc_trustwaveAgent;\n        }\n    }\n\n    function handleResponse(response: Response): Promise<any> {\n        if (response.ok) {\n            return responseType === \"json\" ? response.json() : response.text();\n        }\n        throw new Error(response.statusText);\n    }\n\n    const fetchOverride = root.__hpcc_undiciFetch ?? fetch;\n    return promiseTimeout(opts.timeoutSecs! * 1000, fetchOverride(join(opts.baseUrl, action), requestInit)\n        .then(handleResponse)\n        .catch(e => {\n            //  Try again with the opposite credentials mode  ---\n            requestInit.credentials = !_omitMap[opts.baseUrl] ? \"omit\" : \"include\";\n            return fetchOverride(join(opts.baseUrl, action), requestInit)\n                .then(handleResponse)\n                .then(responseBody => {\n                    _omitMap[opts.baseUrl] = !_omitMap[opts.baseUrl];  // The \"opposite\" credentials mode is known to work  ---\n                    return responseBody;\n                });\n        })\n    );\n}\n\nexport function post(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n    if (request.upload_) {\n        delete request.upload_;\n        action += \"?upload_\";\n    }\n    let abortSignal;\n    if (request.abortSignal_) {\n        abortSignal = request.abortSignal_;\n        delete request.abortSignal_;\n    }\n    return doFetch(opts, action, {\n        method: \"post\",\n        body: serializeRequest(request, opts.encodeRequest),\n        signal: abortSignal\n    }, {\n        \"Content-Type\": \"application/x-www-form-urlencoded\",\n        ...header\n    } as any, responseType);\n}\n\nexport function get(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n    let abortSignal;\n    if (request.abortSignal_) {\n        abortSignal = request.abortSignal_;\n        delete request.abortSignal_;\n    }\n    return doFetch(opts, `${action}?${serializeRequest(request, opts.encodeRequest)}`, {\n        method: \"get\",\n        signal: abortSignal\n    }, {\n        ...header\n    } as any, responseType);\n}\n\nexport type SendFunc = (opts: IOptions, action: string, request: any, responseType: ResponseType, header?: any) => Promise<any>;\nexport function send(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n    let retVal: Promise<any>;\n    switch (opts.type) {\n        case \"jsonp\":\n            retVal = jsonp(opts, action, request, responseType, header);\n            break;\n        case \"get\":\n            retVal = get(opts, action, request, responseType, header);\n            break;\n        case \"post\":\n        default:\n            retVal = post(opts, action, request, responseType, header);\n            break;\n    }\n    return retVal;\n}\n\nlet hookedSend: SendFunc = send;\nexport function hookSend(newSend?: SendFunc): SendFunc {\n    const retVal = hookedSend;\n    if (newSend) {\n        hookedSend = newSend;\n    }\n    return retVal;\n}\n\nexport class Connection implements IConnection {\n    protected _opts: IOptions;\n    get baseUrl() { return this._opts.baseUrl; }\n\n    constructor(opts: IOptions) {\n        this.opts(opts);\n    }\n\n    //  IConnection  ---\n    opts(_: Partial<IOptions>): this;\n    opts(): IOptions;\n    opts(_?: Partial<IOptions>): this | IOptions {\n        if (arguments.length === 0) return this._opts;\n        this._opts = { ...DefaultOptions, ..._ };\n        return this;\n    }\n\n    send(action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n        if (this._opts.hookSend) {\n            return this._opts.hookSend(this._opts, action, request, responseType, hookedSend, header);\n        }\n        return hookedSend(this._opts, action, request, responseType, header);\n    }\n\n    clone() {\n        return new Connection(this.opts());\n    }\n}\n\nexport type IConnectionFactory = (opts: IOptions) => IConnection;\nexport let createConnection: IConnectionFactory = function (opts: IOptions): IConnection {\n    return new Connection(opts);\n};\n\nexport function setTransportFactory(newFunc: IConnectionFactory): IConnectionFactory {\n    const retVal = createConnection;\n    createConnection = newFunc;\n    return retVal;\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace FileSpray {\n\n    export type int = number;\n    export type double = number;\n    export type base64Binary = string;\n    export type long = number;\n    export type dateTime = string;\n\n    export enum DFUWUActions {\n        Delete = \"Delete\",\n        Protect = \"Protect\",\n        Unprotect = \"Unprotect\",\n        Restore = \"Restore\",\n        SetToFailed = \"SetToFailed\",\n        Archive = \"Archive\"\n    }\n\n    export enum DFUCommand {\n        copy = \"copy\",\n        remove = \"remove\",\n        move = \"move\",\n        rename = \"rename\",\n        replicate = \"replicate\",\n        import = \"import\",\n        export = \"export\",\n        monitor = \"monitor\",\n        copymerge = \"copymerge\",\n        supercopy = \"supercopy\",\n        publish = \"publish\"\n    }\n\n    export interface AbortDFUWorkunit {\n        wuid?: string;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface AbortDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface Copy {\n        sourceLogicalName?: string;\n        destGroup?: string;\n        destGroupRoxie?: string;\n        destLogicalName?: string;\n        sourceDali?: string;\n        srcusername?: string;\n        srcpassword?: string;\n        overwrite?: boolean;\n        ensure?: boolean;\n        replicate?: boolean;\n        ReplicateOffset?: int;\n        maxConnections?: int;\n        throttle?: int;\n        transferBufferSize?: int;\n        nosplit?: boolean;\n        norecover?: boolean;\n        compress?: boolean;\n        Wrap?: boolean;\n        Multicopy?: boolean;\n        SourceDiffKeyName?: string;\n        DestDiffKeyName?: string;\n        superCopy?: boolean;\n        push?: boolean;\n        pull?: boolean;\n        ifnewer?: boolean;\n        noCommon?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        preserveCompression?: boolean;\n        DFUServerQueue?: string;\n        ExpireDays?: int;\n        KeyCompression?: string;\n        DestNumParts?: int;\n    }\n\n    export interface CopyResponse {\n        Exceptions?: Exceptions;\n        result?: string;\n    }\n\n    export interface CreateDFUPublisherWorkunit {\n        DFUServerQueue?: string;\n    }\n\n    export interface result {\n        ID?: string;\n        DFUServerName?: string;\n        ClusterName?: string;\n        JobName?: string;\n        Queue?: string;\n        User?: string;\n        isProtected?: boolean;\n        Command?: int;\n        CommandMessage?: string;\n        PercentDone?: int;\n        SecsLeft?: int;\n        ProgressMessage?: string;\n        SummaryMessage?: string;\n        State?: int;\n        SourceLogicalName?: string;\n        SourceIP?: string;\n        SourceFilePath?: string;\n        SourceDali?: string;\n        SourceRecordSize?: int;\n        SourceFormat?: int;\n        RowTag?: string;\n        SourceNumParts?: int;\n        SourceDirectory?: string;\n        DestLogicalName?: string;\n        DestGroupName?: string;\n        DestDirectory?: string;\n        DestIP?: string;\n        DestFilePath?: string;\n        DestFormat?: int;\n        DestNumParts?: int;\n        DestRecordSize?: int;\n        Replicate?: boolean;\n        Overwrite?: boolean;\n        Compress?: boolean;\n        SourceCsvSeparate?: string;\n        SourceCsvQuote?: string;\n        SourceCsvTerminate?: string;\n        SourceCsvEscape?: string;\n        TimeStarted?: string;\n        TimeStopped?: string;\n        StateMessage?: string;\n        MonitorEventName?: string;\n        MonitorSub?: boolean;\n        MonitorShotLimit?: int;\n        SourceDiffKeyName?: string;\n        DestDiffKeyName?: string;\n        Archived?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        failIfNoSourceFile?: boolean;\n        recordStructurePresent?: boolean;\n        quotedTerminator?: boolean;\n        preserveCompression?: boolean;\n        expireDays?: int;\n        PreserveFileParts?: boolean;\n        FileAccessCost?: double;\n        KbPerSecAve?: int;\n        KbPerSec?: int;\n    }\n\n    export interface CreateDFUPublisherWorkunitResponse {\n        Exceptions?: Exceptions;\n        result?: result;\n    }\n\n    export interface CreateDFUWorkunit {\n        DFUServerQueue?: string;\n    }\n\n    export interface CreateDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n        result?: result;\n    }\n\n    export interface DFUWUFileRequest {\n        Wuid?: string;\n        Type?: string;\n        PlainText?: string;\n    }\n\n    export interface DFUWUFileResponse {\n        Exceptions?: Exceptions;\n        file?: string;\n    }\n\n    export interface DFUWUSearchRequest {\n\n    }\n\n    export interface ClusterNames {\n        ClusterName?: string[];\n    }\n\n    export interface DFUWUSearchResponse {\n        Exceptions?: Exceptions;\n        ClusterNames?: ClusterNames;\n    }\n\n    export interface wuids {\n        Item?: string[];\n    }\n\n    export interface DFUWorkunitsActionRequest {\n        wuids?: wuids;\n        Type?: DFUWUActions;\n    }\n\n    export interface DFUActionResult {\n        ID?: string;\n        Action?: string;\n        Result?: string;\n    }\n\n    export interface DFUActionResults {\n        DFUActionResult?: DFUActionResult[];\n    }\n\n    export interface DFUWorkunitsActionResponse {\n        Exceptions?: Exceptions;\n        FirstColumn?: string;\n        DFUActionResults?: DFUActionResults;\n    }\n\n    export interface DeleteDFUWorkunit {\n        wuid?: string;\n    }\n\n    export interface DeleteDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n        result?: boolean;\n    }\n\n    export interface DeleteDFUWorkunits {\n        wuids?: wuids;\n    }\n\n    export interface DeleteDFUWorkunitsResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface Names {\n        Item?: string[];\n    }\n\n    export interface DeleteDropZoneFilesRequest {\n        DropZoneName?: string;\n        NetAddress?: string;\n        Path?: string;\n        OS?: string;\n        Names?: Names;\n    }\n\n    export interface Despray {\n        destGroup?: string;\n        sourceLogicalName?: string;\n        destIP?: string;\n        destPath?: string;\n        destPlane?: string;\n        dstxml?: base64Binary;\n        overwrite?: boolean;\n        maxConnections?: int;\n        throttle?: int;\n        transferBufferSize?: int;\n        splitprefix?: string;\n        norecover?: boolean;\n        wrap?: boolean;\n        multiCopy?: boolean;\n        SingleConnection?: boolean;\n        DFUServerQueue?: string;\n        compress?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n    }\n\n    export interface DesprayResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface DfuMonitorRequest {\n        EventName?: string;\n        LogicalName?: string;\n        Ip?: string;\n        Filename?: string;\n        Sub?: boolean;\n        ShotLimit?: int;\n    }\n\n    export interface DfuMonitorResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface DropZoneFileSearchRequest {\n        DropZoneName?: string;\n        Server?: string;\n        ECLWatchVisibleOnly?: boolean;\n        NameFilter?: string;\n    }\n\n    export interface PhysicalFileStruct {\n        name?: string;\n        Server?: string;\n        isDir?: boolean;\n        filesize?: long;\n        modifiedtime?: string;\n        Path?: string;\n        Files?: Files;\n    }\n\n    export interface Files {\n        PhysicalFileStruct?: PhysicalFileStruct[];\n    }\n\n    export interface DropZoneFileSearchResponse {\n        Exceptions?: Exceptions;\n        Files?: Files;\n        Warning?: string;\n    }\n\n    export interface DropZoneFilesRequest {\n        DropZoneName?: string;\n        NetAddress?: string;\n        Path?: string;\n        OS?: string;\n        Subfolder?: string;\n        ECLWatchVisibleOnly?: boolean;\n        DirectoryOnly?: boolean;\n    }\n\n    export interface DropZone {\n        Name?: string;\n        NetAddress?: string;\n        Path?: string;\n        Computer?: string;\n        Linux?: string;\n    }\n\n    export interface DropZones {\n        DropZone?: DropZone[];\n    }\n\n    export interface DropZoneFilesResponse {\n        Exceptions?: Exceptions;\n        DropZoneName?: string;\n        NetAddress?: string;\n        Path?: string;\n        OS?: int;\n        ECLWatchVisibleOnly?: boolean;\n        DropZones?: DropZones;\n        Files?: Files;\n    }\n\n    export interface EchoDateTime {\n        dt?: dateTime;\n    }\n\n    export interface EchoDateTimeResponse {\n        result?: dateTime;\n    }\n\n    export interface FileListRequest {\n        DropZoneName?: string;\n        Netaddr?: string;\n        Path?: string;\n        Mask?: string;\n        OS?: string;\n        DirectoryOnly?: boolean;\n    }\n\n    export interface files {\n        PhysicalFileStruct?: PhysicalFileStruct[];\n    }\n\n    export interface FileListResponse {\n        Exceptions?: Exceptions;\n        Netaddr?: string;\n        Path?: string;\n        Mask?: string;\n        OS?: int;\n        DirectoryOnly?: boolean;\n        AcceptLanguage?: string;\n        files?: files;\n    }\n\n    export interface GetDFUExceptions {\n        wuid?: string;\n    }\n\n    export interface DFUException {\n        Code?: int;\n        Message?: string;\n    }\n\n    export interface result2 {\n        DFUException?: DFUException[];\n    }\n\n    export interface GetDFUExceptionsResponse {\n        Exceptions?: Exceptions;\n        result?: result2;\n    }\n\n    export interface ProgressRequest {\n        wuid?: string;\n    }\n\n    export interface ProgressResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n        PercentDone?: int;\n        SecsLeft?: int;\n        KbPerSecAve?: int;\n        KbPerSec?: int;\n        SlavesDone?: int;\n        TimeTaken?: string;\n        ProgressMessage?: string;\n        SummaryMessage?: string;\n        State?: string;\n    }\n\n    export interface GetDFUServerQueuesRequest {\n        DFUServerName?: string;\n    }\n\n    export interface GetDFUServerQueuesResponse {\n        Exceptions?: Exceptions;\n        Names?: Names;\n    }\n\n    export interface GetDFUWorkunit {\n        wuid?: string;\n    }\n\n    export interface GetDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n        result?: result;\n        AutoRefresh?: int;\n    }\n\n    export interface GetDFUWorkunits {\n        Wuid?: string;\n        Owner?: string;\n        Cluster?: string;\n        StateReq?: string;\n        Command?: DFUCommand;\n        Archived?: boolean;\n        Jobname?: string;\n        PageSize?: long;\n        CurrentPage?: int;\n        PageStartFrom?: long;\n        Sortby?: string;\n        Descending?: boolean;\n        CacheHint?: long;\n        ParentWuid?: string;\n        PublisherWuid?: string;\n        includeProgressMessages?: boolean;\n        includeTimings?: boolean;\n        includeTransferRate?: boolean;\n    }\n\n    export interface DFUWorkunit {\n        ID?: string;\n        DFUServerName?: string;\n        ClusterName?: string;\n        JobName?: string;\n        Queue?: string;\n        User?: string;\n        isProtected?: boolean;\n        Command?: int;\n        CommandMessage?: string;\n        PercentDone?: int;\n        SecsLeft?: int;\n        ProgressMessage?: string;\n        SummaryMessage?: string;\n        State?: int;\n        SourceLogicalName?: string;\n        SourceIP?: string;\n        SourceFilePath?: string;\n        SourceDali?: string;\n        SourceRecordSize?: int;\n        SourceFormat?: int;\n        RowTag?: string;\n        SourceNumParts?: int;\n        SourceDirectory?: string;\n        DestLogicalName?: string;\n        DestGroupName?: string;\n        DestDirectory?: string;\n        DestIP?: string;\n        DestFilePath?: string;\n        DestFormat?: int;\n        DestNumParts?: int;\n        DestRecordSize?: int;\n        Replicate?: boolean;\n        Overwrite?: boolean;\n        Compress?: boolean;\n        SourceCsvSeparate?: string;\n        SourceCsvQuote?: string;\n        SourceCsvTerminate?: string;\n        SourceCsvEscape?: string;\n        TimeStarted?: string;\n        TimeStopped?: string;\n        StateMessage?: string;\n        MonitorEventName?: string;\n        MonitorSub?: boolean;\n        MonitorShotLimit?: int;\n        SourceDiffKeyName?: string;\n        DestDiffKeyName?: string;\n        Archived?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        failIfNoSourceFile?: boolean;\n        recordStructurePresent?: boolean;\n        quotedTerminator?: boolean;\n        preserveCompression?: boolean;\n        expireDays?: int;\n        PreserveFileParts?: boolean;\n        FileAccessCost?: double;\n        KbPerSecAve?: int;\n        KbPerSec?: int;\n    }\n\n    export interface results {\n        DFUWorkunit?: DFUWorkunit[];\n    }\n\n    export interface GetDFUWorkunitsResponse {\n        Exceptions?: Exceptions;\n        results?: results;\n        Command?: DFUCommand;\n        Owner?: string;\n        Cluster?: string;\n        StateReq?: string;\n        PageSize?: long;\n        PrevPage?: long;\n        NextPage?: long;\n        LastPage?: long;\n        NumWUs?: long;\n        PageStartFrom?: long;\n        PageEndAt?: long;\n        First?: boolean;\n        Sortby?: string;\n        Descending?: boolean;\n        BasicQuery?: string;\n        Filters?: string;\n        CacheHint?: long;\n    }\n\n    export interface GetRemoteTargetsRequest {\n\n    }\n\n    export interface TargetNames {\n        Item?: string[];\n    }\n\n    export interface GetRemoteTargetsResponse {\n        Exceptions?: Exceptions;\n        TargetNames?: TargetNames;\n        AllowForeign?: boolean;\n    }\n\n    export interface GetSprayTargetsRequest {\n\n    }\n\n    export interface GroupNode {\n        Name?: string;\n        ClusterType?: string;\n        ReplicateOutputs?: boolean;\n    }\n\n    export interface GroupNodes {\n        GroupNode?: GroupNode[];\n    }\n\n    export interface GetSprayTargetsResponse {\n        Exceptions?: Exceptions;\n        GroupNodes?: GroupNodes;\n    }\n\n    export interface OpenSaveRequest {\n        Location?: string;\n        Path?: string;\n        Name?: string;\n        Type?: string;\n        DateTime?: string;\n        BinaryFile?: boolean;\n    }\n\n    export interface OpenSaveResponse {\n        Exceptions?: Exceptions;\n        Location?: string;\n        Path?: string;\n        Name?: string;\n        Type?: string;\n        DateTime?: string;\n        Viewable?: boolean;\n    }\n\n    export interface FileSprayPingRequest {\n\n    }\n\n    export interface FileSprayPingResponse {\n\n    }\n\n    export interface Rename {\n        srcname?: string;\n        dstname?: string;\n        overwrite?: boolean;\n        DFUServerQueue?: string;\n    }\n\n    export interface RenameResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface Replicate {\n        sourceLogicalName?: string;\n        replicateOffset?: int;\n        cluster?: string;\n        repeatLast?: boolean;\n        onlyRepeated?: boolean;\n        DFUServerQueue?: string;\n    }\n\n    export interface ReplicateResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface ShowResultRequest {\n        Result?: string;\n    }\n\n    export interface ShowResultResponse {\n        Exceptions?: Exceptions;\n        Result?: string;\n    }\n\n    export interface SprayFixed {\n        sourceIP?: string;\n        sourcePlane?: string;\n        sourcePath?: string;\n        srcxml?: base64Binary;\n        sourceFormat?: string;\n        sourceRecordSize?: int;\n        destGroup?: string;\n        destLogicalName?: string;\n        destNumParts?: int;\n        overwrite?: boolean;\n        replicate?: boolean;\n        ReplicateOffset?: int;\n        maxConnections?: int;\n        throttle?: int;\n        transferBufferSize?: int;\n        prefix?: string;\n        nosplit?: boolean;\n        norecover?: boolean;\n        compress?: boolean;\n        push?: boolean;\n        pull?: boolean;\n        noCommon?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        wrap?: boolean;\n        failIfNoSourceFile?: boolean;\n        recordStructurePresent?: boolean;\n        quotedTerminator?: boolean;\n        expireDays?: int;\n        DFUServerQueue?: string;\n    }\n\n    export interface SprayFixedResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface SprayVariable {\n        sourceIP?: string;\n        sourcePlane?: string;\n        sourcePath?: string;\n        srcxml?: base64Binary;\n        sourceMaxRecordSize?: int;\n        sourceFormat?: int;\n        NoSourceCsvSeparator?: boolean;\n        sourceCsvSeparate?: string;\n        sourceCsvTerminate?: string;\n        sourceCsvQuote?: string;\n        sourceCsvEscape?: string;\n        sourceRowTag?: string;\n        destGroup?: string;\n        destLogicalName?: string;\n        destNumParts?: int;\n        overwrite?: boolean;\n        replicate?: boolean;\n        ReplicateOffset?: int;\n        maxConnections?: int;\n        throttle?: int;\n        transferBufferSize?: int;\n        prefix?: string;\n        nosplit?: boolean;\n        norecover?: boolean;\n        compress?: boolean;\n        push?: boolean;\n        pull?: boolean;\n        noCommon?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        failIfNoSourceFile?: boolean;\n        recordStructurePresent?: boolean;\n        quotedTerminator?: boolean;\n        sourceRowPath?: string;\n        isJSON?: boolean;\n        expireDays?: int;\n        DFUServerQueue?: string;\n        srcUsername?: string;\n        srcPassword?: string;\n    }\n\n    export interface SprayResponse {\n        Exceptions?: Exceptions;\n        wuid?: string;\n    }\n\n    export interface SubmitDFUWorkunit {\n        wuid?: string;\n    }\n\n    export interface SubmitDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface wu {\n        ID?: string;\n        DFUServerName?: string;\n        ClusterName?: string;\n        JobName?: string;\n        Queue?: string;\n        User?: string;\n        isProtected?: boolean;\n        Command?: int;\n        CommandMessage?: string;\n        PercentDone?: int;\n        SecsLeft?: int;\n        ProgressMessage?: string;\n        SummaryMessage?: string;\n        State?: int;\n        SourceLogicalName?: string;\n        SourceIP?: string;\n        SourceFilePath?: string;\n        SourceDali?: string;\n        SourceRecordSize?: int;\n        SourceFormat?: int;\n        RowTag?: string;\n        SourceNumParts?: int;\n        SourceDirectory?: string;\n        DestLogicalName?: string;\n        DestGroupName?: string;\n        DestDirectory?: string;\n        DestIP?: string;\n        DestFilePath?: string;\n        DestFormat?: int;\n        DestNumParts?: int;\n        DestRecordSize?: int;\n        Replicate?: boolean;\n        Overwrite?: boolean;\n        Compress?: boolean;\n        SourceCsvSeparate?: string;\n        SourceCsvQuote?: string;\n        SourceCsvTerminate?: string;\n        SourceCsvEscape?: string;\n        TimeStarted?: string;\n        TimeStopped?: string;\n        StateMessage?: string;\n        MonitorEventName?: string;\n        MonitorSub?: boolean;\n        MonitorShotLimit?: int;\n        SourceDiffKeyName?: string;\n        DestDiffKeyName?: string;\n        Archived?: boolean;\n        encrypt?: string;\n        decrypt?: string;\n        failIfNoSourceFile?: boolean;\n        recordStructurePresent?: boolean;\n        quotedTerminator?: boolean;\n        preserveCompression?: boolean;\n        expireDays?: int;\n        PreserveFileParts?: boolean;\n        FileAccessCost?: double;\n        KbPerSecAve?: int;\n        KbPerSec?: int;\n    }\n\n    export interface UpdateDFUWorkunit {\n        wu?: wu;\n        ClusterOrig?: string;\n        JobNameOrig?: string;\n        isProtectedOrig?: boolean;\n        StateOrig?: int;\n    }\n\n    export interface UpdateDFUWorkunitResponse {\n        Exceptions?: Exceptions;\n    }\n\n}\n\nexport class FileSprayServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"FileSpray\", \"1.29\");\n    }\n\n    AbortDFUWorkunit(request: FileSpray.AbortDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.AbortDFUWorkunitResponse> {\n        return this._connection.send(\"AbortDFUWorkunit\", request, \"json\", false, abortSignal, \"AbortDFUWorkunitResponse\");\n    }\n\n    Copy(request: FileSpray.Copy, abortSignal?: AbortSignal): Promise<FileSpray.CopyResponse> {\n        return this._connection.send(\"Copy\", request, \"json\", false, abortSignal, \"CopyResponse\");\n    }\n\n    CreateDFUPublisherWorkunit(request: FileSpray.CreateDFUPublisherWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.CreateDFUPublisherWorkunitResponse> {\n        return this._connection.send(\"CreateDFUPublisherWorkunit\", request, \"json\", false, abortSignal, \"CreateDFUPublisherWorkunitResponse\");\n    }\n\n    CreateDFUWorkunit(request: FileSpray.CreateDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.CreateDFUWorkunitResponse> {\n        return this._connection.send(\"CreateDFUWorkunit\", request, \"json\", false, abortSignal, \"CreateDFUWorkunitResponse\");\n    }\n\n    DFUWUFile(request: FileSpray.DFUWUFileRequest, abortSignal?: AbortSignal): Promise<FileSpray.DFUWUFileResponse> {\n        return this._connection.send(\"DFUWUFile\", request, \"json\", false, abortSignal, \"DFUWUFileResponse\");\n    }\n\n    DFUWUSearch(request: FileSpray.DFUWUSearchRequest, abortSignal?: AbortSignal): Promise<FileSpray.DFUWUSearchResponse> {\n        return this._connection.send(\"DFUWUSearch\", request, \"json\", false, abortSignal, \"DFUWUSearchResponse\");\n    }\n\n    DFUWorkunitsAction(request: FileSpray.DFUWorkunitsActionRequest, abortSignal?: AbortSignal): Promise<FileSpray.DFUWorkunitsActionResponse> {\n        return this._connection.send(\"DFUWorkunitsAction\", request, \"json\", false, abortSignal, \"DFUWorkunitsActionResponse\");\n    }\n\n    DeleteDFUWorkunit(request: FileSpray.DeleteDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.DeleteDFUWorkunitResponse> {\n        return this._connection.send(\"DeleteDFUWorkunit\", request, \"json\", false, abortSignal, \"DeleteDFUWorkunitResponse\");\n    }\n\n    DeleteDFUWorkunits(request: FileSpray.DeleteDFUWorkunits, abortSignal?: AbortSignal): Promise<FileSpray.DeleteDFUWorkunitsResponse> {\n        return this._connection.send(\"DeleteDFUWorkunits\", request, \"json\", false, abortSignal, \"DeleteDFUWorkunitsResponse\");\n    }\n\n    DeleteDropZoneFiles(request: FileSpray.DeleteDropZoneFilesRequest, abortSignal?: AbortSignal): Promise<FileSpray.DFUWorkunitsActionResponse> {\n        return this._connection.send(\"DeleteDropZoneFiles\", request, \"json\", false, abortSignal, \"DFUWorkunitsActionResponse\");\n    }\n\n    Despray(request: FileSpray.Despray, abortSignal?: AbortSignal): Promise<FileSpray.DesprayResponse> {\n        return this._connection.send(\"Despray\", request, \"json\", false, abortSignal, \"DesprayResponse\");\n    }\n\n    DfuMonitor(request: FileSpray.DfuMonitorRequest, abortSignal?: AbortSignal): Promise<FileSpray.DfuMonitorResponse> {\n        return this._connection.send(\"DfuMonitor\", request, \"json\", false, abortSignal, \"DfuMonitorResponse\");\n    }\n\n    DropZoneFileSearch(request: FileSpray.DropZoneFileSearchRequest, abortSignal?: AbortSignal): Promise<FileSpray.DropZoneFileSearchResponse> {\n        return this._connection.send(\"DropZoneFileSearch\", request, \"json\", false, abortSignal, \"DropZoneFileSearchResponse\");\n    }\n\n    DropZoneFiles(request: FileSpray.DropZoneFilesRequest, abortSignal?: AbortSignal): Promise<FileSpray.DropZoneFilesResponse> {\n        return this._connection.send(\"DropZoneFiles\", request, \"json\", false, abortSignal, \"DropZoneFilesResponse\");\n    }\n\n    EchoDateTime(request: FileSpray.EchoDateTime, abortSignal?: AbortSignal): Promise<FileSpray.EchoDateTimeResponse> {\n        return this._connection.send(\"EchoDateTime\", request, \"json\", false, abortSignal, \"EchoDateTimeResponse\");\n    }\n\n    FileList(request: FileSpray.FileListRequest, abortSignal?: AbortSignal): Promise<FileSpray.FileListResponse> {\n        return this._connection.send(\"FileList\", request, \"json\", false, abortSignal, \"FileListResponse\");\n    }\n\n    GetDFUExceptions(request: FileSpray.GetDFUExceptions, abortSignal?: AbortSignal): Promise<FileSpray.GetDFUExceptionsResponse> {\n        return this._connection.send(\"GetDFUExceptions\", request, \"json\", false, abortSignal, \"GetDFUExceptionsResponse\");\n    }\n\n    GetDFUProgress(request: FileSpray.ProgressRequest, abortSignal?: AbortSignal): Promise<FileSpray.ProgressResponse> {\n        return this._connection.send(\"GetDFUProgress\", request, \"json\", false, abortSignal, \"ProgressResponse\");\n    }\n\n    GetDFUServerQueues(request: FileSpray.GetDFUServerQueuesRequest, abortSignal?: AbortSignal): Promise<FileSpray.GetDFUServerQueuesResponse> {\n        return this._connection.send(\"GetDFUServerQueues\", request, \"json\", false, abortSignal, \"GetDFUServerQueuesResponse\");\n    }\n\n    GetDFUWorkunit(request: FileSpray.GetDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.GetDFUWorkunitResponse> {\n        return this._connection.send(\"GetDFUWorkunit\", request, \"json\", false, abortSignal, \"GetDFUWorkunitResponse\");\n    }\n\n    GetDFUWorkunits(request: FileSpray.GetDFUWorkunits, abortSignal?: AbortSignal): Promise<FileSpray.GetDFUWorkunitsResponse> {\n        return this._connection.send(\"GetDFUWorkunits\", request, \"json\", false, abortSignal, \"GetDFUWorkunitsResponse\");\n    }\n\n    GetRemoteTargets(request: FileSpray.GetRemoteTargetsRequest, abortSignal?: AbortSignal): Promise<FileSpray.GetRemoteTargetsResponse> {\n        return this._connection.send(\"GetRemoteTargets\", request, \"json\", false, abortSignal, \"GetRemoteTargetsResponse\");\n    }\n\n    GetSprayTargets(request: FileSpray.GetSprayTargetsRequest, abortSignal?: AbortSignal): Promise<FileSpray.GetSprayTargetsResponse> {\n        return this._connection.send(\"GetSprayTargets\", request, \"json\", false, abortSignal, \"GetSprayTargetsResponse\");\n    }\n\n    OpenSave(request: FileSpray.OpenSaveRequest, abortSignal?: AbortSignal): Promise<FileSpray.OpenSaveResponse> {\n        return this._connection.send(\"OpenSave\", request, \"json\", false, abortSignal, \"OpenSaveResponse\");\n    }\n\n    Ping(request: FileSpray.FileSprayPingRequest, abortSignal?: AbortSignal): Promise<FileSpray.FileSprayPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"FileSprayPingResponse\");\n    }\n\n    Rename(request: FileSpray.Rename, abortSignal?: AbortSignal): Promise<FileSpray.RenameResponse> {\n        return this._connection.send(\"Rename\", request, \"json\", false, abortSignal, \"RenameResponse\");\n    }\n\n    Replicate(request: FileSpray.Replicate, abortSignal?: AbortSignal): Promise<FileSpray.ReplicateResponse> {\n        return this._connection.send(\"Replicate\", request, \"json\", false, abortSignal, \"ReplicateResponse\");\n    }\n\n    ShowResult(request: FileSpray.ShowResultRequest, abortSignal?: AbortSignal): Promise<FileSpray.ShowResultResponse> {\n        return this._connection.send(\"ShowResult\", request, \"json\", false, abortSignal, \"ShowResultResponse\");\n    }\n\n    SprayFixed(request: FileSpray.SprayFixed, abortSignal?: AbortSignal): Promise<FileSpray.SprayFixedResponse> {\n        return this._connection.send(\"SprayFixed\", request, \"json\", false, abortSignal, \"SprayFixedResponse\");\n    }\n\n    SprayVariable(request: FileSpray.SprayVariable, abortSignal?: AbortSignal): Promise<FileSpray.SprayResponse> {\n        return this._connection.send(\"SprayVariable\", request, \"json\", false, abortSignal, \"SprayResponse\");\n    }\n\n    SubmitDFUWorkunit(request: FileSpray.SubmitDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.SubmitDFUWorkunitResponse> {\n        return this._connection.send(\"SubmitDFUWorkunit\", request, \"json\", false, abortSignal, \"SubmitDFUWorkunitResponse\");\n    }\n\n    UpdateDFUWorkunit(request: FileSpray.UpdateDFUWorkunit, abortSignal?: AbortSignal): Promise<FileSpray.UpdateDFUWorkunitResponse> {\n        return this._connection.send(\"UpdateDFUWorkunit\", request, \"json\", false, abortSignal, \"UpdateDFUWorkunitResponse\");\n    }\n\n}\n", "import { FileSprayServiceBase, FileSpray } from \"./wsdl/FileSpray/v1.29/FileSpray.ts\";\n\nexport {\n    FileSpray\n};\n\ntype UpdateDFUWorkunitMinusWU = Omit<FileSpray.UpdateDFUWorkunit, \"wu\">;\ntype UpdateDFUWorkunitWU = FileSpray.UpdateDFUWorkunit[\"wu\"];\n\nexport enum FileSprayStates {\n    unknown = 0,\n    scheduled,\n    queued,\n    started,\n    aborted,\n    failed,\n    finished,\n    monitoring,\n    aborting,\n    notfound = 999\n}\n\nexport interface UpdateDFUWorkunitEx extends UpdateDFUWorkunitMinusWU {\n    wu?: Partial<UpdateDFUWorkunitWU>\n}\n\nexport class FileSprayService extends FileSprayServiceBase {\n\n    DFUWUFileEx(request: FileSpray.DFUWUFileRequest): Promise<string> {\n        return this._connection.send(\"DFUWUFile\", request, \"text\");\n    }\n\n    SprayFixedEx(request: Partial<FileSpray.SprayFixed>): Promise<FileSpray.SprayFixedResponse> {\n        return this._connection.send(\"SprayFixed\", request);\n    }\n\n    SprayVariableEx(request: Partial<FileSpray.SprayVariable>): Promise<FileSpray.SprayResponse> {\n        return this._connection.send(\"SprayVariable\", request, \"json\", false, null, \"SprayResponse\");\n    }\n\n    DesprayEx(request: Partial<FileSpray.Despray>): Promise<FileSpray.DesprayResponse> {\n        return this._connection.send(\"Despray\", request);\n    }\n\n    UpdateDFUWorkunitEx(request: Partial<UpdateDFUWorkunitEx>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\n        return this._connection.send(\"UpdateDFUWorkunit\", request, \"json\", false, undefined, \"UpdateDFUWorkunitResponse\");\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsAccess {\n\n    export type int = number;\n    export type unsignedInt = number;\n    export type long = number;\n    export type base64Binary = string;\n\n    export enum ViewMemberType {\n        User = \"User\",\n        Group = \"Group\"\n    }\n\n    export enum UserSortBy {\n        username = \"username\",\n        fullname = \"fullname\",\n        passwordexpiration = \"passwordexpiration\",\n        employeeID = \"employeeID\",\n        employeeNumber = \"employeeNumber\"\n    }\n\n    export enum GroupSortBy {\n        Name = \"Name\",\n        ManagedBy = \"ManagedBy\"\n    }\n\n    export enum AccountTypeReq {\n        Any = \"Any\",\n        User = \"User\",\n        Group = \"Group\"\n    }\n\n    export enum ResourcePermissionSortBy {\n        Name = \"Name\",\n        Type = \"Type\"\n    }\n\n    export enum ResourceSortBy {\n        Name = \"Name\"\n    }\n\n    export interface AccountPermissionsRequest {\n        AccountName?: string;\n        IsGroup?: boolean;\n        IncludeGroup?: boolean;\n    }\n\n    export interface BasednNames {\n        Item?: string[];\n    }\n\n    export interface Permission {\n        BasednName?: string;\n        rname?: string;\n        prefix?: string;\n        ResourceName?: string;\n        PermissionName?: string;\n        allow_access?: boolean;\n        allow_read?: boolean;\n        allow_write?: boolean;\n        allow_full?: boolean;\n        deny_access?: boolean;\n        deny_read?: boolean;\n        deny_write?: boolean;\n        deny_full?: boolean;\n    }\n\n    export interface Permissions {\n        Permission?: Permission[];\n    }\n\n    export interface GroupPermission {\n        GroupName?: string;\n        BasednNames?: BasednNames;\n        Permissions?: Permissions;\n    }\n\n    export interface GroupPermissions {\n        GroupPermission?: GroupPermission[];\n    }\n\n    export interface AccountPermissionsResponse {\n        AccountName?: string;\n        IsGroup?: boolean;\n        IncludeGroup?: boolean;\n        BasednNames?: BasednNames;\n        Permissions?: Permissions;\n        GroupPermissions?: GroupPermissions;\n    }\n\n    export interface AccountPermissionsV2Request {\n        ResourceName?: string;\n        AccountName?: string;\n        IsGroup?: boolean;\n        IncludeGroup?: boolean;\n    }\n\n    export interface AccountPermissionsV2Response {\n        BasednNames?: BasednNames;\n        Permissions?: Permissions;\n        GroupPermissions?: GroupPermissions;\n    }\n\n    export interface AddUserRequest {\n        username?: string;\n        firstname?: string;\n        lastname?: string;\n        password1?: string;\n        password2?: string;\n        employeeID?: string;\n        employeeNumber?: string;\n    }\n\n    export interface AddUserResponse {\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface AddViewRequest {\n        viewname?: string;\n        description?: string;\n    }\n\n    export interface AddViewResponse {\n        viewname?: string;\n        description?: string;\n    }\n\n    export interface AddViewColumnRequest {\n        viewname?: string;\n        filename?: string;\n        columnname?: string;\n    }\n\n    export interface AddViewColumnResponse {\n        viewname?: string;\n        filename?: string;\n        columnname?: string;\n    }\n\n    export interface AddViewMemberRequest {\n        viewname?: string;\n        membername?: string;\n        membertype?: ViewMemberType;\n    }\n\n    export interface AddViewMemberResponse {\n        viewname?: string;\n        membername?: string;\n        membertype?: ViewMemberType;\n    }\n\n    export interface ClearPermissionsCacheRequest {\n\n    }\n\n    export interface ClearPermissionsCacheResponse {\n        retcode?: int;\n    }\n\n    export interface DeleteViewRequest {\n        viewname?: string;\n    }\n\n    export interface DeleteViewResponse {\n        viewname?: string;\n    }\n\n    export interface DeleteViewColumnRequest {\n        viewname?: string;\n        filename?: string;\n        columnname?: string;\n    }\n\n    export interface DeleteViewColumnResponse {\n        viewname?: string;\n        filename?: string;\n        columnname?: string;\n    }\n\n    export interface DeleteViewMemberRequest {\n        viewname?: string;\n        membername?: string;\n        membertype?: ViewMemberType;\n    }\n\n    export interface DeleteViewMemberResponse {\n        viewname?: string;\n        membername?: string;\n        membertype?: ViewMemberType;\n    }\n\n    export interface DisableScopeScansRequest {\n\n    }\n\n    export interface scopeScansStatus {\n        isEnabled?: boolean;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface DisableScopeScansResponse {\n        scopeScansStatus?: scopeScansStatus;\n    }\n\n    export interface EnableScopeScansRequest {\n\n    }\n\n    export interface EnableScopeScansResponse {\n        scopeScansStatus?: scopeScansStatus;\n    }\n\n    export interface FilePermissionRequest {\n        FileName?: string;\n        UserName?: string;\n        GroupName?: string;\n    }\n\n    export interface User {\n        username?: string;\n        fullname?: string;\n        passwordexpiration?: string;\n        employeeID?: string;\n        employeeNumber?: string;\n    }\n\n    export interface Users {\n        User?: User[];\n    }\n\n    export interface Group {\n        name?: string;\n        deletable?: boolean;\n        groupOwner?: string;\n        groupDesc?: string;\n    }\n\n    export interface Groups {\n        Group?: Group[];\n    }\n\n    export interface FilePermissionResponse {\n        NoSecMngr?: boolean;\n        FileName?: string;\n        UserName?: string;\n        GroupName?: string;\n        toomany?: boolean;\n        Users?: Users;\n        Groups?: Groups;\n        UserPermission?: string;\n    }\n\n    export interface groupnames {\n        Item?: string[];\n    }\n\n    export interface GroupActionRequest {\n        groupnames?: groupnames;\n        ActionType?: string;\n        DeletePermission?: boolean;\n    }\n\n    export interface GroupActionResponse {\n        Groupnames?: string;\n        Permissions?: Permissions;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface GroupAddRequest {\n        groupname?: string;\n        groupOwner?: string;\n        groupDesc?: string;\n    }\n\n    export interface GroupAddResponse {\n        groupname?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface GroupEditRequest {\n        groupname?: string;\n    }\n\n    export interface GroupEditResponse {\n        groupname?: string;\n        Users?: Users;\n    }\n\n    export interface usernames {\n        Item?: string[];\n    }\n\n    export interface GroupMemberEditRequest {\n        groupname?: string;\n        action?: string;\n        usernames?: usernames;\n    }\n\n    export interface GroupMemberEditResponse {\n        groupname?: string;\n        action?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface GroupMemberEditInputRequest {\n        searchinput?: string;\n        groupname?: string;\n    }\n\n    export interface GroupMemberEditInputResponse {\n        groupname?: string;\n        toomany?: boolean;\n        Users?: Users;\n    }\n\n    export interface GroupMemberQueryRequest {\n        GroupName?: string;\n        PageSize?: unsignedInt;\n        PageStartFrom?: long;\n        SortBy?: UserSortBy;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface GroupMemberQueryResponse {\n        NoSecMngr?: boolean;\n        Users?: Users;\n        TotalUsers?: long;\n        CacheHint?: long;\n    }\n\n    export interface GroupQueryRequest {\n        PageSize?: unsignedInt;\n        PageStartFrom?: long;\n        SortBy?: GroupSortBy;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface GroupQueryResponse {\n        NoSecMngr?: boolean;\n        Groups?: Groups;\n        TotalGroups?: long;\n        CacheHint?: long;\n    }\n\n    export interface GroupRequest {\n\n    }\n\n    export interface GroupResponse {\n        NoSecMngr?: boolean;\n        Groups?: Groups;\n    }\n\n    export interface PermissionActionRequest {\n        rname?: string;\n        prefix?: string;\n        action?: string;\n        account_name?: string;\n        account_type?: int;\n        allow_access?: boolean;\n        allow_read?: boolean;\n        allow_write?: boolean;\n        allow_full?: boolean;\n        deny_access?: boolean;\n        deny_read?: boolean;\n        deny_write?: boolean;\n        deny_full?: boolean;\n        user?: string;\n        group?: string;\n        BasednName?: string;\n        ResourceName?: string;\n    }\n\n    export interface PermissionActionResponse {\n        AccountName?: string;\n        IsGroup?: boolean;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface BasednsRequest {\n\n    }\n\n    export interface Basedn {\n        name?: string;\n        basedn?: string;\n        rtype?: string;\n        rtitle?: string;\n        templatename?: string;\n    }\n\n    export interface Basedns {\n        Basedn?: Basedn[];\n    }\n\n    export interface BasednsResponse {\n        NoSecMngr?: boolean;\n        Basedns?: Basedns;\n    }\n\n    export interface names {\n        Item?: string[];\n    }\n\n    export interface PermissionsResetRequest {\n        BasednName?: string;\n        prefix?: string;\n        names?: names;\n        allow_access?: boolean;\n        allow_read?: boolean;\n        allow_write?: boolean;\n        allow_full?: boolean;\n        deny_access?: boolean;\n        deny_read?: boolean;\n        deny_write?: boolean;\n        deny_full?: boolean;\n        userarray?: string;\n        grouparray?: string;\n    }\n\n    export interface PermissionsResetResponse {\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface ws_accessPingRequest {\n\n    }\n\n    export interface ws_accessPingResponse {\n\n    }\n\n    export interface QueryScopeScansEnabledRequest {\n\n    }\n\n    export interface QueryScopeScansEnabledResponse {\n        scopeScansStatus?: scopeScansStatus;\n    }\n\n    export interface QueryUserViewColumnsRequest {\n        username?: string;\n    }\n\n    export interface ViewColumn {\n        viewname?: string;\n        filename?: string;\n        columnname?: string;\n    }\n\n    export interface viewcolumns {\n        ViewColumn?: ViewColumn[];\n    }\n\n    export interface QueryUserViewColumnsResponse {\n        username?: string;\n        viewcolumns?: viewcolumns;\n    }\n\n    export interface QueryViewColumnsRequest {\n        viewname?: string;\n    }\n\n    export interface QueryViewColumnsResponse {\n        viewname?: string;\n        viewcolumns?: viewcolumns;\n    }\n\n    export interface QueryViewMembersRequest {\n        viewname?: string;\n    }\n\n    export interface ViewMember {\n        viewname?: string;\n        name?: string;\n        membertype?: ViewMemberType;\n    }\n\n    export interface viewmembers {\n        ViewMember?: ViewMember[];\n    }\n\n    export interface QueryViewMembersResponse {\n        viewname?: string;\n        viewmembers?: viewmembers;\n    }\n\n    export interface QueryViewsRequest {\n\n    }\n\n    export interface View {\n        viewname?: string;\n        description?: string;\n    }\n\n    export interface views {\n        View?: View[];\n    }\n\n    export interface QueryViewsResponse {\n        views?: views;\n    }\n\n    export interface ResourceAddRequest {\n        BasednName?: string;\n        name?: string;\n        description?: string;\n        prefix?: string;\n    }\n\n    export interface ResourceAddResponse {\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface ResourceDeleteRequest {\n        BasednName?: string;\n        prefix?: string;\n        names?: names;\n        DoUpdate?: int;\n    }\n\n    export interface ResourceDeleteResponse {\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface ResourcePermissionQueryRequest {\n        BasednName?: string;\n        prefix?: string;\n        Name?: string;\n        AccountType?: AccountTypeReq;\n        PageSize?: unsignedInt;\n        PageStartFrom?: long;\n        SortBy?: ResourcePermissionSortBy;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface Permission2 {\n        account_name?: string;\n        escaped_account_name?: string;\n        account_type?: int;\n        allow_access?: boolean;\n        allow_read?: boolean;\n        allow_write?: boolean;\n        allow_full?: boolean;\n        deny_access?: boolean;\n        deny_read?: boolean;\n        deny_write?: boolean;\n        deny_full?: boolean;\n    }\n\n    export interface Permissions2 {\n        Permission?: Permission2[];\n    }\n\n    export interface ResourcePermissionQueryResponse {\n        NoSecMngr?: boolean;\n        Permissions?: Permissions2;\n        TotalResourcePermissions?: long;\n        CacheHint?: long;\n    }\n\n    export interface ResourcePermissionsRequest {\n        name?: string;\n        BasednName?: string;\n        prefix?: string;\n    }\n\n    export interface ResourcePermissionsResponse {\n        Permissions?: Permissions2;\n    }\n\n    export interface ResourceQueryRequest {\n        BasednName?: string;\n        prefix?: string;\n        Name?: string;\n        PageSize?: unsignedInt;\n        PageStartFrom?: long;\n        SortBy?: ResourceSortBy;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface Resource {\n        name?: string;\n        description?: string;\n        isSpecial?: boolean;\n    }\n\n    export interface Resources {\n        Resource?: Resource[];\n    }\n\n    export interface ResourceQueryResponse {\n        NoSecMngr?: boolean;\n        Resources?: Resources;\n        TotalResources?: long;\n        CacheHint?: long;\n    }\n\n    export interface ResourcesRequest {\n        templatename?: string;\n        BasednName?: string;\n        prefix?: string;\n        searchinput?: string;\n    }\n\n    export interface ResourcesResponse {\n        Resources?: Resources;\n        default_basedn?: string;\n        default_name?: string;\n        toomany?: boolean;\n        scopeScansStatus?: scopeScansStatus;\n    }\n\n    export interface UserAccountExportRequest {\n        usernames?: usernames;\n        groupnames?: groupnames;\n    }\n\n    export interface UserAccountExportResponse {\n        Result?: base64Binary;\n    }\n\n    export interface UserActionRequest {\n        action?: string;\n        ActionType?: string;\n        usernames?: usernames;\n    }\n\n    export interface UserActionResponse {\n        action?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserEditRequest {\n        username?: string;\n    }\n\n    export interface UserEditResponse {\n        username?: string;\n        isLDAPAdmin?: boolean;\n        Groups?: Groups;\n    }\n\n    export interface UserGroupEditRequest {\n        username?: string;\n        action?: string;\n        groupnames?: groupnames;\n    }\n\n    export interface UserGroupEditResponse {\n        username?: string;\n        action?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserGroupEditInputRequest {\n        username?: string;\n    }\n\n    export interface UserGroupEditInputResponse {\n        username?: string;\n        Groups?: Groups;\n    }\n\n    export interface UserInfoEditRequest {\n        username?: string;\n        firstname?: string;\n        lastname?: string;\n        employeeID?: string;\n        employeeNumber?: string;\n    }\n\n    export interface UserInfoEditResponse {\n        username?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserInfoEditInputRequest {\n        username?: string;\n    }\n\n    export interface UserInfoEditInputResponse {\n        username?: string;\n        firstname?: string;\n        lastname?: string;\n        employeeID?: string;\n        PasswordExpiration?: string;\n        employeeNumber?: string;\n    }\n\n    export interface UserPosixRequest {\n        username?: string;\n        posixenabled?: boolean;\n        gidnumber?: string;\n        uidnumber?: string;\n        homedirectory?: string;\n        loginshell?: string;\n    }\n\n    export interface UserPosixResponse {\n        username?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserPosixInputRequest {\n        username?: string;\n    }\n\n    export interface UserPosixInputResponse {\n        username?: string;\n        posixenabled?: boolean;\n        gidnumber?: string;\n        uidnumber?: string;\n        homedirectory?: string;\n        loginshell?: string;\n    }\n\n    export interface UserQueryRequest {\n        Name?: string;\n        PageSize?: unsignedInt;\n        PageStartFrom?: long;\n        SortBy?: UserSortBy;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface UserQueryResponse {\n        NoSecMngr?: boolean;\n        Users?: Users;\n        TotalUsers?: long;\n        CacheHint?: long;\n    }\n\n    export interface UserResetPassRequest {\n        username?: string;\n        newPassword?: string;\n        newPasswordRetype?: string;\n    }\n\n    export interface UserResetPassResponse {\n        username?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserResetPassInputRequest {\n        username?: string;\n    }\n\n    export interface UserResetPassInputResponse {\n        username?: string;\n    }\n\n    export interface UserSudoersRequest {\n        username?: string;\n        action?: string;\n        sudoHost?: string;\n        sudoCommand?: string;\n        sudoOption?: string;\n    }\n\n    export interface UserSudoersResponse {\n        username?: string;\n        retcode?: int;\n        retmsg?: string;\n    }\n\n    export interface UserSudoersInputRequest {\n        username?: string;\n    }\n\n    export interface UserSudoersInputResponse {\n        username?: string;\n        insudoers?: boolean;\n        sudoHost?: string;\n        sudoCommand?: string;\n        sudoOption?: string;\n    }\n\n    export interface UserRequest {\n        searchinput?: string;\n    }\n\n    export interface UserResponse {\n        NoSecMngr?: boolean;\n        toomany?: boolean;\n        posixok?: boolean;\n        Users?: Users;\n    }\n\n}\n\nexport class AccessServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_access\", \"1.17\");\n    }\n\n    AccountPermissions(request: WsAccess.AccountPermissionsRequest, abortSignal?: AbortSignal): Promise<WsAccess.AccountPermissionsResponse> {\n        return this._connection.send(\"AccountPermissions\", request, \"json\", false, abortSignal, \"AccountPermissionsResponse\");\n    }\n\n    AccountPermissionsV2(request: WsAccess.AccountPermissionsV2Request, abortSignal?: AbortSignal): Promise<WsAccess.AccountPermissionsV2Response> {\n        return this._connection.send(\"AccountPermissionsV2\", request, \"json\", false, abortSignal, \"AccountPermissionsV2Response\");\n    }\n\n    AddUser(request: WsAccess.AddUserRequest, abortSignal?: AbortSignal): Promise<WsAccess.AddUserResponse> {\n        return this._connection.send(\"AddUser\", request, \"json\", false, abortSignal, \"AddUserResponse\");\n    }\n\n    AddView(request: WsAccess.AddViewRequest, abortSignal?: AbortSignal): Promise<WsAccess.AddViewResponse> {\n        return this._connection.send(\"AddView\", request, \"json\", false, abortSignal, \"AddViewResponse\");\n    }\n\n    AddViewColumn(request: WsAccess.AddViewColumnRequest, abortSignal?: AbortSignal): Promise<WsAccess.AddViewColumnResponse> {\n        return this._connection.send(\"AddViewColumn\", request, \"json\", false, abortSignal, \"AddViewColumnResponse\");\n    }\n\n    AddViewMember(request: WsAccess.AddViewMemberRequest, abortSignal?: AbortSignal): Promise<WsAccess.AddViewMemberResponse> {\n        return this._connection.send(\"AddViewMember\", request, \"json\", false, abortSignal, \"AddViewMemberResponse\");\n    }\n\n    ClearPermissionsCache(request: WsAccess.ClearPermissionsCacheRequest, abortSignal?: AbortSignal): Promise<WsAccess.ClearPermissionsCacheResponse> {\n        return this._connection.send(\"ClearPermissionsCache\", request, \"json\", false, abortSignal, \"ClearPermissionsCacheResponse\");\n    }\n\n    DeleteView(request: WsAccess.DeleteViewRequest, abortSignal?: AbortSignal): Promise<WsAccess.DeleteViewResponse> {\n        return this._connection.send(\"DeleteView\", request, \"json\", false, abortSignal, \"DeleteViewResponse\");\n    }\n\n    DeleteViewColumn(request: WsAccess.DeleteViewColumnRequest, abortSignal?: AbortSignal): Promise<WsAccess.DeleteViewColumnResponse> {\n        return this._connection.send(\"DeleteViewColumn\", request, \"json\", false, abortSignal, \"DeleteViewColumnResponse\");\n    }\n\n    DeleteViewMember(request: WsAccess.DeleteViewMemberRequest, abortSignal?: AbortSignal): Promise<WsAccess.DeleteViewMemberResponse> {\n        return this._connection.send(\"DeleteViewMember\", request, \"json\", false, abortSignal, \"DeleteViewMemberResponse\");\n    }\n\n    DisableScopeScans(request: WsAccess.DisableScopeScansRequest, abortSignal?: AbortSignal): Promise<WsAccess.DisableScopeScansResponse> {\n        return this._connection.send(\"DisableScopeScans\", request, \"json\", false, abortSignal, \"DisableScopeScansResponse\");\n    }\n\n    EnableScopeScans(request: WsAccess.EnableScopeScansRequest, abortSignal?: AbortSignal): Promise<WsAccess.EnableScopeScansResponse> {\n        return this._connection.send(\"EnableScopeScans\", request, \"json\", false, abortSignal, \"EnableScopeScansResponse\");\n    }\n\n    FilePermission(request: WsAccess.FilePermissionRequest, abortSignal?: AbortSignal): Promise<WsAccess.FilePermissionResponse> {\n        return this._connection.send(\"FilePermission\", request, \"json\", false, abortSignal, \"FilePermissionResponse\");\n    }\n\n    GroupAction(request: WsAccess.GroupActionRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupActionResponse> {\n        return this._connection.send(\"GroupAction\", request, \"json\", false, abortSignal, \"GroupActionResponse\");\n    }\n\n    GroupAdd(request: WsAccess.GroupAddRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupAddResponse> {\n        return this._connection.send(\"GroupAdd\", request, \"json\", false, abortSignal, \"GroupAddResponse\");\n    }\n\n    GroupEdit(request: WsAccess.GroupEditRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupEditResponse> {\n        return this._connection.send(\"GroupEdit\", request, \"json\", false, abortSignal, \"GroupEditResponse\");\n    }\n\n    GroupMemberEdit(request: WsAccess.GroupMemberEditRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupMemberEditResponse> {\n        return this._connection.send(\"GroupMemberEdit\", request, \"json\", false, abortSignal, \"GroupMemberEditResponse\");\n    }\n\n    GroupMemberEditInput(request: WsAccess.GroupMemberEditInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupMemberEditInputResponse> {\n        return this._connection.send(\"GroupMemberEditInput\", request, \"json\", false, abortSignal, \"GroupMemberEditInputResponse\");\n    }\n\n    GroupMemberQuery(request: WsAccess.GroupMemberQueryRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupMemberQueryResponse> {\n        return this._connection.send(\"GroupMemberQuery\", request, \"json\", false, abortSignal, \"GroupMemberQueryResponse\");\n    }\n\n    GroupQuery(request: WsAccess.GroupQueryRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupQueryResponse> {\n        return this._connection.send(\"GroupQuery\", request, \"json\", false, abortSignal, \"GroupQueryResponse\");\n    }\n\n    Groups(request: WsAccess.GroupRequest, abortSignal?: AbortSignal): Promise<WsAccess.GroupResponse> {\n        return this._connection.send(\"Groups\", request, \"json\", false, abortSignal, \"GroupResponse\");\n    }\n\n    PermissionAction(request: WsAccess.PermissionActionRequest, abortSignal?: AbortSignal): Promise<WsAccess.PermissionActionResponse> {\n        return this._connection.send(\"PermissionAction\", request, \"json\", false, abortSignal, \"PermissionActionResponse\");\n    }\n\n    Permissions(request: WsAccess.BasednsRequest, abortSignal?: AbortSignal): Promise<WsAccess.BasednsResponse> {\n        return this._connection.send(\"Permissions\", request, \"json\", false, abortSignal, \"BasednsResponse\");\n    }\n\n    PermissionsReset(request: WsAccess.PermissionsResetRequest, abortSignal?: AbortSignal): Promise<WsAccess.PermissionsResetResponse> {\n        return this._connection.send(\"PermissionsReset\", request, \"json\", false, abortSignal, \"PermissionsResetResponse\");\n    }\n\n    Ping(request: WsAccess.ws_accessPingRequest, abortSignal?: AbortSignal): Promise<WsAccess.ws_accessPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"ws_accessPingResponse\");\n    }\n\n    QueryScopeScansEnabled(request: WsAccess.QueryScopeScansEnabledRequest, abortSignal?: AbortSignal): Promise<WsAccess.QueryScopeScansEnabledResponse> {\n        return this._connection.send(\"QueryScopeScansEnabled\", request, \"json\", false, abortSignal, \"QueryScopeScansEnabledResponse\");\n    }\n\n    QueryUserViewColumns(request: WsAccess.QueryUserViewColumnsRequest, abortSignal?: AbortSignal): Promise<WsAccess.QueryUserViewColumnsResponse> {\n        return this._connection.send(\"QueryUserViewColumns\", request, \"json\", false, abortSignal, \"QueryUserViewColumnsResponse\");\n    }\n\n    QueryViewColumns(request: WsAccess.QueryViewColumnsRequest, abortSignal?: AbortSignal): Promise<WsAccess.QueryViewColumnsResponse> {\n        return this._connection.send(\"QueryViewColumns\", request, \"json\", false, abortSignal, \"QueryViewColumnsResponse\");\n    }\n\n    QueryViewMembers(request: WsAccess.QueryViewMembersRequest, abortSignal?: AbortSignal): Promise<WsAccess.QueryViewMembersResponse> {\n        return this._connection.send(\"QueryViewMembers\", request, \"json\", false, abortSignal, \"QueryViewMembersResponse\");\n    }\n\n    QueryViews(request: WsAccess.QueryViewsRequest, abortSignal?: AbortSignal): Promise<WsAccess.QueryViewsResponse> {\n        return this._connection.send(\"QueryViews\", request, \"json\", false, abortSignal, \"QueryViewsResponse\");\n    }\n\n    ResourceAdd(request: WsAccess.ResourceAddRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourceAddResponse> {\n        return this._connection.send(\"ResourceAdd\", request, \"json\", false, abortSignal, \"ResourceAddResponse\");\n    }\n\n    ResourceDelete(request: WsAccess.ResourceDeleteRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourceDeleteResponse> {\n        return this._connection.send(\"ResourceDelete\", request, \"json\", false, abortSignal, \"ResourceDeleteResponse\");\n    }\n\n    ResourcePermissionQuery(request: WsAccess.ResourcePermissionQueryRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourcePermissionQueryResponse> {\n        return this._connection.send(\"ResourcePermissionQuery\", request, \"json\", false, abortSignal, \"ResourcePermissionQueryResponse\");\n    }\n\n    ResourcePermissions(request: WsAccess.ResourcePermissionsRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourcePermissionsResponse> {\n        return this._connection.send(\"ResourcePermissions\", request, \"json\", false, abortSignal, \"ResourcePermissionsResponse\");\n    }\n\n    ResourceQuery(request: WsAccess.ResourceQueryRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourceQueryResponse> {\n        return this._connection.send(\"ResourceQuery\", request, \"json\", false, abortSignal, \"ResourceQueryResponse\");\n    }\n\n    Resources(request: WsAccess.ResourcesRequest, abortSignal?: AbortSignal): Promise<WsAccess.ResourcesResponse> {\n        return this._connection.send(\"Resources\", request, \"json\", false, abortSignal, \"ResourcesResponse\");\n    }\n\n    UserAccountExport(request: WsAccess.UserAccountExportRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserAccountExportResponse> {\n        return this._connection.send(\"UserAccountExport\", request, \"json\", false, abortSignal, \"UserAccountExportResponse\");\n    }\n\n    UserAction(request: WsAccess.UserActionRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserActionResponse> {\n        return this._connection.send(\"UserAction\", request, \"json\", false, abortSignal, \"UserActionResponse\");\n    }\n\n    UserEdit(request: WsAccess.UserEditRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserEditResponse> {\n        return this._connection.send(\"UserEdit\", request, \"json\", false, abortSignal, \"UserEditResponse\");\n    }\n\n    UserGroupEdit(request: WsAccess.UserGroupEditRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserGroupEditResponse> {\n        return this._connection.send(\"UserGroupEdit\", request, \"json\", false, abortSignal, \"UserGroupEditResponse\");\n    }\n\n    UserGroupEditInput(request: WsAccess.UserGroupEditInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserGroupEditInputResponse> {\n        return this._connection.send(\"UserGroupEditInput\", request, \"json\", false, abortSignal, \"UserGroupEditInputResponse\");\n    }\n\n    UserInfoEdit(request: WsAccess.UserInfoEditRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserInfoEditResponse> {\n        return this._connection.send(\"UserInfoEdit\", request, \"json\", false, abortSignal, \"UserInfoEditResponse\");\n    }\n\n    UserInfoEditInput(request: WsAccess.UserInfoEditInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserInfoEditInputResponse> {\n        return this._connection.send(\"UserInfoEditInput\", request, \"json\", false, abortSignal, \"UserInfoEditInputResponse\");\n    }\n\n    UserPosix(request: WsAccess.UserPosixRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserPosixResponse> {\n        return this._connection.send(\"UserPosix\", request, \"json\", false, abortSignal, \"UserPosixResponse\");\n    }\n\n    UserPosixInput(request: WsAccess.UserPosixInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserPosixInputResponse> {\n        return this._connection.send(\"UserPosixInput\", request, \"json\", false, abortSignal, \"UserPosixInputResponse\");\n    }\n\n    UserQuery(request: WsAccess.UserQueryRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserQueryResponse> {\n        return this._connection.send(\"UserQuery\", request, \"json\", false, abortSignal, \"UserQueryResponse\");\n    }\n\n    UserResetPass(request: WsAccess.UserResetPassRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserResetPassResponse> {\n        return this._connection.send(\"UserResetPass\", request, \"json\", false, abortSignal, \"UserResetPassResponse\");\n    }\n\n    UserResetPassInput(request: WsAccess.UserResetPassInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserResetPassInputResponse> {\n        return this._connection.send(\"UserResetPassInput\", request, \"json\", false, abortSignal, \"UserResetPassInputResponse\");\n    }\n\n    UserSudoers(request: WsAccess.UserSudoersRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserSudoersResponse> {\n        return this._connection.send(\"UserSudoers\", request, \"json\", false, abortSignal, \"UserSudoersResponse\");\n    }\n\n    UserSudoersInput(request: WsAccess.UserSudoersInputRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserSudoersInputResponse> {\n        return this._connection.send(\"UserSudoersInput\", request, \"json\", false, abortSignal, \"UserSudoersInputResponse\");\n    }\n\n    Users(request: WsAccess.UserRequest, abortSignal?: AbortSignal): Promise<WsAccess.UserResponse> {\n        return this._connection.send(\"Users\", request, \"json\", false, abortSignal, \"UserResponse\");\n    }\n\n}\n", "import { AccessServiceBase, WsAccess } from \"./wsdl/ws_access/v1.17/ws_access.ts\";\n\nexport {\n    WsAccess\n};\n\nexport class AccessService extends AccessServiceBase {\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsAccount {\n\n    export type int = number;\n\n    export interface MyAccountRequest {\n\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface Groups {\n        Group?: string[];\n    }\n\n    export interface MyAccountResponse {\n        Exceptions?: Exceptions;\n        username?: string;\n        firstName?: string;\n        lastName?: string;\n        passwordExpiration?: string;\n        passwordDaysRemaining?: int;\n        passwordExpirationWarningDays?: int;\n        employeeID?: string;\n        distinguishedName?: string;\n        accountType?: string;\n        passwordNeverExpires?: boolean;\n        passwordIsExpired?: boolean;\n        CanUpdatePassword?: boolean;\n        accountStatus?: int;\n        Groups?: Groups;\n    }\n\n    export interface ws_accountPingRequest {\n\n    }\n\n    export interface ws_accountPingResponse {\n\n    }\n\n    export interface UpdateUserRequest {\n        username?: string;\n        oldpass?: string;\n        newpass1?: string;\n        newpass2?: string;\n    }\n\n    export interface UpdateUserResponse {\n        Exceptions?: Exceptions;\n        retcode?: int;\n        message?: string;\n    }\n\n    export interface UpdateUserInputRequest {\n\n    }\n\n    export interface UpdateUserInputResponse {\n        Exceptions?: Exceptions;\n        username?: string;\n    }\n\n    export interface VerifyUserRequest {\n        application?: string;\n        version?: string;\n    }\n\n    export interface VerifyUserResponse {\n        Exceptions?: Exceptions;\n        retcode?: int;\n    }\n\n}\n\nexport class AccountServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_account\", \"1.07\");\n    }\n\n    MyAccount(request: WsAccount.MyAccountRequest, abortSignal?: AbortSignal): Promise<WsAccount.MyAccountResponse> {\n        return this._connection.send(\"MyAccount\", request, \"json\", false, abortSignal, \"MyAccountResponse\");\n    }\n\n    Ping(request: WsAccount.ws_accountPingRequest, abortSignal?: AbortSignal): Promise<WsAccount.ws_accountPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"ws_accountPingResponse\");\n    }\n\n    UpdateUser(request: WsAccount.UpdateUserRequest, abortSignal?: AbortSignal): Promise<WsAccount.UpdateUserResponse> {\n        return this._connection.send(\"UpdateUser\", request, \"json\", false, abortSignal, \"UpdateUserResponse\");\n    }\n\n    UpdateUserInput(request: WsAccount.UpdateUserInputRequest, abortSignal?: AbortSignal): Promise<WsAccount.UpdateUserInputResponse> {\n        return this._connection.send(\"UpdateUserInput\", request, \"json\", false, abortSignal, \"UpdateUserInputResponse\");\n    }\n\n    VerifyUser(request: WsAccount.VerifyUserRequest, abortSignal?: AbortSignal): Promise<WsAccount.VerifyUserResponse> {\n        return this._connection.send(\"VerifyUser\", request, \"json\", false, abortSignal, \"VerifyUserResponse\");\n    }\n\n}\n", "import { AccountServiceBase, WsAccount } from \"./wsdl/ws_account/v1.07/ws_account.ts\";\nimport { ESPExceptions } from \"../espConnection.ts\";\n\nexport {\n    type WsAccount\n};\n\nexport class AccountService extends AccountServiceBase {\n\n    VerifyUser(request: WsAccount.VerifyUserRequest): Promise<WsAccount.VerifyUserResponse> {\n        return this._connection.send(\"VerifyUser\", request)\n            .catch((e: ESPExceptions) => {\n                //  old client version warning  ---\n                if (e.isESPExceptions && e.Exception.some(exception => exception.Code === 20043)) {\n                    return {\n                        retcode: 20043,\n                        Exceptions: {\n                            Source: \"wsAccount\",\n                            Exception: e.Exception\n                        }\n                    };\n                }\n                throw e;\n            });\n    }\n\n}\n", "import { scopedLogger } from \"@hpcc-js/util\";\nimport type { V1Pod } from \"@kubernetes/client-node\";\nimport type { WsCloud as WsCloudV1 } from \"./wsdl/WsCloud/v1/WsCloud.ts\";\nimport { CloudServiceBase, WsCloud } from \"./wsdl/WsCloud/v1.02/WsCloud.ts\";\n\nconst logger = scopedLogger(\"@hpcc-js/comms/services/wsCloud.ts\");\n\nexport {\n    type WsCloud\n};\n\nfunction isGetPODsResponse_v1_02(response: any): response is WsCloud.GetPODsResponse {\n    return response?.Pods !== undefined;\n}\n\nfunction mapPorts(pod: V1Pod): WsCloud.Port[] {\n    return pod.spec?.containers?.reduce((prev, curr) => {\n        curr.ports?.forEach(p => {\n            prev.push({\n                ContainerPort: p.containerPort,\n                Name: p.name,\n                Protocol: p.protocol\n            });\n        });\n        return prev;\n    }, [] as WsCloud.Port[]) ?? [];\n}\n\nfunction mapPods(pods: V1Pod[]): WsCloud.Pod[] {\n    return pods\n        .filter(pod => {\n            const labels = pod?.metadata?.labels ?? {};\n            return labels.hasOwnProperty(\"app.kubernetes.io/part-of\") && labels[\"app.kubernetes.io/part-of\"] === \"HPCC-Platform\";\n        })\n        .map((pod: V1Pod): WsCloud.Pod => {\n            const started = new Date(pod.metadata?.creationTimestamp);\n            return {\n                Name: pod.metadata.name,\n                Status: pod.status?.phase,\n                CreationTimestamp: started.toISOString(),\n                ContainerName: pod.status?.containerStatuses?.reduce((prev, curr) => {\n                    if (curr.name) {\n                        prev.push(curr.name);\n                    } return prev;\n                }, [] as string[]).join(\", \") ?? \"\",\n                ContainerCount: pod.spec?.containers?.length ?? 0,\n                ContainerReadyCount: pod.status?.containerStatuses?.reduce((prev, curr) => prev + (curr.ready ? 1 : 0), 0),\n                ContainerRestartCount: pod.status?.containerStatuses?.reduce((prev, curr) => prev + curr.restartCount, 0),\n                Ports: {\n                    Port: mapPorts(pod)\n                },\n            };\n        })\n        ;\n}\n\nexport class CloudService extends CloudServiceBase {\n\n    getPODs(): Promise<WsCloud.Pod[]> {\n        return super.GetPODs({}).then((response: WsCloud.GetPODsResponse | WsCloudV1.GetPODsResponse) => {\n            if (isGetPODsResponse_v1_02(response)) {\n                return response.Pods?.Pod ?? [];\n            }\n            try {\n                const obj = typeof response.Result === \"string\" ? JSON.parse(response.Result) : response.Result;\n                return mapPods(obj?.items ?? []);\n            } catch (error) {\n                logger.error(`Error parsing V1Pods json '${(error instanceof Error ? error.message : String(error))}'`);\n                return [];\n            }\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsCloud {\n\n    export type int = number;\n\n    export interface GetPODsRequest {\n\n    }\n\n    export interface Port {\n        ContainerPort?: int;\n        Name?: string;\n        Protocol?: string;\n    }\n\n    export interface Ports {\n        Port?: Port[];\n    }\n\n    export interface Pod {\n        Name?: string;\n        Status?: string;\n        CreationTimestamp?: string;\n        ContainerName?: string;\n        ContainerCount?: int;\n        ContainerReadyCount?: int;\n        ContainerRestartCount?: int;\n        Ports?: Ports;\n    }\n\n    export interface Pods {\n        Pod?: Pod[];\n    }\n\n    export interface GetPODsResponse {\n        Pods?: Pods;\n    }\n\n    export interface GetServicesRequest {\n\n    }\n\n    export interface GetServicesResponse {\n        Result?: string;\n    }\n\n    export interface WsCloudPingRequest {\n\n    }\n\n    export interface WsCloudPingResponse {\n\n    }\n\n}\n\nexport class CloudServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsCloud\", \"1.02\");\n    }\n\n    GetPODs(request: WsCloud.GetPODsRequest, abortSignal?: AbortSignal): Promise<WsCloud.GetPODsResponse> {\n        return this._connection.send(\"GetPODs\", request, \"json\", false, abortSignal, \"GetPODsResponse\");\n    }\n\n    GetServices(request: WsCloud.GetServicesRequest, abortSignal?: AbortSignal): Promise<WsCloud.GetServicesResponse> {\n        return this._connection.send(\"GetServices\", request, \"json\", false, abortSignal, \"GetServicesResponse\");\n    }\n\n    Ping(request: WsCloud.WsCloudPingRequest, abortSignal?: AbortSignal): Promise<WsCloud.WsCloudPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WsCloudPingResponse\");\n    }\n\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsCodesign {\n\n    export type int = number;\n\n    export enum SigningMethodType {\n        gpg = \"gpg\"\n    }\n\n    export interface ListUserIDsRequest {\n\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface UserIDs {\n        Item?: string[];\n    }\n\n    export interface ListUserIDsResponse {\n        Exceptions?: Exceptions;\n        UserIDs?: UserIDs;\n    }\n\n    export interface ws_codesignPingRequest {\n\n    }\n\n    export interface ws_codesignPingResponse {\n\n    }\n\n    export interface SignRequest {\n        SigningMethod?: SigningMethodType;\n        UserID?: string;\n        KeyPass?: string;\n        Text?: string;\n    }\n\n    export interface SignResponse {\n        Exceptions?: Exceptions;\n        RetCode?: int;\n        ErrMsg?: string;\n        SignedText?: string;\n    }\n\n    export interface VerifyRequest {\n        Text?: string;\n    }\n\n    export interface VerifyResponse {\n        Exceptions?: Exceptions;\n        RetCode?: int;\n        ErrMsg?: string;\n        IsVerified?: boolean;\n        SignedBy?: string;\n    }\n\n}\n\nexport class CodesignServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_codesign\", \"1.1\");\n    }\n\n    ListUserIDs(request: WsCodesign.ListUserIDsRequest, abortSignal?: AbortSignal): Promise<WsCodesign.ListUserIDsResponse> {\n        return this._connection.send(\"ListUserIDs\", request, \"json\", false, abortSignal, \"ListUserIDsResponse\");\n    }\n\n    Ping(request: WsCodesign.ws_codesignPingRequest, abortSignal?: AbortSignal): Promise<WsCodesign.ws_codesignPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"ws_codesignPingResponse\");\n    }\n\n    Sign(request: WsCodesign.SignRequest, abortSignal?: AbortSignal): Promise<WsCodesign.SignResponse> {\n        return this._connection.send(\"Sign\", request, \"json\", false, abortSignal, \"SignResponse\");\n    }\n\n    Verify(request: WsCodesign.VerifyRequest, abortSignal?: AbortSignal): Promise<WsCodesign.VerifyResponse> {\n        return this._connection.send(\"Verify\", request, \"json\", false, abortSignal, \"VerifyResponse\");\n    }\n\n}\n", "import { CodesignServiceBase, WsCodesign } from \"./wsdl/ws_codesign/v1.1/ws_codesign.ts\";\n\nexport { WsCodesign };\n\nexport class CodesignService extends CodesignServiceBase {\n\n    ListUserIDsEx(request: Partial<WsCodesign.ListUserIDsRequest>): Promise<string[]> {\n        return super.ListUserIDs(request).then((response: WsCodesign.ListUserIDsResponse) => {\n            return response.UserIDs.Item;\n        }).catch(e => {\n            return [];\n        });\n    }\n\n    Sign(request: Partial<WsCodesign.SignRequest>): Promise<WsCodesign.SignResponse> {\n        return super.Sign({ SigningMethod: WsCodesign.SigningMethodType.gpg, ...request });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsDali {\r\n\r\n    export type unsignedInt = number;\r\n\r\n    export interface AddRequest {\r\n        Path?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code?: string;\r\n        Audience?: string;\r\n        Source?: string;\r\n        Message?: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source?: string;\r\n        Exception?: Exception[];\r\n    }\r\n\r\n    export interface ResultResponse {\r\n        Exceptions?: Exceptions;\r\n        Result?: string;\r\n    }\r\n\r\n    export interface ClearTraceTransactionsRequest {\r\n\r\n    }\r\n\r\n    export interface CountRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface CountResponse {\r\n        Exceptions?: Exceptions;\r\n        Result?: unsignedInt;\r\n    }\r\n\r\n    export interface DFSCheckRequest {\r\n\r\n    }\r\n\r\n    export interface DFSExistsRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface BooleanResponse {\r\n        Exceptions?: Exceptions;\r\n        Result?: boolean;\r\n    }\r\n\r\n    export interface DFSLSRequest {\r\n        Name?: string;\r\n        PathAndNameOnly?: boolean;\r\n        IncludeSubFileInfo?: boolean;\r\n        Recursively?: boolean;\r\n    }\r\n\r\n    export interface DeleteRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface DisconnectClientConnectionRequest {\r\n        Endpoint?: string;\r\n    }\r\n\r\n    export interface GetClientsRequest {\r\n\r\n    }\r\n\r\n    export interface GetConnectionsRequest {\r\n\r\n    }\r\n\r\n    export interface GetDFSCSVRequest {\r\n        LogicalNameMask?: string;\r\n    }\r\n\r\n    export interface GetDFSMapRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetDFSParentsRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetLogicalFileRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetLogicalFilePartRequest {\r\n        FileName?: string;\r\n        PartNumber?: unsignedInt;\r\n    }\r\n\r\n    export interface GetProtectedListRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface GetSDSStatsRequest {\r\n\r\n    }\r\n\r\n    export interface GetSDSSubscribersRequest {\r\n\r\n    }\r\n\r\n    export interface GetValueRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface ImportRequest {\r\n        XML?: string;\r\n        Path?: string;\r\n        Add?: boolean;\r\n    }\r\n\r\n    export interface ListSDSLocksRequest {\r\n\r\n    }\r\n\r\n    export interface WSDaliPingRequest {\r\n\r\n    }\r\n\r\n    export interface WSDaliPingResponse {\r\n\r\n    }\r\n\r\n    export interface SaveSDSStoreRequest {\r\n\r\n    }\r\n\r\n    export interface SetLogicalFilePartAttrRequest {\r\n        FileName?: string;\r\n        PartNumber?: unsignedInt;\r\n        Attr?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface SetProtectedRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface SetTraceSlowTransactionsRequest {\r\n        SlowThresholdMS?: unsignedInt;\r\n    }\r\n\r\n    export interface SetTraceTransactionsRequest {\r\n\r\n    }\r\n\r\n    export interface SetUnprotectedRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface SetValueRequest {\r\n        Path?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface UnlockSDSLockRequest {\r\n        ConnectionID?: string;\r\n        Close?: boolean;\r\n    }\r\n\r\n}\r\n\r\nexport class DaliServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WSDali\", \"1.07\");\r\n    }\r\n\r\n    Add(request: WsDali.AddRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Add\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    ClearTraceTransactions(request: WsDali.ClearTraceTransactionsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"ClearTraceTransactions\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    Count(request: WsDali.CountRequest, abortSignal?: AbortSignal): Promise<WsDali.CountResponse> {\r\n        return this._connection.send(\"Count\", request, \"json\", false, abortSignal, \"CountResponse\");\r\n    }\r\n\r\n    DFSCheck(request: WsDali.DFSCheckRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DFSCheck\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    DFSExists(request: WsDali.DFSExistsRequest, abortSignal?: AbortSignal): Promise<WsDali.BooleanResponse> {\r\n        return this._connection.send(\"DFSExists\", request, \"json\", false, abortSignal, \"BooleanResponse\");\r\n    }\r\n\r\n    DFSLS(request: WsDali.DFSLSRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DFSLS\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    Delete(request: WsDali.DeleteRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Delete\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    DisconnectClientConnection(request: WsDali.DisconnectClientConnectionRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DisconnectClientConnection\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetClients(request: WsDali.GetClientsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetClients\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetConnections(request: WsDali.GetConnectionsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetConnections\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSCSV(request: WsDali.GetDFSCSVRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSCSV\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSMap(request: WsDali.GetDFSMapRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSMap\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSParents(request: WsDali.GetDFSParentsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSParents\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetLogicalFile(request: WsDali.GetLogicalFileRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetLogicalFile\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetLogicalFilePart(request: WsDali.GetLogicalFilePartRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetLogicalFilePart\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetProtectedList(request: WsDali.GetProtectedListRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetProtectedList\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetSDSStats(request: WsDali.GetSDSStatsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetSDSStats\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetSDSSubscribers(request: WsDali.GetSDSSubscribersRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetSDSSubscribers\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetValue(request: WsDali.GetValueRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetValue\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    Import(request: WsDali.ImportRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Import\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    ListSDSLocks(request: WsDali.ListSDSLocksRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"ListSDSLocks\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    Ping(request: WsDali.WSDaliPingRequest, abortSignal?: AbortSignal): Promise<WsDali.WSDaliPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WSDaliPingResponse\");\r\n    }\r\n\r\n    SaveSDSStore(request: WsDali.SaveSDSStoreRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SaveSDSStore\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetLogicalFilePartAttr(request: WsDali.SetLogicalFilePartAttrRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetLogicalFilePartAttr\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetProtected(request: WsDali.SetProtectedRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetProtected\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetTraceSlowTransactions(request: WsDali.SetTraceSlowTransactionsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetTraceSlowTransactions\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetTraceTransactions(request: WsDali.SetTraceTransactionsRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetTraceTransactions\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetUnprotected(request: WsDali.SetUnprotectedRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetUnprotected\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    SetValue(request: WsDali.SetValueRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetValue\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    UnlockSDSLock(request: WsDali.UnlockSDSLockRequest, abortSignal?: AbortSignal): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"UnlockSDSLock\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n}\r\n", "import { DaliServiceBase, WsDali } from \"./wsdl/WsDali/v1.07/WsDali.ts\";\n\nexport {\n    type WsDali\n};\n\nexport class DaliService extends DaliServiceBase {\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsDfu {\n\n    export type base64Binary = string;\n    export type long = number;\n    export type int = number;\n    export type double = number;\n\n    export enum DFUArrayActions {\n        Delete = \"Delete\",\n        AddToSuperfile = \"Add To Superfile\",\n        ChangeProtection = \"Change Protection\",\n        ChangeRestriction = \"Change Restriction\"\n    }\n\n    export enum DFUChangeProtection {\n        NoChange = 0,\n        Protect = 1,\n        Unprotect = 2,\n        UnprotectAll = 3\n    }\n\n    export enum DFUChangeRestriction {\n        NoChange = 0,\n        Restrict = 1,\n        Unrestricted = 2\n    }\n\n    export enum DFUDefFileFormat {\n        xml = \"xml\",\n        def = \"def\"\n    }\n\n    export enum FileAccessRole {\n        Token = \"Token\",\n        Engine = \"Engine\",\n        External = \"External\"\n    }\n\n    export enum SecAccessType {\n        None = \"None\",\n        Access = \"Access\",\n        Read = \"Read\",\n        Write = \"Write\",\n        Full = \"Full\"\n    }\n\n    export enum DFUFileType {\n        Flat = \"Flat\",\n        Index = \"Index\",\n        Xml = \"Xml\",\n        Csv = \"Csv\",\n        Json = \"Json\",\n        IndexLocal = \"IndexLocal\",\n        IndexPartitioned = \"IndexPartitioned\",\n        Unset = \"Unset\"\n    }\n\n    export interface AddRequest {\n        dstname?: string;\n        xmlmap?: base64Binary;\n        dstcluster?: string;\n    }\n\n    export interface Exception {\n        Code: string;\n        Audience: string;\n        Source: string;\n        Message: string;\n    }\n\n    export interface Exceptions {\n        Source: string;\n        Exception: Exception[];\n    }\n\n    export interface AddResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface AddRemoteRequest {\n        dstname?: string;\n        srcname?: string;\n        srcdali?: string;\n        srcusername?: string;\n        srcpassword?: string;\n    }\n\n    export interface AddRemoteResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface names {\n        Item: string[];\n    }\n\n    export interface AddtoSuperfileRequest {\n        Superfile?: string;\n        Subfiles?: string;\n        names?: names;\n        ExistingFile?: boolean;\n        BackToPage?: string;\n    }\n\n    export interface SubfileNames {\n        SubfileName: string[];\n    }\n\n    export interface AddtoSuperfileResponse {\n        Exceptions: Exceptions;\n        Subfiles: string;\n        BackToPage: string;\n        SubfileNames: SubfileNames;\n    }\n\n    export interface LogicalFiles {\n        Item: string[];\n    }\n\n    export interface DFUArrayActionRequest {\n        Type?: DFUArrayActions;\n        NoDelete?: boolean;\n        BackToPage?: string;\n        LogicalFiles?: LogicalFiles;\n        removeFromSuperfiles?: boolean;\n        removeRecursively?: boolean;\n        Protect?: DFUChangeProtection;\n        Restrict?: DFUChangeRestriction;\n    }\n\n    export interface DFUActionInfo {\n        FileName: string;\n        NodeGroup: string;\n        ActionResult: string;\n        Failed: boolean;\n    }\n\n    export interface ActionResults {\n        DFUActionInfo: DFUActionInfo[];\n    }\n\n    export interface DFUArrayActionResponse {\n        Exceptions: Exceptions;\n        BackToPage: string;\n        RedirectTo: string;\n        ActionResults: ActionResults;\n    }\n\n    export interface DFUBrowseDataRequest {\n        LogicalName?: string;\n        FilterBy?: string;\n        ShowColumns?: string;\n        SchemaOnly?: boolean;\n        StartForGoback?: long;\n        CountForGoback?: int;\n        ChooseFile?: int;\n        Cluster?: string;\n        ClusterType?: string;\n        ParentName?: string;\n        Start?: long;\n        Count?: int;\n        DisableUppercaseTranslation?: boolean;\n    }\n\n    export interface DFUDataColumn {\n        ColumnID: int;\n        ColumnLabel: string;\n        ColumnType: string;\n        ColumnValue: string;\n        ColumnSize: int;\n        MaxSize: int;\n        ColumnEclType: string;\n        ColumnRawSize: int;\n        IsNaturalColumn: boolean;\n        IsKeyedColumn: boolean;\n        DataColumns: DataColumns;\n    }\n\n    export interface DataColumns {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface ColumnHidden {\n        ColumnID: int;\n        ColumnLabel: string;\n        ColumnType: string;\n        ColumnValue: string;\n        ColumnSize: int;\n        MaxSize: int;\n        ColumnEclType: string;\n        ColumnRawSize: int;\n        IsNaturalColumn: boolean;\n        IsKeyedColumn: boolean;\n        DataColumns: DataColumns;\n    }\n\n    export interface ColumnsHidden {\n        ColumnHidden: ColumnHidden[];\n    }\n\n    export interface DFUBrowseDataResponse {\n        Exceptions: Exceptions;\n        Name: string;\n        LogicalName: string;\n        FilterBy: string;\n        FilterForGoBack: string;\n        ColumnsHidden: ColumnsHidden;\n        ColumnCount: int;\n        StartForGoback: long;\n        CountForGoback: int;\n        ChooseFile: int;\n        SchemaOnly: boolean;\n        Cluster: string;\n        ClusterType: string;\n        ParentName: string;\n        Start: long;\n        Count: long;\n        PageSize: long;\n        Total: long;\n        Result: string;\n        MsgToDisplay: string;\n        DisableUppercaseTranslation: boolean;\n    }\n\n    export interface DFUDefFileRequest {\n        Name?: string;\n        Format?: DFUDefFileFormat;\n    }\n\n    export interface DFUDefFileResponse {\n        Exceptions: Exceptions;\n        defFile: base64Binary;\n    }\n\n    export interface RequestBase {\n        Name: string;\n        Cluster: string;\n        JobId: string;\n        ExpirySeconds: int;\n        AccessRole: FileAccessRole;\n        AccessType: SecAccessType;\n        ReturnJsonTypeInfo: boolean;\n        ReturnBinTypeInfo: boolean;\n    }\n\n    export interface DFUFileAccessRequest {\n        RequestBase?: RequestBase;\n    }\n\n    export interface DFUPartLocation {\n        LocationIndex: int;\n        Host: string;\n    }\n\n    export interface FileLocations {\n        DFUPartLocation: DFUPartLocation[];\n    }\n\n    export interface DFUFileCopy {\n        CopyIndex: int;\n        LocationIndex: int;\n        Path: string;\n    }\n\n    export interface Copies {\n        DFUFileCopy: DFUFileCopy[];\n    }\n\n    export interface DFUFilePart {\n        PartIndex: int;\n        Copies: Copies;\n        TopLevelKey: boolean;\n    }\n\n    export interface FileParts {\n        DFUFilePart: DFUFilePart[];\n    }\n\n    export interface AccessInfo {\n        MetaInfoBlob: string;\n        ExpiryTime: string;\n        NumParts: int;\n        FileLocations: FileLocations;\n        FileParts: FileParts;\n        RecordTypeInfoJson: string;\n        fileAccessPort: int;\n        fileAccessSSL: boolean;\n    }\n\n    export interface DFUFileAccessResponse {\n        Exceptions: Exceptions;\n        AccessInfo: AccessInfo;\n        Type: DFUFileType;\n    }\n\n    export interface DFUFileAccessV2Request {\n        Name?: string;\n        Cluster?: string;\n        RequestId?: string;\n        ExpirySeconds?: int;\n        ReturnTextResponse?: boolean;\n        SessionId?: long;\n        LockTimeoutMs?: int;\n    }\n\n    export interface PartLocations {\n        Item: string[];\n    }\n\n    export interface DFUFileCreateRequest {\n        ECLRecordDefinition?: string;\n        PartLocations?: PartLocations;\n        RequestBase?: RequestBase;\n    }\n\n    export interface DFUFileCreateResponse {\n        Exceptions: Exceptions;\n        FileId: string;\n        Warning: string;\n        AccessInfo: AccessInfo;\n    }\n\n    export interface DFUFileCreateV2Request {\n        Name?: string;\n        Cluster?: string;\n        Type?: DFUFileType;\n        ECLRecordDefinition?: string;\n        RequestId?: string;\n        ExpirySeconds?: int;\n        ReturnTextResponse?: boolean;\n        Compressed?: boolean;\n        SessionId?: long;\n        LockTimeoutMs?: int;\n    }\n\n    export interface DFUFilePublishRequest {\n        FileId?: string;\n        Overwrite?: boolean;\n        FileDescriptorBlob?: base64Binary;\n        SessionId?: long;\n        LockTimeoutMs?: int;\n        ECLRecordDefinition?: string;\n        RecordCount?: long;\n        FileSize?: long;\n    }\n\n    export interface DFUFilePublishResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface DFUFileViewRequest {\n        Scope?: string;\n        IncludeSuperOwner?: boolean;\n    }\n\n    export interface DFULogicalFile {\n        Prefix: string;\n        NodeGroup: string;\n        Directory: string;\n        Description: string;\n        Parts: string;\n        Name: string;\n        Owner: string;\n        Totalsize: string;\n        RecordCount: string;\n        Modified: string;\n        LongSize: string;\n        LongRecordCount: string;\n        isSuperfile: boolean;\n        isDirectory: boolean;\n        Replicate: boolean;\n        IntSize: long;\n        IntRecordCount: long;\n        FromRoxieCluster: boolean;\n        BrowseData: boolean;\n        IsCompressed: boolean;\n        ContentType: string;\n        CompressedFileSize: long;\n        SuperOwners: string;\n        Persistent: boolean;\n        IsProtected: boolean;\n        KeyType: string;\n        NumOfSubfiles: int;\n        Accessed: string;\n        AtRestCost: double;\n        AccessCost: double;\n        MinSkew: long;\n        MaxSkew: long;\n        MinSkewPart: long;\n        MaxSkewPart: long;\n    }\n\n    export interface DFULogicalFiles {\n        DFULogicalFile: DFULogicalFile[];\n    }\n\n    export interface DFUFileViewResponse {\n        Exceptions: Exceptions;\n        Scope: string;\n        NumFiles: int;\n        DFULogicalFiles: DFULogicalFiles;\n    }\n\n    export interface DFUGetDataColumnsRequest {\n        OpenLogicalName?: string;\n        LogicalName?: string;\n        FilterBy?: string;\n        ShowColumns?: string;\n        ChooseFile?: int;\n        Cluster?: string;\n        ClusterType?: string;\n        StartIndex?: long;\n        EndIndex?: long;\n    }\n\n    export interface DFUDataKeyedColumns1 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns2 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns3 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns4 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns5 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns6 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns7 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns8 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns9 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns10 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns11 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns12 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns13 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns14 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns15 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns16 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns17 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns18 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns19 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataKeyedColumns20 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns1 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns2 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns3 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns4 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns5 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns6 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns7 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns8 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns9 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns10 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns11 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns12 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns13 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns14 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns15 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns16 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns17 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns18 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns19 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUDataNonKeyedColumns20 {\n        DFUDataColumn: DFUDataColumn[];\n    }\n\n    export interface DFUGetDataColumnsResponse {\n        Exceptions: Exceptions;\n        LogicalName: string;\n        StartIndex: long;\n        EndIndex: long;\n        DFUDataKeyedColumns1: DFUDataKeyedColumns1;\n        DFUDataKeyedColumns2: DFUDataKeyedColumns2;\n        DFUDataKeyedColumns3: DFUDataKeyedColumns3;\n        DFUDataKeyedColumns4: DFUDataKeyedColumns4;\n        DFUDataKeyedColumns5: DFUDataKeyedColumns5;\n        DFUDataKeyedColumns6: DFUDataKeyedColumns6;\n        DFUDataKeyedColumns7: DFUDataKeyedColumns7;\n        DFUDataKeyedColumns8: DFUDataKeyedColumns8;\n        DFUDataKeyedColumns9: DFUDataKeyedColumns9;\n        DFUDataKeyedColumns10: DFUDataKeyedColumns10;\n        DFUDataKeyedColumns11: DFUDataKeyedColumns11;\n        DFUDataKeyedColumns12: DFUDataKeyedColumns12;\n        DFUDataKeyedColumns13: DFUDataKeyedColumns13;\n        DFUDataKeyedColumns14: DFUDataKeyedColumns14;\n        DFUDataKeyedColumns15: DFUDataKeyedColumns15;\n        DFUDataKeyedColumns16: DFUDataKeyedColumns16;\n        DFUDataKeyedColumns17: DFUDataKeyedColumns17;\n        DFUDataKeyedColumns18: DFUDataKeyedColumns18;\n        DFUDataKeyedColumns19: DFUDataKeyedColumns19;\n        DFUDataKeyedColumns20: DFUDataKeyedColumns20;\n        DFUDataNonKeyedColumns1: DFUDataNonKeyedColumns1;\n        DFUDataNonKeyedColumns2: DFUDataNonKeyedColumns2;\n        DFUDataNonKeyedColumns3: DFUDataNonKeyedColumns3;\n        DFUDataNonKeyedColumns4: DFUDataNonKeyedColumns4;\n        DFUDataNonKeyedColumns5: DFUDataNonKeyedColumns5;\n        DFUDataNonKeyedColumns6: DFUDataNonKeyedColumns6;\n        DFUDataNonKeyedColumns7: DFUDataNonKeyedColumns7;\n        DFUDataNonKeyedColumns8: DFUDataNonKeyedColumns8;\n        DFUDataNonKeyedColumns9: DFUDataNonKeyedColumns9;\n        DFUDataNonKeyedColumns10: DFUDataNonKeyedColumns10;\n        DFUDataNonKeyedColumns11: DFUDataNonKeyedColumns11;\n        DFUDataNonKeyedColumns12: DFUDataNonKeyedColumns12;\n        DFUDataNonKeyedColumns13: DFUDataNonKeyedColumns13;\n        DFUDataNonKeyedColumns14: DFUDataNonKeyedColumns14;\n        DFUDataNonKeyedColumns15: DFUDataNonKeyedColumns15;\n        DFUDataNonKeyedColumns16: DFUDataNonKeyedColumns16;\n        DFUDataNonKeyedColumns17: DFUDataNonKeyedColumns17;\n        DFUDataNonKeyedColumns18: DFUDataNonKeyedColumns18;\n        DFUDataNonKeyedColumns19: DFUDataNonKeyedColumns19;\n        DFUDataNonKeyedColumns20: DFUDataNonKeyedColumns20;\n        RowCount: long;\n        ShowColumns: string;\n        ChooseFile: int;\n        Cluster: string;\n        ClusterType: string;\n    }\n\n    export interface DFUGetFileMetaDataRequest {\n        LogicalFileName?: string;\n        ClusterName?: string;\n        IncludeXmlSchema?: boolean;\n        AddHeaderInXmlSchema?: boolean;\n        IncludeXmlXPathSchema?: boolean;\n        AddHeaderInXmlXPathSchema?: boolean;\n    }\n\n    export interface DFUGetFileMetaDataResponse {\n        Exceptions: Exceptions;\n        TotalColumnCount: int;\n        KeyedColumnCount: int;\n        DataColumns: DataColumns;\n        XmlSchema: string;\n        XmlXPathSchema: string;\n        TotalResultRows: long;\n    }\n\n    export interface DFUMetaInquiryRequest {\n\n    }\n\n    export interface DFUMetaFieldInfo {\n        Name: string;\n        Type: string;\n    }\n\n    export interface Fields {\n        DFUMetaFieldInfo: DFUMetaFieldInfo[];\n    }\n\n    export interface DFUMetaInquiryResponse {\n        Exceptions: Exceptions;\n        Fields: Fields;\n    }\n\n    export interface DFUInfoRequest {\n        Name?: string;\n        Cluster?: string;\n        UpdateDescription?: boolean;\n        QuerySet?: string;\n        Query?: string;\n        FileDesc?: string;\n        IncludeJsonTypeInfo?: boolean;\n        IncludeBinTypeInfo?: boolean;\n        Protect?: DFUChangeProtection;\n        Restrict?: DFUChangeRestriction;\n        ForceIndexInfo?: boolean;\n    }\n\n    export interface Stat {\n        MinSkew: string;\n        MaxSkew: string;\n        MinSkewInt64: long;\n        MaxSkewInt64: long;\n        MinSkewPart: long;\n        MaxSkewPart: long;\n    }\n\n    export interface DFUPart {\n        Id: int;\n        Copy: int;\n        Ip: string;\n        Partsize: string;\n        PartSizeInt64: long;\n        CompressedSize: long;\n    }\n\n    export interface DFUFileParts {\n        DFUPart: DFUPart[];\n    }\n\n    export interface DFUFilePartsOnCluster {\n        Cluster: string;\n        BaseDir: string;\n        ReplicateDir: string;\n        Replicate: boolean;\n        CanReplicate: boolean;\n        DFUFileParts: DFUFileParts;\n    }\n\n    export interface DFUFilePartsOnClusters {\n        DFUFilePartsOnCluster: DFUFilePartsOnCluster[];\n    }\n\n    export interface subfiles {\n        Item: string[];\n    }\n\n    export interface Superfiles {\n        DFULogicalFile: DFULogicalFile[];\n    }\n\n    export interface DFUFileProtect {\n        Owner: string;\n        Modified: string;\n    }\n\n    export interface ProtectList {\n        DFUFileProtect: DFUFileProtect[];\n    }\n\n    export interface Graphs {\n        ECLGraph: string[];\n    }\n\n    export interface FieldNames {\n        Item: string[];\n    }\n\n    export interface Partition {\n        FieldMask: long;\n        FieldNames: FieldNames;\n    }\n\n    export interface DFUFileBloom {\n        FieldMask: long;\n        FieldNames: FieldNames;\n        Limit: long;\n        Probability: string;\n    }\n\n    export interface Blooms {\n        DFUFileBloom: DFUFileBloom[];\n    }\n\n    export interface ExtendedIndexInfo {\n        IsLeafCountEstimated: boolean;\n        NumLeafNodes: long;\n        NumBlobNodes: long;\n        NumBranchNodes: long;\n        SizeDiskLeaves: long;\n        SizeDiskBlobs: long;\n        SizeDiskBranches: long;\n        SizeOriginalData: long;\n        SizeOriginalBranches: long;\n        SizeMemoryLeaves: long;\n        SizeMemoryBranches: long;\n        BranchCompressionPercent: double;\n        DataCompressionPercent: double;\n    }\n\n    export interface FileDetail {\n        Name: string;\n        Filename: string;\n        Prefix: string;\n        NodeGroup: string;\n        NumParts: int;\n        Description: string;\n        Dir: string;\n        PathMask: string;\n        Filesize: string;\n        FileSizeInt64: long;\n        RecordSize: string;\n        RecordCount: string;\n        RecordSizeInt64: long;\n        RecordCountInt64: long;\n        Wuid: string;\n        Owner: string;\n        JobName: string;\n        Persistent: string;\n        Format: string;\n        MaxRecordSize: string;\n        CsvSeparate: string;\n        CsvQuote: string;\n        CsvTerminate: string;\n        CsvEscape: string;\n        Modified: string;\n        Ecl: string;\n        Stat: Stat;\n        DFUFilePartsOnClusters: DFUFilePartsOnClusters;\n        isSuperfile: boolean;\n        ShowFileContent: boolean;\n        subfiles: subfiles;\n        Superfiles: Superfiles;\n        ProtectList: ProtectList;\n        FromRoxieCluster: boolean;\n        Graphs: Graphs;\n        UserPermission: string;\n        ContentType: string;\n        CompressedFileSize: long;\n        PercentCompressed: string;\n        IsCompressed: boolean;\n        IsRestricted: boolean;\n        BrowseData: boolean;\n        jsonInfo: string;\n        binInfo: base64Binary;\n        PackageID: string;\n        Partition: Partition;\n        Blooms: Blooms;\n        ExpireDays: int;\n        KeyType: string;\n        AtRestCost: double;\n        AccessCost: double;\n        ExpirationDate: string;\n        ExtendedIndexInfo: ExtendedIndexInfo;\n        CompressionType: string;\n    }\n\n    export interface DFUInfoResponse {\n        Exceptions: Exceptions;\n        FileDetail: FileDetail;\n    }\n\n    export interface DFUQueryRequest {\n        Prefix?: string;\n        NodeGroup?: string;\n        ContentType?: string;\n        InvertContent?: boolean;\n        LogicalName?: string;\n        Owner?: string;\n        StartDate?: string;\n        EndDate?: string;\n        FileType?: string;\n        FileSizeFrom?: long;\n        FileSizeTo?: long;\n        FirstN?: int;\n        PageSize?: int;\n        PageStartFrom?: int;\n        Sortby?: string;\n        Fields?: string;\n        Descending?: boolean;\n        OneLevelDirFileReturn?: boolean;\n        CacheHint?: long;\n        MaxNumberOfFiles?: int;\n        IncludeSuperOwner?: boolean;\n        StartAccessedTime?: string;\n        EndAccessedTime?: string;\n        MaxSkewFrom?: long;\n        MaxSkewTo?: long;\n        MinSkewFrom?: long;\n        MinSkewTo?: long;\n    }\n\n    export interface DFUQueryResponse {\n        Exceptions: Exceptions;\n        DFULogicalFiles: DFULogicalFiles;\n        Prefix: string;\n        NodeGroup: string;\n        LogicalName: string;\n        Description: string;\n        Owner: string;\n        StartDate: string;\n        EndDate: string;\n        FileType: string;\n        FileSizeFrom: long;\n        FileSizeTo: long;\n        FirstN: int;\n        PageSize: int;\n        PageStartFrom: long;\n        LastPageFrom: long;\n        PageEndAt: long;\n        PrevPageFrom: long;\n        NextPageFrom: long;\n        NumFiles: long;\n        Sortby: string;\n        Descending: boolean;\n        BasicQuery: string;\n        ParametersForPaging: string;\n        Filters: string;\n        CacheHint: long;\n        IsSubsetOfFiles: boolean;\n        Warning: string;\n    }\n\n    export interface DFURecordTypeInfoRequest {\n        Name?: string;\n        IncludeJsonTypeInfo?: boolean;\n        IncludeBinTypeInfo?: boolean;\n    }\n\n    export interface DFURecordTypeInfoResponse {\n        jsonInfo: string;\n        binInfo: base64Binary;\n    }\n\n    export interface DFUSearchRequest {\n        ShowExample?: string;\n    }\n\n    export interface ClusterNames {\n        ClusterName: string[];\n    }\n\n    export interface FileTypes {\n        FileType: string[];\n    }\n\n    export interface DFUSearchResponse {\n        Exceptions: Exceptions;\n        ShowExample: string;\n        ClusterNames: ClusterNames;\n        FileTypes: FileTypes;\n    }\n\n    export interface DFUSearchDataRequest {\n        Cluster?: string;\n        ClusterType?: string;\n        OpenLogicalName?: string;\n        FilterBy?: string;\n        ShowColumns?: string;\n        ChooseFile?: int;\n        StartIndex?: long;\n        EndIndex?: long;\n        LogicalName?: string;\n        ParentName?: string;\n        StartForGoback?: long;\n        CountForGoback?: int;\n        Start?: long;\n        Count?: int;\n        File?: string;\n        Key?: string;\n        SchemaOnly?: boolean;\n        RoxieSelections?: boolean;\n        DisableUppercaseTranslation?: boolean;\n        SelectedKey?: string;\n    }\n\n    export interface DFUSearchDataResponse {\n        Exceptions: Exceptions;\n        OpenLogicalName: string;\n        LogicalName: string;\n        ParentName: string;\n        StartIndex: long;\n        EndIndex: long;\n        DFUDataKeyedColumns1: DFUDataKeyedColumns1;\n        DFUDataKeyedColumns2: DFUDataKeyedColumns2;\n        DFUDataKeyedColumns3: DFUDataKeyedColumns3;\n        DFUDataKeyedColumns4: DFUDataKeyedColumns4;\n        DFUDataKeyedColumns5: DFUDataKeyedColumns5;\n        DFUDataKeyedColumns6: DFUDataKeyedColumns6;\n        DFUDataKeyedColumns7: DFUDataKeyedColumns7;\n        DFUDataKeyedColumns8: DFUDataKeyedColumns8;\n        DFUDataKeyedColumns9: DFUDataKeyedColumns9;\n        DFUDataKeyedColumns10: DFUDataKeyedColumns10;\n        DFUDataKeyedColumns11: DFUDataKeyedColumns11;\n        DFUDataKeyedColumns12: DFUDataKeyedColumns12;\n        DFUDataKeyedColumns13: DFUDataKeyedColumns13;\n        DFUDataKeyedColumns14: DFUDataKeyedColumns14;\n        DFUDataKeyedColumns15: DFUDataKeyedColumns15;\n        DFUDataKeyedColumns16: DFUDataKeyedColumns16;\n        DFUDataKeyedColumns17: DFUDataKeyedColumns17;\n        DFUDataKeyedColumns18: DFUDataKeyedColumns18;\n        DFUDataKeyedColumns19: DFUDataKeyedColumns19;\n        DFUDataKeyedColumns20: DFUDataKeyedColumns20;\n        DFUDataNonKeyedColumns1: DFUDataNonKeyedColumns1;\n        DFUDataNonKeyedColumns2: DFUDataNonKeyedColumns2;\n        DFUDataNonKeyedColumns3: DFUDataNonKeyedColumns3;\n        DFUDataNonKeyedColumns4: DFUDataNonKeyedColumns4;\n        DFUDataNonKeyedColumns5: DFUDataNonKeyedColumns5;\n        DFUDataNonKeyedColumns6: DFUDataNonKeyedColumns6;\n        DFUDataNonKeyedColumns7: DFUDataNonKeyedColumns7;\n        DFUDataNonKeyedColumns8: DFUDataNonKeyedColumns8;\n        DFUDataNonKeyedColumns9: DFUDataNonKeyedColumns9;\n        DFUDataNonKeyedColumns10: DFUDataNonKeyedColumns10;\n        DFUDataNonKeyedColumns11: DFUDataNonKeyedColumns11;\n        DFUDataNonKeyedColumns12: DFUDataNonKeyedColumns12;\n        DFUDataNonKeyedColumns13: DFUDataNonKeyedColumns13;\n        DFUDataNonKeyedColumns14: DFUDataNonKeyedColumns14;\n        DFUDataNonKeyedColumns15: DFUDataNonKeyedColumns15;\n        DFUDataNonKeyedColumns16: DFUDataNonKeyedColumns16;\n        DFUDataNonKeyedColumns17: DFUDataNonKeyedColumns17;\n        DFUDataNonKeyedColumns18: DFUDataNonKeyedColumns18;\n        DFUDataNonKeyedColumns19: DFUDataNonKeyedColumns19;\n        DFUDataNonKeyedColumns20: DFUDataNonKeyedColumns20;\n        RowCount: long;\n        ShowColumns: string;\n        ChooseFile: int;\n        Name: string;\n        FilterBy: string;\n        FilterForGoBack: string;\n        ColumnsHidden: ColumnsHidden;\n        ColumnCount: int;\n        StartForGoback: long;\n        CountForGoback: int;\n        Start: long;\n        Count: long;\n        PageSize: long;\n        Total: long;\n        Result: string;\n        MsgToDisplay: string;\n        Cluster: string;\n        ClusterType: string;\n        File: string;\n        Key: string;\n        SchemaOnly: boolean;\n        RoxieSelections: boolean;\n        DisableUppercaseTranslation: boolean;\n        AutoUppercaseTranslation: boolean;\n        SelectedKey: string;\n    }\n\n    export interface DFUSpaceRequest {\n        CountBy?: string;\n        ScopeUnder?: string;\n        OwnerUnder?: string;\n        Interval?: string;\n        StartDate?: string;\n        EndDate?: string;\n    }\n\n    export interface DFUSpaceItem {\n        Name: string;\n        NumOfFiles: string;\n        NumOfFilesUnknown: string;\n        TotalSize: string;\n        LargestFile: string;\n        LargestSize: string;\n        SmallestFile: string;\n        SmallestSize: string;\n        NumOfFilesInt64: long;\n        NumOfFilesUnknownInt64: long;\n        TotalSizeInt64: long;\n        LargestSizeInt64: long;\n        SmallestSizeInt64: long;\n    }\n\n    export interface DFUSpaceItems {\n        DFUSpaceItem: DFUSpaceItem[];\n    }\n\n    export interface DFUSpaceResponse {\n        Exceptions: Exceptions;\n        CountBy: string;\n        ScopeUnder: string;\n        OwnerUnder: string;\n        Interval: string;\n        StartDate: string;\n        EndDate: string;\n        DFUSpaceItems: DFUSpaceItems;\n    }\n\n    export interface EclRecordTypeInfoRequest {\n        Ecl?: string;\n        IncludeJsonTypeInfo?: boolean;\n        IncludeBinTypeInfo?: boolean;\n    }\n\n    export interface EclRecordTypeInfoResponse {\n        jsonInfo: string;\n        binInfo: base64Binary;\n    }\n\n    export interface EraseHistoryRequest {\n        Name?: string;\n    }\n\n    export interface Origin {\n        Name: string;\n        Operation: string;\n        Timestamp: string;\n        IP: string;\n        Path: string;\n        Owner: string;\n        Workunit: string;\n    }\n\n    export interface History {\n        Origin: Origin[];\n    }\n\n    export interface EraseHistoryResponse {\n        Exceptions: Exceptions;\n        History: History;\n    }\n\n    export interface ListHistoryRequest {\n        Name?: string;\n    }\n\n    export interface ListHistoryResponse {\n        Exceptions: Exceptions;\n        History: History;\n    }\n\n    export interface WsDfuPingRequest {\n\n    }\n\n    export interface WsDfuPingResponse {\n\n    }\n\n    export interface SavexmlRequest {\n        name?: string;\n    }\n\n    export interface SavexmlResponse {\n        Exceptions: Exceptions;\n        xmlmap: base64Binary;\n    }\n\n    export interface SuperfileActionRequest {\n        action?: string;\n        superfile?: string;\n        subfiles?: subfiles;\n        before?: string;\n        delete?: boolean;\n        removeSuperfile?: boolean;\n    }\n\n    export interface SuperfileActionResponse {\n        Exceptions: Exceptions;\n        superfile: string;\n        retcode: int;\n    }\n\n    export interface SuperfileListRequest {\n        superfile?: string;\n    }\n\n    export interface SuperfileListResponse {\n        Exceptions: Exceptions;\n        superfile: string;\n        subfiles: subfiles;\n    }\n\n}\n\nexport class DfuServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsDfu\", \"1.67\");\n    }\n\n    Add(request: Partial<WsDfu.AddRequest>): Promise<WsDfu.AddResponse> {\n        return this._connection.send(\"Add\", request, \"json\", false, undefined, \"AddResponse\");\n    }\n\n    AddRemote(request: Partial<WsDfu.AddRemoteRequest>): Promise<WsDfu.AddRemoteResponse> {\n        return this._connection.send(\"AddRemote\", request, \"json\", false, undefined, \"AddRemoteResponse\");\n    }\n\n    AddtoSuperfile(request: Partial<WsDfu.AddtoSuperfileRequest>): Promise<WsDfu.AddtoSuperfileResponse> {\n        return this._connection.send(\"AddtoSuperfile\", request, \"json\", false, undefined, \"AddtoSuperfileResponse\");\n    }\n\n    DFUArrayAction(request: Partial<WsDfu.DFUArrayActionRequest>): Promise<WsDfu.DFUArrayActionResponse> {\n        return this._connection.send(\"DFUArrayAction\", request, \"json\", false, undefined, \"DFUArrayActionResponse\");\n    }\n\n    DFUBrowseData(request: Partial<WsDfu.DFUBrowseDataRequest>): Promise<WsDfu.DFUBrowseDataResponse> {\n        return this._connection.send(\"DFUBrowseData\", request, \"json\", false, undefined, \"DFUBrowseDataResponse\");\n    }\n\n    DFUDefFile(request: Partial<WsDfu.DFUDefFileRequest>): Promise<WsDfu.DFUDefFileResponse> {\n        return this._connection.send(\"DFUDefFile\", request, \"json\", false, undefined, \"DFUDefFileResponse\");\n    }\n\n    DFUFileAccess(request: Partial<WsDfu.DFUFileAccessRequest>): Promise<WsDfu.DFUFileAccessResponse> {\n        return this._connection.send(\"DFUFileAccess\", request, \"json\", false, undefined, \"DFUFileAccessResponse\");\n    }\n\n    DFUFileAccessV2(request: Partial<WsDfu.DFUFileAccessV2Request>): Promise<WsDfu.DFUFileAccessResponse> {\n        return this._connection.send(\"DFUFileAccessV2\", request, \"json\", false, undefined, \"DFUFileAccessResponse\");\n    }\n\n    DFUFileCreate(request: Partial<WsDfu.DFUFileCreateRequest>): Promise<WsDfu.DFUFileCreateResponse> {\n        return this._connection.send(\"DFUFileCreate\", request, \"json\", false, undefined, \"DFUFileCreateResponse\");\n    }\n\n    DFUFileCreateV2(request: Partial<WsDfu.DFUFileCreateV2Request>): Promise<WsDfu.DFUFileCreateResponse> {\n        return this._connection.send(\"DFUFileCreateV2\", request, \"json\", false, undefined, \"DFUFileCreateResponse\");\n    }\n\n    DFUFilePublish(request: Partial<WsDfu.DFUFilePublishRequest>): Promise<WsDfu.DFUFilePublishResponse> {\n        return this._connection.send(\"DFUFilePublish\", request, \"json\", false, undefined, \"DFUFilePublishResponse\");\n    }\n\n    DFUFileView(request: Partial<WsDfu.DFUFileViewRequest>): Promise<WsDfu.DFUFileViewResponse> {\n        return this._connection.send(\"DFUFileView\", request, \"json\", false, undefined, \"DFUFileViewResponse\");\n    }\n\n    DFUGetDataColumns(request: Partial<WsDfu.DFUGetDataColumnsRequest>): Promise<WsDfu.DFUGetDataColumnsResponse> {\n        return this._connection.send(\"DFUGetDataColumns\", request, \"json\", false, undefined, \"DFUGetDataColumnsResponse\");\n    }\n\n    DFUGetFileMetaData(request: Partial<WsDfu.DFUGetFileMetaDataRequest>): Promise<WsDfu.DFUGetFileMetaDataResponse> {\n        return this._connection.send(\"DFUGetFileMetaData\", request, \"json\", false, undefined, \"DFUGetFileMetaDataResponse\");\n    }\n\n    DFUGetMetaInquiry(request: Partial<WsDfu.DFUMetaInquiryRequest>): Promise<WsDfu.DFUMetaInquiryResponse> {\n        return this._connection.send(\"DFUGetMetaInquiry\", request, \"json\", false, undefined, \"DFUMetaInquiryResponse\");\n    }\n\n    DFUInfo(request: Partial<WsDfu.DFUInfoRequest>): Promise<WsDfu.DFUInfoResponse> {\n        return this._connection.send(\"DFUInfo\", request, \"json\", false, undefined, \"DFUInfoResponse\");\n    }\n\n    DFUQuery(request: Partial<WsDfu.DFUQueryRequest>): Promise<WsDfu.DFUQueryResponse> {\n        return this._connection.send(\"DFUQuery\", request, \"json\", false, undefined, \"DFUQueryResponse\");\n    }\n\n    DFURecordTypeInfo(request: Partial<WsDfu.DFURecordTypeInfoRequest>): Promise<WsDfu.DFURecordTypeInfoResponse> {\n        return this._connection.send(\"DFURecordTypeInfo\", request, \"json\", false, undefined, \"DFURecordTypeInfoResponse\");\n    }\n\n    DFUSearch(request: Partial<WsDfu.DFUSearchRequest>): Promise<WsDfu.DFUSearchResponse> {\n        return this._connection.send(\"DFUSearch\", request, \"json\", false, undefined, \"DFUSearchResponse\");\n    }\n\n    DFUSearchData(request: Partial<WsDfu.DFUSearchDataRequest>): Promise<WsDfu.DFUSearchDataResponse> {\n        return this._connection.send(\"DFUSearchData\", request, \"json\", false, undefined, \"DFUSearchDataResponse\");\n    }\n\n    DFUSpace(request: Partial<WsDfu.DFUSpaceRequest>): Promise<WsDfu.DFUSpaceResponse> {\n        return this._connection.send(\"DFUSpace\", request, \"json\", false, undefined, \"DFUSpaceResponse\");\n    }\n\n    EclRecordTypeInfo(request: Partial<WsDfu.EclRecordTypeInfoRequest>): Promise<WsDfu.EclRecordTypeInfoResponse> {\n        return this._connection.send(\"EclRecordTypeInfo\", request, \"json\", false, undefined, \"EclRecordTypeInfoResponse\");\n    }\n\n    EraseHistory(request: Partial<WsDfu.EraseHistoryRequest>): Promise<WsDfu.EraseHistoryResponse> {\n        return this._connection.send(\"EraseHistory\", request, \"json\", false, undefined, \"EraseHistoryResponse\");\n    }\n\n    ListHistory(request: Partial<WsDfu.ListHistoryRequest>): Promise<WsDfu.ListHistoryResponse> {\n        return this._connection.send(\"ListHistory\", request, \"json\", false, undefined, \"ListHistoryResponse\");\n    }\n\n    Ping(request: Partial<WsDfu.WsDfuPingRequest>): Promise<WsDfu.WsDfuPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsDfuPingResponse\");\n    }\n\n    Savexml(request: Partial<WsDfu.SavexmlRequest>): Promise<WsDfu.SavexmlResponse> {\n        return this._connection.send(\"Savexml\", request, \"json\", false, undefined, \"SavexmlResponse\");\n    }\n\n    SuperfileAction(request: Partial<WsDfu.SuperfileActionRequest>): Promise<WsDfu.SuperfileActionResponse> {\n        return this._connection.send(\"SuperfileAction\", request, \"json\", false, undefined, \"SuperfileActionResponse\");\n    }\n\n    SuperfileList(request: Partial<WsDfu.SuperfileListRequest>): Promise<WsDfu.SuperfileListResponse> {\n        return this._connection.send(\"SuperfileList\", request, \"json\", false, undefined, \"SuperfileListResponse\");\n    }\n\n}\n", "import { DfuServiceBase, WsDfu } from \"./wsdl/WsDfu/v1.67/WsDfu.ts\";\n\nexport { WsDfu };\n\nexport const DFUArrayActions = WsDfu.DFUArrayActions;\nexport const DFUDefFileFormat = WsDfu.DFUDefFileFormat;\nexport const DFUChangeProtection = WsDfu.DFUChangeProtection;\nexport const DFUChangeRestriction = WsDfu.DFUChangeRestriction;\n\nexport type base64Binary = WsDfu.base64Binary;\n\nexport class DFUService extends DfuServiceBase {\n\n    DFUFile(request: WsDfu.DFUDefFileRequest): Promise<string> {\n        return this._connection.send(\"DFUDefFile\", request, \"text\");\n    }\n\n    async recursiveFetchLogicalFiles(superFiles: { NodeGroup: string, Name: string }[]): Promise<string[]> {\n        const childSuperFiles: WsDfu.DFULogicalFile[] = [];\n        const logicalFiles: string[] = [];\n        await Promise.all(superFiles.map(superFile => {\n            return this.DFUInfo({ Cluster: superFile.NodeGroup, Name: superFile.Name, IncludeJsonTypeInfo: false, IncludeBinTypeInfo: false, ForceIndexInfo: false })\n                .then(response => {\n                    for (const child of response?.FileDetail?.Superfiles?.DFULogicalFile ?? []) {\n                        childSuperFiles.push(child);\n                    }\n                    for (const child of response?.FileDetail?.subfiles?.Item ?? []) {\n                        logicalFiles.push(child);\n                    }\n                });\n        }));\n        return logicalFiles.concat(childSuperFiles.length ? await this.recursiveFetchLogicalFiles(childSuperFiles) : []);\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsDFUXRef {\n\n    export type unsignedInt = number;\n    export type long = number;\n\n    export interface XRefFiles {\n        Item?: string[];\n    }\n\n    export interface DFUXRefArrayActionRequest {\n        Type?: string;\n        Cluster?: string;\n        Action?: string;\n        XRefFiles?: XRefFiles;\n        RemoveFromSuperfiles?: boolean;\n    }\n\n    export interface DFUXRefArrayActionResponse {\n        DFUXRefArrayActionResult?: string;\n    }\n\n    export interface DFUXRefBuildRequest {\n        Cluster?: string;\n        FilterScopes?: string;\n    }\n\n    export interface DFUXRefBuildResponse {\n        DFUXRefActionResult?: string;\n    }\n\n    export interface DFUXRefBuildCancelRequest {\n\n    }\n\n    export interface DFUXRefBuildCancelResponse {\n        DFUXRefBuildCancelResult?: string;\n    }\n\n    export interface DFUXRefCleanDirectoriesRequest {\n        Cluster?: string;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface DFUXRefCleanDirectoriesResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface DFUXRefDirectoriesQueryRequest {\n        Cluster?: string;\n    }\n\n    export interface DFUXRefDirectoriesQueryResponse {\n        DFUXRefDirectoriesQueryResult?: string;\n    }\n\n    export interface DFUXRefFoundFilesQueryRequest {\n        Cluster?: string;\n    }\n\n    export interface DFUXRefFoundFilesQueryResponse {\n        DFUXRefFoundFilesQueryResult?: string;\n    }\n\n    export interface DFUXRefListRequest {\n\n    }\n\n    export interface DFUXRefListResponse {\n        DFUXRefListResult?: string;\n    }\n\n    export interface DFUXRefLostFilesQueryRequest {\n        Cluster?: string;\n    }\n\n    export interface DFUXRefLostFilesQueryResponse {\n        DFUXRefLostFilesQueryResult?: string;\n    }\n\n    export interface DFUXRefMessagesQueryRequest {\n        Cluster?: string;\n    }\n\n    export interface DFUXRefMessagesQueryResponse {\n        DFUXRefMessagesQueryResult?: string;\n    }\n\n    export interface DFUXRefOrphanFilesQueryRequest {\n        Cluster?: string;\n    }\n\n    export interface DFUXRefOrphanFilesQueryResponse {\n        DFUXRefOrphanFilesQueryResult?: string;\n    }\n\n    export interface ProcessClusterList {\n        Item?: string[];\n    }\n\n    export interface CheckPlanes {\n        Item?: string[];\n    }\n\n    export interface DFUXRefUnusedFilesRequest {\n        ProcessCluster?: string;\n        CheckPackageMaps?: boolean;\n        GetFileDetails?: boolean;\n        ProcessClusterList?: ProcessClusterList;\n        CheckPlanes?: CheckPlanes;\n    }\n\n    export interface UnusedFiles {\n        File?: string[];\n    }\n\n    export interface DFULogicalFile {\n        Prefix?: string;\n        ClusterName?: string;\n        Directory?: string;\n        Description?: string;\n        Parts?: string;\n        Name?: string;\n        Owner?: string;\n        Totalsize?: string;\n        RecordCount?: string;\n        Modified?: string;\n        LongSize?: string;\n        LongRecordCount?: string;\n        isSuperfile?: boolean;\n        isZipfile?: boolean;\n        isDirectory?: boolean;\n        Replicate?: boolean;\n        IntSize?: long;\n        IntRecordCount?: long;\n        FromRoxieCluster?: boolean;\n        BrowseData?: boolean;\n    }\n\n    export interface UnusedFilesWithDetails {\n        DFULogicalFile?: DFULogicalFile[];\n    }\n\n    export interface DFUXRefUnusedFilesResponse {\n        Exceptions?: Exceptions;\n        UnusedFileCount?: unsignedInt;\n        UnusedFiles?: UnusedFiles;\n        UnusedFilesWithDetails?: UnusedFilesWithDetails;\n    }\n\n    export interface WsDFUXRefPingRequest {\n\n    }\n\n    export interface WsDFUXRefPingResponse {\n\n    }\n\n}\n\nexport class DFUXRefServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsDFUXRef\", \"1.04\");\n    }\n\n    DFUXRefArrayAction(request: WsDFUXRef.DFUXRefArrayActionRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefArrayActionResponse> {\n        return this._connection.send(\"DFUXRefArrayAction\", request, \"json\", false, abortSignal, \"DFUXRefArrayActionResponse\");\n    }\n\n    DFUXRefBuild(request: WsDFUXRef.DFUXRefBuildRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefBuildResponse> {\n        return this._connection.send(\"DFUXRefBuild\", request, \"json\", false, abortSignal, \"DFUXRefBuildResponse\");\n    }\n\n    DFUXRefBuildCancel(request: WsDFUXRef.DFUXRefBuildCancelRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefBuildCancelResponse> {\n        return this._connection.send(\"DFUXRefBuildCancel\", request, \"json\", false, abortSignal, \"DFUXRefBuildCancelResponse\");\n    }\n\n    DFUXRefCleanDirectories(request: WsDFUXRef.DFUXRefCleanDirectoriesRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefCleanDirectoriesResponse> {\n        return this._connection.send(\"DFUXRefCleanDirectories\", request, \"json\", false, abortSignal, \"DFUXRefCleanDirectoriesResponse\");\n    }\n\n    DFUXRefDirectories(request: WsDFUXRef.DFUXRefDirectoriesQueryRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefDirectoriesQueryResponse> {\n        return this._connection.send(\"DFUXRefDirectories\", request, \"json\", false, abortSignal, \"DFUXRefDirectoriesQueryResponse\");\n    }\n\n    DFUXRefFoundFiles(request: WsDFUXRef.DFUXRefFoundFilesQueryRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefFoundFilesQueryResponse> {\n        return this._connection.send(\"DFUXRefFoundFiles\", request, \"json\", false, abortSignal, \"DFUXRefFoundFilesQueryResponse\");\n    }\n\n    DFUXRefList(request: WsDFUXRef.DFUXRefListRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefListResponse> {\n        return this._connection.send(\"DFUXRefList\", request, \"json\", false, abortSignal, \"DFUXRefListResponse\");\n    }\n\n    DFUXRefLostFiles(request: WsDFUXRef.DFUXRefLostFilesQueryRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefLostFilesQueryResponse> {\n        return this._connection.send(\"DFUXRefLostFiles\", request, \"json\", false, abortSignal, \"DFUXRefLostFilesQueryResponse\");\n    }\n\n    DFUXRefMessages(request: WsDFUXRef.DFUXRefMessagesQueryRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefMessagesQueryResponse> {\n        return this._connection.send(\"DFUXRefMessages\", request, \"json\", false, abortSignal, \"DFUXRefMessagesQueryResponse\");\n    }\n\n    DFUXRefOrphanFiles(request: WsDFUXRef.DFUXRefOrphanFilesQueryRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefOrphanFilesQueryResponse> {\n        return this._connection.send(\"DFUXRefOrphanFiles\", request, \"json\", false, abortSignal, \"DFUXRefOrphanFilesQueryResponse\");\n    }\n\n    DFUXRefUnusedFiles(request: WsDFUXRef.DFUXRefUnusedFilesRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.DFUXRefUnusedFilesResponse> {\n        return this._connection.send(\"DFUXRefUnusedFiles\", request, \"json\", false, abortSignal, \"DFUXRefUnusedFilesResponse\");\n    }\n\n    Ping(request: WsDFUXRef.WsDFUXRefPingRequest, abortSignal?: AbortSignal): Promise<WsDFUXRef.WsDFUXRefPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WsDFUXRefPingResponse\");\n    }\n\n}\n", "import { DFUXRefServiceBase, type WsDFUXRef } from \"./wsdl/WsDFUXRef/v1.04/WsDFUXRef.ts\";\n\nexport {\n    type WsDFUXRef\n};\n\nexport namespace WsDFUXRefEx {\n\n    export interface Request {\n        DFUXRefArrayActionRequest: WsDFUXRef.DFUXRefArrayActionRequest;\n        DFUXRefBuildRequest: WsDFUXRef.DFUXRefBuildRequest;\n        DFUXRefBuildCancelRequest: WsDFUXRef.DFUXRefBuildCancelRequest;\n        DFUXRefCleanDirectoriesRequest: WsDFUXRef.DFUXRefCleanDirectoriesRequest;\n        DFUXRefDirectoriesQueryRequest: WsDFUXRef.DFUXRefDirectoriesQueryRequest;\n        DFUXRefFoundFilesQueryRequest: WsDFUXRef.DFUXRefFoundFilesQueryRequest;\n        DFUXRefListRequest: WsDFUXRef.DFUXRefListRequest;\n        DFUXRefLostFilesQueryRequest: WsDFUXRef.DFUXRefLostFilesQueryRequest;\n        DFUXRefMessagesQueryRequest: WsDFUXRef.DFUXRefMessagesQueryRequest;\n        DFUXRefOrphanFilesQueryRequest: WsDFUXRef.DFUXRefOrphanFilesQueryRequest;\n        DFUXRefUnusedFilesRequest: WsDFUXRef.DFUXRefUnusedFilesRequest;\n        WsDFUXRefPingRequest: WsDFUXRef.WsDFUXRefPingRequest;\n    }\n\n    export interface Directory {\n        Num: string;\n        Name: string;\n        MaxSize: string;\n        MaxIP: string;\n        MinSize: string;\n        MinIP: string;\n        Size: string;\n        PositiveSkew: string;\n    }\n\n    interface DFUXRefDirectoriesQueryResult {\n        Directory: Directory[];\n        Cluster: string;\n    }\n\n    export interface DFUXRefDirectoriesQueryResponseEx {\n        DFUXRefDirectoriesQueryResult: DFUXRefDirectoriesQueryResult;\n    }\n\n    export interface Part {\n        Num: string;\n        Node: string;\n    }\n\n    export interface DFUXRefFile {\n        Size: string;\n        Partmask: string;\n        Modified: Date;\n        Numparts: string;\n        Part: Part[];\n    }\n\n    export interface DFUXRefFoundFilesQueryResult {\n        File: DFUXRefFile[];\n        Cluster: string;\n    }\n\n    export interface XRefNode {\n        Name: string;\n        Modified: string;\n        Status: string;\n    }\n\n    export interface DFUXRefListResult {\n        XRefNode: XRefNode[];\n    }\n\n    export interface DFUXRefListResponseEx {\n        DFUXRefListResult: DFUXRefListResult;\n    }\n\n    export interface File2 {\n        Partslost: string;\n        Name: string;\n        Partmask: string;\n        Modified: Date;\n        Numparts: string;\n        Part: Part[];\n        Cluster: string;\n        Size: string;\n        Primarylost: string;\n        Replicatedlost: string;\n    }\n\n    export interface DFUXRefLostFilesQueryResult {\n        File: File2[];\n        Cluster: string;\n    }\n\n    export interface Warning {\n        Text: string;\n        File: string;\n    }\n\n    export interface DFUXRefMessagesQueryResult {\n        Warning: Warning[];\n        Cluster: string;\n    }\n\n    export interface DFUXRefOrphanFilesQueryResult {\n        File: DFUXRefFile[];\n        Cluster: string;\n    }\n\n}\n\nexport class DFUXRefService extends DFUXRefServiceBase {\n\n    DFUXRefDirectoriesEx(request: Partial<WsDFUXRef.DFUXRefDirectoriesQueryRequest>): Promise<WsDFUXRefEx.DFUXRefDirectoriesQueryResponseEx> {\n        return this._connection.send(\"DFUXRefDirectories\", request, \"json\", false, undefined, \"DFUXRefDirectoriesQueryResponse\");\n    }\n\n    DFUXRefListEx(request: Partial<WsDFUXRef.DFUXRefListRequest>): Promise<WsDFUXRefEx.DFUXRefListResponseEx> {\n        return this._connection.send(\"DFUXRefList\", request, \"json\", false, undefined, \"DFUXRefListResponse\");\n    }\n\n}\n", "import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { ESPExceptions, Service } from \"../espConnection.ts\";\n\nexport type IFieldType = DDL2.IFieldType;\nexport type IField = DDL2.IField;\n\nexport type IWsEclRequest = IField[];\nexport type IWsEclResult = IField[];\nexport type IWsEclResponse = { [id: string]: IField[] };\n\nfunction jsonToIField(id: string, item: any): IField {\n    const type = typeof item;\n    switch (type) {\n        case \"boolean\":\n        case \"number\":\n        case \"string\":\n            return { id, type };\n        case \"object\":\n            if (item.Row instanceof Array) {\n                item = item.Row;\n            }\n            if (item instanceof Array) {\n                return {\n                    id,\n                    type: \"dataset\",\n                    children: jsonToIFieldArr(item[0])\n                };\n            } else if (item instanceof Object) {\n                if (item.Item && item.Item instanceof Array && item.Item.length === 1) {\n                    const fieldType = typeof item.Item[0];\n                    if (fieldType === \"string\" || fieldType === \"number\") {\n                        return {\n                            id,\n                            type: \"set\",\n                            fieldType\n                        };\n                    }\n                    throw new Error(\"Unknown field type\");\n                }\n                return {\n                    id,\n                    type: \"object\",\n                    fields: jsonToIFieldObj(item)\n                };\n            }\n        // Fall through  ---\n        default:\n            throw new Error(\"Unknown field type\");\n    }\n}\n\nfunction jsonToIFieldArr(json: any): IField[] {\n    if (json.Row && json.Row instanceof Array) {\n        json = json.Row[0];\n    }\n    const retVal: IField[] = [];\n    for (const key in json) {\n        retVal.push(jsonToIField(key, json[key]));\n    }\n    return retVal;\n}\n\nfunction jsonToIFieldObj(json: any): { [id: string]: IField } {\n    const fields = {};\n    for (const key in json) {\n        fields[key] = jsonToIField(key, json[key]);\n    }\n    return fields;\n}\n\nexport class EclService extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsEcl\", \"0\");\n    }\n\n    opts() {\n        return this._connection.opts();\n    }\n\n    requestJson(querySet: string, queryId: string): Promise<IWsEclRequest> {\n        // http://192.168.3.22:8002/WsEcl/example/request/query/roxie/peopleaccounts/json?display\n        return this._connection.send(`example/request/query/${querySet}/${queryId}/json`, {}, \"text\").then(response => {\n            const requestSchema = JSON.parse(response);\n            for (const key in requestSchema) {\n                return requestSchema[key];\n            }\n            return {};\n        }).then(jsonToIFieldArr);\n    }\n\n    responseJson(querySet: string, queryId: string): Promise<IWsEclResponse> {\n        // http://192.168.3.22:8002/WsEcl/example/response/query/roxie/peopleaccounts/json?display\n        return this._connection.send(`example/response/query/${querySet}/${queryId}/json`, {}, \"text\").then(response => {\n            const responseSchema = JSON.parse(response);\n            for (const key in responseSchema) {\n                return responseSchema[key].Results;\n            }\n            return {};\n        }).then(resultsJson => {\n            const retVal: IWsEclResponse = {};\n            for (const key in resultsJson) {\n                retVal[key] = jsonToIFieldArr(resultsJson[key]);\n            }\n            return retVal;\n        });\n    }\n\n    submit(querySet: string, queryId: string, request: object) {\n        // http://192.168.3.22:8002/WsEcl/submit/query/roxie/peopleaccounts.1/json\n        const action = `submit/query/${querySet}/${queryId}`;\n        return this._connection.send(action, request, \"json2\").then(response => {\n            if (response.Results && response.Results.Exception) {\n                throw new ESPExceptions(action, request, {\n                    Source: \"wsEcl.submit\",\n                    Exception: response.Results.Exception\n                });\n            }\n            return response.Results;\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsElk {\n\n    export interface GetConfigDetailsRequest {\n\n    }\n\n    export interface GetConfigDetailsResponse {\n        IntegrateKibana?: boolean;\n        KibanaAddress?: string;\n        KibanaPort?: string;\n        KibanaEntryPointURI?: string;\n        ReportElasticSearchHealth?: boolean;\n        ElasticSearchAddresses?: string;\n        ElasticSearchPort?: string;\n        ReportLogStashHealth?: boolean;\n        LogStashAddress?: string;\n        LogStashPort?: string;\n    }\n\n    export interface ws_elkPingRequest {\n\n    }\n\n    export interface ws_elkPingResponse {\n\n    }\n\n}\n\nexport class ElkServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_elk\", \"1\");\n    }\n\n    GetConfigDetails(request: WsElk.GetConfigDetailsRequest, abortSignal?: AbortSignal): Promise<WsElk.GetConfigDetailsResponse> {\n        return this._connection.send(\"GetConfigDetails\", request, \"json\", false, abortSignal, \"GetConfigDetailsResponse\");\n    }\n\n    Ping(request: WsElk.ws_elkPingRequest, abortSignal?: AbortSignal): Promise<WsElk.ws_elkPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"ws_elkPingResponse\");\n    }\n\n}\n", "import { ElkServiceBase, WsElk } from \"./wsdl/ws_elk/v1/ws_elk.ts\";\n\nexport {\n    type WsElk\n};\n\nexport class ElkService extends ElkServiceBase {\n}\n", "import { scopedLogger } from \"@hpcc-js/util\";\nimport { LogaccessServiceBase, WsLogaccess } from \"./wsdl/ws_logaccess/v1.08/ws_logaccess.ts\";\n\nconst logger = scopedLogger(\"@hpcc-js/comms/services/wsLogaccess.ts\");\n\nexport {\n    WsLogaccess\n};\n\nexport interface GetLogsExRequest {\n    audience?: string;\n    class?: string[];\n    workunits?: string;\n    message?: string;\n    processid?: string;\n    logid?: string;\n    threadid?: string;\n    timestamp?: string;\n    components?: string;\n    instance?: string;\n    StartDate?: Date;\n    EndDate?: Date;\n    LogLineStartFrom: number,\n    LogLineLimit: number\n}\n\nexport const enum LogType {\n    Disaster = \"DIS\",\n    Error = \"ERR\",\n    Warning = \"WRN\",\n    Information = \"INF\",\n    Progress = \"PRO\",\n    Metric = \"MET\"\n}\n\nexport const enum TargetAudience {\n    Operator = \"OPR\",\n    User = \"USR\",\n    Programmer = \"PRO\",\n    Audit = \"ADT\"\n}\n\n// properties here are \"LogType\" values in Ws_logaccess.GetLogAccessInfo\nexport interface LogLine {\n    audience?: string;\n    class?: string;\n    workunits?: string;\n    message?: string;\n    processid?: number;\n    logid?: string;\n    threadid?: number;\n    timestamp?: string;\n    components?: string;\n    instance?: string;\n}\n\nexport interface GetLogsExResponse {\n    lines: LogLine[],\n    total: number,\n}\n\nconst knownLogManagerTypes = new Set([\"azureloganalyticscurl\", \"elasticstack\", \"grafanacurl\"]);\nconst logColumnTypeValues = new Set(Object.values(WsLogaccess.LogColumnType));\n\nfunction getLogCategory(searchField: string): WsLogaccess.LogAccessType {\n    switch (searchField) {\n        case WsLogaccess.LogColumnType.workunits:\n        case \"hpcc.log.jobid\":\n            return WsLogaccess.LogAccessType.ByJobID;\n        case WsLogaccess.LogColumnType.audience:\n        case \"hpcc.log.audience\":\n            return WsLogaccess.LogAccessType.ByTargetAudience;\n        case WsLogaccess.LogColumnType.class:\n        case \"hpcc.log.class\":\n            return WsLogaccess.LogAccessType.ByLogType;\n        case WsLogaccess.LogColumnType.components:\n        case \"kubernetes.container.name\":\n            return WsLogaccess.LogAccessType.ByComponent;\n        default:\n            return WsLogaccess.LogAccessType.ByFieldName;\n    }\n}\n\n// Explicit list of filter-bearing keys on GetLogsExRequest.\n// Using an allowlist avoids accidentally treating control fields (StartDate, LogLineLimit, etc.)\n// as log filters if the server ever returns a column whose name collides with them.\nconst FILTER_KEYS = [\"audience\", \"class\", \"workunits\", \"message\", \"processid\", \"logid\", \"threadid\", \"timestamp\", \"components\", \"instance\"] as const;\n\nfunction buildFilters(request: GetLogsExRequest, columnMap: Record<string, string>): WsLogaccess.leftFilter[] {\n    const filters: WsLogaccess.leftFilter[] = [];\n    for (const key of FILTER_KEYS) {\n        const value = request[key];\n        if (value == null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\n            continue;\n        }\n        if (!(key in columnMap)) continue;\n\n        const isKnownLogType = logColumnTypeValues.has(key as WsLogaccess.LogColumnType);\n        let searchField: string = isKnownLogType ? key : columnMap[key];\n        const logCategory = getLogCategory(searchField);\n        if (logCategory === WsLogaccess.LogAccessType.ByFieldName) {\n            searchField = columnMap[key];\n        }\n\n        const appendWildcard = logCategory === WsLogaccess.LogAccessType.ByComponent;\n        const rawValues: string[] = Array.isArray(value) ? value : [value as string];\n        for (const raw of rawValues) {\n            filters.push({\n                LogCategory: logCategory,\n                SearchField: searchField,\n                // append wildcard to end of search value to include ephemeral\n                // containers that aren't listed in ECL Watch's filters\n                SearchByValue: appendWildcard ? raw + \"*\" : raw\n            });\n        }\n    }\n    return filters;\n}\n\n// Builds a left-leaning OR chain from filters that share the same SearchField.\nfunction buildOrGroup(group: WsLogaccess.leftFilter[]): WsLogaccess.BinaryLogFilter {\n    const root: WsLogaccess.BinaryLogFilter = { leftFilter: group[0] } as WsLogaccess.BinaryLogFilter;\n    let node = root;\n    for (let i = 1; i < group.length; i++) {\n        node.Operator = WsLogaccess.LogAccessFilterOperator.OR;\n        if (i === group.length - 1) {\n            node.rightFilter = group[i] as WsLogaccess.rightFilter;\n        } else {\n            node.rightBinaryFilter = { BinaryLogFilter: [{ leftFilter: group[i] } as WsLogaccess.BinaryLogFilter] };\n            node = node.rightBinaryFilter.BinaryLogFilter[0];\n        }\n    }\n    return root;\n}\n\n// Recursively AND-chains two or more groups into a BinaryLogFilter (used for nesting beyond depth 1).\nfunction buildAndChain(groups: WsLogaccess.leftFilter[][]): WsLogaccess.BinaryLogFilter {\n    const [firstGroup, ...remainingGroups] = groups;\n    const node: WsLogaccess.BinaryLogFilter = {} as WsLogaccess.BinaryLogFilter;\n    if (firstGroup.length === 1) {\n        node.leftFilter = firstGroup[0];\n    } else {\n        node.leftBinaryFilter = { BinaryLogFilter: [buildOrGroup(firstGroup)] };\n    }\n    if (remainingGroups.length === 0) return node;\n    node.Operator = WsLogaccess.LogAccessFilterOperator.AND;\n    if (remainingGroups.length === 1) {\n        const [secondGroup] = remainingGroups;\n        if (secondGroup.length === 1) {\n            node.rightFilter = secondGroup[0] as WsLogaccess.rightFilter;\n        } else {\n            node.rightBinaryFilter = { BinaryLogFilter: [buildOrGroup(secondGroup)] };\n        }\n    } else {\n        node.rightBinaryFilter = { BinaryLogFilter: [buildAndChain(remainingGroups)] };\n    }\n    return node;\n}\n\n// Groups filters by SearchField, OR-chains each group, then AND-chains the groups together.\n// This ensures e.g. [class_INF, class_ERR, audience_USR] always produces\n// (class_INF OR class_ERR) AND audience_USR regardless of input order.\nfunction buildFilterTree(filters: WsLogaccess.leftFilter[]): WsLogaccess.Filter {\n    const groupMap = new Map<string, WsLogaccess.leftFilter[]>();\n    for (const f of filters) {\n        const existing = groupMap.get(f.SearchField);\n        if (existing) existing.push(f); else groupMap.set(f.SearchField, [f]);\n    }\n    const groups = [...groupMap.values()];\n\n    if (groups.length === 0) {\n        return { leftFilter: { LogCategory: WsLogaccess.LogAccessType.All } as WsLogaccess.leftFilter };\n    }\n\n    const [firstGroup, ...remainingGroups] = groups;\n    const filter: WsLogaccess.Filter = {};\n    if (firstGroup.length === 1) {\n        filter.leftFilter = firstGroup[0];\n    } else {\n        filter.leftBinaryFilter = { BinaryLogFilter: [buildOrGroup(firstGroup)] };\n    }\n\n    if (remainingGroups.length === 0) return filter;\n    filter.Operator = WsLogaccess.LogAccessFilterOperator.AND;\n    if (remainingGroups.length === 1) {\n        const [secondGroup] = remainingGroups;\n        if (secondGroup.length === 1) {\n            filter.rightFilter = secondGroup[0] as WsLogaccess.rightFilter;\n        } else {\n            filter.rightBinaryFilter = { BinaryLogFilter: [buildOrGroup(secondGroup)] };\n        }\n    } else {\n        filter.rightBinaryFilter = { BinaryLogFilter: [buildAndChain(remainingGroups)] };\n    }\n    return filter;\n}\n\nexport class LogaccessService extends LogaccessServiceBase {\n\n    protected _logAccessInfo: Promise<WsLogaccess.GetLogAccessInfoResponse>;\n\n    GetLogAccessInfo(request: WsLogaccess.GetLogAccessInfoRequest = {}): Promise<WsLogaccess.GetLogAccessInfoResponse> {\n        if (!this._logAccessInfo) {\n            this._logAccessInfo = super.GetLogAccessInfo(request);\n        }\n        return this._logAccessInfo;\n    }\n\n    GetLogs(request: WsLogaccess.GetLogsRequest): Promise<WsLogaccess.GetLogsResponse> {\n        return super.GetLogs(request);\n    }\n\n    private convertLogLine(columnMap: Record<string, string>, line: any): LogLine {\n        const retVal: LogLine = {};\n        const fields = line?.fields ? Object.assign({}, ...line.fields) : null;\n        for (const key in columnMap) {\n            retVal[key] = fields ? fields[columnMap[key]] ?? \"\" : \"\";\n        }\n        return retVal;\n    }\n\n    async GetLogsEx(request: GetLogsExRequest): Promise<GetLogsExResponse> {\n        const logInfo = await this.GetLogAccessInfo();\n        const columnMap: Record<string, string> = {};\n        logInfo.Columns.Column.forEach(column => columnMap[column.LogType] = column.Name);\n\n        const filters = buildFilters(request, columnMap);\n        const range: Record<string, string> = {\n            StartDate: request.StartDate instanceof Date ? request.StartDate.toISOString() : new Date(0).toISOString()\n        };\n        if (request.EndDate instanceof Date) {\n            range.EndDate = request.EndDate.toISOString();\n        }\n\n        const getLogsRequest: WsLogaccess.GetLogsRequest = {\n            Filter: buildFilterTree(filters),\n            Range: range,\n            LogLineStartFrom: request.LogLineStartFrom ?? 0,\n            LogLineLimit: request.LogLineLimit ?? 100,\n            SelectColumnMode: WsLogaccess.LogSelectColumnMode.DEFAULT,\n            Format: \"JSON\",\n            SortBy: {\n                SortCondition: [{\n                    BySortType: WsLogaccess.SortColumType.ByDate,\n                    ColumnName: \"\",\n                    Direction: 0\n                }]\n            }\n        };\n\n        return this.GetLogs(getLogsRequest).then(response => {\n            try {\n                const logLines = JSON.parse(response.LogLines);\n                const lines = knownLogManagerTypes.has(logInfo.RemoteLogManagerType)\n                    ? (logLines.lines?.map((line: any) => this.convertLogLine(columnMap, line)) ?? [])\n                    : (logger.warning(`Unknown RemoteLogManagerType: ${logInfo.RemoteLogManagerType}`), []);\n                return {\n                    lines,\n                    total: response.TotalLogLinesAvailable ?? 10000\n                };\n            } catch (e: any) {\n                logger.error(e.message ?? e);\n            }\n            return {\n                lines: [],\n                total: 0\n            };\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsLogaccess {\n\n    export type dateTime = string;\n    export type unsignedInt = number;\n    export type long = number;\n\n    export enum LogColumnType {\n        global = \"global\",\n        workunits = \"workunits\",\n        components = \"components\",\n        audience = \"audience\",\n        class = \"class\",\n        instance = \"instance\",\n        node = \"node\",\n        message = \"message\",\n        logid = \"logid\",\n        processid = \"processid\",\n        threadid = \"threadid\",\n        timestamp = \"timestamp\",\n        pod = \"pod\",\n        traceid = \"traceid\",\n        spanid = \"spanid\"\n    }\n\n    export enum LogColumnValueType {\n        string = \"string\",\n        numeric = \"numeric\",\n        datetime = \"datetime\",\n        enum = \"enum\",\n        epoch = \"epoch\"\n    }\n\n    export enum LogAccessType {\n        All = 0,\n        ByJobID = 1,\n        ByComponent = 2,\n        ByLogType = 3,\n        ByTargetAudience = 4,\n        BySourceInstance = 5,\n        BySourceNode = 6,\n        ByFieldName = 7,\n        ByPod = 8,\n        ByTraceID = 9,\n        BySpanID = 10\n    }\n\n    export enum LogAccessStatusCode {\n        Success = 0,\n        Warning = 1,\n        Fail = 2\n    }\n\n    export enum LogAccessFilterOperator {\n        NONE = 0,\n        AND = 1,\n        OR = 2\n    }\n\n    export enum LogSelectColumnMode {\n        MIN = 0,\n        DEFAULT = 1,\n        ALL = 2,\n        CUSTOM = 3\n    }\n\n    export enum SortColumType {\n        ByDate = 0,\n        ByJobID = 1,\n        ByComponent = 2,\n        ByLogType = 3,\n        ByTargetAudience = 4,\n        BySourceInstance = 5,\n        BySourceNode = 6,\n        ByFieldName = 7,\n        ByPod = 8,\n        ByTraceID = 9,\n        BySpanID = 10\n    }\n\n    export enum SortDirection {\n        ASC = 0,\n        DSC = 1\n    }\n\n    export interface GetHealthReportRequest {\n        IncludeConfiguration?: boolean;\n        IncludeDebugReport?: boolean;\n        IncludeSampleQuery?: boolean;\n    }\n\n    export interface Exception {\n        Code: string;\n        Audience: string;\n        Source: string;\n        Message: string;\n    }\n\n    export interface Exceptions {\n        Source: string;\n        Exception: Exception[];\n    }\n\n    export interface MessageArray {\n        Item: string[];\n    }\n\n    export interface Status {\n        Code: LogAccessStatusCode;\n        MessageArray: MessageArray;\n    }\n\n    export interface DebugReport {\n        SampleQueryReport: string;\n        PluginDebugReport: string;\n        ServerDebugReport: string;\n    }\n\n    export interface GetHealthReportResponse {\n        Exceptions: Exceptions;\n        Status: Status;\n        DebugReport: DebugReport;\n        Configuration: string;\n    }\n\n    export interface GetLogAccessInfoRequest {\n\n    }\n\n    export interface EnumeratedValues {\n        Item: string[];\n    }\n\n    export interface Column {\n        Name: string;\n        LogType: LogColumnType;\n        EnumeratedValues: EnumeratedValues;\n        ColumnMode: LogSelectColumnMode;\n        ColumnType: LogColumnValueType;\n    }\n\n    export interface Columns {\n        Column: Column[];\n    }\n\n    export interface GetLogAccessInfoResponse {\n        Exceptions: Exceptions;\n        Columns: Columns;\n        RemoteLogManagerType: string;\n        RemoteLogManagerConnectionString: string;\n        SupportsResultPaging: boolean;\n    }\n\n    export interface leftFilter {\n        LogCategory: LogAccessType;\n        SearchByValue: string;\n        SearchField: string;\n    }\n\n    export interface rightFilter {\n        LogCategory: LogAccessType;\n        SearchByValue: string;\n        SearchField: string;\n    }\n\n    export interface rightBinaryFilter {\n        BinaryLogFilter: BinaryLogFilter[];\n    }\n\n    export interface BinaryLogFilter {\n        leftFilter: leftFilter;\n        leftBinaryFilter: leftBinaryFilter;\n        Operator: LogAccessFilterOperator;\n        rightFilter: {\n            LogCategory: LogAccessType;\n            SearchByValue: string;\n            SearchField: string;\n        };\n        rightBinaryFilter: {\n            BinaryLogFilter: BinaryLogFilter[];\n        };\n    }\n\n    export interface leftBinaryFilter {\n        BinaryLogFilter: BinaryLogFilter[];\n    }\n\n    export interface Filter {\n        leftFilter?: leftFilter;\n        leftBinaryFilter?: leftBinaryFilter;\n        Operator?: LogAccessFilterOperator;\n        rightFilter?: rightFilter;\n        rightBinaryFilter?: rightBinaryFilter;\n    }\n\n    export interface Range {\n        StartDate?: dateTime;\n        EndDate?: dateTime;\n    }\n\n    export interface Columns2 {\n        Item: string[];\n    }\n\n    export interface SortCondition {\n        BySortType: SortColumType;\n        ColumnName: string;\n        Direction: SortDirection;\n    }\n\n    export interface SortBy {\n        SortCondition: SortCondition[];\n    }\n\n    export interface GetLogsRequest {\n        Filter?: Filter;\n        Range?: Range;\n        LogLineLimit?: unsignedInt;\n        LogLineStartFrom?: long;\n        SelectColumnMode?: LogSelectColumnMode;\n        Columns?: Columns2;\n        Format?: string;\n        SortBy?: SortBy;\n    }\n\n    export interface GetLogsResponse {\n        Exceptions: Exceptions;\n        LogLines: string;\n        LogLineCount: unsignedInt;\n        TotalLogLinesAvailable: unsignedInt;\n    }\n\n    export interface ws_logaccessPingRequest {\n\n    }\n\n    export interface ws_logaccessPingResponse {\n\n    }\n\n}\n\nexport class LogaccessServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_logaccess\", \"1.08\");\n    }\n\n    GetHealthReport(request: Partial<WsLogaccess.GetHealthReportRequest>): Promise<WsLogaccess.GetHealthReportResponse> {\n        return this._connection.send(\"GetHealthReport\", request, \"json\", false, undefined, \"GetHealthReportResponse\");\n    }\n\n    GetLogAccessInfo(request: Partial<WsLogaccess.GetLogAccessInfoRequest>): Promise<WsLogaccess.GetLogAccessInfoResponse> {\n        return this._connection.send(\"GetLogAccessInfo\", request, \"json\", false, undefined, \"GetLogAccessInfoResponse\");\n    }\n\n    GetLogs(request: Partial<WsLogaccess.GetLogsRequest>): Promise<WsLogaccess.GetLogsResponse> {\n        return this._connection.send(\"GetLogs\", request, \"json\", false, undefined, \"GetLogsResponse\");\n    }\n\n    Ping(request: Partial<WsLogaccess.ws_logaccessPingRequest>): Promise<WsLogaccess.ws_logaccessPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_logaccessPingResponse\");\n    }\n\n}\n", "import { exists } from \"@hpcc-js/util\";\nimport { max as d3Max, mean as d3Mean } from \"d3-array\";\n\nimport { MachineServiceBase, WsMachine } from \"./wsdl/ws_machine/v1.19/ws_machine.ts\";\n\nexport {\n    type WsMachine\n};\n\nexport namespace WsMachineEx {\n\n    export interface DiskUsage extends WsMachine.DiskUsage {\n        Total: number;\n        PercentUsed: number;\n    }\n\n    export interface MachineUsage extends Omit<WsMachine.MachineUsage, \"DiskUsages\"> {\n        DiskUsages: DiskUsage[];\n        mean: number;\n        max: number;\n    }\n\n    export interface ComponentUsage extends Omit<WsMachine.ComponentUsage, \"MachineUsages\"> {\n        MachineUsages: MachineUsage[];\n        MachineUsagesDescription: string;\n        mean: number;\n        max: number;\n    }\n\n    export interface TargetClusterUsage extends Omit<WsMachine.TargetClusterUsage, \"ComponentUsages\"> {\n        ComponentUsages: ComponentUsage[];\n        ComponentUsagesDescription: string;\n        mean: number;\n        max: number;\n    }\n\n}\n\nexport class MachineService extends MachineServiceBase {\n\n    GetTargetClusterUsageEx(targetClusters?: string[], bypassCachedResult: boolean = false): Promise<WsMachineEx.TargetClusterUsage[]> {\n        return this._connection.send(\"GetTargetClusterUsage\", {\n            TargetClusters: targetClusters ? { Item: targetClusters } : {},\n            BypassCachedResult: bypassCachedResult\n        }).then(response => {\n            return exists(\"TargetClusterUsages.TargetClusterUsage\", response) ? response.TargetClusterUsages.TargetClusterUsage : [];\n        }).then(response => {\n            return response.filter(tcu => !!tcu.ComponentUsages).map(tcu => {\n                const ComponentUsages: WsMachineEx.ComponentUsage[] = tcu.ComponentUsages.ComponentUsage.map(cu => {\n                    const MachineUsages: WsMachineEx.MachineUsage[] = (cu.MachineUsages && cu.MachineUsages.MachineUsage ? cu.MachineUsages.MachineUsage : []).map(mu => {\n                        const DiskUsages: WsMachineEx.DiskUsage[] = mu.DiskUsages && mu.DiskUsages.DiskUsage ? mu.DiskUsages.DiskUsage.map(du => {\n                            return {\n                                ...du,\n                                InUse: du.InUse * 1024,\n                                Total: (du.InUse + du.Available) * 1024,\n                                PercentUsed: 100 - du.PercentAvailable\n                            };\n                        }) : [];\n                        return {\n                            Name: mu.Name,\n                            NetAddress: mu.NetAddress,\n                            Description: mu.Description,\n                            DiskUsages,\n                            mean: d3Mean(DiskUsages.filter(du => !isNaN(du.PercentUsed)), du => du.PercentUsed),\n                            max: d3Max(DiskUsages.filter(du => !isNaN(du.PercentUsed)), du => du.PercentUsed)\n                        };\n                    });\n                    return {\n                        Type: cu.Type,\n                        Name: cu.Name,\n                        Description: cu.Description,\n                        MachineUsages,\n                        MachineUsagesDescription: MachineUsages.reduce((prev, mu) => prev + (mu.Description || \"\"), \"\"),\n                        mean: d3Mean(MachineUsages.filter(mu => !isNaN(mu.mean)), mu => mu.mean),\n                        max: d3Max(MachineUsages.filter(mu => !isNaN(mu.max)), mu => mu.max)\n                    };\n                });\n                return {\n                    Name: tcu.Name,\n                    Description: tcu.Description,\n                    ComponentUsages,\n                    ComponentUsagesDescription: ComponentUsages.reduce((prev, cu) => prev + (cu.MachineUsagesDescription || \"\"), \"\"),\n                    mean: d3Mean(ComponentUsages.filter(cu => !isNaN(cu.mean)), cu => cu.mean),\n                    max: d3Max(ComponentUsages.filter(cu => !isNaN(cu.max)), cu => cu.max)\n                };\n            });\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsMachine {\n\n    export type int = number;\n    export type long = number;\n    export type unsignedInt = number;\n\n    export enum ThresholdType {\n        THRESHOLD_PERCENTAGE = 0,\n        THRESHOLD_MB = 1\n    }\n\n    export enum TpMachineType {\n        ALLNODES = \"ALLNODES\",\n        THORMACHINES = \"THORMACHINES\",\n        HOLEMACHINES = \"HOLEMACHINES\",\n        ROXIEMACHINES = \"ROXIEMACHINES\",\n        MACHINES = \"MACHINES\",\n        AVAILABLEMACHINES = \"AVAILABLEMACHINES\",\n        DROPZONE = \"DROPZONE\",\n        STANDBYNNODE = \"STANDBYNNODE\",\n        THORSPARENODES = \"THORSPARENODES\",\n        HOLESTANDBYNODES = \"HOLESTANDBYNODES\"\n    }\n\n    export interface GetComponentStatusRequest {\n\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface StatusReport {\n        StatusID?: int;\n        Status?: string;\n        StatusDetails?: string;\n        Reporter?: string;\n        TimeReported?: long;\n        TimeReportedStr?: string;\n        TimeCached?: string;\n        URL?: string;\n    }\n\n    export interface StatusReports {\n        StatusReport?: StatusReport[];\n    }\n\n    export interface ComponentStatus {\n        ComponentTypeID?: int;\n        ComponentType?: string;\n        EndPoint?: string;\n        StatusID?: int;\n        Status?: string;\n        TimeReported?: long;\n        TimeReportedStr?: string;\n        Reporter?: string;\n        StatusReports?: StatusReports;\n    }\n\n    export interface ComponentStatusList {\n        ComponentStatus?: ComponentStatus[];\n    }\n\n    export interface GetComponentStatusResponse {\n        Exceptions?: Exceptions;\n        StatusCode?: int;\n        Status?: string;\n        ComponentType?: string;\n        EndPoint?: string;\n        ComponentStatusID?: int;\n        ComponentStatus?: string;\n        TimeReported?: long;\n        TimeReportedStr?: string;\n        Reporter?: string;\n        StatusReport?: StatusReport;\n        ComponentStatusList?: ComponentStatusList;\n    }\n\n    export interface Component {\n        Type?: string;\n        Name?: string;\n    }\n\n    export interface Components {\n        Component?: Component[];\n    }\n\n    export interface GetComponentUsageRequest {\n        Components?: Components;\n        BypassCachedResult?: boolean;\n    }\n\n    export interface DiskUsage {\n        Name?: string;\n        Path?: string;\n        Description?: string;\n        InUse?: long;\n        Available?: long;\n        PercentAvailable?: int;\n        Exception?: string;\n    }\n\n    export interface DiskUsages {\n        DiskUsage?: DiskUsage[];\n    }\n\n    export interface MachineUsage {\n        Name?: string;\n        NetAddress?: string;\n        Description?: string;\n        Exception?: string;\n        DiskUsages?: DiskUsages;\n    }\n\n    export interface MachineUsages {\n        MachineUsage?: MachineUsage[];\n    }\n\n    export interface ComponentUsage {\n        Type?: string;\n        Name?: string;\n        Description?: string;\n        Exception?: string;\n        MachineUsages?: MachineUsages;\n    }\n\n    export interface ComponentUsages {\n        ComponentUsage?: ComponentUsage[];\n    }\n\n    export interface GetComponentUsageResponse {\n        Exceptions?: Exceptions;\n        ComponentUsages?: ComponentUsages;\n        UsageTime?: string;\n    }\n\n    export interface Addresses {\n        Item?: string[];\n    }\n\n    export interface GetMachineInfoRequest {\n        Addresses?: Addresses;\n        SortBy?: string;\n        ClusterType?: TpMachineType;\n        Cluster?: string;\n        OldIP?: string;\n        Path?: string;\n        AddProcessesToFilter?: string;\n        ApplyProcessFilter?: boolean;\n        GetProcessorInfo?: boolean;\n        GetStorageInfo?: boolean;\n        LocalFileSystemsOnly?: boolean;\n        GetSoftwareInfo?: boolean;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        AutoRefresh?: int;\n        MemThresholdType?: ThresholdType;\n        DiskThresholdType?: ThresholdType;\n        UserName?: string;\n        Password?: string;\n        SecurityString?: string;\n    }\n\n    export interface RequestInfo {\n        Addresses?: Addresses;\n        SortBy?: string;\n        ClusterType?: TpMachineType;\n        Cluster?: string;\n        OldIP?: string;\n        Path?: string;\n        AddProcessesToFilter?: string;\n        ApplyProcessFilter?: boolean;\n        GetProcessorInfo?: boolean;\n        GetStorageInfo?: boolean;\n        LocalFileSystemsOnly?: boolean;\n        GetSoftwareInfo?: boolean;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        AutoRefresh?: int;\n        MemThresholdType?: ThresholdType;\n        DiskThresholdType?: ThresholdType;\n        SecurityString?: string;\n        UserName?: string;\n        Password?: string;\n        EnableSNMP?: boolean;\n    }\n\n    export interface Columns {\n        Item?: string[];\n    }\n\n    export interface ProcessorInfo {\n        Type?: string;\n        Load?: int;\n    }\n\n    export interface Processors {\n        ProcessorInfo?: ProcessorInfo[];\n    }\n\n    export interface StorageInfo {\n        Description?: string;\n        Type?: string;\n        Available?: long;\n        PercentAvail?: int;\n        Total?: long;\n        Failures?: int;\n    }\n\n    export interface Storage {\n        StorageInfo?: StorageInfo[];\n    }\n\n    export interface SWRunInfo {\n        Name?: string;\n        Instances?: int;\n        State?: int;\n    }\n\n    export interface Running {\n        SWRunInfo?: SWRunInfo[];\n    }\n\n    export interface PhysicalMemory {\n        Description?: string;\n        Type?: string;\n        Available?: long;\n        PercentAvail?: int;\n        Total?: long;\n        Failures?: int;\n    }\n\n    export interface VirtualMemory {\n        Description?: string;\n        Type?: string;\n        Available?: long;\n        PercentAvail?: int;\n        Total?: long;\n        Failures?: int;\n    }\n\n    export interface ComponentInfo {\n        Condition?: int;\n        State?: int;\n        UpTime?: string;\n    }\n\n    export interface MachineInfoEx {\n        Address?: string;\n        ConfigAddress?: string;\n        Name?: string;\n        ProcessType?: string;\n        DisplayType?: string;\n        Description?: string;\n        AgentVersion?: string;\n        Contact?: string;\n        Location?: string;\n        UpTime?: string;\n        ComponentName?: string;\n        ComponentPath?: string;\n        RoxieState?: string;\n        RoxieStateDetails?: string;\n        OS?: int;\n        ProcessNumber?: int;\n        Channels?: unsignedInt;\n        Processors?: Processors;\n        Storage?: Storage;\n        Running?: Running;\n        PhysicalMemory?: PhysicalMemory;\n        VirtualMemory?: VirtualMemory;\n        ComponentInfo?: ComponentInfo;\n        Exception?: string;\n    }\n\n    export interface Machines {\n        MachineInfoEx?: MachineInfoEx[];\n    }\n\n    export interface GetMachineInfoResponse {\n        Exceptions?: Exceptions;\n        RequestInfo?: RequestInfo;\n        Columns?: Columns;\n        Machines?: Machines;\n        TimeStamp?: string;\n        UserName?: string;\n        Password?: string;\n        AcceptLanguage?: string;\n    }\n\n    export interface GetMachineInfoRequestEx {\n        Addresses?: Addresses;\n        ClusterType?: TpMachineType;\n    }\n\n    export interface GetMachineInfoResponseEx {\n        Exceptions?: Exceptions;\n        AcceptLanguage?: string;\n        Machines?: Machines;\n    }\n\n    export interface ShowColumns {\n        Item?: string[];\n    }\n\n    export interface MetricsRequest {\n        SecurityString?: string;\n        Addresses?: Addresses;\n        ShowColumns?: ShowColumns;\n        AutoRefresh?: int;\n        SelectAllChecked?: boolean;\n        Cluster?: string;\n        AutoUpdate?: boolean;\n    }\n\n    export interface MetricsResponse {\n        Exceptions?: Exceptions;\n        FieldInformation?: string;\n        Metrics?: string;\n        AutoRefresh?: int;\n        Cluster?: string;\n        SelectAllChecked?: boolean;\n        AutoUpdate?: boolean;\n        AcceptLanguage?: string;\n    }\n\n    export interface NodeGroups {\n        Item?: string[];\n    }\n\n    export interface GetNodeGroupUsageRequest {\n        NodeGroups?: NodeGroups;\n        BypassCachedResult?: boolean;\n    }\n\n    export interface NodeGroupUsage {\n        Name?: string;\n        Description?: string;\n        Exception?: string;\n        ComponentUsages?: ComponentUsages;\n    }\n\n    export interface NodeGroupUsages {\n        NodeGroupUsage?: NodeGroupUsage[];\n    }\n\n    export interface GetNodeGroupUsageResponse {\n        Exceptions?: Exceptions;\n        NodeGroupUsages?: NodeGroupUsages;\n        UsageTime?: string;\n    }\n\n    export interface TargetClusters {\n        Item?: string[];\n    }\n\n    export interface GetTargetClusterInfoRequest {\n        TargetClusters?: TargetClusters;\n        AddProcessesToFilter?: string;\n        ApplyProcessFilter?: boolean;\n        GetProcessorInfo?: boolean;\n        GetStorageInfo?: boolean;\n        LocalFileSystemsOnly?: boolean;\n        GetSoftwareInfo?: boolean;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        AutoRefresh?: int;\n        MemThresholdType?: ThresholdType;\n        DiskThresholdType?: ThresholdType;\n    }\n\n    export interface Processes {\n        MachineInfoEx?: MachineInfoEx[];\n    }\n\n    export interface TargetClusterInfo {\n        Name?: string;\n        Type?: string;\n        Processes?: Processes;\n    }\n\n    export interface TargetClusterInfoList {\n        TargetClusterInfo?: TargetClusterInfo[];\n    }\n\n    export interface GetTargetClusterInfoResponse {\n        Exceptions?: Exceptions;\n        Columns?: Columns;\n        RequestInfo?: RequestInfo;\n        TargetClusterInfoList?: TargetClusterInfoList;\n        TimeStamp?: string;\n        AcceptLanguage?: string;\n    }\n\n    export interface GetTargetClusterUsageRequest {\n        TargetClusters?: TargetClusters;\n        BypassCachedResult?: boolean;\n    }\n\n    export interface TargetClusterUsage {\n        Name?: string;\n        Description?: string;\n        Exception?: string;\n        ComponentUsages?: ComponentUsages;\n    }\n\n    export interface TargetClusterUsages {\n        TargetClusterUsage?: TargetClusterUsage[];\n    }\n\n    export interface GetTargetClusterUsageResponse {\n        Exceptions?: Exceptions;\n        TargetClusterUsages?: TargetClusterUsages;\n        UsageTime?: string;\n    }\n\n    export interface ws_machinePingRequest {\n\n    }\n\n    export interface ws_machinePingResponse {\n\n    }\n\n    export interface UpdateComponentStatusRequest {\n        Reporter?: string;\n        ComponentStatusList?: ComponentStatusList;\n    }\n\n    export interface UpdateComponentStatusResponse {\n        Exceptions?: Exceptions;\n        StatusCode?: int;\n        Status?: string;\n    }\n\n}\n\nexport class MachineServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"ws_machine\", \"1.19\");\n    }\n\n    GetComponentStatus(request: Partial<WsMachine.GetComponentStatusRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetComponentStatusResponse> {\n        return this._connection.send(\"GetComponentStatus\", request, \"json\", false, abortSignal, \"GetComponentStatusResponse\");\n    }\n\n    GetComponentUsage(request: Partial<WsMachine.GetComponentUsageRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetComponentUsageResponse> {\n        return this._connection.send(\"GetComponentUsage\", request, \"json\", false, abortSignal, \"GetComponentUsageResponse\");\n    }\n\n    GetMachineInfo(request: Partial<WsMachine.GetMachineInfoRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetMachineInfoResponse> {\n        return this._connection.send(\"GetMachineInfo\", request, \"json\", false, abortSignal, \"GetMachineInfoResponse\");\n    }\n\n    GetMachineInfoEx(request: Partial<WsMachine.GetMachineInfoRequestEx>, abortSignal?: AbortSignal): Promise<WsMachine.GetMachineInfoResponseEx> {\n        return this._connection.send(\"GetMachineInfoEx\", request, \"json\", false, abortSignal, \"GetMachineInfoResponseEx\");\n    }\n\n    GetMetrics(request: Partial<WsMachine.MetricsRequest>, abortSignal?: AbortSignal): Promise<WsMachine.MetricsResponse> {\n        return this._connection.send(\"GetMetrics\", request, \"json\", false, abortSignal, \"MetricsResponse\");\n    }\n\n    GetNodeGroupUsage(request: Partial<WsMachine.GetNodeGroupUsageRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetNodeGroupUsageResponse> {\n        return this._connection.send(\"GetNodeGroupUsage\", request, \"json\", false, abortSignal, \"GetNodeGroupUsageResponse\");\n    }\n\n    GetTargetClusterInfo(request: Partial<WsMachine.GetTargetClusterInfoRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetTargetClusterInfoResponse> {\n        return this._connection.send(\"GetTargetClusterInfo\", request, \"json\", false, abortSignal, \"GetTargetClusterInfoResponse\");\n    }\n\n    GetTargetClusterUsage(request: Partial<WsMachine.GetTargetClusterUsageRequest>, abortSignal?: AbortSignal): Promise<WsMachine.GetTargetClusterUsageResponse> {\n        return this._connection.send(\"GetTargetClusterUsage\", request, \"json\", false, abortSignal, \"GetTargetClusterUsageResponse\");\n    }\n\n    Ping(request: Partial<WsMachine.ws_machinePingRequest>, abortSignal?: AbortSignal): Promise<WsMachine.ws_machinePingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"ws_machinePingResponse\");\n    }\n\n    UpdateComponentStatus(request: Partial<WsMachine.UpdateComponentStatusRequest>, abortSignal?: AbortSignal): Promise<WsMachine.UpdateComponentStatusResponse> {\n        return this._connection.send(\"UpdateComponentStatus\", request, \"json\", false, abortSignal, \"UpdateComponentStatusResponse\");\n    }\n\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsPackageProcess {\n\n    export type int = number;\n    export type nonNegativeInteger = number;\n\n    export interface ActivatePackageRequest {\n        Target?: string;\n        PackageMap?: string;\n        Process?: string;\n        GlobalScope?: boolean;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface status {\n        Code?: int;\n        Description?: string;\n    }\n\n    export interface ActivatePackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n    }\n\n    export interface AddPackageRequest {\n        Info?: string;\n        Activate?: boolean;\n        OverWrite?: boolean;\n        Target?: string;\n        PackageMap?: string;\n        Process?: string;\n        DaliIp?: string;\n        GlobalScope?: boolean;\n        SourceProcess?: string;\n        AllowForeignFiles?: boolean;\n        PreloadAllPackages?: boolean;\n        ReplacePackageMap?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface FilesNotFound {\n        File?: string[];\n    }\n\n    export interface AddPackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        FilesNotFound?: FilesNotFound;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface AddPartToPackageMapRequest {\n        Target?: string;\n        Process?: string;\n        PackageMap?: string;\n        GlobalScope?: boolean;\n        PartName?: string;\n        Content?: string;\n        DeletePrevious?: boolean;\n        DaliIp?: string;\n        SourceProcess?: string;\n        AllowForeignFiles?: boolean;\n        PreloadAllPackages?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface AddPartToPackageMapResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        FilesNotFound?: FilesNotFound;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface CopyPackageMapRequest {\n        SourcePath?: string;\n        RemoteUserName?: string;\n        RemotePassword?: string;\n        Target?: string;\n        Process?: string;\n        PMID?: string;\n        Activate?: boolean;\n        DaliIp?: string;\n        GlobalScope?: boolean;\n        SourceProcess?: string;\n        PreloadAllPackages?: boolean;\n        ReplacePackageMap?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface CopyPackageMapResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        FilesNotFound?: FilesNotFound;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface DeActivatePackageRequest {\n        Target?: string;\n        PackageMap?: string;\n        Process?: string;\n        GlobalScope?: boolean;\n    }\n\n    export interface DeActivatePackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n    }\n\n    export interface PackageMap {\n        Id?: string;\n        Target?: string;\n        Process?: string;\n    }\n\n    export interface PackageMaps {\n        PackageMap?: PackageMap[];\n    }\n\n    export interface DeletePackageRequest {\n        Target?: string;\n        PackageMap?: string;\n        Process?: string;\n        GlobalScope?: boolean;\n        PackageMaps?: PackageMaps;\n    }\n\n    export interface DeletePackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n    }\n\n    export interface EchoRequest {\n        Request?: string;\n    }\n\n    export interface EchoResponse {\n        Response?: string;\n    }\n\n    export interface GetPackageRequest {\n        Target?: string;\n        Process?: string;\n    }\n\n    export interface GetPackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        Info?: string;\n    }\n\n    export interface GetPackageMapByIdRequest {\n        PackageMapId?: string;\n    }\n\n    export interface GetPackageMapByIdResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        Info?: string;\n    }\n\n    export interface GetPackageMapSelectOptionsRequest {\n        IncludeTargets?: boolean;\n        IncludeProcesses?: boolean;\n        IncludeProcessFilters?: boolean;\n    }\n\n    export interface Processes {\n        Item?: string[];\n    }\n\n    export interface TargetData {\n        Name?: string;\n        Type?: string;\n        Processes?: Processes;\n    }\n\n    export interface Targets {\n        TargetData?: TargetData[];\n    }\n\n    export interface ProcessFilters {\n        Item?: string[];\n    }\n\n    export interface GetPackageMapSelectOptionsResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        Targets?: Targets;\n        ProcessFilters?: ProcessFilters;\n    }\n\n    export interface GetPartFromPackageMapRequest {\n        Target?: string;\n        PackageMap?: string;\n        GlobalScope?: boolean;\n        PartName?: string;\n    }\n\n    export interface GetPartFromPackageMapResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        Content?: string;\n    }\n\n    export interface GetQueryFileMappingRequest {\n        Target?: string;\n        PMID?: string;\n        QueryName?: string;\n        GlobalScope?: boolean;\n    }\n\n    export interface UnmappedFiles {\n        File?: string[];\n    }\n\n    export interface SubFiles {\n        File?: string[];\n    }\n\n    export interface SuperFile {\n        Name?: string;\n        SubFiles?: SubFiles;\n    }\n\n    export interface SuperFiles {\n        SuperFile?: SuperFile[];\n    }\n\n    export interface GetQueryFileMappingResponse {\n        Exceptions?: Exceptions;\n        UnmappedFiles?: UnmappedFiles;\n        SuperFiles?: SuperFiles;\n    }\n\n    export interface ListPackageRequest {\n        Target?: string;\n        Process?: string;\n    }\n\n    export interface PackageListData {\n        Id?: string;\n        Queries?: string;\n    }\n\n    export interface PkgListData {\n        PackageListData?: PackageListData[];\n    }\n\n    export interface PackageListMapData {\n        Id?: string;\n        Target?: string;\n        Process?: string;\n        PkgListData?: PkgListData;\n        Active?: boolean;\n        Description?: string;\n    }\n\n    export interface PkgListMapData {\n        PackageListMapData?: PackageListMapData[];\n    }\n\n    export interface ListPackageResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        PkgListMapData?: PkgListMapData;\n    }\n\n    export interface ListPackagesRequest {\n        Target?: string;\n        Process?: string;\n        ProcessFilter?: string;\n    }\n\n    export interface PackageMapList {\n        PackageListMapData?: PackageListMapData[];\n    }\n\n    export interface ListPackagesResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n        PackageMapList?: PackageMapList;\n    }\n\n    export interface WsPackageProcessPingRequest {\n\n    }\n\n    export interface WsPackageProcessPingResponse {\n\n    }\n\n    export interface RemovePartFromPackageMapRequest {\n        Target?: string;\n        PackageMap?: string;\n        GlobalScope?: boolean;\n        PartName?: string;\n    }\n\n    export interface RemovePartFromPackageMapResponse {\n        Exceptions?: Exceptions;\n        status?: status;\n    }\n\n    export interface QueriesToVerify {\n        Item?: string[];\n    }\n\n    export interface QueriesToIgnore {\n        Item?: string[];\n    }\n\n    export interface ValidatePackageRequest {\n        Info?: string;\n        Target?: string;\n        Process?: string;\n        Active?: boolean;\n        PMID?: string;\n        QueryIdToVerify?: string;\n        QueriesToVerify?: QueriesToVerify;\n        QueriesToIgnore?: QueriesToIgnore;\n        CheckDFS?: boolean;\n        GlobalScope?: boolean;\n        IgnoreWarnings?: boolean;\n        IgnoreOptionalFiles?: boolean;\n    }\n\n    export interface Warnings {\n        Item?: string[];\n    }\n\n    export interface Errors {\n        Item?: string[];\n    }\n\n    export interface Unmatched {\n        Item?: string[];\n    }\n\n    export interface packages {\n        Unmatched?: Unmatched;\n    }\n\n    export interface queries {\n        Unmatched?: Unmatched;\n    }\n\n    export interface NotInDFS {\n        File?: string[];\n    }\n\n    export interface files {\n        Unmatched?: Unmatched;\n        NotInDFS?: NotInDFS;\n    }\n\n    export interface Result {\n        Target?: string;\n        PMID?: string;\n        Warnings?: Warnings;\n        Errors?: Errors;\n        packages?: packages;\n        queries?: queries;\n        files?: files;\n    }\n\n    export interface Results {\n        Result?: Result[];\n    }\n\n    export interface ValidatePackageResponse {\n        Exceptions?: Exceptions;\n        Results?: Results;\n    }\n\n}\n\nexport class PackageProcessServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsPackageProcess\", \"1.08\");\n    }\n\n    ActivatePackage(request: WsPackageProcess.ActivatePackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.ActivatePackageResponse> {\n        return this._connection.send(\"ActivatePackage\", request, \"json\", false, abortSignal, \"ActivatePackageResponse\");\n    }\n\n    AddPackage(request: WsPackageProcess.AddPackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.AddPackageResponse> {\n        return this._connection.send(\"AddPackage\", request, \"json\", false, abortSignal, \"AddPackageResponse\");\n    }\n\n    AddPartToPackageMap(request: WsPackageProcess.AddPartToPackageMapRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.AddPartToPackageMapResponse> {\n        return this._connection.send(\"AddPartToPackageMap\", request, \"json\", false, abortSignal, \"AddPartToPackageMapResponse\");\n    }\n\n    CopyPackageMap(request: WsPackageProcess.CopyPackageMapRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.CopyPackageMapResponse> {\n        return this._connection.send(\"CopyPackageMap\", request, \"json\", false, abortSignal, \"CopyPackageMapResponse\");\n    }\n\n    DeActivatePackage(request: WsPackageProcess.DeActivatePackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.DeActivatePackageResponse> {\n        return this._connection.send(\"DeActivatePackage\", request, \"json\", false, abortSignal, \"DeActivatePackageResponse\");\n    }\n\n    DeletePackage(request: WsPackageProcess.DeletePackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.DeletePackageResponse> {\n        return this._connection.send(\"DeletePackage\", request, \"json\", false, abortSignal, \"DeletePackageResponse\");\n    }\n\n    Echo(request: WsPackageProcess.EchoRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.EchoResponse> {\n        return this._connection.send(\"Echo\", request, \"json\", false, abortSignal, \"EchoResponse\");\n    }\n\n    GetPackage(request: WsPackageProcess.GetPackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.GetPackageResponse> {\n        return this._connection.send(\"GetPackage\", request, \"json\", false, abortSignal, \"GetPackageResponse\");\n    }\n\n    GetPackageMapById(request: WsPackageProcess.GetPackageMapByIdRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.GetPackageMapByIdResponse> {\n        return this._connection.send(\"GetPackageMapById\", request, \"json\", false, abortSignal, \"GetPackageMapByIdResponse\");\n    }\n\n    GetPackageMapSelectOptions(request: WsPackageProcess.GetPackageMapSelectOptionsRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.GetPackageMapSelectOptionsResponse> {\n        return this._connection.send(\"GetPackageMapSelectOptions\", request, \"json\", false, abortSignal, \"GetPackageMapSelectOptionsResponse\");\n    }\n\n    GetPartFromPackageMap(request: WsPackageProcess.GetPartFromPackageMapRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.GetPartFromPackageMapResponse> {\n        return this._connection.send(\"GetPartFromPackageMap\", request, \"json\", false, abortSignal, \"GetPartFromPackageMapResponse\");\n    }\n\n    GetQueryFileMapping(request: WsPackageProcess.GetQueryFileMappingRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.GetQueryFileMappingResponse> {\n        return this._connection.send(\"GetQueryFileMapping\", request, \"json\", false, abortSignal, \"GetQueryFileMappingResponse\");\n    }\n\n    ListPackage(request: WsPackageProcess.ListPackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.ListPackageResponse> {\n        return this._connection.send(\"ListPackage\", request, \"json\", false, abortSignal, \"ListPackageResponse\");\n    }\n\n    ListPackages(request: WsPackageProcess.ListPackagesRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.ListPackagesResponse> {\n        return this._connection.send(\"ListPackages\", request, \"json\", false, abortSignal, \"ListPackagesResponse\");\n    }\n\n    Ping(request: WsPackageProcess.WsPackageProcessPingRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.WsPackageProcessPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WsPackageProcessPingResponse\");\n    }\n\n    RemovePartFromPackageMap(request: WsPackageProcess.RemovePartFromPackageMapRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.RemovePartFromPackageMapResponse> {\n        return this._connection.send(\"RemovePartFromPackageMap\", request, \"json\", false, abortSignal, \"RemovePartFromPackageMapResponse\");\n    }\n\n    ValidatePackage(request: WsPackageProcess.ValidatePackageRequest, abortSignal?: AbortSignal): Promise<WsPackageProcess.ValidatePackageResponse> {\n        return this._connection.send(\"ValidatePackage\", request, \"json\", false, abortSignal, \"ValidatePackageResponse\");\n    }\n\n}\n", "import { PackageProcessServiceBase, WsPackageProcess } from \"./wsdl/WsPackageProcess/v1.08/WsPackageProcess.ts\";\n\nexport {\n    type WsPackageProcess\n};\n\nexport class PackageProcessService extends PackageProcessServiceBase {\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\ntype unsignedInt = number;\n\nexport namespace WsResources {\n\n    export interface WsResourcesPingRequest {\n\n    }\n\n    export interface WsResourcesPingResponse {\n\n    }\n\n    export interface ServiceQueryRequest {\n        Type?: string;\n        Name?: string;\n    }\n\n    export interface Exception {\n        Code: string;\n        Audience: string;\n        Source: string;\n        Message: string;\n    }\n\n    export interface Exceptions {\n        Source: string;\n        Exception: Exception[];\n    }\n\n    export interface Service {\n        Name: string;\n        Type: string;\n        Port: unsignedInt;\n        TLSSecure: boolean;\n    }\n\n    export interface Services {\n        Service: Service[];\n    }\n\n    export interface ServiceQueryResponse {\n        Exceptions: {\n            Source: string;\n            Exception: Exception[];\n        };\n        Services: {\n            Service: Service[];\n        };\n    }\n\n    export interface WebLinksQueryRequest {\n\n    }\n\n    export interface NamedValue {\n        Name: string;\n        Value: string;\n    }\n\n    export interface Annotations {\n        NamedValue: NamedValue[];\n    }\n\n    export interface DiscoveredWebLink {\n        ServiceName: string;\n        NameSpace: string;\n        Annotations: {\n            NamedValue: NamedValue[];\n        };\n    }\n\n    export interface DiscoveredWebLinks {\n        DiscoveredWebLink: DiscoveredWebLink[];\n    }\n\n    export interface ConfiguredWebLink {\n        Name: string;\n        Description: string;\n        URL: string;\n    }\n\n    export interface ConfiguredWebLinks {\n        ConfiguredWebLink: ConfiguredWebLink[];\n    }\n\n    export interface WebLinksQueryResponse {\n        Exceptions: Exceptions;\n        DiscoveredWebLinks: {\n            DiscoveredWebLink: DiscoveredWebLink[];\n        };\n        ConfiguredWebLinks: {\n            ConfiguredWebLink: ConfiguredWebLink[];\n        };\n    }\n\n}\n\nexport class ResourcesServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsResources\", \"1.01\");\n    }\n\n    Ping(request: WsResources.WsResourcesPingRequest): Promise<WsResources.WsResourcesPingResponse> {\n        return this._connection.send(\"Ping\", request);\n    }\n\n    ServiceQuery(request: WsResources.ServiceQueryRequest): Promise<WsResources.ServiceQueryResponse> {\n        return this._connection.send(\"ServiceQuery\", request);\n    }\n\n    WebLinksQuery(request: WsResources.WebLinksQueryRequest): Promise<WsResources.WebLinksQueryResponse> {\n        return this._connection.send(\"WebLinksQuery\", request);\n    }\n\n}\n", "import { ResourcesServiceBase, WsResources } from \"./wsdl/WsResources/v1.01/WsResources.ts\";\n\nexport {\n    type WsResources\n};\n\nexport class ResourcesService extends ResourcesServiceBase {\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsSasha {\r\n\r\n    export type unsignedInt = number;\r\n\r\n    export enum WUTypes {\r\n        ECL = \"ECL\",\r\n        DFU = \"DFU\"\r\n    }\r\n\r\n    export interface ArchiveWURequest {\r\n        Wuid?: string;\r\n        WUType?: WUTypes;\r\n        DeleteOnSuccess?: boolean;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code?: string;\r\n        Audience?: string;\r\n        Source?: string;\r\n        Message?: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source?: string;\r\n        Exception?: Exception[];\r\n    }\r\n\r\n    export interface ResultResponse {\r\n        Exceptions?: Exceptions;\r\n        Result?: string;\r\n    }\r\n\r\n    export interface GetVersionRequest {\r\n\r\n    }\r\n\r\n    export interface ListWURequest {\r\n        WUType?: WUTypes;\r\n        Wuid?: string;\r\n        Cluster?: string;\r\n        Owner?: string;\r\n        JobName?: string;\r\n        State?: string;\r\n        FromDate?: string;\r\n        ToDate?: string;\r\n        Archived?: boolean;\r\n        Online?: boolean;\r\n        IncludeDT?: boolean;\r\n        BeforeWU?: string;\r\n        AfterWU?: string;\r\n        MaxNumberWUs?: unsignedInt;\r\n        Descending?: boolean;\r\n        OutputFields?: string;\r\n    }\r\n\r\n    export interface WSSashaPingRequest {\r\n\r\n    }\r\n\r\n    export interface WSSashaPingResponse {\r\n\r\n    }\r\n\r\n    export interface RestoreWURequest {\r\n        Wuid?: string;\r\n        WUType?: WUTypes;\r\n    }\r\n\r\n}\r\n\r\nexport class SashaServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WSSasha\", \"1.01\");\r\n    }\r\n\r\n    ArchiveWU(request: Partial<WsSasha.ArchiveWURequest>, abortSignal?: AbortSignal): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"ArchiveWU\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    GetVersion(request: Partial<WsSasha.GetVersionRequest>, abortSignal?: AbortSignal): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"GetVersion\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    ListWU(request: Partial<WsSasha.ListWURequest>, abortSignal?: AbortSignal): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"ListWU\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsSasha.WSSashaPingRequest>, abortSignal?: AbortSignal): Promise<WsSasha.WSSashaPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WSSashaPingResponse\");\r\n    }\r\n\r\n    RestoreWU(request: Partial<WsSasha.RestoreWURequest>, abortSignal?: AbortSignal): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"RestoreWU\", request, \"json\", false, abortSignal, \"ResultResponse\");\r\n    }\r\n\r\n}\r\n", "import { SashaServiceBase, WsSasha } from \"./wsdl/WsSasha/v1.01/WsSasha.ts\";\n\nexport {\n    WsSasha\n};\n\nexport class SashaService extends SashaServiceBase {\n}", "import { timeParse } from \"d3-time-format\";\nimport { SMCServiceBase, WsSMC } from \"./wsdl/WsSMC/v1.29/WsSMC.ts\";\nimport { IOptions } from \"../connection.ts\";\n\nexport {\n    WsSMC\n};\n\nconst dateParser = timeParse(\"%Y%m%d%H\");\n\nfunction isNumeric(value: any): boolean {\n    return typeof value === \"number\" || (typeof value === \"string\" && value.trim() !== \"\" && !isNaN(+value));\n}\n\nexport interface NormalisedGlobalMetric {\n    Category: string;\n    Start: Date;\n    End: Date;\n    dimensions: { [key: string]: any };\n    stats: { [key: string]: any };\n}\n\nexport class SMCService extends SMCServiceBase {\n\n    connectionOptions(): IOptions {\n        return this._connection.opts();\n    }\n\n    Activity(request: WsSMC.Activity): Promise<WsSMC.ActivityResponse> {\n        return super.Activity(request).then(response => {\n            return {\n                Running: {\n                    ActiveWorkunit: []\n                },\n                ...response\n            };\n        });\n    }\n\n    protected parseGlobalMetric(name: string, value: any): any {\n        // Known Prefixes:  Cost, Critical, Definition, Disk, Distribute, Ecl, Enum, Id, Interface, Is, Library, Load, Match, Meta, Num, Original, Output, Patch, Per, Persist, Predicted, Record, Section, Service, Signed, Size, Source, Spill, Target, Time, Updated, When\n        if (name.startsWith(\"Cost\")) {\n            return +value / 1000000;\n        } else if (name.startsWith(\"Date\")) {\n            return dateParser(value);\n        } else if (name.startsWith(\"Num\")) {\n            return +value;\n        } else if (name.startsWith(\"Time\")) {\n            return +value / 1000000000;\n        } else if (name.startsWith(\"When\")) {\n            return new Date(+value / 1000).toISOString();\n        } else if (isNumeric(value)) {\n            return +value;\n        }\n        return value;\n    }\n\n    GetNormalisedGlobalMetrics(request: Partial<WsSMC.GetGlobalMetrics>): Promise<NormalisedGlobalMetric[]> {\n        return super.GetGlobalMetrics(request).then(response => {\n            const retVal: NormalisedGlobalMetric[] = [];\n            for (const metric of response?.GlobalMetrics?.GlobalMetric || []) {\n                const row: NormalisedGlobalMetric = {\n                    Category: metric.Category,\n                    Start: this.parseGlobalMetric(\"Date\", metric.DateTimeRange?.Start),\n                    End: this.parseGlobalMetric(\"Date\", metric.DateTimeRange?.End),\n                    dimensions: {},\n                    stats: {}\n                };\n                for (const dimension of metric.Dimensions?.Dimension || []) {\n                    row.dimensions[dimension.Name] = dimension.Value;\n                }\n                for (const stat of metric.Stats?.Stat || []) {\n                    row.stats[stat.Name] = this.parseGlobalMetric(stat.Name, stat.Value);\n                }\n                retVal.push(row);\n            }\n            return retVal;\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsSMC {\n\n    export type int = number;\n    export type dateTime = string;\n    export type unsignedInt = number;\n    export type long = number;\n\n    export enum LockModes {\n        ALL = \"ALL\",\n        READ = \"READ\",\n        WRITE = \"WRITE\",\n        HOLD = \"HOLD\",\n        SUB = \"SUB\"\n    }\n\n    export enum RoxieControlCmdType {\n        Attach = \"Attach\",\n        Detach = \"Detach\",\n        State = \"State\",\n        Reload = \"Reload\",\n        ReloadRetry = \"ReloadRetry\",\n        MemLock = \"MemLock\",\n        MemUnlock = \"MemUnlock\",\n        GetMemLocked = \"GetMemLocked\"\n    }\n\n    export interface Activity {\n        ChatURL: string;\n        BannerContent: string;\n        BannerColor: string;\n        BannerSize: string;\n        BannerScroll: string;\n        BannerAction: int;\n        EnableChatURL: boolean;\n        FromSubmitBtn: boolean;\n        SortBy: string;\n        Descending: boolean;\n    }\n\n    export interface Exception {\n        Code: string;\n        Audience: string;\n        Source: string;\n        Message: string;\n    }\n\n    export interface Exceptions {\n        Source: string;\n        Exception: Exception[];\n    }\n\n    export interface TargetCluster {\n        ClusterName: string;\n        QueueName: string;\n        QueueStatus: string;\n        StatusDetails: string;\n        Warning: string;\n        ClusterType: int;\n        ClusterSize: int;\n        ClusterStatus: int;\n    }\n\n    export interface ThorClusterList {\n        TargetCluster: TargetCluster[];\n    }\n\n    export interface RoxieClusterList {\n        TargetCluster: TargetCluster[];\n    }\n\n    export interface HThorClusterList {\n        TargetCluster: TargetCluster[];\n    }\n\n    export interface DFUJob {\n        TimeStarted: string;\n        Done: int;\n        Total: int;\n        Command: string;\n    }\n\n    export interface DFUJobs {\n        DFUJob: DFUJob[];\n    }\n\n    export interface ActiveWorkunit {\n        Wuid: string;\n        State: string;\n        StateID: int;\n        Owner: string;\n        Jobname: string;\n        Server: string;\n        Instance: string;\n        Priority: string;\n        Extra: string;\n        GraphName: string;\n        Duration: string;\n        GID: string;\n        QueueName: string;\n        MemoryBlocked: int;\n        IsPausing: boolean;\n        Warning: string;\n        ClusterName: string;\n        ClusterType: string;\n        ClusterQueueName: string;\n        TargetClusterName: string;\n        NoAccess: boolean;\n    }\n\n    export interface Running {\n        ActiveWorkunit: ActiveWorkunit[];\n    }\n\n    export interface Queues {\n        ServerJobQueue: ServerJobQueue[];\n    }\n\n    export interface ServerJobQueue {\n        QueueName: string;\n        Queues: Queues;\n        ServerName: string;\n        ServerType: string;\n        QueueStatus: string;\n        StatusDetails: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface ServerJobQueues {\n        ServerJobQueue: ServerJobQueue[];\n    }\n\n    export interface ActivityResponse {\n        Exceptions: Exceptions;\n        Build: string;\n        ThorClusterList: ThorClusterList;\n        RoxieClusterList: RoxieClusterList;\n        HThorClusterList: HThorClusterList;\n        DFUJobs: DFUJobs;\n        Running: Running;\n        BannerContent: string;\n        BannerColor: string;\n        BannerSize: string;\n        BannerScroll: string;\n        ChatURL: string;\n        ShowBanner: int;\n        ShowChatURL: int;\n        SortBy: string;\n        Descending: boolean;\n        SuperUser: boolean;\n        AccessRight: string;\n        ServerJobQueues: ServerJobQueues;\n        ActivityTime: string;\n        DaliDetached: boolean;\n    }\n\n    export interface BrowseResources {\n\n    }\n\n    export interface HPCCResource {\n        Name: string;\n        Description: string;\n        FileName: string;\n        Version: string;\n    }\n\n    export interface HPCCResources {\n        HPCCResource: HPCCResource[];\n    }\n\n    export interface HPCCResourceRepository {\n        Name: string;\n        Path: string;\n        HPCCResources: HPCCResources;\n    }\n\n    export interface HPCCResourceRepositories {\n        HPCCResourceRepository: HPCCResourceRepository[];\n    }\n\n    export interface BrowseResourcesResponse {\n        Exceptions: Exceptions;\n        PortalURL: string;\n        ESPInstance: string;\n        OS: int;\n        UseResource: boolean;\n        HPCCResourceRepositories: HPCCResourceRepositories;\n    }\n\n    export interface ClearQueue {\n        Cluster: string;\n        QueueName: string;\n        Comment: string;\n        ServerType: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface TargetClusterInfo {\n        ClusterName: string;\n        QueueName: string;\n        QueueStatus: string;\n        StatusDetails: string;\n        Warning: string;\n        ClusterType: int;\n        ClusterSize: int;\n        ClusterStatus: int;\n    }\n\n    export interface ServerInfo {\n        QueueName: string;\n        Queues: Queues;\n        ServerName: string;\n        ServerType: string;\n        QueueStatus: string;\n        StatusDetails: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface Workunits {\n        ActiveWorkunit: ActiveWorkunit[];\n    }\n\n    export interface StatusServerInfo {\n        TargetClusterInfo: TargetClusterInfo;\n        ServerInfo: ServerInfo;\n        Workunits: Workunits;\n    }\n\n    export interface SMCQueueResponse {\n        Exceptions: Exceptions;\n        StatusServerInfo: StatusServerInfo;\n    }\n\n    export interface GetBuildInfo {\n\n    }\n\n    export interface NamedValue {\n        Name: string;\n        Value: string;\n    }\n\n    export interface BuildInfo {\n        NamedValue: NamedValue[];\n    }\n\n    export interface GetBuildInfoResponse {\n        Exceptions: Exceptions;\n        BuildInfo: BuildInfo;\n    }\n\n    export interface Dimension {\n        Name: string;\n        Value: string;\n    }\n\n    export interface Dimensions {\n        Dimension: Dimension[];\n    }\n\n    export interface DateTimeRange {\n        Start: dateTime;\n        End: dateTime;\n    }\n\n    export interface GetGlobalMetrics {\n        Category: string;\n        Dimensions: Dimensions;\n        DateTimeRange: DateTimeRange;\n    }\n\n    export interface Dimensions2 {\n        Dimension: Dimension[];\n    }\n\n    export interface Stat {\n        Name: string;\n        Value: string;\n    }\n\n    export interface Stats {\n        Stat: Stat[];\n    }\n\n    export interface GlobalMetric {\n        Category: string;\n        Dimensions: Dimensions2;\n        DateTimeRange: DateTimeRange;\n        Stats: Stats;\n    }\n\n    export interface GlobalMetrics {\n        GlobalMetric: GlobalMetric[];\n    }\n\n    export interface GetGlobalMetricsResponse {\n        Exceptions: Exceptions;\n        GlobalMetrics: GlobalMetrics;\n    }\n\n    export interface GetStatusServerInfo {\n        ServerName: string;\n        ServerType: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface GetStatusServerInfoResponse {\n        Exceptions: Exceptions;\n        StatusServerInfo: StatusServerInfo;\n    }\n\n    export interface GetThorQueueAvailability {\n\n    }\n\n    export interface ThorCluster {\n        ClusterName: string;\n        QueueName: string;\n        QueueStatus: string;\n        QueueAvailable: int;\n        JobsRunning: int;\n        JobsInQueue: int;\n        QueueStatus2: int;\n        ThorLCR: string;\n        ClusterSize: int;\n    }\n\n    export interface ThorClusters {\n        ThorCluster: ThorCluster[];\n    }\n\n    export interface GetThorQueueAvailabilityResponse {\n        Exceptions: Exceptions;\n        ThorClusters: ThorClusters;\n    }\n\n    export interface Index {\n\n    }\n\n    export interface SMCIndexResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface LockQuery {\n        EPIP: string;\n        XPath: string;\n        DurationMSLow: unsignedInt;\n        DurationMSHigh: unsignedInt;\n        TimeLockedLow: string;\n        TimeLockedHigh: string;\n        Mode: LockModes;\n        AllFileLocks: boolean;\n    }\n\n    export interface ModeNames {\n        Item: string[];\n    }\n\n    export interface Lock {\n        EPIP: string;\n        XPath: string;\n        LogicalFile: string;\n        SessionID: long;\n        DurationMS: unsignedInt;\n        TimeLocked: string;\n        Modes: string;\n        ModeNames: ModeNames;\n    }\n\n    export interface Locks {\n        Lock: Lock[];\n    }\n\n    export interface LockQueryResponse {\n        Exceptions: Exceptions;\n        Locks: Locks;\n        NumLocks: int;\n    }\n\n    export interface MoveJobBack {\n        ClusterType: int;\n        Cluster: string;\n        QueueName: string;\n        Wuid: string;\n    }\n\n    export interface SMCJobResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface MoveJobDown {\n        ClusterType: int;\n        Cluster: string;\n        QueueName: string;\n        Wuid: string;\n    }\n\n    export interface MoveJobFront {\n        ClusterType: int;\n        Cluster: string;\n        QueueName: string;\n        Wuid: string;\n    }\n\n    export interface MoveJobUp {\n        ClusterType: int;\n        Cluster: string;\n        QueueName: string;\n        Wuid: string;\n    }\n\n    export interface NotInCommunityEdition {\n        EEPortal: string;\n    }\n\n    export interface NotInCommunityEditionResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface PauseQueue {\n        Cluster: string;\n        QueueName: string;\n        Comment: string;\n        ServerType: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface Ping {\n\n    }\n\n    export interface WsSMCPingResponse {\n\n    }\n\n    export interface RecordGlobalMetrics {\n        Category: string;\n        Dimensions: Dimensions;\n        Stats: Stats;\n    }\n\n    export interface RecordGlobalMetricsResponse {\n        Exceptions: Exceptions;\n        Result: string;\n    }\n\n    export interface RemoveJob {\n        ClusterType: int;\n        Cluster: string;\n        QueueName: string;\n        Wuid: string;\n    }\n\n    export interface ResumeQueue {\n        Cluster: string;\n        QueueName: string;\n        Comment: string;\n        ServerType: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n    export interface RoxieControlCmd {\n        ProcessCluster: string;\n        TargetCluster: string;\n        Command: RoxieControlCmdType;\n        Wait: int;\n    }\n\n    export interface Endpoint {\n        Address: string;\n        Attached: boolean;\n        StateHash: string;\n        Status: string;\n        MemLocked: boolean;\n    }\n\n    export interface Endpoints {\n        Endpoint: Endpoint[];\n    }\n\n    export interface RoxieControlCmdResponse {\n        Exceptions: Exceptions;\n        Endpoints: Endpoints;\n    }\n\n    export interface QueryIds {\n        Item: string[];\n    }\n\n    export interface RoxieXrefCmd {\n        RoxieCluster: string;\n        QueryIds: QueryIds;\n        CheckAllNodes: boolean;\n        Wait: int;\n    }\n\n    export interface RoxieXrefCmdResponse {\n        Exceptions: Exceptions;\n        Result: string;\n    }\n\n    export interface SetBanner {\n        ChatURL: string;\n        BannerContent: string;\n        BannerColor: string;\n        BannerSize: string;\n        BannerScroll: string;\n        BannerAction: int;\n        EnableChatURL: boolean;\n        FromSubmitBtn: boolean;\n    }\n\n    export interface SetBannerResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface SMCJob {\n        Wuid: string;\n        QueueName: string;\n    }\n\n    export interface SMCJobs {\n        SMCJob: SMCJob[];\n    }\n\n    export interface SetJobPriority {\n        QueueName: string;\n        Wuid: string;\n        Priority: string;\n        SMCJobs: SMCJobs;\n    }\n\n    export interface SMCPriorityResponse {\n        Exceptions: Exceptions;\n    }\n\n    export interface StopQueue {\n        Cluster: string;\n        QueueName: string;\n        Comment: string;\n        ServerType: string;\n        NetworkAddress: string;\n        Port: int;\n    }\n\n}\n\nexport class SMCServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsSMC\", \"1.29\");\n    }\n\n    Activity(request: Partial<WsSMC.Activity>): Promise<WsSMC.ActivityResponse> {\n        return this._connection.send(\"Activity\", request, \"json\", false, undefined, \"ActivityResponse\");\n    }\n\n    BrowseResources(request: Partial<WsSMC.BrowseResources>): Promise<WsSMC.BrowseResourcesResponse> {\n        return this._connection.send(\"BrowseResources\", request, \"json\", false, undefined, \"BrowseResourcesResponse\");\n    }\n\n    ClearQueue(request: Partial<WsSMC.ClearQueue>): Promise<WsSMC.SMCQueueResponse> {\n        return this._connection.send(\"ClearQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\n    }\n\n    GetBuildInfo(request: Partial<WsSMC.GetBuildInfo>): Promise<WsSMC.GetBuildInfoResponse> {\n        return this._connection.send(\"GetBuildInfo\", request, \"json\", false, undefined, \"GetBuildInfoResponse\");\n    }\n\n    GetGlobalMetrics(request: Partial<WsSMC.GetGlobalMetrics>): Promise<WsSMC.GetGlobalMetricsResponse> {\n        return this._connection.send(\"GetGlobalMetrics\", request, \"json\", false, undefined, \"GetGlobalMetricsResponse\");\n    }\n\n    GetStatusServerInfo(request: Partial<WsSMC.GetStatusServerInfo>): Promise<WsSMC.GetStatusServerInfoResponse> {\n        return this._connection.send(\"GetStatusServerInfo\", request, \"json\", false, undefined, \"GetStatusServerInfoResponse\");\n    }\n\n    GetThorQueueAvailability(request: Partial<WsSMC.GetThorQueueAvailability>): Promise<WsSMC.GetThorQueueAvailabilityResponse> {\n        return this._connection.send(\"GetThorQueueAvailability\", request, \"json\", false, undefined, \"GetThorQueueAvailabilityResponse\");\n    }\n\n    Index(request: Partial<WsSMC.Index>): Promise<WsSMC.SMCIndexResponse> {\n        return this._connection.send(\"Index\", request, \"json\", false, undefined, \"SMCIndexResponse\");\n    }\n\n    LockQuery(request: Partial<WsSMC.LockQuery>): Promise<WsSMC.LockQueryResponse> {\n        return this._connection.send(\"LockQuery\", request, \"json\", false, undefined, \"LockQueryResponse\");\n    }\n\n    MoveJobBack(request: Partial<WsSMC.MoveJobBack>): Promise<WsSMC.SMCJobResponse> {\n        return this._connection.send(\"MoveJobBack\", request, \"json\", false, undefined, \"SMCJobResponse\");\n    }\n\n    MoveJobDown(request: Partial<WsSMC.MoveJobDown>): Promise<WsSMC.SMCJobResponse> {\n        return this._connection.send(\"MoveJobDown\", request, \"json\", false, undefined, \"SMCJobResponse\");\n    }\n\n    MoveJobFront(request: Partial<WsSMC.MoveJobFront>): Promise<WsSMC.SMCJobResponse> {\n        return this._connection.send(\"MoveJobFront\", request, \"json\", false, undefined, \"SMCJobResponse\");\n    }\n\n    MoveJobUp(request: Partial<WsSMC.MoveJobUp>): Promise<WsSMC.SMCJobResponse> {\n        return this._connection.send(\"MoveJobUp\", request, \"json\", false, undefined, \"SMCJobResponse\");\n    }\n\n    NotInCommunityEdition(request: Partial<WsSMC.NotInCommunityEdition>): Promise<WsSMC.NotInCommunityEditionResponse> {\n        return this._connection.send(\"NotInCommunityEdition\", request, \"json\", false, undefined, \"NotInCommunityEditionResponse\");\n    }\n\n    PauseQueue(request: Partial<WsSMC.PauseQueue>): Promise<WsSMC.SMCQueueResponse> {\n        return this._connection.send(\"PauseQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\n    }\n\n    Ping(request: Partial<WsSMC.Ping>): Promise<WsSMC.WsSMCPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsSMCPingResponse\");\n    }\n\n    RecordGlobalMetrics(request: Partial<WsSMC.RecordGlobalMetrics>): Promise<WsSMC.RecordGlobalMetricsResponse> {\n        return this._connection.send(\"RecordGlobalMetrics\", request, \"json\", false, undefined, \"RecordGlobalMetricsResponse\");\n    }\n\n    RemoveJob(request: Partial<WsSMC.RemoveJob>): Promise<WsSMC.SMCJobResponse> {\n        return this._connection.send(\"RemoveJob\", request, \"json\", false, undefined, \"SMCJobResponse\");\n    }\n\n    ResumeQueue(request: Partial<WsSMC.ResumeQueue>): Promise<WsSMC.SMCQueueResponse> {\n        return this._connection.send(\"ResumeQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\n    }\n\n    RoxieControlCmd(request: Partial<WsSMC.RoxieControlCmd>): Promise<WsSMC.RoxieControlCmdResponse> {\n        return this._connection.send(\"RoxieControlCmd\", request, \"json\", false, undefined, \"RoxieControlCmdResponse\");\n    }\n\n    RoxieXrefCmd(request: Partial<WsSMC.RoxieXrefCmd>): Promise<WsSMC.RoxieXrefCmdResponse> {\n        return this._connection.send(\"RoxieXrefCmd\", request, \"json\", false, undefined, \"RoxieXrefCmdResponse\");\n    }\n\n    SetBanner(request: Partial<WsSMC.SetBanner>): Promise<WsSMC.SetBannerResponse> {\n        return this._connection.send(\"SetBanner\", request, \"json\", false, undefined, \"SetBannerResponse\");\n    }\n\n    SetJobPriority(request: Partial<WsSMC.SetJobPriority>): Promise<WsSMC.SMCPriorityResponse> {\n        return this._connection.send(\"SetJobPriority\", request, \"json\", false, undefined, \"SMCPriorityResponse\");\n    }\n\n    StopQueue(request: Partial<WsSMC.StopQueue>): Promise<WsSMC.SMCQueueResponse> {\n        return this._connection.send(\"StopQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\n    }\n\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace Wsstore {\n\n    export type int = number;\n\n    export interface CreateStoreRequest {\n        Name?: string;\n        Type?: string;\n        Description?: string;\n        MaxValueSize?: int;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface CreateStoreResponse {\n        Exceptions?: Exceptions;\n        Name?: string;\n        Type?: string;\n        Description?: string;\n        Owner?: string;\n        Success?: boolean;\n    }\n\n    export interface DeleteRequest {\n        StoreName?: string;\n        Namespace?: string;\n        Key?: string;\n        UserSpecific?: boolean;\n        TargetUser?: string;\n    }\n\n    export interface DeleteResponse {\n        Exceptions?: Exceptions;\n        Success?: boolean;\n    }\n\n    export interface DeleteNamespaceRequest {\n        StoreName?: string;\n        Namespace?: string;\n        UserSpecific?: boolean;\n        TargetUser?: string;\n    }\n\n    export interface DeleteNamespaceResponse {\n        Exceptions?: Exceptions;\n        Success?: boolean;\n    }\n\n    export interface FetchRequest {\n        StoreName?: string;\n        Namespace?: string;\n        Key?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface FetchResponse {\n        Exceptions?: Exceptions;\n        Value?: string;\n    }\n\n    export interface FetchAllRequest {\n        StoreName?: string;\n        Namespace?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface Pair {\n        Key?: string;\n        Value?: string;\n    }\n\n    export interface Pairs {\n        Pair?: Pair[];\n    }\n\n    export interface FetchAllResponse {\n        Exceptions?: Exceptions;\n        Namespace?: string;\n        Pairs?: Pairs;\n    }\n\n    export interface FetchKeyMDRequest {\n        StoreName?: string;\n        Namespace?: string;\n        Key?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface FetchKeyMDResponse {\n        Exceptions?: Exceptions;\n        StoreName?: string;\n        Namespace?: string;\n        Key?: string;\n        Pairs?: Pairs;\n    }\n\n    export interface ListKeysRequest {\n        StoreName?: string;\n        Namespace?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface KeySet {\n        Key?: string[];\n    }\n\n    export interface ListKeysResponse {\n        Exceptions?: Exceptions;\n        StoreName?: string;\n        Namespace?: string;\n        KeySet?: KeySet;\n    }\n\n    export interface ListNamespacesRequest {\n        StoreName?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface Namespaces {\n        Namespace?: string[];\n    }\n\n    export interface ListNamespacesResponse {\n        Exceptions?: Exceptions;\n        StoreName?: string;\n        Namespaces?: Namespaces;\n    }\n\n    export interface ListStoresRequest {\n        NameFilter?: string;\n        TypeFilter?: string;\n        OwnerFilter?: string;\n    }\n\n    export interface Store {\n        Name?: string;\n        Type?: string;\n        Description?: string;\n        Owner?: string;\n        CreateTime?: string;\n        MaxValSize?: string;\n        IsDefault?: boolean;\n    }\n\n    export interface Stores {\n        Store?: Store[];\n    }\n\n    export interface ListStoresResponse {\n        Exceptions?: Exceptions;\n        Stores?: Stores;\n    }\n\n    export interface wsstorePingRequest {\n\n    }\n\n    export interface wsstorePingResponse {\n\n    }\n\n    export interface SetRequest {\n        StoreName?: string;\n        Namespace?: string;\n        Key?: string;\n        Value?: string;\n        UserSpecific?: boolean;\n    }\n\n    export interface SetResponse {\n        Exceptions?: Exceptions;\n        Success?: boolean;\n    }\n\n}\n\nexport class storeServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"wsstore\", \"1.02\");\n    }\n\n    CreateStore(request: Wsstore.CreateStoreRequest, abortSignal?: AbortSignal): Promise<Wsstore.CreateStoreResponse> {\n        return this._connection.send(\"CreateStore\", request, \"json\", false, abortSignal, \"CreateStoreResponse\");\n    }\n\n    Delete(request: Wsstore.DeleteRequest, abortSignal?: AbortSignal): Promise<Wsstore.DeleteResponse> {\n        return this._connection.send(\"Delete\", request, \"json\", false, abortSignal, \"DeleteResponse\");\n    }\n\n    DeleteNamespace(request: Wsstore.DeleteNamespaceRequest, abortSignal?: AbortSignal): Promise<Wsstore.DeleteNamespaceResponse> {\n        return this._connection.send(\"DeleteNamespace\", request, \"json\", false, abortSignal, \"DeleteNamespaceResponse\");\n    }\n\n    Fetch(request: Wsstore.FetchRequest, abortSignal?: AbortSignal): Promise<Wsstore.FetchResponse> {\n        return this._connection.send(\"Fetch\", request, \"json\", false, abortSignal, \"FetchResponse\");\n    }\n\n    FetchAll(request: Wsstore.FetchAllRequest, abortSignal?: AbortSignal): Promise<Wsstore.FetchAllResponse> {\n        return this._connection.send(\"FetchAll\", request, \"json\", false, abortSignal, \"FetchAllResponse\");\n    }\n\n    FetchKeyMetadata(request: Wsstore.FetchKeyMDRequest, abortSignal?: AbortSignal): Promise<Wsstore.FetchKeyMDResponse> {\n        return this._connection.send(\"FetchKeyMetadata\", request, \"json\", false, abortSignal, \"FetchKeyMDResponse\");\n    }\n\n    ListKeys(request: Wsstore.ListKeysRequest, abortSignal?: AbortSignal): Promise<Wsstore.ListKeysResponse> {\n        return this._connection.send(\"ListKeys\", request, \"json\", false, abortSignal, \"ListKeysResponse\");\n    }\n\n    ListNamespaces(request: Wsstore.ListNamespacesRequest, abortSignal?: AbortSignal): Promise<Wsstore.ListNamespacesResponse> {\n        return this._connection.send(\"ListNamespaces\", request, \"json\", false, abortSignal, \"ListNamespacesResponse\");\n    }\n\n    ListStores(request: Wsstore.ListStoresRequest, abortSignal?: AbortSignal): Promise<Wsstore.ListStoresResponse> {\n        return this._connection.send(\"ListStores\", request, \"json\", false, abortSignal, \"ListStoresResponse\");\n    }\n\n    Ping(request: Wsstore.wsstorePingRequest, abortSignal?: AbortSignal): Promise<Wsstore.wsstorePingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"wsstorePingResponse\");\n    }\n\n    Set(request: Wsstore.SetRequest, abortSignal?: AbortSignal): Promise<Wsstore.SetResponse> {\n        return this._connection.send(\"Set\", request, \"json\", false, abortSignal, \"SetResponse\");\n    }\n\n}\n", "import { storeServiceBase as StoreServiceBase, Wsstore as WsStore } from \"./wsdl/wsstore/v1.02/wsstore.ts\";\n\nexport { type WsStore };\n\nexport class StoreService extends StoreServiceBase {\n\n    Delete(request: Partial<WsStore.DeleteRequest>): Promise<WsStore.DeleteResponse> {\n        return super.Delete(request).catch(e => {\n            if (e.isESPExceptions && e.Exception.some(e => e.Code === -1)) {\n                //  \"Delete\" item does not exist  ---\n                return {\n                    Exceptions: undefined,\n                    Success: true\n                } as WsStore.DeleteResponse;\n            }\n            throw e;\n        });\n    }\n\n    Fetch(request: Partial<WsStore.FetchRequest>): Promise<WsStore.FetchResponse> {\n        return super.Fetch(request).catch(e => {\n            if (e.isESPExceptions && e.Exception.some(e => e.Code === -1)) {\n                //  \"Fetch\" item does not exist  ---\n                return {\n                    Exceptions: undefined,\n                    Value: undefined\n                } as WsStore.FetchResponse;\n            }\n            throw e;\n        });\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsTopology {\n\n    export type int = number;\n    export type base64Binary = string;\n    export type unsignedInt = number;\n    export type long = number;\n\n    export enum TpConfigResponseFormat {\n        XML = \"XML\",\n        YAML = \"YAML\"\n    }\n\n    export enum RoxieQueueFilter {\n        All = \"All\",\n        QueriesOnly = \"QueriesOnly\",\n        WorkunitsOnly = \"WorkunitsOnly\"\n    }\n\n    export enum TpMachineType {\n        ALLNODES = \"ALLNODES\",\n        THORMACHINES = \"THORMACHINES\",\n        HOLEMACHINES = \"HOLEMACHINES\",\n        ROXIEMACHINES = \"ROXIEMACHINES\",\n        MACHINES = \"MACHINES\",\n        AVAILABLEMACHINES = \"AVAILABLEMACHINES\",\n        DROPZONE = \"DROPZONE\",\n        STANDBYNNODE = \"STANDBYNNODE\",\n        THORSPARENODES = \"THORSPARENODES\",\n        HOLESTANDBYNODES = \"HOLESTANDBYNODES\"\n    }\n\n    export interface WsTopologyPingRequest {\n\n    }\n\n    export interface WsTopologyPingResponse {\n\n    }\n\n    export interface SystemLogRequest {\n        Name?: string;\n        Type?: string;\n        Zip?: int;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface SystemLogResponse {\n        Exceptions?: Exceptions;\n        thefile?: base64Binary;\n    }\n\n    export interface TpClusterInfoRequest {\n        Name?: string;\n    }\n\n    export interface TpQueue {\n        Name?: string;\n        WorkUnit?: string;\n    }\n\n    export interface TpQueues {\n        TpQueue?: TpQueue[];\n    }\n\n    export interface TpClusterInfoResponse {\n        Exceptions?: Exceptions;\n        Name?: string;\n        WorkUnit?: string;\n        TpQueues?: TpQueues;\n    }\n\n    export interface TpClusterQueryRequest {\n        Type?: string;\n    }\n\n    export interface TpMachine {\n        Name?: string;\n        Netaddress?: string;\n        ConfigNetaddress?: string;\n        Domain?: string;\n        Directory?: string;\n        Type?: string;\n        Available?: string;\n        OS?: int;\n        Path?: string;\n        Port?: int;\n        ProcessNumber?: int;\n        Channels?: unsignedInt;\n    }\n\n    export interface TpMachines {\n        TpMachine?: TpMachine[];\n    }\n\n    export interface TpCluster {\n        Type?: string;\n        Name?: string;\n        QueueName?: string;\n        Build?: string;\n        Directory?: string;\n        LogDirectory?: string;\n        Desc?: string;\n        Path?: string;\n        DataModel?: string;\n        OS?: int;\n        HasThorSpareProcess?: boolean;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpClusters {\n        TpCluster?: TpCluster[];\n    }\n\n    export interface TpClusterQueryResponse {\n        Exceptions?: Exceptions;\n        EnableSNMP?: boolean;\n        AcceptLanguage?: string;\n        TpClusters?: TpClusters;\n    }\n\n    export interface ComponentNames {\n        Item?: string[];\n    }\n\n    export interface TpComponentConfigurationRequest {\n        ComponentNames?: ComponentNames;\n    }\n\n    export interface Result {\n        ComponentName?: string;\n        Configuration?: string;\n    }\n\n    export interface Results {\n        Result?: Result[];\n    }\n\n    export interface TpComponentConfigurationResponse {\n        Exceptions?: Exceptions;\n        ConfigFormat?: TpConfigResponseFormat;\n        Results?: Results;\n    }\n\n    export interface TpConfiguredComponentsRequest {\n\n    }\n\n    export interface ConfiguredComponents {\n        Item?: string[];\n    }\n\n    export interface TpConfiguredComponentsResponse {\n        Exceptions?: Exceptions;\n        ConfiguredComponents?: ConfiguredComponents;\n    }\n\n    export interface TpDropZoneQueryRequest {\n        Name?: string;\n        ECLWatchVisibleOnly?: boolean;\n    }\n\n    export interface TpDropZone {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        ECLWatchVisible?: boolean;\n        UMask?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpDropZones {\n        TpDropZone?: TpDropZone[];\n    }\n\n    export interface TpDropZoneQueryResponse {\n        Exceptions?: Exceptions;\n        TpDropZones?: TpDropZones;\n    }\n\n    export interface TpGetComponentFileRequest {\n        CompType?: string;\n        CompName?: string;\n        NetAddress?: string;\n        Directory?: string;\n        FileType?: string;\n        OsType?: int;\n        PlainText?: string;\n    }\n\n    export interface TpGetComponentFileResponse {\n        Exceptions?: Exceptions;\n        FileContents?: base64Binary;\n    }\n\n    export interface TpGetServicePluginsRequest {\n\n    }\n\n    export interface Plugin {\n        ShortName?: string;\n        LongName?: string;\n        FolderName?: string;\n        WidgetName?: string;\n    }\n\n    export interface Plugins {\n        Plugin?: Plugin[];\n    }\n\n    export interface TpGetServicePluginsResponse {\n        Exceptions?: Exceptions;\n        Plugins?: Plugins;\n    }\n\n    export interface TpGroupQueryRequest {\n        Kind?: string;\n    }\n\n    export interface TpGroup {\n        Name?: string;\n        Kind?: string;\n        ReplicateOutputs?: boolean;\n    }\n\n    export interface TpGroups {\n        TpGroup?: TpGroup[];\n    }\n\n    export interface TpGroupQueryResponse {\n        Exceptions?: Exceptions;\n        TpGroups?: TpGroups;\n    }\n\n    export interface TpListLogFilesRequest {\n        NetworkAddress?: string;\n        Path?: string;\n    }\n\n    export interface LogFileStruct {\n        Name?: string;\n        Path?: string;\n        Host?: string;\n        IsDir?: boolean;\n        FileSize?: long;\n        Modifiedtime?: string;\n    }\n\n    export interface Files {\n        LogFileStruct?: LogFileStruct[];\n    }\n\n    export interface TpListLogFilesResponse {\n        Exceptions?: Exceptions;\n        Files?: Files;\n    }\n\n    export interface TpListTargetClustersRequest {\n\n    }\n\n    export interface TpClusterNameType {\n        Name?: string;\n        Type?: string;\n        IsDefault?: boolean;\n    }\n\n    export interface TargetClusters {\n        TpClusterNameType?: TpClusterNameType[];\n    }\n\n    export interface TpListTargetClustersResponse {\n        Exceptions?: Exceptions;\n        TargetClusters?: TargetClusters;\n    }\n\n    export interface TpLogFileRequest {\n        Name?: string;\n        Type?: string;\n        LastHours?: int;\n        StartDate?: string;\n        EndDate?: string;\n        FirstRows?: int;\n        LastRows?: int;\n        FilterType?: int;\n        Reversely?: boolean;\n        Zip?: boolean;\n        PageNumber?: int;\n        LoadData?: boolean;\n        IncludeLogFieldNames?: boolean;\n    }\n\n    export interface LogFieldNames {\n        Item?: string[];\n    }\n\n    export interface TpLogFileResponse {\n        Exceptions?: Exceptions;\n        Name?: string;\n        Type?: string;\n        StartDate?: string;\n        EndDate?: string;\n        LastHours?: int;\n        FirstRows?: int;\n        LastRows?: int;\n        Reversely?: boolean;\n        Zip?: boolean;\n        FilterType?: int;\n        LogData?: string;\n        HasDate?: boolean;\n        FileSize?: long;\n        PageFrom?: long;\n        PageTo?: long;\n        PageNumber?: int;\n        PrevPage?: int;\n        NextPage?: int;\n        TotalPages?: int;\n        AcceptLanguage?: string;\n        LogFieldNames?: LogFieldNames;\n    }\n\n    export interface TpLogicalClusterQueryRequest {\n        EclServerQueue?: string;\n        RoxieQueueFilter?: RoxieQueueFilter;\n    }\n\n    export interface TpLogicalCluster {\n        Name?: string;\n        Queue?: string;\n        LanguageVersion?: string;\n        Process?: string;\n        Type?: string;\n        QueriesOnly?: boolean;\n    }\n\n    export interface TpLogicalClusters {\n        TpLogicalCluster?: TpLogicalCluster[];\n    }\n\n    export interface TpLogicalClusterQueryResponse {\n        Exceptions?: Exceptions;\n        TpLogicalClusters?: TpLogicalClusters;\n    }\n\n    export interface TpMachineInfoRequest {\n        Name?: string;\n        NetAddress?: string;\n    }\n\n    export interface MachineInfo {\n        Name?: string;\n        Netaddress?: string;\n        ConfigNetaddress?: string;\n        Domain?: string;\n        Directory?: string;\n        Type?: string;\n        Available?: string;\n        OS?: int;\n        Path?: string;\n        Port?: int;\n        ProcessNumber?: int;\n        Channels?: unsignedInt;\n    }\n\n    export interface TpMachineInfoResponse {\n        Exceptions?: Exceptions;\n        MachineInfo?: MachineInfo;\n    }\n\n    export interface TpMachineQueryRequest {\n        Type?: TpMachineType;\n        Cluster?: string;\n        OldIP?: string;\n        Path?: string;\n        Directory?: string;\n        LogDirectory?: string;\n    }\n\n    export interface TpMachineQueryResponse {\n        Exceptions?: Exceptions;\n        EnablePreflightInfo?: boolean;\n        HasThorSpareProcess?: boolean;\n        Type?: TpMachineType;\n        Cluster?: string;\n        OldIP?: string;\n        LogDirectory?: string;\n        Path?: string;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        MemThresholdType?: string;\n        DiskThresholdType?: string;\n        PreflightProcessFilter?: string;\n        EnableSNMP?: boolean;\n        AcceptLanguage?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpServiceQueryRequest {\n        Type?: string;\n    }\n\n    export interface TpDali {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        BackupComputer?: string;\n        BackupDirectory?: string;\n        Type?: string;\n        Path?: string;\n        LogDirectory?: string;\n        AuditLogDirectory?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpDalis {\n        TpDali?: TpDali[];\n    }\n\n    export interface TpDfuServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Queue?: string;\n        Type?: string;\n        Path?: string;\n        LogDirectory?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpDfuServers {\n        TpDfuServer?: TpDfuServer[];\n    }\n\n    export interface TpDkcSlave {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpDkcSlaves {\n        TpDkcSlave?: TpDkcSlave[];\n    }\n\n    export interface TpEclAgent {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Type?: string;\n        Path?: string;\n        DaliServer?: string;\n        LogDir?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpEclAgents {\n        TpEclAgent?: TpEclAgent[];\n    }\n\n    export interface TpEclServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        LogDirectory?: string;\n        Type?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpEclServers {\n        TpEclServer?: TpEclServer[];\n    }\n\n    export interface TpEclCCServers {\n        TpEclServer?: TpEclServer[];\n    }\n\n    export interface TpEclScheduler {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        LogDirectory?: string;\n        Type?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpEclSchedulers {\n        TpEclScheduler?: TpEclScheduler[];\n    }\n\n    export interface TpBinding {\n        Name?: string;\n        Service?: string;\n        ServiceType?: string;\n        BindingType?: string;\n        ServiceBuildSet?: string;\n        Port?: string;\n        Protocol?: string;\n    }\n\n    export interface TpBindings {\n        TpBinding?: TpBinding[];\n    }\n\n    export interface TpEspServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Type?: string;\n        Path?: string;\n        LogDirectory?: string;\n        TpMachines?: TpMachines;\n        TpBindings?: TpBindings;\n    }\n\n    export interface TpEspServers {\n        TpEspServer?: TpEspServer[];\n    }\n\n    export interface TpFTSlave {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpFTSlaves {\n        TpFTSlave?: TpFTSlave[];\n    }\n\n    export interface TpGenesisServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpGenesisServers {\n        TpGenesisServer?: TpGenesisServer[];\n    }\n\n    export interface TpLdapServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpLdapServers {\n        TpLdapServer?: TpLdapServer[];\n    }\n\n    export interface TpMySqlServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpMySqlServers {\n        TpMySqlServer?: TpMySqlServer[];\n    }\n\n    export interface TpSashaServer {\n        Name?: string;\n        Description?: string;\n        Build?: string;\n        Path?: string;\n        LogDirectory?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpSashaServers {\n        TpSashaServer?: TpSashaServer[];\n    }\n\n    export interface TpSparkThor {\n        Name?: string;\n        Build?: string;\n        ThorClusterName?: string;\n        ThorPath?: string;\n        SparkExecutorCores?: unsignedInt;\n        SparkExecutorMemory?: long;\n        SparkMasterPort?: unsignedInt;\n        SparkMasterWebUIPort?: unsignedInt;\n        SparkWorkerCores?: unsignedInt;\n        SparkWorkerMemory?: long;\n        SparkWorkerPort?: unsignedInt;\n        LogDirectory?: string;\n        Path?: string;\n        TpMachines?: TpMachines;\n    }\n\n    export interface TpSparkThors {\n        TpSparkThor?: TpSparkThor[];\n    }\n\n    export interface ServiceList {\n        TpDalis?: TpDalis;\n        TpDfuServers?: TpDfuServers;\n        TpDkcSlaves?: TpDkcSlaves;\n        TpDropZones?: TpDropZones;\n        TpEclAgents?: TpEclAgents;\n        TpEclServers?: TpEclServers;\n        TpEclCCServers?: TpEclCCServers;\n        TpEclSchedulers?: TpEclSchedulers;\n        TpEspServers?: TpEspServers;\n        TpFTSlaves?: TpFTSlaves;\n        TpGenesisServers?: TpGenesisServers;\n        TpLdapServers?: TpLdapServers;\n        TpMySqlServers?: TpMySqlServers;\n        TpSashaServers?: TpSashaServers;\n        TpSparkThors?: TpSparkThors;\n    }\n\n    export interface TpServiceQueryResponse {\n        Exceptions?: Exceptions;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        EncapsulatedSystem?: boolean;\n        EnableSNMP?: boolean;\n        PreflightProcessFilter?: string;\n        AcceptLanguage?: string;\n        MemThresholdType?: string;\n        DiskThresholdType?: string;\n        ServiceList?: ServiceList;\n    }\n\n    export interface TpSetMachineStatusRequest {\n        MachinePath?: string;\n        StatusValue?: string;\n    }\n\n    export interface TpSetMachineStatusResponse {\n        Exceptions?: Exceptions;\n        TpSetMachineStatusResult?: boolean;\n    }\n\n    export interface TpSwapNodeRequest {\n        Cluster?: string;\n        OldIP?: string;\n        NewIP?: string;\n    }\n\n    export interface TpSwapNodeResponse {\n        Exceptions?: Exceptions;\n        TpSwapNodeResult?: boolean;\n    }\n\n    export interface TpTargetClusterQueryRequest {\n        Type?: string;\n        Name?: string;\n        ShowDetails?: boolean;\n    }\n\n    export interface TpTargetCluster {\n        Name?: string;\n        Prefix?: string;\n        Type?: string;\n        TpClusters?: TpClusters;\n        TpEclCCServers?: TpEclCCServers;\n        TpEclServers?: TpEclServers;\n        TpEclAgents?: TpEclAgents;\n        TpEclSchedulers?: TpEclSchedulers;\n    }\n\n    export interface TpTargetClusters {\n        TpTargetCluster?: TpTargetCluster[];\n    }\n\n    export interface TpTargetClusterQueryResponse {\n        Exceptions?: Exceptions;\n        ShowDetails?: boolean;\n        MemThreshold?: int;\n        DiskThreshold?: int;\n        CpuThreshold?: int;\n        MemThresholdType?: string;\n        DiskThresholdType?: string;\n        PreflightProcessFilter?: string;\n        AcceptLanguage?: string;\n        TpTargetClusters?: TpTargetClusters;\n    }\n\n    export interface TpThorStatusRequest {\n        Name?: string;\n    }\n\n    export interface TpThorStatusResponse {\n        Exceptions?: Exceptions;\n        Name?: string;\n        Queue?: string;\n        Group?: string;\n        ThorMasterIPAddress?: string;\n        Port?: int;\n        StartTime?: string;\n        LogFile?: string;\n        Wuid?: string;\n        Graph?: string;\n        SubGraph?: int;\n        SubGraphDuration?: int;\n        AutoRefresh?: int;\n    }\n\n    export interface TpXMLFileRequest {\n        Name?: string;\n    }\n\n    export interface TpXMLFileResponse {\n        Exceptions?: Exceptions;\n        thefile?: base64Binary;\n    }\n\n}\n\nexport class TopologyServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsTopology\", \"1.33\");\n    }\n\n    Ping(request: WsTopology.WsTopologyPingRequest, abortSignal?: AbortSignal): Promise<WsTopology.WsTopologyPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WsTopologyPingResponse\");\n    }\n\n    SystemLog(request: WsTopology.SystemLogRequest, abortSignal?: AbortSignal): Promise<WsTopology.SystemLogResponse> {\n        return this._connection.send(\"SystemLog\", request, \"json\", false, abortSignal, \"SystemLogResponse\");\n    }\n\n    TpClusterInfo(request: WsTopology.TpClusterInfoRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpClusterInfoResponse> {\n        return this._connection.send(\"TpClusterInfo\", request, \"json\", false, abortSignal, \"TpClusterInfoResponse\");\n    }\n\n    TpClusterQuery(request: WsTopology.TpClusterQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpClusterQueryResponse> {\n        return this._connection.send(\"TpClusterQuery\", request, \"json\", false, abortSignal, \"TpClusterQueryResponse\");\n    }\n\n    TpComponentConfiguration(request: WsTopology.TpComponentConfigurationRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpComponentConfigurationResponse> {\n        return this._connection.send(\"TpComponentConfiguration\", request, \"json\", false, abortSignal, \"TpComponentConfigurationResponse\");\n    }\n\n    TpConfiguredComponents(request: WsTopology.TpConfiguredComponentsRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpConfiguredComponentsResponse> {\n        return this._connection.send(\"TpConfiguredComponents\", request, \"json\", false, abortSignal, \"TpConfiguredComponentsResponse\");\n    }\n\n    TpDropZoneQuery(request: WsTopology.TpDropZoneQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpDropZoneQueryResponse> {\n        return this._connection.send(\"TpDropZoneQuery\", request, \"json\", false, abortSignal, \"TpDropZoneQueryResponse\");\n    }\n\n    TpGetComponentFile(request: WsTopology.TpGetComponentFileRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpGetComponentFileResponse> {\n        return this._connection.send(\"TpGetComponentFile\", request, \"json\", false, abortSignal, \"TpGetComponentFileResponse\");\n    }\n\n    TpGetServicePlugins(request: WsTopology.TpGetServicePluginsRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpGetServicePluginsResponse> {\n        return this._connection.send(\"TpGetServicePlugins\", request, \"json\", false, abortSignal, \"TpGetServicePluginsResponse\");\n    }\n\n    TpGroupQuery(request: WsTopology.TpGroupQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpGroupQueryResponse> {\n        return this._connection.send(\"TpGroupQuery\", request, \"json\", false, abortSignal, \"TpGroupQueryResponse\");\n    }\n\n    TpListLogFiles(request: WsTopology.TpListLogFilesRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpListLogFilesResponse> {\n        return this._connection.send(\"TpListLogFiles\", request, \"json\", false, abortSignal, \"TpListLogFilesResponse\");\n    }\n\n    TpListTargetClusters(request: WsTopology.TpListTargetClustersRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpListTargetClustersResponse> {\n        return this._connection.send(\"TpListTargetClusters\", request, \"json\", false, abortSignal, \"TpListTargetClustersResponse\");\n    }\n\n    TpLogFile(request: WsTopology.TpLogFileRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpLogFileResponse> {\n        return this._connection.send(\"TpLogFile\", request, \"json\", false, abortSignal, \"TpLogFileResponse\");\n    }\n\n    TpLogFileDisplay(request: WsTopology.TpLogFileRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpLogFileResponse> {\n        return this._connection.send(\"TpLogFileDisplay\", request, \"json\", false, abortSignal, \"TpLogFileResponse\");\n    }\n\n    TpLogicalClusterQuery(request: WsTopology.TpLogicalClusterQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpLogicalClusterQueryResponse> {\n        return this._connection.send(\"TpLogicalClusterQuery\", request, \"json\", false, abortSignal, \"TpLogicalClusterQueryResponse\");\n    }\n\n    TpMachineInfo(request: WsTopology.TpMachineInfoRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpMachineInfoResponse> {\n        return this._connection.send(\"TpMachineInfo\", request, \"json\", false, abortSignal, \"TpMachineInfoResponse\");\n    }\n\n    TpMachineQuery(request: WsTopology.TpMachineQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpMachineQueryResponse> {\n        return this._connection.send(\"TpMachineQuery\", request, \"json\", false, abortSignal, \"TpMachineQueryResponse\");\n    }\n\n    TpServiceQuery(request: WsTopology.TpServiceQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpServiceQueryResponse> {\n        return this._connection.send(\"TpServiceQuery\", request, \"json\", false, abortSignal, \"TpServiceQueryResponse\");\n    }\n\n    TpSetMachineStatus(request: WsTopology.TpSetMachineStatusRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpSetMachineStatusResponse> {\n        return this._connection.send(\"TpSetMachineStatus\", request, \"json\", false, abortSignal, \"TpSetMachineStatusResponse\");\n    }\n\n    TpSwapNode(request: WsTopology.TpSwapNodeRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpSwapNodeResponse> {\n        return this._connection.send(\"TpSwapNode\", request, \"json\", false, abortSignal, \"TpSwapNodeResponse\");\n    }\n\n    TpTargetClusterQuery(request: WsTopology.TpTargetClusterQueryRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpTargetClusterQueryResponse> {\n        return this._connection.send(\"TpTargetClusterQuery\", request, \"json\", false, abortSignal, \"TpTargetClusterQueryResponse\");\n    }\n\n    TpThorStatus(request: WsTopology.TpThorStatusRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpThorStatusResponse> {\n        return this._connection.send(\"TpThorStatus\", request, \"json\", false, abortSignal, \"TpThorStatusResponse\");\n    }\n\n    TpXMLFile(request: WsTopology.TpXMLFileRequest, abortSignal?: AbortSignal): Promise<WsTopology.TpXMLFileResponse> {\n        return this._connection.send(\"TpXMLFile\", request, \"json\", false, abortSignal, \"TpXMLFileResponse\");\n    }\n\n}\n", "import { IOptions } from \"../connection.ts\";\nimport { TopologyServiceBase, WsTopology } from \"./wsdl/WsTopology/v1.33/WsTopology.ts\";\n\nexport {\n    WsTopology\n};\n\nexport class TopologyService extends TopologyServiceBase {\n\n    connectionOptions(): IOptions {\n        return this._connection.opts();\n    }\n\n    protocol(): string {\n        const parts = this._connection.opts().baseUrl.split(\"//\");\n        return parts[0];\n    }\n\n    ip(): string {\n        const parts = this._connection.opts().baseUrl.split(\"//\");\n        const parts2 = parts[1].split(\":\");\n        return parts2[0];\n    }\n\n    DefaultTpLogicalClusterQuery(request: WsTopology.TpLogicalClusterQueryRequest = {}): Promise<WsTopology.TpLogicalCluster> {\n        return this.TpLogicalClusterQuery(request).then((response) => {\n            if ((response as any).default) {\n                return (response as any).default;\n            }\n            let firstHThor;\n            let first;\n            response.TpLogicalClusters.TpLogicalCluster.some((item, idx) => {\n                if (idx === 0) {\n                    first = item;\n                }\n                if (item.Type === \"hthor\") {\n                    firstHThor = item;\n                    return true;\n                }\n                return false;\n            });\n            return firstHThor || first;\n        });\n    }\n}\n", "import { deepMixin, xml2json, XMLNode } from \"@hpcc-js/util\";\nimport { WsWorkunits, WorkunitsServiceBase } from \"./wsdl/WsWorkunits/v2.08/WsWorkunits.ts\";\nimport { IConnection, IOptions } from \"../connection.ts\";\n\nexport {\n    WsWorkunits\n};\n\nexport enum WUStateID {\n    Unknown = 0,\n    Compiled,\n    Running,\n    Completed,\n    Failed,\n    Archived,\n    Aborting,\n    Aborted,\n    Blocked,\n    Submitted,\n    Scheduled,\n    Compiling,\n    Wait,\n    UploadingFiled,\n    DebugPaused,\n    DebugRunning,\n    Paused,\n    LAST,\n    NotFound = 999\n}\n\nexport namespace WUUpdate {\n    export enum Action {\n        Unknown = 0,\n        Compile,\n        Check,\n        Run,\n        ExecuteExisting,\n        Pause,\n        PauseNow,\n        Resume,\n        Debug,\n        __size\n    }\n}\nexport function isECLResult(_: any): _ is WsWorkunits.ECLResult {\n    return typeof (_ as WsWorkunits.ECLResult).Name === \"string\";\n}\n\nexport function isWUQueryECLWorkunit(_: WsWorkunits.ECLWorkunit | WsWorkunits.Workunit): _ is WsWorkunits.ECLWorkunit {\n    return (_ as WsWorkunits.ECLWorkunit).TotalClusterTime !== undefined;\n}\n\nexport function isWUInfoWorkunit(_: WsWorkunits.ECLWorkunit | WsWorkunits.Workunit): _ is WsWorkunits.Workunit {\n    return (_ as WsWorkunits.Workunit).StateEx !== undefined;\n}\nexport class WorkunitsService extends WorkunitsServiceBase {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection);\n    }\n\n    Ping(): Promise<WsWorkunits.WsWorkunitsPingResponse> {\n        return this._connection.send(\"Ping\", {}, \"json\", false, undefined, \"WsWorkunitsPingResponse\").then(() => {\n            return { result: true };\n        });\n    }\n\n    WUQuery(request: Partial<WsWorkunits.WUQuery> = {}, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryResponse> {\n        return this._connection.send(\"WUQuery\", request, \"json\", false, abortSignal).then((response) => {\n            return deepMixin({ Workunits: { ECLWorkunit: [] } }, response);\n        });\n    }\n\n    WUInfo(_request: Partial<WsWorkunits.WUInfo>): Promise<WsWorkunits.WUInfoResponse> {\n        const request: Partial<WsWorkunits.WUInfo> = {\n            Wuid: \"\",\n            TruncateEclTo64k: true,\n            IncludeExceptions: false,\n            IncludeGraphs: false,\n            IncludeSourceFiles: false,\n            IncludeResults: false,\n            IncludeResultsViewNames: false,\n            IncludeVariables: false,\n            IncludeTimers: false,\n            IncludeDebugValues: false,\n            IncludeApplicationValues: false,\n            IncludeWorkflows: false,\n            IncludeXmlSchemas: false,\n            IncludeResourceURLs: false,\n            IncludeECL: false,\n            IncludeHelpers: false,\n            IncludeAllowedClusters: false,\n            IncludeTotalClusterTime: false,\n            IncludeServiceNames: false,\n            SuppressResultSchemas: true,\n            ..._request\n        };\n        return super.WUInfo(request);\n    }\n\n    WUCreate(): Promise<WsWorkunits.WUCreateResponse> {\n        return super.WUCreate({});\n    }\n\n    WUUpdate(request: Partial<WsWorkunits.WUUpdate>): Promise<WsWorkunits.WUUpdateResponse> {\n        return this._connection.send(\"WUUpdate\", request, \"json\", true);\n    }\n\n    WUResubmit(request: WsWorkunits.WUResubmit): Promise<WsWorkunits.WUResubmitResponse> {\n        this._connection.toESPStringArray(request, \"Wuids\");\n        return super.WUResubmit(request);\n    }\n\n    WUAction(request: Partial<WsWorkunits.WUAction>): Promise<WsWorkunits.WUActionResponse> {\n        (request as any).ActionType = request.WUActionType; //  v5.x compatibility\n        return super.WUAction(request);\n    }\n\n    WUResult(request: Partial<WsWorkunits.WUResult>, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultResponse> {\n        return this._connection.send(\"WUResult\", request, \"json\", false, abortSignal);\n    }\n\n    WUFileEx(request: Partial<WsWorkunits.WUFile>): Promise<string> {\n        return this._connection.send(\"WUFile\", request, \"text\");\n    }\n\n    private _WUDetailsMetaPromise: Promise<WsWorkunits.WUDetailsMetaResponse>;\n    WUDetailsMeta(request: WsWorkunits.WUDetailsMeta): Promise<WsWorkunits.WUDetailsMetaResponse> {\n        if (!this._WUDetailsMetaPromise) {\n            this._WUDetailsMetaPromise = super.WUDetailsMeta(request);\n        }\n        return this._WUDetailsMetaPromise;\n    }\n\n    WUCDebugEx(request: WsWorkunits.WUCDebug): Promise<XMLNode | null> {\n        return this._connection.send(\"WUCDebug\", request, undefined, undefined, undefined, \"WUDebug\").then((response) => {\n            const retVal = xml2json(response.Result);\n            const children = retVal.children();\n            if (children.length) {\n                return children[0];\n            }\n            return null;\n        });\n    }\n}\n\nexport class WorkunitsServiceEx extends WorkunitsServiceBase {\n    WUPublishWorkunitEx(request: Partial<WsWorkunits.WUPublishWorkunit>): Promise<WsWorkunits.WUPublishWorkunitResponse> {\n        return this._connection.send(\"WUPublishWorkunit\", request);\n    }\n}\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace WsWorkunits {\n\n    export type int = number;\n    export type double = number;\n    export type long = number;\n    export type nonNegativeInteger = number;\n    export type uint64 = number;\n    export type unsignedInt = number;\n    export type base64Binary = string;\n    export type dateTime = string;\n    export type integer = number;\n\n    export enum ECLWUActions {\n        Abort = \"Abort\",\n        Delete = \"Delete\",\n        Deschedule = \"Deschedule\",\n        Reschedule = \"Reschedule\",\n        Pause = \"Pause\",\n        PauseNow = \"PauseNow\",\n        Protect = \"Protect\",\n        Unprotect = \"Unprotect\",\n        Restore = \"Restore\",\n        Resume = \"Resume\",\n        SetToFailed = \"SetToFailed\",\n        Archive = \"Archive\"\n    }\n\n    export enum LogSelectColumnMode {\n        MIN = 0,\n        DEFAULT = 1,\n        ALL = 2,\n        CUSTOM = 3\n    }\n\n    export enum SortDirection {\n        ASC = 0,\n        DSC = 1\n    }\n\n    export enum LogEventClass {\n        ALL = \"ALL\",\n        DIS = \"DIS\",\n        ERR = \"ERR\",\n        WRN = \"WRN\",\n        INF = \"INF\",\n        PRO = \"PRO\",\n        MET = \"MET\",\n        EVT = \"EVT\"\n    }\n\n    export enum WUDetailsAttrValueType {\n        Single = \"Single\",\n        List = \"List\",\n        Multi = \"Multi\"\n    }\n\n    export enum EclDefinitionActions {\n        SyntaxCheck = \"SyntaxCheck\",\n        Deploy = \"Deploy\",\n        Publish = \"Publish\"\n    }\n\n    export enum ErrorMessageFormat {\n        xml = \"xml\",\n        json = \"json\",\n        text = \"text\"\n    }\n\n    export enum LogAccessLogFormat {\n        XML = 0,\n        JSON = 1,\n        CSV = 2\n    }\n\n    export enum WUExceptionSeverity {\n        info = \"info\",\n        warning = \"warning\",\n        error = \"error\",\n        alert = \"alert\"\n    }\n\n    export enum WUQueryFilterSuspendedType {\n        Allqueries = \"All queries\",\n        Notsuspended = \"Not suspended\",\n        Suspended = \"Suspended\",\n        Suspendedbyuser = \"Suspended by user\",\n        Suspendedbyfirstnode = \"Suspended by first node\",\n        Suspendedbyanynode = \"Suspended by any node\"\n    }\n\n    export enum WUQuerySetFilterType {\n        All = \"All\",\n        Id = \"Id\",\n        Name = \"Name\",\n        Alias = \"Alias\",\n        Status = \"Status\"\n    }\n\n    export enum WUProtectFilter {\n        All = \"All\",\n        Protected = \"Protected\",\n        NotProtected = \"NotProtected\"\n    }\n\n    export enum QuerySetAliasActionTypes {\n        Deactivate = \"Deactivate\"\n    }\n\n    export enum QuerysetImportActivation {\n        None = \"None\",\n        ActivateImportedActive = \"ActivateImportedActive\"\n    }\n\n    export enum QuerySetQueryActionTypes {\n        Suspend = \"Suspend\",\n        Unsuspend = \"Unsuspend\",\n        ToggleSuspend = \"ToggleSuspend\",\n        Activate = \"Activate\",\n        Delete = \"Delete\",\n        DeleteQueriesAndWUs = \"DeleteQueriesAndWUs\",\n        RemoveAllAliases = \"RemoveAllAliases\",\n        ResetQueryStats = \"ResetQueryStats\"\n    }\n\n    export enum WUQueryActivationMode {\n        DoNotActivateQuery = 0,\n        ActivateQuery = 1,\n        ActivateQuerySuspendPrevious = 2,\n        ActivateQueryDeletePrevious = 3\n    }\n\n    export interface GVCAjaxGraph {\n        Name?: string;\n        GraphName?: string;\n        SubGraphId?: int;\n        SubGraphOnly?: boolean;\n    }\n\n    export interface GVCAjaxGraphResponse {\n        Name?: string;\n        GraphName?: string;\n        GraphType?: string;\n        SubGraphId?: int;\n        SubGraphOnly?: boolean;\n    }\n\n    export interface Ping {\n\n    }\n\n    export interface WsWorkunitsPingResponse {\n\n    }\n\n    export interface Wuids {\n        Item?: string[];\n    }\n\n    export interface WUAbort {\n        Wuids?: Wuids;\n        BlockTillFinishTimer?: int;\n    }\n\n    export interface Exception {\n        Code?: string;\n        Audience?: string;\n        Source?: string;\n        Message?: string;\n    }\n\n    export interface Exceptions {\n        Source?: string;\n        Exception?: Exception[];\n    }\n\n    export interface WUActionResult {\n        Wuid?: string;\n        Action?: string;\n        Result?: string;\n    }\n\n    export interface ActionResults {\n        WUActionResult?: WUActionResult[];\n    }\n\n    export interface WUAbortResponse {\n        Exceptions?: Exceptions;\n        ActionResults?: ActionResults;\n    }\n\n    export interface WUAction {\n        Wuids?: Wuids;\n        WUActionType?: ECLWUActions;\n        Cluster?: string;\n        Owner?: string;\n        State?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ECL?: string;\n        Jobname?: string;\n        Test?: string;\n        CurrentPage?: string;\n        PageSize?: string;\n        Sortby?: string;\n        Descending?: boolean;\n        EventServer?: string;\n        EventName?: string;\n        PageFrom?: string;\n        BlockTillFinishTimer?: int;\n    }\n\n    export interface WUActionResponse {\n        Exceptions?: Exceptions;\n        ActionResults?: ActionResults;\n    }\n\n    export interface WUAddLocalFileToWorkunit {\n        Wuid?: string;\n        Name?: string;\n        Val?: string;\n        DefVal?: string;\n        Type?: int;\n        Length?: int;\n    }\n\n    export interface WUAddLocalFileToWorkunitResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Name?: string;\n        Result?: string;\n    }\n\n    export interface PropertyOptions {\n        IncludeName?: boolean;\n        IncludeRawValue?: boolean;\n        IncludeFormatted?: boolean;\n        IncludeMeasure?: boolean;\n        IncludeCreator?: boolean;\n        IncludeCreatorType?: boolean;\n    }\n\n    export interface WUAnalyseHotspot {\n        Wuid?: string;\n        RootScope?: string;\n        OptOnlyActive?: boolean;\n        OnlyCriticalPath?: boolean;\n        IncludeProperties?: boolean;\n        IncludeStatistics?: boolean;\n        ThresholdPercent?: double;\n        PropertyOptions?: PropertyOptions;\n    }\n\n    export interface Property {\n        Name?: string;\n        RawValue?: string;\n        Formatted?: string;\n        Measure?: string;\n        Creator?: string;\n        CreatorType?: string;\n    }\n\n    export interface Properties {\n        Property?: Property[];\n    }\n\n    export interface Note {\n        Source?: string;\n        Message?: string;\n        ErrorCode?: nonNegativeInteger;\n        Severity?: string;\n        Cost?: nonNegativeInteger;\n        Id?: uint64;\n    }\n\n    export interface Notes {\n        Note?: Note[];\n    }\n\n    export interface Activity {\n        ScopeName?: string;\n        Id?: string;\n        ScopeType?: string;\n        Properties?: Properties;\n        Notes?: Notes;\n        SinkActivity?: string;\n    }\n\n    export interface Activities {\n        Activity?: Activity[];\n    }\n\n    export interface Dependency {\n        ScopeName?: string;\n        Id?: string;\n        ScopeType?: string;\n        Properties?: Properties;\n        Notes?: Notes;\n        SinkActivity?: string;\n    }\n\n    export interface Dependencies {\n        Dependency?: Dependency[];\n    }\n\n    export interface WUAnalyseHotspotResponse {\n        Exceptions?: Exceptions;\n        RootScope?: string;\n        RootTime?: long;\n        Activities?: Activities;\n        Dependencies?: Dependencies;\n    }\n\n    export interface WUCDebug {\n        Wuid?: string;\n        Command?: string;\n    }\n\n    export interface WUDebugResponse {\n        Exceptions?: Exceptions;\n        Result?: string;\n    }\n\n    export interface WUCheckFeatures {\n        IncludeFullVersion?: boolean;\n    }\n\n    export interface Deployment {\n        UseCompression?: boolean;\n    }\n\n    export interface WUCheckFeaturesResponse {\n        Exceptions?: Exceptions;\n        BuildVersionMajor?: int;\n        BuildVersionMinor?: int;\n        BuildVersionPoint?: int;\n        maxRequestEntityLength?: unsignedInt;\n        Deployment?: Deployment;\n        BuildVersion?: string;\n        BuildMaturity?: string;\n        BuildTagTimestamp?: string;\n    }\n\n    export interface WUClusterJobQueueLOG {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n    }\n\n    export interface WUClusterJobQueueLOGResponse {\n        Exceptions?: Exceptions;\n        thefile?: base64Binary;\n    }\n\n    export interface WUClusterJobQueueXLS {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ShowType?: string;\n    }\n\n    export interface WUClusterJobQueueXLSResponse {\n        Exceptions?: Exceptions;\n        Result?: base64Binary;\n    }\n\n    export interface WUClusterJobSummaryXLS {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ShowAll?: boolean;\n        BusinessStartTime?: string;\n        BusinessEndTime?: string;\n    }\n\n    export interface WUClusterJobSummaryXLSResponse {\n        Exceptions?: Exceptions;\n        Result?: base64Binary;\n    }\n\n    export interface WUClusterJobXLS {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ShowAll?: boolean;\n        BusinessStartTime?: string;\n        BusinessEndTime?: string;\n    }\n\n    export interface WUClusterJobXLSResponse {\n        Exceptions?: Exceptions;\n        Result?: base64Binary;\n    }\n\n    export interface WUCompileECL {\n        ECL?: string;\n        ModuleName?: string;\n        AttributeName?: string;\n        Queue?: string;\n        Cluster?: string;\n        Snapshot?: string;\n        IncludeDependencies?: boolean;\n        IncludeComplexity?: boolean;\n        TimeToWait?: int;\n    }\n\n    export interface ECLException {\n        Severity?: string;\n        Source?: string;\n        Code?: int;\n        Message?: string;\n        Column?: int;\n        LineNo?: int;\n        FileName?: string;\n        Activity?: int;\n        Scope?: string;\n        Priority?: int;\n        Cost?: double;\n    }\n\n    export interface Errors {\n        ECLException?: ECLException[];\n    }\n\n    export interface ECLAttribute {\n        ModuleName?: string;\n        AttributeName?: string;\n        IsLocked?: boolean;\n        IsCheckedOut?: boolean;\n        IsSandbox?: boolean;\n        IsOrphaned?: boolean;\n    }\n\n    export interface Dependencies2 {\n        ECLAttribute?: ECLAttribute[];\n    }\n\n    export interface WUCompileECLResponse {\n        Exceptions?: Exceptions;\n        Complexity?: string;\n        Errors?: Errors;\n        Dependencies?: Dependencies2;\n    }\n\n    export interface WUCopyLogicalFiles {\n        Wuid?: string;\n        Cluster?: string;\n        CopyLocal?: boolean;\n    }\n\n    export interface Clusters {\n        Item?: string[];\n    }\n\n    export interface WULogicalFileCopyInfo {\n        IsIndex?: boolean;\n        LogicalName?: string;\n        DfuCopyWuid?: string;\n        DfuCopyError?: string;\n        Clusters?: Clusters;\n    }\n\n    export interface OnCluster {\n        WULogicalFileCopyInfo?: WULogicalFileCopyInfo[];\n    }\n\n    export interface NotOnCluster {\n        WULogicalFileCopyInfo?: WULogicalFileCopyInfo[];\n    }\n\n    export interface Foreign {\n        WULogicalFileCopyInfo?: WULogicalFileCopyInfo[];\n    }\n\n    export interface NotFound {\n        WULogicalFileCopyInfo?: WULogicalFileCopyInfo[];\n    }\n\n    export interface Cluster {\n        ClusterName?: string;\n        OnCluster?: OnCluster;\n        NotOnCluster?: NotOnCluster;\n        Foreign?: Foreign;\n        NotFound?: NotFound;\n    }\n\n    export interface ClusterFiles {\n        Cluster?: Cluster[];\n    }\n\n    export interface WUCopyLogicalFilesResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        ClusterFiles?: ClusterFiles;\n    }\n\n    export interface WUCopyQuerySet {\n        Source?: string;\n        Target?: string;\n        ActiveOnly?: boolean;\n        CloneActiveState?: boolean;\n        AllowForeignFiles?: boolean;\n        DfsServer?: string;\n        CopyFiles?: boolean;\n        OverwriteDfs?: boolean;\n        SourceProcess?: string;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        IncludeFileErrors?: boolean;\n        SourceSSL?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface CopiedQueries {\n        QueryId?: string[];\n    }\n\n    export interface ExistingQueries {\n        QueryId?: string[];\n    }\n\n    export interface File {\n        Error?: string;\n        LogicalName?: string;\n    }\n\n    export interface FileErrors {\n        File?: File[];\n    }\n\n    export interface WUCopyQuerySetResponse {\n        Exceptions?: Exceptions;\n        CopiedQueries?: CopiedQueries;\n        ExistingQueries?: ExistingQueries;\n        FileErrors?: FileErrors;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface WUCreate {\n\n    }\n\n    export interface Query {\n        Text?: string;\n        Cpp?: string;\n        ResTxt?: string;\n        Dll?: string;\n        ThorLog?: string;\n        QueryMainDefinition?: string;\n    }\n\n    export interface ECLHelpFile {\n        Name?: string;\n        Type?: string;\n        IPAddress?: string;\n        Description?: string;\n        FileSize?: long;\n        PID?: unsignedInt;\n        minActivityId?: unsignedInt;\n        maxActivityId?: unsignedInt;\n        IsAvailable?: boolean;\n    }\n\n    export interface Helpers {\n        ECLHelpFile?: ECLHelpFile[];\n    }\n\n    export interface Exceptions2 {\n        ECLException?: ECLException[];\n    }\n\n    export interface ECLGraph {\n        Name?: string;\n        Label?: string;\n        Type?: string;\n        Running?: boolean;\n        Complete?: boolean;\n        Failed?: boolean;\n        RunningId?: long;\n        WhenStarted?: string;\n        WhenFinished?: string;\n    }\n\n    export interface Graphs {\n        ECLGraph?: ECLGraph[];\n    }\n\n    export interface ECLSourceFiles {\n        ECLSourceFile?: ECLSourceFile[];\n    }\n\n    export interface ECLSourceFile {\n        FileCluster?: string;\n        Name?: string;\n        IsSuperFile?: boolean;\n        Subs?: int;\n        Count?: int;\n        ECLSourceFiles?: ECLSourceFiles;\n    }\n\n    export interface SourceFiles {\n        ECLSourceFile?: ECLSourceFile[];\n    }\n\n    export interface ECLSchemaItem {\n        ColumnName?: string;\n        ColumnType?: string;\n        ColumnTypeCode?: int;\n        isConditional?: boolean;\n    }\n\n    export interface ECLSchemas {\n        ECLSchemaItem?: ECLSchemaItem[];\n    }\n\n    export interface ECLResult {\n        Name?: string;\n        Sequence?: int;\n        Value?: string;\n        Link?: string;\n        FileName?: string;\n        IsSupplied?: boolean;\n        ShowFileContent?: boolean;\n        Total?: long;\n        ECLSchemas?: ECLSchemas;\n        XmlSchema?: string;\n    }\n\n    export interface Results {\n        ECLResult?: ECLResult[];\n    }\n\n    export interface Variables {\n        ECLResult?: ECLResult[];\n    }\n\n    export interface ECLTimer {\n        Name?: string;\n        Value?: string;\n        count?: int;\n        GraphName?: string;\n        SubGraphId?: int;\n        Timestamp?: long;\n        When?: string;\n    }\n\n    export interface Timers {\n        ECLTimer?: ECLTimer[];\n    }\n\n    export interface DebugValue {\n        Name?: string;\n        Value?: string;\n    }\n\n    export interface DebugValues {\n        DebugValue?: DebugValue[];\n    }\n\n    export interface ApplicationValue {\n        Application?: string;\n        Name?: string;\n        Value?: string;\n    }\n\n    export interface ApplicationValues {\n        ApplicationValue?: ApplicationValue[];\n    }\n\n    export interface ECLWorkflow {\n        WFID?: string;\n        EventName?: string;\n        EventText?: string;\n        Count?: int;\n        CountRemaining?: int;\n    }\n\n    export interface Workflows {\n        ECLWorkflow?: ECLWorkflow[];\n    }\n\n    export interface ECLTimingData {\n        Name?: string;\n        GraphNum?: int;\n        SubGraphNum?: int;\n        GID?: int;\n        Min?: int;\n        MS?: int;\n    }\n\n    export interface TimingData {\n        ECLTimingData?: ECLTimingData[];\n    }\n\n    export interface AllowedClusters {\n        AllowedCluster?: string[];\n    }\n\n    export interface ThorLogInfo {\n        ProcessName?: string;\n        ClusterGroup?: string;\n        LogDate?: string;\n        NumberSlaves?: int;\n    }\n\n    export interface ThorLogList {\n        ThorLogInfo?: ThorLogInfo[];\n    }\n\n    export interface ResourceURLs {\n        URL?: string[];\n    }\n\n    export interface ServiceNames {\n        Item?: string[];\n    }\n\n    export interface Graphs2 {\n        Graph?: string[];\n    }\n\n    export interface ECLWUProcess {\n        Name?: string;\n        Type?: string;\n        PodName?: string;\n        ContainerName?: string;\n        Graphs?: Graphs2;\n        InstanceNumber?: int;\n        Sequence?: string;\n        Log?: string;\n        PID?: string;\n        Pattern?: string;\n        Max?: int;\n    }\n\n    export interface ECLWUProcessList {\n        ECLWUProcess?: ECLWUProcess[];\n    }\n\n    export interface Workunit {\n        Wuid?: string;\n        Owner?: string;\n        Cluster?: string;\n        RoxieCluster?: string;\n        Jobname?: string;\n        Queue?: string;\n        StateID?: int;\n        State?: string;\n        StateEx?: string;\n        Description?: string;\n        Protected?: boolean;\n        Active?: boolean;\n        Action?: int;\n        ActionEx?: string;\n        DateTimeScheduled?: dateTime;\n        PriorityClass?: int;\n        PriorityLevel?: int;\n        Scope?: string;\n        Snapshot?: string;\n        ResultLimit?: int;\n        Archived?: boolean;\n        IsPausing?: boolean;\n        ThorLCR?: boolean;\n        EventSchedule?: int;\n        TotalClusterTime?: string;\n        AbortBy?: string;\n        AbortTime?: string;\n        Query?: Query;\n        Helpers?: Helpers;\n        Exceptions?: Exceptions2;\n        Graphs?: Graphs;\n        SourceFiles?: SourceFiles;\n        Results?: Results;\n        Variables?: Variables;\n        Timers?: Timers;\n        DebugValues?: DebugValues;\n        ApplicationValues?: ApplicationValues;\n        Workflows?: Workflows;\n        TimingData?: TimingData;\n        AllowedClusters?: AllowedClusters;\n        ErrorCount?: int;\n        WarningCount?: int;\n        InfoCount?: int;\n        AlertCount?: int;\n        GraphCount?: int;\n        SourceFileCount?: int;\n        ResultCount?: int;\n        VariableCount?: int;\n        TimerCount?: int;\n        HasDebugValue?: boolean;\n        ApplicationValueCount?: int;\n        XmlParams?: string;\n        AccessFlag?: int;\n        ClusterFlag?: int;\n        HelpersDesc?: string;\n        GraphsDesc?: string;\n        SourceFilesDesc?: string;\n        ResultsDesc?: string;\n        VariablesDesc?: string;\n        TimersDesc?: string;\n        DebugValuesDesc?: string;\n        ApplicationValuesDesc?: string;\n        WorkflowsDesc?: string;\n        HasArchiveQuery?: boolean;\n        ThorLogList?: ThorLogList;\n        ResourceURLs?: ResourceURLs;\n        ResultViewCount?: int;\n        ResourceURLCount?: int;\n        DebugValueCount?: int;\n        WorkflowCount?: int;\n        HelpersCount?: int;\n        ServiceNames?: ServiceNames;\n        ExecuteCost?: double;\n        FileAccessCost?: double;\n        CostSavingPotential?: double;\n        CompileCost?: double;\n        NoAccess?: boolean;\n        ECLWUProcessList?: ECLWUProcessList;\n        FailureDesc?: string;\n    }\n\n    export interface WUCreateResponse {\n        Exceptions?: Exceptions;\n        Workunit?: Workunit;\n    }\n\n    export interface WUCreateAndUpdate {\n        Wuid?: string;\n        State?: int;\n        StateOrig?: int;\n        Jobname?: string;\n        JobnameOrig?: string;\n        QueryText?: string;\n        Action?: int;\n        Description?: string;\n        DescriptionOrig?: string;\n        AddDrilldownFields?: boolean;\n        ResultLimit?: int;\n        Protected?: boolean;\n        ProtectedOrig?: boolean;\n        PriorityClass?: int;\n        PriorityLevel?: int;\n        Scope?: string;\n        ScopeOrig?: string;\n        ClusterSelection?: string;\n        ClusterOrig?: string;\n        XmlParams?: string;\n        ThorSlaveIP?: string;\n        QueryMainDefinition?: string;\n        DebugValues?: DebugValues;\n        ApplicationValues?: ApplicationValues;\n    }\n\n    export interface WUUpdateResponse {\n        Exceptions?: Exceptions;\n        Workunit?: Workunit;\n    }\n\n    export interface AbsoluteTimeRange {\n        StartDate?: dateTime;\n        EndDate?: dateTime;\n    }\n\n    export interface CustomColumns {\n        Item?: string[];\n    }\n\n    export interface ComponentsFilter {\n        Item?: string[];\n    }\n\n    export interface LogFilter {\n        WildcardFilter?: string;\n        AbsoluteTimeRange?: AbsoluteTimeRange;\n        RelativeTimeRangeBuffer?: unsignedInt;\n        LineLimit?: unsignedInt;\n        LineStartFrom?: long;\n        SelectColumnMode?: LogSelectColumnMode;\n        CustomColumns?: CustomColumns;\n        ComponentsFilter?: ComponentsFilter;\n        Format?: string;\n        sortByTimeDirection?: SortDirection;\n        LogEventType?: LogEventClass;\n    }\n\n    export interface WUCreateZAPInfo {\n        Wuid?: string;\n        ESPApplication?: string;\n        ThorProcesses?: string;\n        BuildVersion?: string;\n        ProblemDescription?: string;\n        WhatChanged?: string;\n        WhereSlow?: string;\n        ZAPFileName?: string;\n        IncludeThorSlaveLog?: string;\n        ZAPPassword?: string;\n        SendEmail?: boolean;\n        AttachZAPReportToEmail?: boolean;\n        EmailFrom?: string;\n        EmailSubject?: string;\n        EmailBody?: string;\n        LogFilter?: LogFilter;\n        IncludeRelatedLogs?: boolean;\n        IncludePerComponentLogs?: boolean;\n    }\n\n    export interface WUCreateZAPInfoResponse {\n        Exceptions?: Exceptions;\n        thefile?: base64Binary;\n        ZAPFileName?: string;\n    }\n\n    export interface WUDelete {\n        Wuids?: Wuids;\n        BlockTillFinishTimer?: int;\n    }\n\n    export interface WUDeleteResponse {\n        Exceptions?: Exceptions;\n        ActionResults?: ActionResults;\n    }\n\n    export interface NamedValue {\n        Name?: string;\n        Value?: string;\n    }\n\n    export interface DebugValues2 {\n        NamedValue?: NamedValue[];\n    }\n\n    export interface WUDeployWorkunit {\n        Cluster?: string;\n        Name?: string;\n        Wait?: int;\n        ObjType?: string;\n        FileName?: string;\n        Object?: base64Binary;\n        ResultLimit?: int;\n        QueryMainDefinition?: string;\n        Snapshot?: string;\n        DebugValues?: DebugValues2;\n        Protect?: boolean;\n    }\n\n    export interface WUDeployWorkunitResponse {\n        Exceptions?: Exceptions;\n        Workunit?: Workunit;\n    }\n\n    export interface PropertyFilter {\n        Name?: string;\n        ExactValue?: string;\n        MinValue?: string;\n        MaxValue?: string;\n    }\n\n    export interface PropertyFilters {\n        PropertyFilter?: PropertyFilter[];\n    }\n\n    export interface ScopeFilter {\n        MaxDepth?: integer;\n        Scopes?: string[];\n        Ids?: string[];\n        ScopeTypes?: string[];\n        PropertyFilters?: PropertyFilters;\n    }\n\n    export interface NestedFilter {\n        Depth?: unsignedInt;\n        ScopeTypes?: string[];\n    }\n\n    export interface Extra {\n        scopeType?: string;\n        Properties?: string[];\n    }\n\n    export interface ExtraProperties {\n        Extra?: Extra[];\n    }\n\n    export interface PropertiesToReturn {\n        AllStatistics?: boolean;\n        AllAttributes?: boolean;\n        AllHints?: boolean;\n        AllScopes?: boolean;\n        AllProperties?: boolean;\n        AllNotes?: boolean;\n        MinVersion?: uint64;\n        Measure?: string;\n        Properties?: string[];\n        ExtraProperties?: ExtraProperties;\n    }\n\n    export interface ScopeOptions {\n        IncludeMatchedScopesInResults?: boolean;\n        IncludeScope?: boolean;\n        IncludeId?: boolean;\n        IncludeScopeType?: boolean;\n    }\n\n    export interface WUDetails {\n        WUID?: string;\n        ScopeFilter?: ScopeFilter;\n        NestedFilter?: NestedFilter;\n        PropertiesToReturn?: PropertiesToReturn;\n        Filter?: string;\n        ScopeOptions?: ScopeOptions;\n        PropertyOptions?: PropertyOptions;\n    }\n\n    export interface Scope {\n        ScopeName?: string;\n        Id?: string;\n        ScopeType?: string;\n        Properties?: Properties;\n        Notes?: Notes;\n        SinkActivity?: string;\n    }\n\n    export interface Scopes {\n        Scope?: Scope[];\n    }\n\n    export interface WUDetailsResponse {\n        Exceptions?: Exceptions;\n        MaxVersion?: uint64;\n        WUID?: string;\n        Scopes?: Scopes;\n    }\n\n    export interface WUDetailsMeta {\n\n    }\n\n    export interface Property2 {\n        Name?: string;\n        ValueType?: WUDetailsAttrValueType;\n        Description?: string;\n    }\n\n    export interface Properties2 {\n        Property?: Property2[];\n    }\n\n    export interface ScopeTypes {\n        ScopeType?: string[];\n    }\n\n    export interface Measures {\n        Measure?: string[];\n    }\n\n    export interface Activity2 {\n        Kind?: unsignedInt;\n        Name?: string;\n        IsSink?: boolean;\n        IsSource?: boolean;\n    }\n\n    export interface Activities2 {\n        Activity?: Activity2[];\n    }\n\n    export interface WUDetailsMetaResponse {\n        Exceptions?: Exceptions;\n        Properties?: Properties2;\n        ScopeTypes?: ScopeTypes;\n        Measures?: Measures;\n        Activities?: Activities2;\n    }\n\n    export interface EclDefinitions {\n        Item?: string[];\n    }\n\n    export interface WUEclDefinitionAction {\n        EclDefinitions?: EclDefinitions;\n        ActionType?: EclDefinitionActions;\n        Target?: string;\n        RemoteDali?: string;\n        SourceProcess?: string;\n        Priority?: string;\n        Comment?: string;\n        MemoryLimit?: string;\n        DeletePrevious?: boolean;\n        SuspendPrevious?: boolean;\n        NoActivate?: boolean;\n        NoReload?: boolean;\n        DontCopyFiles?: boolean;\n        AllowForeign?: boolean;\n        UpdateDfs?: boolean;\n        UpdateSuperfiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        DontAppendCluster?: boolean;\n        MsToWait?: int;\n        TimeLimit?: int;\n        WarnTimeLimit?: int;\n        DfuCopyFiles?: boolean;\n        DfuOverwrite?: boolean;\n        DfuQueue?: string;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface WUEclDefinitionActionResult {\n        EclDefinition?: string;\n        Action?: string;\n        WUID?: string;\n        QueryID?: string;\n        Result?: string;\n    }\n\n    export interface ActionResults2 {\n        WUEclDefinitionActionResult?: WUEclDefinitionActionResult[];\n    }\n\n    export interface WUEclDefinitionActionResponse {\n        Exceptions?: Exceptions;\n        ActionResults?: ActionResults2;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface WUExport {\n        Cluster?: string;\n        Owner?: string;\n        State?: string;\n        StartDate?: string;\n        EndDate?: string;\n        Jobname?: string;\n    }\n\n    export interface WUExportResponse {\n        Exceptions?: Exceptions;\n        ExportData?: base64Binary;\n    }\n\n    export interface LogColumns {\n        Item?: string[];\n    }\n\n    export interface WUFile {\n        Name?: string;\n        Wuid?: string;\n        Type?: string;\n        Option?: int;\n        SlaveIP?: string;\n        IPAddress?: string;\n        Description?: string;\n        QuerySet?: string;\n        Query?: string;\n        Process?: string;\n        ClusterGroup?: string;\n        LogDate?: string;\n        SlaveNumber?: int;\n        SizeLimit?: long;\n        ErrorMessageFormat?: ErrorMessageFormat;\n        PlainText?: string;\n        MaxLogRecords?: unsignedInt;\n        LogSelectColumnMode?: LogSelectColumnMode;\n        LogFormat?: LogAccessLogFormat;\n        LogSearchTimeBuffSecs?: unsignedInt;\n        LogColumns?: LogColumns;\n    }\n\n    export interface WULogFileResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        QuerySet?: string;\n        QueryName?: string;\n        QueryId?: string;\n        FileName?: string;\n        DaliServer?: string;\n        thefile?: base64Binary;\n    }\n\n    export interface WUFullResult {\n        Wuid?: string;\n        NoRootTag?: boolean;\n        ExceptionSeverity?: WUExceptionSeverity;\n    }\n\n    export interface WUFullResultResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Results?: string;\n    }\n\n    export interface WUGVCGraphInfo {\n        Wuid?: string;\n        Name?: string;\n        GID?: string;\n        BatchWU?: int;\n        SubgraphId?: int;\n    }\n\n    export interface WUGVCGraphInfoResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Name?: string;\n        GID?: string;\n        Running?: boolean;\n        TheGraph?: string;\n        BatchWU?: int;\n    }\n\n    export interface WUGetArchiveFile {\n        WUID?: string;\n        ModuleName?: string;\n        FileName?: string;\n        Path?: string;\n    }\n\n    export interface WUGetArchiveFileResponse {\n        Exceptions?: Exceptions;\n        File?: string;\n        Message?: string;\n    }\n\n    export interface WUGetDependancyTrees {\n        Cluster?: string;\n        Queue?: string;\n        Snapshot?: string;\n        Items?: string;\n        TimeoutMilliSec?: string;\n    }\n\n    export interface WUGetDependancyTreesResponse {\n        Exceptions?: Exceptions;\n        Errors?: Errors;\n        DependancyTrees?: base64Binary;\n    }\n\n    export interface WUGetGraph {\n        Wuid?: string;\n        GraphName?: string;\n        SubGraphId?: string;\n    }\n\n    export interface ECLGraphEx {\n        Name?: string;\n        Label?: string;\n        Type?: string;\n        Graph?: string;\n        Running?: boolean;\n        RunningId?: long;\n        Complete?: boolean;\n        Failed?: boolean;\n    }\n\n    export interface Graphs3 {\n        ECLGraphEx?: ECLGraphEx[];\n    }\n\n    export interface WUGetGraphResponse {\n        Exceptions?: Exceptions;\n        Graphs?: Graphs3;\n    }\n\n    export interface WUGetGraphNameAndTypes {\n        Wuid?: string;\n        Type?: string;\n    }\n\n    export interface GraphNameAndType {\n        Name?: string;\n        Type?: string;\n    }\n\n    export interface GraphNameAndTypes {\n        GraphNameAndType?: GraphNameAndType[];\n    }\n\n    export interface WUGetGraphNameAndTypesResponse {\n        Exceptions?: Exceptions;\n        GraphNameAndTypes?: GraphNameAndTypes;\n    }\n\n    export interface WUGetNumFileToCopy {\n        ClusterName?: string;\n        TargetName?: string;\n        PageSize?: long;\n        PageStartFrom?: long;\n        Sortby?: string;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface Endpoint {\n        URL?: string;\n        Status?: string;\n        NumQueryFileToCopy?: int;\n    }\n\n    export interface Endpoints {\n        Endpoint?: Endpoint[];\n    }\n\n    export interface WUGetNumFileToCopyResponse {\n        Exceptions?: Exceptions;\n        Endpoints?: Endpoints;\n        CacheHint?: long;\n        Total?: long;\n    }\n\n    export interface WUGetPlugins {\n\n    }\n\n    export interface Plugins {\n        WUEclPluginsInFolder?: WUEclPluginsInFolder[];\n    }\n\n    export interface WUEclPluginsInFolder {\n        Path?: string;\n        Plugins?: Plugins;\n    }\n\n    export interface WUGetPluginsResponse {\n        Exceptions?: Exceptions;\n        Plugins?: Plugins;\n    }\n\n    export interface WUGetStats {\n        WUID?: string;\n        CreatorType?: string;\n        Creator?: string;\n        ScopeType?: string;\n        Scope?: string;\n        Kind?: string;\n        Measure?: string;\n        MinScopeDepth?: unsignedInt;\n        MaxScopeDepth?: unsignedInt;\n        IncludeGraphs?: boolean;\n        CreateDescriptions?: boolean;\n        MinValue?: long;\n        MaxValue?: long;\n        Filter?: string;\n    }\n\n    export interface WUStatisticItem {\n        Creator?: string;\n        CreatorType?: string;\n        Scope?: string;\n        ScopeType?: string;\n        Description?: string;\n        TimeStamp?: string;\n        Measure?: string;\n        Kind?: string;\n        Value?: string;\n        RawValue?: long;\n        Count?: long;\n        Max?: long;\n        Wuid?: string;\n    }\n\n    export interface Statistics {\n        WUStatisticItem?: WUStatisticItem[];\n    }\n\n    export interface WUGetStatsResponse {\n        Exceptions?: Exceptions;\n        WUID?: string;\n        Statistics?: Statistics;\n    }\n\n    export interface WUGetThorJobList {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n        MaxJobsToReturn?: unsignedInt;\n    }\n\n    export interface ECLJob {\n        Wuid?: string;\n        Graph?: string;\n        State?: string;\n        StartedDate?: string;\n        FinishedDate?: string;\n        Cluster?: string;\n        GraphNum?: string;\n        SubGraphNum?: string;\n        NumOfRuns?: string;\n        Duration?: int;\n    }\n\n    export interface JobList {\n        ECLJob?: ECLJob[];\n    }\n\n    export interface InProgressJobList {\n        ECLJob?: ECLJob[];\n    }\n\n    export interface WUGetThorJobListResponse {\n        Exceptions?: Exceptions;\n        JobList?: JobList;\n        InProgressJobList?: InProgressJobList;\n        Warning?: string;\n    }\n\n    export interface WUGetThorJobQueue {\n        Cluster?: string;\n        StartDate?: string;\n        EndDate?: string;\n        MaxJobQueueItemsToReturn?: unsignedInt;\n    }\n\n    export interface ThorQueue {\n        DT?: string;\n        RunningWUs?: string;\n        QueuedWUs?: string;\n        WaitingThors?: string;\n        ConnectedThors?: string;\n        IdledThors?: string;\n        RunningWU1?: string;\n        RunningWU2?: string;\n    }\n\n    export interface QueueList {\n        ThorQueue?: ThorQueue[];\n    }\n\n    export interface WUGetThorJobQueueResponse {\n        Exceptions?: Exceptions;\n        LongestQueue?: int;\n        MaxThorConnected?: int;\n        QueueList?: QueueList;\n        Warning?: string;\n    }\n\n    export interface WUGetZAPInfo {\n        WUID?: string;\n    }\n\n    export interface WUGetZAPInfoResponse {\n        Exceptions?: Exceptions;\n        WUID?: string;\n        ESPApplication?: string;\n        ThorProcesses?: string;\n        BuildVersion?: string;\n        Archive?: string;\n        EmailTo?: string;\n        EmailFrom?: string;\n        Message?: string;\n        IsContainerized?: boolean;\n    }\n\n    export interface WUGraphInfo {\n        Wuid?: string;\n        Name?: string;\n        GID?: string;\n        BatchWU?: int;\n    }\n\n    export interface WUGraphInfoResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Name?: string;\n        GID?: string;\n        BatchWU?: int;\n        Running?: boolean;\n    }\n\n    export interface WUGraphTiming {\n        Wuid?: string;\n    }\n\n    export interface WUGraphTimingResponse {\n        Exceptions?: Exceptions;\n        Workunit?: Workunit;\n    }\n\n    export interface WUInfo {\n        Wuid?: string;\n        TruncateEclTo64k?: boolean;\n        Type?: string;\n        IncludeExceptions?: boolean;\n        IncludeGraphs?: boolean;\n        IncludeSourceFiles?: boolean;\n        IncludeResults?: boolean;\n        IncludeResultsViewNames?: boolean;\n        IncludeVariables?: boolean;\n        IncludeTimers?: boolean;\n        IncludeDebugValues?: boolean;\n        IncludeApplicationValues?: boolean;\n        IncludeWorkflows?: boolean;\n        IncludeXmlSchemas?: boolean;\n        IncludeResourceURLs?: boolean;\n        IncludeECL?: boolean;\n        IncludeHelpers?: boolean;\n        IncludeAllowedClusters?: boolean;\n        IncludeTotalClusterTime?: boolean;\n        IncludeServiceNames?: boolean;\n        IncludeProcesses?: boolean;\n        SuppressResultSchemas?: boolean;\n        ThorSlaveIP?: string;\n    }\n\n    export interface ResultViews {\n        View?: string[];\n    }\n\n    export interface WUInfoResponse {\n        Exceptions?: Exceptions;\n        Workunit?: Workunit;\n        AutoRefresh?: int;\n        CanCompile?: boolean;\n        ThorSlaveIP?: string;\n        ResultViews?: ResultViews;\n        SecMethod?: string;\n    }\n\n    export interface WUInfoDetails {\n        Wuid?: string;\n        TruncateEclTo64k?: boolean;\n        Type?: string;\n        IncludeExceptions?: boolean;\n        IncludeGraphs?: boolean;\n        IncludeSourceFiles?: boolean;\n        IncludeResults?: boolean;\n        IncludeResultsViewNames?: boolean;\n        IncludeVariables?: boolean;\n        IncludeTimers?: boolean;\n        IncludeDebugValues?: boolean;\n        IncludeApplicationValues?: boolean;\n        IncludeWorkflows?: boolean;\n        IncludeXmlSchemas?: boolean;\n        IncludeResourceURLs?: boolean;\n        IncludeECL?: boolean;\n        IncludeHelpers?: boolean;\n        IncludeAllowedClusters?: boolean;\n        IncludeTotalClusterTime?: boolean;\n        IncludeServiceNames?: boolean;\n        IncludeProcesses?: boolean;\n        SuppressResultSchemas?: boolean;\n        ThorSlaveIP?: string;\n    }\n\n    export interface WUJobList {\n        Cluster?: string;\n        Process?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ShowAll?: boolean;\n        BusinessStartHour?: int;\n        BusinessEndHour?: int;\n    }\n\n    export interface Jobs {\n        ECLJob?: ECLJob[];\n    }\n\n    export interface WUJobListResponse {\n        Exceptions?: Exceptions;\n        StartDate?: string;\n        EndDate?: string;\n        Jobs?: Jobs;\n    }\n\n    export interface WULightWeightQuery {\n        Wuid?: string;\n        Type?: string;\n        Cluster?: string;\n        Owner?: string;\n        JobName?: string;\n        StartDate?: string;\n        EndDate?: string;\n        BeforeWU?: string;\n        AfterWU?: string;\n        State?: string;\n        ApplicationValues?: ApplicationValues;\n        PageStartFrom?: long;\n        PageSize?: unsignedInt;\n        SortBy?: string;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface ECLWorkunitLW {\n        Wuid?: string;\n        Owner?: string;\n        JobName?: string;\n        WuScope?: string;\n        ClusterName?: string;\n        State?: int;\n        StateDesc?: string;\n        Action?: int;\n        ActionDesc?: string;\n        Priority?: int;\n        PriorityDesc?: string;\n        PriorityLevel?: int;\n        IsProtected?: boolean;\n        DateTimeScheduled?: dateTime;\n        TotalClusterTime?: unsignedInt;\n        ApplicationValues?: ApplicationValues;\n        NoAccess?: boolean;\n    }\n\n    export interface Workunits {\n        ECLWorkunitLW?: ECLWorkunitLW[];\n    }\n\n    export interface WULightWeightQueryResponse {\n        Exceptions?: Exceptions;\n        NumWUs?: int;\n        CacheHint?: long;\n        Workunits?: Workunits;\n    }\n\n    export interface WUListArchiveFiles {\n        WUID?: string;\n    }\n\n    export interface ArchiveModules {\n        ArchiveModule?: ArchiveModule[];\n    }\n\n    export interface File2 {\n        Name?: string;\n        Key?: string;\n        SourcePath?: string;\n        Path?: string;\n    }\n\n    export interface Files {\n        File?: File2[];\n    }\n\n    export interface ArchiveModule {\n        Name?: string;\n        FullName?: string;\n        Flags?: unsignedInt;\n        Key?: string;\n        Plugin?: string;\n        SourcePath?: string;\n        Version?: string;\n        Path?: string;\n        ArchiveModules?: ArchiveModules;\n        Files?: Files;\n    }\n\n    export interface WUListArchiveFilesResponse {\n        Exceptions?: Exceptions;\n        ArchiveModules?: ArchiveModules;\n        Files?: Files;\n        Message?: string;\n    }\n\n    export interface WUListLocalFileRequired {\n        Wuid?: string;\n    }\n\n    export interface LogicalFileUpload {\n        Type?: int;\n        Source?: string;\n        Destination?: string;\n        EventTag?: string;\n    }\n\n    export interface LocalFileUploads {\n        LogicalFileUpload?: LogicalFileUpload[];\n    }\n\n    export interface WUListLocalFileRequiredResponse {\n        Exceptions?: Exceptions;\n        LocalFileUploads?: LocalFileUploads;\n    }\n\n    export interface WUListQueries {\n        QuerySetName?: string;\n        ClusterName?: string;\n        LibraryName?: string;\n        MemoryLimitLow?: long;\n        MemoryLimitHigh?: long;\n        TimeLimitLow?: nonNegativeInteger;\n        TimeLimitHigh?: nonNegativeInteger;\n        WarnTimeLimitLow?: nonNegativeInteger;\n        WarnTimeLimitHigh?: nonNegativeInteger;\n        PriorityLow?: nonNegativeInteger;\n        PriorityHigh?: nonNegativeInteger;\n        Activated?: boolean;\n        SuspendedFilter?: WUQueryFilterSuspendedType;\n        WUID?: string;\n        QueryID?: string;\n        QueryName?: string;\n        PublishedBy?: string;\n        PageSize?: nonNegativeInteger;\n        PageStartFrom?: nonNegativeInteger;\n        Sortby?: string;\n        Descending?: boolean;\n        CacheHint?: long;\n        FileName?: string;\n        CheckAllNodes?: boolean;\n    }\n\n    export interface ClusterQueryState {\n        Cluster?: string;\n        State?: string;\n        Errors?: string;\n        MixedNodeStates?: boolean;\n    }\n\n    export interface Clusters2 {\n        ClusterQueryState?: ClusterQueryState[];\n    }\n\n    export interface QuerySetQuery {\n        Id?: string;\n        Name?: string;\n        Wuid?: string;\n        Dll?: string;\n        Suspended?: boolean;\n        Clusters?: Clusters2;\n        memoryLimit?: string;\n        timeLimit?: nonNegativeInteger;\n        warnTimeLimit?: nonNegativeInteger;\n        priority?: string;\n        Comment?: string;\n        QuerySetId?: string;\n        IsLibrary?: boolean;\n        Activated?: boolean;\n        PublishedBy?: string;\n        snapshot?: string;\n        PriorityID?: int;\n    }\n\n    export interface QuerysetQueries {\n        QuerySetQuery?: QuerySetQuery[];\n    }\n\n    export interface WUListQueriesResponse {\n        Exceptions?: Exceptions;\n        NumberOfQueries?: int;\n        CacheHint?: long;\n        QuerysetQueries?: QuerysetQueries;\n    }\n\n    export interface WUListQueriesUsingFile {\n        Target?: string;\n        Process?: string;\n        FileName?: string;\n    }\n\n    export interface QueryUsingFile {\n        Id?: string;\n        Package?: string;\n    }\n\n    export interface Queries {\n        QueryUsingFile?: QueryUsingFile[];\n    }\n\n    export interface TargetQueriesUsingFile {\n        Target?: string;\n        PackageMap?: string;\n        Queries?: Queries;\n    }\n\n    export interface Targets {\n        TargetQueriesUsingFile?: TargetQueriesUsingFile[];\n    }\n\n    export interface WUListQueriesUsingFileResponse {\n        Exceptions?: Exceptions;\n        Process?: string;\n        FileName?: string;\n        Targets?: Targets;\n    }\n\n    export interface WUMultiQuerysetDetails {\n        ClusterName?: string;\n        QuerySetName?: string;\n        Filter?: string;\n        FilterType?: WUQuerySetFilterType;\n        CheckAllNodes?: boolean;\n    }\n\n    export interface Queries2 {\n        QuerySetQuery?: QuerySetQuery[];\n    }\n\n    export interface QuerySetAlias {\n        Id?: string;\n        Name?: string;\n    }\n\n    export interface Aliases {\n        QuerySetAlias?: QuerySetAlias[];\n    }\n\n    export interface WUQuerySetDetail {\n        QuerySetName?: string;\n        Queries?: Queries2;\n        Aliases?: Aliases;\n    }\n\n    export interface Querysets {\n        WUQuerySetDetail?: WUQuerySetDetail[];\n    }\n\n    export interface WUMultiQuerySetDetailsResponse {\n        Exceptions?: Exceptions;\n        ClusterName?: string;\n        Querysets?: Querysets;\n    }\n\n    export interface WUProcessGraph {\n        Wuid?: string;\n        Name?: string;\n    }\n\n    export interface WUProcessGraphResponse {\n        Exceptions?: Exceptions;\n        theGraph?: string;\n    }\n\n    export interface WUProtect {\n        Wuids?: Wuids;\n        Protect?: boolean;\n    }\n\n    export interface WUProtectResponse {\n        Exceptions?: Exceptions;\n        ActionResults?: ActionResults;\n    }\n\n    export interface WUPublishWorkunit {\n        Wuid?: string;\n        Cluster?: string;\n        QueryName?: string;\n        WorkUnitJobName?: string;\n        JobName?: string;\n        Activate?: int;\n        NotifyCluster?: boolean;\n        Wait?: int;\n        NoReload?: boolean;\n        UpdateWorkUnitName?: boolean;\n        memoryLimit?: string;\n        TimeLimit?: nonNegativeInteger;\n        WarnTimeLimit?: nonNegativeInteger;\n        Priority?: string;\n        RemoteDali?: string;\n        Comment?: string;\n        DontCopyFiles?: boolean;\n        SourceProcess?: string;\n        AllowForeignFiles?: boolean;\n        UpdateDfs?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        IncludeFileErrors?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface WUPublishWorkunitResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Result?: string;\n        QuerySet?: string;\n        QueryName?: string;\n        QueryId?: string;\n        ReloadFailed?: boolean;\n        Suspended?: boolean;\n        ErrorMessage?: string;\n        ClusterFiles?: ClusterFiles;\n        FileErrors?: FileErrors;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface WUPushEvent {\n        EventName?: string;\n        EventText?: string;\n    }\n\n    export interface WUPushEventResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface WUQuery {\n        Wuid?: string;\n        Type?: string;\n        Cluster?: string;\n        RoxieCluster?: string;\n        Owner?: string;\n        State?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ECL?: string;\n        Jobname?: string;\n        LogicalFile?: string;\n        LogicalFileSearchType?: string;\n        ApplicationValues?: ApplicationValues;\n        BeforeWU?: string;\n        AfterWU?: string;\n        TotalClusterTimeThresholdMilliSec?: unsignedInt;\n        Count?: int;\n        PageSize?: long;\n        PageStartFrom?: long;\n        PageEndAt?: long;\n        Protected?: WUProtectFilter;\n        MinimumExecuteCost?: double;\n        MinimumFileAccessCost?: double;\n        MinimumCompileCost?: double;\n        Sortby?: string;\n        Descending?: boolean;\n        CacheHint?: long;\n    }\n\n    export interface ECLWorkunit {\n        Wuid?: string;\n        Owner?: string;\n        Cluster?: string;\n        RoxieCluster?: string;\n        Jobname?: string;\n        Queue?: string;\n        StateID?: int;\n        State?: string;\n        StateEx?: string;\n        Description?: string;\n        Protected?: boolean;\n        Active?: boolean;\n        Action?: int;\n        ActionEx?: string;\n        DateTimeScheduled?: dateTime;\n        PriorityClass?: int;\n        PriorityLevel?: int;\n        Scope?: string;\n        Snapshot?: string;\n        ResultLimit?: int;\n        Archived?: boolean;\n        IsPausing?: boolean;\n        ThorLCR?: boolean;\n        EventSchedule?: int;\n        TotalClusterTime?: string;\n        AbortBy?: string;\n        AbortTime?: string;\n        Query?: Query;\n        Helpers?: Helpers;\n        Exceptions?: Exceptions2;\n        Graphs?: Graphs;\n        SourceFiles?: SourceFiles;\n        Results?: Results;\n        Variables?: Variables;\n        Timers?: Timers;\n        DebugValues?: DebugValues;\n        ApplicationValues?: ApplicationValues;\n        Workflows?: Workflows;\n        TimingData?: TimingData;\n        AllowedClusters?: AllowedClusters;\n        ErrorCount?: int;\n        WarningCount?: int;\n        InfoCount?: int;\n        AlertCount?: int;\n        GraphCount?: int;\n        SourceFileCount?: int;\n        ResultCount?: int;\n        VariableCount?: int;\n        TimerCount?: int;\n        HasDebugValue?: boolean;\n        ApplicationValueCount?: int;\n        XmlParams?: string;\n        AccessFlag?: int;\n        ClusterFlag?: int;\n        HelpersDesc?: string;\n        GraphsDesc?: string;\n        SourceFilesDesc?: string;\n        ResultsDesc?: string;\n        VariablesDesc?: string;\n        TimersDesc?: string;\n        DebugValuesDesc?: string;\n        ApplicationValuesDesc?: string;\n        WorkflowsDesc?: string;\n        HasArchiveQuery?: boolean;\n        ThorLogList?: ThorLogList;\n        ResourceURLs?: ResourceURLs;\n        ResultViewCount?: int;\n        ResourceURLCount?: int;\n        DebugValueCount?: int;\n        WorkflowCount?: int;\n        HelpersCount?: int;\n        ServiceNames?: ServiceNames;\n        ExecuteCost?: double;\n        FileAccessCost?: double;\n        CostSavingPotential?: double;\n        CompileCost?: double;\n        NoAccess?: boolean;\n        ECLWUProcessList?: ECLWUProcessList;\n        FailureDesc?: string;\n    }\n\n    export interface Workunits2 {\n        ECLWorkunit?: ECLWorkunit[];\n    }\n\n    export interface WUQueryResponse {\n        Exceptions?: Exceptions;\n        Type?: string;\n        Cluster?: string;\n        RoxieCluster?: string;\n        Owner?: string;\n        State?: string;\n        StartDate?: string;\n        EndDate?: string;\n        ECL?: string;\n        Jobname?: string;\n        LogicalFile?: string;\n        LogicalFileSearchType?: string;\n        Current?: string;\n        Next?: string;\n        Count?: int;\n        PageSize?: long;\n        PrevPage?: long;\n        NextPage?: long;\n        LastPage?: long;\n        NumWUs?: int;\n        First?: boolean;\n        PageStartFrom?: long;\n        PageEndAt?: long;\n        Sortby?: string;\n        Descending?: boolean;\n        BasicQuery?: string;\n        Filters?: string;\n        CacheHint?: long;\n        Workunits?: Workunits2;\n    }\n\n    export interface WUQueryConfig {\n        Target?: string;\n        QueryId?: string;\n        Wait?: int;\n        NoReload?: boolean;\n        memoryLimit?: string;\n        TimeLimit?: nonNegativeInteger;\n        WarnTimeLimit?: nonNegativeInteger;\n        Priority?: string;\n        Comment?: string;\n    }\n\n    export interface Result {\n        QueryId?: string;\n    }\n\n    export interface Results2 {\n        Result?: Result[];\n    }\n\n    export interface WUQueryConfigResponse {\n        Exceptions?: Exceptions;\n        ReloadFailed?: boolean;\n        Results?: Results2;\n    }\n\n    export interface WUQueryDetails {\n        QueryId?: string;\n        QuerySet?: string;\n        IncludeStateOnClusters?: boolean;\n        IncludeSuperFiles?: boolean;\n        IncludeWsEclAddresses?: boolean;\n        CheckAllNodes?: boolean;\n        IncludeWUDetails?: boolean;\n        IncludeWUQueryFiles?: boolean;\n    }\n\n    export interface LogicalFiles {\n        Item?: string[];\n    }\n\n    export interface SubFiles {\n        File?: string[];\n    }\n\n    export interface SuperFiles {\n        SuperFile?: SuperFile[];\n    }\n\n    export interface SuperFile {\n        Name?: string;\n        SubFiles?: SubFiles;\n        SuperFiles?: SuperFiles;\n    }\n\n    export interface LibrariesUsed {\n        Item?: string[];\n    }\n\n    export interface WsEclAddresses {\n        Address?: string[];\n    }\n\n    export interface WUGraphs {\n        ECLGraph?: ECLGraph[];\n    }\n\n    export interface WUTimers {\n        ECLTimer?: ECLTimer[];\n    }\n\n    export interface WUQueryDetailsResponse {\n        Exceptions?: Exceptions;\n        QueryId?: string;\n        QuerySet?: string;\n        QueryName?: string;\n        Wuid?: string;\n        Dll?: string;\n        Suspended?: boolean;\n        Activated?: boolean;\n        SuspendedBy?: string;\n        Clusters?: Clusters2;\n        PublishedBy?: string;\n        Comment?: string;\n        LogicalFiles?: LogicalFiles;\n        SuperFiles?: SuperFiles;\n        IsLibrary?: boolean;\n        Priority?: string;\n        PriorityID?: int;\n        WUSnapShot?: string;\n        CompileTime?: string;\n        LibrariesUsed?: LibrariesUsed;\n        CountGraphs?: int;\n        ResourceURLCount?: int;\n        WsEclAddresses?: WsEclAddresses;\n        WUGraphs?: WUGraphs;\n        WUTimers?: WUTimers;\n    }\n\n    export interface WUQueryDetailsLightWeight {\n        QueryId?: string;\n        QuerySet?: string;\n        IncludeWUDetails?: boolean;\n        IncludeWUQueryFiles?: boolean;\n        IncludeSuperFiles?: boolean;\n        IncludeWsEclAddresses?: boolean;\n        IncludeStateOnClusters?: boolean;\n        CheckAllNodes?: boolean;\n    }\n\n    export interface WUQueryFiles {\n        Target?: string;\n        QueryId?: string;\n    }\n\n    export interface File3 {\n        FileName?: string;\n        FileSize?: long;\n        NumberOfParts?: unsignedInt;\n    }\n\n    export interface Files2 {\n        File?: File3[];\n    }\n\n    export interface Query2 {\n        QueryId?: string;\n        Files?: Files2;\n        SuperFiles?: SuperFiles;\n    }\n\n    export interface Queries3 {\n        Query?: Query2[];\n    }\n\n    export interface WUQueryFilesResponse {\n        Exceptions?: Exceptions;\n        Files?: Files2;\n        SuperFiles?: SuperFiles;\n        Queries?: Queries3;\n    }\n\n    export interface WUQueryGetGraph {\n        Target?: string;\n        QueryId?: string;\n        GraphName?: string;\n        SubGraphId?: string;\n    }\n\n    export interface WUQueryGetGraphResponse {\n        Exceptions?: Exceptions;\n        Graphs?: Graphs3;\n    }\n\n    export interface WUQueryGetSummaryStats {\n        Target?: string;\n        QueryId?: string;\n        FromTime?: string;\n        ToTime?: string;\n        IncludeRawStats?: boolean;\n    }\n\n    export interface QuerySummaryStats {\n        Endpoint?: string;\n        Status?: string;\n        StartTime?: string;\n        EndTime?: string;\n        CountTotal?: int;\n        CountFailed?: int;\n        AverageSlavesReplyLen?: int;\n        AverageBytesOut?: long;\n        SizeAvgPeakMemory?: long;\n        TimeAvgTotalExecuteMinutes?: long;\n        TimeMinTotalExecuteMinutes?: long;\n        TimeMaxTotalExecuteMinutes?: long;\n        Percentile97?: long;\n        Percentile97Estimate?: boolean;\n    }\n\n    export interface StatsList {\n        QuerySummaryStats?: QuerySummaryStats[];\n    }\n\n    export interface AggregateQueryStatsList {\n        QuerySummaryStats?: QuerySummaryStats[];\n    }\n\n    export interface QueryStatsRecord {\n        StartTime?: string;\n        ElapsedTimeMs?: long;\n        MemoryUsed?: long;\n        BytesOut?: long;\n        SlavesReplyLen?: int;\n        Failed?: boolean;\n    }\n\n    export interface QueryStatsRecordList {\n        QueryStatsRecord?: QueryStatsRecord[];\n    }\n\n    export interface QueryStats {\n        ID?: string;\n        AggregateQueryStatsList?: AggregateQueryStatsList;\n        QueryStatsRecordList?: QueryStatsRecordList;\n    }\n\n    export interface QueryStatsList {\n        EndpointQueryStats?: EndpointQueryStats[];\n    }\n\n    export interface EndpointQueryStats {\n        Endpoint?: string;\n        Status?: string;\n        QueryStatsList?: QueryStatsList;\n    }\n\n    export interface WUQueryGetSummaryStatsResponse {\n        Exceptions?: Exceptions;\n        StatsList?: StatsList;\n        QueryStatsList?: QueryStatsList;\n    }\n\n    export interface Alias {\n        Name?: string;\n    }\n\n    export interface Aliases2 {\n        Alias?: Alias[];\n    }\n\n    export interface WUQuerysetAliasAction {\n        Action?: QuerySetAliasActionTypes;\n        QuerySetName?: string;\n        Aliases?: Aliases2;\n    }\n\n    export interface Result2 {\n        Name?: string;\n        Success?: boolean;\n        Code?: int;\n        Message?: string;\n    }\n\n    export interface Results3 {\n        Result?: Result2[];\n    }\n\n    export interface WUQuerySetAliasActionResponse {\n        Exceptions?: Exceptions;\n        Action?: QuerySetAliasActionTypes;\n        QuerySetName?: string;\n        Results?: Results3;\n    }\n\n    export interface WUQuerysetCopyQuery {\n        Source?: string;\n        Target?: string;\n        Cluster?: string;\n        DaliServer?: string;\n        Activate?: int;\n        Overwrite?: boolean;\n        DontCopyFiles?: boolean;\n        Wait?: int;\n        NoReload?: boolean;\n        memoryLimit?: string;\n        TimeLimit?: nonNegativeInteger;\n        WarnTimeLimit?: nonNegativeInteger;\n        priority?: string;\n        Comment?: string;\n        SourceProcess?: string;\n        DestName?: string;\n        AllowForeignFiles?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        IncludeFileErrors?: boolean;\n        SourceSSL?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface WUQuerySetCopyQueryResponse {\n        Exceptions?: Exceptions;\n        QueryId?: string;\n        FileErrors?: FileErrors;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface WUQuerysetDetails {\n        QuerySetName?: string;\n        Filter?: string;\n        ClusterName?: string;\n        FilterType?: WUQuerySetFilterType;\n        CheckAllNodes?: boolean;\n    }\n\n    export interface QuerysetAliases {\n        QuerySetAlias?: QuerySetAlias[];\n    }\n\n    export interface ClusterNames {\n        Item?: string[];\n    }\n\n    export interface WUQuerySetDetailsResponse {\n        Exceptions?: Exceptions;\n        QuerySetName?: string;\n        QuerysetQueries?: QuerysetQueries;\n        QuerysetAliases?: QuerysetAliases;\n        ClusterName?: string;\n        Filter?: string;\n        FilterType?: WUQuerySetFilterType;\n        ClusterNames?: ClusterNames;\n    }\n\n    export interface WUQuerysetExport {\n        Target?: string;\n        Compress?: boolean;\n        ActiveOnly?: boolean;\n        Protect?: boolean;\n    }\n\n    export interface WUQuerysetExportResponse {\n        Exceptions?: Exceptions;\n        Target?: string;\n        Compressed?: boolean;\n        Data?: base64Binary;\n    }\n\n    export interface WUQuerysetImport {\n        Target?: string;\n        QueryMask?: string;\n        Replace?: boolean;\n        ActiveOnly?: boolean;\n        Activation?: QuerysetImportActivation;\n        Compressed?: boolean;\n        Data?: base64Binary;\n        AllowForeignFiles?: boolean;\n        DfsServer?: string;\n        CopyFiles?: boolean;\n        OverwriteDfs?: boolean;\n        SourceProcess?: string;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        IncludeFileErrors?: boolean;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface ImportedQueries {\n        QueryId?: string[];\n    }\n\n    export interface MissingWuids {\n        QueryId?: string[];\n    }\n\n    export interface WUQuerysetImportResponse {\n        Exceptions?: Exceptions;\n        Target?: string;\n        ClearedExisting?: boolean;\n        Success?: boolean;\n        ImportedQueries?: ImportedQueries;\n        ExistingQueries?: ExistingQueries;\n        MissingWuids?: MissingWuids;\n        FileErrors?: FileErrors;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface ClientState {\n        Suspended?: string;\n    }\n\n    export interface Query3 {\n        QueryId?: string;\n        Activated?: boolean;\n        SuspendedByUser?: boolean;\n        ClientState?: ClientState;\n    }\n\n    export interface Queries4 {\n        Query?: Query3[];\n    }\n\n    export interface WUQuerysetQueryAction {\n        Action?: QuerySetQueryActionTypes;\n        QuerySetName?: string;\n        Queries?: Queries4;\n    }\n\n    export interface Result3 {\n        QueryId?: string;\n        WUID?: string;\n        Suspended?: boolean;\n        Success?: boolean;\n        Code?: int;\n        Message?: string;\n    }\n\n    export interface Results4 {\n        Result?: Result3[];\n    }\n\n    export interface WUQuerySetQueryActionResponse {\n        Exceptions?: Exceptions;\n        Action?: QuerySetQueryActionTypes;\n        QuerySetName?: string;\n        Results?: Results4;\n    }\n\n    export interface WUQuerysets {\n        test?: boolean;\n    }\n\n    export interface QuerySet {\n        QuerySetName?: string;\n    }\n\n    export interface Querysets2 {\n        QuerySet?: QuerySet[];\n    }\n\n    export interface WUQuerysetsResponse {\n        Exceptions?: Exceptions;\n        Querysets?: Querysets2;\n    }\n\n    export interface WURecreateQuery {\n        Target?: string;\n        QueryId?: string;\n        DebugValues?: DebugValues2;\n        DestTarget?: string;\n        Republish?: boolean;\n        Activate?: WUQueryActivationMode;\n        NoReload?: boolean;\n        MemoryLimit?: string;\n        TimeLimit?: nonNegativeInteger;\n        WarnTimeLimit?: nonNegativeInteger;\n        Priority?: string;\n        Comment?: string;\n        RemoteDali?: string;\n        DontCopyFiles?: boolean;\n        SourceProcess?: string;\n        AllowForeignFiles?: boolean;\n        UpdateDfs?: boolean;\n        UpdateSuperFiles?: boolean;\n        UpdateCloneFrom?: boolean;\n        AppendCluster?: boolean;\n        IncludeFileErrors?: boolean;\n        Wait?: int;\n        DfuCopyFiles?: boolean;\n        DfuQueue?: string;\n        DfuWait?: nonNegativeInteger;\n        DfuOverwrite?: boolean;\n        OnlyCopyFiles?: boolean;\n        StopIfFilesCopied?: boolean;\n        DfuPublisherWuid?: string;\n        RemoteStorage?: string;\n        KeyCompression?: string;\n        DfuTargetPlane?: string;\n    }\n\n    export interface WURecreateQueryResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        QuerySet?: string;\n        QueryName?: string;\n        QueryId?: string;\n        MemoryLimit?: string;\n        TimeLimit?: nonNegativeInteger;\n        WarnTimeLimit?: nonNegativeInteger;\n        Priority?: string;\n        Comment?: string;\n        ReloadFailed?: boolean;\n        Suspended?: boolean;\n        ErrorMessage?: string;\n        FileErrors?: FileErrors;\n        DfuPublisherWuid?: string;\n        DfuPublisherState?: string;\n    }\n\n    export interface WUResubmit {\n        Wuids?: Wuids;\n        BlockTillFinishTimer?: int;\n        ResetWorkflow?: boolean;\n        CloneWorkunit?: boolean;\n    }\n\n    export interface WU {\n        WUID?: string;\n        ParentWUID?: string;\n    }\n\n    export interface WUs {\n        WU?: WU[];\n    }\n\n    export interface WUResubmitResponse {\n        Exceptions?: Exceptions;\n        WUs?: WUs;\n    }\n\n    export interface FilterBy {\n        NamedValue?: NamedValue[];\n    }\n\n    export interface WUResult {\n        Wuid?: string;\n        Sequence?: int;\n        ResultName?: string;\n        LogicalName?: string;\n        Cluster?: string;\n        SuppressXmlSchema?: boolean;\n        BypassCachedResult?: boolean;\n        FilterBy?: FilterBy;\n        Start?: long;\n        Count?: int;\n    }\n\n    export interface WUResultResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Sequence?: int;\n        LogicalName?: string;\n        Cluster?: string;\n        Name?: string;\n        Start?: long;\n        Requested?: int;\n        Count?: int;\n        Total?: long;\n        Result?: string;\n    }\n\n    export interface WUResultBin {\n        LogicalName?: string;\n        Wuid?: string;\n        ResultName?: string;\n        Sequence?: int;\n        Format?: string;\n        Cluster?: string;\n        FilterBy?: FilterBy;\n        Start?: long;\n        Count?: int;\n    }\n\n    export interface WUResultBinResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Sequence?: int;\n        Name?: string;\n        Start?: long;\n        Count?: int;\n        Requested?: int;\n        Total?: long;\n        Result?: base64Binary;\n        Format?: string;\n    }\n\n    export interface WUResultSummary {\n        Wuid?: string;\n        Sequence?: int;\n    }\n\n    export interface Result4 {\n        Name?: string;\n        Sequence?: int;\n        Value?: string;\n        Link?: string;\n        FileName?: string;\n        IsSupplied?: boolean;\n        ShowFileContent?: boolean;\n        Total?: long;\n        ECLSchemas?: ECLSchemas;\n        XmlSchema?: string;\n    }\n\n    export interface WUResultSummaryResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        Sequence?: int;\n        Format?: int;\n        Result?: Result4;\n    }\n\n    export interface WUResultView {\n        Wuid?: string;\n        ViewName?: string;\n        Sequence?: int;\n        ResultName?: string;\n    }\n\n    export interface WUResultViewResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        ViewName?: string;\n        Result?: string;\n    }\n\n    export interface Variables2 {\n        NamedValue?: NamedValue[];\n    }\n\n    export interface WURun {\n        QuerySet?: string;\n        Query?: string;\n        Wuid?: string;\n        CloneWorkunit?: boolean;\n        Cluster?: string;\n        Wait?: int;\n        Input?: string;\n        NoRootTag?: boolean;\n        DebugValues?: DebugValues2;\n        Variables?: Variables2;\n        ApplicationValues?: ApplicationValues;\n        ExceptionSeverity?: WUExceptionSeverity;\n    }\n\n    export interface WURunResponse {\n        Exceptions?: Exceptions;\n        Wuid?: string;\n        State?: string;\n        Results?: string;\n    }\n\n    export interface WUSchedule {\n        Wuid?: string;\n        Cluster?: string;\n        Queue?: string;\n        Snapshot?: string;\n        When?: dateTime;\n        MaxRunTime?: int;\n    }\n\n    export interface WUScheduleResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface WUShowScheduled {\n        Cluster?: string;\n        EventName?: string;\n        PushEventName?: string;\n        PushEventText?: string;\n        State?: string;\n        JobName?: string;\n        Owner?: string;\n        EventText?: string;\n    }\n\n    export interface ServerInfo {\n        Name?: string;\n        NetAddress?: string;\n    }\n\n    export interface Clusters3 {\n        ServerInfo?: ServerInfo[];\n    }\n\n    export interface ScheduledWU {\n        Wuid?: string;\n        Cluster?: string;\n        EventName?: string;\n        EventText?: string;\n        JobName?: string;\n        StateID?: int;\n        State?: string;\n        Owner?: string;\n    }\n\n    export interface Workunits3 {\n        ScheduledWU?: ScheduledWU[];\n    }\n\n    export interface WUShowScheduledResponse {\n        Exceptions?: Exceptions;\n        ClusterSelected?: int;\n        EventName?: string;\n        PushEventName?: string;\n        PushEventText?: string;\n        Query?: string;\n        Clusters?: Clusters3;\n        Workunits?: Workunits3;\n    }\n\n    export interface WUSubmit {\n        Wuid?: string;\n        Cluster?: string;\n        Queue?: string;\n        Snapshot?: string;\n        MaxRunTime?: int;\n        MaxCost?: int;\n        BlockTillFinishTimer?: int;\n        SyntaxCheck?: boolean;\n        NotifyCluster?: boolean;\n    }\n\n    export interface WUSubmitResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface WUSyntaxCheckECL {\n        ECL?: string;\n        ModuleName?: string;\n        AttributeName?: string;\n        Queue?: string;\n        Cluster?: string;\n        Snapshot?: string;\n        TimeToWait?: int;\n        PersistWorkunit?: boolean;\n        DebugValues?: DebugValues;\n    }\n\n    export interface WUSyntaxCheckResponse {\n        Exceptions?: Exceptions;\n        Errors?: Errors;\n        Message?: string;\n    }\n\n    export interface WUUpdate {\n        Wuid?: string;\n        State?: int;\n        StateOrig?: int;\n        Jobname?: string;\n        JobnameOrig?: string;\n        QueryText?: string;\n        Action?: int;\n        Description?: string;\n        DescriptionOrig?: string;\n        AddDrilldownFields?: boolean;\n        ResultLimit?: int;\n        Protected?: boolean;\n        ProtectedOrig?: boolean;\n        PriorityClass?: int;\n        PriorityLevel?: int;\n        Scope?: string;\n        ScopeOrig?: string;\n        ClusterSelection?: string;\n        ClusterOrig?: string;\n        XmlParams?: string;\n        ThorSlaveIP?: string;\n        QueryMainDefinition?: string;\n        DebugValues?: DebugValues;\n        ApplicationValues?: ApplicationValues;\n    }\n\n    export interface WUUpdateQueryEntry {\n        QuerySet?: string;\n        QueryId?: string;\n        Comment?: string;\n    }\n\n    export interface WUUpdateQueryEntryResponse {\n        Exceptions?: Exceptions;\n    }\n\n    export interface WUWaitCompiled {\n        Wuid?: string;\n        Wait?: int;\n        ReturnOnWait?: boolean;\n    }\n\n    export interface WUWaitResponse {\n        Exceptions?: Exceptions;\n        StateID?: int;\n    }\n\n    export interface WUWaitComplete {\n        Wuid?: string;\n        Wait?: int;\n        ReturnOnWait?: boolean;\n    }\n\n}\n\nexport class WorkunitsServiceBase extends Service {\n\n    constructor(optsConnection: IOptions | IConnection) {\n        super(optsConnection, \"WsWorkunits\", \"2.08\");\n    }\n\n    GVCAjaxGraph(request: WsWorkunits.GVCAjaxGraph, abortSignal?: AbortSignal): Promise<WsWorkunits.GVCAjaxGraphResponse> {\n        return this._connection.send(\"GVCAjaxGraph\", request, \"json\", false, abortSignal, \"GVCAjaxGraphResponse\");\n    }\n\n    Ping(request: WsWorkunits.Ping, abortSignal?: AbortSignal): Promise<WsWorkunits.WsWorkunitsPingResponse> {\n        return this._connection.send(\"Ping\", request, \"json\", false, abortSignal, \"WsWorkunitsPingResponse\");\n    }\n\n    WUAbort(request: WsWorkunits.WUAbort, abortSignal?: AbortSignal): Promise<WsWorkunits.WUAbortResponse> {\n        return this._connection.send(\"WUAbort\", request, \"json\", false, abortSignal, \"WUAbortResponse\");\n    }\n\n    WUAction(request: WsWorkunits.WUAction, abortSignal?: AbortSignal): Promise<WsWorkunits.WUActionResponse> {\n        return this._connection.send(\"WUAction\", request, \"json\", false, abortSignal, \"WUActionResponse\");\n    }\n\n    WUAddLocalFileToWorkunit(request: WsWorkunits.WUAddLocalFileToWorkunit, abortSignal?: AbortSignal): Promise<WsWorkunits.WUAddLocalFileToWorkunitResponse> {\n        return this._connection.send(\"WUAddLocalFileToWorkunit\", request, \"json\", false, abortSignal, \"WUAddLocalFileToWorkunitResponse\");\n    }\n\n    WUAnalyseHotspot(request: WsWorkunits.WUAnalyseHotspot, abortSignal?: AbortSignal): Promise<WsWorkunits.WUAnalyseHotspotResponse> {\n        return this._connection.send(\"WUAnalyseHotspot\", request, \"json\", false, abortSignal, \"WUAnalyseHotspotResponse\");\n    }\n\n    WUCDebug(request: WsWorkunits.WUCDebug, abortSignal?: AbortSignal): Promise<WsWorkunits.WUDebugResponse> {\n        return this._connection.send(\"WUCDebug\", request, \"json\", false, abortSignal, \"WUDebugResponse\");\n    }\n\n    WUCheckFeatures(request: WsWorkunits.WUCheckFeatures, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCheckFeaturesResponse> {\n        return this._connection.send(\"WUCheckFeatures\", request, \"json\", false, abortSignal, \"WUCheckFeaturesResponse\");\n    }\n\n    WUClusterJobQueueLOG(request: WsWorkunits.WUClusterJobQueueLOG, abortSignal?: AbortSignal): Promise<WsWorkunits.WUClusterJobQueueLOGResponse> {\n        return this._connection.send(\"WUClusterJobQueueLOG\", request, \"json\", false, abortSignal, \"WUClusterJobQueueLOGResponse\");\n    }\n\n    WUClusterJobQueueXLS(request: WsWorkunits.WUClusterJobQueueXLS, abortSignal?: AbortSignal): Promise<WsWorkunits.WUClusterJobQueueXLSResponse> {\n        return this._connection.send(\"WUClusterJobQueueXLS\", request, \"json\", false, abortSignal, \"WUClusterJobQueueXLSResponse\");\n    }\n\n    WUClusterJobSummaryXLS(request: WsWorkunits.WUClusterJobSummaryXLS, abortSignal?: AbortSignal): Promise<WsWorkunits.WUClusterJobSummaryXLSResponse> {\n        return this._connection.send(\"WUClusterJobSummaryXLS\", request, \"json\", false, abortSignal, \"WUClusterJobSummaryXLSResponse\");\n    }\n\n    WUClusterJobXLS(request: WsWorkunits.WUClusterJobXLS, abortSignal?: AbortSignal): Promise<WsWorkunits.WUClusterJobXLSResponse> {\n        return this._connection.send(\"WUClusterJobXLS\", request, \"json\", false, abortSignal, \"WUClusterJobXLSResponse\");\n    }\n\n    WUCompileECL(request: WsWorkunits.WUCompileECL, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCompileECLResponse> {\n        return this._connection.send(\"WUCompileECL\", request, \"json\", false, abortSignal, \"WUCompileECLResponse\");\n    }\n\n    WUCopyLogicalFiles(request: WsWorkunits.WUCopyLogicalFiles, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCopyLogicalFilesResponse> {\n        return this._connection.send(\"WUCopyLogicalFiles\", request, \"json\", false, abortSignal, \"WUCopyLogicalFilesResponse\");\n    }\n\n    WUCopyQuerySet(request: WsWorkunits.WUCopyQuerySet, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCopyQuerySetResponse> {\n        return this._connection.send(\"WUCopyQuerySet\", request, \"json\", false, abortSignal, \"WUCopyQuerySetResponse\");\n    }\n\n    WUCreate(request: WsWorkunits.WUCreate, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCreateResponse> {\n        return this._connection.send(\"WUCreate\", request, \"json\", false, abortSignal, \"WUCreateResponse\");\n    }\n\n    WUCreateAndUpdate(request: WsWorkunits.WUCreateAndUpdate, abortSignal?: AbortSignal): Promise<WsWorkunits.WUUpdateResponse> {\n        return this._connection.send(\"WUCreateAndUpdate\", request, \"json\", false, abortSignal, \"WUUpdateResponse\");\n    }\n\n    WUCreateZAPInfo(request: WsWorkunits.WUCreateZAPInfo, abortSignal?: AbortSignal): Promise<WsWorkunits.WUCreateZAPInfoResponse> {\n        return this._connection.send(\"WUCreateZAPInfo\", request, \"json\", false, abortSignal, \"WUCreateZAPInfoResponse\");\n    }\n\n    WUDelete(request: WsWorkunits.WUDelete, abortSignal?: AbortSignal): Promise<WsWorkunits.WUDeleteResponse> {\n        return this._connection.send(\"WUDelete\", request, \"json\", false, abortSignal, \"WUDeleteResponse\");\n    }\n\n    WUDeployWorkunit(request: WsWorkunits.WUDeployWorkunit, abortSignal?: AbortSignal): Promise<WsWorkunits.WUDeployWorkunitResponse> {\n        return this._connection.send(\"WUDeployWorkunit\", request, \"json\", false, abortSignal, \"WUDeployWorkunitResponse\");\n    }\n\n    WUDetails(request: WsWorkunits.WUDetails, abortSignal?: AbortSignal): Promise<WsWorkunits.WUDetailsResponse> {\n        return this._connection.send(\"WUDetails\", request, \"json\", false, abortSignal, \"WUDetailsResponse\");\n    }\n\n    WUDetailsMeta(request: WsWorkunits.WUDetailsMeta, abortSignal?: AbortSignal): Promise<WsWorkunits.WUDetailsMetaResponse> {\n        return this._connection.send(\"WUDetailsMeta\", request, \"json\", false, abortSignal, \"WUDetailsMetaResponse\");\n    }\n\n    WUEclDefinitionAction(request: WsWorkunits.WUEclDefinitionAction, abortSignal?: AbortSignal): Promise<WsWorkunits.WUEclDefinitionActionResponse> {\n        return this._connection.send(\"WUEclDefinitionAction\", request, \"json\", false, abortSignal, \"WUEclDefinitionActionResponse\");\n    }\n\n    WUExport(request: WsWorkunits.WUExport, abortSignal?: AbortSignal): Promise<WsWorkunits.WUExportResponse> {\n        return this._connection.send(\"WUExport\", request, \"json\", false, abortSignal, \"WUExportResponse\");\n    }\n\n    WUFile(request: WsWorkunits.WUFile, abortSignal?: AbortSignal): Promise<WsWorkunits.WULogFileResponse> {\n        return this._connection.send(\"WUFile\", request, \"json\", false, abortSignal, \"WULogFileResponse\");\n    }\n\n    WUFullResult(request: WsWorkunits.WUFullResult, abortSignal?: AbortSignal): Promise<WsWorkunits.WUFullResultResponse> {\n        return this._connection.send(\"WUFullResult\", request, \"json\", false, abortSignal, \"WUFullResultResponse\");\n    }\n\n    WUGVCGraphInfo(request: WsWorkunits.WUGVCGraphInfo, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGVCGraphInfoResponse> {\n        return this._connection.send(\"WUGVCGraphInfo\", request, \"json\", false, abortSignal, \"WUGVCGraphInfoResponse\");\n    }\n\n    WUGetArchiveFile(request: WsWorkunits.WUGetArchiveFile, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetArchiveFileResponse> {\n        return this._connection.send(\"WUGetArchiveFile\", request, \"json\", false, abortSignal, \"WUGetArchiveFileResponse\");\n    }\n\n    WUGetDependancyTrees(request: WsWorkunits.WUGetDependancyTrees, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetDependancyTreesResponse> {\n        return this._connection.send(\"WUGetDependancyTrees\", request, \"json\", false, abortSignal, \"WUGetDependancyTreesResponse\");\n    }\n\n    WUGetGraph(request: WsWorkunits.WUGetGraph, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetGraphResponse> {\n        return this._connection.send(\"WUGetGraph\", request, \"json\", false, abortSignal, \"WUGetGraphResponse\");\n    }\n\n    WUGetGraphNameAndTypes(request: WsWorkunits.WUGetGraphNameAndTypes, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetGraphNameAndTypesResponse> {\n        return this._connection.send(\"WUGetGraphNameAndTypes\", request, \"json\", false, abortSignal, \"WUGetGraphNameAndTypesResponse\");\n    }\n\n    WUGetNumFileToCopy(request: WsWorkunits.WUGetNumFileToCopy, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetNumFileToCopyResponse> {\n        return this._connection.send(\"WUGetNumFileToCopy\", request, \"json\", false, abortSignal, \"WUGetNumFileToCopyResponse\");\n    }\n\n    WUGetPlugins(request: WsWorkunits.WUGetPlugins, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetPluginsResponse> {\n        return this._connection.send(\"WUGetPlugins\", request, \"json\", false, abortSignal, \"WUGetPluginsResponse\");\n    }\n\n    WUGetStats(request: WsWorkunits.WUGetStats, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetStatsResponse> {\n        return this._connection.send(\"WUGetStats\", request, \"json\", false, abortSignal, \"WUGetStatsResponse\");\n    }\n\n    WUGetThorJobList(request: WsWorkunits.WUGetThorJobList, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetThorJobListResponse> {\n        return this._connection.send(\"WUGetThorJobList\", request, \"json\", false, abortSignal, \"WUGetThorJobListResponse\");\n    }\n\n    WUGetThorJobQueue(request: WsWorkunits.WUGetThorJobQueue, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetThorJobQueueResponse> {\n        return this._connection.send(\"WUGetThorJobQueue\", request, \"json\", false, abortSignal, \"WUGetThorJobQueueResponse\");\n    }\n\n    WUGetZAPInfo(request: WsWorkunits.WUGetZAPInfo, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGetZAPInfoResponse> {\n        return this._connection.send(\"WUGetZAPInfo\", request, \"json\", false, abortSignal, \"WUGetZAPInfoResponse\");\n    }\n\n    WUGraphInfo(request: WsWorkunits.WUGraphInfo, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGraphInfoResponse> {\n        return this._connection.send(\"WUGraphInfo\", request, \"json\", false, abortSignal, \"WUGraphInfoResponse\");\n    }\n\n    WUGraphTiming(request: WsWorkunits.WUGraphTiming, abortSignal?: AbortSignal): Promise<WsWorkunits.WUGraphTimingResponse> {\n        return this._connection.send(\"WUGraphTiming\", request, \"json\", false, abortSignal, \"WUGraphTimingResponse\");\n    }\n\n    WUInfo(request: WsWorkunits.WUInfo, abortSignal?: AbortSignal): Promise<WsWorkunits.WUInfoResponse> {\n        return this._connection.send(\"WUInfo\", request, \"json\", false, abortSignal, \"WUInfoResponse\");\n    }\n\n    WUInfoDetails(request: WsWorkunits.WUInfoDetails, abortSignal?: AbortSignal): Promise<WsWorkunits.WUInfoResponse> {\n        return this._connection.send(\"WUInfoDetails\", request, \"json\", false, abortSignal, \"WUInfoResponse\");\n    }\n\n    WUJobList(request: WsWorkunits.WUJobList, abortSignal?: AbortSignal): Promise<WsWorkunits.WUJobListResponse> {\n        return this._connection.send(\"WUJobList\", request, \"json\", false, abortSignal, \"WUJobListResponse\");\n    }\n\n    WULightWeightQuery(request: WsWorkunits.WULightWeightQuery, abortSignal?: AbortSignal): Promise<WsWorkunits.WULightWeightQueryResponse> {\n        return this._connection.send(\"WULightWeightQuery\", request, \"json\", false, abortSignal, \"WULightWeightQueryResponse\");\n    }\n\n    WUListArchiveFiles(request: WsWorkunits.WUListArchiveFiles, abortSignal?: AbortSignal): Promise<WsWorkunits.WUListArchiveFilesResponse> {\n        return this._connection.send(\"WUListArchiveFiles\", request, \"json\", false, abortSignal, \"WUListArchiveFilesResponse\");\n    }\n\n    WUListLocalFileRequired(request: WsWorkunits.WUListLocalFileRequired, abortSignal?: AbortSignal): Promise<WsWorkunits.WUListLocalFileRequiredResponse> {\n        return this._connection.send(\"WUListLocalFileRequired\", request, \"json\", false, abortSignal, \"WUListLocalFileRequiredResponse\");\n    }\n\n    WUListQueries(request: WsWorkunits.WUListQueries, abortSignal?: AbortSignal): Promise<WsWorkunits.WUListQueriesResponse> {\n        return this._connection.send(\"WUListQueries\", request, \"json\", false, abortSignal, \"WUListQueriesResponse\");\n    }\n\n    WUListQueriesUsingFile(request: WsWorkunits.WUListQueriesUsingFile, abortSignal?: AbortSignal): Promise<WsWorkunits.WUListQueriesUsingFileResponse> {\n        return this._connection.send(\"WUListQueriesUsingFile\", request, \"json\", false, abortSignal, \"WUListQueriesUsingFileResponse\");\n    }\n\n    WUMultiQuerysetDetails(request: WsWorkunits.WUMultiQuerysetDetails, abortSignal?: AbortSignal): Promise<WsWorkunits.WUMultiQuerySetDetailsResponse> {\n        return this._connection.send(\"WUMultiQuerysetDetails\", request, \"json\", false, abortSignal, \"WUMultiQuerySetDetailsResponse\");\n    }\n\n    WUProcessGraph(request: WsWorkunits.WUProcessGraph, abortSignal?: AbortSignal): Promise<WsWorkunits.WUProcessGraphResponse> {\n        return this._connection.send(\"WUProcessGraph\", request, \"json\", false, abortSignal, \"WUProcessGraphResponse\");\n    }\n\n    WUProtect(request: WsWorkunits.WUProtect, abortSignal?: AbortSignal): Promise<WsWorkunits.WUProtectResponse> {\n        return this._connection.send(\"WUProtect\", request, \"json\", false, abortSignal, \"WUProtectResponse\");\n    }\n\n    WUPublishWorkunit(request: WsWorkunits.WUPublishWorkunit, abortSignal?: AbortSignal): Promise<WsWorkunits.WUPublishWorkunitResponse> {\n        return this._connection.send(\"WUPublishWorkunit\", request, \"json\", false, abortSignal, \"WUPublishWorkunitResponse\");\n    }\n\n    WUPushEvent(request: WsWorkunits.WUPushEvent, abortSignal?: AbortSignal): Promise<WsWorkunits.WUPushEventResponse> {\n        return this._connection.send(\"WUPushEvent\", request, \"json\", false, abortSignal, \"WUPushEventResponse\");\n    }\n\n    WUQuery(request: WsWorkunits.WUQuery, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryResponse> {\n        return this._connection.send(\"WUQuery\", request, \"json\", false, abortSignal, \"WUQueryResponse\");\n    }\n\n    WUQueryConfig(request: WsWorkunits.WUQueryConfig, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryConfigResponse> {\n        return this._connection.send(\"WUQueryConfig\", request, \"json\", false, abortSignal, \"WUQueryConfigResponse\");\n    }\n\n    WUQueryDetails(request: WsWorkunits.WUQueryDetails, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryDetailsResponse> {\n        return this._connection.send(\"WUQueryDetails\", request, \"json\", false, abortSignal, \"WUQueryDetailsResponse\");\n    }\n\n    WUQueryDetailsLightWeight(request: WsWorkunits.WUQueryDetailsLightWeight, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryDetailsResponse> {\n        return this._connection.send(\"WUQueryDetailsLightWeight\", request, \"json\", false, abortSignal, \"WUQueryDetailsResponse\");\n    }\n\n    WUQueryFiles(request: WsWorkunits.WUQueryFiles, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryFilesResponse> {\n        return this._connection.send(\"WUQueryFiles\", request, \"json\", false, abortSignal, \"WUQueryFilesResponse\");\n    }\n\n    WUQueryGetGraph(request: WsWorkunits.WUQueryGetGraph, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryGetGraphResponse> {\n        return this._connection.send(\"WUQueryGetGraph\", request, \"json\", false, abortSignal, \"WUQueryGetGraphResponse\");\n    }\n\n    WUQueryGetSummaryStats(request: WsWorkunits.WUQueryGetSummaryStats, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryGetSummaryStatsResponse> {\n        return this._connection.send(\"WUQueryGetSummaryStats\", request, \"json\", false, abortSignal, \"WUQueryGetSummaryStatsResponse\");\n    }\n\n    WUQuerysetAliasAction(request: WsWorkunits.WUQuerysetAliasAction, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerySetAliasActionResponse> {\n        return this._connection.send(\"WUQuerysetAliasAction\", request, \"json\", false, abortSignal, \"WUQuerySetAliasActionResponse\");\n    }\n\n    WUQuerysetCopyQuery(request: WsWorkunits.WUQuerysetCopyQuery, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerySetCopyQueryResponse> {\n        return this._connection.send(\"WUQuerysetCopyQuery\", request, \"json\", false, abortSignal, \"WUQuerySetCopyQueryResponse\");\n    }\n\n    WUQuerysetDetails(request: WsWorkunits.WUQuerysetDetails, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerySetDetailsResponse> {\n        return this._connection.send(\"WUQuerysetDetails\", request, \"json\", false, abortSignal, \"WUQuerySetDetailsResponse\");\n    }\n\n    WUQuerysetExport(request: WsWorkunits.WUQuerysetExport, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerysetExportResponse> {\n        return this._connection.send(\"WUQuerysetExport\", request, \"json\", false, abortSignal, \"WUQuerysetExportResponse\");\n    }\n\n    WUQuerysetImport(request: WsWorkunits.WUQuerysetImport, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerysetImportResponse> {\n        return this._connection.send(\"WUQuerysetImport\", request, \"json\", false, abortSignal, \"WUQuerysetImportResponse\");\n    }\n\n    WUQuerysetQueryAction(request: WsWorkunits.WUQuerysetQueryAction, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerySetQueryActionResponse> {\n        return this._connection.send(\"WUQuerysetQueryAction\", request, \"json\", false, abortSignal, \"WUQuerySetQueryActionResponse\");\n    }\n\n    WUQuerysets(request: WsWorkunits.WUQuerysets, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQuerysetsResponse> {\n        return this._connection.send(\"WUQuerysets\", request, \"json\", false, abortSignal, \"WUQuerysetsResponse\");\n    }\n\n    WURecreateQuery(request: WsWorkunits.WURecreateQuery, abortSignal?: AbortSignal): Promise<WsWorkunits.WURecreateQueryResponse> {\n        return this._connection.send(\"WURecreateQuery\", request, \"json\", false, abortSignal, \"WURecreateQueryResponse\");\n    }\n\n    WUResubmit(request: WsWorkunits.WUResubmit, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResubmitResponse> {\n        return this._connection.send(\"WUResubmit\", request, \"json\", false, abortSignal, \"WUResubmitResponse\");\n    }\n\n    WUResult(request: WsWorkunits.WUResult, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultResponse> {\n        return this._connection.send(\"WUResult\", request, \"json\", false, abortSignal, \"WUResultResponse\");\n    }\n\n    WUResultBin(request: WsWorkunits.WUResultBin, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultBinResponse> {\n        return this._connection.send(\"WUResultBin\", request, \"json\", false, abortSignal, \"WUResultBinResponse\");\n    }\n\n    WUResultSummary(request: WsWorkunits.WUResultSummary, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultSummaryResponse> {\n        return this._connection.send(\"WUResultSummary\", request, \"json\", false, abortSignal, \"WUResultSummaryResponse\");\n    }\n\n    WUResultView(request: WsWorkunits.WUResultView, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultViewResponse> {\n        return this._connection.send(\"WUResultView\", request, \"json\", false, abortSignal, \"WUResultViewResponse\");\n    }\n\n    WURun(request: WsWorkunits.WURun, abortSignal?: AbortSignal): Promise<WsWorkunits.WURunResponse> {\n        return this._connection.send(\"WURun\", request, \"json\", false, abortSignal, \"WURunResponse\");\n    }\n\n    WUSchedule(request: WsWorkunits.WUSchedule, abortSignal?: AbortSignal): Promise<WsWorkunits.WUScheduleResponse> {\n        return this._connection.send(\"WUSchedule\", request, \"json\", false, abortSignal, \"WUScheduleResponse\");\n    }\n\n    WUShowScheduled(request: WsWorkunits.WUShowScheduled, abortSignal?: AbortSignal): Promise<WsWorkunits.WUShowScheduledResponse> {\n        return this._connection.send(\"WUShowScheduled\", request, \"json\", false, abortSignal, \"WUShowScheduledResponse\");\n    }\n\n    WUSubmit(request: WsWorkunits.WUSubmit, abortSignal?: AbortSignal): Promise<WsWorkunits.WUSubmitResponse> {\n        return this._connection.send(\"WUSubmit\", request, \"json\", false, abortSignal, \"WUSubmitResponse\");\n    }\n\n    WUSyntaxCheckECL(request: WsWorkunits.WUSyntaxCheckECL, abortSignal?: AbortSignal): Promise<WsWorkunits.WUSyntaxCheckResponse> {\n        return this._connection.send(\"WUSyntaxCheckECL\", request, \"json\", false, abortSignal, \"WUSyntaxCheckResponse\");\n    }\n\n    WUUpdate(request: WsWorkunits.WUUpdate, abortSignal?: AbortSignal): Promise<WsWorkunits.WUUpdateResponse> {\n        return this._connection.send(\"WUUpdate\", request, \"json\", false, abortSignal, \"WUUpdateResponse\");\n    }\n\n    WUUpdateQueryEntry(request: WsWorkunits.WUUpdateQueryEntry, abortSignal?: AbortSignal): Promise<WsWorkunits.WUUpdateQueryEntryResponse> {\n        return this._connection.send(\"WUUpdateQueryEntry\", request, \"json\", false, abortSignal, \"WUUpdateQueryEntryResponse\");\n    }\n\n    WUWaitCompiled(request: WsWorkunits.WUWaitCompiled, abortSignal?: AbortSignal): Promise<WsWorkunits.WUWaitResponse> {\n        return this._connection.send(\"WUWaitCompiled\", request, \"json\", false, abortSignal, \"WUWaitResponse\");\n    }\n\n    WUWaitComplete(request: WsWorkunits.WUWaitComplete, abortSignal?: AbortSignal): Promise<WsWorkunits.WUWaitResponse> {\n        return this._connection.send(\"WUWaitComplete\", request, \"json\", false, abortSignal, \"WUWaitResponse\");\n    }\n\n}\n", "import { debounce, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WsSMC, SMCService } from \"../services/wsSMC.ts\";\nimport { Workunit } from \"./workunit.ts\";\n\nlet _activity: Activity;\n\nexport interface ActivityEx {\n}\n\nexport type UActivityState = WsSMC.ActivityResponse & ActivityEx;\nexport type IActivityState = WsSMC.ActivityResponse | ActivityEx;\nexport class Activity extends StateObject<UActivityState, IActivityState> implements UActivityState {\n    protected connection: SMCService;\n\n    get properties(): UActivityState { return this.get(); }\n    get Exceptions(): WsSMC.Exceptions { return this.get(\"Exceptions\"); }\n    get Build(): string { return this.get(\"Build\"); }\n    get ThorClusterList(): WsSMC.ThorClusterList { return this.get(\"ThorClusterList\"); }\n    get RoxieClusterList(): WsSMC.RoxieClusterList { return this.get(\"RoxieClusterList\"); }\n    get HThorClusterList(): WsSMC.HThorClusterList { return this.get(\"HThorClusterList\"); }\n    get DFUJobs(): WsSMC.DFUJobs { return this.get(\"DFUJobs\"); }\n    get Running(): WsSMC.Running { return this.get(\"Running\", { ActiveWorkunit: [] }); }\n    get BannerContent(): string { return this.get(\"BannerContent\"); }\n    get BannerColor(): string { return this.get(\"BannerColor\"); }\n    get BannerSize(): string { return this.get(\"BannerSize\"); }\n    get BannerScroll(): string { return this.get(\"BannerScroll\"); }\n    get ChatURL(): string { return this.get(\"ChatURL\"); }\n    get ShowBanner(): number { return this.get(\"ShowBanner\"); }\n    get ShowChatURL(): number { return this.get(\"ShowChatURL\"); }\n    get SortBy(): string { return this.get(\"SortBy\"); }\n    get Descending(): boolean { return this.get(\"Descending\"); }\n    get SuperUser(): boolean { return this.get(\"SuperUser\"); }\n    get AccessRight(): string { return this.get(\"AccessRight\"); }\n    get ServerJobQueues(): WsSMC.ServerJobQueues { return this.get(\"ServerJobQueues\"); }\n    get ActivityTime(): string { return this.get(\"ActivityTime\"); }\n    get DaliDetached(): boolean { return this.get(\"DaliDetached\"); }\n\n    static attach(optsConnection: IOptions | IConnection | SMCService, state?: IActivityState): Activity {\n        if (!_activity) {\n            _activity = new Activity(optsConnection);\n        }\n        if (state) {\n            _activity.set(state);\n        }\n        return _activity;\n    }\n\n    protected constructor(optsConnection: IOptions | IConnection | SMCService) {\n        super();\n        if (optsConnection instanceof SMCService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new SMCService(optsConnection);\n        }\n        this.clear({\n        });\n    }\n\n    runningWorkunits(clusterName: string = \"\"): Workunit[] {\n        return this.Running.ActiveWorkunit.filter(awu => clusterName === \"\" || awu.ClusterName === clusterName).map(awu => Workunit.attach(this.connection.connectionOptions(), awu.Wuid, awu));\n    }\n\n    setBanner(request: Partial<WsSMC.SetBanner>): Promise<Activity> {\n        return this.connection.SetBanner({\n            ...request\n        } as WsSMC.SetBanner).then((response) => {\n            this.set(response);\n            return this;\n        });\n    }\n\n    lazyRefresh = debounce(async (): Promise<this> => {\n        const response = await this.connection.Activity({} as WsSMC.Activity);\n        this.set(response);\n        return this;\n    });\n\n    async refresh(): Promise<this> {\n        return this.lazyRefresh();\n    }\n}\n", "import { Cache, deepMixinT, IEvent, RecursivePartial, scopedLogger, StateCallback, StateEvents, StateObject, StatePropCallback, StringAnyMap, XMLNode } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { utcFormat, utcParse } from \"d3-time-format\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { ESPExceptions } from \"../espConnection.ts\";\nimport { WsSMC } from \"../services/wsSMC.ts\";\nimport * as WsTopology from \"../services/wsTopology.ts\";\nimport { WsWorkunits, WUStateID, WorkunitsService, WorkunitsServiceEx, WUUpdate } from \"../services/wsWorkunits.ts\";\nimport { createGraph, createXGMMLGraph, ECLGraph, GraphCache, ScopeGraph, XGMMLGraph, XGMMLVertex } from \"./graph.ts\";\nimport { Resource } from \"./resource.ts\";\nimport { Result, ResultCache } from \"./result.ts\";\nimport { BaseScope, Scope } from \"./scope.ts\";\nimport { SourceFile } from \"./sourceFile.ts\";\nimport { Timer } from \"./timer.ts\";\n\nconst formatter = utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");\nconst parser = utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");\nconst d3FormatNum = d3Format(\",\");\nfunction formatNum(num: number | string): string {\n    if (num && !isNaN(+num)) {\n        return d3FormatNum(+num);\n    }\n    return num as string;\n}\n\nfunction safeDelete(obj: { [id: string]: any; }, key: string, prop: string) {\n    if (obj[key] === undefined || obj[key][prop] === undefined) return;\n    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") return;\n    delete obj[key][prop];\n}\n\nconst DEFINITION_LIST = \"DefinitionList\";\nconst definitionRegex = /([a-zA-Z]:)?(.*[\\\\\\/])(.*)(\\((\\d+),(\\d+)\\))/;\n\nexport const PropertyType = [\"Avg\", \"Min\", \"Max\", \"Delta\", \"StdDev\"];\nexport const RelatedProperty = [\"SkewMin\", \"SkewMax\", \"NodeMin\", \"NodeMax\"];\n\nexport interface IPropertyValue {\n    Key: string;\n    Value?: string;\n\n    //  Extended properties  ---\n    Avg?: string;\n    Min?: string;\n    Max?: string;\n    Delta?: string;\n    StdDev?: string;\n    StdDevs?: number;\n\n    // Related properties  ---\n    SkewMin?: string;\n    SkewMax?: string;\n    NodeMin?: string;\n    NodeMax?: string;\n}\n\nexport interface IScope {\n    __parentName?: string;\n    __children?: IScope[];\n    __formattedProps: { [key: string]: any };\n    __groupedProps: { [key: string]: IPropertyValue };\n    __StdDevs: number,\n    __StdDevsSource: string,\n    id: string;\n    name: string;\n    type: string;\n    Kind: string;\n    Label: string;\n    [key: string]: any;\n}\n\nexport interface ISplitMetric {\n    measure: string;\n    ext: string;\n    label: string;\n}\n\nconst metricKeyRegex = /[A-Z][a-z]*/g;\nfunction _splitMetric(fullLabel: string): ISplitMetric {\n\n    // Related properties  ---\n    for (const relProp of RelatedProperty) {\n        const index = fullLabel.indexOf(relProp);\n        if (index === 0) {\n            const measure = \"\";\n            const label = fullLabel.slice(index + relProp.length);\n            return { measure, ext: relProp, label };\n        }\n    }\n\n    // Primary properties  ---\n    const labelParts = fullLabel.match(metricKeyRegex);\n    if (labelParts?.length) {\n        const measure = labelParts.shift();\n        let label = labelParts.join(\"\");\n        for (const ext of PropertyType) {\n            const index = label.indexOf(ext);\n            if (index === 0) {\n                label = label.slice(index + ext.length);\n                return { measure, ext, label };\n            }\n        }\n        // Not an aggregate property  ---\n        return { measure, ext: \"\", label };\n    }\n\n    // No match found  ---\n    return { measure: \"\", ext: \"\", label: fullLabel };\n}\n\nconst splitLabelCache: { [key: string]: ISplitMetric } = {};\nexport function splitMetric(key: string): ISplitMetric {\n    let retVal = splitLabelCache[key];\n    if (!retVal) {\n        retVal = _splitMetric(key);\n        splitLabelCache[key] = retVal;\n    }\n    return retVal;\n}\n\nfunction formatValue(item: IScope, key: string): string | undefined {\n    return item.__formattedProps?.[key] ?? item[key];\n}\n\ntype DedupProperties = { [key: string]: boolean };\n\nfunction safeParseFloat(val: string | undefined): number | undefined {\n    if (val === undefined) return undefined;\n    const retVal = parseFloat(val);\n    return isNaN(retVal) ? undefined : retVal;\n}\n\nfunction formatValues(item: IScope, key: string, dedup: DedupProperties): IPropertyValue | null {\n    const keyParts = splitMetric(key);\n    if (!dedup[keyParts.measure]) {\n        dedup[keyParts.label] = true;\n        const avg = safeParseFloat(item[`${keyParts.measure}Avg${keyParts.label}`]);\n        const min = safeParseFloat(item[`${keyParts.measure}Min${keyParts.label}`]);\n        const max = safeParseFloat(item[`${keyParts.measure}Max${keyParts.label}`]);\n        const stdDev = safeParseFloat(item[`${keyParts.measure}StdDev${keyParts.label}`]);\n        const StdDevs = Math.max((avg - min) / stdDev, (max - avg) / stdDev);\n\n        return {\n            Key: `${keyParts.measure}${keyParts.label}`,\n            Value: formatValue(item, `${keyParts.measure}${keyParts.label}`),\n\n            //  Extended properties  ---\n            Avg: formatValue(item, `${keyParts.measure}Avg${keyParts.label}`),\n            Min: formatValue(item, `${keyParts.measure}Min${keyParts.label}`),\n            Max: formatValue(item, `${keyParts.measure}Max${keyParts.label}`),\n            Delta: formatValue(item, `${keyParts.measure}Delta${keyParts.label}`),\n            StdDev: formatValue(item, `${keyParts.measure}StdDev${keyParts.label}`),\n            StdDevs: isNaN(StdDevs) ? undefined : StdDevs,\n\n            // Related properties  ---\n            SkewMin: formatValue(item, `SkewMin${keyParts.label}`),\n            SkewMax: formatValue(item, `SkewMax${keyParts.label}`),\n            NodeMin: formatValue(item, `NodeMin${keyParts.label}`),\n            NodeMax: formatValue(item, `NodeMax${keyParts.label}`)\n        };\n    }\n    return null;\n}\n\nconst logger = scopedLogger(\"workunit.ts\");\n\nexport class WorkunitCache extends Cache<{ BaseUrl: string, Wuid: string }, Workunit> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.Wuid}`;\n        });\n    }\n}\nconst _workunits = new WorkunitCache();\n\nexport interface DebugState {\n    sequence: number;\n    state: string;\n    [key: string]: any;\n}\n\nexport interface IWorkunit {\n    ResultViews: WsWorkunits.ResultViews;\n    HelpersCount: number;\n}\n\nexport interface IDebugWorkunit {\n    DebugState?: DebugState;\n}\n\nexport interface ITimeElapsed {\n    scope: string;\n    start: string;\n    elapsed: number;\n    finish: string;\n}\n\nexport type WorkunitEvents = \"completed\" | StateEvents;\nexport type UWorkunitState = WsWorkunits.ECLWorkunit & WsWorkunits.Workunit & WsSMC.ActiveWorkunit & IWorkunit & IDebugWorkunit;\nexport type IWorkunitState = WsWorkunits.ECLWorkunit | WsWorkunits.Workunit | WsSMC.ActiveWorkunit | IWorkunit | IDebugWorkunit;\nexport class Workunit extends StateObject<UWorkunitState, IWorkunitState> implements WsWorkunits.Workunit {\n    connection: WorkunitsService;\n    topologyConnection: WsTopology.TopologyService;\n    get BaseUrl() { return this.connection.baseUrl; }\n\n    private _debugMode: boolean = false;\n    private _debugAllGraph: any;\n    private _submitAction: WUUpdate.Action;\n\n    //  Accessors  ---\n    get properties(): WsWorkunits.ECLWorkunit & WsWorkunits.Workunit { return this.get(); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get Owner(): string { return this.get(\"Owner\", \"\"); }\n    get Cluster(): string { return this.get(\"Cluster\", \"\"); }\n    get Jobname(): string { return this.get(\"Jobname\", \"\"); }\n    get Description(): string { return this.get(\"Description\", \"\"); }\n    get ActionEx(): string { return this.get(\"ActionEx\", \"\"); }\n    get StateID(): WUStateID { return this.get(\"StateID\", WUStateID.Unknown); }\n    get State(): string { return this.get(\"State\") || WUStateID[this.StateID]; }\n    get Protected(): boolean { return this.get(\"Protected\", false); }\n    get Exceptions(): WsWorkunits.Exceptions2 { return this.get(\"Exceptions\", { ECLException: [] }); }\n    get ResultViews(): WsWorkunits.ResultViews { return this.get(\"ResultViews\", { View: [] }); }\n\n    private _resultCache = new ResultCache();\n    get ResultCount(): number { return this.get(\"ResultCount\", 0); }\n    get Results(): WsWorkunits.Results { return this.get(\"Results\", { ECLResult: [] }); }\n    get CResults(): Result[] {\n        return this.Results.ECLResult.map((eclResult) => {\n            return this._resultCache.get(eclResult, () => {\n                return Result.attach(this.connection, this.Wuid, eclResult, this.ResultViews.View);\n            });\n        });\n    }\n    get SequenceResults(): { [key: number]: Result } {\n        const retVal: { [key: number]: Result } = {};\n        this.CResults.forEach((result) => {\n            retVal[result.Sequence] = result;\n        });\n        return retVal;\n    }\n    get Timers(): WsWorkunits.Timers { return this.get(\"Timers\", { ECLTimer: [] }); }\n    get CTimers(): Timer[] {\n        return this.Timers.ECLTimer.map((eclTimer) => {\n            return new Timer(this.connection, this.Wuid, eclTimer);\n        });\n    }\n\n    private _graphCache = new GraphCache();\n    get GraphCount(): number { return this.get(\"GraphCount\", 0); }\n    get Graphs(): WsWorkunits.Graphs { return this.get(\"Graphs\", { ECLGraph: [] }); }\n    get CGraphs(): ECLGraph[] {\n        return this.Graphs.ECLGraph.map((eclGraph) => {\n            return this._graphCache.get(eclGraph, () => {\n                return new ECLGraph(this, eclGraph, this.CTimers);\n            });\n        });\n    }\n    get ThorLogList(): WsWorkunits.ThorLogList { return this.get(\"ThorLogList\"); }\n    get ResourceURLCount(): number { return this.get(\"ResourceURLCount\", 0); }\n    get ResourceURLs(): WsWorkunits.ResourceURLs { return this.get(\"ResourceURLs\", { URL: [] }); }\n    get CResourceURLs(): Resource[] {\n        return this.ResourceURLs.URL.map((url) => {\n            return new Resource(this, url);\n        });\n    }\n    get TotalClusterTime(): string { return this.get(\"TotalClusterTime\", \"\"); }\n    get DateTimeScheduled(): string { return this.get(\"DateTimeScheduled\"); }\n    get IsPausing(): boolean { return this.get(\"IsPausing\"); }\n    get ThorLCR(): boolean { return this.get(\"ThorLCR\"); }\n    get ApplicationValues(): WsWorkunits.ApplicationValues { return this.get(\"ApplicationValues\", { ApplicationValue: [] }); }\n    get HasArchiveQuery(): boolean { return this.get(\"HasArchiveQuery\"); }\n    get StateEx(): string { return this.get(\"StateEx\"); }\n    get PriorityClass(): number { return this.get(\"PriorityClass\"); }\n    get PriorityLevel(): number { return this.get(\"PriorityLevel\"); }\n    get Snapshot(): string { return this.get(\"Snapshot\"); }\n    get ResultLimit(): number { return this.get(\"ResultLimit\"); }\n    get EventSchedule(): number { return this.get(\"EventSchedule\"); }\n    get Query(): WsWorkunits.Query { return this.get(\"Query\"); }\n    get HelpersCount(): number { return this.get(\"HelpersCount\", 0); }\n    get Helpers(): WsWorkunits.Helpers { return this.get(\"Helpers\", { ECLHelpFile: [] }); }\n    get DebugValues(): WsWorkunits.DebugValues { return this.get(\"DebugValues\"); }\n    get AllowedClusters(): WsWorkunits.AllowedClusters { return this.get(\"AllowedClusters\"); }\n    get ErrorCount(): number { return this.get(\"ErrorCount\", 0); }\n    get WarningCount(): number { return this.get(\"WarningCount\", 0); }\n    get InfoCount(): number { return this.get(\"InfoCount\", 0); }\n    get AlertCount(): number { return this.get(\"AlertCount\", 0); }\n    get SourceFileCount(): number { return this.get(\"SourceFileCount\", 0); }\n    get SourceFiles(): WsWorkunits.SourceFiles { return this.get(\"SourceFiles\", { ECLSourceFile: [] }); }\n    get CSourceFiles(): SourceFile[] {\n        return this.SourceFiles.ECLSourceFile.map(eclSourceFile => new SourceFile(this.connection, this.Wuid, eclSourceFile));\n    }\n    get VariableCount(): number { return this.get(\"VariableCount\", 0); }\n    get Variables(): WsWorkunits.Variables { return this.get(\"Variables\", { ECLResult: [] }); }\n    get TimerCount(): number { return this.get(\"TimerCount\", 0); }\n    get HasDebugValue(): boolean { return this.get(\"HasDebugValue\"); }\n    get ApplicationValueCount(): number { return this.get(\"ApplicationValueCount\", 0); }\n    get XmlParams(): string { return this.get(\"XmlParams\"); }\n    get AccessFlag(): number { return this.get(\"AccessFlag\"); }\n    get ClusterFlag(): number { return this.get(\"ClusterFlag\"); }\n    get ResultViewCount(): number { return this.get(\"ResultViewCount\", 0); }\n    get DebugValueCount(): number { return this.get(\"DebugValueCount\", 0); }\n    get WorkflowCount(): number { return this.get(\"WorkflowCount\", 0); }\n    get Archived(): boolean { return this.get(\"Archived\"); }\n    get RoxieCluster(): string { return this.get(\"RoxieCluster\"); }\n    get DebugState(): DebugState { return this.get(\"DebugState\", {} as DebugState)!; }\n    get Queue(): string { return this.get(\"Queue\"); }\n    get Active(): boolean { return this.get(\"Active\"); }\n    get Action(): number { return this.get(\"Action\"); }\n    get Scope(): string { return this.get(\"Scope\"); }\n    get AbortBy(): string { return this.get(\"AbortBy\"); }\n    get AbortTime(): string { return this.get(\"AbortTime\"); }\n    get Workflows(): WsWorkunits.Workflows { return this.get(\"Workflows\"); }\n    get TimingData(): WsWorkunits.TimingData { return this.get(\"TimingData\"); }\n    get HelpersDesc(): string { return this.get(\"HelpersDesc\"); }\n    get GraphsDesc(): string { return this.get(\"GraphsDesc\"); }\n    get SourceFilesDesc(): string { return this.get(\"SourceFilesDesc\"); }\n    get ResultsDesc(): string { return this.get(\"ResultsDesc\"); }\n    get VariablesDesc(): string { return this.get(\"VariablesDesc\"); }\n    get TimersDesc(): string { return this.get(\"TimersDesc\"); }\n    get DebugValuesDesc(): string { return this.get(\"DebugValuesDesc\"); }\n    get ApplicationValuesDesc(): string { return this.get(\"ApplicationValuesDesc\"); }\n    get WorkflowsDesc(): string { return this.get(\"WorkflowsDesc\"); }\n    get ServiceNames(): WsWorkunits.ServiceNames { return this.get(\"ServiceNames\"); }\n    get CompileCost(): number { return this.get(\"CompileCost\"); }\n    get ExecuteCost(): number { return this.get(\"ExecuteCost\"); }\n    get FileAccessCost(): number { return this.get(\"FileAccessCost\"); }\n    get NoAccess(): boolean { return this.get(\"NoAccess\"); }\n    get ECLWUProcessList(): WsWorkunits.ECLWUProcessList { return this.get(\"ECLWUProcessList\"); }\n    get CostSavingPotential(): number { return this.get(\"CostSavingPotential\"); }\n    get FailureDesc(): string { return this.get(\"FailureDesc\"); }\n\n    //  Factories  ---\n    static create(optsConnection: IOptions | IConnection): Promise<Workunit> {\n        const retVal: Workunit = new Workunit(optsConnection);\n        return retVal.connection.WUCreate().then((response) => {\n            _workunits.set(retVal);\n            retVal.set(response.Workunit);\n            return retVal;\n        });\n    }\n\n    static attach(optsConnection: IOptions | IConnection, wuid: string, state?: IWorkunitState): Workunit {\n        const retVal: Workunit = _workunits.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid }, () => {\n            return new Workunit(optsConnection, wuid);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    static existsLocal(baseUrl: string, wuid: string): boolean {\n        return _workunits.has({ BaseUrl: baseUrl, Wuid: wuid });\n    }\n\n    static submit(server: IOptions | IConnection, target: string, ecl: string, compileOnly = false): Promise<Workunit> {\n        return Workunit.create(server).then((wu) => {\n            return wu.update({ QueryText: ecl });\n        }).then((wu) => {\n            return compileOnly ? wu.submit(target, WUUpdate.Action.Compile) : wu.submit(target);\n        });\n    }\n\n    static compile(server: IOptions | IConnection, target: string, ecl: string): Promise<Workunit> {\n        return Workunit.submit(server, target, ecl, true);\n    }\n\n    static query(server: IOptions | IConnection, opts: Partial<WsWorkunits.WUQuery>): Promise<Workunit[]> {\n        const wsWorkunits = new WorkunitsService(server);\n        return wsWorkunits.WUQuery(opts).then((response) => {\n            return response.Workunits.ECLWorkunit.map(function (wu) {\n                return Workunit.attach(server, wu.Wuid, wu);\n            });\n        });\n    }\n\n    //  ---  ---  ---\n    protected constructor(optsConnection: IOptions | IConnection, wuid?: string) {\n        super();\n        this.connection = new WorkunitsService(optsConnection);\n        this.topologyConnection = new WsTopology.TopologyService(optsConnection);\n        this.clearState(wuid);\n    }\n\n    clearState(wuid?: string) {\n        this.clear({\n            Wuid: wuid,\n            StateID: WUStateID.Unknown\n        });\n    }\n\n    update(request: Partial<WsWorkunits.WUUpdate>): Promise<Workunit> {\n        return this.connection.WUUpdate({\n            ...request,\n            ...{\n                Wuid: this.Wuid,\n                StateOrig: this.StateID,\n                JobnameOrig: this.Jobname,\n                DescriptionOrig: this.Description,\n                ProtectedOrig: this.Protected,\n                ClusterOrig: this.Cluster\n            }\n        }).then((response) => {\n            this.set(response.Workunit);\n            return this;\n        });\n    }\n\n    submit(_cluster?: string, action: WUUpdate.Action = WUUpdate.Action.Run, resultLimit?: number): Promise<Workunit> {\n        let clusterPromise;\n        if (_cluster !== void 0) {\n            clusterPromise = Promise.resolve(_cluster);\n        } else {\n            clusterPromise = this.topologyConnection.DefaultTpLogicalClusterQuery().then((response) => {\n                return response.Name;\n            });\n        }\n\n        this._debugMode = false;\n        if (action === WUUpdate.Action.Debug) {\n            action = WUUpdate.Action.Run;\n            this._debugMode = true;\n        }\n\n        return clusterPromise.then((cluster) => {\n            return this.connection.WUUpdate({\n                Wuid: this.Wuid,\n                Action: action,\n                ResultLimit: resultLimit,\n                DebugValues: {\n                    DebugValue: [\n                        {\n                            Name: \"Debug\",\n                            Value: this._debugMode ? \"1\" : \"\"\n                        }\n                    ]\n                }\n            }).then((response) => {\n                this.set(response.Workunit);\n                this._submitAction = action;\n                return this.connection.WUSubmit({ Wuid: this.Wuid, Cluster: cluster });\n            });\n        }).then(() => {\n            return this;\n        });\n    }\n\n    isComplete(): boolean {\n        switch (this.StateID) {\n            case WUStateID.Compiled:\n                return this.ActionEx === \"compile\" || this._submitAction === WUUpdate.Action.Compile;\n            case WUStateID.Completed:\n            case WUStateID.Failed:\n            case WUStateID.Aborted:\n            case WUStateID.NotFound:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    isFailed() {\n        switch (this.StateID) {\n            case WUStateID.Aborted:\n            case WUStateID.Failed:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    isDeleted() {\n        switch (this.StateID) {\n            case WUStateID.NotFound:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    isDebugging() {\n        switch (this.StateID) {\n            case WUStateID.DebugPaused:\n            case WUStateID.DebugRunning:\n                return true;\n            default:\n        }\n        return this._debugMode;\n    }\n\n    isRunning(): boolean {\n        switch (this.StateID) {\n            case WUStateID.Compiled:\n            case WUStateID.Running:\n            case WUStateID.Aborting:\n            case WUStateID.Blocked:\n            case WUStateID.DebugPaused:\n            case WUStateID.DebugRunning:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    setToFailed() {\n        return this.WUAction(WsWorkunits.ECLWUActions.SetToFailed);\n    }\n\n    pause() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Pause);\n    }\n\n    pauseNow() {\n        return this.WUAction(WsWorkunits.ECLWUActions.PauseNow);\n    }\n\n    resume() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Resume);\n    }\n\n    abort() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Abort);\n    }\n\n    protect() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Protect);\n    }\n\n    unprotect() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Unprotect);\n    }\n\n    delete() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Delete);\n    }\n\n    restore() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Restore);\n    }\n\n    deschedule() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Deschedule);\n    }\n\n    reschedule() {\n        return this.WUAction(WsWorkunits.ECLWUActions.Reschedule);\n    }\n\n    resubmit(): Promise<Workunit> {\n        return this.WUResubmit({\n            CloneWorkunit: false,\n            ResetWorkflow: false\n        }).then(() => {\n            this.clearState(this.Wuid);\n            return this.refresh().then(() => {\n                this._monitor();\n                return this;\n            });\n        });\n    }\n\n    clone(): Promise<Workunit> {\n        return this.WUResubmit({\n            CloneWorkunit: true,\n            ResetWorkflow: false\n        }).then((response) => {\n            return Workunit.attach(this.connection.opts(), response.WUs.WU[0].WUID)\n                .refresh()\n                ;\n        });\n    }\n\n    async refreshState(): Promise<this> {\n        await this.WUQuery();\n        // Ensure \"isComplete\" is correct for WUs that are only \"Compiled\".\n        if (this.StateID === WUStateID.Compiled && !this.ActionEx && !this._submitAction) {\n            await this.refreshInfo();\n        }\n        return this;\n    }\n\n    async refreshInfo(request?: Partial<WsWorkunits.WUInfo>): Promise<this> {\n        await this.WUInfo(request);\n        return this;\n    }\n\n    async refreshDebug(): Promise<this> {\n        await this.debugStatus();\n        return this;\n    }\n\n    async refresh(full: boolean = false, request?: Partial<WsWorkunits.WUInfo>): Promise<this> {\n        if (full) {\n            await Promise.all([this.refreshInfo(request), this.refreshDebug()]);\n        } else {\n            await this.refreshState();\n        }\n        return this;\n    }\n\n    eclExceptions(): WsWorkunits.ECLException[] {\n        return this.Exceptions.ECLException;\n    }\n\n    fetchArchive(): Promise<string> {\n        return this.connection.WUFileEx({\n            Wuid: this.Wuid,\n            Type: \"ArchiveQuery\"\n        });\n    }\n\n    fetchECLExceptions(): Promise<WsWorkunits.ECLException[]> {\n        return this.WUInfo({ IncludeExceptions: true }).then(() => {\n            return this.eclExceptions();\n        });\n    }\n\n    fetchResults(): Promise<Result[]> {\n        return this.WUInfo({ IncludeResults: true }).then(() => {\n            return this.CResults;\n        });\n    }\n\n    fetchGraphs(): Promise<ECLGraph[]> {\n        return this.WUInfo({ IncludeGraphs: true }).then(() => {\n            return this.CGraphs;\n        });\n    }\n\n    fetchQuery(): Promise<WsWorkunits.Query> {\n        return this.WUInfo({ IncludeECL: true, TruncateEclTo64k: false }).then(() => {\n            return this.Query;\n        });\n    }\n\n    fetchHelpers(): Promise<WsWorkunits.ECLHelpFile[]> {\n        return this.WUInfo({ IncludeHelpers: true }).then(() => {\n            return this.Helpers?.ECLHelpFile || [];\n        });\n    }\n\n    fetchAllowedClusters(): Promise<string[]> {\n        return this.WUInfo({ IncludeAllowedClusters: true }).then(() => {\n            return this.AllowedClusters?.AllowedCluster || [];\n        });\n    }\n\n    fetchTotalClusterTime(): Promise<string> {\n        return this.WUInfo({ IncludeTotalClusterTime: true }).then(() => {\n            return this.TotalClusterTime;\n        });\n    }\n\n    fetchServiceNames(): Promise<string[]> {\n        return this.WUInfo({ IncludeServiceNames: true }).then(() => {\n            return this.ServiceNames?.Item;\n        });\n    }\n\n    fetchDetailsMeta(request: RecursivePartial<WsWorkunits.WUDetailsMeta> = {}): Promise<WsWorkunits.WUDetailsMetaResponse> {\n        return this.WUDetailsMeta(request);\n    }\n\n    fetchDetailsRaw(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<WsWorkunits.Scope[]> {\n        return this.WUDetails(request).then(response => response.Scopes.Scope);\n    }\n\n    normalizeDetails(meta: WsWorkunits.WUDetailsMetaResponse, scopes: WsWorkunits.Scope[]): { meta: WsWorkunits.WUDetailsMetaResponse, columns: { [id: string]: any }, data: IScope[] } {\n        const columns: { [id: string]: any } = {\n            id: {\n                Measure: \"label\"\n            },\n            name: {\n                Measure: \"label\"\n            },\n            type: {\n                Measure: \"label\"\n            }\n        };\n        const activityMap = new Map<number, string>();\n        for (const activity of meta.Activities?.Activity ?? []) {\n            activityMap.set(activity.Kind, activity.Name);\n        }\n        const data: IScope[] = new Array(scopes.length);\n        for (let i = 0; i < scopes.length; i++) {\n            const scope = scopes[i];\n            const props: { [key: string]: any } = {};\n            const formattedProps: { [key: string]: any } = {};\n            if (scope.Properties?.Property) {\n                for (const scopeProperty of scope.Properties.Property) {\n                    const measure = scopeProperty.Measure;\n                    const name = scopeProperty.Name;\n                    const rawValue = scopeProperty.RawValue;\n                    if (measure === \"ns\") {\n                        scopeProperty.Measure = \"s\";\n                    }\n                    if (name === \"Kind\") {\n                        const rawValueInt = parseInt(rawValue, 10);\n                        scopeProperty.Formatted = activityMap.get(rawValueInt) ?? rawValue;\n                    }\n                    columns[name] = {\n                        Name: scopeProperty.Name,\n                        Measure: scopeProperty.Measure,\n                        Creator: scopeProperty.Creator,\n                        CreatorType: scopeProperty.CreatorType\n                    };\n                    switch (scopeProperty.Measure) {\n                        case \"bool\":\n                            props[name] = !!+rawValue;\n                            break;\n                        case \"sz\":\n                            props[name] = +rawValue;\n                            break;\n                        case \"s\":\n                            props[name] = +rawValue / 1000000000;\n                            break;\n                        case \"ns\":\n                            props[name] = +rawValue;\n                            break;\n                        case \"ts\":\n                            props[name] = new Date(+rawValue / 1000).toISOString();\n                            break;\n                        case \"cnt\":\n                            props[name] = +rawValue;\n                            break;\n                        case \"cost\":\n                            props[name] = +rawValue / 1000000;\n                            break;\n                        case \"node\":\n                            props[name] = +rawValue;\n                            break;\n                        case \"skw\":\n                            props[name] = +rawValue;\n                            break;\n                        case \"cpu\":\n                        case \"ppm\":\n                        case \"ip\":\n                        case \"cy\":\n                        case \"en\":\n                        case \"txt\":\n                        case \"id\":\n                        case \"fname\":\n                        default:\n                            props[name] = rawValue;\n                    }\n                    formattedProps[name] = formatNum(scopeProperty.Formatted ?? props[name]);\n                }\n            }\n            const normalizedScope: IScope = {\n                id: scope.Id,\n                name: scope.ScopeName,\n                type: scope.ScopeType,\n                Kind: scope[\"Kind\"],\n                Label: scope[\"Label\"],\n                __formattedProps: formattedProps,\n                __groupedProps: {},\n                __groupedRawProps: {},\n                __StdDevs: 0,\n                __StdDevsSource: \"\",\n                ...props\n            };\n            const definitionList = normalizedScope[DEFINITION_LIST];\n            if (definitionList) {\n                try {\n                    const parsedList = JSON.parse(definitionList.split(\"\\\\\").join(\"\\\\\\\\\"));\n                    const processedDefinitions: Array<{ filePath: string, line: number, col: number }> = [];\n\n                    for (let k = 0; k < parsedList.length; k++) {\n                        const matches = parsedList[k].match(definitionRegex);\n                        if (matches) {\n                            processedDefinitions.push({\n                                filePath: (matches[1] ?? \"\") + matches[2] + matches[3],\n                                line: parseInt(matches[5], 10),\n                                col: parseInt(matches[6], 10)\n                            });\n                        }\n                    }\n                    normalizedScope[DEFINITION_LIST] = processedDefinitions;\n                } catch (e) {\n                    logger.error(`Unexpected \"DefinitionList\": ${definitionList}`);\n                }\n            }\n\n            const dedup: DedupProperties = {};\n            let maxStdDevs = 0;\n            let maxStdDevsSource = \"\";\n            for (const key in normalizedScope) {\n                if (!key.startsWith(\"__\")) {\n                    const row = formatValues(normalizedScope, key, dedup);\n                    if (row) {\n                        normalizedScope.__groupedProps[row.Key] = row;\n                        if (!isNaN(row.StdDevs) && row.StdDevs > maxStdDevs) {\n                            maxStdDevs = row.StdDevs;\n                            maxStdDevsSource = row.Key;\n                        }\n                    }\n                }\n            }\n            normalizedScope.__StdDevs = maxStdDevs;\n            normalizedScope.__StdDevsSource = maxStdDevsSource;\n\n            data[i] = normalizedScope;\n        }\n        return {\n            meta,\n            columns,\n            data\n        };\n    }\n\n    fetchDetailsNormalized(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<{ meta: WsWorkunits.WUDetailsMetaResponse, columns: { [id: string]: any }, data: IScope[] }> {\n        return Promise.all([this.fetchDetailsMeta(), this.fetchDetailsRaw(request)]).then(promises => {\n            return this.normalizeDetails(promises[0], promises[1]);\n        });\n    }\n\n    fetchInfo(request: Partial<WsWorkunits.WUInfo> = {}): Promise<WsWorkunits.WUInfoResponse> {\n        return this.WUInfo(request);\n    }\n\n    fetchDetails(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<Scope[]> {\n        return this.WUDetails(request).then((response) => {\n            return response.Scopes.Scope.map((rawScope) => {\n                return new Scope(this, rawScope);\n            });\n        });\n    }\n\n    fetchDetailsHierarchy(request: Partial<WsWorkunits.WUDetails> = {}): Promise<Scope[]> {\n        return this.WUDetails(request).then((response) => {\n            const retVal: Scope[] = [];\n\n            //  Recreate scope hierarchy and dedup  ---\n            const scopeMap: { [key: string]: Scope } = {};\n            response.Scopes.Scope.forEach((rawScope) => {\n                if (scopeMap[rawScope.ScopeName]) {\n                    scopeMap[rawScope.ScopeName].update(rawScope);\n                    return null;\n                } else {\n                    const scope = new Scope(this, rawScope);\n                    scopeMap[scope.ScopeName] = scope;\n                    return scope;\n                }\n            });\n            for (const key in scopeMap) {\n                if (scopeMap.hasOwnProperty(key)) {\n                    const scope = scopeMap[key];\n                    const parentScopeID = scope.parentScope();\n                    if (parentScopeID && scopeMap[parentScopeID]) {\n                        scopeMap[parentScopeID].children().push(scope);\n                    } else {\n                        retVal.push(scope);\n                    }\n                }\n            }\n\n            return retVal;\n        });\n    }\n\n    fetchGraphDetails(graphIDs: string[] = [], rootTypes: string[]): Promise<BaseScope[]> {\n        return this.fetchDetails({\n            ScopeFilter: {\n                MaxDepth: 999999,\n                Ids: graphIDs,\n                ScopeTypes: rootTypes,\n            },\n            NestedFilter: {\n                Depth: 999999,\n                ScopeTypes: [\"graph\", \"subgraph\", \"activity\", \"edge\", \"function\"]\n            },\n            PropertiesToReturn: {\n                AllStatistics: true,\n                AllAttributes: true,\n                AllHints: true,\n                AllProperties: true,\n                AllScopes: true\n            },\n            ScopeOptions: {\n                IncludeId: true,\n                IncludeScope: true,\n                IncludeScopeType: true\n            },\n            PropertyOptions: {\n                IncludeName: true,\n                IncludeRawValue: true,\n                IncludeFormatted: true,\n                IncludeMeasure: true,\n                IncludeCreator: false,\n                IncludeCreatorType: false\n            }\n        });\n    }\n\n    fetchScopeGraphs(graphIDs: string[] = []): Promise<ScopeGraph> {\n        return this.fetchGraphDetails(graphIDs, [\"graph\"]).then((scopes) => {\n            return createGraph(scopes);\n        });\n    }\n\n    fetchTimeElapsed(): Promise<ITimeElapsed[]> {\n        return this.fetchDetails({\n            ScopeFilter: {\n                PropertyFilters: {\n                    PropertyFilter: [{ Name: \"TimeElapsed\" }]\n                }\n            }\n        }).then((scopes) => {\n            const scopeInfo: { [key: string]: ITimeElapsed } = {};\n            scopes.forEach((scope) => {\n                scopeInfo[scope.ScopeName] = scopeInfo[scope.ScopeName] || {\n                    scope: scope.ScopeName,\n                    start: null,\n                    elapsed: null,\n                    finish: null\n                };\n                scope.CAttributes.forEach((attr) => {\n                    if (attr.Name === \"TimeElapsed\") {\n                        scopeInfo[scope.ScopeName].elapsed = +attr.RawValue;\n                    } else if (attr.Measure === \"ts\" && attr.Name.indexOf(\"Started\") >= 0) {\n                        scopeInfo[scope.ScopeName].start = attr.Formatted;\n                    }\n                });\n            });\n            // Workaround duplicate scope responses\n            const retVal: ITimeElapsed[] = [];\n            for (const key in scopeInfo) {\n                const scope = scopeInfo[key];\n                if (scope.start && scope.elapsed) {\n                    const endTime = parser(scope.start);\n                    endTime!.setMilliseconds(endTime!.getMilliseconds() + scope.elapsed / 1000000);\n                    scope.finish = formatter(endTime!);\n                    retVal.push(scope);\n                }\n            }\n            retVal.sort((l, r) => {\n                if (l.start < r.start) return -1;\n                if (l.start > r.start) return 1;\n                return 0;\n            });\n            return retVal;\n        });\n    }\n\n    //  Monitoring  ---\n    protected _monitor(): void {\n        if (this.isComplete()) {\n            this._monitorTickCount = 0;\n            return;\n        }\n        super._monitor();\n    }\n\n    protected _monitorTimeoutDuration(): number {\n        const retVal = super._monitorTimeoutDuration();\n        if (this._monitorTickCount <= 1) {          //  Once\n            return 1000;\n        } else if (this._monitorTickCount <= 3) {   //  Twice\n            return 3000;\n        } else if (this._monitorTickCount <= 5) {   //  Twice\n            return 5000;\n        } else if (this._monitorTickCount <= 7) {   //  Twice\n            return 10000;\n        }\n        return retVal;\n    }\n\n    //  Events  ---\n    on(eventID: WorkunitEvents, propIDorCallback: StateCallback | keyof UWorkunitState, callback?: StatePropCallback): this {\n        if (this.isCallback(propIDorCallback)) {\n            switch (eventID) {\n                case \"completed\":\n                    super.on(\"propChanged\", \"StateID\", (changeInfo: IEvent) => {\n                        if (this.isComplete()) {\n                            propIDorCallback([changeInfo]);\n                        }\n                    });\n                    break;\n                case \"changed\":\n                    super.on(eventID, propIDorCallback);\n                    break;\n                default:\n            }\n        } else {\n            switch (eventID) {\n                case \"changed\":\n                    super.on(eventID, propIDorCallback, callback!);\n                    break;\n                default:\n            }\n        }\n        this._monitor();\n        return this;\n    }\n\n    watchUntilComplete(callback?: StateCallback): Promise<this> {\n        return new Promise((resolve, _) => {\n            const watchHandle = this.watch((changes) => {\n                if (callback) {\n                    callback(changes);\n                }\n                if (this.isComplete()) {\n                    watchHandle.release();\n                    resolve(this);\n                }\n            });\n        });\n    }\n\n    watchUntilRunning(callback?: StateCallback): Promise<this> {\n        return new Promise((resolve, _) => {\n            const watchHandle = this.watch((changes) => {\n                if (callback) {\n                    callback(changes);\n                }\n                if (this.isComplete() || this.isRunning()) {\n                    watchHandle.release();\n                    resolve(this);\n                }\n            });\n        });\n    }\n\n    //  WsWorkunits passthroughs  ---\n    protected WUQuery(_request: Partial<WsWorkunits.WUQuery> = {}): Promise<WsWorkunits.WUQueryResponse> {\n        return this.connection.WUQuery({ ..._request, Wuid: this.Wuid }).then((response) => {\n            if (response.Workunits.ECLWorkunit.length === 0) {\n                //  deleted  ---\n                this.clearState(this.Wuid);\n                this.set(\"StateID\", WUStateID.NotFound);\n            } else {\n                this.set(response.Workunits.ECLWorkunit[0]);\n            }\n            return response;\n        }).catch((e: ESPExceptions) => {\n            //  deleted  ---\n            const wuMissing = e.Exception.some((exception) => {\n                if (exception.Code === 20081) {\n                    this.clearState(this.Wuid);\n                    this.set(\"StateID\", WUStateID.NotFound);\n                    return true;\n                }\n                return false;\n            });\n            if (!wuMissing) {\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\n                throw e;\n            }\n            return {} as WsWorkunits.WUQueryResponse;\n        });\n    }\n\n    protected WUCreate() {\n        return this.connection.WUCreate().then((response) => {\n            this.set(response.Workunit);\n            _workunits.set(this);\n            return response;\n        });\n    }\n\n    protected WUInfo(_request: Partial<WsWorkunits.WUInfo> = {}): Promise<WsWorkunits.WUInfoResponse> {\n        const includeResults = _request.IncludeResults || _request.IncludeResultsViewNames;\n        return this.connection.WUInfo({\n            ..._request,\n            Wuid: this.Wuid,\n            IncludeResults: includeResults,\n            IncludeResultsViewNames: includeResults,\n            SuppressResultSchemas: false\n        }).then((response) => {\n            this.set(response.Workunit);\n            if (includeResults) {\n                this.set({\n                    ResultViews: response.ResultViews\n                } as IWorkunitState);\n            }\n            return response;\n        }).catch((e: ESPExceptions) => {\n            //  deleted  ---\n            const wuMissing = e.Exception.some((exception) => {\n                if (exception.Code === 20080) {\n                    this.clearState(this.Wuid);\n                    this.set(\"StateID\", WUStateID.NotFound);\n                    return true;\n                }\n                return false;\n            });\n            if (!wuMissing) {\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\n                throw e;\n            }\n            return {} as WsWorkunits.WUInfoResponse;\n        });\n    }\n\n    protected WUResubmit(request: Partial<WsWorkunits.WUResubmit>): Promise<WsWorkunits.WUResubmitResponse> {\n        return this.connection.WUResubmit(deepMixinT<WsWorkunits.WUResubmit>({}, request, {\n            Wuids: { Item: [this.Wuid] }\n        }));\n    }\n\n    protected WUDetailsMeta(request: Partial<WsWorkunits.WUDetailsMeta>): Promise<WsWorkunits.WUDetailsMetaResponse> {\n        return this.connection.WUDetailsMeta(request);\n    }\n\n    protected WUDetails(request: RecursivePartial<WsWorkunits.WUDetails>): Promise<WsWorkunits.WUDetailsResponse> {\n        return this.connection.WUDetails(deepMixinT<WsWorkunits.WUDetails>({\n            ScopeFilter: {\n                MaxDepth: 9999\n            },\n            ScopeOptions: {\n                IncludeMatchedScopesInResults: true,\n                IncludeScope: true,\n                IncludeId: false,\n                IncludeScopeType: false\n            },\n            PropertyOptions: {\n                IncludeName: true,\n                IncludeRawValue: false,\n                IncludeFormatted: true,\n                IncludeMeasure: true,\n                IncludeCreator: false,\n                IncludeCreatorType: false\n            }\n        }, request, { WUID: this.Wuid })).then((response) => {\n            return deepMixinT<WsWorkunits.WUDetailsResponse>({\n                Scopes: {\n                    Scope: []\n                }\n            }, response);\n        });\n    }\n\n    protected WUAction(actionType: WsWorkunits.ECLWUActions): Promise<WsWorkunits.WUActionResponse> {\n        return this.connection.WUAction({\n            Wuids: { Item: [this.Wuid] },\n            WUActionType: actionType\n        }).then((response) => {\n            return this.refresh().then(() => {\n                this._monitor();\n                return response;\n            });\n        });\n    }\n\n    publish(name?: string) {\n        return this.connection.WUPublishWorkunit({\n            Wuid: this.Wuid,\n            Cluster: this.Cluster,\n            JobName: name || this.Jobname,\n            AllowForeignFiles: true,\n            Activate: WsWorkunits.WUQueryActivationMode.ActivateQuery,\n            Wait: 5000\n        });\n    }\n\n    publishEx(request: Partial<WsWorkunits.WUPublishWorkunit>) {\n        const service = new WorkunitsServiceEx({ baseUrl: \"\" });\n        const publishRequest = {\n            Wuid: this.Wuid,\n            Cluster: this.Cluster,\n            JobName: this.Jobname,\n            AllowForeignFiles: true,\n            Activate: 1,\n            Wait: 5000,\n            ...request\n        };\n        return service.WUPublishWorkunitEx(publishRequest);\n    }\n\n    protected WUCDebug(command: string, opts: any = {}): Promise<XMLNode | null> {\n        let optsStr = \"\";\n        for (const key in opts) {\n            if (opts.hasOwnProperty(key)) {\n                optsStr += ` ${key}='${opts[key]}'`;\n            }\n        }\n        return this.connection.WUCDebugEx({\n            Wuid: this.Wuid,\n            Command: `<debug:${command} uid='${this.Wuid}'${optsStr}/>`\n        }).then((response) => {\n            return response;\n        });\n    }\n\n    debug(command: string, opts?: object): Promise<XMLNode> {\n        if (!this.isDebugging()) {\n            return Promise.resolve(new XMLNode(command));\n        }\n        return this.WUCDebug(command, opts).then((response: XMLNode) => {\n            const retVal: XMLNode[] = response.children(command);\n            if (retVal.length) {\n                return retVal[0];\n            }\n            return new XMLNode(command);\n        }).catch((_) => {\n            logger.error(_);\n            return Promise.resolve(new XMLNode(command));\n        });\n    }\n\n    debugStatus(): Promise<XMLNode> {\n        if (!this.isDebugging()) {\n            return Promise.resolve<any>({\n                DebugState: { state: \"unknown\" }\n            });\n        }\n        return this.debug(\"status\").then((response) => {\n            const debugState = { ...this.DebugState, ...response.$ };\n            this.set({\n                DebugState: debugState\n            });\n            return response;\n        });\n    }\n\n    debugContinue(mode = \"\"): Promise<XMLNode> {\n        return this.debug(\"continue\", {\n            mode\n        });\n    }\n\n    debugStep(mode: string): Promise<XMLNode> {\n        return this.debug(\"step\", {\n            mode\n        });\n    }\n\n    debugPause(): Promise<XMLNode> {\n        return this.debug(\"interrupt\");\n    }\n\n    debugQuit(): Promise<XMLNode> {\n        return this.debug(\"quit\");\n    }\n\n    debugDeleteAllBreakpoints(): Promise<XMLNode> {\n        return this.debug(\"delete\", {\n            idx: 0\n        });\n    }\n\n    protected debugBreakpointResponseParser(rootNode: StringAnyMap) {\n        return rootNode.children().map((childNode: XMLNode) => {\n            if (childNode.name === \"break\") {\n                return childNode.$;\n            }\n        });\n    }\n\n    debugBreakpointAdd(id: string, mode: string, action: string): Promise<XMLNode> {\n        return this.debug(\"breakpoint\", {\n            id,\n            mode,\n            action\n        }).then((rootNode) => {\n            return this.debugBreakpointResponseParser(rootNode);\n        });\n    }\n\n    debugBreakpointList(): Promise<any[]> {\n        return this.debug(\"list\").then((rootNode) => {\n            return this.debugBreakpointResponseParser(rootNode);\n        });\n    }\n\n    debugGraph(): Promise<XGMMLGraph> {\n        if (this._debugAllGraph && this.DebugState[\"_prevGraphSequenceNum\"] === this.DebugState[\"graphSequenceNum\"]) {\n            return Promise.resolve(this._debugAllGraph);\n        }\n        return this.debug(\"graph\", { name: \"all\" }).then((response) => {\n            this.DebugState[\"_prevGraphSequenceNum\"] = this.DebugState[\"graphSequenceNum\"];\n            this._debugAllGraph = createXGMMLGraph(this.Wuid, response);\n            return this._debugAllGraph;\n        });\n    }\n\n    debugBreakpointValid(path: string): Promise<IECLDefintion[]> {\n        return this.debugGraph().then((graph) => {\n            return breakpointLocations(graph, path);\n        });\n    }\n\n    debugPrint(edgeID: string, startRow: number = 0, numRows: number = 10): Promise<StringAnyMap[]> {\n        return this.debug(\"print\", {\n            edgeID,\n            startRow,\n            numRows\n        }).then((response: XMLNode) => {\n            return response.children().map((rowNode) => {\n                const retVal: StringAnyMap = {};\n                rowNode.children().forEach((cellNode) => {\n                    retVal[cellNode.name] = cellNode.content;\n                });\n                return retVal;\n            });\n        });\n    }\n}\n\nexport interface IECLDefintion {\n    id: string;\n    file: string;\n    line: number;\n    column: number;\n}\n\nconst ATTR_DEFINITION = \"definition\";\n\nfunction hasECLDefinition(vertex: XGMMLVertex): boolean {\n    return vertex._![ATTR_DEFINITION] !== undefined;\n}\n\nfunction getECLDefinition(vertex: XGMMLVertex): IECLDefintion {\n    const match = /([a-z]:\\\\(?:[-\\w\\.\\d]+\\\\)*(?:[-\\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\)/.exec(vertex._![ATTR_DEFINITION]);\n    if (match) {\n        const [, _file, _row, _col] = match;\n        _file.replace(/\\/\\.\\//g, \"/\");\n        return {\n            id: vertex._![\"id\"],\n            file: _file,\n            line: +_row,\n            column: +_col\n        };\n    }\n    throw new Error(`Bad definition:  ${vertex._![ATTR_DEFINITION]}`);\n}\n\nfunction breakpointLocations(graph: XGMMLGraph, path?: string): IECLDefintion[] {\n    const retVal: IECLDefintion[] = [];\n    for (const vertex of graph.vertices) {\n        if (hasECLDefinition(vertex)) {\n            const definition = getECLDefinition(vertex);\n            if (definition && !path || path === definition.file) {\n                retVal.push(definition);\n            }\n        }\n    }\n    return retVal.sort((l, r) => {\n        return l.line - r.line;\n    });\n}\n", "import { Cache, Edge, Graph, StateObject, StringAnyMap, Subgraph, Vertex, XMLNode } from \"@hpcc-js/util\";\nimport { WsWorkunits } from \"../services/wsWorkunits.ts\";\nimport { BaseScope } from \"./scope.ts\";\nimport { Timer } from \"./timer.ts\";\nimport { Workunit } from \"./workunit.ts\";\n\nexport interface ECLGraphEx extends WsWorkunits.ECLGraph {\n    Time: number;\n}\n\nexport class ECLGraph extends StateObject<ECLGraphEx, ECLGraphEx> implements ECLGraphEx {\n    protected wu: Workunit;\n\n    get properties(): ECLGraphEx { return this.get(); }\n    get Name(): string { return this.get(\"Name\"); }\n    get Label(): string { return this.get(\"Label\"); }\n    get Type(): string { return this.get(\"Type\"); }\n    get Complete(): boolean { return this.get(\"Complete\"); }\n    get WhenStarted(): string { return this.get(\"WhenStarted\"); }\n    get WhenFinished(): string { return this.get(\"WhenFinished\"); }\n    get Time(): number { return this.get(\"Time\"); }\n    get Running(): boolean { return this.get(\"Running\"); }\n    get RunningId(): number { return this.get(\"RunningId\"); }\n    get Failed(): boolean { return this.get(\"Failed\"); }\n\n    constructor(wu: Workunit, eclGraph: WsWorkunits.ECLGraph, eclTimers: Timer[]) {\n        super();\n        this.wu = wu;\n        let duration = 0;\n        for (const eclTimer of eclTimers) {\n            if (eclTimer.GraphName === eclGraph.Name && !eclTimer.HasSubGraphId) {\n                duration = Math.round(eclTimer.Seconds * 1000) / 1000;\n                break;\n            }\n        }\n        this.set({ Time: duration, ...eclGraph });\n    }\n\n    fetchScopeGraph(subgraphID?: string): Promise<ScopeGraph> {\n        if (subgraphID) {\n            return this.wu.fetchGraphDetails([subgraphID], [\"subgraph\"]).then((scopes) => {\n                return createGraph(scopes);\n            });\n        }\n        return this.wu.fetchGraphDetails([this.Name], [\"graph\"]).then((scopes) => {\n            return createGraph(scopes);\n        });\n    }\n}\n\nexport class GraphCache extends Cache<WsWorkunits.ECLGraph, ECLGraph> {\n    constructor() {\n        super((obj) => {\n            return Cache.hash([obj.Name]);\n        });\n    }\n}\n\ntype Callback = (tag: string, attributes: StringAnyMap, children: XMLNode[], _stack: XMLNode[]) => void;\nfunction walkXmlJson(node: XMLNode, callback: Callback, stack?: XMLNode[]) {\n    stack = stack || [];\n    stack.push(node);\n    callback(node.name, node.$, node.children(), stack);\n    node.children().forEach((childNode) => {\n        walkXmlJson(childNode, callback, stack);\n    });\n    stack.pop();\n}\n\nfunction flattenAtt(nodes: XMLNode[]): StringAnyMap {\n    const retVal: StringAnyMap = {};\n    nodes.forEach((node: XMLNode) => {\n        if (node.name === \"att\") {\n            retVal[node.$[\"name\"]] = node.$[\"value\"];\n        }\n    });\n    return retVal;\n}\n\nexport class XGMMLGraph extends Graph<StringAnyMap, StringAnyMap, StringAnyMap> { }\nexport class XGMMLSubgraph extends Subgraph<StringAnyMap, StringAnyMap, StringAnyMap> { }\nexport class XGMMLVertex extends Vertex<StringAnyMap, StringAnyMap, StringAnyMap> { }\nexport class XGMMLEdge extends Edge<StringAnyMap, StringAnyMap, StringAnyMap> { }\n\nexport function createXGMMLGraph(id: string, graphs: XMLNode): XGMMLGraph {\n    const subgraphs: { [id: string]: XGMMLSubgraph } = {};\n    const vertices: { [id: string]: XGMMLVertex } = {};\n    const edges: { [id: string]: XGMMLEdge } = {};\n\n    const graph = new XGMMLGraph((item) => {\n        return item._![\"id\"];\n    });\n\n    const stack: XGMMLSubgraph[] = [graph.root];\n    walkXmlJson(graphs, (tag: string, attributes: StringAnyMap, childNodes: XMLNode[], _stack) => {\n        const top = stack[stack.length - 1];\n        switch (tag) {\n            case \"graph\":\n                break;\n            case \"node\":\n                if (childNodes.length && childNodes[0].children().length && childNodes[0].children()[0].name === \"graph\") {\n                    const subgraph = top.createSubgraph(flattenAtt(childNodes));\n                    stack.push(subgraph);\n                    subgraphs[attributes[\"id\"]] = subgraph;\n                } else {\n                }\n                // TODO:  Is this really a node when its also a subgraph?\n                const vertex = top.createVertex(flattenAtt(childNodes));\n                vertices[attributes[\"id\"]] = vertex;\n                break;\n            case \"edge\":\n                const edge = top.createEdge(vertices[attributes[\"source\"]], vertices[attributes[\"target\"]], flattenAtt(childNodes));\n                edges[attributes[\"id\"]] = edge;\n                break;\n            default:\n        }\n    });\n    return graph;\n}\n\nexport class ScopeGraph extends Graph<BaseScope, BaseScope, BaseScope> { }\nexport class ScopeSubgraph extends Subgraph<BaseScope, BaseScope, BaseScope> { }\nexport class ScopeVertex extends Vertex<BaseScope, BaseScope, BaseScope> { }\nexport class ScopeEdge extends Edge<BaseScope, BaseScope, BaseScope> { }\n\nexport function createGraph(scopes: BaseScope[]): ScopeGraph {\n    const subgraphs: { [scopeName: string]: ScopeSubgraph } = {};\n    const edges: { [scopeName: string]: BaseScope } = {};\n    const vertices: { [scopeName: string]: ScopeVertex } = {};\n\n    let graph: ScopeGraph | undefined;\n    for (const scope of scopes) {\n        switch (scope.ScopeType) {\n            case \"graph\":\n                graph = new ScopeGraph(item => item._!.Id, scope);\n                subgraphs[scope.ScopeName] = graph.root;\n                break;\n            case \"subgraph\":\n                if (!graph) {\n                    graph = new ScopeGraph(item => item._!.Id, scope);\n                    subgraphs[scope.ScopeName] = graph.root;\n                }\n                const scopeStack = scope.parentScope().split(\":\");\n                let scopeParent1 = subgraphs[scope.parentScope()];\n                while (scopeStack.length && !scopeParent1) {\n                    scopeParent1 = subgraphs[scopeStack.join(\":\")];\n                    scopeStack.pop();\n                }\n                if (!scopeParent1) {\n                    console.warn(`Missing SG:Parent (${scope.Id}): ${scope.parentScope()}`);\n                } else {\n                    const parent1: ScopeSubgraph = scopeParent1;\n                    subgraphs[scope.ScopeName] = parent1.createSubgraph(scope);\n                }\n                break;\n            case \"activity\":\n                const scopeParent2 = subgraphs[scope.parentScope()];\n                if (!scopeParent2) {\n                    console.warn(`Missing A:Parent (${scope.Id}): ${scope.parentScope()}`);\n                } else {\n                    vertices[scope.ScopeName] = scopeParent2.createVertex(scope);\n                }\n                break;\n            case \"edge\":\n                edges[scope.ScopeName] = scope;\n                break;\n            case \"function\":\n                const scopeParent3 = vertices[scope.parentScope()];\n                if (!scopeParent3) {\n                    console.warn(`Missing F:Parent (${scope.Id}): ${scope.parentScope()}`);\n                } else {\n                    scopeParent3._.children().push(scope);\n                }\n                break;\n        }\n    }\n    for (const id in edges) {\n        const scope = edges[id];\n        const scopeParent3 = subgraphs[scope.parentScope()];\n        if (!scopeParent3) {\n            console.warn(`Missing E:Parent (${scope.Id}): ${scope.parentScope()}`);\n        } else {\n            const parent3: ScopeSubgraph = scopeParent3;\n            try {\n                const source = graph!.vertex(scope.attr(\"IdSource\").RawValue);\n                const target = graph!.vertex(scope.attr(\"IdTarget\").RawValue);\n                parent3.createEdge(source, target, scope);\n            } catch (e) {\n                // const sourceIndex = scope.attr(\"SourceIndex\").RawValue;\n                // const targetIndex = scope.attr(\"TargetIndex\").RawValue;\n                console.warn(`Invalid Edge: ${id}`);\n            }\n        }\n    }\n    return graph!;\n}\n", "import { StateObject } from \"@hpcc-js/util\";\nimport { Workunit } from \"./workunit.ts\";\n\nexport interface ResourceEx {\n    URL: string;\n    DisplayName: string;\n    DisplayPath: string;\n}\n\nexport class Resource extends StateObject<ResourceEx, ResourceEx> implements ResourceEx {\n    protected wu: Workunit;\n\n    get properties(): ResourceEx { return this.get(); }\n    get URL(): string { return this.get(\"URL\"); }\n    get DisplayName(): string { return this.get(\"DisplayName\"); }\n    get DisplayPath(): string { return this.get(\"DisplayPath\"); }\n\n    constructor(wu: Workunit, url: string) {\n        super();\n        this.wu = wu;\n\n        const cleanedURL = url.split(\"\\\\\").join(\"/\");\n        const urlParts = cleanedURL.split(\"/\");\n        const matchStr = \"res/\" + this.wu.Wuid + \"/\";\n        let displayPath = \"\";\n        let displayName = \"\";\n\n        if (cleanedURL.indexOf(matchStr) === 0) {\n            displayPath = cleanedURL.substr(matchStr.length);\n            displayName = urlParts[urlParts.length - 1];\n        }\n\n        this.set({\n            URL: url,\n            DisplayName: displayName,\n            DisplayPath: displayPath\n        });\n    }\n}\n", "import { Cache, exists, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WsDfu } from \"../services/wsDFU.ts\";\nimport { isECLResult, WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\nimport { parseXSD, XSDSchema, XSDXMLNode } from \"./xsdParser.ts\";\n\nexport class GlobalResultCache extends Cache<{ BaseUrl: string, Wuid: string, ResultName: string }, Result> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.Wuid}-${obj.ResultName}`;\n        });\n    }\n}\nconst _results = new GlobalResultCache();\n\nexport type ResultFilter = { [key: string]: string | number };\n\nexport interface ECLResultEx extends WsWorkunits.ECLResult {\n    Wuid: string;\n    ResultName?: string;\n    ResultSequence?: number;\n    LogicalFileName?: string;\n    NodeGroup?: string;\n    ResultViews: string[];\n}\n\nexport interface WUResultResponseEx {\n\n    Exceptions: WsWorkunits.Exceptions;\n    Wuid: string;\n    Sequence: WsWorkunits.int;\n    LogicalName: string;\n    Cluster: string;\n    Name: string;\n    Start: WsWorkunits.long;\n    Requested: WsWorkunits.int;\n    Count: WsWorkunits.int;\n    Total: WsWorkunits.long;\n    Result: { [key: string]: any[] } & {\n        XmlSchema?: {\n            xml: string;\n        };\n    };\n}\n\nexport type UResulState = ECLResultEx & WsDfu.DFULogicalFile;\nexport type IResulState = ECLResultEx | WsDfu.DFULogicalFile;\nexport class Result extends StateObject<UResulState, IResulState> implements ECLResultEx {\n    protected connection: WorkunitsService;\n    protected _bypassCache: boolean = false;\n    get BaseUrl() { return this.connection.baseUrl; }\n    protected xsdSchema: XSDSchema;\n\n    get properties(): WsWorkunits.ECLResult { return this.get(); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get ResultName(): string | undefined { return this.get(\"ResultName\"); }\n    get ResultSequence(): number | undefined { return this.get(\"ResultSequence\"); }\n    get LogicalFileName(): string | undefined { return this.get(\"LogicalFileName\"); }\n    get Name(): string { return this.get(\"Name\"); }\n    get Sequence(): number { return this.get(\"Sequence\"); }\n    get Value(): string { return this.get(\"Value\"); }\n    get Link(): string { return this.get(\"Link\"); }\n    get FileName(): string { return this.get(\"FileName\"); }\n    get IsSupplied(): boolean { return this.get(\"IsSupplied\"); }\n    get ShowFileContent() { return this.get(\"ShowFileContent\"); }\n    get Total(): number { return this.get(\"Total\"); }\n    get ECLSchemas(): WsWorkunits.ECLSchemas { return this.get(\"ECLSchemas\"); }\n    get NodeGroup(): string { return this.get(\"NodeGroup\"); }\n    get ResultViews(): string[] { return this.get(\"ResultViews\"); }\n    get XmlSchema(): string { return this.get(\"XmlSchema\"); }\n\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name: string);\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, sequence: number);\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclResult: WsWorkunits.ECLResult, resultViews: string[]);\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name_sequence_eclResult?: string | number | WsWorkunits.ECLResult, resultViews?: string[]): Result {\n        let retVal: Result;\n        if (Array.isArray(resultViews)) {\n            retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: (name_sequence_eclResult as WsWorkunits.ECLResult).Name }, () => {\n                return new Result(optsConnection, wuid, name_sequence_eclResult as WsWorkunits.ECLResult, resultViews);\n            });\n            retVal.set(name_sequence_eclResult as any);\n        } else if (typeof resultViews === \"undefined\") {\n            if (typeof name_sequence_eclResult === \"number\") {\n                retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: \"Sequence_\" + name_sequence_eclResult }, () => {\n                    return new Result(optsConnection, wuid, name_sequence_eclResult);\n                });\n            } else if (typeof name_sequence_eclResult === \"string\") {\n                retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: name_sequence_eclResult }, () => {\n                    return new Result(optsConnection, wuid, name_sequence_eclResult);\n                });\n            }\n        }\n        return retVal;\n    }\n\n    static attachLogicalFile(optsConnection: IOptions | IConnection | WorkunitsService, nodeGroup: string, logicalFile: string) {\n        return _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: nodeGroup, ResultName: logicalFile }, () => {\n            return new Result(optsConnection, nodeGroup, logicalFile, true);\n        });\n    }\n\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name: string);\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, sequence: number);\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclResult: WsWorkunits.ECLResult, resultViews: string[]);\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, nodeGroup: string, logicalFile: string, isLogicalFiles: boolean);\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid_NodeGroup: string, name_sequence_eclResult_logicalFile?: string | number | WsWorkunits.ECLResult, resultViews_isLogicalFile?: any[] | boolean) {\n        super();\n        if (optsConnection instanceof WorkunitsService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new WorkunitsService(optsConnection);\n        }\n\n        if (typeof resultViews_isLogicalFile === \"boolean\" && resultViews_isLogicalFile === true) {\n            this.set({\n                NodeGroup: wuid_NodeGroup,\n                LogicalFileName: name_sequence_eclResult_logicalFile\n            } as ECLResultEx);\n        } else if (isECLResult(name_sequence_eclResult_logicalFile) && Array.isArray(resultViews_isLogicalFile)) {\n            this.set({\n                ...name_sequence_eclResult_logicalFile,\n                Wuid: wuid_NodeGroup,\n                ResultName: name_sequence_eclResult_logicalFile.Name,\n                ResultViews: resultViews_isLogicalFile\n            } as ECLResultEx);\n        } else if (typeof resultViews_isLogicalFile === \"undefined\") {\n            if (typeof name_sequence_eclResult_logicalFile === \"number\") {\n                this.set({\n                    Wuid: wuid_NodeGroup,\n                    ResultSequence: name_sequence_eclResult_logicalFile\n                } as ECLResultEx);\n            } else if (typeof name_sequence_eclResult_logicalFile === \"string\") {\n                this.set({\n                    Wuid: wuid_NodeGroup,\n                    ResultName: name_sequence_eclResult_logicalFile\n                } as ECLResultEx);\n            } else {\n                console.warn(\"Unknown Result.attach (1)\");\n            }\n        } else {\n            console.warn(\"Unknown Result.attach (2)\");\n        }\n    }\n\n    isComplete() {\n        return this.Total !== -1;\n    }\n\n    bypassCache(bypass?: boolean): boolean | this {\n        if (bypass === undefined) return this._bypassCache;\n        this._bypassCache = bypass;\n        return this;\n    }\n\n    private _fetchXMLSchemaPromise: Promise<XSDSchema | null>;\n    fetchXMLSchema(refresh = false): Promise<XSDSchema | null> {\n        if (!this._fetchXMLSchemaPromise || refresh) {\n            this._fetchXMLSchemaPromise = this.WUResult().then(response => {\n                if (response.Result?.XmlSchema?.xml) {\n                    this.xsdSchema = parseXSD(response.Result.XmlSchema.xml);\n                    return this.xsdSchema;\n                }\n                return null;\n            });\n        }\n        return this._fetchXMLSchemaPromise;\n    }\n\n    async refresh(): Promise<this> {\n        await this.fetchRows(0, 1, true);\n        return this;\n    }\n\n    fetchRows(from: number = 0, count: number = -1, includeSchema: boolean = false, filter: ResultFilter = {}, abortSignal?: AbortSignal, bypassCache?: boolean): Promise<any[]> {\n        const shouldBypassCache = bypassCache ?? this._bypassCache;\n        return this.WUResult(from, count, !includeSchema, filter, abortSignal, shouldBypassCache).then((response) => {\n            const result: any = response.Result;\n            delete response.Result; //  Do not want it in \"set\"\n            this.set({\n                ...response\n            } as any);\n            if (exists(\"XmlSchema.xml\", result)) {\n                this.xsdSchema = parseXSD(result.XmlSchema.xml);\n            }\n            if (exists(\"Row\", result)) {\n                return result.Row;\n            } else if (this.ResultName && exists(this.ResultName, result)) {\n                return result[this.ResultName].Row;\n            }\n            return [];\n        });\n    }\n\n    rootField(): XSDXMLNode | null {\n        if (!this.xsdSchema) return null;\n        return this.xsdSchema.root;\n    }\n\n    fields(): XSDXMLNode[] {\n        if (!this.xsdSchema) return [];\n        return this.xsdSchema.root.children();\n    }\n\n    protected WUResult(start: number = 0, count: number = 1, suppressXmlSchema: boolean = false, filter: { [key: string]: string | number } = {}, abortSignal?: AbortSignal, bypassCache: boolean = false): Promise<WUResultResponseEx> {\n        const FilterBy = {\n            NamedValue: {\n                itemcount: 0\n            }\n        };\n        for (const key in filter) {\n            FilterBy.NamedValue[FilterBy.NamedValue.itemcount++] = {\n                Name: key,\n                Value: filter[key]\n            };\n        }\n        const request: Partial<WsWorkunits.WUResult> = { FilterBy } as any;\n        if (this.Wuid && this.ResultName !== undefined) {\n            request.Wuid = this.Wuid;\n            request.ResultName = this.ResultName;\n        } else if (this.Wuid && this.ResultSequence !== undefined) {\n            request.Wuid = this.Wuid;\n            request.Sequence = this.ResultSequence;\n        } else if (this.LogicalFileName && this.NodeGroup) {\n            request.LogicalName = this.LogicalFileName;\n            request.Cluster = this.NodeGroup;\n        } else if (this.LogicalFileName) {\n            request.LogicalName = this.LogicalFileName;\n        }\n        request.Start = start;\n        request.Count = count;\n        request.SuppressXmlSchema = suppressXmlSchema;\n        request.BypassCachedResult = bypassCache;\n        return this.connection.WUResult(request, abortSignal).then((response: unknown) => {\n            return response as WUResultResponseEx;\n        });\n    }\n}\n\nexport class ResultCache extends Cache<WsWorkunits.ECLResult, Result> {\n    constructor() {\n        super((obj) => {\n            return Cache.hash([obj.Sequence, obj.Name, obj.Value, obj.FileName]);\n        });\n    }\n}\n", "import { SAXStackParser, Stack, XMLNode } from \"@hpcc-js/util\";\n\nexport class XSDNode {\n    protected e?: XMLNode;\n\n    constructor(e: XMLNode) {\n        this.e = e;\n    }\n    fix() {\n        delete this.e;\n    }\n}\n\nexport class XSDXMLNode extends XSDNode {\n    name: string;\n    type: string;\n    isSet = false;\n    attrs: { [key: string]: string } = {};\n    private _children: XSDXMLNode[] = [];\n\n    constructor(e: XMLNode) {\n        super(e);\n    }\n\n    append(child: XSDXMLNode) {\n        this._children.push(child);\n        if (!this.type) {\n            this.type = \"hpcc:childDataset\";\n        }\n    }\n\n    fix() {\n        this.name = this.e!.$[\"name\"];\n        this.type = this.e!.$[\"type\"];\n        for (let i = this._children.length - 1; i >= 0; --i) {\n            const row = this._children[i];\n            if (row.name === \"Row\" && row.type === undefined) {\n                this._children.push(...row._children);\n                this._children.splice(i, 1);\n            }\n        }\n        const setOfType = this.setOfType();\n        if (setOfType) {\n            this.type = setOfType;\n            this.isSet = true;\n            this._children = [];\n        }\n    }\n\n    children(): XSDXMLNode[] {\n        return this._children;\n    }\n\n    private isAll(node: XSDXMLNode) {\n        return node.name === \"All\" && node.type === undefined;\n    }\n\n    private setOfType(): string {\n        const children = this.children();\n        if (this.type === undefined && children.length === 2) {\n            if (this.isAll(children[0])) {\n                return children[1].type;\n            } else if (this.isAll(children[1])) {\n                return children[0].type;\n            }\n        }\n        return undefined;\n    }\n\n    charWidth() {\n        let retVal: number = -1;\n\n        switch (this.type) {\n            case \"xs:boolean\":\n                retVal = 5;\n                break;\n            case \"xs:integer\":\n                retVal = 8;\n                break;\n            case \"xs:nonNegativeInteger\":\n                retVal = 8;\n                break;\n            case \"xs:double\":\n                retVal = 8;\n                break;\n            case \"xs:string\":\n                retVal = 32;\n                break;\n            default:\n                const numStr: string = \"0123456789\";\n                const underbarPos: number = this.type.lastIndexOf(\"_\");\n                const length: number = underbarPos > 0 ? underbarPos : this.type.length;\n                let i: number = length - 1;\n                for (; i >= 0; --i) {\n                    if (numStr.indexOf(this.type.charAt(i)) === -1)\n                        break;\n                }\n                if (i + 1 < length) {\n                    retVal = parseInt(this.type.substring(i + 1, length), 10);\n                }\n                if (this.type.indexOf(\"data\") === 0) {\n                    retVal *= 2;\n                }\n                break;\n        }\n        if (retVal < this.name.length)\n            retVal = this.name.length;\n\n        return retVal;\n    }\n}\n\nexport class XSDSimpleType extends XSDNode {\n    name: string;\n    type: string;\n    maxLength: number | undefined;\n\n    protected _restricition?: XMLNode;\n    protected _maxLength?: XMLNode;\n\n    constructor(e: XMLNode) {\n        super(e);\n    }\n\n    append(e: XMLNode) {\n        switch (e.name) {\n            case \"xs:restriction\":\n                this._restricition = e;\n                break;\n            case \"xs:maxLength\":\n                this._maxLength = e;\n                break;\n            default:\n        }\n    }\n\n    fix() {\n        this.name = this.e!.$[\"name\"];\n        this.type = this._restricition!.$[\"base\"];\n        this.maxLength = this._maxLength ? +this._maxLength!.$[\"value\"] : undefined;\n        delete this._restricition;\n        delete this._maxLength;\n        super.fix();\n    }\n}\n\nexport class XSDSchema {\n    root: XSDXMLNode;\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\n\n    fields(): XSDXMLNode[] {\n        return this.root.children();\n    }\n}\n\nclass XSDParser extends SAXStackParser {\n    schema: XSDSchema = new XSDSchema();\n    simpleType: XSDSimpleType;\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\n\n    xsdStack: Stack<XSDXMLNode> = new Stack<XSDXMLNode>();\n\n    startXMLNode(e: XMLNode) {\n        super.startXMLNode(e);\n        switch (e.name) {\n            case \"xs:element\":\n                const xsdXMLNode = new XSDXMLNode(e);\n                if (!this.schema.root) {\n                    this.schema.root = xsdXMLNode;\n                } else if (this.xsdStack.depth()) {\n                    this.xsdStack.top()!.append(xsdXMLNode);\n                }\n                this.xsdStack.push(xsdXMLNode);\n                break;\n            case \"xs:simpleType\":\n                this.simpleType = new XSDSimpleType(e);\n                break;\n            default:\n                break;\n        }\n    }\n\n    endXMLNode(e: XMLNode) {\n        switch (e!.name) {\n            case \"xs:element\":\n                const xsdXMLNode = this.xsdStack.pop();\n                xsdXMLNode!.fix();\n                break;\n            case \"xs:simpleType\":\n                this.simpleType.fix();\n                this.simpleTypes[this.simpleType.name] = this.simpleType;\n                delete this.simpleType;\n                break;\n            case \"xs:appinfo\":\n                const xsdXMLNode2 = this.xsdStack.top();\n                for (const key in e.$) {\n                    xsdXMLNode2!.attrs[key] = e.$[key];\n                }\n                break;\n            default:\n                if (this.simpleType) {\n                    this.simpleType.append(e);\n                }\n        }\n        super.endXMLNode(e);\n    }\n}\n\nexport function parseXSD(xml: string): XSDSchema {\n    const saxParser = new XSDParser();\n    saxParser.parse(xml);\n    return saxParser.schema;\n}\n\nclass XSDParser2 extends XSDParser {\n    _rootName: string;\n    schema: XSDSchema = new XSDSchema();\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\n\n    xsdStack: Stack<XSDXMLNode> = new Stack<XSDXMLNode>();\n\n    constructor(rootName: string) {\n        super();\n        this._rootName = rootName;\n    }\n\n    startXMLNode(e: XMLNode) {\n        super.startXMLNode(e);\n        switch (e.name) {\n            case \"xsd:element\":\n                const xsdXMLNode = new XSDXMLNode(e);\n                if (!this.schema.root && this._rootName === e.$.name) {\n                    this.schema.root = xsdXMLNode;\n                }\n                if (this.xsdStack.depth()) {\n                    this.xsdStack.top()!.append(xsdXMLNode);\n                }\n                this.xsdStack.push(xsdXMLNode);\n                break;\n            case \"xsd:simpleType\":\n                this.simpleType = new XSDSimpleType(e);\n                break;\n            default:\n                break;\n        }\n    }\n\n    endXMLNode(e: XMLNode) {\n        switch (e!.name) {\n            case \"xsd:element\":\n                const xsdXMLNode = this.xsdStack.pop()!;\n                xsdXMLNode.fix();\n                break;\n            case \"xsd:simpleType\":\n                break;\n            default:\n                break;\n        }\n        super.endXMLNode(e);\n    }\n}\n\nexport function parseXSD2(xml: string, rootName): XSDSchema {\n    const saxParser = new XSDParser2(rootName);\n    saxParser.parse(xml);\n    return saxParser.schema;\n}\n", "import { StateObject, StringAnyMap } from \"@hpcc-js/util\";\nimport { WsWorkunits } from \"../services/wsWorkunits.ts\";\nimport { Workunit } from \"./workunit.ts\";\n\nexport interface AttributeEx extends WsWorkunits.Property {\n    FormattedEnd?: string;\n}\n\nexport class Attribute extends StateObject<AttributeEx, AttributeEx> implements AttributeEx {\n    readonly scope: BaseScope;\n\n    get properties(): AttributeEx { return this.get(); }\n    get Name(): string { return this.get(\"Name\"); }\n    get RawValue(): string { return this.get(\"RawValue\"); }\n    get Formatted(): string { return this.get(\"Formatted\"); }\n    get FormattedEnd(): string | undefined { return this.get(\"FormattedEnd\"); }\n    get Measure(): string { return this.get(\"Measure\"); }\n    get Creator(): string { return this.get(\"Creator\"); }\n    get CreatorType(): string { return this.get(\"CreatorType\"); }\n\n    constructor(scope: BaseScope, attribute: WsWorkunits.Property) {\n        super();\n        this.scope = scope;\n        this.set(attribute);\n    }\n}\n\nexport interface ScopeEx extends WsWorkunits.Scope {\n}\n\nexport interface IScopeVisitor {\n    start(scope: BaseScope): boolean;\n    end(scope: BaseScope): boolean;\n}\n\nexport class BaseScope extends StateObject<ScopeEx, ScopeEx> implements ScopeEx {\n    protected _attributeMap: { [key: string]: Attribute } = {};\n    protected _children: BaseScope[] = [];\n\n    get properties(): ScopeEx { return this.get(); }\n    get ScopeName(): string { return this.get(\"ScopeName\"); }\n    get Id(): string { return this.get(\"Id\"); }\n    get ScopeType(): string { return this.get(\"ScopeType\"); }\n    get Properties(): WsWorkunits.Properties { return this.get(\"Properties\", { Property: [] }); }\n    get Notes(): WsWorkunits.Notes { return this.get(\"Notes\", { Note: [] }); }\n    get SinkActivity(): string { return this.get(\"SinkActivity\"); }\n    get CAttributes(): Attribute[] {\n        //  Match \"started\" and time elapsed\n        const retVal: Attribute[] = [];\n        const timeElapsed: { start: AttributeEx | null, end: AttributeEx | null } = {\n            start: null,\n            end: null\n        };\n        this.Properties.Property.forEach((scopeAttr) => {\n            if (scopeAttr.Measure === \"ts\" && scopeAttr.Name.indexOf(\"Started\") >= 0) {\n                timeElapsed.start = scopeAttr;\n            } else if (this.ScopeName && scopeAttr.Measure === \"ts\" && scopeAttr.Name.indexOf(\"Finished\") >= 0) {\n                timeElapsed.end = scopeAttr;\n            } else {\n                retVal.push(new Attribute(this, scopeAttr));\n            }\n        });\n        if (timeElapsed.start && timeElapsed.end) {\n            // const endTime = parser(timeElapsed.start.Formatted);\n            // endTime!.setMilliseconds(endTime!.getMilliseconds() + (+timeElapsed.elapsed.RawValue) / 1000000);\n            // timeElapsed.start.FormattedEnd = formatter(endTime!);\n            timeElapsed.start.FormattedEnd = timeElapsed.end.Formatted;\n            retVal.push(new Attribute(this, timeElapsed.start));\n        } else if (timeElapsed.start) {\n            retVal.push(new Attribute(this, timeElapsed.start));\n        } else if (timeElapsed.end) {\n            retVal.push(new Attribute(this, timeElapsed.end));  //  Should not happen?\n        }\n        return retVal;\n    }\n\n    constructor(scope: WsWorkunits.Scope) {\n        super();\n        this.update(scope);\n    }\n\n    update(scope: WsWorkunits.Scope) {\n        this.set(scope);\n        this.CAttributes.forEach((attr) => {\n            this._attributeMap[attr.Name] = attr;\n        });\n        this.Properties.Property = [];\n        for (const key in this._attributeMap) {\n            if (this._attributeMap.hasOwnProperty(key)) {\n                this.Properties.Property.push(this._attributeMap[key].properties);\n            }\n        }\n    }\n\n    parentScope(): string {\n        const scopeParts = this.ScopeName.split(\":\");\n        scopeParts.pop();\n        return scopeParts.join(\":\");\n    }\n\n    children(): BaseScope[];\n    children(_: BaseScope[]): BaseScope;\n    children(_?: BaseScope[]): BaseScope[] | BaseScope {\n        if (!arguments.length) return this._children;\n        this._children = _!;\n        return this;\n    }\n\n    walk(visitor: IScopeVisitor): boolean {\n        if (visitor.start(this)) return true;\n        for (const scope of this.children()) {\n            if (scope.walk(visitor)) {\n                return true;\n            }\n        }\n        return visitor.end(this);\n    }\n\n    formattedAttrs(): StringAnyMap {\n        const retVal: StringAnyMap = {};\n        for (const attr in this._attributeMap) {\n            retVal[attr] = this._attributeMap[attr].Formatted || this._attributeMap[attr].RawValue;\n        }\n        return retVal;\n    }\n\n    rawAttrs(): StringAnyMap {\n        const retVal: StringAnyMap = {};\n        for (const attr in this._attributeMap) {\n            retVal[attr] = this._attributeMap[attr].RawValue;\n        }\n        return retVal;\n    }\n\n    hasAttr(name: string): boolean {\n        return this._attributeMap[name] !== undefined;\n    }\n\n    attr(name: string): Attribute {\n        return this._attributeMap[name] || new Attribute(this, {\n            Creator: \"\",\n            CreatorType: \"\",\n            Formatted: \"\",\n            Measure: \"\",\n            Name: \"\",\n            RawValue: \"\"\n        });\n    }\n\n    attrMeasure(name: string): string {\n        return this._attributeMap[name].Measure;\n    }\n\n    calcTooltip(parentScope?: BaseScope) {\n        let label = this.Id;\n        const rows: string[] = [];\n        rows.push(`<tr><td class=\"key\">ID:</td><td class=\"value\">${this.Id}</td></tr>`);\n        if (parentScope) {\n            rows.push(`<tr><td class=\"key\">Parent ID:</td><td class=\"value\">${parentScope.Id}</td></tr>`);\n        }\n        rows.push(`<tr><td class=\"key\">Scope:</td><td class=\"value\">${this.ScopeName}</td></tr>`);\n        const attrs = this.formattedAttrs();\n        for (const key in attrs) {\n            if (key === \"Label\") {\n                label = attrs[key];\n            } else {\n                rows.push(`<tr><td class=\"key\">${key}</td><td class=\"value\">${attrs[key]}</td></tr>`);\n            }\n        }\n\n        return `<div class=\"eclwatch_WUGraph_Tooltip\" style=\"max-width:480px\">\n            <h4 align=\"center\">${label}</h4>\n            <table>\n                ${rows.join(\"\")}\n            </table>\n        </div>`;\n    }\n}\n\nexport class Scope extends BaseScope {\n    readonly wu: Workunit;\n\n    constructor(wu: Workunit, scope: WsWorkunits.Scope) {\n        super(scope);\n        this.wu = wu;\n    }\n}\n", "import { StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\n\nexport interface ECLSourceFileEx extends WsWorkunits.ECLSourceFile {\n    Wuid: string;\n}\n\nexport class SourceFile extends StateObject<ECLSourceFileEx, ECLSourceFileEx> implements ECLSourceFileEx {\n    protected connection: WorkunitsService;\n\n    get properties(): WsWorkunits.ECLSourceFile { return this.get(); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get FileCluster(): string { return this.get(\"FileCluster\"); }\n    get Name(): string { return this.get(\"Name\"); }\n    get IsSuperFile(): boolean { return this.get(\"IsSuperFile\"); }\n    get Subs(): number { return this.get(\"Subs\"); }\n    get Count(): number { return this.get(\"Count\"); }\n    get ECLSourceFiles(): WsWorkunits.ECLSourceFiles { return this.get(\"ECLSourceFiles\"); }\n\n    constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclSourceFile: WsWorkunits.ECLSourceFile) {\n        super();\n        if (optsConnection instanceof WorkunitsService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new WorkunitsService(optsConnection);\n        }\n\n        this.set({\n            Wuid: wuid,\n            ...eclSourceFile\n        });\n    }\n}\n", "import { espTime2Seconds, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\n\nexport interface ECLTimerEx extends WsWorkunits.ECLTimer {\n    Wuid: string;\n    Seconds: number;\n    HasSubGraphId: boolean;\n}\n\nexport class Timer extends StateObject<ECLTimerEx, ECLTimerEx> implements ECLTimerEx {\n    protected connection: WorkunitsService;\n\n    get properties(): WsWorkunits.ECLTimer { return this.get(); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get Name(): string { return this.get(\"Name\"); }\n    get Value(): string { return this.get(\"Value\"); }\n    get Seconds(): number { return this.get(\"Seconds\"); }\n    get GraphName(): string { return this.get(\"GraphName\"); }\n    get SubGraphId(): number { return this.get(\"SubGraphId\"); }\n    get HasSubGraphId(): boolean { return this.get(\"HasSubGraphId\"); }\n    get count(): number { return this.get(\"count\"); }\n    get Timestamp(): number { return this.get(\"Timestamp\"); }\n    get When(): string { return this.get(\"When\"); }\n\n    constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclTimer: WsWorkunits.ECLTimer) {\n        super();\n        if (optsConnection instanceof WorkunitsService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new WorkunitsService(optsConnection);\n        }\n\n        const secs = espTime2Seconds(eclTimer.Value);\n        this.set({\n            Wuid: wuid,\n            Seconds: Math.round(secs * 1000) / 1000,\n            HasSubGraphId: eclTimer.SubGraphId !== undefined,\n            ...eclTimer\n        });\n    }\n}\n", "import { Cache, scopedLogger, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { DFUService, WsDfu } from \"../services/wsDFU.ts\";\nimport { ESPExceptions } from \"../espConnection.ts\";\n\nconst logger = scopedLogger(\"logicalFile.ts\");\n\nexport class LogicalFileCache extends Cache<{ BaseUrl: string, Cluster: string, Name: string }, LogicalFile> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.Cluster}-${obj.Name}`;\n        });\n    }\n}\nconst _store = new LogicalFileCache();\n\nexport interface DFUPartEx extends WsDfu.DFUPart {\n    //  From WsDfu.DFUFilePartsOnCluster  ---\n    Cluster: string;\n    BaseDir: string;\n    ReplicateDir: string;\n    Replicate: boolean;\n    CanReplicate: boolean;\n}\n\nexport interface FileDetailEx extends WsDfu.FileDetail {\n    Cluster: string;\n    StateID?: number;\n}\n\nexport class LogicalFile extends StateObject<FileDetailEx, FileDetailEx> implements FileDetailEx {\n    protected connection: DFUService;\n    get BaseUrl() { return this.connection.baseUrl; }\n\n    get Cluster(): string { return this.get(\"Cluster\"); }\n    get Name(): string { return this.get(\"Name\"); }\n\n    get Filename(): string { return this.get(\"Filename\"); }\n    get Prefix(): string { return this.get(\"Prefix\"); }\n    get NodeGroup(): string { return this.get(\"NodeGroup\"); }\n    get NumParts(): number { return this.get(\"NumParts\"); }\n    get Description(): string { return this.get(\"Description\"); }\n    get Dir(): string { return this.get(\"Dir\"); }\n    get PathMask(): string { return this.get(\"PathMask\"); }\n    get Filesize(): string { return this.get(\"Filesize\"); }\n    get FileSizeInt64(): number { return this.get(\"FileSizeInt64\"); }\n    get RecordSize(): string { return this.get(\"RecordSize\"); }\n    get RecordCount(): string { return this.get(\"RecordCount\"); }\n    get RecordSizeInt64(): number { return this.get(\"RecordSizeInt64\"); }\n    get RecordCountInt64(): number { return this.get(\"RecordCountInt64\"); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get Owner(): string { return this.get(\"Owner\"); }\n    get JobName(): string { return this.get(\"JobName\"); }\n    get Persistent(): string { return this.get(\"Persistent\"); }\n    get Format(): string { return this.get(\"Format\"); }\n    get MaxRecordSize(): string { return this.get(\"MaxRecordSize\"); }\n    get CsvSeparate(): string { return this.get(\"CsvSeparate\"); }\n    get CsvQuote(): string { return this.get(\"CsvQuote\"); }\n    get CsvTerminate(): string { return this.get(\"CsvTerminate\"); }\n    get CsvEscape(): string { return this.get(\"CsvEscape\"); }\n    get Modified(): string { return this.get(\"Modified\"); }\n    get Ecl(): string { return this.get(\"Ecl\"); }\n    get Stat(): WsDfu.Stat { return this.get(\"Stat\"); }\n    get DFUFilePartsOnClusters(): WsDfu.DFUFilePartsOnClusters { return this.get(\"DFUFilePartsOnClusters\"); }\n    get isSuperfile(): boolean { return this.get(\"isSuperfile\"); }\n    get ShowFileContent(): boolean { return this.get(\"ShowFileContent\"); }\n    get subfiles(): WsDfu.subfiles { return this.get(\"subfiles\"); }\n    get Superfiles(): WsDfu.Superfiles { return this.get(\"Superfiles\"); }\n    get ProtectList(): WsDfu.ProtectList { return this.get(\"ProtectList\"); }\n    get FromRoxieCluster(): boolean { return this.get(\"FromRoxieCluster\"); }\n    get Graphs(): WsDfu.Graphs { return this.get(\"Graphs\"); }\n    get UserPermission(): string { return this.get(\"UserPermission\"); }\n    get ContentType(): string { return this.get(\"ContentType\"); }\n    get CompressedFileSize(): number { return this.get(\"CompressedFileSize\"); }\n    get PercentCompressed(): string { return this.get(\"PercentCompressed\"); }\n    get IsCompressed(): boolean { return this.get(\"IsCompressed\"); }\n    get BrowseData(): boolean { return this.get(\"BrowseData\"); }\n    get jsonInfo(): string { return this.get(\"jsonInfo\"); }\n    get binInfo(): WsDfu.base64Binary { return this.get(\"binInfo\"); }\n    get PackageID(): string { return this.get(\"PackageID\"); }\n    get Partition(): WsDfu.Partition { return this.get(\"Partition\"); }\n    get Blooms(): WsDfu.Blooms { return this.get(\"Blooms\"); }\n    get ExpireDays(): number { return this.get(\"ExpireDays\"); }\n    get KeyType(): string { return this.get(\"KeyType\"); }\n    get IsRestricted(): boolean { return this.get(\"IsRestricted\"); }\n    get AtRestCost(): number { return this.get(\"AtRestCost\"); }\n    get AccessCost(): number { return this.get(\"AccessCost\"); }\n    get StateID(): number { return this.get(\"StateID\"); }\n    get ExpirationDate(): string { return this.get(\"ExpirationDate\"); }\n    get ExtendedIndexInfo(): WsDfu.ExtendedIndexInfo { return this.get(\"ExtendedIndexInfo\"); }\n    get CompressionType(): string { return this.get(\"CompressionType\"); }\n\n    get properties(): FileDetailEx { return this.get(); }\n\n    static attach(optsConnection: IOptions | IConnection | DFUService, Cluster: string, Name: string, state?: FileDetailEx): LogicalFile {\n        const retVal: LogicalFile = _store.get({ BaseUrl: optsConnection.baseUrl, Cluster, Name }, () => {\n            return new LogicalFile(optsConnection, Cluster, Name);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    protected constructor(optsConnection: IOptions | IConnection | DFUService, Cluster: string, Name: string) {\n        super();\n        if (optsConnection instanceof DFUService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new DFUService(optsConnection);\n        }\n\n        this.clear({\n            Cluster,\n            Name\n        });\n    }\n\n    filePartsOnCluster() {\n        return [...(this.DFUFilePartsOnClusters?.DFUFilePartsOnCluster || [])];\n    }\n\n    fileParts() {\n        const retVal: DFUPartEx[] = [];\n        for (const poc of this.DFUFilePartsOnClusters?.DFUFilePartsOnCluster || []) {\n            for (const part of poc?.DFUFileParts?.DFUPart || []) {\n                const row = { ...poc, ...part };\n                delete row.DFUFileParts;\n                retVal.push(row);\n            }\n        }\n        return retVal;\n    }\n\n    update(request: Partial<WsDfu.DFUInfoRequest>): Promise<WsDfu.DFUInfoResponse> {\n        return this.connection.DFUInfo({\n            ...request,\n            ...{\n                Cluster: this.Cluster,\n                Name: this.Name\n            }\n        }).then((response) => {\n            this.set({\n                Cluster: this.Cluster,\n                ...response.FileDetail\n            });\n            return response;\n        });\n    }\n\n    fetchInfo(): Promise<WsDfu.FileDetail> {\n        return this.connection.DFUInfo({ Cluster: this.Cluster, Name: this.Name }).then(response => {\n            this.set({\n                Cluster: this.Cluster,\n                ...response.FileDetail,\n                ProtectList: response?.FileDetail?.ProtectList ?? { DFUFileProtect: [] }\n            });\n            return response.FileDetail;\n        }).catch((e: ESPExceptions) => {\n            //  deleted  ---\n            const fileMissing = e.Exception.some((exception) => {\n                if (exception.Code === 20038) {\n                    this.set(\"Name\", this.Name + \" (Deleted)\");\n                    this.set(\"StateID\", 999);\n                    return true;\n                }\n                return false;\n            });\n            if (!fileMissing) {\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\n                throw e;\n            }\n            return {} as FileDetailEx;\n        });\n    }\n\n    fetchDefFile(format: WsDfu.DFUDefFileFormat): Promise<string> {\n        return this.connection.DFUFile({ Name: this.Name, Format: format });\n    }\n\n    fetchAllLogicalFiles(): Promise<string[]> {\n        return this.connection.recursiveFetchLogicalFiles([this]);\n    }\n\n    fetchListHistory(): Promise<WsDfu.Origin[]> {\n        return this.connection.ListHistory({ Name: this.Name }).then(response => {\n            return response?.History?.Origin || [];\n        });\n    }\n\n    eraseHistory(): Promise<WsDfu.Origin[]> {\n        return this.connection.EraseHistory({ Name: this.Name }).then(response => {\n            return response?.History?.Origin || [];\n        });\n    }\n}\n", "import { Cache, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WsMachine, MachineService } from \"../services/wsMachine.ts\";\n\nexport class MachineCache extends Cache<{ Address: string }, Machine> {\n    constructor() {\n        super((obj) => {\n            return obj.Address;\n        });\n    }\n}\nconst _machines = new MachineCache();\n\nexport interface MachineInfoEx extends WsMachine.MachineInfoEx {\n}\n\nexport class Machine extends StateObject<MachineInfoEx, MachineInfoEx> implements MachineInfoEx {\n    protected connection: MachineService;\n\n    get Address(): string { return this.get(\"Address\"); }\n    get ConfigAddress(): string { return this.get(\"ConfigAddress\"); }\n    get Name(): string { return this.get(\"Name\"); }\n    get ProcessType(): string { return this.get(\"ProcessType\"); }\n    get DisplayType(): string { return this.get(\"DisplayType\"); }\n    get Description(): string { return this.get(\"Description\"); }\n    get AgentVersion(): string { return this.get(\"AgentVersion\"); }\n    get Contact(): string { return this.get(\"Contact\"); }\n    get Location(): string { return this.get(\"Location\"); }\n    get UpTime(): string { return this.get(\"UpTime\"); }\n    get ComponentName(): string { return this.get(\"ComponentName\"); }\n    get ComponentPath(): string { return this.get(\"ComponentPath\"); }\n    get RoxieState(): string { return this.get(\"RoxieState\"); }\n    get RoxieStateDetails(): string { return this.get(\"RoxieStateDetails\"); }\n    get OS(): number { return this.get(\"OS\"); }\n    get ProcessNumber(): number { return this.get(\"ProcessNumber\"); }\n    get Channels(): number { return this.get(\"Channels\"); }\n    get Processors(): WsMachine.Processors { return this.get(\"Processors\"); }\n    get Storage(): WsMachine.Storage { return this.get(\"Storage\"); }\n    get Running(): WsMachine.Running { return this.get(\"Running\"); }\n    get PhysicalMemory(): WsMachine.PhysicalMemory { return this.get(\"PhysicalMemory\"); }\n    get VirtualMemory(): WsMachine.VirtualMemory { return this.get(\"VirtualMemory\"); }\n    get ComponentInfo(): WsMachine.ComponentInfo { return this.get(\"ComponentInfo\"); }\n    get Exception(): string { return this.get(\"Exception\"); }\n\n    static attach(optsConnection: IOptions | IConnection | MachineService, address: string, state?: WsMachine.MachineInfoEx): Machine {\n        const retVal: Machine = _machines.get({ Address: address }, () => {\n            return new Machine(optsConnection);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    private constructor(optsConnection: IOptions | IConnection | MachineService) {\n        super();\n        if (optsConnection instanceof MachineService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new MachineService(optsConnection);\n        }\n    }\n}\n", "import { Cache, StateObject, scopedLogger, RecursivePartial } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { EclService, IWsEclRequest, IWsEclResponse, IWsEclResult } from \"../services/wsEcl.ts\";\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\nimport { Topology } from \"./topology.ts\";\nimport { Workunit, IScope } from \"./workunit.ts\";\nimport { QueryGraph } from \"./queryGraph.ts\";\n\nexport { QueryGraph };\n\nconst logger = scopedLogger(\"@hpcc-js/comms/ecl/query.ts\");\n\nconst siFormatter = d3Format(\"~s\");\n\nfunction isNumber(n) {\n    return !isNaN(parseFloat(n)) && !isNaN(n - 0);\n}\nexport interface QueryEx extends WsWorkunits.WUQueryDetailsResponse {\n    BaseUrl: string;\n}\n\nclass QueryCache extends Cache<QueryEx, Query> {\n    constructor() {\n        super((obj) => {\n            return Cache.hash([obj.QueryId, obj.QuerySet]);\n        });\n    }\n}\nconst _queries = new QueryCache();\n\nexport class Query extends StateObject<QueryEx, QueryEx> implements QueryEx {\n    protected wsWorkunitsService: WorkunitsService;\n    get BaseUrl() { return this.wsWorkunitsService.baseUrl; }\n    protected topology: Topology;\n    protected _requestSchema: IWsEclRequest;\n    protected _responseSchema: IWsEclResponse;\n\n    get properties(): WsWorkunits.WUQueryDetailsResponse { return this.get(); }\n    get Exceptions(): WsWorkunits.Exceptions { return this.get(\"Exceptions\"); }\n    get QueryId(): string { return this.get(\"QueryId\"); }\n    get QuerySet(): string { return this.get(\"QuerySet\"); }\n    get QueryName(): string { return this.get(\"QueryName\"); }\n    get Wuid(): string { return this.get(\"Wuid\"); }\n    get Dll(): string { return this.get(\"Dll\"); }\n    get Suspended(): boolean { return this.get(\"Suspended\"); }\n    get Activated(): boolean { return this.get(\"Activated\"); }\n    get SuspendedBy(): string { return this.get(\"SuspendedBy\"); }\n    get Clusters(): WsWorkunits.Clusters2 { return this.get(\"Clusters\"); }\n    get PublishedBy(): string { return this.get(\"PublishedBy\"); }\n    get Comment() { return this.get(\"Comment\"); }\n    get LogicalFiles(): WsWorkunits.LogicalFiles { return this.get(\"LogicalFiles\"); }\n    get SuperFiles(): WsWorkunits.SuperFiles { return this.get(\"SuperFiles\"); }\n    get IsLibrary(): boolean { return this.get(\"IsLibrary\"); }\n    get Priority(): string { return this.get(\"Priority\"); }\n    get WUSnapShot(): string { return this.get(\"WUSnapShot\"); }\n    get CompileTime(): string { return this.get(\"CompileTime\"); }\n    get LibrariesUsed(): WsWorkunits.LibrariesUsed { return this.get(\"LibrariesUsed\"); }\n    get CountGraphs(): number { return this.get(\"CountGraphs\"); }\n    get ResourceURLCount(): number { return this.get(\"ResourceURLCount\"); }\n    get WsEclAddresses(): WsWorkunits.WsEclAddresses { return this.get(\"WsEclAddresses\"); }\n    get WUGraphs(): WsWorkunits.WUGraphs { return this.get(\"WUGraphs\"); }\n    get WUTimers(): WsWorkunits.WUTimers { return this.get(\"WUTimers\"); }\n    get PriorityID(): number { return this.get(\"PriorityID\"); }\n\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, querySet: string, queryID: string, queryDetails?: WsWorkunits.WUQueryDetailsResponse) {\n        super();\n        if (optsConnection instanceof WorkunitsService) {\n            this.wsWorkunitsService = optsConnection;\n        } else {\n            this.wsWorkunitsService = new WorkunitsService(optsConnection);\n        }\n        this.topology = Topology.attach(this.wsWorkunitsService.opts());\n        this.set({\n            QuerySet: querySet,\n            QueryId: queryID,\n            ...queryDetails\n        } as QueryEx);\n    }\n\n    static attach(optsConnection: IOptions | IConnection, querySet: string, queryId: string, state?: QueryEx): Query {\n        const retVal: Query = _queries.get({ BaseUrl: optsConnection.baseUrl, QuerySet: querySet, QueryId: queryId } as QueryEx, () => {\n            return new Query(optsConnection, querySet, queryId);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    private _eclService: Promise<EclService>;\n    protected async wsEclService(): Promise<EclService | undefined> {\n        if (!this._eclService) {\n            this._eclService = this.topology.fetchServices({}).then(services => {\n                for (const espServer of services?.TpEspServers?.TpEspServer ?? []) {\n                    for (const binding of espServer?.TpBindings?.TpBinding ?? []) {\n                        if (binding?.Service === \"ws_ecl\") {\n                            const baseUrl = `${binding.Protocol}://${globalThis.location.hostname}:${binding.Port}`;\n                            return new EclService({ baseUrl });\n                        }\n                    }\n                }\n                return undefined;\n            });\n        }\n        return this._eclService;\n    }\n\n    private async fetchDetails(): Promise<void> {\n        const queryDetails = await this.wsWorkunitsService.WUQueryDetails({\n            QuerySet: this.QuerySet,\n            QueryId: this.QueryId,\n            IncludeStateOnClusters: true,\n            IncludeSuperFiles: true,\n            IncludeWsEclAddresses: true,\n            CheckAllNodes: false\n        });\n        this.set({ ...queryDetails } as QueryEx);\n    }\n\n    private async fetchRequestSchema(): Promise<void> {\n        const wsEclService = await this.wsEclService();\n        try {\n            this._requestSchema = await wsEclService?.requestJson(this.QuerySet, this.QueryId) ?? [];\n        } catch (e: any) {\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\n            logger.debug(e.message ?? e);\n            this._requestSchema = [];\n        }\n    }\n\n    private async fetchResponseSchema(): Promise<void> {\n        const wsEclService = await this.wsEclService();\n        try {\n            this._responseSchema = await wsEclService?.responseJson(this.QuerySet, this.QueryId) ?? {};\n        } catch (e: any) {\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\n            logger.debug(e.message ?? e);\n            this._responseSchema = {};\n        }\n    }\n\n    private async fetchSchema(): Promise<void> {\n        await Promise.all([this.fetchRequestSchema(), this.fetchResponseSchema()]);\n    }\n\n    fetchSummaryStats() {\n        return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });\n    }\n\n    fetchGraph(GraphName: string = \"\", SubGraphId: string = \"\"): Promise<QueryGraph> {\n        return this.wsWorkunitsService.WUQueryGetGraph({ Target: this.QuerySet, QueryId: this.QueryId, GraphName, SubGraphId }).then(response => {\n            const graph = new QueryGraph();\n            let first = true;\n            for (const graphItem of response?.Graphs?.ECLGraphEx || []) {\n                if (first) {\n                    graph.load(graphItem.Graph);\n                    first = false;\n                } else {\n                    graph.merge(graphItem.Graph);\n                }\n            }\n            return graph;\n        });\n    }\n\n    fetchDetailsNormalized(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<{ meta: WsWorkunits.WUDetailsMetaResponse | undefined, columns: { [id: string]: any } | undefined, data: IScope[] | undefined }> {\n        const wu = Workunit.attach(this.wsWorkunitsService, this.Wuid);\n        if (wu) {\n            return Promise.all([this.fetchGraph(), wu.fetchDetailsMeta(), wu.fetchDetailsRaw(request)]).then(promises => {\n                const graph = promises[0];\n                const meta = promises[1];\n                const metrics: WsWorkunits.Scope[] = promises[2];\n                const data = metrics.map(metric => {\n                    const firstChar = metric.Id[0];\n                    if (firstChar === \"a\" || firstChar === \"e\") {\n                        const item = graph.idx[metric.Id.substring(1)];\n                        if (!item) {\n                            logger.debug(`Missing graph data for metric ID: ${metric.Id}`);\n                            return metric;\n                        }\n                        const existingProperties = new Set(metric.Properties.Property.map(prop => prop.Name));\n                        const newProperties: WsWorkunits.Property[] = [];\n                        for (const key in item) {\n                            const firstCharOfKey = key.charAt(0);\n                            if (firstCharOfKey !== \"_\" &&\n                                firstCharOfKey === firstCharOfKey.toUpperCase() &&\n                                !existingProperties.has(key)) {\n                                const value = item[key];\n                                const valueType = typeof value;\n                                if (valueType === \"string\" || valueType === \"number\" || valueType === \"boolean\") {\n                                    const isNum = isNumber(value);\n                                    let rawValue = isNum ? parseFloat(value as string) : value;\n                                    let formatted = value;\n                                    if (key.indexOf(\"Time\") >= 0) {\n                                        rawValue = (rawValue as number) / 1000000000;\n                                        formatted = siFormatter(rawValue) + \"s\";\n                                    }\n                                    newProperties.push({\n                                        Name: key,\n                                        RawValue: rawValue as any,\n                                        Formatted: formatted\n                                    } as WsWorkunits.Property);\n                                }\n                            }\n                        }\n                        if (newProperties.length > 0) {\n                            metric.Properties.Property.push(...newProperties);\n                        }\n                    }\n                    return metric;\n                });\n                return wu.normalizeDetails(meta, data);\n            });\n        }\n        return Promise.resolve({ meta: undefined, columns: undefined, data: undefined });\n    }\n\n    async submit(request: object): Promise<Array<{ [key: string]: object[] }>> {\n        const wsEclService = await this.wsEclService();\n        try {\n            return wsEclService?.submit(this.QuerySet, this.QueryId, request).then(results => {\n                for (const key in results) {\n                    results[key] = results[key].Row;\n                }\n                return results;\n            }) ?? [];\n        } catch (e: any) {\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\n            logger.debug(e.message ?? e);\n            return [];\n        }\n    }\n\n    async refresh(): Promise<this> {\n        await Promise.all([\n            this.fetchDetails(),\n            this.fetchSchema()\n        ]);\n        return this;\n    }\n\n    requestFields(): IWsEclRequest {\n        if (!this._requestSchema) return [];\n        return this._requestSchema;\n    }\n\n    responseFields(): IWsEclResponse {\n        if (!this._responseSchema) return {};\n        return this._responseSchema;\n    }\n\n    resultNames(): string[] {\n        const retVal: string[] = [];\n        for (const key in this.responseFields()) {\n            retVal.push(key);\n        }\n        return retVal;\n    }\n\n    resultFields(resultName: string): IWsEclResult {\n        if (!this._responseSchema[resultName]) return [];\n        return this._responseSchema[resultName];\n    }\n}\n", "import { Cache, exists, StateCallback, StateEvents, StateObject, StatePropCallback } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { TopologyService, WsTopology } from \"../services/wsTopology.ts\";\nimport { TargetCluster } from \"./targetCluster.ts\";\n\nexport class TopologyCache extends Cache<{ BaseUrl: string }, Topology> {\n    constructor() {\n        super((obj) => {\n            return obj.BaseUrl;\n        });\n    }\n}\nconst _topology = new TopologyCache();\n\nexport interface TopologyStateEx {\n    TargetClusters?: WsTopology.TpTargetCluster[];\n    LogicalClusters?: WsTopology.TpLogicalCluster[];\n    Services?: WsTopology.ServiceList;\n}\nexport class Topology extends StateObject<TopologyStateEx, TopologyStateEx> implements TopologyStateEx {\n    protected connection: TopologyService;\n    get BaseUrl() { return this.connection.baseUrl; }\n\n    //  Accessors  ---\n    get properties(): TopologyStateEx { return this.get(); }\n    get TargetClusters(): WsTopology.TpTargetCluster[] { return this.get(\"TargetClusters\"); }\n    get CTargetClusters(): TargetCluster[] {\n        return this.TargetClusters.map(tc => TargetCluster.attach(this.connection, tc.Name, tc));\n    }\n    get LogicalClusters(): WsTopology.TpLogicalCluster[] { return this.get(\"LogicalClusters\"); }\n    get Services(): WsTopology.ServiceList { return this.get(\"Services\"); }\n\n    static attach(optsConnection: IOptions | IConnection | TopologyService, state?: TopologyStateEx): Topology {\n        const retVal: Topology = _topology.get({ BaseUrl: optsConnection.baseUrl }, () => {\n            return new Topology(optsConnection);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    protected constructor(optsConnection: IOptions | IConnection | TopologyService) {\n        super();\n        if (optsConnection instanceof TopologyService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new TopologyService(optsConnection);\n        }\n    }\n\n    GetESPServiceBaseURL(type: string = \"\"): Promise<string> {\n        return this.connection.TpServiceQuery({}).then(response => {\n            const rootProtocol = this.connection.protocol();\n            const ip = this.connection.ip();\n            let port = rootProtocol === \"https:\" ? \"18002\" : \"8002\";\n            if (exists(\"ServiceList.TpEspServers.TpEspServer\", response)) {\n                for (const item of response.ServiceList.TpEspServers.TpEspServer) {\n                    if (exists(\"TpBindings.TpBinding\", item)) {\n                        for (const binding of item.TpBindings.TpBinding) {\n                            if (binding.Service === type && binding.Protocol + \":\" === rootProtocol) {\n                                port = binding.Port;\n                            }\n                        }\n                    }\n                }\n            }\n            return `${rootProtocol}//${ip}:${port}/`;\n        });\n    }\n\n    fetchTargetClusters(): Promise<TargetCluster[]> {\n        return this.connection.TpTargetClusterQuery({ Type: \"ROOT\" }).then(response => {\n            this.set({\n                TargetClusters: response.TpTargetClusters?.TpTargetCluster ?? []\n            });\n            return this.CTargetClusters;\n        });\n    }\n\n    fetchLogicalClusters(request: WsTopology.TpLogicalClusterQueryRequest = {}): Promise<WsTopology.TpLogicalCluster[]> {\n        return this.connection.TpLogicalClusterQuery(request).then(response => {\n            this.set({\n                LogicalClusters: response.TpLogicalClusters.TpLogicalCluster\n            });\n            return this.LogicalClusters;\n        });\n    }\n\n    fetchServices(request: WsTopology.TpServiceQueryRequest = {}): Promise<WsTopology.ServiceList> {\n        return this.connection.TpServiceQuery(request).then(response => {\n            this.set({\n                Services: response.ServiceList\n            });\n            return this.Services;\n        });\n    }\n\n    protected _prevRefresh;\n    refresh(force: boolean = false): Promise<this> {\n        if (!this._prevRefresh || force) {\n            this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(() => {\n                return this;\n            });\n        }\n        return this._prevRefresh;\n    }\n\n    //  Monitoring  ---\n\n    //  Events  ---\n    on(eventID: StateEvents, propIDorCallback: StateCallback | keyof TopologyStateEx, callback?: StatePropCallback): this {\n        if (this.isCallback(propIDorCallback)) {\n            switch (eventID) {\n                case \"changed\":\n                    super.on(eventID, propIDorCallback);\n                    break;\n                default:\n            }\n        } else {\n            switch (eventID) {\n                case \"changed\":\n                    super.on(eventID, propIDorCallback, callback!);\n                    break;\n                default:\n            }\n        }\n        this._monitor();\n        return this;\n    }\n}\n", "import { Cache, StateObject } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { WsMachine, WsMachineEx, MachineService } from \"../services/wsMachine.ts\";\nimport { TopologyService, WsTopology } from \"../services/wsTopology.ts\";\nimport { Machine } from \"./machine.ts\";\n\nexport class TargetClusterCache extends Cache<{ BaseUrl: string, Name: string }, TargetCluster> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.Name}`;\n        });\n    }\n}\nconst _targetCluster = new TargetClusterCache();\n\nexport interface TpTargetClusterEx {\n    MachineInfoEx: WsMachine.MachineInfoEx[];\n}\n\nexport type UTargetClusterState = WsTopology.TpTargetCluster & WsTopology.TpClusterNameType & TpTargetClusterEx;\nexport type ITargetClusterState = WsTopology.TpTargetCluster | WsTopology.TpClusterNameType | TpTargetClusterEx;\nexport class TargetCluster extends StateObject<UTargetClusterState, ITargetClusterState> implements UTargetClusterState {\n    protected connection: TopologyService;\n    protected machineConnection: MachineService;\n    get BaseUrl() { return this.connection.baseUrl; }\n\n    get Name(): string { return this.get(\"Name\"); }\n    get Prefix(): string { return this.get(\"Prefix\"); }\n    get Type(): string { return this.get(\"Type\"); }\n    get IsDefault(): boolean { return this.get(\"IsDefault\"); }\n    get TpClusters(): WsTopology.TpClusters { return this.get(\"TpClusters\"); }\n    get TpEclCCServers(): WsTopology.TpEclCCServers { return this.get(\"TpEclCCServers\"); }\n    get TpEclServers(): WsTopology.TpEclServers { return this.get(\"TpEclServers\"); }\n    get TpEclAgents(): WsTopology.TpEclAgents { return this.get(\"TpEclAgents\"); }\n    get TpEclSchedulers(): WsTopology.TpEclSchedulers { return this.get(\"TpEclSchedulers\"); }\n    get MachineInfoEx(): WsMachine.MachineInfoEx[] { return this.get(\"MachineInfoEx\", []); }\n    get CMachineInfoEx(): Machine[] {\n        return this.MachineInfoEx.map(machineInfoEx => Machine.attach(this.machineConnection, machineInfoEx.Address, machineInfoEx));\n    }\n\n    static attach(optsConnection: IOptions | IConnection | TopologyService, name: string, state?: ITargetClusterState): TargetCluster {\n        const retVal: TargetCluster = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, () => {\n            return new TargetCluster(optsConnection, name);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    protected constructor(optsConnection: IOptions | IConnection | TopologyService, name: string) {\n        super();\n        if (optsConnection instanceof TopologyService) {\n            this.connection = optsConnection;\n            this.machineConnection = new MachineService(optsConnection.connectionOptions());\n        } else {\n            this.connection = new TopologyService(optsConnection);\n            this.machineConnection = new MachineService(optsConnection);\n        }\n        this.clear({\n            Name: name\n        });\n    }\n\n    fetchMachines(request: WsMachine.GetTargetClusterInfoRequest = {}): Promise<Machine[]> {\n        return this.machineConnection.GetTargetClusterInfo({\n            TargetClusters: {\n                Item: [`${this.Type}:${this.Name}`]\n            },\n            ...request\n        }).then(response => {\n            const retVal: WsMachine.MachineInfoEx[] = [];\n            for (const machineInfo of response.TargetClusterInfoList.TargetClusterInfo) {\n                for (const machineInfoEx of machineInfo.Processes.MachineInfoEx) {\n                    retVal.push(machineInfoEx);\n                }\n            }\n            this.set(\"MachineInfoEx\", retVal);\n            return this.CMachineInfoEx;\n        });\n    }\n\n    machineStats(): { maxDisk: number; meanDisk: number } {\n        let maxDisk = 0;\n        let totalFree = 0;\n        let total = 0;\n        for (const machine of this.CMachineInfoEx) {\n            for (const storageInfo of machine.Storage.StorageInfo) {\n                totalFree += storageInfo.Available;\n                total += storageInfo.Total;\n                const usage = 1 - storageInfo.Available / storageInfo.Total;\n                if (usage > maxDisk) {\n                    maxDisk = usage;\n                }\n            }\n        }\n        return {\n            maxDisk,\n            meanDisk: 1 - (total ? totalFree / total : 1)\n        };\n    }\n\n    fetchUsage(): Promise<WsMachineEx.TargetClusterUsage[]> {\n        return this.machineConnection.GetTargetClusterUsageEx([this.Name]);\n    }\n}\n\nexport function targetClusters(optsConnection: IOptions | IConnection | TopologyService): Promise<TargetCluster[]> {\n    let connection: TopologyService;\n    if (optsConnection instanceof TopologyService) {\n        connection = optsConnection;\n    } else {\n        connection = new TopologyService(optsConnection);\n    }\n    return connection.TpListTargetClusters({}).then(response => {\n        return response.TargetClusters.TpClusterNameType.map(item => TargetCluster.attach(optsConnection, item.Name, item));\n    });\n}\n\nconst _defaultTargetCluster: { [baseUrl: string]: Promise<TargetCluster> } = {};\nexport function defaultTargetCluster(optsConnection: IOptions | IConnection | TopologyService): Promise<TargetCluster> {\n    if (!_defaultTargetCluster[optsConnection.baseUrl]) {\n        let connection: TopologyService;\n        if (optsConnection instanceof TopologyService) {\n            connection = optsConnection;\n        } else {\n            connection = new TopologyService(optsConnection);\n        }\n        _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(response => {\n            let firstItem: WsTopology.TpClusterNameType;\n            let defaultItem: WsTopology.TpClusterNameType;\n            let hthorItem: WsTopology.TpClusterNameType;\n            response.TargetClusters.TpClusterNameType.forEach(item => {\n                if (!firstItem) {\n                    firstItem = item;\n                }\n                if (!defaultItem && item.IsDefault === true) {\n                    defaultItem = item;\n                }\n                if (!hthorItem && item.Type === \"hthor\") {\n                    hthorItem = item;\n                }\n            });\n            const defItem = defaultItem || hthorItem || firstItem;\n            return TargetCluster.attach(optsConnection, defItem.Name, defItem);\n        });\n    }\n    return _defaultTargetCluster[optsConnection.baseUrl];\n}\n", "//  Ported from:  https://github.com/hpcc-systems/HPCC-Platform/blob/f0ed9dbeca49c39fb55aa28fec295c89407ac663/esp/src/src/ESPGraph.ts\n\nexport function safeAssign(obj: { [id: string]: any }, key: string, value: string) {\n    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") return;\n    obj[key] = value;\n}\n\nfunction xmlEncode(str: string): string {\n    str = \"\" + str;\n    return str.replace(/&/g, \"&amp;\")\n        .replace(/\"/g, \"&quot;\")\n        .replace(/'/g, \"&apos;\")\n        .replace(/</g, \"&lt;\")\n        .replace(/>/g, \"&gt;\")\n        .replace(/\\n/g, \"&#10;\")\n        .replace(/\\r/g, \"&#13;\")\n        ;\n}\n\nfunction espTime2Seconds(duration?: string): number {\n    if (!duration) {\n        return 0;\n    } else if (!isNaN(+duration)) {\n        return parseFloat(duration);\n    }\n    const re = /(?:(?:(\\d+).days.)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+\\.\\d+|\\d+)s))|(?:(\\d+\\.\\d+|\\d+)ms|(\\d+\\.\\d+|\\d+)us|(\\d+\\.\\d+|\\d+)ns)/;\n    const match = re.exec(duration);\n    if (!match) return 0;\n    const days = +match[1] || 0;\n    const hours = +match[2] || 0;\n    const mins = +match[3] || 0;\n    const secs = +match[4] || 0;\n    const ms = +match[5] || 0;\n    const us = +match[6] || 0;\n    const ns = +match[7] || 0;\n    return (days * 24 * 60 * 60) + (hours * 60 * 60) + (mins * 60) + secs + ms / 1000 + us / 1000000 + ns / 1000000000;\n}\n\nfunction unitTest(size: string, unit: string) {\n    const nsIndex = size.indexOf(unit);\n    if (nsIndex !== -1) {\n        return parseFloat(size.substring(0, nsIndex));\n    }\n    return -1;\n}\n\nfunction espSize2Bytes(size: string): number {\n    if (!size) {\n        return 0;\n    } else if (!isNaN(+size)) {\n        return parseFloat(size);\n    }\n    let retVal = unitTest(size, \"Kb\");\n    if (retVal >= 0) {\n        return retVal * 1024;\n    }\n    retVal = unitTest(size, \"Mb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 2);\n    }\n    retVal = unitTest(size, \"Gb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 3);\n    }\n    retVal = unitTest(size, \"Tb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 4);\n    }\n    retVal = unitTest(size, \"Pb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 5);\n    }\n    retVal = unitTest(size, \"Eb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 6);\n    }\n    retVal = unitTest(size, \"Zb\");\n    if (retVal >= 0) {\n        return retVal * Math.pow(1024, 7);\n    }\n    retVal = unitTest(size, \"b\");\n    if (retVal >= 0) {\n        return retVal;\n    }\n    return 0;\n}\n\nfunction espSkew2Number(skew: string): number {\n    if (!skew) {\n        return 0;\n    }\n    return parseFloat(skew);\n}\n\nenum GRAPH_TYPE {\n    UNKNOWN = 0,\n    GRAPH = 1,\n    SUBGRAPH = 2,\n    VERTEX = 3,\n    EDGE = 4,\n    LAST = 5\n}\n\nenum GRAPH_TYPE_STRING {\n    UNKNOWN = \"Unknown\",\n    GRAPH = \"Graph\",\n    SUBGRAPH = \"Cluster\",\n    VERTEX = \"Vertex\",\n    EDGE = \"Edge\",\n    LAST = \"Last\"\n}\n\nclass LocalisedXGMMLWriter {\n\n    graph: QueryGraph;\n    m_xgmml: string;\n    m_visibleSubgraphs: { [id: string]: Subgraph };\n    m_visibleVertices: { [id: string]: Vertex };\n    m_semiVisibleVertices: { [id: string]: Vertex };\n    m_visibleEdges: { [id: string]: Edge };\n    noSpills: boolean;\n\n    constructor(graph: QueryGraph) {\n        this.graph = graph;\n\n        this.m_xgmml = \"\";\n        this.m_visibleSubgraphs = {};\n        this.m_visibleVertices = {};\n        this.m_semiVisibleVertices = {};\n        this.m_visibleEdges = {};\n    }\n\n    calcVisibility(items: GraphItem[], localisationDepth: number, localisationDistance: number, noSpills: boolean): void {\n        this.noSpills = noSpills;\n        items.forEach((item) => {\n            if (this.graph.isVertex(item)) {\n                this.calcInVertexVisibility(item, localisationDistance);\n                this.calcOutVertexVisibility(item, localisationDistance);\n            } else if (this.graph.isEdge(item)) {\n                this.calcInVertexVisibility(item.getSource(), localisationDistance - 1);\n                this.calcOutVertexVisibility(item.getTarget(), localisationDistance - 1);\n            } else if (this.graph.isSubgraph(item)) {\n                this.m_visibleSubgraphs[item.__hpcc_id] = item;\n                this.calcSubgraphVisibility(item, localisationDepth - 1);\n            }\n        });\n        this.calcVisibility2();\n    }\n\n    calcInVertexVisibility(vertex: Vertex, localisationDistance: number) {\n        if (this.noSpills && vertex.isSpill()) {\n            localisationDistance++;\n        }\n        this.m_visibleVertices[vertex.__hpcc_id] = vertex;\n        if (localisationDistance > 0) {\n            vertex.getInEdges().forEach(edge => {\n                this.calcInVertexVisibility(edge.getSource(), localisationDistance - 1);\n            });\n        }\n    }\n\n    calcOutVertexVisibility(vertex: Vertex, localisationDistance: number): void {\n        if (this.noSpills && vertex.isSpill()) {\n            localisationDistance++;\n        }\n        this.m_visibleVertices[vertex.__hpcc_id] = vertex;\n        if (localisationDistance > 0) {\n            vertex.getOutEdges().forEach(edge => {\n                this.calcOutVertexVisibility(edge.getTarget(), localisationDistance - 1);\n            });\n        }\n    }\n\n    calcSubgraphVisibility(subgraph: Subgraph, localisationDepth: number): void {\n        if (localisationDepth < 0) {\n            return;\n        }\n\n        if (localisationDepth > 0) {\n            subgraph.__hpcc_subgraphs.forEach((subgraph, idx) => {\n                this.calcSubgraphVisibility(subgraph, localisationDepth - 1);\n            });\n        }\n\n        subgraph.__hpcc_subgraphs.forEach((subgraph, idx) => {\n            this.m_visibleSubgraphs[subgraph.__hpcc_id] = subgraph;\n        });\n        subgraph.__hpcc_vertices.forEach((vertex, idx) => {\n            this.m_visibleVertices[vertex.__hpcc_id] = vertex;\n        });\n\n        //  Calculate edges that pass through the subgraph  ---\n        const dedupEdges = {};\n        this.graph.edges.forEach((edge: Edge, idx: any) => {\n            if (edge.getSource().__hpcc_parent !== edge.getTarget().__hpcc_parent && subgraph === this.getCommonAncestor(edge)) {\n                //  Only include one unique edge between subgraphs  ---\n                if (!dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + \"::\" + edge.getTarget().__hpcc_parent.__hpcc_id]) {\n                    dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + \"::\" + edge.getTarget().__hpcc_parent.__hpcc_id] = true;\n                    this.m_visibleEdges[edge.__hpcc_id] = edge;\n                }\n            }\n        });\n    }\n\n    buildVertexString(vertex: Vertex, isPoint: boolean): string {\n        let attrStr = \"\";\n        let propsStr = \"\";\n        const props = vertex.getProperties();\n        for (const key in props) {\n            if (isPoint && key.indexOf(\"_kind\") >= 0) {\n                propsStr += \"<att name=\\\"_kind\\\" value=\\\"point\\\"/>\";\n            } else if (key === \"id\" || key === \"label\") {\n                attrStr += \" \" + key + \"=\\\"\" + xmlEncode(props[key]) + \"\\\"\";\n            } else {\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\n            }\n        }\n        return \"<node\" + attrStr + \">\" + propsStr + \"</node>\";\n    }\n\n    buildEdgeString(edge: Edge): string {\n        let attrStr: string = \"\";\n        let propsStr: string = \"\";\n        const props = edge.getProperties();\n        for (const key in props) {\n            if (key.toLowerCase() === \"id\" ||\n                key.toLowerCase() === \"label\" ||\n                key.toLowerCase() === \"source\" ||\n                key.toLowerCase() === \"target\") {\n                attrStr += \" \" + key + \"=\\\"\" + xmlEncode(props[key]) + \"\\\"\";\n            } else {\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\n            }\n        }\n        return \"<edge\" + attrStr + \">\" + propsStr + \"</edge>\";\n    }\n\n    getAncestors(v: Vertex, ancestors: Subgraph[]): void {\n        let parent = v.__hpcc_parent;\n        while (parent) {\n            ancestors.push(parent);\n            parent = parent.__hpcc_parent;\n        }\n    }\n\n    getCommonAncestorV(v1: Vertex, v2: Vertex): Subgraph | null {\n        const v1_ancestors = [];\n        const v2_ancestors = [];\n        this.getAncestors(v1, v1_ancestors);\n        this.getAncestors(v2, v2_ancestors);\n        let finger1 = v1_ancestors.length - 1;\n        let finger2 = v2_ancestors.length - 1;\n        let retVal = null;\n        while (finger1 >= 0 && finger2 >= 0 && v1_ancestors[finger1] === v2_ancestors[finger2]) {\n            retVal = v1_ancestors[finger1];\n            --finger1;\n            --finger2;\n        }\n        return retVal;\n    }\n\n    getCommonAncestor(e: Edge): Subgraph | null {\n        return this.getCommonAncestorV(e.getSource(), e.getTarget());\n    }\n\n    calcAncestorVisibility(vertex: Vertex): void {\n        const ancestors = [];\n        this.getAncestors(vertex, ancestors);\n        ancestors.forEach((item, idx) => {\n            this.m_visibleSubgraphs[item.__hpcc_id] = item;\n        });\n    }\n\n    calcVisibility2(): void {\n        for (const key in this.m_visibleVertices) {\n            const vertex = this.m_visibleVertices[key];\n            vertex.getInEdges().forEach((edge: Edge, idx: any) => {\n                this.m_visibleEdges[edge.__hpcc_id] = edge;\n            });\n            vertex.getOutEdges().forEach((edge: Edge, idx: any) => {\n                this.m_visibleEdges[edge.__hpcc_id] = edge;\n            });\n            this.calcAncestorVisibility(vertex);\n        }\n        this.calcSemiVisibleVertices();\n    }\n\n    addSemiVisibleEdge(edge: Edge): void {\n        if (edge && !this.m_visibleEdges[edge.__hpcc_id]) {\n            this.m_visibleEdges[edge.__hpcc_id] = edge;\n        }\n    }\n\n    addSemiVisibleVertex(vertex: Vertex): void {\n        if (!this.m_visibleVertices[vertex.__hpcc_id]) {\n            this.m_semiVisibleVertices[vertex.__hpcc_id] = vertex;\n            this.calcAncestorVisibility(vertex);\n        }\n    }\n\n    calcSemiVisibleVertices(): void {\n        for (const key in this.m_visibleEdges) {\n            const edge = this.m_visibleEdges[key];\n            let source = edge.getSource();\n            this.addSemiVisibleVertex(source);\n            while (this.noSpills && source.isSpill()) {\n                const inEdges = source.getInEdges();\n                if (inEdges.length) {\n                    this.addSemiVisibleEdge(inEdges[0]);\n                    source = inEdges[0].getSource();\n                    this.addSemiVisibleVertex(source);\n                } else {\n                    break;\n                }\n            }\n            let target = edge.getTarget();\n            this.addSemiVisibleVertex(target);\n            while (this.noSpills && target.isSpill()) {\n                const outEdges = target.getOutEdges();\n                if (outEdges.length) {\n                    this.addSemiVisibleEdge(outEdges[0]);\n                    target = outEdges[0].getTarget();\n                    this.addSemiVisibleVertex(target);\n                } else {\n                    break;\n                }\n            }\n        }\n    }\n\n    writeXgmml(): void {\n        this.subgraphVisited(this.graph.subgraphs[0], true);\n        this.graph.edges.forEach((edge: any, idx: any) => {\n            this.edgeVisited(edge);\n        });\n    }\n\n    subgraphVisited(subgraph: Subgraph, root: boolean = false): boolean {\n        if (this.m_visibleSubgraphs[subgraph.__hpcc_id]) {\n            let propsStr = \"\";\n            this.m_xgmml += root ? \"\" : \"<node id=\\\"\" + subgraph.__hpcc_id + \"\\\"><att><graph>\";\n            const xgmmlLen = this.m_xgmml.length;\n            subgraph.walkSubgraphs(this);\n            subgraph.walkVertices(this);\n            if (xgmmlLen === this.m_xgmml.length) {\n                //  Add at least one child otherwise subgraphs will render as a vertex  ---\n                const vertex = subgraph.__hpcc_vertices[0];\n                if (vertex) {\n                    this.m_xgmml += this.buildVertexString(vertex, true);\n                }\n            }\n\n            const props = subgraph.getProperties();\n            for (const key in props) {\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\n            }\n            this.m_xgmml += root ? \"\" : \"</graph></att>\" + propsStr + \"</node>\";\n        }\n        return false;\n    }\n\n    vertexVisited(vertex: Vertex) {\n        if (this.m_visibleVertices[vertex.__hpcc_id]) {\n            this.m_xgmml += this.buildVertexString(vertex, false);\n        } else if (this.m_semiVisibleVertices[vertex.__hpcc_id]) {\n            this.m_xgmml += this.buildVertexString(vertex, true);\n        }\n    }\n\n    edgeVisited(edge: Edge) {\n        if (this.m_visibleEdges[edge.__hpcc_id]) {\n            this.m_xgmml += this.buildEdgeString(edge);\n        }\n    }\n}\n\nabstract class GraphItem {\n\n    abstract _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\";\n\n    __hpcc_graph: QueryGraph;\n    __hpcc_parent: Subgraph;\n    __widget: any;\n\n    __hpcc_id: string;\n    _globalID: string;\n\n    constructor(graph: QueryGraph, id: string) {\n        this.__hpcc_graph = graph;\n        this.__hpcc_id = id;\n        this._globalID = id;\n    }\n\n    getProperties() {\n        const retVal: { [id: string]: any } = {};\n        for (const key in this) {\n            if (key.indexOf(\"__\") !== 0 && this.hasOwnProperty(key)) {\n                retVal[key] = this[key];\n            }\n        }\n        return retVal;\n    }\n}\n\nclass Subgraph extends GraphItem {\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\";\n\n    __hpcc_subgraphs: any[];\n    __hpcc_vertices: any[];\n    __hpcc_edges: any[];\n    id: string;\n\n    constructor(graph: QueryGraph, id: string) {\n        super(graph, id);\n        this._globalType = id === \"0\" ? \"Graph\" : \"Cluster\";\n        this.__hpcc_subgraphs = [];\n        this.__hpcc_vertices = [];\n        this.__hpcc_edges = [];\n        this.id = id;\n    }\n\n    addSubgraph(subgraph) {\n        subgraph.__hpcc_parent = this;\n        if (!this.__hpcc_subgraphs.some(subgraph2 => subgraph === subgraph2)) {\n            this.__hpcc_subgraphs.push(subgraph);\n        }\n    }\n\n    addVertex(vertex) {\n        vertex.__hpcc_parent = this;\n        if (!this.__hpcc_vertices.some(vertex2 => vertex === vertex2)) {\n            this.__hpcc_vertices.push(vertex);\n        }\n    }\n\n    removeVertex(vertex: any) {\n        this.__hpcc_vertices = this.__hpcc_vertices.filter(vertex2 => vertex !== vertex2);\n    }\n\n    addEdge(edge) {\n        edge.__hpcc_parent = this;\n        if (!this.__hpcc_edges.some(edge2 => edge === edge2)) {\n            this.__hpcc_edges.push(edge);\n        }\n    }\n\n    removeEdge(edge: any) {\n        this.__hpcc_edges = this.__hpcc_edges.filter(edge2 => edge !== edge2);\n    }\n\n    remove() {\n        this.__hpcc_subgraphs.forEach(subgraph => subgraph.__hpcc_parent = this.__hpcc_parent);\n        this.__hpcc_vertices.forEach(vertex => vertex.__hpcc_parent = this.__hpcc_parent);\n        this.__hpcc_edges.forEach(edge => edge.__hpcc_parent = this.__hpcc_parent);\n        delete this.__hpcc_parent;\n        this.__hpcc_graph.removeItem(this);\n    }\n\n    walkSubgraphs(visitor: { subgraphVisited: (arg0: Subgraph) => boolean; }) {\n        this.__hpcc_subgraphs.forEach((subgraph, idx) => {\n            if (visitor.subgraphVisited(subgraph)) {\n                subgraph.walkSubgraphs(visitor);\n            }\n        });\n    }\n\n    walkVertices(visitor: { vertexVisited: (arg0: Vertex) => void; }) {\n        this.__hpcc_vertices.forEach((vertex, idx) => {\n            visitor.vertexVisited(vertex);\n        });\n    }\n}\n\nclass Vertex extends GraphItem {\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\" = \"Vertex\";\n    _isSpill: boolean;\n\n    constructor(graph: QueryGraph, id: string) {\n        super(graph, id);\n    }\n\n    isSpill() {\n        return this._isSpill;\n    }\n\n    remove() {\n        const inVertices = this.getInVertices();\n        if (inVertices.length <= 1) {\n            console.warn(this.__hpcc_id + \":  remove only supports single or zero inputs activities...\");\n        }\n        this.getInEdges().forEach((edge: Edge) => {\n            edge.remove();\n        });\n        this.getOutEdges().forEach((edge: Edge) => {\n            edge.setSource(inVertices[0]);\n        });\n        this.__hpcc_parent?.removeVertex(this);\n        this.__hpcc_graph.removeItem(this);\n    }\n\n    getInVertices(): Vertex[] {\n        return this.getInEdges().map((edge) => {\n            return edge.getSource();\n        });\n    }\n\n    getInEdges(): Edge[] {\n        return this.__hpcc_graph.edges.filter((edge) => {\n            return edge.getTarget() === this;\n        });\n    }\n\n    getOutVertices(): Vertex[] {\n        return this.getOutEdges().map((edge) => {\n            return edge.getTarget();\n        });\n    }\n\n    getOutEdges(): Edge[] {\n        return this.__hpcc_graph.edges.filter((edge) => {\n            return edge.getSource() === this;\n        });\n    }\n}\n\nclass Edge extends GraphItem {\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\" = \"Edge\";\n\n    _sourceActivity: any;\n    source: any;\n    _targetActivity: any;\n    target: any;\n\n    constructor(graph: QueryGraph, id: string) {\n        super(graph, id);\n        this._globalType = \"Edge\";\n    }\n\n    remove() {\n        this.__hpcc_graph.subgraphs.forEach((subgraph) => {\n            subgraph.removeEdge(this);\n        });\n        this.__hpcc_graph.removeItem(this);\n    }\n\n    getSource(): Vertex {\n        return this.__hpcc_graph.idx[this._sourceActivity || this.source] as Vertex;\n    }\n\n    setSource(source: Vertex) {\n        if (this._sourceActivity) {\n            this._sourceActivity = source.__hpcc_id;\n        } else if (this.source) {\n            this.source = source.__hpcc_id;\n        }\n        if (this.__widget) {\n            this.__widget.setSource(this.getSource().__widget);\n        }\n    }\n\n    getTarget(): Vertex {\n        return this.__hpcc_graph.idx[this._targetActivity || this.target] as Vertex;\n    }\n}\n\nexport class QueryGraph {\n    idx: { [id: string]: Subgraph | Vertex | Edge } = {};\n    subgraphs: Subgraph[] = [];\n    vertices: Vertex[] = [];\n    edges: Edge[] = [];\n\n    xgmml: string = \"\";\n\n    constructor() {\n        this.clear();\n    }\n\n    clear() {\n        this.xgmml = \"\";\n\n        this.idx = {};\n        this.subgraphs = [];\n        this.vertices = [];\n        this.edges = [];\n    }\n\n    load(xgmml: string) {\n        this.clear();\n        this.merge(xgmml);\n    }\n\n    merge(xgmml: string) {\n        this.xgmml = xgmml;\n        const parser = new DOMParser();\n        const dom = parser.parseFromString(xgmml, \"text/xml\");\n        this.walkDocument(dom.documentElement, \"0\");\n    }\n\n    isSubgraph(item: GraphItem): item is Subgraph {\n        return item instanceof Subgraph;\n    }\n\n    isVertex(item: GraphItem): item is Vertex {\n        return item instanceof Vertex;\n    }\n\n    isEdge(item: GraphItem): item is Edge {\n        return item instanceof Edge;\n    }\n\n    getGlobalType(item: QueryGraph | Subgraph | Vertex | Edge): GRAPH_TYPE {\n        if (item instanceof Vertex) {\n            return GRAPH_TYPE.VERTEX;\n        } else if (item instanceof Edge) {\n            return GRAPH_TYPE.EDGE;\n        } else if (item instanceof Subgraph) {\n            return GRAPH_TYPE.SUBGRAPH;\n        } else if (item instanceof QueryGraph) {\n            return GRAPH_TYPE.GRAPH;\n        }\n        return GRAPH_TYPE.UNKNOWN;\n    }\n\n    getGlobalTypeString(item: QueryGraph | Subgraph | Vertex | Edge): GRAPH_TYPE_STRING {\n        if (item instanceof Vertex) {\n            return GRAPH_TYPE_STRING.VERTEX;\n        } else if (item instanceof Edge) {\n            return GRAPH_TYPE_STRING.EDGE;\n        } else if (item instanceof Subgraph) {\n            return GRAPH_TYPE_STRING.SUBGRAPH;\n        } else if (item instanceof QueryGraph) {\n            return GRAPH_TYPE_STRING.GRAPH;\n        }\n        return GRAPH_TYPE_STRING.UNKNOWN;\n    }\n\n    getItem(docNode: HTMLElement, id: string): Subgraph | Vertex | Edge {\n        if (!this.idx[id]) {\n            switch (docNode.tagName) {\n                case \"graph\":\n                    const subgraph = new Subgraph(this, id);\n                    this.subgraphs.push(subgraph);\n                    this.idx[id] = subgraph;\n                    break;\n                case \"node\":\n                    const vertex = new Vertex(this, id);\n                    this.vertices.push(vertex);\n                    this.idx[id] = vertex;\n                    break;\n                case \"edge\":\n                    const edge = new Edge(this, id);\n                    this.edges.push(edge);\n                    this.idx[id] = edge;\n                    break;\n                default:\n                    console.warn(\"Graph.getItem - Unknown Node Type!\");\n                    break;\n            }\n        }\n        const retVal = this.idx[id];\n        Array.from(docNode.attributes).forEach(attr => {\n            safeAssign(retVal, attr.name, attr.value);\n        });\n        return retVal;\n    }\n\n    removeItem(item: Subgraph | Vertex | Edge) {\n        delete this.idx[item.__hpcc_id];\n        if (item instanceof Subgraph) {\n            this.subgraphs = this.subgraphs.filter((subgraph: Subgraph) => {\n                return item !== subgraph;\n            });\n        } else if (item instanceof Vertex) {\n            this.vertices = this.vertices.filter(vertex => {\n                return item !== vertex;\n            });\n        } else if (item instanceof Edge) {\n            this.edges = this.edges.filter((edge: Edge) => {\n                return item !== edge;\n            });\n        }\n    }\n\n    getChildByTagName(docNode: HTMLElement, tagName: string): HTMLElement | null {\n        let retVal: HTMLElement | null = null;\n        Array.from(docNode.childNodes as NodeListOf<HTMLElement>).some((childNode) => {\n            if (childNode.tagName === tagName) {\n                retVal = childNode;\n                return true;\n            }\n        });\n        return retVal;\n    }\n\n    walkDocument(docNode: HTMLElement, id: string): Subgraph | Vertex | Edge {\n        const retVal: any = this.getItem(docNode, id);\n        (docNode.childNodes as NodeListOf<HTMLElement>).forEach((childNode) => {\n            switch (childNode.nodeType) {\n                case 1:     // \tELEMENT_NODE\n                    switch (childNode.tagName) {\n                        case \"graph\":\n                            break;\n                        case \"node\":\n                            let isSubgraph = false;\n                            const attNode = this.getChildByTagName(childNode, \"att\");\n                            if (attNode) {\n                                const graphNode = this.getChildByTagName(attNode, \"graph\");\n                                if (graphNode) {\n                                    isSubgraph = true;\n                                    const subgraph = this.walkDocument(graphNode, childNode.getAttribute(\"id\"));\n                                    retVal.addSubgraph(subgraph);\n                                }\n                            }\n                            if (!isSubgraph) {\n                                const vertex = this.walkDocument(childNode, childNode.getAttribute(\"id\"));\n                                retVal.addVertex(vertex);\n                            }\n                            break;\n                        case \"att\":\n                            const name = childNode.getAttribute(\"name\");\n                            const uname = \"_\" + name;\n                            const value = childNode.getAttribute(\"value\");\n                            if (name.indexOf(\"Time\") === 0) {\n                                safeAssign(retVal, uname, value);\n                                safeAssign(retVal, name, \"\" + espTime2Seconds(value));\n                            } else if (name.indexOf(\"Size\") === 0) {\n                                safeAssign(retVal, uname, value);\n                                safeAssign(retVal, name, \"\" + espSize2Bytes(value));\n                            } else if (name.indexOf(\"Skew\") === 0) {\n                                safeAssign(retVal, uname, value);\n                                safeAssign(retVal, name, \"\" + espSkew2Number(value));\n                            } else {\n                                safeAssign(retVal, name, value);\n                            }\n                            break;\n                        case \"edge\":\n                            const edge: any = this.walkDocument(childNode, childNode.getAttribute(\"id\"));\n                            if (edge.NumRowsProcessed !== undefined) {\n                                edge._eclwatchCount = edge.NumRowsProcessed.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n                            } else if (edge.Count !== undefined) {\n                                edge._eclwatchCount = edge.Count.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n                            } else if (edge.count !== undefined) {\n                                edge._eclwatchCount = edge.count.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n                            }\n                            if (edge.inputProgress) {\n                                edge._eclwatchInputProgress = \"[\" + edge.inputProgress.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \"]\";\n                            }\n                            if (edge.SkewMaxRowsProcessed && edge.SkewMinRowsProcessed) {\n                                edge._eclwatchSkew = \"+\" + edge.SkewMaxRowsProcessed + \", \" + edge.SkewMinRowsProcessed;\n                            }\n                            if (edge._dependsOn) {\n                            } else if (edge._childGraph) {\n                            } else if (edge._sourceActivity || edge._targetActivity) {\n                                edge._isSpill = true;\n                                const source = edge.getSource();\n                                if (source) {\n                                    source._isSpill = true;\n                                }\n                                const target = edge.getTarget();\n                                if (target) {\n                                    target._isSpill = true;\n                                }\n                            }\n                            retVal.addEdge(edge);\n                            break;\n                        default:\n                            break;\n                    }\n                    break;\n                case 2:     // \tATTRIBUTE_NODE\n                case 3:     // \tTEXT_NODE\n                case 4:     // \tCDATA_SECTION_NODE\n                case 5:     // \tENTITY_REFERENCE_NODE\n                case 6:     // \tENTITY_NODE\n                case 7:     // \tPROCESSING_INSTRUCTION_NODE\n                case 8:     // \tCOMMENT_NODE\n                case 9:     // \tDOCUMENT_NODE\n                case 10:    // \tDOCUMENT_TYPE_NODE\n                case 11:    // \tDOCUMENT_FRAGMENT_NODE\n                case 12:    // \tNOTATION_NODE\n                    break;\n                default:\n                    break;\n            }\n        });\n        return retVal;\n    }\n\n    removeSubgraphs(): void {\n        const subgraphs = [...this.subgraphs];\n        subgraphs.forEach((subgraph) => {\n            if (subgraph.__hpcc_parent instanceof Subgraph) {\n                subgraph.remove();\n            }\n        });\n    }\n\n    removeSpillVertices(): void {\n        const vertices = [...this.vertices];\n        vertices.forEach((vertex) => {\n            if (vertex.isSpill()) {\n                vertex.remove();\n            }\n        });\n    }\n\n    getLocalisedXGMML(items: GraphItem[], localisationDepth: number, localisationDistance: number, noSpills: boolean): string {\n        const xgmmlWriter = new LocalisedXGMMLWriter(this);\n        xgmmlWriter.calcVisibility(items, localisationDepth, localisationDistance, noSpills);\n        xgmmlWriter.writeXgmml();\n        return \"<graph>\" + xgmmlWriter.m_xgmml + \"</graph>\";\n    }\n}\n", "import { Cache, Dispatch, IObserverHandle, Message } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { StoreService } from \"../services/wsStore.ts\";\n\nexport class StoreCache extends Cache<{ BaseUrl: string, Name: string, UserSpecific: boolean, Namespace: string }, Store> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.Name}:${obj.UserSpecific}-${obj.Namespace}`;\n        });\n    }\n}\nconst _store = new StoreCache();\n\nexport class ValueChangedMessage extends Message {\n\n    constructor(readonly key: string, public value: any, public oldValue?: any) {\n        super();\n    }\n\n    get canConflate(): boolean { return true; }\n    conflate(other: ValueChangedMessage): boolean {\n        if (this.key === other.key) {\n            this.value = other.value;\n            return true;\n        }\n        return false;\n    }\n\n    void(): boolean {\n        return this.value === this.oldValue;\n    }\n}\n\nexport class Store {\n    protected connection: StoreService;\n    get BaseUrl() { return this.connection.baseUrl; }\n    readonly Name: string;\n    readonly UserSpecific: boolean;\n    readonly Namespace: string;\n\n    protected _dispatch = new Dispatch<ValueChangedMessage>();\n\n    static attach(optsConnection: IOptions | IConnection | StoreService, Name: string = \"HPCCApps\", Namespace: string, UserSpecific: boolean = true): Store {\n        const retVal: Store = _store.get({ BaseUrl: optsConnection.baseUrl, Name, UserSpecific, Namespace }, () => {\n            return new Store(optsConnection, Name, Namespace, UserSpecific);\n        });\n        return retVal;\n    }\n\n    protected constructor(optsConnection: IOptions | IConnection | StoreService, Name: string, Namespace: string, UserSpecific: boolean) {\n        if (optsConnection instanceof StoreService) {\n            this.connection = optsConnection;\n        } else {\n            this.connection = new StoreService(optsConnection);\n        }\n        this.Name = Name;\n        this.UserSpecific = UserSpecific;\n        this.Namespace = Namespace;\n    }\n\n    private _knownValues: { [key: string]: any } = {};\n\n    protected create() {\n        this.connection.CreateStore({ Name: this.Name, Type: \"\", Description: \"\" });\n    }\n\n    set(key: string, value: string, broadcast = true): Promise<void> {\n        return this.connection.Set({\n            StoreName: this.Name,\n            UserSpecific: this.UserSpecific,\n            Namespace: this.Namespace,\n            Key: key,\n            Value: value\n        }).then(response => {\n            const oldValue = this._knownValues[key];\n            this._knownValues[key] = value;\n            if (broadcast) {\n                this._dispatch.post(new ValueChangedMessage(key, value, oldValue));\n            }\n        }).catch(e => {\n            console.error(`Store.set(\"${key}\", \"${value}\") failed:`, e);\n        });\n    }\n\n    get(key: string, broadcast = true): Promise<string | undefined> {\n        return this.connection.Fetch({\n            StoreName: this.Name,\n            UserSpecific: this.UserSpecific,\n            Namespace: this.Namespace,\n            Key: key\n        }).then(response => {\n            const oldValue = this._knownValues[key];\n            this._knownValues[key] = response.Value;\n            if (broadcast) {\n                this._dispatch.post(new ValueChangedMessage(key, response.Value, oldValue));\n            }\n            return response.Value;\n        }).catch(e => {\n            console.error(`Store.get(${key}) failed:`, e);\n            return undefined;\n        });\n    }\n\n    getAll(broadcast = true): Promise<{ [key: string]: string }> {\n        return this.connection.FetchAll({\n            StoreName: this.Name,\n            UserSpecific: this.UserSpecific,\n            Namespace: this.Namespace\n        }).then(response => {\n            const retVal: { [key: string]: string } = {};\n            const deletedValues = this._knownValues;\n            this._knownValues = {};\n            response.Pairs.Pair.forEach(pair => {\n                const oldValue = this._knownValues[pair.Key];\n                this._knownValues[pair.Key] = pair.Value;\n                delete deletedValues[pair.Key];\n                retVal[pair.Key] = pair.Value;\n                if (broadcast) {\n                    this._dispatch.post(new ValueChangedMessage(pair.Key, pair.Value, oldValue));\n                }\n            });\n            if (broadcast) {\n                for (const key in deletedValues) {\n                    this._dispatch.post(new ValueChangedMessage(key, undefined, deletedValues[key]));\n                }\n            }\n            return retVal;\n        }).catch(e => {\n            console.error(\"Store.getAll failed:\", e);\n            return {};\n        });\n    }\n\n    delete(key: string, broadcast = true): Promise<void> {\n        return this.connection.Delete({\n            StoreName: this.Name,\n            UserSpecific: this.UserSpecific,\n            Namespace: this.Namespace,\n            Key: key\n        }).then(response => {\n            const oldValue = this._knownValues[key];\n            delete this._knownValues[key];\n            if (broadcast) {\n                this._dispatch.post(new ValueChangedMessage(key, undefined, oldValue));\n            }\n        }).catch(e => {\n            console.error(`Store.delete(${key}) failed:`, e);\n        });\n    }\n\n    monitor(callback: (messages: ValueChangedMessage[]) => void): IObserverHandle {\n        return this._dispatch.attach(callback);\n    }\n}\n", "import { Cache, IEvent, scopedLogger, StateCallback, StateEvents, StateObject, StatePropCallback } from \"@hpcc-js/util\";\nimport { IConnection, IOptions } from \"../connection.ts\";\nimport { ESPExceptions } from \"../espConnection.ts\";\nimport { WsSMC } from \"../services/wsSMC.ts\";\nimport { FileSpray, FileSprayService, UpdateDFUWorkunitEx } from \"../services/fileSpray.ts\";\nimport * as WsTopology from \"../services/wsTopology.ts\";\n\nconst logger = scopedLogger(\"@hpcc-js/comms/dfuWorkunit.ts\");\n\nenum States {\n    Unknown = 0,\n    Scheduled,\n    Queued,\n    Started,\n    Aborted,\n    Failed,\n    Finished,\n    Monitoring,\n    Aborting,\n    NotFound = 999\n}\n\nexport class DFUWorkunitCache extends Cache<{ BaseUrl: string, ID: string }, DFUWorkunit> {\n    constructor() {\n        super((obj) => {\n            return `${obj.BaseUrl}-${obj.ID}`;\n        });\n    }\n}\nconst _workunits = new DFUWorkunitCache();\n\nexport type DFUWorkunitEvents = \"finished\" | StateEvents;\nexport type UDFUWorkunitState = FileSpray.DFUWorkunit;\nexport type IDFUWorkunitState = FileSpray.DFUWorkunit | WsSMC.ActiveWorkunit;\nexport class DFUWorkunit extends StateObject<UDFUWorkunitState, IDFUWorkunitState> implements FileSpray.DFUWorkunit {\n    connection: FileSprayService;\n    topologyConnection: WsTopology.TopologyService;\n    get BaseUrl() { return this.connection.baseUrl; }\n\n    //  Accessors  ---\n    get properties(): FileSpray.DFUWorkunit { return this.get(); }\n    get ID(): string { return this.get(\"ID\"); }\n    get DFUServerName(): string { return this.get(\"DFUServerName\"); }\n    get ClusterName(): string { return this.get(\"ClusterName\"); }\n    get JobName(): string { return this.get(\"JobName\"); }\n    get Queue(): string { return this.get(\"Queue\"); }\n    get User(): string { return this.get(\"User\"); }\n    get isProtected(): boolean { return this.get(\"isProtected\"); }\n    get Command(): number { return this.get(\"Command\"); }\n    get CommandMessage(): string { return this.get(\"CommandMessage\"); }\n    get PercentDone(): number { return this.get(\"PercentDone\"); }\n    get SecsLeft(): number { return this.get(\"SecsLeft\"); }\n    get ProgressMessage(): string { return this.get(\"ProgressMessage\"); }\n    get SummaryMessage(): string { return this.get(\"SummaryMessage\"); }\n    get State(): number { return this.get(\"State\", States.Unknown); }\n    get SourceLogicalName(): string { return this.get(\"SourceLogicalName\"); }\n    get SourceIP(): string { return this.get(\"SourceIP\"); }\n    get SourceFilePath(): string { return this.get(\"SourceFilePath\"); }\n    get SourceDali(): string { return this.get(\"SourceDali\"); }\n    get SourceRecordSize(): number { return this.get(\"SourceRecordSize\"); }\n    get SourceFormat(): number { return this.get(\"SourceFormat\"); }\n    get RowTag(): string { return this.get(\"RowTag\"); }\n    get SourceNumParts(): number { return this.get(\"SourceNumParts\"); }\n    get SourceDirectory(): string { return this.get(\"SourceDirectory\"); }\n    get DestLogicalName(): string { return this.get(\"DestLogicalName\"); }\n    get DestGroupName(): string { return this.get(\"DestGroupName\"); }\n    get DestDirectory(): string { return this.get(\"DestDirectory\"); }\n    get DestIP(): string { return this.get(\"DestIP\"); }\n    get DestFilePath(): string { return this.get(\"DestFilePath\"); }\n    get DestFormat(): number { return this.get(\"DestFormat\"); }\n    get DestNumParts(): number { return this.get(\"DestNumParts\"); }\n    get DestRecordSize(): number { return this.get(\"DestRecordSize\"); }\n    get Replicate(): boolean { return this.get(\"Replicate\"); }\n    get Overwrite(): boolean { return this.get(\"Overwrite\"); }\n    get Compress(): boolean { return this.get(\"Compress\"); }\n    get SourceCsvSeparate(): string { return this.get(\"SourceCsvSeparate\"); }\n    get SourceCsvQuote(): string { return this.get(\"SourceCsvQuote\"); }\n    get SourceCsvTerminate(): string { return this.get(\"SourceCsvTerminate\"); }\n    get SourceCsvEscape(): string { return this.get(\"SourceCsvEscape\"); }\n    get TimeStarted(): string { return this.get(\"TimeStarted\"); }\n    get TimeStopped(): string { return this.get(\"TimeStopped\"); }\n    get StateMessage(): string { return this.get(\"StateMessage\"); }\n    get MonitorEventName(): string { return this.get(\"MonitorEventName\"); }\n    get MonitorSub(): boolean { return this.get(\"MonitorSub\"); }\n    get MonitorShotLimit(): number { return this.get(\"MonitorShotLimit\"); }\n    get SourceDiffKeyName(): string { return this.get(\"SourceDiffKeyName\"); }\n    get DestDiffKeyName(): string { return this.get(\"DestDiffKeyName\"); }\n    get Archived(): boolean { return this.get(\"Archived\"); }\n    get encrypt(): string { return this.get(\"encrypt\"); }\n    get decrypt(): string { return this.get(\"decrypt\"); }\n    get failIfNoSourceFile(): boolean { return this.get(\"failIfNoSourceFile\"); }\n    get recordStructurePresent(): boolean { return this.get(\"recordStructurePresent\"); }\n    get quotedTerminator(): boolean { return this.get(\"quotedTerminator\"); }\n    get preserveCompression(): boolean { return this.get(\"preserveCompression\"); }\n    get expireDays(): number { return this.get(\"expireDays\"); }\n    get PreserveFileParts(): boolean { return this.get(\"PreserveFileParts\"); }\n    get FileAccessCost(): number { return this.get(\"FileAccessCost\"); }\n    get KbPerSecAve(): number { return this.get(\"KbPerSecAve\"); }\n    get KbPerSec(): number { return this.get(\"KbPerSec\"); }\n\n    //  Factories  ---\n    static create(optsConnection: IOptions | IConnection, dfuServerQueue: string): Promise<DFUWorkunit> {\n        const retVal: DFUWorkunit = new DFUWorkunit(optsConnection);\n        return retVal.connection.CreateDFUWorkunit({ DFUServerQueue: dfuServerQueue }).then((response) => {\n            _workunits.set(retVal);\n            retVal.set(response.result);\n            return retVal;\n        });\n    }\n\n    static attach(optsConnection: IOptions | IConnection, wuid: string, state?: IDFUWorkunitState): DFUWorkunit {\n        const retVal: DFUWorkunit = _workunits.get({ BaseUrl: optsConnection.baseUrl, ID: wuid }, () => {\n            return new DFUWorkunit(optsConnection, wuid);\n        });\n        if (state) {\n            retVal.set(state);\n        }\n        return retVal;\n    }\n\n    static sprayFixed(server: IOptions | IConnection, request: Partial<FileSpray.SprayFixed>): Promise<DFUWorkunit> {\n        const service = new FileSprayService(server);\n        return service.SprayFixedEx({\n            ...request\n        }).then(response => {\n            const wuid = response.wuid;\n            return service.GetDFUWorkunit({ wuid }).then(response => {\n                return DFUWorkunit.attach(server, wuid, response.result);\n            });\n        });\n    }\n\n    static sprayVariable(server: IOptions | IConnection, request: Partial<FileSpray.SprayVariable>): Promise<DFUWorkunit> {\n        const service = new FileSprayService(server);\n        return service.SprayVariableEx({\n            ...request\n        }).then(response => {\n            const wuid = response.wuid;\n            return service.GetDFUWorkunit({ wuid }).then(response => {\n                return DFUWorkunit.attach(server, wuid, response.result);\n            });\n        });\n    }\n\n    static despray(server: IOptions | IConnection, request: Partial<FileSpray.Despray>): Promise<DFUWorkunit> {\n        const service = new FileSprayService(server);\n        return service.DesprayEx({\n            ...request\n        }).then(response => {\n            const wuid = response.wuid;\n            return service.GetDFUWorkunit({ wuid }).then(response => {\n                return DFUWorkunit.attach(server, wuid, response.result);\n            });\n        });\n    }\n\n    update(request: Partial<UpdateDFUWorkunitEx>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\n        return this.connection.UpdateDFUWorkunitEx({\n            wu: {\n                JobName: request?.wu?.JobName ?? this.JobName,\n                isProtected: request?.wu?.isProtected ?? this.isProtected,\n                ID: this.ID,\n                State: this.State\n            },\n            ClusterOrig: this.ClusterName,\n            JobNameOrig: this.JobName,\n            isProtectedOrig: this.isProtected,\n            StateOrig: this.State\n        });\n    }\n\n    isComplete(): boolean {\n        switch (this.State) {\n            case States.Finished:\n            case States.Failed:\n            case States.Aborted:\n            case States.NotFound:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    isFailed() {\n        if (this.isComplete() && this.State !== States.Finished) {\n            return true;\n        }\n        return false;\n    }\n\n    isDeleted() {\n        switch (this.State) {\n            case States.NotFound:\n                return true;\n            default:\n        }\n        return false;\n    }\n\n    isRunning(): boolean {\n        return !this.isComplete();\n    }\n\n    abort(): Promise<FileSpray.AbortDFUWorkunitResponse> {\n        return this.connection.AbortDFUWorkunit({ wuid: this.ID });\n    }\n\n    delete() {\n        return this.DFUWUAction(FileSpray.DFUWUActions.Delete).then(response => {\n            return this.refresh().then(() => {\n                this._monitor();\n                return response;\n            });\n        });\n    }\n\n    async refresh(full: boolean = false): Promise<this> {\n        await this.GetDFUWorkunit();\n        return this;\n    }\n\n    fetchXML(callback?: void): Promise<string> {\n        return this.DFUWUFile();\n    }\n\n    //  Monitoring  ---\n    protected _monitor(): void {\n        if (this.isComplete()) {\n            this._monitorTickCount = 0;\n            return;\n        }\n        super._monitor();\n    }\n\n    protected _monitorTimeoutDuration(): number {\n        const retVal = super._monitorTimeoutDuration();\n        if (this._monitorTickCount <= 1) {          //  Once\n            return 3000;\n        } else if (this._monitorTickCount <= 5) {   //  Twice\n            return 6000;\n        } else if (this._monitorTickCount <= 7) {   //  Twice\n            return 12000;\n        }\n        return retVal;\n    }\n\n    protected DFUWUFile(_request: Partial<FileSpray.DFUWUFileRequest> = {}): Promise<string> {\n        return this.connection.DFUWUFileEx({\n            ..._request, Wuid: this.ID\n        }).then(response => {\n            //TODO: additional processing?\n            return response;\n        }).catch((e: ESPExceptions) => {\n            return \"\";\n        });\n    }\n\n    protected DFUWUAction(actionType: FileSpray.DFUWUActions): Promise<FileSpray.DFUWorkunitsActionResponse> {\n        return this.connection.DFUWorkunitsAction({\n            wuids: { Item: [this.ID] },\n            Type: actionType\n        }).then((response) => {\n            if (actionType === FileSpray.DFUWUActions.Delete) return response;\n            return this.refresh().then(() => {\n                this._monitor();\n                return response;\n            });\n        });\n    }\n\n    //  Events  ---\n    on(eventID: DFUWorkunitEvents, propIDorCallback: StateCallback | keyof UDFUWorkunitState, callback?: StatePropCallback): this {\n        if (this.isCallback(propIDorCallback)) {\n            switch (eventID) {\n                case \"finished\":\n                    super.on(\"propChanged\", \"State\", (changeInfo: IEvent) => {\n                        if (this.isComplete()) {\n                            propIDorCallback([changeInfo]);\n                        }\n                    });\n                    break;\n                case \"changed\":\n                    super.on(eventID, propIDorCallback);\n                    break;\n                default:\n            }\n        } else {\n            switch (eventID) {\n                case \"changed\":\n                    super.on(eventID, propIDorCallback, callback!);\n                    break;\n                default:\n            }\n        }\n        this._monitor();\n        return this;\n    }\n\n    watchUntilComplete(callback?: StateCallback): Promise<this> {\n        return new Promise((resolve, _) => {\n            const watchHandle = this.watch((changes) => {\n                if (callback) {\n                    callback(changes);\n                }\n                if (this.isComplete()) {\n                    watchHandle.release();\n                    resolve(this);\n                }\n            });\n        });\n    }\n\n    watchUntilRunning(callback?: StateCallback): Promise<this> {\n        return new Promise((resolve, _) => {\n            const watchHandle = this.watch((changes) => {\n                if (callback) {\n                    callback(changes);\n                }\n                if (this.isComplete() || this.isRunning()) {\n                    watchHandle.release();\n                    resolve(this);\n                }\n            });\n        });\n    }\n\n    //  ---  ---  ---\n    protected constructor(optsConnection: IOptions | IConnection, wuid?: string) {\n        super();\n        this.connection = new FileSprayService(optsConnection);\n        this.topologyConnection = new WsTopology.TopologyService(optsConnection);\n        this.clearState(wuid);\n    }\n\n    clearState(wuid?: string) {\n        this.clear({\n            ID: wuid,\n            State: States.Unknown\n        });\n    }\n\n    //  FileSpray passthroughs  ---\n    protected GetDFUWorkunit(_request: Partial<FileSpray.GetDFUWorkunit> = {}): Promise<FileSpray.GetDFUWorkunitResponse> {\n        return this.connection.GetDFUWorkunit({ ..._request, wuid: this.ID }).then((response) => {\n            this.set(response.result);\n            return response;\n        }).catch((e: ESPExceptions) => {\n            //  deleted  ---\n            const wuMissing = e.Exception.some((exception) => {\n                if (exception.Code === 20080 || exception.Code === 20081) {\n                    this.clearState(this.ID);\n                    this.set(\"State\", States.NotFound);\n                    return true;\n                }\n                return false;\n            });\n            if (!wuMissing) {\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\n                throw e;\n            }\n            return {} as FileSpray.GetDFUWorkunitResponse;\n        });\n    }\n}", "import * as cp from \"node:child_process\";\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nimport { exists, scopedLogger, xml2json, XMLNode } from \"@hpcc-js/util\";\nimport { attachWorkspace, Workspace } from \"./eclMeta.ts\";\n\nconst logger = scopedLogger(\"clienttools/eclcc\");\nconst exeExt = os.type() === \"Windows_NT\" ? \".exe\" : \"\";\n\nfunction tidyCRLF(inStr: string): string {\n    return inStr.split(\"\\r\\n\").join(\"\\n\").split(\"\\r\").join(\"\\n\");\n}\n\nexport class Version {\n    readonly prefix: string = \"\";\n    readonly major: number = 0;\n    readonly minor: number = 0;\n    readonly patch: number = 0;\n    readonly postfix: string = \"\";\n\n    constructor(build: string) {\n        const parts = build.split(\" \");\n        if (parts.length) {\n            const match = /(?:(\\w+)_)?(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.*))?/.exec(parts[parts.length - 1]);\n            if (match) {\n                this.prefix = match[1] || \"\";\n                this.major = +match[2] || 0;\n                this.minor = +match[3] || 0;\n                this.patch = +match[4] || 0;\n                this.postfix = match[5] || \"\";\n            }\n        }\n    }\n\n    parse(build: string) {\n    }\n\n    exists(): boolean {\n        return this.major !== 0 || this.minor !== 0 || this.patch !== 0 || this.postfix !== \"\";\n    }\n\n    compare(other: Version): number {\n        if (this.major > other.major) return 1;\n        if (this.major < other.major) return -1;\n        if (this.minor > other.minor) return 1;\n        if (this.minor < other.minor) return -1;\n        if (this.patch > other.patch) return 1;\n        if (this.patch < other.patch) return -1;\n        if (this.postfix === \"\" && other.postfix !== \"\") return 1;\n        return this.postfix.localeCompare(other.postfix);\n    }\n\n    toString(): string {\n        return `${this.prefix}_${this.major}.${this.minor}.${this.patch}-${this.postfix}`;\n    }\n}\n\ninterface IExecFile {\n    code: number;\n    stderr: string;\n    stdout: string;\n}\n\nexport interface IECLErrorWarning {\n    filePath: string;\n    line: number;\n    col: number;\n    msg: string;\n    severity: string;\n}\n\nconst ERROR = \"error\";\nconst WARN = \"warning\";\n\nexport class Errors {\n    protected _checked: string[];\n    protected errWarn: IECLErrorWarning[] = [];\n    protected errOther: string[] = [];\n\n    constructor(checked: string[]) {\n        this._checked = checked;\n    }\n\n    checked(): string[] {\n        return this._checked;\n    }\n\n    all(): IECLErrorWarning[] {\n        return this.errWarn;\n    }\n\n    errors(): IECLErrorWarning[] {\n        return this.errWarn.filter(e => e.severity === ERROR);\n    }\n\n    hasError(): boolean {\n        return this.errors().length > 0;\n    }\n\n    warnings(): IECLErrorWarning[] {\n        return this.errWarn.filter(e => e.severity === WARN);\n    }\n\n    hasWarning(): boolean {\n        return this.warnings().length > 0;\n    }\n\n    info(): IECLErrorWarning[] {\n        return this.errWarn.filter(e => [ERROR, WARN].indexOf(e.severity) < 0);\n    }\n\n    hasOther(): boolean {\n        return this.info().length > 0;\n    }\n\n    unknown(): string[] {\n        return this.errOther;\n    }\n\n    hasUnknown(): boolean {\n        return this.unknown().length > 0;\n    }\n}\n\nexport class EclccErrors extends Errors {\n\n    constructor(stdErr: string, checked: string[]) {\n        super(checked);\n        if (stdErr && stdErr.length) {\n            for (const errLine of stdErr.split(os.EOL)) {\n                let match = /([a-zA-Z]:\\\\(?:[- \\w\\.\\d]+\\\\)*(?:[- \\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\) ?: ?(error|warning|info) C(\\d*) ?: ?(.*)/.exec(errLine);\n                if (match) {\n                    const [, filePath, row, _col, severity, code, _msg] = match;\n                    const line: number = +row;\n                    const col: number = +_col;\n                    const msg = code + \":  \" + _msg;\n                    this.errWarn.push({ filePath, line, col, msg, severity });\n                    continue;\n                }\n                match = /(error|warning|info): (.*)/i.exec(errLine);\n                if (match) {\n                    const [, severity, msg] = match;\n                    this.errWarn.push({ filePath: \"\", line: 0, col: 0, msg, severity });\n                    continue;\n                }\n                match = /\\d error(s?), \\d warning(s?)/.exec(errLine);\n                if (match) {\n                    continue;\n                }\n                logger.warning(`parseECLErrors:  Unable to parse \"${errLine}\"`);\n                this.errOther.push(errLine);\n            }\n        }\n        this._checked = checked;\n    }\n}\n\nexport class EnvchkErrors extends Errors {\n\n    private _lines: string[];\n\n    constructor(filePath: string, stdErr: string, checked: string[]) {\n        super(checked);\n        let content: string = fs.readFileSync(filePath, \"utf8\");\n        content = content.replace(/\\r\\n/g, \"\\n\");\n        this._lines = content.split(\"\\n\");\n        if (stdErr && stdErr.length) {\n            for (const errLine of stdErr.split(os.EOL)) {\n                const match = /(Warning|Error) : Path\\=(\\S*?)(\\[\\S*\\])? Message\\=(.*)/.exec(errLine);\n                if (match) {\n                    const [, severity, _path, _attr, _msg] = match;\n                    const msg = `${_path} ${_attr ? _attr : \"\"}:  ${_msg}`;\n                    const [line, col] = this.locate(_path);\n                    this.errWarn.push({ filePath, line, col, msg, severity });\n                    continue;\n                }\n                if (match) {\n                    continue;\n                }\n                logger.warning(`parseECLErrors:  Unable to parse \"${errLine}\"`);\n                this.errOther.push(errLine);\n            }\n        }\n        this._checked = checked;\n    }\n\n    locate(path: string): [number, number] {\n        const pathParts = path.split(\"/\");\n        if (pathParts.length && pathParts[0] === \"\") {\n            pathParts.shift();\n        }\n        if (pathParts.length > 0) {\n            let lineIdx = 0;\n            for (const line of this._lines) {\n                const testStr = \"<\" + pathParts[0];\n                if (line.indexOf(testStr + \" \") >= 0 || line.indexOf(testStr + \">\") >= 0) {\n                    pathParts.shift();\n                    if (pathParts.length === 0) {\n                        return [lineIdx + 1, line.indexOf(testStr) + 1];\n                    }\n                }\n                ++lineIdx;\n            }\n        }\n        return [0, 0];\n    }\n}\n\nexport function walkXmlJson(node: any, callback: (key: string, childNode: any, stack: any[]) => void, stack?: any[]) {\n    stack = stack || [];\n    stack.push(node);\n    for (const key in node) {\n        if (node.hasOwnProperty(key)) {\n            const childNode = node[key];\n            callback(key, childNode, stack);\n            if (childNode instanceof Array) {\n                childNode.forEach(child => {\n                    walkXmlJson(child, callback, stack);\n                });\n            } else if (typeof childNode === \"object\") {\n                walkXmlJson(childNode, callback, stack);\n            }\n        }\n    }\n    stack.pop();\n}\n\nexport class LocalWorkunit {\n    jsonWU: any;\n\n    constructor(jsonWU: any) {\n        this.jsonWU = jsonWU;\n    }\n\n    bpGetValidLocations(filePath: any) {\n        const retVal: any[] = [];\n        if (exists(\"W_LOCAL.Graphs\", this.jsonWU)) {\n            let id = \"\";\n            walkXmlJson(this.jsonWU.W_LOCAL.Graphs, (key: string, item: any, _stack: any[]) => {\n                if (key === \"$\" && item.id) {\n                    id = item.id;\n                }\n                if (key === \"$\" && item.name === \"definition\") {\n                    const match = /([a-z,A-Z]:\\\\(?:[-\\w\\.\\d]+\\\\)*(?:[-\\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\)/.exec(item.value);\n                    if (match) {\n                        const [, file, row, _col] = match;\n                        const line: number = +row;\n                        const col: number = +_col;\n                        if (filePath === file) {\n                            retVal.push({ file, line, col, id });\n                        }\n                    }\n                }\n                // console.log(`${key}:  ` + JSON.stringify(item));\n            });\n        }\n        return retVal;\n    }\n}\n\nexport interface IArchive {\n    content: string;\n    err: EclccErrors;\n}\n\nexport interface IBundle {\n    name: string;\n    description: string;\n    url: string;\n    props?: { [key: string]: string | number | boolean };\n}\n\nexport class ClientTools {\n    readonly eclccPath: string;\n    readonly envchkPath: string;\n    readonly eclBundlePath: string;\n    readonly binPath: string;\n    protected cwd: string;\n    protected includeFolders: string[];\n    protected _legacyMode: boolean;\n    protected _args: string[];\n    protected _version: Version;\n\n    constructor(eclccPath: string, cwd?: string, includeFolders: string[] = [], legacyMode: boolean = false, args: string[] = [], version?: Version) {\n        this.eclccPath = eclccPath;\n        this.binPath = path.dirname(this.eclccPath);\n        this.envchkPath = path.join(this.binPath, \"envchk\" + exeExt);\n        this.eclBundlePath = path.join(this.binPath, \"ecl-bundle\" + exeExt);\n        this.cwd = path.normalize(cwd || this.binPath);\n        this.includeFolders = includeFolders;\n        this._legacyMode = legacyMode;\n        this._args = args;\n        this._version = version!;\n    }\n\n    clone(cwd?: string, includeFolders?: string[], legacyMode: boolean = false, args: string[] = []) {\n        return new ClientTools(this.eclccPath, cwd, includeFolders, legacyMode, args, this._version);\n    }\n\n    exists(filePath: string) {\n        try {\n            fs.accessSync(filePath);\n            return true;\n        } catch (e) { }\n        return false;\n    }\n\n    args(additionalItems: string[] = []): string[] {\n        const retVal: string[] = [...this._args];\n        if (this._legacyMode) {\n            retVal.push(\"-legacy\");\n        }\n        return retVal.concat(this.includeFolders.map(includePath => {\n            return \"-I\" + path.normalize(includePath);\n        })).concat(additionalItems);\n    }\n\n    version(): Promise<Version> {\n        if (this._version) {\n            return Promise.resolve(this._version);\n        }\n        return this.execFile(this.eclccPath, this.binPath, this.args([\"--version\"]), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile): Version => {\n            this._version = new Version(response.stdout);\n            return this._version;\n        });\n    }\n\n    versionSync(): Version {\n        return this._version;\n    }\n\n    _paths = {};\n    paths() {\n        return this.execFile(this.eclccPath, this.cwd, this.args([\"-showpaths\"]), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile) => {\n            if (response && response.stdout && response.stdout.length) {\n                const paths = response.stdout.split(/\\r?\\n/);\n                for (const path of paths) {\n                    const parts = path.split(\"=\");\n                    if (parts.length === 2) {\n                        this._paths[parts[0]] = parts[1];\n                    }\n                }\n            }\n            return this._paths;\n        });\n    }\n\n    private loadXMLDoc(filePath: any, removeOnRead?: boolean): Promise<XMLNode> {\n        return new Promise((resolve, _reject) => {\n            const fileData = fs.readFileSync(filePath, \"ascii\");\n            const retVal = xml2json(fileData as any);\n            if (removeOnRead) {\n                fs.unlink(filePath, (err) => { });\n            }\n            resolve(retVal);\n        });\n    }\n\n    createWU(filename: string): Promise<LocalWorkunit> {\n        const tmpName = path.join(os.tmpdir(), `eclcc-wu-tmp-${crypto.randomBytes(8).toString(\"hex\")}`);\n        const args = [\"-o\" + tmpName, \"-wu\"].concat([filename]);\n        return this.execFile(this.eclccPath, this.cwd, this.args(args), \"eclcc\", `Cannot find ${this.eclccPath}`).then((_response: IExecFile) => {\n            const xmlPath = path.normalize(tmpName + \".xml\");\n            const contentPromise = this.exists(xmlPath) ? this.loadXMLDoc(xmlPath, true) : Promise.resolve({});\n            return contentPromise.then((content) => {\n                return new LocalWorkunit(content);\n            });\n        });\n    }\n\n    createArchive(filename: string): Promise<IArchive> {\n        const args = [\"-E\"].concat([filename]);\n        return this.execFile(this.eclccPath, this.cwd, this.args(args), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile): IArchive => {\n            return {\n                content: response.stdout,\n                err: new EclccErrors(response.stderr, [])\n            };\n        });\n    }\n\n    attachWorkspace(): Workspace {\n        return attachWorkspace(this.cwd);\n    }\n\n    fetchMeta(filePath: string): Promise<Workspace> {\n        return Promise.all([\n            attachWorkspace(this.cwd),\n            this.execFile(this.eclccPath, this.cwd, this.args([\"-M\", filePath]), \"eclcc\", `Cannot find ${this.eclccPath}`)\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\n            try {\n                if (execFileResponse && execFileResponse.stdout && execFileResponse.stdout.length) {\n                    metaWorkspace.parseMetaXML(execFileResponse.stdout);\n                }\n            } catch (e: any) {\n                logger.error(`fetchMeta:  Error parsing XML - ${e?.message ?? \"unknown\"}`);\n            }\n            return metaWorkspace;\n        });\n    }\n\n    syntaxCheck(filePath: string, args: string[] = [\"-syntax\"]): Promise<Errors> {\n        return Promise.all([\n            attachWorkspace(this.cwd),\n            this.execFile(this.eclccPath, this.cwd, this.args([...args, \"-M\", filePath]), \"eclcc\", `Cannot find ${this.eclccPath}`)\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\n            let checked: string[] = [];\n            try {\n                if (execFileResponse && execFileResponse.stdout && execFileResponse.stdout.length) {\n                    checked = metaWorkspace.parseMetaXML(execFileResponse.stdout);\n                }\n            } catch (e: any) {\n                logger.error(`syntaxCheck:  Error parsing XML - ${e?.message ?? \"unknown\"}`);\n            }\n            return new EclccErrors(execFileResponse ? execFileResponse.stderr : \"\", checked);\n        });\n    }\n\n    envCheck(filePath: string, args: string[] = []): Promise<Errors> {\n        return Promise.all([\n            attachWorkspace(this.cwd),\n            this.execFile(this.envchkPath, this.cwd, this.args([...args, filePath]), \"envchk\", `Cannot find ${this.envchkPath}`)\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\n            return new EnvchkErrors(filePath, execFileResponse ? execFileResponse.stderr : \"\", []);\n        });\n    }\n\n    bundleList(): Promise<IBundle[]> {\n        const bundlesRegEx = /\\|(.*)\\|(.*)\\|(.*)\\|/g;\n        return Promise.all([\n            fetch(\"https://raw.githubusercontent.com/hpcc-systems/ecl-bundles/master/README.rst\")\n                .then(response => response.text())\n                .then(readme => {\n                    const retVal: IBundle[] = [];\n                    let m = bundlesRegEx.exec(readme);\n                    while (m) {\n                        retVal.push({\n                            name: m[1].trim(),\n                            description: m[2].trim(),\n                            url: m[3].trim()\n                        });\n                        m = bundlesRegEx.exec(readme);\n                    }\n                    return retVal;\n                }),\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"list\"]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\n                .then(installedText => {\n                    return tidyCRLF(installedText.stdout).split(\"\\n\");\n                }).then(installedItems => {\n                    const allProps = {};\n                    return Promise.all(installedItems.filter(ii => !!ii).map(ii => {\n                        return this.execFile(this.eclBundlePath, this.cwd, this.args([\"info\", ii]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\n                            .then(infoText => {\n                                return tidyCRLF(infoText.stdout).split(\"\\n\");\n                            }).then(info => {\n                                const props = {};\n                                info.forEach(line => {\n                                    const parts = line.split(\":\");\n                                    props[parts.shift().trim()] = parts.join(\":\").trim();\n                                });\n                                allProps[ii] = {\n                                    name: ii,\n                                    props\n                                };\n                            });\n                    })).then(() => allProps);\n                })\n        ]).then(([bundles, installed]) => {\n            bundles.forEach(b => {\n                if (installed[b.name]) {\n                    b.props = installed[b.name].props;\n                    delete installed[b.name];\n                }\n            });\n            for (const key in installed) {\n                bundles.push({\n                    name: key,\n                    url: \"\",\n                    description: \"\",\n                    props: installed[key].props\n                });\n            }\n            return bundles;\n        }).catch(e => {\n            return [];\n        });\n    }\n\n    bundleInstall(bundleUrl) {\n        return Promise.all([\n            attachWorkspace(this.cwd),\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"install\", bundleUrl]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\n            return execFileResponse;\n        });\n    }\n\n    bundleUninstall(name) {\n        return Promise.all([\n            attachWorkspace(this.cwd),\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"uninstall\", name]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\n            return execFileResponse;\n        });\n    }\n\n    private execFile(cmd: string, cwd: string, args: string[], _toolName: string, _notFoundError?: string): Promise<{ code: number, stdout: string, stderr: string }> {\n        return new Promise((resolve, _reject) => {\n            logger.debug(`${cmd} ${args.join(\" \")}`);\n            const child = cp.spawn(cmd, args, { cwd });\n            let stdOut = \"\";\n            let stdErr = \"\";\n            child.stdout.on(\"data\", (data) => {\n                stdOut += data.toString();\n            });\n            child.stderr.on(\"data\", (data) => {\n                stdErr += data.toString();\n            });\n            child.on(\"close\", (_code, _signal) => {\n                resolve({\n                    code: _code,\n                    stdout: stdOut.trim(),\n                    stderr: stdErr.trim()\n                });\n            });\n        });\n    }\n}\n\nfunction locateClientToolsInFolder(rootFolder: string, clientTools: ClientTools[]) {\n    if (rootFolder) {\n        const hpccSystemsFolder = path.join(rootFolder, \"HPCCSystems\");\n        if (fs.existsSync(hpccSystemsFolder) && fs.statSync(hpccSystemsFolder).isDirectory()) {\n            if (os.type() !== \"Windows_NT\") {\n                const eclccPath = path.join(hpccSystemsFolder, \"bin\", \"eclcc\");\n                if (fs.existsSync(eclccPath)) {\n                    clientTools.push(new ClientTools(eclccPath));\n                }\n            }\n            fs.readdirSync(hpccSystemsFolder).forEach((versionFolder) => {\n                const eclccPath = path.join(hpccSystemsFolder, versionFolder, \"clienttools\", \"bin\", \"eclcc\" + exeExt);\n                if (fs.existsSync(eclccPath)) {\n                    const name = path.basename(versionFolder);\n                    const version = new Version(name);\n                    if (version.exists()) {\n                        clientTools.push(new ClientTools(eclccPath));\n                    }\n                }\n            });\n        }\n    }\n}\n\nlet allClientToolsCache: Promise<ClientTools[]>;\nexport function clearAllClientToolsCache() {\n    allClientToolsCache = undefined;\n}\n\nexport function locateAllClientTools() {\n    if (allClientToolsCache) return allClientToolsCache;\n    const clientTools: ClientTools[] = [];\n    switch (os.type()) {\n        case \"Windows_NT\":\n            const rootFolder86 = process.env[\"ProgramFiles(x86)\"] || \"\";\n            if (rootFolder86) {\n                locateClientToolsInFolder(rootFolder86, clientTools);\n            }\n            const rootFolder = process.env[\"ProgramFiles\"] || \"\";\n            if (rootFolder) {\n                locateClientToolsInFolder(rootFolder, clientTools);\n            }\n            if (!rootFolder86 && !rootFolder) {\n                locateClientToolsInFolder(\"c:\\\\Program Files (x86)\", clientTools);\n            }\n            break;\n        case \"Linux\":\n        case \"Darwin\":\n            locateClientToolsInFolder(\"/opt\", clientTools);\n            break;\n        default:\n            break;\n    }\n\n    allClientToolsCache = Promise.all(clientTools.map(ct => ct.version())).then(() => {\n        clientTools.sort((l: ClientTools, r: ClientTools) => {\n            return r.versionSync().compare(l.versionSync());\n        });\n        return clientTools;\n    });\n    return allClientToolsCache;\n}\n\nlet eclccPathMsg = \"\";\nfunction logEclccPath(eclccPath: string) {\n    const msg = `Using eclccPath setting:  ${eclccPath}`;\n    if (eclccPathMsg !== msg) {\n        logger.info(msg);\n        eclccPathMsg = msg;\n    }\n}\n\nexport function locateClientTools(overridePath: string = \"\", build: string = \"\", cwd: string = \".\", includeFolders: string[] = [], legacyMode: boolean = false, args: string[] = []): Promise<ClientTools> {\n    if (overridePath && fs.existsSync(overridePath)) {\n        logEclccPath(overridePath);\n        return Promise.resolve(new ClientTools(overridePath, cwd, includeFolders, legacyMode, args));\n    }\n    return locateAllClientTools().then((allClientToolsCache2) => {\n        if (!allClientToolsCache2.length) {\n            throw new Error(\"Unable to locate ECL Client Tools.\");\n        }\n        const buildVersion = new Version(build);\n        let latest: ClientTools | undefined;\n        let bestMajor: ClientTools | undefined;\n        for (const ct of allClientToolsCache2) {\n            const ctVersion = ct.versionSync();\n            if (ctVersion.exists()) {\n                if (!latest) latest = ct;\n                if (!bestMajor && buildVersion.major === ctVersion.major) bestMajor = ct;\n                if (buildVersion.major === ctVersion.major && buildVersion.minor === ctVersion.minor) return ct.clone(cwd, includeFolders, legacyMode, args);\n            }\n        }\n        const best: ClientTools = bestMajor || latest!;\n        logEclccPath(best.eclccPath);\n        return best.clone(cwd, includeFolders, legacyMode, args);\n    });\n}\n", "import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport { Dictionary, DictionaryNoCase, find, SAXStackParser, scopedLogger, XMLNode } from \"@hpcc-js/util\";\nimport { ClientTools, locateClientTools } from \"./eclcc.ts\";\n\nconst logger = scopedLogger(\"clienttools/eclmeta\");\n\nexport interface IFilePath {\n    scope: ECLScope;\n}\n\nconst _inspect = false;\nfunction inspect(obj: any, _id: string, known: any) {\n    if (_inspect) {\n        for (const key in obj) {\n            const id = `${_id}.${key}`;\n            if (key !== \"$\" && known[key] === undefined && known[key.toLowerCase() + \"s\"] === undefined) {\n                logger.debug(id);\n            }\n        }\n        if (obj.$) {\n            inspect(obj.$, _id + \".$\", known);\n        }\n    }\n}\n\nexport class Attr {\n    __attrs: { [id: string]: string };\n    name: string;\n\n    constructor(xmlAttr: XMLNode) {\n        this.__attrs = xmlAttr.$;\n        this.name = xmlAttr.$.name;\n    }\n}\n\nexport class Field {\n    __attrs: { [id: string]: string };\n    definition: Definition;\n    get scope(): ECLScope {\n        return this.definition;\n    }\n    name: string;\n    type: string;\n\n    constructor(definition: Definition, xmlField: XMLNode) {\n        this.__attrs = xmlField.$;\n        this.definition = definition;\n        this.name = xmlField.$.name;\n        this.type = xmlField.$.type;\n    }\n}\n\nexport interface ECLDefinitionLocation {\n    filePath: string;\n    line: number;\n    charPos: number;\n    definition?: Definition;\n    source?: Source;\n}\n\nexport interface ISuggestion {\n    name: string;\n    type: string;\n}\n\nexport class ECLScope implements IFilePath {\n    get scope(): ECLScope {\n        return this;\n    }\n    name: string;\n    type: string;\n    sourcePath: string;\n    line: number;\n    start: number;\n    body: number;\n    end: number;\n    definitions: Definition[];\n\n    constructor(name: string, type: string, sourcePath: string, xmlDefinitions: XMLNode[], line: number = 1, start: number = 0, body: number = 0, end: number = Number.MAX_VALUE) {\n        this.name = name;\n        this.type = type;\n        this.sourcePath = path.normalize(sourcePath);\n        this.line = +line - 1;\n        this.start = +start;\n        this.body = +body;\n        this.end = +end;\n        this.definitions = this.parseDefinitions(xmlDefinitions);\n    }\n\n    private parseDefinitions(definitions: XMLNode[] = []): Definition[] {\n        return definitions.map(definition => {\n            const retVal = new Definition(this.sourcePath, definition);\n            inspect(definition, \"definition\", retVal);\n            return retVal;\n        });\n    }\n\n    contains(charOffset: number) {\n        return charOffset >= this.start && charOffset <= this.end;\n    }\n\n    scopeStackAt(charOffset: number): ECLScope[] {\n        let retVal: ECLScope[] = [];\n        if (this.contains(charOffset)) {\n            retVal.push(this);\n            this.definitions.forEach(def => {\n                retVal = def.scopeStackAt(charOffset).concat(retVal);\n            });\n        }\n        return retVal;\n    }\n\n    private _resolve(defs: Definition[] = [], qualifiedID: string): Definition | undefined {\n        const qualifiedIDParts = qualifiedID.split(\".\");\n        const base = qualifiedIDParts.shift();\n        const retVal = find(defs, def => {\n            if (typeof def.name === \"string\" && typeof base === \"string\" && def.name.toLowerCase() === base.toLowerCase()) {\n                return true;\n            }\n            return false;\n        });\n        if (retVal && retVal.definitions.length && qualifiedIDParts.length) {\n            return this._resolve(retVal.definitions, qualifiedIDParts.join(\".\"));\n        }\n        return retVal;\n    }\n\n    resolve(qualifiedID: string): Definition | undefined {\n        return this._resolve(this.definitions, qualifiedID);\n    }\n\n    suggestions(): ISuggestion[] {\n        return this.definitions.map(def => {\n            return {\n                name: def.name,\n                type: this.type\n            };\n        });\n    }\n}\n\nexport class Definition extends ECLScope {\n    __attrs: { [id: string]: string };\n    exported: boolean;\n    shared: boolean;\n    fullname: string;\n    inherittype: string;\n    attrs: Attr[];\n    fields: Field[];\n\n    constructor(sourcePath: string, xmlDefinition: XMLNode) {\n        super(xmlDefinition.$.name, xmlDefinition.$.type, sourcePath, xmlDefinition.children(\"Definition\"), xmlDefinition.$.line, xmlDefinition.$.start, xmlDefinition.$.body, xmlDefinition.$.end);\n        this.__attrs = xmlDefinition.$;\n        this.exported = !!xmlDefinition.$.exported;\n        this.shared = !!xmlDefinition.$.shared;\n        this.fullname = xmlDefinition.$.fullname;\n        this.inherittype = xmlDefinition.$.inherittype;\n        this.attrs = this.parseAttrs(xmlDefinition.children(\"Attr\"));\n        this.fields = this.parseFields(xmlDefinition.children(\"Field\"));\n    }\n\n    private parseAttrs(attrs: XMLNode[] = []): Attr[] {\n        return attrs.map(attr => {\n            const retVal = new Attr(attr);\n            inspect(attr, \"attr\", retVal);\n            return retVal;\n        });\n    }\n\n    private parseFields(fields: XMLNode[] = []): Field[] {\n        return fields.map(field => {\n            const retVal = new Field(this, field);\n            inspect(field, \"field\", retVal);\n            return retVal;\n        });\n    }\n\n    suggestions() {\n        return super.suggestions().concat(this.fields.map(field => {\n            return {\n                name: field.name,\n                type: field.type\n            };\n        }));\n    }\n}\n\nexport class Import {\n    __attrs: { [id: string]: string };\n    name: string;\n    ref: string;\n    start: number;\n    end: number;\n    line: number;\n\n    constructor(xmlImport: XMLNode) {\n        this.__attrs = xmlImport.$;\n        this.name = xmlImport.$.name;\n        this.ref = xmlImport.$.ref;\n        this.start = xmlImport.$.start;\n        this.end = xmlImport.$.end;\n        this.line = xmlImport.$.line;\n    }\n}\n\nexport class Source extends ECLScope {\n    imports: Import[];\n    __attrs: { [id: string]: string };\n\n    constructor(xmlSource: XMLNode) {\n        super(xmlSource.$.name, \"source\", xmlSource.$.sourcePath, xmlSource.children(\"Definition\"));\n        this.__attrs = xmlSource.$;\n        const nameParts = xmlSource.$.name.split(\".\");\n        nameParts.pop();\n        const fakeNode = new XMLNode(\"\");\n        fakeNode.appendAttribute(\"name\", \"$\");\n        fakeNode.appendAttribute(\"ref\", nameParts.join(\".\"));\n        this.imports = [\n            new Import(fakeNode),\n            ...this.parseImports(xmlSource.children(\"Import\"))\n        ];\n    }\n\n    private parseImports(imports: XMLNode[] = []): Import[] {\n        return imports.map(imp => {\n            const retVal = new Import(imp);\n            inspect(imp, \"import\", retVal);\n            return retVal;\n        });\n    }\n\n    resolve(qualifiedID: string, charOffset?: number): Definition | undefined {\n        let retVal;\n\n        //  Check Inner Scopes  ---\n        if (!retVal && charOffset !== undefined) {\n            const scopes = this.scopeStackAt(charOffset);\n            scopes.some(scope => {\n                retVal = scope.resolve(qualifiedID);\n                return !!retVal;\n            });\n        }\n\n        //  Check Definitions  ---\n        if (!retVal) {\n            retVal = super.resolve(qualifiedID);\n        }\n        return retVal;\n    }\n}\n\nconst isHiddenDirectory = source => path.basename(source).indexOf(\".\") === 0;\nconst isDirectory = source => fs.lstatSync(source).isDirectory() && !isHiddenDirectory(source);\nconst isEcl = source => [\".ecl\", \".ecllib\"].indexOf(path.extname(source).toLowerCase()) >= 0;\nconst modAttrs = source => fs.readdirSync(source).map(name => path.join(source, name)).filter(path => isDirectory(path) || isEcl(path));\n\nexport class File extends ECLScope {\n\n    constructor(name: string, sourcePath: string) {\n        super(name, \"file\", sourcePath, []);\n    }\n\n    suggestions(): ISuggestion[] {\n        return [];\n    }\n}\n\nexport class Folder extends ECLScope {\n\n    constructor(name: string, sourcePath: string) {\n        super(name, \"folder\", sourcePath, []);\n    }\n\n    suggestions(): ISuggestion[] {\n        return modAttrs(this.sourcePath).map(folder => {\n            return {\n                name: path.basename(folder, \".ecl\"),\n                type: \"folder\"\n            };\n        });\n    }\n}\n\nexport class Workspace {\n    _workspacePath: string;\n    _eclccPath?: string;\n    _clientTools: ClientTools;\n    _sourceByID: DictionaryNoCase<Source> = new DictionaryNoCase<Source>();\n    _sourceByPath: Dictionary<Source> = new Dictionary<Source>();\n    private _test: DictionaryNoCase<IFilePath> = new DictionaryNoCase<IFilePath>();\n\n    constructor(workspacePath: string, eclccPath?: string) {\n        this._workspacePath = workspacePath;\n        this._eclccPath = eclccPath;\n    }\n\n    refresh() {\n        this.primeWorkspace();\n        this.primeClientTools();\n    }\n\n    primeClientTools(): Promise<this> {\n        return locateClientTools(this._eclccPath, \"\", this._workspacePath).then(clientTools => {\n            this._clientTools = clientTools;\n            return clientTools.paths();\n        }).then(paths => {\n            for (const knownFolder of [\"ECLCC_ECLLIBRARY_PATH\", \"ECLCC_PLUGIN_PATH\"]) {\n                if (paths[knownFolder] && fs.existsSync(paths[knownFolder])) {\n                    this.walkChildFolders(paths[knownFolder], paths[knownFolder]);\n                }\n            }\n            return this;\n        });\n    }\n\n    primeWorkspace() {\n        if (fs.existsSync(this._workspacePath)) {\n            this.visitFolder(this._workspacePath, this._workspacePath);\n        }\n    }\n\n    walkChildFolders(folderPath: string, refPath: string, force: boolean = false) {\n        for (const child of modAttrs(folderPath)) {\n            if (!isDirectory(child)) {\n                this.visitFile(child, refPath, force);\n            } else {\n                this.visitFolder(child, refPath, force);\n            }\n        }\n    }\n\n    visitFile(filePath: string, refPath: string, force: boolean = false) {\n        const filePathInfo = path.parse(filePath);\n        const pathNoExt = path.join(filePathInfo.dir, filePathInfo.name);\n        const name = path.relative(refPath, pathNoExt).split(path.sep).join(\".\");\n        if (force || !this._test.has(name)) {\n            this._test.set(name, new File(\"\", filePath));\n        }\n    }\n\n    visitFolder(folderPath: string, refPath: string, force: boolean = false) {\n        const name = path.relative(refPath, folderPath).split(path.sep).join(\".\");\n        if (force || !this._test.has(name)) {\n            this._test.set(name, new Folder(name, folderPath));\n            this.walkChildFolders(folderPath, refPath, force);\n        }\n    }\n\n    buildStack(parentStack: string[], name: string, removeDupID: boolean): { stack: string[], qid: string } {\n        const nameStack = name.split(\".\");\n        if (removeDupID && parentStack[parentStack.length - 1] === nameStack[0]) {\n            nameStack.shift();\n        }\n        const stack = [...parentStack, ...nameStack];\n        const qid: string = stack.join(\".\");\n        return {\n            stack,\n            qid\n        };\n    }\n\n    walkECLScope(parentStack: string[], scope: ECLScope) {\n        const info = this.buildStack(parentStack, scope.name, true);\n        this._test.set(info.qid, scope);\n        for (const def of scope.definitions) {\n            this.walkDefinition(info.stack, def);\n        }\n    }\n\n    walkField(parentStack: string[], field: Field) {\n        const info = this.buildStack(parentStack, field.name, false);\n        this._test.set(info.qid, field);\n    }\n\n    walkDefinition(parentStack: string[], definition: Definition) {\n        const info = this.buildStack(parentStack, definition.name, true);\n        this.walkECLScope(parentStack, definition);\n        for (const field of definition.fields) {\n            this.walkField(info.stack, field);\n        }\n    }\n\n    walkSource(source: Source) {\n        // const dirName = path.dirname(source.sourcePath);\n        // const relName = path.relative(this._workspacePath, dirName).split(path.sep).join(\".\");\n        // const folder = new Folder(relName, dirName);\n        // this._test.set(folder.name, folder);\n        this.walkECLScope([], source);\n    }\n\n    parseSources(sources: XMLNode[] = []): void {\n        for (const _source of sources) {\n            if (_source.$.name) {   //  Plugins have no name...\n                const source = new Source(_source);\n                inspect(_source, \"source\", source);\n                this._sourceByID.set(source.name, source);\n                this._sourceByPath.set(source.sourcePath, source);\n\n                //  If external source like \"std.system.ThorLib\" then need to backup to \"std\" and add its folder\n                if (source.name) {\n                    const sourceNameParts = source.name.split(\".\");\n                    let depth = sourceNameParts.length;\n                    if (depth > 1) {\n                        let sourcePath = source.sourcePath;\n                        while (depth > 1) {\n                            sourcePath = path.dirname(sourcePath);\n                            --depth;\n                        }\n                        this.visitFolder(sourcePath, path.dirname(sourcePath));\n                    }\n                }\n                this.walkSource(source);\n            }\n        }\n    }\n\n    parseMetaXML(metaXML: string): string[] {\n        const metaParser = new MetaParser();\n        metaParser.parse(metaXML);\n        this.parseSources(metaParser.sources);\n        return metaParser.sources.map(source => path.normalize(source.$.sourcePath));\n    }\n\n    resolveQualifiedID(filePath: string, qualifiedID: string, charOffset?: number): ECLScope | undefined {\n        let retVal: ECLScope | undefined;\n        if (!retVal && this._test.has(qualifiedID)) {\n            retVal = this._test.get(qualifiedID).scope;\n        }\n        if (!retVal && this._sourceByPath.has(filePath)) {\n            const eclSource = this._sourceByPath.get(filePath);\n\n            //  Resolve Imports  ---\n            const qualifiedIDParts = qualifiedID.split(\".\");\n            for (const imp of eclSource.imports) {\n                if (imp.name.toLowerCase() === qualifiedIDParts[0].toLowerCase()) {\n                    if (imp.ref) {\n                        qualifiedIDParts[0] = imp.ref;\n                    } else {\n                        qualifiedIDParts.shift();\n                    }\n                    break;\n                }\n            }\n            let realQID = qualifiedIDParts.join(\".\");\n            if (!retVal && this._test.has(realQID)) {\n                retVal = this._test.get(realQID).scope;\n            }\n            if (!retVal) {\n                realQID = [...eclSource.name.split(\".\"), ...qualifiedIDParts].join(\".\");\n                if (this._test.has(realQID)) {\n                    retVal = this._test.get(realQID).scope;\n                }\n            }\n        }\n        return retVal;\n    }\n\n    resolvePartialID(filePath: string, partialID: string, charOffset: number): ECLScope | undefined {\n        partialID = partialID.toLowerCase();\n        const partialIDParts = partialID.split(\".\");\n        partialIDParts.pop();\n        const partialIDQualifier = partialIDParts.length === 1 ? partialIDParts[0] : partialIDParts.join(\".\");\n        return this.resolveQualifiedID(filePath, partialIDQualifier, charOffset);\n    }\n}\n\nconst workspaceCache = new Dictionary<Workspace>();\nexport function attachWorkspace(_workspacePath: string, eclccPath?: string): Workspace {\n    const workspacePath = path.normalize(_workspacePath);\n    if (!workspaceCache.has(workspacePath)) {\n        const workspace = new Workspace(workspacePath, eclccPath);\n        workspaceCache.set(workspacePath, workspace);\n        workspace.refresh();\n    }\n    return workspaceCache.get(workspacePath);\n}\n\nfunction isQualifiedIDChar(lineText: string, charPos: number, reverse: boolean) {\n    if (charPos < 0) return false;\n    const testChar = lineText.charAt(charPos);\n    return (reverse ? /[a-zA-Z\\d_\\.$]/ : /[a-zA-Z\\d_]/).test(testChar);\n}\n\nexport function qualifiedIDBoundary(lineText: string, charPos: number, reverse: boolean) {\n    while (isQualifiedIDChar(lineText, charPos, reverse)) {\n        charPos += reverse ? -1 : 1;\n    }\n    return charPos + (reverse ? 1 : -1);\n}\n\nclass MetaParser extends SAXStackParser {\n    sources: XMLNode[] = [];\n\n    endXMLNode(e: XMLNode) {\n        switch (e.name) {\n            case \"Source\":\n                this.sources.push(e);\n                break;\n            default:\n                break;\n        }\n        super.endXMLNode(e);\n    }\n}\n"],
  "mappings": "0oBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EACC,SAAUC,EAAQC,EAAS,CAC5B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,EAAO,EAC9E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,SAAS,EAAGG,CAAO,EACvEA,EAASD,EAAO,GAAKA,EAAO,IAAM,CAAC,CAAE,CACtC,GAAEF,IAAO,SAAUA,EAAS,CAAE,aAE9B,SAASI,EAAUC,EAAGC,EAAG,CACvB,OAAOD,EAAIC,EAAI,GAAKD,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAI,GAC/C,CAEA,SAASC,EAASC,EAAS,CACzB,OAAIA,EAAQ,SAAW,IAAGA,EAAUC,EAAoBD,CAAO,GACxD,CACL,KAAM,SAASH,EAAGK,EAAGC,EAAIC,EAAI,CAG3B,IAFID,GAAM,OAAMA,EAAK,GACjBC,GAAM,OAAMA,EAAKP,EAAE,QAChBM,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBJ,EAAQH,EAAEQ,CAAG,EAAGH,CAAC,EAAI,EAAGC,EAAKE,EAAM,EAClCD,EAAKC,CACZ,CACA,OAAOF,CACT,EACA,MAAO,SAASN,EAAGK,EAAGC,EAAIC,EAAI,CAG5B,IAFID,GAAM,OAAMA,EAAK,GACjBC,GAAM,OAAMA,EAAKP,EAAE,QAChBM,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBJ,EAAQH,EAAEQ,CAAG,EAAGH,CAAC,EAAI,EAAGE,EAAKC,EAC5BF,EAAKE,EAAM,CAClB,CACA,OAAOF,CACT,CACF,CACF,CAEA,SAASF,EAAoBK,EAAG,CAC9B,OAAO,SAASC,EAAGL,EAAG,CACpB,OAAON,EAAUU,EAAEC,CAAC,EAAGL,CAAC,CAC1B,CACF,CAEA,IAAIM,EAAkBT,EAASH,CAAS,EACpCa,EAAcD,EAAgB,MAC9BE,EAAaF,EAAgB,KAEjC,SAASG,EAAMC,EAAON,EAAG,CACnBA,GAAK,OAAMA,EAAIO,GAEnB,QADIC,EAAI,EAAGC,EAAIH,EAAM,OAAS,EAAG,EAAIA,EAAM,CAAC,EAAGD,EAAQ,IAAI,MAAMI,EAAI,EAAI,EAAIA,CAAC,EACvED,EAAIC,GAAGJ,EAAMG,CAAC,EAAIR,EAAE,EAAG,EAAIM,EAAM,EAAEE,CAAC,CAAC,EAC5C,OAAOH,CACT,CAEA,SAASE,EAAKhB,EAAGC,EAAG,CAClB,MAAO,CAACD,EAAGC,CAAC,CACd,CAEA,SAASkB,EAAMC,EAASC,EAASC,EAAQ,CACvC,IAAIC,EAAKH,EAAQ,OACbI,EAAKH,EAAQ,OACbI,EAAS,IAAI,MAAMF,EAAKC,CAAE,EAC1BE,EACAC,EACAV,EACAW,GAIJ,IAFIN,GAAU,OAAMA,EAASN,GAExBU,EAAKT,EAAI,EAAGS,EAAKH,EAAI,EAAEG,EAC1B,IAAKE,GAASR,EAAQM,CAAE,EAAGC,EAAK,EAAGA,EAAKH,EAAI,EAAEG,EAAI,EAAEV,EAClDQ,EAAOR,CAAC,EAAIK,EAAOM,GAAQP,EAAQM,CAAE,CAAC,EAI1C,OAAOF,CACT,CAEA,SAASI,EAAW7B,EAAGC,EAAG,CACxB,OAAOA,EAAID,EAAI,GAAKC,EAAID,EAAI,EAAIC,GAAKD,EAAI,EAAI,GAC/C,CAEA,SAAS8B,EAAOzB,EAAG,CACjB,OAAOA,IAAM,KAAO,IAAM,CAACA,CAC7B,CAEA,SAAS0B,EAASN,EAAQO,EAAS,CACjC,IAAId,EAAIO,EAAO,OACXQ,EAAI,EACJhB,EAAI,GACJiB,EAAO,EACPC,EACAC,EACAC,EAAM,EAEV,GAAIL,GAAW,KACb,KAAO,EAAEf,EAAIC,GACN,MAAMiB,EAAQL,EAAOL,EAAOR,CAAC,CAAC,CAAC,IAClCmB,EAAQD,EAAQD,EAChBA,GAAQE,EAAQ,EAAEH,EAClBI,GAAOD,GAASD,EAAQD,QAM5B,MAAO,EAAEjB,EAAIC,GACN,MAAMiB,EAAQL,EAAOE,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,CAAC,CAAC,IACtDW,EAAQD,EAAQD,EAChBA,GAAQE,EAAQ,EAAEH,EAClBI,GAAOD,GAASD,EAAQD,IAK9B,GAAID,EAAI,EAAG,OAAOI,GAAOJ,EAAI,EAC/B,CAEA,SAASK,EAAUvB,EAAON,EAAG,CAC3B,IAAI8B,EAAIR,EAAShB,EAAON,CAAC,EACzB,OAAO8B,GAAI,KAAK,KAAKA,CAAC,CACxB,CAEA,SAASC,EAAOf,EAAQO,EAAS,CAC/B,IAAId,EAAIO,EAAO,OACXR,EAAI,GACJkB,EACAM,EACAC,EAEJ,GAAIV,GAAW,MACb,KAAO,EAAEf,EAAIC,GACX,IAAKiB,EAAQV,EAAOR,CAAC,IAAM,MAAQkB,GAASA,EAE1C,IADAM,EAAMC,EAAMP,EACL,EAAElB,EAAIC,IACNiB,EAAQV,EAAOR,CAAC,IAAM,OACrBwB,EAAMN,IAAOM,EAAMN,GACnBO,EAAMP,IAAOO,EAAMP,QAQ/B,MAAO,EAAElB,EAAIC,GACX,IAAKiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,MAAQU,GAASA,EAE9D,IADAM,EAAMC,EAAMP,EACL,EAAElB,EAAIC,IACNiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,OACzCgB,EAAMN,IAAOM,EAAMN,GACnBO,EAAMP,IAAOO,EAAMP,IAOjC,MAAO,CAACM,EAAKC,CAAG,CAClB,CAEA,IAAI3B,EAAQ,MAAM,UAEd4B,EAAQ5B,EAAM,MACd6B,EAAM7B,EAAM,IAEhB,SAAS8B,EAASxC,EAAG,CACnB,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CAEA,SAASyC,EAASzC,EAAG,CACnB,OAAOA,CACT,CAEA,SAAS0C,EAAMC,EAAOC,EAAMC,EAAM,CAChCF,EAAQ,CAACA,EAAOC,EAAO,CAACA,EAAMC,GAAQhC,EAAI,UAAU,QAAU,GAAK+B,EAAOD,EAAOA,EAAQ,EAAG,GAAK9B,EAAI,EAAI,EAAI,CAACgC,EAM9G,QAJIjC,EAAI,GACJC,EAAI,KAAK,IAAI,EAAG,KAAK,MAAM+B,EAAOD,GAASE,CAAI,CAAC,EAAI,EACpDH,EAAQ,IAAI,MAAM7B,CAAC,EAEhB,EAAED,EAAIC,GACX6B,EAAM9B,CAAC,EAAI+B,EAAQ/B,EAAIiC,EAGzB,OAAOH,CACT,CAEA,IAAII,EAAM,KAAK,KAAK,EAAE,EAClBC,GAAK,KAAK,KAAK,EAAE,EACjBC,EAAK,KAAK,KAAK,CAAC,EAEpB,SAASC,EAAMN,EAAOC,EAAMM,EAAO,CACjC,IAAIC,EACAvC,EAAI,GACJC,EACAoC,EACAJ,EAGJ,GADAD,EAAO,CAACA,EAAMD,EAAQ,CAACA,EAAOO,EAAQ,CAACA,EACnCP,IAAUC,GAAQM,EAAQ,EAAG,MAAO,CAACP,CAAK,EAE9C,IADIQ,EAAUP,EAAOD,KAAO9B,EAAI8B,EAAOA,EAAQC,EAAMA,EAAO/B,IACvDgC,EAAOO,EAAcT,EAAOC,EAAMM,CAAK,KAAO,GAAK,CAAC,SAASL,CAAI,EAAG,MAAO,CAAC,EAEjF,GAAIA,EAAO,EAIT,IAHAF,EAAQ,KAAK,KAAKA,EAAQE,CAAI,EAC9BD,EAAO,KAAK,MAAMA,EAAOC,CAAI,EAC7BI,EAAQ,IAAI,MAAMpC,EAAI,KAAK,KAAK+B,EAAOD,EAAQ,CAAC,CAAC,EAC1C,EAAE/B,EAAIC,GAAGoC,EAAMrC,CAAC,GAAK+B,EAAQ/B,GAAKiC,MAKzC,KAHAF,EAAQ,KAAK,MAAMA,EAAQE,CAAI,EAC/BD,EAAO,KAAK,KAAKA,EAAOC,CAAI,EAC5BI,EAAQ,IAAI,MAAMpC,EAAI,KAAK,KAAK8B,EAAQC,EAAO,CAAC,CAAC,EAC1C,EAAEhC,EAAIC,GAAGoC,EAAMrC,CAAC,GAAK+B,EAAQ/B,GAAKiC,EAG3C,OAAIM,GAASF,EAAM,QAAQ,EAEpBA,CACT,CAEA,SAASG,EAAcT,EAAOC,EAAMM,EAAO,CACzC,IAAIL,GAAQD,EAAOD,GAAS,KAAK,IAAI,EAAGO,CAAK,EACzCG,EAAQ,KAAK,MAAM,KAAK,IAAIR,CAAI,EAAI,KAAK,IAAI,EAC7CS,EAAQT,EAAO,KAAK,IAAI,GAAIQ,CAAK,EACrC,OAAOA,GAAS,GACTC,GAASR,EAAM,GAAKQ,GAASP,GAAK,EAAIO,GAASN,EAAK,EAAI,GAAK,KAAK,IAAI,GAAIK,CAAK,EAChF,CAAC,KAAK,IAAI,GAAI,CAACA,CAAK,GAAKC,GAASR,EAAM,GAAKQ,GAASP,GAAK,EAAIO,GAASN,EAAK,EAAI,EACzF,CAEA,SAASO,EAASZ,EAAOC,EAAMM,EAAO,CACpC,IAAIM,EAAQ,KAAK,IAAIZ,EAAOD,CAAK,EAAI,KAAK,IAAI,EAAGO,CAAK,EAClDO,EAAQ,KAAK,IAAI,GAAI,KAAK,MAAM,KAAK,IAAID,CAAK,EAAI,KAAK,IAAI,CAAC,EAC5DF,EAAQE,EAAQC,EACpB,OAAIH,GAASR,EAAKW,GAAS,GAClBH,GAASP,GAAIU,GAAS,EACtBH,GAASN,IAAIS,GAAS,GACxBb,EAAOD,EAAQ,CAACc,EAAQA,CACjC,CAEA,SAASC,EAAQtC,EAAQ,CACvB,OAAO,KAAK,KAAK,KAAK,IAAIA,EAAO,MAAM,EAAI,KAAK,GAAG,EAAI,CACzD,CAEA,SAASuC,IAAY,CACnB,IAAI7B,EAAQW,EACRmB,EAASzB,EACT0B,EAAYH,EAEhB,SAASC,EAAUG,EAAM,CACvB,IAAIlD,EACAC,EAAIiD,EAAK,OACT9D,EACAoB,EAAS,IAAI,MAAMP,CAAC,EAExB,IAAKD,EAAI,EAAGA,EAAIC,EAAG,EAAED,EACnBQ,EAAOR,CAAC,EAAIkB,EAAMgC,EAAKlD,CAAC,EAAGA,EAAGkD,CAAI,EAGpC,IAAIC,GAAKH,EAAOxC,CAAM,EAClB4C,GAAKD,GAAG,CAAC,EACTE,GAAKF,GAAG,CAAC,EACTG,EAAKL,EAAUzC,EAAQ4C,GAAIC,EAAE,EAG5B,MAAM,QAAQC,CAAE,IACnBA,EAAKX,EAASS,GAAIC,GAAIC,CAAE,EACxBA,EAAKxB,EAAM,KAAK,KAAKsB,GAAKE,CAAE,EAAIA,EAAID,GAAIC,CAAE,GAK5C,QADItC,GAAIsC,EAAG,OACJA,EAAG,CAAC,GAAKF,IAAIE,EAAG,MAAM,EAAG,EAAEtC,GAClC,KAAOsC,EAAGtC,GAAI,CAAC,EAAIqC,IAAIC,EAAG,IAAI,EAAG,EAAEtC,GAEnC,IAAIuC,GAAO,IAAI,MAAMvC,GAAI,CAAC,EACtBwC,GAGJ,IAAKxD,EAAI,EAAGA,GAAKgB,GAAG,EAAEhB,EACpBwD,GAAMD,GAAKvD,CAAC,EAAI,CAAC,EACjBwD,GAAI,GAAKxD,EAAI,EAAIsD,EAAGtD,EAAI,CAAC,EAAIoD,GAC7BI,GAAI,GAAKxD,EAAIgB,GAAIsC,EAAGtD,CAAC,EAAIqD,GAI3B,IAAKrD,EAAI,EAAGA,EAAIC,EAAG,EAAED,EACnBZ,EAAIoB,EAAOR,CAAC,EACRoD,IAAMhE,GAAKA,GAAKiE,IAClBE,GAAK5D,EAAY2D,EAAIlE,EAAG,EAAG4B,EAAC,CAAC,EAAE,KAAKkC,EAAKlD,CAAC,CAAC,EAI/C,OAAOuD,EACT,CAEA,OAAAR,EAAU,MAAQ,SAASU,EAAG,CAC5B,OAAO,UAAU,QAAUvC,EAAQ,OAAOuC,GAAM,WAAaA,EAAI7B,EAAS6B,CAAC,EAAGV,GAAa7B,CAC7F,EAEA6B,EAAU,OAAS,SAASU,EAAG,CAC7B,OAAO,UAAU,QAAUT,EAAS,OAAOS,GAAM,WAAaA,EAAI7B,EAAS,CAAC6B,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,EAAGV,GAAaC,CACzG,EAEAD,EAAU,WAAa,SAASU,EAAG,CACjC,OAAO,UAAU,QAAUR,EAAY,OAAOQ,GAAM,WAAaA,EAAI,MAAM,QAAQA,CAAC,EAAI7B,EAASF,EAAM,KAAK+B,CAAC,CAAC,EAAI7B,EAAS6B,CAAC,EAAGV,GAAaE,CAC9I,EAEOF,CACT,CAEA,SAASW,EAASlD,EAAQmD,EAAG5C,EAAS,CAEpC,GADIA,GAAW,OAAMA,EAAUF,GAC3B,GAAEZ,EAAIO,EAAO,QACjB,KAAKmD,EAAI,CAACA,IAAM,GAAK1D,EAAI,EAAG,MAAO,CAACc,EAAQP,EAAO,CAAC,EAAG,EAAGA,CAAM,EAChE,GAAImD,GAAK,EAAG,MAAO,CAAC5C,EAAQP,EAAOP,EAAI,CAAC,EAAGA,EAAI,EAAGO,CAAM,EACxD,IAAIP,EACAD,GAAKC,EAAI,GAAK0D,EACdlD,EAAK,KAAK,MAAMT,CAAC,EACjBW,EAAS,CAACI,EAAQP,EAAOC,CAAE,EAAGA,EAAID,CAAM,EACxCoD,EAAS,CAAC7C,EAAQP,EAAOC,EAAK,CAAC,EAAGA,EAAK,EAAGD,CAAM,EACpD,OAAOG,GAAUiD,EAASjD,IAAWX,EAAIS,GAC3C,CAEA,SAASoD,GAAiBrD,EAAQgB,EAAKC,EAAK,CAC1C,OAAAjB,EAASmB,EAAI,KAAKnB,EAAQK,CAAM,EAAE,KAAK/B,CAAS,EACzC,KAAK,MAAM2C,EAAMD,IAAQ,GAAKkC,EAASlD,EAAQ,GAAI,EAAIkD,EAASlD,EAAQ,GAAI,GAAK,KAAK,IAAIA,EAAO,OAAQ,GAAK,CAAC,EAAE,CAC1H,CAEA,SAASsD,GAAMtD,EAAQgB,EAAKC,EAAK,CAC/B,OAAO,KAAK,MAAMA,EAAMD,IAAQ,IAAMH,EAAUb,CAAM,EAAI,KAAK,IAAIA,EAAO,OAAQ,GAAK,CAAC,EAAE,CAC5F,CAEA,SAASiB,GAAIjB,EAAQO,EAAS,CAC5B,IAAId,EAAIO,EAAO,OACXR,EAAI,GACJkB,EACAO,EAEJ,GAAIV,GAAW,MACb,KAAO,EAAEf,EAAIC,GACX,IAAKiB,EAAQV,EAAOR,CAAC,IAAM,MAAQkB,GAASA,EAE1C,IADAO,EAAMP,EACC,EAAElB,EAAIC,IACNiB,EAAQV,EAAOR,CAAC,IAAM,MAAQkB,EAAQO,IACzCA,EAAMP,OAQd,MAAO,EAAElB,EAAIC,GACX,IAAKiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,MAAQU,GAASA,EAE9D,IADAO,EAAMP,EACC,EAAElB,EAAIC,IACNiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,MAAQU,EAAQO,IAC7DA,EAAMP,GAOhB,OAAOO,CACT,CAEA,SAASR,GAAKT,EAAQO,EAAS,CAC7B,IAAId,EAAIO,EAAO,OACXQ,EAAIf,EACJD,EAAI,GACJkB,EACAE,EAAM,EAEV,GAAIL,GAAW,KACb,KAAO,EAAEf,EAAIC,GACN,MAAMiB,EAAQL,EAAOL,EAAOR,CAAC,CAAC,CAAC,EAC/B,EAAEgB,EADgCI,GAAOF,MAMhD,MAAO,EAAElB,EAAIC,GACN,MAAMiB,EAAQL,EAAOE,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,CAAC,CAAC,EACnD,EAAEQ,EADoDI,GAAOF,EAKtE,GAAIF,EAAG,OAAOI,EAAMJ,CACtB,CAEA,SAAS+C,EAAOvD,EAAQO,EAAS,CAC/B,IAAId,EAAIO,EAAO,OACXR,EAAI,GACJkB,EACA8C,EAAU,CAAC,EAEf,GAAIjD,GAAW,KACb,KAAO,EAAEf,EAAIC,GACN,MAAMiB,EAAQL,EAAOL,EAAOR,CAAC,CAAC,CAAC,GAClCgE,EAAQ,KAAK9C,CAAK,MAMtB,MAAO,EAAElB,EAAIC,GACN,MAAMiB,EAAQL,EAAOE,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,CAAC,CAAC,GACtDwD,EAAQ,KAAK9C,CAAK,EAKxB,OAAOwC,EAASM,EAAQ,KAAKlF,CAAS,EAAG,EAAG,CAC9C,CAEA,SAASmF,GAAMC,EAAQ,CAQrB,QAPIjE,EAAIiE,EAAO,OACXlD,EACAhB,EAAI,GACJmE,EAAI,EACJC,EACAtE,EAEG,EAAEE,EAAIC,GAAGkE,GAAKD,EAAOlE,CAAC,EAAE,OAG/B,IAFAoE,EAAS,IAAI,MAAMD,CAAC,EAEb,EAAElE,GAAK,GAGZ,IAFAH,EAAQoE,EAAOjE,CAAC,EAChBe,EAAIlB,EAAM,OACH,EAAEkB,GAAK,GACZoD,EAAO,EAAED,CAAC,EAAIrE,EAAMkB,CAAC,EAIzB,OAAOoD,CACT,CAEA,SAAS5C,GAAIhB,EAAQO,EAAS,CAC5B,IAAId,EAAIO,EAAO,OACXR,EAAI,GACJkB,EACAM,EAEJ,GAAIT,GAAW,MACb,KAAO,EAAEf,EAAIC,GACX,IAAKiB,EAAQV,EAAOR,CAAC,IAAM,MAAQkB,GAASA,EAE1C,IADAM,EAAMN,EACC,EAAElB,EAAIC,IACNiB,EAAQV,EAAOR,CAAC,IAAM,MAAQwB,EAAMN,IACvCM,EAAMN,OAQd,MAAO,EAAElB,EAAIC,GACX,IAAKiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,MAAQU,GAASA,EAE9D,IADAM,EAAMN,EACC,EAAElB,EAAIC,IACNiB,EAAQH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,IAAM,MAAQgB,EAAMN,IAC3DM,EAAMN,GAOhB,OAAOM,CACT,CAEA,SAAS6C,GAAQvE,EAAOwE,EAAS,CAE/B,QADItE,EAAIsE,EAAQ,OAAQC,EAAW,IAAI,MAAMvE,CAAC,EACvCA,KAAKuE,EAASvE,CAAC,EAAIF,EAAMwE,EAAQtE,CAAC,CAAC,EAC1C,OAAOuE,CACT,CAEA,SAASC,GAAKhE,EAAQtB,EAAS,CAC7B,GAAMe,EAAIO,EAAO,OACjB,KAAIP,EACAD,EAAI,EACJmE,EAAI,EACJM,EACAC,EAAKlE,EAAO2D,CAAC,EAIjB,IAFIjF,GAAW,OAAMA,EAAUJ,GAExB,EAAEkB,EAAIC,IACPf,EAAQuF,EAAKjE,EAAOR,CAAC,EAAG0E,CAAE,EAAI,GAAKxF,EAAQwF,EAAIA,CAAE,IAAM,KACzDA,EAAKD,EAAIN,EAAInE,GAIjB,GAAId,EAAQwF,EAAIA,CAAE,IAAM,EAAG,OAAOP,EACpC,CAEA,SAASQ,GAAQ7E,EAAOW,EAAIC,EAAI,CAK9B,QAJIM,GAAKN,GAAaZ,EAAM,SAAgBW,EAAKA,GAAM,KAAO,EAAI,CAACA,GAC/DmE,EACA5E,EAEGgB,GACLhB,EAAI,KAAK,OAAO,EAAIgB,IAAM,EAC1B4D,EAAI9E,EAAMkB,EAAIP,CAAE,EAChBX,EAAMkB,EAAIP,CAAE,EAAIX,EAAME,EAAIS,CAAE,EAC5BX,EAAME,EAAIS,CAAE,EAAImE,EAGlB,OAAO9E,CACT,CAEA,SAASsB,GAAIZ,EAAQO,EAAS,CAC5B,IAAId,EAAIO,EAAO,OACXR,EAAI,GACJkB,EACAE,EAAM,EAEV,GAAIL,GAAW,KACb,KAAO,EAAEf,EAAIC,IACPiB,EAAQ,CAACV,EAAOR,CAAC,KAAGoB,GAAOF,OAKjC,MAAO,EAAElB,EAAIC,IACPiB,EAAQ,CAACH,EAAQP,EAAOR,CAAC,EAAGA,EAAGQ,CAAM,KAAGY,GAAOF,GAIvD,OAAOE,CACT,CAEA,SAASyD,GAAUC,EAAQ,CACzB,GAAI,EAAE7E,EAAI6E,EAAO,QAAS,MAAO,CAAC,EAClC,QAAS9E,EAAI,GAAIgB,EAAIQ,GAAIsD,EAAQC,EAAM,EAAGF,EAAY,IAAI,MAAM7D,CAAC,EAAG,EAAEhB,EAAIgB,GACxE,QAASmD,EAAI,GAAIlE,EAAG+E,EAAMH,EAAU7E,CAAC,EAAI,IAAI,MAAMC,CAAC,EAAG,EAAEkE,EAAIlE,GAC3D+E,EAAIb,CAAC,EAAIW,EAAOX,CAAC,EAAEnE,CAAC,EAGxB,OAAO6E,CACT,CAEA,SAASE,GAAOtF,EAAG,CACjB,OAAOA,EAAE,MACX,CAEA,SAASwF,IAAM,CACb,OAAOJ,GAAU,SAAS,CAC5B,CAEAnG,EAAQ,OAASiB,EACjBjB,EAAQ,YAAciB,EACtBjB,EAAQ,WAAakB,EACrBlB,EAAQ,UAAYI,EACpBJ,EAAQ,SAAWO,EACnBP,EAAQ,MAAQwB,EAChBxB,EAAQ,WAAakC,EACrBlC,EAAQ,UAAY2C,EACpB3C,EAAQ,OAAS6C,EACjB7C,EAAQ,UAAYqE,GACpBrE,EAAQ,0BAA4BmF,GACpCnF,EAAQ,eAAiBoF,GACzBpF,EAAQ,iBAAmBoE,EAC3BpE,EAAQ,IAAM+C,GACd/C,EAAQ,KAAOuC,GACfvC,EAAQ,OAASqF,EACjBrF,EAAQ,MAAQuF,GAChBvF,EAAQ,IAAM8C,GACd9C,EAAQ,MAAQmB,EAChBnB,EAAQ,QAAU2F,GAClB3F,EAAQ,SAAWgF,EACnBhF,EAAQ,MAAQoD,EAChBpD,EAAQ,KAAO8F,GACf9F,EAAQ,QAAUiG,GAClBjG,EAAQ,IAAM0C,GACd1C,EAAQ,MAAQ2D,EAChB3D,EAAQ,cAAgB8D,EACxB9D,EAAQ,SAAWiE,EACnBjE,EAAQ,UAAYmG,GACpBnG,EAAQ,SAAWoC,EACnBpC,EAAQ,IAAMuG,GAEd,OAAO,eAAevG,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAE5D,EAAE,IC7kBF,IAAAwG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EACC,SAAUC,EAAQC,EAAS,CAC5B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,EAAO,EAC9E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,SAAS,EAAGG,CAAO,GACvED,EAASA,GAAU,KAAMC,EAAQD,EAAO,GAAKA,EAAO,IAAM,CAAC,CAAC,EAC7D,GAAEF,GAAM,SAAUA,EAAS,CAAE,aAE7B,IAAII,EAAK,IAAI,KACTC,EAAK,IAAI,KAEb,SAASC,EAAYC,EAAQC,EAASC,GAAOC,GAAO,CAElD,SAASC,GAASC,EAAM,CACtB,OAAOL,EAAOK,EAAO,UAAU,SAAW,EAAI,IAAI,KAAO,IAAI,KAAK,CAACA,CAAI,CAAC,EAAGA,CAC7E,CAEA,OAAAD,GAAS,MAAQ,SAASC,EAAM,CAC9B,OAAOL,EAAOK,EAAO,IAAI,KAAK,CAACA,CAAI,CAAC,EAAGA,CACzC,EAEAD,GAAS,KAAO,SAASC,EAAM,CAC7B,OAAOL,EAAOK,EAAO,IAAI,KAAKA,EAAO,CAAC,CAAC,EAAGJ,EAAQI,EAAM,CAAC,EAAGL,EAAOK,CAAI,EAAGA,CAC5E,EAEAD,GAAS,MAAQ,SAASC,EAAM,CAC9B,IAAIC,EAAKF,GAASC,CAAI,EAClBE,GAAKH,GAAS,KAAKC,CAAI,EAC3B,OAAOA,EAAOC,EAAKC,GAAKF,EAAOC,EAAKC,EACtC,EAEAH,GAAS,OAAS,SAASC,EAAMG,EAAM,CACrC,OAAOP,EAAQI,EAAO,IAAI,KAAK,CAACA,CAAI,EAAGG,GAAQ,KAAO,EAAI,KAAK,MAAMA,CAAI,CAAC,EAAGH,CAC/E,EAEAD,GAAS,MAAQ,SAASK,EAAOC,EAAMF,GAAM,CAC3C,IAAIG,GAAQ,CAAC,EAAGC,GAGhB,GAFAH,EAAQL,GAAS,KAAKK,CAAK,EAC3BD,GAAOA,IAAQ,KAAO,EAAI,KAAK,MAAMA,EAAI,EACrC,EAAEC,EAAQC,IAAS,EAAEF,GAAO,GAAI,OAAOG,GAC3C,GAAGA,GAAM,KAAKC,GAAW,IAAI,KAAK,CAACH,CAAK,CAAC,EAAGR,EAAQQ,EAAOD,EAAI,EAAGR,EAAOS,CAAK,QACvEG,GAAWH,GAASA,EAAQC,GACnC,OAAOC,EACT,EAEAP,GAAS,OAAS,SAASS,EAAM,CAC/B,OAAOd,EAAY,SAASM,EAAM,CAChC,GAAIA,GAAQA,EAAM,KAAOL,EAAOK,CAAI,EAAG,CAACQ,EAAKR,CAAI,GAAGA,EAAK,QAAQA,EAAO,CAAC,CAC3E,EAAG,SAASA,EAAMG,GAAM,CACtB,GAAIH,GAAQA,EACV,GAAIG,GAAO,EAAG,KAAO,EAAEA,IAAQ,GAC7B,KAAOP,EAAQI,EAAM,EAAE,EAAG,CAACQ,EAAKR,CAAI,GAAG,KAClC,MAAO,EAAEG,IAAQ,GACtB,KAAOP,EAAQI,EAAM,CAAE,EAAG,CAACQ,EAAKR,CAAI,GAAG,CAG7C,CAAC,CACH,EAEIH,KACFE,GAAS,MAAQ,SAASK,EAAOK,EAAK,CACpC,OAAAjB,EAAG,QAAQ,CAACY,CAAK,EAAGX,EAAG,QAAQ,CAACgB,CAAG,EACnCd,EAAOH,CAAE,EAAGG,EAAOF,CAAE,EACd,KAAK,MAAMI,GAAML,EAAIC,CAAE,CAAC,CACjC,EAEAM,GAAS,MAAQ,SAASI,EAAM,CAC9B,OAAAA,EAAO,KAAK,MAAMA,CAAI,EACf,CAAC,SAASA,CAAI,GAAK,EAAEA,EAAO,GAAK,KAChCA,EAAO,EACTJ,GAAS,OAAOD,GACZ,SAASY,EAAG,CAAE,OAAOZ,GAAMY,CAAC,EAAIP,IAAS,CAAG,EAC5C,SAASO,EAAG,CAAE,OAAOX,GAAS,MAAM,EAAGW,CAAC,EAAIP,IAAS,CAAG,CAAC,EAH/CJ,EAItB,GAGKA,EACT,CAEA,IAAIY,EAAcjB,EAAY,UAAW,CAEzC,EAAG,SAASM,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,CAAI,CAC3B,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAOA,EAAML,CACf,CAAC,EAGDO,EAAY,MAAQ,SAASC,EAAG,CAE9B,OADAA,EAAI,KAAK,MAAMA,CAAC,EACZ,CAAC,SAASA,CAAC,GAAK,EAAEA,EAAI,GAAW,KAC/BA,EAAI,EACHlB,EAAY,SAASM,EAAM,CAChCA,EAAK,QAAQ,KAAK,MAAMA,EAAOY,CAAC,EAAIA,CAAC,CACvC,EAAG,SAASZ,EAAMG,GAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,GAAOS,CAAC,CAC/B,EAAG,SAASR,EAAOK,GAAK,CACtB,OAAQA,GAAML,GAASQ,CACzB,CAAC,EAPoBD,CAQvB,EACA,IAAIE,EAAeF,EAAY,MAE3BG,EAAiB,IACjBC,EAAiB,IACjBC,EAAe,KACfC,EAAc,MACdC,EAAe,OAEfC,EAASzB,EAAY,SAASM,EAAM,CACtCA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,CAAC,CAC5C,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,EAAOW,CAAc,CAC5C,EAAG,SAASV,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASU,CACzB,EAAG,SAASd,EAAM,CAChB,OAAOA,EAAK,cAAc,CAC5B,CAAC,EACGoB,EAAUD,EAAO,MAEjBE,EAAS3B,EAAY,SAASM,EAAM,CACtCA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,EAAIA,EAAK,WAAW,EAAIc,CAAc,CACjF,EAAG,SAASd,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,EAAOY,CAAc,CAC5C,EAAG,SAASX,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASW,CACzB,EAAG,SAASf,EAAM,CAChB,OAAOA,EAAK,WAAW,CACzB,CAAC,EACGsB,EAAUD,EAAO,MAEjBE,EAAO7B,EAAY,SAASM,EAAM,CACpCA,EAAK,QAAQA,EAAOA,EAAK,gBAAgB,EAAIA,EAAK,WAAW,EAAIc,EAAiBd,EAAK,WAAW,EAAIe,CAAc,CACtH,EAAG,SAASf,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,EAAOa,CAAY,CAC1C,EAAG,SAASZ,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASY,CACzB,EAAG,SAAShB,EAAM,CAChB,OAAOA,EAAK,SAAS,CACvB,CAAC,EACGwB,EAAQD,EAAK,MAEbE,EAAM/B,EAAY,SAASM,EAAM,CACnCA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,QAAQA,EAAK,QAAQ,EAAIG,CAAI,CACpC,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASK,EAAI,kBAAkB,EAAIL,EAAM,kBAAkB,GAAKW,GAAkBE,CAClG,EAAG,SAASjB,EAAM,CAChB,OAAOA,EAAK,QAAQ,EAAI,CAC1B,CAAC,EACG0B,EAAOD,EAAI,MAEf,SAASE,EAAQC,EAAG,CAClB,OAAOlC,EAAY,SAASM,EAAM,CAChCA,EAAK,QAAQA,EAAK,QAAQ,GAAKA,EAAK,OAAO,EAAI,EAAI4B,GAAK,CAAC,EACzD5B,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,SAASA,EAAMG,GAAM,CACtBH,EAAK,QAAQA,EAAK,QAAQ,EAAIG,GAAO,CAAC,CACxC,EAAG,SAASC,EAAOK,GAAK,CACtB,OAAQA,GAAML,GAASK,GAAI,kBAAkB,EAAIL,EAAM,kBAAkB,GAAKW,GAAkBG,CAClG,CAAC,CACH,CAEA,IAAIW,EAASF,EAAQ,CAAC,EAClBG,EAASH,EAAQ,CAAC,EAClBI,GAAUJ,EAAQ,CAAC,EACnBK,EAAYL,EAAQ,CAAC,EACrBM,EAAWN,EAAQ,CAAC,EACpBO,EAASP,EAAQ,CAAC,EAClBQ,EAAWR,EAAQ,CAAC,EAEpBS,EAAUP,EAAO,MACjBQ,GAAUP,EAAO,MACjBQ,EAAWP,GAAQ,MACnBQ,GAAaP,EAAU,MACvBQ,GAAYP,EAAS,MACrBQ,GAAUP,EAAO,MACjBQ,GAAYP,EAAS,MAErBQ,EAAQjD,EAAY,SAASM,EAAM,CACrCA,EAAK,QAAQ,CAAC,EACdA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,SAASA,EAAK,SAAS,EAAIG,CAAI,CACtC,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAOA,EAAI,SAAS,EAAIL,EAAM,SAAS,GAAKK,EAAI,YAAY,EAAIL,EAAM,YAAY,GAAK,EACzF,EAAG,SAASJ,EAAM,CAChB,OAAOA,EAAK,SAAS,CACvB,CAAC,EACG4C,GAASD,EAAM,MAEfE,GAAOnD,EAAY,SAASM,EAAM,CACpCA,EAAK,SAAS,EAAG,CAAC,EAClBA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,YAAYA,EAAK,YAAY,EAAIG,CAAI,CAC5C,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAOA,EAAI,YAAY,EAAIL,EAAM,YAAY,CAC/C,EAAG,SAASJ,EAAM,CAChB,OAAOA,EAAK,YAAY,CAC1B,CAAC,EAGD6C,GAAK,MAAQ,SAASjC,EAAG,CACvB,MAAO,CAAC,SAASA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,EAAEA,EAAI,GAAK,KAAOlB,EAAY,SAASM,EAAM,CAClFA,EAAK,YAAY,KAAK,MAAMA,EAAK,YAAY,EAAIY,CAAC,EAAIA,CAAC,EACvDZ,EAAK,SAAS,EAAG,CAAC,EAClBA,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,CAC1B,EAAG,SAASA,EAAMG,GAAM,CACtBH,EAAK,YAAYA,EAAK,YAAY,EAAIG,GAAOS,CAAC,CAChD,CAAC,CACH,EACA,IAAIkC,GAAQD,GAAK,MAEbE,GAAYrD,EAAY,SAASM,EAAM,CACzCA,EAAK,cAAc,EAAG,CAAC,CACzB,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,EAAOY,CAAc,CAC5C,EAAG,SAASX,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASW,CACzB,EAAG,SAASf,EAAM,CAChB,OAAOA,EAAK,cAAc,CAC5B,CAAC,EACGgD,GAAaD,GAAU,MAEvBE,GAAUvD,EAAY,SAASM,EAAM,CACvCA,EAAK,cAAc,EAAG,EAAG,CAAC,CAC5B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,QAAQ,CAACA,EAAOG,EAAOa,CAAY,CAC1C,EAAG,SAASZ,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASY,CACzB,EAAG,SAAShB,EAAM,CAChB,OAAOA,EAAK,YAAY,CAC1B,CAAC,EACGkD,GAAWD,GAAQ,MAEnBE,GAASzD,EAAY,SAASM,EAAM,CACtCA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,WAAWA,EAAK,WAAW,EAAIG,CAAI,CAC1C,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAQA,EAAML,GAASa,CACzB,EAAG,SAASjB,EAAM,CAChB,OAAOA,EAAK,WAAW,EAAI,CAC7B,CAAC,EACGoD,GAAUD,GAAO,MAErB,SAASE,EAAWzB,EAAG,CACrB,OAAOlC,EAAY,SAASM,EAAM,CAChCA,EAAK,WAAWA,EAAK,WAAW,GAAKA,EAAK,UAAU,EAAI,EAAI4B,GAAK,CAAC,EAClE5B,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,SAASA,EAAMG,GAAM,CACtBH,EAAK,WAAWA,EAAK,WAAW,EAAIG,GAAO,CAAC,CAC9C,EAAG,SAASC,EAAOK,GAAK,CACtB,OAAQA,GAAML,GAASc,CACzB,CAAC,CACH,CAEA,IAAIoC,EAAYD,EAAW,CAAC,EACxBE,EAAYF,EAAW,CAAC,EACxBG,EAAaH,EAAW,CAAC,EACzBI,EAAeJ,EAAW,CAAC,EAC3BK,EAAcL,EAAW,CAAC,EAC1BM,EAAYN,EAAW,CAAC,EACxBO,EAAcP,EAAW,CAAC,EAE1BQ,EAAaP,EAAU,MACvBQ,GAAaP,EAAU,MACvBQ,GAAcP,EAAW,MACzBQ,GAAgBP,EAAa,MAC7BQ,EAAeP,EAAY,MAC3BQ,GAAaP,EAAU,MACvBQ,GAAeP,EAAY,MAE3BQ,GAAW1E,EAAY,SAASM,EAAM,CACxCA,EAAK,WAAW,CAAC,EACjBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,YAAYA,EAAK,YAAY,EAAIG,CAAI,CAC5C,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAOA,EAAI,YAAY,EAAIL,EAAM,YAAY,GAAKK,EAAI,eAAe,EAAIL,EAAM,eAAe,GAAK,EACrG,EAAG,SAASJ,EAAM,CAChB,OAAOA,EAAK,YAAY,CAC1B,CAAC,EACGqE,GAAYD,GAAS,MAErBE,GAAU5E,EAAY,SAASM,EAAM,CACvCA,EAAK,YAAY,EAAG,CAAC,EACrBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,SAASA,EAAMG,EAAM,CACtBH,EAAK,eAAeA,EAAK,eAAe,EAAIG,CAAI,CAClD,EAAG,SAASC,EAAOK,EAAK,CACtB,OAAOA,EAAI,eAAe,EAAIL,EAAM,eAAe,CACrD,EAAG,SAASJ,EAAM,CAChB,OAAOA,EAAK,eAAe,CAC7B,CAAC,EAGDsE,GAAQ,MAAQ,SAAS1D,EAAG,CAC1B,MAAO,CAAC,SAASA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,EAAEA,EAAI,GAAK,KAAOlB,EAAY,SAASM,EAAM,CAClFA,EAAK,eAAe,KAAK,MAAMA,EAAK,eAAe,EAAIY,CAAC,EAAIA,CAAC,EAC7DZ,EAAK,YAAY,EAAG,CAAC,EACrBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAG,SAASA,EAAMG,GAAM,CACtBH,EAAK,eAAeA,EAAK,eAAe,EAAIG,GAAOS,CAAC,CACtD,CAAC,CACH,EACA,IAAI2D,GAAWD,GAAQ,MAEvBlF,EAAQ,QAAUqC,EAClBrC,EAAQ,SAAWsC,EACnBtC,EAAQ,WAAa8C,EACrB9C,EAAQ,YAAcqD,GACtBrD,EAAQ,SAAWmC,EACnBnC,EAAQ,UAAYoC,EACpBpC,EAAQ,aAAeM,EACvBN,EAAQ,gBAAkBuB,EAC1BvB,EAAQ,iBAAmByB,EAC3BzB,EAAQ,WAAaiC,EACrBjC,EAAQ,YAAckC,EACtBlC,EAAQ,WAAa0C,EACrB1C,EAAQ,YAAciD,GACtBjD,EAAQ,UAAYuD,EACpBvD,EAAQ,WAAawD,GACrBxD,EAAQ,aAAe+C,EACvB/C,EAAQ,cAAgBsD,GACxBtD,EAAQ,WAAa+B,EACrB/B,EAAQ,YAAcgC,EACtBhC,EAAQ,WAAayC,EACrBzC,EAAQ,YAAcgD,EACtBhD,EAAQ,aAAe6C,EACvB7C,EAAQ,cAAgBoD,GACxBpD,EAAQ,YAAc2C,GACtB3C,EAAQ,aAAekD,EACvBlD,EAAQ,cAAgB4C,EACxB5C,EAAQ,eAAiBmD,GACzBnD,EAAQ,SAAWyC,EACnBzC,EAAQ,UAAYgD,EACpBhD,EAAQ,SAAWyD,GACnBzD,EAAQ,UAAY0D,GACpB1D,EAAQ,OAAS+D,GACjB/D,EAAQ,QAAUgE,GAClBhE,EAAQ,UAAYuE,EACpBvE,EAAQ,WAAa8E,GACrB9E,EAAQ,QAAU6D,GAClB7D,EAAQ,SAAW8D,GACnB9D,EAAQ,eAAiBuB,EACzBvB,EAAQ,gBAAkByB,EAC1BzB,EAAQ,UAAY2D,GACpB3D,EAAQ,WAAa4D,GACrB5D,EAAQ,UAAYmE,EACpBnE,EAAQ,WAAa0E,GACrB1E,EAAQ,SAAWgF,GACnBhF,EAAQ,UAAYiF,GACpBjF,EAAQ,YAAcwE,EACtBxE,EAAQ,aAAe+E,GACvB/E,EAAQ,UAAY+B,EACpB/B,EAAQ,WAAagC,EACrBhC,EAAQ,UAAYkE,EACpBlE,EAAQ,WAAayE,EACrBzE,EAAQ,YAAcsE,EACtBtE,EAAQ,aAAe6E,EACvB7E,EAAQ,WAAaoE,EACrBpE,EAAQ,YAAc2E,GACtB3E,EAAQ,aAAeqE,EACvBrE,EAAQ,cAAgB4E,GACxB5E,EAAQ,QAAUkE,EAClBlE,EAAQ,SAAWyE,EACnBzE,EAAQ,QAAUkF,GAClBlF,EAAQ,SAAWmF,GAEnB,OAAO,eAAenF,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAE5D,CAAC,ICpXD,IAAAoF,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EACC,SAAUC,EAAQC,EAAS,CAC5B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,GAAS,IAAkB,EAClG,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,UAAW,SAAS,EAAGG,CAAO,GAClFD,EAASA,GAAU,KAAMC,EAAQD,EAAO,GAAKA,EAAO,IAAM,CAAC,EAAGA,EAAO,EAAE,EACxE,GAAEF,GAAM,SAAUA,EAASI,EAAQ,CAAE,aAErC,SAASC,EAAUC,EAAG,CACpB,GAAI,GAAKA,EAAE,GAAKA,EAAE,EAAI,IAAK,CACzB,IAAIC,EAAO,IAAI,KAAK,GAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACpD,OAAAC,EAAK,YAAYD,EAAE,CAAC,EACbC,CACT,CACA,OAAO,IAAI,KAAKD,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CACnD,CAEA,SAASE,EAAQF,EAAG,CAClB,GAAI,GAAKA,EAAE,GAAKA,EAAE,EAAI,IAAK,CACzB,IAAIC,EAAO,IAAI,KAAK,KAAK,IAAI,GAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAC9D,OAAAC,EAAK,eAAeD,EAAE,CAAC,EAChBC,CACT,CACA,OAAO,IAAI,KAAK,KAAK,IAAID,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC7D,CAEA,SAASG,EAAQC,EAAG,EAAGJ,EAAG,CACxB,MAAO,CAAC,EAAGI,EAAG,EAAM,EAAGJ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAClD,CAEA,SAASK,EAAaC,EAAQ,CAC5B,IAAIC,EAAkBD,EAAO,SACzBE,EAAcF,EAAO,KACrBG,EAAcH,EAAO,KACrBI,GAAiBJ,EAAO,QACxBK,GAAkBL,EAAO,KACzBM,GAAuBN,EAAO,UAC9BO,GAAgBP,EAAO,OACvBQ,GAAqBR,EAAO,YAE5BS,GAAWC,EAASN,EAAc,EAClCO,GAAeC,EAAaR,EAAc,EAC1CS,GAAYH,EAASL,EAAe,EACpCS,GAAgBF,EAAaP,EAAe,EAC5CU,GAAiBL,EAASJ,EAAoB,EAC9CU,GAAqBJ,EAAaN,EAAoB,EACtDW,GAAUP,EAASH,EAAa,EAChCW,GAAcN,EAAaL,EAAa,EACxCY,GAAeT,EAASF,EAAkB,EAC1CY,GAAmBR,EAAaJ,EAAkB,EAElDa,GAAU,CACZ,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAKC,EACL,EAAKA,EACL,EAAKC,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAK,KACL,EAAK,KACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,IAAKC,EACP,EAEIC,GAAa,CACf,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK5B,GACL,EAAKC,GACL,EAAK4B,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAK,KACL,EAAK,KACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,IAAK1B,EACP,EAEI2B,GAAS,CACX,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKA,EACL,EAAKC,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKA,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,EACL,EAAKC,EACL,EAAKC,EACLC,EACA,EAAKC,EACL,EAAKC,GACL,EAAKC,GACL,EAAKlB,EACL,EAAKC,EACL,EAAKkB,EACL,IAAKC,EACP,EAGAnF,GAAQ,EAAIoF,GAAUvG,EAAamB,EAAO,EAC1CA,GAAQ,EAAIoF,GAAUtG,EAAakB,EAAO,EAC1CA,GAAQ,EAAIoF,GAAUxG,EAAiBoB,EAAO,EAC9C6B,GAAW,EAAIuD,GAAUvG,EAAagD,EAAU,EAChDA,GAAW,EAAIuD,GAAUtG,EAAa+C,EAAU,EAChDA,GAAW,EAAIuD,GAAUxG,EAAiBiD,EAAU,EAEpD,SAASuD,GAAUC,EAAWrF,EAAS,CACrC,OAAO,SAAS1B,EAAM,CACpB,IAAIgH,EAAS,CAAC,EACVC,GAAI,GACJC,EAAI,EACJC,GAAIJ,EAAU,OACdK,GACAC,GACAC,GAIJ,IAFMtH,aAAgB,OAAOA,EAAO,IAAI,KAAK,CAACA,CAAI,GAE3C,EAAEiH,GAAIE,IACPJ,EAAU,WAAWE,EAAC,IAAM,KAC9BD,EAAO,KAAKD,EAAU,MAAMG,EAAGD,EAAC,CAAC,GAC5BI,GAAME,EAAKH,GAAIL,EAAU,OAAO,EAAEE,EAAC,CAAC,IAAM,KAAMG,GAAIL,EAAU,OAAO,EAAEE,EAAC,EACxEI,GAAMD,KAAM,IAAM,IAAM,KACzBE,GAAS5F,EAAQ0F,EAAC,KAAGA,GAAIE,GAAOtH,EAAMqH,EAAG,GAC7CL,EAAO,KAAKI,EAAC,EACbF,EAAID,GAAI,GAIZ,OAAAD,EAAO,KAAKD,EAAU,MAAMG,EAAGD,EAAC,CAAC,EAC1BD,EAAO,KAAK,EAAE,CACvB,CACF,CAEA,SAASQ,GAAST,EAAWU,EAAG,CAC9B,OAAO,SAAST,EAAQ,CACtB,IAAIjH,EAAIG,EAAQ,KAAM,OAAW,CAAC,EAC9B+G,GAAIS,GAAe3H,EAAGgH,EAAWC,GAAU,GAAI,CAAC,EAChDW,EAAMC,GACV,GAAIX,IAAKD,EAAO,OAAQ,OAAO,KAG/B,GAAI,MAAOjH,EAAG,OAAO,IAAI,KAAKA,EAAE,CAAC,EACjC,GAAI,MAAOA,EAAG,OAAO,IAAI,KAAKA,EAAE,EAAI,KAAQ,MAAOA,EAAIA,EAAE,EAAI,EAAE,EAY/D,GATI0H,GAAK,EAAE,MAAO1H,KAAIA,EAAE,EAAI,GAGxB,MAAOA,IAAGA,EAAE,EAAIA,EAAE,EAAI,GAAKA,EAAE,EAAI,IAGjCA,EAAE,IAAM,SAAWA,EAAE,EAAI,MAAOA,EAAIA,EAAE,EAAI,GAG1C,MAAOA,EAAG,CACZ,GAAIA,EAAE,EAAI,GAAKA,EAAE,EAAI,GAAI,OAAO,KAC1B,MAAOA,IAAIA,EAAE,EAAI,GACnB,MAAOA,GACT4H,EAAO1H,EAAQC,EAAQH,EAAE,EAAG,EAAG,CAAC,CAAC,EAAG6H,GAAMD,EAAK,UAAU,EACzDA,EAAOC,GAAM,GAAKA,KAAQ,EAAI/H,EAAO,UAAU,KAAK8H,CAAI,EAAI9H,EAAO,UAAU8H,CAAI,EACjFA,EAAO9H,EAAO,OAAO,OAAO8H,GAAO5H,EAAE,EAAI,GAAK,CAAC,EAC/CA,EAAE,EAAI4H,EAAK,eAAe,EAC1B5H,EAAE,EAAI4H,EAAK,YAAY,EACvB5H,EAAE,EAAI4H,EAAK,WAAW,GAAK5H,EAAE,EAAI,GAAK,IAEtC4H,EAAO7H,EAAUI,EAAQH,EAAE,EAAG,EAAG,CAAC,CAAC,EAAG6H,GAAMD,EAAK,OAAO,EACxDA,EAAOC,GAAM,GAAKA,KAAQ,EAAI/H,EAAO,WAAW,KAAK8H,CAAI,EAAI9H,EAAO,WAAW8H,CAAI,EACnFA,EAAO9H,EAAO,QAAQ,OAAO8H,GAAO5H,EAAE,EAAI,GAAK,CAAC,EAChDA,EAAE,EAAI4H,EAAK,YAAY,EACvB5H,EAAE,EAAI4H,EAAK,SAAS,EACpB5H,EAAE,EAAI4H,EAAK,QAAQ,GAAK5H,EAAE,EAAI,GAAK,EAEvC,MAAW,MAAOA,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE,EAAI,MAAOA,EAAIA,EAAE,EAAI,EAAI,MAAOA,EAAI,EAAI,GAC3D6H,GAAM,MAAO7H,EAAIE,EAAQC,EAAQH,EAAE,EAAG,EAAG,CAAC,CAAC,EAAE,UAAU,EAAID,EAAUI,EAAQH,EAAE,EAAG,EAAG,CAAC,CAAC,EAAE,OAAO,EAChGA,EAAE,EAAI,EACNA,EAAE,EAAI,MAAOA,GAAKA,EAAE,EAAI,GAAK,EAAIA,EAAE,EAAI,GAAK6H,GAAM,GAAK,EAAI7H,EAAE,EAAIA,EAAE,EAAI,GAAK6H,GAAM,GAAK,GAKzF,MAAI,MAAO7H,GACTA,EAAE,GAAKA,EAAE,EAAI,IAAM,EACnBA,EAAE,GAAKA,EAAE,EAAI,IACNE,EAAQF,CAAC,GAIXD,EAAUC,CAAC,CACpB,CACF,CAEA,SAAS2H,GAAe3H,EAAGgH,EAAWC,EAAQE,EAAG,CAO/C,QANID,GAAI,EACJE,EAAIJ,EAAU,OACdc,GAAIb,EAAO,OACXI,GACAU,GAEGb,GAAIE,GAAG,CACZ,GAAID,GAAKW,GAAG,MAAO,GAEnB,GADAT,GAAIL,EAAU,WAAWE,IAAG,EACxBG,KAAM,IAGR,GAFAA,GAAIL,EAAU,OAAOE,IAAG,EACxBa,GAAQ7C,GAAOmC,MAAKG,EAAOR,EAAU,OAAOE,IAAG,EAAIG,EAAC,EAChD,CAACU,KAAWZ,EAAIY,GAAM/H,EAAGiH,EAAQE,CAAC,GAAK,EAAI,MAAO,WAC7CE,IAAKJ,EAAO,WAAWE,GAAG,EACnC,MAAO,EAEX,CAEA,OAAOA,CACT,CAEA,SAASlB,GAAYjG,EAAGiH,EAAQC,EAAG,CACjC,IAAIE,EAAIrG,GAAS,KAAKkG,EAAO,MAAMC,CAAC,CAAC,EACrC,OAAOE,GAAKpH,EAAE,EAAIiB,GAAamG,EAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EACzE,CAEA,SAASjC,GAAkBnF,EAAGiH,EAAQC,EAAG,CACvC,IAAIE,EAAI/F,GAAe,KAAK4F,EAAO,MAAMC,CAAC,CAAC,EAC3C,OAAOE,GAAKpH,EAAE,EAAIsB,GAAmB8F,EAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC/E,CAEA,SAAShC,GAAapF,EAAGiH,EAAQC,EAAG,CAClC,IAAIE,EAAIjG,GAAU,KAAK8F,EAAO,MAAMC,CAAC,CAAC,EACtC,OAAOE,GAAKpH,EAAE,EAAIoB,GAAcgG,EAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC1E,CAEA,SAAS/B,GAAgBrF,EAAGiH,EAAQC,EAAG,CACrC,IAAIE,EAAI3F,GAAa,KAAKwF,EAAO,MAAMC,CAAC,CAAC,EACzC,OAAOE,GAAKpH,EAAE,EAAI0B,GAAiB0F,EAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC7E,CAEA,SAAS9B,GAAWtF,EAAGiH,EAAQC,EAAG,CAChC,IAAIE,EAAI7F,GAAQ,KAAK0F,EAAO,MAAMC,CAAC,CAAC,EACpC,OAAOE,GAAKpH,EAAE,EAAIwB,GAAY4F,EAAE,CAAC,EAAE,YAAY,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EACxE,CAEA,SAAS7B,GAAoBvF,EAAGiH,EAAQC,EAAG,CACzC,OAAOS,GAAe3H,EAAGO,EAAiB0G,EAAQC,CAAC,CACrD,CAEA,SAASP,GAAgB3G,EAAGiH,EAAQC,EAAG,CACrC,OAAOS,GAAe3H,EAAGQ,EAAayG,EAAQC,CAAC,CACjD,CAEA,SAASN,GAAgB5G,EAAGiH,EAAQC,EAAG,CACrC,OAAOS,GAAe3H,EAAGS,EAAawG,EAAQC,CAAC,CACjD,CAEA,SAAStF,GAAmB5B,EAAG,CAC7B,OAAOY,GAAqBZ,EAAE,OAAO,CAAC,CACxC,CAEA,SAAS6B,GAAc7B,EAAG,CACxB,OAAOW,GAAgBX,EAAE,OAAO,CAAC,CACnC,CAEA,SAAS8B,GAAiB9B,EAAG,CAC3B,OAAOc,GAAmBd,EAAE,SAAS,CAAC,CACxC,CAEA,SAAS+B,GAAY/B,EAAG,CACtB,OAAOa,GAAcb,EAAE,SAAS,CAAC,CACnC,CAEA,SAAS0C,GAAa1C,EAAG,CACvB,OAAOU,GAAe,EAAEV,EAAE,SAAS,GAAK,GAAG,CAC7C,CAEA,SAAS2C,GAAc3C,EAAG,CACxB,MAAO,GAAI,CAAC,EAAEA,EAAE,SAAS,EAAI,EAC/B,CAEA,SAASyD,GAAsBzD,EAAG,CAChC,OAAOY,GAAqBZ,EAAE,UAAU,CAAC,CAC3C,CAEA,SAAS0D,GAAiB1D,EAAG,CAC3B,OAAOW,GAAgBX,EAAE,UAAU,CAAC,CACtC,CAEA,SAAS2D,GAAoB3D,EAAG,CAC9B,OAAOc,GAAmBd,EAAE,YAAY,CAAC,CAC3C,CAEA,SAAS4D,GAAe5D,EAAG,CACzB,OAAOa,GAAcb,EAAE,YAAY,CAAC,CACtC,CAEA,SAASuE,GAAgBvE,EAAG,CAC1B,OAAOU,GAAe,EAAEV,EAAE,YAAY,GAAK,GAAG,CAChD,CAEA,SAASwE,GAAiBxE,EAAG,CAC3B,MAAO,GAAI,CAAC,EAAEA,EAAE,YAAY,EAAI,EAClC,CAEA,MAAO,CACL,OAAQ,SAASgH,EAAW,CAC1B,IAAIgB,EAAIjB,GAAUC,GAAa,GAAIrF,EAAO,EAC1C,OAAAqG,EAAE,SAAW,UAAW,CAAE,OAAOhB,CAAW,EACrCgB,CACT,EACA,MAAO,SAAShB,EAAW,CACzB,IAAIiB,EAAIR,GAAST,GAAa,GAAI,EAAK,EACvC,OAAAiB,EAAE,SAAW,UAAW,CAAE,OAAOjB,CAAW,EACrCiB,CACT,EACA,UAAW,SAASjB,EAAW,CAC7B,IAAIgB,EAAIjB,GAAUC,GAAa,GAAIxD,EAAU,EAC7C,OAAAwE,EAAE,SAAW,UAAW,CAAE,OAAOhB,CAAW,EACrCgB,CACT,EACA,SAAU,SAAShB,EAAW,CAC5B,IAAIiB,EAAIR,GAAST,GAAa,GAAI,EAAI,EACtC,OAAAiB,EAAE,SAAW,UAAW,CAAE,OAAOjB,CAAW,EACrCiB,CACT,CACF,CACF,CAEA,IAAIT,EAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,GAAG,EACnCU,EAAW,UACXC,EAAY,KACZC,EAAY,sBAEhB,SAASd,EAAIe,EAAOC,EAAMC,EAAO,CAC/B,IAAIC,EAAOH,EAAQ,EAAI,IAAM,GACzBpB,IAAUuB,EAAO,CAACH,EAAQA,GAAS,GACnCI,GAASxB,GAAO,OACpB,OAAOuB,GAAQC,GAASF,EAAQ,IAAI,MAAMA,EAAQE,GAAS,CAAC,EAAE,KAAKH,CAAI,EAAIrB,GAASA,GACtF,CAEA,SAASyB,EAAQC,EAAG,CAClB,OAAOA,EAAE,QAAQP,EAAW,MAAM,CACpC,CAEA,SAASpH,EAAS4H,EAAO,CACvB,OAAO,IAAI,OAAO,OAASA,EAAM,IAAIF,CAAO,EAAE,KAAK,GAAG,EAAI,IAAK,GAAG,CACpE,CAEA,SAASxH,EAAa0H,EAAO,CAE3B,QADIC,EAAM,CAAC,EAAG3B,EAAI,GAAIE,EAAIwB,EAAM,OACzB,EAAE1B,EAAIE,GAAGyB,EAAID,EAAM1B,CAAC,EAAE,YAAY,CAAC,EAAIA,EAC9C,OAAO2B,CACT,CAEA,SAASpC,EAAyBzG,EAAGiH,EAAQC,EAAG,CAC9C,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASd,EAAyBtG,EAAGiH,EAAQC,EAAG,CAC9C,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASb,EAAsBvG,EAAGiH,EAAQC,EAAG,CAC3C,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASZ,EAAmBxG,EAAGiH,EAAQC,EAAG,CACxC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASV,EAAsB1G,EAAGiH,EAAQC,EAAG,CAC3C,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASzB,EAAc3F,EAAGiH,EAAQC,EAAG,CACnC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAAS1B,EAAU1F,EAAGiH,EAAQC,EAAG,CAC/B,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,GAAK,CAACA,EAAE,CAAC,EAAI,GAAK,KAAO,KAAOF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC3E,CAEA,SAASP,EAAU7G,EAAGiH,EAAQC,EAAG,CAC/B,IAAIE,EAAI,+BAA+B,KAAKH,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAClE,OAAOE,GAAKpH,EAAE,EAAIoH,EAAE,CAAC,EAAI,EAAI,EAAEA,EAAE,CAAC,GAAKA,EAAE,CAAC,GAAK,OAAQF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC5E,CAEA,SAASlB,GAAalG,EAAGiH,EAAQC,EAAG,CAClC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAIoH,EAAE,CAAC,EAAI,EAAI,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EACrD,CAEA,SAASrB,EAAiB/F,EAAGiH,EAAQC,EAAG,CACtC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAIoH,EAAE,CAAC,EAAI,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EACjD,CAEA,SAAS5B,EAAgBxF,EAAGiH,EAAQC,EAAG,CACrC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASvB,EAAe7F,EAAGiH,EAAQC,EAAG,CACpC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,EAAGA,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EACvD,CAEA,SAASxB,EAAY5F,EAAGiH,EAAQC,EAAG,CACjC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASpB,EAAahG,EAAGiH,EAAQC,EAAG,CAClC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASf,GAAarG,EAAGiH,EAAQC,EAAG,CAClC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAAStB,EAAkB9F,EAAGiH,EAAQC,EAAG,CACvC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAAS3B,GAAkBzF,EAAGiH,EAAQC,EAAG,CACvC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC5C,OAAOE,GAAKpH,EAAE,EAAI,KAAK,MAAMoH,EAAE,CAAC,EAAI,GAAI,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAChE,CAEA,SAASN,GAAoB9G,EAAGiH,EAAQC,EAAG,CACzC,IAAIE,EAAIe,EAAU,KAAKlB,EAAO,MAAMC,EAAGA,EAAI,CAAC,CAAC,EAC7C,OAAOE,EAAIF,EAAIE,EAAE,CAAC,EAAE,OAAS,EAC/B,CAEA,SAASjB,GAAmBnG,EAAGiH,EAAQC,EAAG,CACxC,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,CAAC,CAAC,EACrC,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAAShB,GAA0BpG,EAAGiH,EAAQC,EAAG,CAC/C,IAAIE,EAAIc,EAAS,KAAKjB,EAAO,MAAMC,CAAC,CAAC,EACrC,OAAOE,GAAKpH,EAAE,EAAI,CAACoH,EAAE,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAE,QAAU,EAC9C,CAEA,SAASpF,EAAiBhC,EAAGiI,EAAG,CAC9B,OAAOX,EAAItH,EAAE,QAAQ,EAAGiI,EAAG,CAAC,CAC9B,CAEA,SAAS7F,GAAapC,EAAGiI,EAAG,CAC1B,OAAOX,EAAItH,EAAE,SAAS,EAAGiI,EAAG,CAAC,CAC/B,CAEA,SAAS5F,GAAarC,EAAGiI,EAAG,CAC1B,OAAOX,EAAItH,EAAE,SAAS,EAAI,IAAM,GAAIiI,EAAG,CAAC,CAC1C,CAEA,SAAS3F,GAAgBtC,EAAGiI,EAAG,CAC7B,OAAOX,EAAI,EAAIxH,EAAO,QAAQ,MAAMA,EAAO,SAASE,CAAC,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CAClE,CAEA,SAAS1F,GAAmBvC,EAAGiI,EAAG,CAChC,OAAOX,EAAItH,EAAE,gBAAgB,EAAGiI,EAAG,CAAC,CACtC,CAEA,SAAShG,GAAmBjC,EAAGiI,EAAG,CAChC,OAAO1F,GAAmBvC,EAAGiI,CAAC,EAAI,KACpC,CAEA,SAASzF,GAAkBxC,EAAGiI,EAAG,CAC/B,OAAOX,EAAItH,EAAE,SAAS,EAAI,EAAGiI,EAAG,CAAC,CACnC,CAEA,SAASxF,GAAczC,EAAGiI,EAAG,CAC3B,OAAOX,EAAItH,EAAE,WAAW,EAAGiI,EAAG,CAAC,CACjC,CAEA,SAASnF,GAAc9C,EAAGiI,EAAG,CAC3B,OAAOX,EAAItH,EAAE,WAAW,EAAGiI,EAAG,CAAC,CACjC,CAEA,SAASlF,GAA0B/C,EAAG,CACpC,IAAI6H,EAAM7H,EAAE,OAAO,EACnB,OAAO6H,IAAQ,EAAI,EAAIA,CACzB,CAEA,SAAS7E,EAAuBhD,EAAGiI,EAAG,CACpC,OAAOX,EAAIxH,EAAO,WAAW,MAAMA,EAAO,SAASE,CAAC,EAAI,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CACrE,CAEA,SAASa,EAAK9I,EAAG,CACf,IAAI6H,EAAM7H,EAAE,OAAO,EACnB,OAAQ6H,GAAO,GAAKA,IAAQ,EAAK/H,EAAO,aAAaE,CAAC,EAAIF,EAAO,aAAa,KAAKE,CAAC,CACtF,CAEA,SAASiD,EAAoBjD,EAAGiI,EAAG,CACjC,OAAAjI,EAAI8I,EAAK9I,CAAC,EACHsH,EAAIxH,EAAO,aAAa,MAAMA,EAAO,SAASE,CAAC,EAAGA,CAAC,GAAKF,EAAO,SAASE,CAAC,EAAE,OAAO,IAAM,GAAIiI,EAAG,CAAC,CACzG,CAEA,SAAS/E,EAA0BlD,EAAG,CACpC,OAAOA,EAAE,OAAO,CAClB,CAEA,SAASmD,EAAuBnD,EAAGiI,EAAG,CACpC,OAAOX,EAAIxH,EAAO,WAAW,MAAMA,EAAO,SAASE,CAAC,EAAI,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CACrE,CAEA,SAAS7E,EAAWpD,EAAGiI,EAAG,CACxB,OAAOX,EAAItH,EAAE,YAAY,EAAI,IAAKiI,EAAG,CAAC,CACxC,CAEA,SAAS/F,EAAclC,EAAGiI,EAAG,CAC3B,OAAAjI,EAAI8I,EAAK9I,CAAC,EACHsH,EAAItH,EAAE,YAAY,EAAI,IAAKiI,EAAG,CAAC,CACxC,CAEA,SAAS5E,EAAerD,EAAGiI,EAAG,CAC5B,OAAOX,EAAItH,EAAE,YAAY,EAAI,IAAOiI,EAAG,CAAC,CAC1C,CAEA,SAAS9F,EAAkBnC,EAAGiI,EAAG,CAC/B,IAAIJ,EAAM7H,EAAE,OAAO,EACnB,OAAAA,EAAK6H,GAAO,GAAKA,IAAQ,EAAK/H,EAAO,aAAaE,CAAC,EAAIF,EAAO,aAAa,KAAKE,CAAC,EAC1EsH,EAAItH,EAAE,YAAY,EAAI,IAAOiI,EAAG,CAAC,CAC1C,CAEA,SAAS3E,GAAWtD,EAAG,CACrB,IAAI+I,EAAI/I,EAAE,kBAAkB,EAC5B,OAAQ+I,EAAI,EAAI,KAAOA,GAAK,GAAI,MAC1BzB,EAAIyB,EAAI,GAAK,EAAG,IAAK,CAAC,EACtBzB,EAAIyB,EAAI,GAAI,IAAK,CAAC,CAC1B,CAEA,SAASlF,GAAoB7D,EAAGiI,EAAG,CACjC,OAAOX,EAAItH,EAAE,WAAW,EAAGiI,EAAG,CAAC,CACjC,CAEA,SAAShE,GAAgBjE,EAAGiI,EAAG,CAC7B,OAAOX,EAAItH,EAAE,YAAY,EAAGiI,EAAG,CAAC,CAClC,CAEA,SAAS/D,EAAgBlE,EAAGiI,EAAG,CAC7B,OAAOX,EAAItH,EAAE,YAAY,EAAI,IAAM,GAAIiI,EAAG,CAAC,CAC7C,CAEA,SAAS9D,GAAmBnE,EAAGiI,EAAG,CAChC,OAAOX,EAAI,EAAIxH,EAAO,OAAO,MAAMA,EAAO,QAAQE,CAAC,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CAChE,CAEA,SAAS7D,GAAsBpE,EAAGiI,EAAG,CACnC,OAAOX,EAAItH,EAAE,mBAAmB,EAAGiI,EAAG,CAAC,CACzC,CAEA,SAASnE,GAAsB9D,EAAGiI,EAAG,CACnC,OAAO7D,GAAsBpE,EAAGiI,CAAC,EAAI,KACvC,CAEA,SAAS5D,GAAqBrE,EAAGiI,EAAG,CAClC,OAAOX,EAAItH,EAAE,YAAY,EAAI,EAAGiI,EAAG,CAAC,CACtC,CAEA,SAAS3D,GAAiBtE,EAAGiI,EAAG,CAC9B,OAAOX,EAAItH,EAAE,cAAc,EAAGiI,EAAG,CAAC,CACpC,CAEA,SAASxD,GAAiBzE,EAAGiI,EAAG,CAC9B,OAAOX,EAAItH,EAAE,cAAc,EAAGiI,EAAG,CAAC,CACpC,CAEA,SAASvD,EAA6B1E,EAAG,CACvC,IAAIgJ,EAAMhJ,EAAE,UAAU,EACtB,OAAOgJ,IAAQ,EAAI,EAAIA,CACzB,CAEA,SAASrE,EAA0B3E,EAAGiI,EAAG,CACvC,OAAOX,EAAIxH,EAAO,UAAU,MAAMA,EAAO,QAAQE,CAAC,EAAI,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CACnE,CAEA,SAASgB,GAAQjJ,EAAG,CAClB,IAAI6H,EAAM7H,EAAE,UAAU,EACtB,OAAQ6H,GAAO,GAAKA,IAAQ,EAAK/H,EAAO,YAAYE,CAAC,EAAIF,EAAO,YAAY,KAAKE,CAAC,CACpF,CAEA,SAAS4E,GAAuB5E,EAAGiI,EAAG,CACpC,OAAAjI,EAAIiJ,GAAQjJ,CAAC,EACNsH,EAAIxH,EAAO,YAAY,MAAMA,EAAO,QAAQE,CAAC,EAAGA,CAAC,GAAKF,EAAO,QAAQE,CAAC,EAAE,UAAU,IAAM,GAAIiI,EAAG,CAAC,CACzG,CAEA,SAASpD,GAA6B7E,EAAG,CACvC,OAAOA,EAAE,UAAU,CACrB,CAEA,SAAS8E,EAA0B9E,EAAGiI,EAAG,CACvC,OAAOX,EAAIxH,EAAO,UAAU,MAAMA,EAAO,QAAQE,CAAC,EAAI,EAAGA,CAAC,EAAGiI,EAAG,CAAC,CACnE,CAEA,SAASlD,EAAc/E,EAAGiI,EAAG,CAC3B,OAAOX,EAAItH,EAAE,eAAe,EAAI,IAAKiI,EAAG,CAAC,CAC3C,CAEA,SAASlE,GAAiB/D,EAAGiI,EAAG,CAC9B,OAAAjI,EAAIiJ,GAAQjJ,CAAC,EACNsH,EAAItH,EAAE,eAAe,EAAI,IAAKiI,EAAG,CAAC,CAC3C,CAEA,SAASjD,GAAkBhF,EAAGiI,EAAG,CAC/B,OAAOX,EAAItH,EAAE,eAAe,EAAI,IAAOiI,EAAG,CAAC,CAC7C,CAEA,SAASjE,GAAqBhE,EAAGiI,EAAG,CAClC,IAAIJ,EAAM7H,EAAE,UAAU,EACtB,OAAAA,EAAK6H,GAAO,GAAKA,IAAQ,EAAK/H,EAAO,YAAYE,CAAC,EAAIF,EAAO,YAAY,KAAKE,CAAC,EACxEsH,EAAItH,EAAE,eAAe,EAAI,IAAOiI,EAAG,CAAC,CAC7C,CAEA,SAAShD,IAAgB,CACvB,MAAO,OACT,CAEA,SAAS1B,IAAuB,CAC9B,MAAO,GACT,CAEA,SAASX,GAAoB5C,EAAG,CAC9B,MAAO,CAACA,CACV,CAEA,SAAS6C,GAA2B7C,EAAG,CACrC,OAAO,KAAK,MAAM,CAACA,EAAI,GAAI,CAC7B,CAEA,IAAIM,GAEJ4I,GAAc,CACZ,SAAU,SACV,KAAM,aACN,KAAM,eACN,QAAS,CAAC,KAAM,IAAI,EACpB,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,UAAU,EACnF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC3D,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,EACjI,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,CAClG,CAAC,EAED,SAASA,GAAcC,EAAY,CACjC,OAAA7I,GAASD,EAAa8I,CAAU,EAChCzJ,EAAQ,WAAaY,GAAO,OAC5BZ,EAAQ,UAAYY,GAAO,MAC3BZ,EAAQ,UAAYY,GAAO,UAC3BZ,EAAQ,SAAWY,GAAO,SACnBA,EACT,CAEA,IAAI8I,GAAe,wBAEnB,SAASC,GAAgBpJ,EAAM,CAC7B,OAAOA,EAAK,YAAY,CAC1B,CAEA,IAAIqJ,GAAY,KAAK,UAAU,YACzBD,GACA3J,EAAQ,UAAU0J,EAAY,EAEpC,SAASG,GAAetC,EAAQ,CAC9B,IAAIhH,EAAO,IAAI,KAAKgH,CAAM,EAC1B,OAAO,MAAMhH,CAAI,EAAI,KAAOA,CAC9B,CAEA,IAAIuJ,GAAW,CAAC,IAAI,KAAK,0BAA0B,EAC7CD,GACA7J,EAAQ,SAAS0J,EAAY,EAEnC1J,EAAQ,UAAY4J,GACpB5J,EAAQ,SAAW8J,GACnB9J,EAAQ,wBAA0BwJ,GAClCxJ,EAAQ,iBAAmBW,EAE3B,OAAO,eAAeX,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAE5D,CAAC,ICtuBD,IAAA+J,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EACC,SAAUC,EAAQC,EAAS,CAC5B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,EAAO,EAC9E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,SAAS,EAAGG,CAAO,GACvED,EAAS,OAAO,WAAe,IAAc,WAAaA,GAAU,KAAMC,EAAQD,EAAO,GAAKA,EAAO,IAAM,CAAC,CAAC,EAC9G,GAAEF,IAAO,SAAUA,EAAS,CAAE,aAE9B,SAASI,EAAcC,EAAG,CACxB,OAAO,KAAK,IAAIA,EAAI,KAAK,MAAMA,CAAC,CAAC,GAAK,KAChCA,EAAE,eAAe,IAAI,EAAE,QAAQ,KAAM,EAAE,EACvCA,EAAE,SAAS,EAAE,CACrB,CAKA,SAASC,EAAmBD,EAAGE,EAAG,CAChC,IAAKC,GAAKH,EAAIE,EAAIF,EAAE,cAAcE,EAAI,CAAC,EAAIF,EAAE,cAAc,GAAG,QAAQ,GAAG,GAAK,EAAG,OAAO,KACxF,IAAIG,EAAGC,EAAcJ,EAAE,MAAM,EAAGG,CAAC,EAIjC,MAAO,CACLC,EAAY,OAAS,EAAIA,EAAY,CAAC,EAAIA,EAAY,MAAM,CAAC,EAAIA,EACjE,CAACJ,EAAE,MAAMG,EAAI,CAAC,CAChB,CACF,CAEA,SAASE,EAASL,EAAG,CACnB,OAAOA,EAAIC,EAAmB,KAAK,IAAID,CAAC,CAAC,EAAGA,EAAIA,EAAE,CAAC,EAAI,GACzD,CAEA,SAASM,EAAYC,EAAUC,EAAW,CACxC,OAAO,SAASC,EAAOC,EAAO,CAO5B,QANIP,EAAIM,EAAM,OACVE,GAAI,CAAC,EACLC,EAAI,EACJC,GAAIN,EAAS,CAAC,EACdO,GAAS,EAENX,EAAI,GAAKU,GAAI,IACdC,GAASD,GAAI,EAAIH,IAAOG,GAAI,KAAK,IAAI,EAAGH,EAAQI,EAAM,GAC1DH,GAAE,KAAKF,EAAM,UAAUN,GAAKU,GAAGV,EAAIU,EAAC,CAAC,EAChC,GAAAC,IAAUD,GAAI,GAAKH,KACxBG,GAAIN,EAASK,GAAKA,EAAI,GAAKL,EAAS,MAAM,EAG5C,OAAOI,GAAE,QAAQ,EAAE,KAAKH,CAAS,CACnC,CACF,CAEA,SAASO,EAAeC,EAAU,CAChC,OAAO,SAASP,EAAO,CACrB,OAAOA,EAAM,QAAQ,SAAU,SAASN,EAAG,CACzC,OAAOa,EAAS,CAACb,CAAC,CACpB,CAAC,CACH,CACF,CAGA,IAAIc,EAAK,2EAET,SAASC,EAAgBC,EAAW,CAClC,GAAI,EAAEC,EAAQH,EAAG,KAAKE,CAAS,GAAI,MAAM,IAAI,MAAM,mBAAqBA,CAAS,EACjF,IAAIC,EACJ,OAAO,IAAIC,EAAgB,CACzB,KAAMD,EAAM,CAAC,EACb,MAAOA,EAAM,CAAC,EACd,KAAMA,EAAM,CAAC,EACb,OAAQA,EAAM,CAAC,EACf,KAAMA,EAAM,CAAC,EACb,MAAOA,EAAM,CAAC,EACd,MAAOA,EAAM,CAAC,EACd,UAAWA,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAE,MAAM,CAAC,EACvC,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,EAAE,CAChB,CAAC,CACH,CAEAF,EAAgB,UAAYG,EAAgB,UAE5C,SAASA,EAAgBF,EAAW,CAClC,KAAK,KAAOA,EAAU,OAAS,OAAY,IAAMA,EAAU,KAAO,GAClE,KAAK,MAAQA,EAAU,QAAU,OAAY,IAAMA,EAAU,MAAQ,GACrE,KAAK,KAAOA,EAAU,OAAS,OAAY,IAAMA,EAAU,KAAO,GAClE,KAAK,OAASA,EAAU,SAAW,OAAY,GAAKA,EAAU,OAAS,GACvE,KAAK,KAAO,CAAC,CAACA,EAAU,KACxB,KAAK,MAAQA,EAAU,QAAU,OAAY,OAAY,CAACA,EAAU,MACpE,KAAK,MAAQ,CAAC,CAACA,EAAU,MACzB,KAAK,UAAYA,EAAU,YAAc,OAAY,OAAY,CAACA,EAAU,UAC5E,KAAK,KAAO,CAAC,CAACA,EAAU,KACxB,KAAK,KAAOA,EAAU,OAAS,OAAY,GAAKA,EAAU,KAAO,EACnE,CAEAE,EAAgB,UAAU,SAAW,UAAW,CAC9C,OAAO,KAAK,KACN,KAAK,MACL,KAAK,KACL,KAAK,QACJ,KAAK,KAAO,IAAM,KAClB,KAAK,QAAU,OAAY,GAAK,KAAK,IAAI,EAAG,KAAK,MAAQ,CAAC,IAC1D,KAAK,MAAQ,IAAM,KACnB,KAAK,YAAc,OAAY,GAAK,IAAM,KAAK,IAAI,EAAG,KAAK,UAAY,CAAC,IACxE,KAAK,KAAO,IAAM,IACnB,KAAK,IACb,EAGA,SAASC,EAAWC,EAAG,CACrBC,EAAK,QAASC,EAAIF,EAAE,OAAQpB,EAAI,EAAGuB,EAAK,GAAIC,EAAIxB,EAAIsB,EAAG,EAAEtB,EACvD,OAAQoB,EAAEpB,CAAC,EAAG,CACZ,IAAK,IAAKuB,EAAKC,EAAKxB,EAAG,MACvB,IAAK,IAASuB,IAAO,IAAGA,EAAKvB,GAAGwB,EAAKxB,EAAG,MACxC,QAAS,GAAI,CAAC,CAACoB,EAAEpB,CAAC,EAAG,MAAMqB,EAASE,EAAK,IAAGA,EAAK,GAAG,KACtD,CAEF,OAAOA,EAAK,EAAIH,EAAE,MAAM,EAAGG,CAAE,EAAIH,EAAE,MAAMI,EAAK,CAAC,EAAIJ,CACrD,CAEA,IAAIK,EAEJ,SAASC,EAAiB7B,EAAGE,EAAG,CAC9B,IAAI4B,EAAI7B,EAAmBD,EAAGE,CAAC,EAC/B,GAAI,CAAC4B,EAAG,OAAO9B,EAAI,GACnB,IAAII,EAAc0B,EAAE,CAAC,EACjBzB,EAAWyB,EAAE,CAAC,EACd3B,GAAIE,GAAYuB,EAAiB,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAMvB,EAAW,CAAC,CAAC,CAAC,EAAI,GAAK,EAC5FoB,EAAIrB,EAAY,OACpB,OAAOD,KAAMsB,EAAIrB,EACXD,GAAIsB,EAAIrB,EAAc,IAAI,MAAMD,GAAIsB,EAAI,CAAC,EAAE,KAAK,GAAG,EACnDtB,GAAI,EAAIC,EAAY,MAAM,EAAGD,EAAC,EAAI,IAAMC,EAAY,MAAMD,EAAC,EAC3D,KAAO,IAAI,MAAM,EAAIA,EAAC,EAAE,KAAK,GAAG,EAAIF,EAAmBD,EAAG,KAAK,IAAI,EAAGE,EAAIC,GAAI,CAAC,CAAC,EAAE,CAAC,CAC3F,CAEA,SAAS4B,EAAc/B,EAAGE,EAAG,CAC3B,IAAI4B,EAAI7B,EAAmBD,EAAGE,CAAC,EAC/B,GAAI,CAAC4B,EAAG,OAAO9B,EAAI,GACnB,IAAII,EAAc0B,EAAE,CAAC,EACjBzB,EAAWyB,EAAE,CAAC,EAClB,OAAOzB,EAAW,EAAI,KAAO,IAAI,MAAM,CAACA,CAAQ,EAAE,KAAK,GAAG,EAAID,EACxDA,EAAY,OAASC,EAAW,EAAID,EAAY,MAAM,EAAGC,EAAW,CAAC,EAAI,IAAMD,EAAY,MAAMC,EAAW,CAAC,EAC7GD,EAAc,IAAI,MAAMC,EAAWD,EAAY,OAAS,CAAC,EAAE,KAAK,GAAG,CAC3E,CAEA,IAAI4B,EAAc,CAChB,IAAK,SAAShC,EAAGE,EAAG,CAAE,OAAQF,EAAI,KAAK,QAAQE,CAAC,CAAG,EACnD,EAAK,SAASF,EAAG,CAAE,OAAO,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC,CAAG,EACrD,EAAK,SAASA,EAAG,CAAE,OAAOA,EAAI,EAAI,EAClC,EAAKD,EACL,EAAK,SAASC,EAAGE,EAAG,CAAE,OAAOF,EAAE,cAAcE,CAAC,CAAG,EACjD,EAAK,SAASF,EAAGE,EAAG,CAAE,OAAOF,EAAE,QAAQE,CAAC,CAAG,EAC3C,EAAK,SAASF,EAAGE,EAAG,CAAE,OAAOF,EAAE,YAAYE,CAAC,CAAG,EAC/C,EAAK,SAASF,EAAG,CAAE,OAAO,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC,CAAG,EACrD,EAAK,SAASA,EAAGE,EAAG,CAAE,OAAO6B,EAAc/B,EAAI,IAAKE,CAAC,CAAG,EACxD,EAAK6B,EACL,EAAKF,EACL,EAAK,SAAS7B,EAAG,CAAE,OAAO,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,CAAG,EACpE,EAAK,SAASA,EAAG,CAAE,OAAO,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,CAAG,CACxD,EAEA,SAASiC,EAASjC,EAAG,CACnB,OAAOA,CACT,CAEA,IAAIkC,EAAM,MAAM,UAAU,IACtBC,EAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAElF,SAASC,EAAaC,EAAQ,CAC5B,IAAIC,EAAQD,EAAO,WAAa,QAAaA,EAAO,YAAc,OAAYJ,EAAW3B,EAAY4B,EAAI,KAAKG,EAAO,SAAU,MAAM,EAAGA,EAAO,UAAY,EAAE,EACzJE,EAAiBF,EAAO,WAAa,OAAY,GAAKA,EAAO,SAAS,CAAC,EAAI,GAC3EG,EAAiBH,EAAO,WAAa,OAAY,GAAKA,EAAO,SAAS,CAAC,EAAI,GAC3EI,EAAUJ,EAAO,UAAY,OAAY,IAAMA,EAAO,QAAU,GAChErB,GAAWqB,EAAO,WAAa,OAAYJ,EAAWlB,EAAemB,EAAI,KAAKG,EAAO,SAAU,MAAM,CAAC,EACtGK,EAAUL,EAAO,UAAY,OAAY,IAAMA,EAAO,QAAU,GAChEM,GAAQN,EAAO,QAAU,OAAY,IAAMA,EAAO,MAAQ,GAC1DO,GAAMP,EAAO,MAAQ,OAAY,MAAQA,EAAO,IAAM,GAE1D,SAASQ,GAAU1B,EAAW,CAC5BA,EAAYD,EAAgBC,CAAS,EAErC,IAAI2B,GAAO3B,EAAU,KACjB4B,GAAQ5B,EAAU,MAClB6B,GAAO7B,EAAU,KACjB8B,GAAS9B,EAAU,OACnB+B,GAAO/B,EAAU,KACjBT,GAAQS,EAAU,MAClBgC,GAAQhC,EAAU,MAClBiC,GAAYjC,EAAU,UACtBkC,GAAOlC,EAAU,KACjBmC,EAAOnC,EAAU,KAGjBmC,IAAS,KAAKH,GAAQ,GAAMG,EAAO,KAG7BtB,EAAYsB,CAAI,IAAGF,KAAc,SAAcA,GAAY,IAAKC,GAAO,GAAMC,EAAO,MAG1FJ,IAASJ,KAAS,KAAOC,KAAU,OAAMG,GAAO,GAAMJ,GAAO,IAAKC,GAAQ,KAI9E,IAAIQ,EAASN,KAAW,IAAMV,EAAiBU,KAAW,KAAO,SAAS,KAAKK,CAAI,EAAI,IAAMA,EAAK,YAAY,EAAI,GAC9GE,EAASP,KAAW,IAAMT,EAAiB,OAAO,KAAKc,CAAI,EAAIZ,EAAU,GAKzEe,EAAazB,EAAYsB,CAAI,EAC7BI,EAAc,aAAa,KAAKJ,CAAI,EAMxCF,GAAYA,KAAc,OAAY,EAChC,SAAS,KAAKE,CAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIF,EAAS,CAAC,EACzD,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIA,EAAS,CAAC,EAEzC,SAASO,EAAOlD,EAAO,CACrB,IAAImD,EAAcL,EACdM,EAAcL,EACdrD,GAAGsB,GAAGqC,GAEV,GAAIR,IAAS,IACXO,EAAcJ,EAAWhD,CAAK,EAAIoD,EAClCpD,EAAQ,OACH,CACLA,EAAQ,CAACA,EAGT,IAAIsD,EAAgBtD,EAAQ,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQ,MAAMA,CAAK,EAAImC,GAAMa,EAAW,KAAK,IAAIhD,CAAK,EAAG2C,EAAS,EAG9DC,KAAM5C,EAAQa,EAAWb,CAAK,GAG9BsD,GAAiB,CAACtD,GAAU,GAAKuC,KAAS,MAAKe,EAAgB,IAGnEH,GAAeG,EAAiBf,KAAS,IAAMA,GAAOL,GAASK,KAAS,KAAOA,KAAS,IAAM,GAAKA,IAAQY,EAC3GC,GAAeP,IAAS,IAAMnB,EAAS,EAAIP,EAAiB,CAAC,EAAI,IAAMiC,GAAeE,GAAiBf,KAAS,IAAM,IAAM,IAIxHU,GAEF,IADAvD,GAAI,GAAIsB,GAAIhB,EAAM,OACX,EAAEN,GAAIsB,IACX,GAAIqC,GAAIrD,EAAM,WAAWN,EAAC,EAAG,GAAK2D,IAAKA,GAAI,GAAI,CAC7CD,GAAeC,KAAM,GAAKrB,EAAUhC,EAAM,MAAMN,GAAI,CAAC,EAAIM,EAAM,MAAMN,EAAC,GAAK0D,EAC3EpD,EAAQA,EAAM,MAAM,EAAGN,EAAC,EACxB,KACF,EAGN,CAGIgD,IAAS,CAACD,KAAMzC,EAAQ6B,EAAM7B,EAAO,GAAQ,GAGjD,IAAIK,GAAS8C,EAAY,OAASnD,EAAM,OAASoD,EAAY,OACzDG,GAAUlD,GAASJ,GAAQ,IAAI,MAAMA,GAAQI,GAAS,CAAC,EAAE,KAAKgC,EAAI,EAAI,GAM1E,OAHIK,IAASD,KAAMzC,EAAQ6B,EAAM0B,GAAUvD,EAAOuD,GAAQ,OAAStD,GAAQmD,EAAY,OAAS,GAAQ,EAAGG,GAAU,IAG7GjB,GAAO,CACb,IAAK,IAAKtC,EAAQmD,EAAcnD,EAAQoD,EAAcG,GAAS,MAC/D,IAAK,IAAKvD,EAAQmD,EAAcI,GAAUvD,EAAQoD,EAAa,MAC/D,IAAK,IAAKpD,EAAQuD,GAAQ,MAAM,EAAGlD,GAASkD,GAAQ,QAAU,CAAC,EAAIJ,EAAcnD,EAAQoD,EAAcG,GAAQ,MAAMlD,EAAM,EAAG,MAC9H,QAASL,EAAQuD,GAAUJ,EAAcnD,EAAQoD,EAAa,KAChE,CAEA,OAAO7C,GAASP,CAAK,CACvB,CAEA,OAAAkD,EAAO,SAAW,UAAW,CAC3B,OAAOxC,EAAY,EACrB,EAEOwC,CACT,CAEA,SAASM,GAAa9C,EAAWV,GAAO,CACtC,IAAIyD,GAAIrB,IAAW1B,EAAYD,EAAgBC,CAAS,EAAGA,EAAU,KAAO,IAAKA,EAAU,EACvFgD,GAAI,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAM9D,EAASI,EAAK,EAAI,CAAC,CAAC,CAAC,EAAI,EACjE2D,GAAI,KAAK,IAAI,GAAI,CAACD,EAAC,EACnBZ,GAASpB,EAAS,EAAIgC,GAAI,CAAC,EAC/B,OAAO,SAAS1D,GAAO,CACrB,OAAOyD,GAAEE,GAAI3D,EAAK,EAAI8C,EACxB,CACF,CAEA,MAAO,CACL,OAAQV,GACR,aAAcoB,EAChB,CACF,CAEA,IAAI5B,EAEJgC,EAAc,CACZ,QAAS,IACT,UAAW,IACX,SAAU,CAAC,CAAC,EACZ,SAAU,CAAC,IAAK,EAAE,EAClB,MAAO,GACT,CAAC,EAED,SAASA,EAAcC,EAAY,CACjC,OAAAjC,EAASD,EAAakC,CAAU,EAChC3E,EAAQ,OAAS0C,EAAO,OACxB1C,EAAQ,aAAe0C,EAAO,aACvBA,CACT,CAEA,SAASkC,EAAeC,EAAM,CAC5B,OAAO,KAAK,IAAI,EAAG,CAACnE,EAAS,KAAK,IAAImE,CAAI,CAAC,CAAC,CAC9C,CAEA,SAASC,EAAgBD,EAAM/D,EAAO,CACpC,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,KAAK,MAAMJ,EAASI,CAAK,EAAI,CAAC,CAAC,CAAC,EAAI,EAAIJ,EAAS,KAAK,IAAImE,CAAI,CAAC,CAAC,CAC9G,CAEA,SAASE,GAAeF,EAAMG,EAAK,CACjC,OAAAH,EAAO,KAAK,IAAIA,CAAI,EAAGG,EAAM,KAAK,IAAIA,CAAG,EAAIH,EACtC,KAAK,IAAI,EAAGnE,EAASsE,CAAG,EAAItE,EAASmE,CAAI,CAAC,EAAI,CACvD,CAEA7E,EAAQ,gBAAkB0B,EAC1B1B,EAAQ,oBAAsB0E,EAC9B1E,EAAQ,aAAeyC,EACvBzC,EAAQ,gBAAkBuB,EAC1BvB,EAAQ,eAAiB4E,EACzB5E,EAAQ,gBAAkB8E,EAC1B9E,EAAQ,eAAiB+E,GAEzB,OAAO,eAAe/E,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAE5D,EAAE,ICxVF,IAAAiF,GAAA,GAAAC,GAAAD,GAAA,mBAAAE,GAAA,mBAAAC,GAAA,aAAAC,GAAA,SAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,oBAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,wBAAAC,GAAA,yBAAAC,GAAA,qBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,mBAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,SAAAC,GAAA,cAAAC,GAAA,qBAAAC,GAAA,oBAAAC,GAAA,WAAAC,GAAA,sBAAAC,GAAA,eAAAC,GAAA,WAAAC,GAAA,kBAAAC,GAAA,YAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,YAAAC,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,aAAAC,GAAA,gBAAAC,GAAA,0BAAAC,GAAA,iBAAAC,GAAA,UAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,aAAAC,GAAA,qBAAAC,GAAA,WAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,UAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,YAAAC,EAAA,WAAAC,GAAA,eAAAC,GAAA,UAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,kBAAAC,GAAA,uBAAAC,GAAA,UAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,wBAAAC,GAAA,YAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,aAAAC,GAAA,eAAAC,GAAA,UAAAC,GAAA,gBAAAC,GAAA,UAAAC,GAAA,YAAAC,GAAA,eAAAC,GAAA,gBAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,YAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,oBAAAC,GAAA,6BAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,yBAAAC,GAAA,wBAAAC,GAAA,QAAAC,GAAA,aAAAC,GAAA,0BAAAC,GAAA,uBAAAC,GAAA,YAAAC,GAAA,gBAAAC,GAAA,iBAAAC,GAAA,qBAAAC,GAAA,yBAAAC,GAAA,UAAAC,GAAA,yBAAAC,GAAA,sBAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,SAAAC,GAAA,wBAAAC,GAAA,SAAAC,GAAA,qBAAAC,GAAA,wBAAAC,GAAA,gBAAAC,GAAA,mBAAAC,GAAA,gBAAAC,KAAA,eAAAC,GAAAtI,IACA,IAAAuI,GAAqB,yBACrBC,GAA0B,0BAI1BC,GAAuB,4BACvBC,GAAuB,uBACvBC,GAA6B,kBCRtB,IAAMC,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
  "names": ["require_d3_array", "__commonJSMin", "exports", "module", "global", "factory", "ascending", "a", "b", "bisector", "compare", "ascendingComparator", "x", "lo", "hi", "mid", "f", "d", "ascendingBisect", "bisectRight", "bisectLeft", "pairs", "array", "pair", "i", "n", "cross", "values0", "values1", "reduce", "n0", "n1", "values", "i0", "i1", "value0", "descending", "number", "variance", "valueof", "m", "mean", "value", "delta", "sum", "deviation", "v", "extent", "min", "max", "slice", "map", "constant", "identity", "range", "start", "stop", "step", "e10", "e5", "e2", "ticks", "count", "reverse", "tickIncrement", "power", "error", "tickStep", "step0", "step1", "sturges", "histogram", "domain", "threshold", "data", "xz", "x0", "x1", "tz", "bins", "bin", "_", "quantile", "p", "value1", "freedmanDiaconis", "scott", "median", "numbers", "merge", "arrays", "j", "merged", "permute", "indexes", "permutes", "scan", "xi", "xj", "shuffle", "t", "transpose", "matrix", "length", "row", "zip", "require_d3_time", "__commonJSMin", "exports", "module", "global", "factory", "t0", "t1", "newInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "k", "milliseconds", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "second", "seconds", "minute", "minutes", "hour", "hours", "day", "days", "weekday", "i", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sundays", "mondays", "tuesdays", "wednesdays", "thursdays", "fridays", "saturdays", "month", "months", "year", "years", "utcMinute", "utcMinutes", "utcHour", "utcHours", "utcDay", "utcDays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "utcMonth", "utcMonths", "utcYear", "utcYears", "require_d3_time_format", "__commonJSMin", "exports", "module", "global", "factory", "d3Time", "localDate", "d", "date", "utcDate", "newDate", "y", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "m", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "map", "dISO", "z", "dow", "UTCdISO", "defaultLocale", "definition", "isoSpecifier", "formatIsoNative", "formatIso", "parseIsoNative", "parseIso", "require_d3_format", "__commonJSMin", "exports", "module", "global", "factory", "formatDecimal", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent", "formatGroup", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "formatNumerals", "numerals", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim", "s", "out", "n", "i0", "i1", "prefixExponent", "formatPrefixAuto", "d", "formatRounded", "formatTypes", "identity", "map", "prefixes", "formatLocale", "locale", "group", "currencyPrefix", "currencySuffix", "decimal", "percent", "minus", "nan", "newFormat", "fill", "align", "sign", "symbol", "zero", "comma", "precision", "trim", "type", "prefix", "suffix", "formatType", "maybeSuffix", "format", "valuePrefix", "valueSuffix", "c", "valueNegative", "padding", "formatPrefix", "f", "e", "k", "defaultLocale", "definition", "precisionFixed", "step", "precisionPrefix", "precisionRound", "max", "index_node_exports", "__export", "AccessService", "AccountService", "Activity", "Attr", "Attribute", "BUILD_VERSION", "BaseScope", "ClientTools", "CloudService", "CodesignService", "Connection", "DFUArrayActions", "DFUChangeProtection", "DFUChangeRestriction", "DFUDefFileFormat", "DFUService", "DFUWorkunit", "DFUWorkunitCache", "DFUXRefService", "DaliService", "Definition", "ECLGraph", "ECLScope", "ESPConnection", "ESPExceptions", "EclService", "EclccErrors", "ElkService", "EnvchkErrors", "Errors", "Field", "File", "FileSpray", "FileSprayService", "FileSprayStates", "Folder", "GlobalResultCache", "GraphCache", "Import", "LocalWorkunit", "LogType", "LogaccessService", "LogicalFile", "LogicalFileCache", "Machine", "MachineCache", "MachineService", "PKG_NAME", "PKG_VERSION", "PackageProcessService", "PropertyType", "Query", "QueryGraph", "RelatedProperty", "Resource", "ResourcesService", "Result", "ResultCache", "SMCService", "SashaService", "Scope", "ScopeEdge", "ScopeGraph", "ScopeSubgraph", "ScopeVertex", "Service", "Source", "SourceFile", "Store", "StoreCache", "StoreService", "TargetAudience", "TargetCluster", "TargetClusterCache", "Timer", "Topology", "TopologyCache", "TopologyService", "ValueChangedMessage", "Version", "WUStateID", "WUUpdate", "Workspace", "Workunit", "WorkunitCache", "WorkunitsService", "WorkunitsServiceEx", "WsAccess", "WsCodesign", "WsDfu", "WsLogaccess", "WsSMC", "WsSasha", "WsTopology", "WsWorkunits", "XGMMLEdge", "XGMMLGraph", "XGMMLSubgraph", "XGMMLVertex", "XSDNode", "XSDSchema", "XSDSimpleType", "XSDXMLNode", "attachWorkspace", "clearAllClientToolsCache", "createConnection", "createGraph", "createXGMMLGraph", "defaultTargetCluster", "deserializeResponse", "get", "hookSend", "instanceOfIConnection", "instanceOfIOptions", "isArray", "isECLResult", "isExceptions", "isWUInfoWorkunit", "isWUQueryECLWorkunit", "jsonp", "locateAllClientTools", "locateClientTools", "parseXSD", "parseXSD2", "post", "qualifiedIDBoundary", "send", "serializeRequest", "setTransportFactory", "splitMetric", "targetClusters", "walkXmlJson", "__toCommonJS", "import_util", "import_xmldom", "https", "import_node_buffer", "import_undici", "trustwave", "PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "import_util", "import_util", "logger", "instanceOfIOptions", "object", "DefaultOptions", "instanceOfIConnection", "encode", "uriComponent", "encodeRequest", "serializeRequest", "obj", "prefix", "str", "key", "includeItemCount", "row", "i", "deserializeResponse", "body", "jsonp", "opts", "action", "request", "responseType", "header", "resolve", "reject", "respondedTimeout", "respondedTick", "callbackName", "response", "doCallback", "script", "url", "progress", "authHeader", "_omitMap", "doFetch", "requestInit", "headersInit", "handleResponse", "fetchOverride", "e", "responseBody", "post", "abortSignal", "get", "send", "retVal", "hookedSend", "hookSend", "newSend", "Connection", "_Connection", "_", "createConnection", "setTransportFactory", "newFunc", "isArray", "arg", "ESPExceptions", "action", "request", "exceptions", "isExceptions", "err", "isConnection", "optsConnection", "ESPConnection", "_ESPConnection", "service", "version", "createConnection", "_", "target", "arrayName", "i", "_request", "espResponseType", "largeUpload", "abortSignal", "espResponseField", "serviceAction", "responseType", "response", "retVal", "Service", "FileSpray", "DFUWUActions", "DFUCommand", "FileSprayServiceBase", "Service", "optsConnection", "request", "abortSignal", "FileSprayStates", "FileSprayService", "FileSprayServiceBase", "request", "WsAccess", "ViewMemberType", "UserSortBy", "GroupSortBy", "AccountTypeReq", "ResourcePermissionSortBy", "ResourceSortBy", "AccessServiceBase", "Service", "optsConnection", "request", "abortSignal", "AccessService", "AccessServiceBase", "AccountServiceBase", "Service", "optsConnection", "request", "abortSignal", "AccountService", "AccountServiceBase", "request", "e", "exception", "import_util", "CloudServiceBase", "Service", "optsConnection", "request", "abortSignal", "logger", "isGetPODsResponse_v1_02", "response", "mapPorts", "pod", "prev", "curr", "p", "mapPods", "pods", "labels", "started", "CloudService", "CloudServiceBase", "obj", "error", "logger", "WsCodesign", "SigningMethodType", "CodesignServiceBase", "Service", "optsConnection", "request", "abortSignal", "CodesignService", "CodesignServiceBase", "request", "response", "e", "WsCodesign", "DaliServiceBase", "Service", "optsConnection", "request", "abortSignal", "DaliService", "DaliServiceBase", "WsDfu", "DFUArrayActions", "DFUChangeProtection", "DFUChangeRestriction", "DFUDefFileFormat", "FileAccessRole", "SecAccessType", "DFUFileType", "DfuServiceBase", "Service", "optsConnection", "request", "DFUArrayActions", "WsDfu", "DFUDefFileFormat", "DFUChangeProtection", "DFUChangeRestriction", "DFUService", "DfuServiceBase", "request", "superFiles", "childSuperFiles", "logicalFiles", "superFile", "response", "child", "DFUXRefServiceBase", "Service", "optsConnection", "request", "abortSignal", "DFUXRefService", "DFUXRefServiceBase", "request", "jsonToIField", "id", "item", "type", "jsonToIFieldArr", "fieldType", "jsonToIFieldObj", "json", "retVal", "key", "fields", "EclService", "Service", "optsConnection", "querySet", "queryId", "response", "requestSchema", "responseSchema", "resultsJson", "request", "action", "ESPExceptions", "ElkServiceBase", "Service", "optsConnection", "request", "abortSignal", "ElkService", "ElkServiceBase", "import_util", "WsLogaccess", "LogColumnType", "LogColumnValueType", "LogAccessType", "LogAccessStatusCode", "LogAccessFilterOperator", "LogSelectColumnMode", "SortColumType", "SortDirection", "LogaccessServiceBase", "Service", "optsConnection", "request", "logger", "LogType", "TargetAudience", "knownLogManagerTypes", "logColumnTypeValues", "WsLogaccess", "getLogCategory", "searchField", "FILTER_KEYS", "buildFilters", "request", "columnMap", "filters", "key", "value", "logCategory", "appendWildcard", "rawValues", "raw", "buildOrGroup", "group", "root", "node", "i", "buildAndChain", "groups", "firstGroup", "remainingGroups", "secondGroup", "buildFilterTree", "groupMap", "f", "existing", "filter", "LogaccessService", "LogaccessServiceBase", "line", "retVal", "fields", "logInfo", "column", "range", "getLogsRequest", "response", "logLines", "logger", "e", "import_util", "import_d3_array", "WsMachine", "ThresholdType", "TpMachineType", "MachineServiceBase", "Service", "optsConnection", "request", "abortSignal", "MachineService", "MachineServiceBase", "targetClusters", "bypassCachedResult", "response", "tcu", "ComponentUsages", "cu", "MachineUsages", "mu", "DiskUsages", "du", "d3Mean", "d3Max", "prev", "PackageProcessServiceBase", "Service", "optsConnection", "request", "abortSignal", "PackageProcessService", "PackageProcessServiceBase", "ResourcesServiceBase", "Service", "optsConnection", "request", "ResourcesService", "ResourcesServiceBase", "WsSasha", "WUTypes", "SashaServiceBase", "Service", "optsConnection", "request", "abortSignal", "SashaService", "SashaServiceBase", "import_d3_time_format", "WsSMC", "LockModes", "RoxieControlCmdType", "SMCServiceBase", "Service", "optsConnection", "request", "dateParser", "isNumeric", "value", "SMCService", "SMCServiceBase", "request", "response", "name", "retVal", "metric", "row", "dimension", "stat", "storeServiceBase", "Service", "optsConnection", "request", "abortSignal", "StoreService", "storeServiceBase", "request", "e", "WsTopology", "TpConfigResponseFormat", "RoxieQueueFilter", "TpMachineType", "TopologyServiceBase", "Service", "optsConnection", "request", "abortSignal", "TopologyService", "TopologyServiceBase", "request", "response", "firstHThor", "first", "item", "idx", "import_util", "WsWorkunits", "ECLWUActions", "LogSelectColumnMode", "SortDirection", "LogEventClass", "WUDetailsAttrValueType", "EclDefinitionActions", "ErrorMessageFormat", "LogAccessLogFormat", "WUExceptionSeverity", "WUQueryFilterSuspendedType", "WUQuerySetFilterType", "WUProtectFilter", "QuerySetAliasActionTypes", "QuerysetImportActivation", "QuerySetQueryActionTypes", "WUQueryActivationMode", "WorkunitsServiceBase", "Service", "optsConnection", "request", "abortSignal", "WUStateID", "WUUpdate", "Action", "isECLResult", "_", "isWUQueryECLWorkunit", "isWUInfoWorkunit", "WorkunitsService", "WorkunitsServiceBase", "optsConnection", "request", "abortSignal", "response", "_request", "children", "WorkunitsServiceEx", "import_util", "import_util", "import_d3_format", "import_d3_time_format", "import_util", "ECLGraph", "wu", "eclGraph", "eclTimers", "duration", "eclTimer", "subgraphID", "scopes", "createGraph", "GraphCache", "obj", "walkXmlJson", "node", "callback", "stack", "childNode", "flattenAtt", "nodes", "retVal", "XGMMLGraph", "XGMMLSubgraph", "XGMMLVertex", "XGMMLEdge", "createXGMMLGraph", "id", "graphs", "subgraphs", "vertices", "edges", "graph", "item", "tag", "attributes", "childNodes", "_stack", "top", "subgraph", "vertex", "edge", "ScopeGraph", "ScopeSubgraph", "ScopeVertex", "ScopeEdge", "scope", "scopeStack", "scopeParent1", "parent1", "scopeParent2", "scopeParent3", "parent3", "source", "target", "import_util", "Resource", "wu", "url", "cleanedURL", "urlParts", "matchStr", "displayPath", "displayName", "import_util", "import_util", "XSDNode", "XSDXMLNode", "child", "i", "row", "setOfType", "node", "children", "retVal", "numStr", "underbarPos", "length", "XSDSimpleType", "XSDSchema", "XSDParser", "xsdXMLNode", "xsdXMLNode2", "key", "parseXSD", "xml", "saxParser", "XSDParser2", "rootName", "parseXSD2", "GlobalResultCache", "obj", "_results", "Result", "_Result", "optsConnection", "wuid", "name_sequence_eclResult", "resultViews", "retVal", "nodeGroup", "logicalFile", "wuid_NodeGroup", "name_sequence_eclResult_logicalFile", "resultViews_isLogicalFile", "WorkunitsService", "isECLResult", "bypass", "refresh", "response", "parseXSD", "from", "count", "includeSchema", "filter", "abortSignal", "bypassCache", "shouldBypassCache", "result", "start", "suppressXmlSchema", "FilterBy", "key", "request", "ResultCache", "import_util", "Attribute", "scope", "attribute", "BaseScope", "retVal", "timeElapsed", "scopeAttr", "attr", "key", "scopeParts", "_", "visitor", "name", "parentScope", "label", "rows", "attrs", "Scope", "wu", "import_util", "SourceFile", "optsConnection", "wuid", "eclSourceFile", "WorkunitsService", "import_util", "Timer", "optsConnection", "wuid", "eclTimer", "WorkunitsService", "secs", "formatter", "parser", "d3FormatNum", "d3Format", "formatNum", "num", "DEFINITION_LIST", "definitionRegex", "PropertyType", "RelatedProperty", "metricKeyRegex", "_splitMetric", "fullLabel", "relProp", "index", "label", "labelParts", "measure", "ext", "splitLabelCache", "splitMetric", "key", "retVal", "formatValue", "item", "safeParseFloat", "val", "formatValues", "dedup", "keyParts", "avg", "min", "max", "stdDev", "StdDevs", "logger", "WorkunitCache", "obj", "_workunits", "Workunit", "_Workunit", "WUStateID", "ResultCache", "eclResult", "Result", "result", "eclTimer", "Timer", "GraphCache", "eclGraph", "ECLGraph", "url", "Resource", "eclSourceFile", "SourceFile", "optsConnection", "response", "wuid", "state", "baseUrl", "server", "target", "ecl", "compileOnly", "wu", "WUUpdate", "opts", "WorkunitsService", "TopologyService", "request", "_cluster", "action", "resultLimit", "clusterPromise", "cluster", "WsWorkunits", "full", "meta", "scopes", "columns", "activityMap", "activity", "data", "i", "scope", "props", "formattedProps", "scopeProperty", "name", "rawValue", "rawValueInt", "formatNum", "normalizedScope", "definitionList", "parsedList", "processedDefinitions", "k", "matches", "maxStdDevs", "maxStdDevsSource", "row", "promises", "rawScope", "Scope", "scopeMap", "parentScopeID", "graphIDs", "rootTypes", "createGraph", "scopeInfo", "attr", "endTime", "parser", "formatter", "l", "r", "eventID", "propIDorCallback", "callback", "changeInfo", "resolve", "_", "watchHandle", "changes", "_request", "e", "exception", "includeResults", "actionType", "service", "WorkunitsServiceEx", "publishRequest", "command", "optsStr", "debugState", "mode", "rootNode", "childNode", "id", "createXGMMLGraph", "path", "graph", "breakpointLocations", "edgeID", "startRow", "numRows", "rowNode", "cellNode", "ATTR_DEFINITION", "hasECLDefinition", "vertex", "getECLDefinition", "match", "_file", "_row", "_col", "definition", "_activity", "Activity", "_Activity", "optsConnection", "state", "SMCService", "clusterName", "awu", "Workunit", "request", "response", "import_util", "logger", "LogicalFileCache", "obj", "_store", "LogicalFile", "_LogicalFile", "optsConnection", "Cluster", "Name", "state", "retVal", "DFUService", "poc", "part", "row", "request", "response", "exception", "format", "import_util", "MachineCache", "obj", "_machines", "Machine", "_Machine", "optsConnection", "address", "state", "retVal", "MachineService", "import_util", "import_d3_format", "import_util", "import_util", "TargetClusterCache", "obj", "_targetCluster", "TargetCluster", "_TargetCluster", "machineInfoEx", "Machine", "optsConnection", "name", "state", "retVal", "TopologyService", "MachineService", "request", "response", "machineInfo", "maxDisk", "totalFree", "total", "machine", "storageInfo", "usage", "targetClusters", "connection", "item", "_defaultTargetCluster", "defaultTargetCluster", "firstItem", "defaultItem", "hthorItem", "defItem", "TopologyCache", "obj", "_topology", "Topology", "_Topology", "tc", "TargetCluster", "optsConnection", "state", "retVal", "TopologyService", "type", "response", "rootProtocol", "ip", "port", "item", "binding", "request", "force", "eventID", "propIDorCallback", "callback", "safeAssign", "obj", "key", "value", "xmlEncode", "str", "espTime2Seconds", "duration", "match", "days", "hours", "mins", "secs", "ms", "us", "ns", "unitTest", "size", "unit", "nsIndex", "espSize2Bytes", "retVal", "espSkew2Number", "skew", "LocalisedXGMMLWriter", "graph", "items", "localisationDepth", "localisationDistance", "noSpills", "item", "vertex", "edge", "subgraph", "idx", "dedupEdges", "isPoint", "attrStr", "propsStr", "props", "key", "xmlEncode", "v", "ancestors", "parent", "v1", "v2", "v1_ancestors", "v2_ancestors", "finger1", "finger2", "retVal", "source", "inEdges", "target", "outEdges", "root", "xgmmlLen", "GraphItem", "id", "Subgraph", "subgraph2", "vertex2", "edge2", "visitor", "Vertex", "inVertices", "Edge", "QueryGraph", "_QueryGraph", "xgmml", "dom", "docNode", "attr", "safeAssign", "tagName", "childNode", "isSubgraph", "attNode", "graphNode", "name", "uname", "value", "espTime2Seconds", "espSize2Bytes", "espSkew2Number", "xgmmlWriter", "logger", "siFormatter", "d3Format", "isNumber", "QueryCache", "obj", "_queries", "Query", "_Query", "optsConnection", "querySet", "queryID", "queryDetails", "WorkunitsService", "Topology", "queryId", "state", "retVal", "services", "espServer", "binding", "baseUrl", "EclService", "wsEclService", "e", "GraphName", "SubGraphId", "response", "graph", "QueryGraph", "first", "graphItem", "request", "wu", "Workunit", "promises", "meta", "data", "metric", "firstChar", "item", "existingProperties", "prop", "newProperties", "key", "firstCharOfKey", "value", "valueType", "rawValue", "formatted", "results", "resultName", "import_util", "StoreCache", "obj", "_store", "ValueChangedMessage", "key", "value", "oldValue", "other", "Store", "_Store", "optsConnection", "Name", "Namespace", "UserSpecific", "StoreService", "broadcast", "response", "e", "retVal", "deletedValues", "pair", "callback", "import_util", "logger", "DFUWorkunitCache", "obj", "_workunits", "DFUWorkunit", "_DFUWorkunit", "optsConnection", "dfuServerQueue", "retVal", "response", "wuid", "state", "server", "request", "service", "FileSprayService", "FileSpray", "full", "callback", "_request", "e", "actionType", "eventID", "propIDorCallback", "changeInfo", "resolve", "_", "watchHandle", "changes", "TopologyService", "exception", "logger", "cp", "crypto", "fs", "os", "path", "import_util", "fs", "path", "import_util", "logger", "_inspect", "inspect", "obj", "_id", "known", "key", "id", "Attr", "xmlAttr", "Field", "definition", "xmlField", "ECLScope", "name", "type", "sourcePath", "xmlDefinitions", "line", "start", "body", "end", "definitions", "retVal", "Definition", "charOffset", "def", "defs", "qualifiedID", "qualifiedIDParts", "base", "xmlDefinition", "attrs", "attr", "fields", "field", "Import", "xmlImport", "Source", "xmlSource", "nameParts", "fakeNode", "imports", "imp", "scope", "isHiddenDirectory", "source", "isDirectory", "isEcl", "modAttrs", "path", "File", "Folder", "folder", "Workspace", "workspacePath", "eclccPath", "locateClientTools", "clientTools", "paths", "knownFolder", "folderPath", "refPath", "force", "child", "filePath", "filePathInfo", "pathNoExt", "parentStack", "removeDupID", "nameStack", "stack", "qid", "info", "sources", "_source", "depth", "metaXML", "metaParser", "MetaParser", "eclSource", "realQID", "partialID", "partialIDParts", "partialIDQualifier", "workspaceCache", "attachWorkspace", "_workspacePath", "workspace", "isQualifiedIDChar", "lineText", "charPos", "reverse", "testChar", "qualifiedIDBoundary", "logger", "exeExt", "tidyCRLF", "inStr", "Version", "build", "parts", "match", "other", "ERROR", "WARN", "Errors", "checked", "EclccErrors", "stdErr", "errLine", "filePath", "row", "_col", "severity", "code", "_msg", "line", "col", "msg", "EnvchkErrors", "content", "_path", "_attr", "path", "pathParts", "lineIdx", "testStr", "walkXmlJson", "node", "callback", "stack", "key", "childNode", "child", "LocalWorkunit", "jsonWU", "retVal", "id", "item", "_stack", "file", "ClientTools", "_ClientTools", "eclccPath", "cwd", "includeFolders", "legacyMode", "args", "version", "additionalItems", "includePath", "response", "paths", "removeOnRead", "resolve", "_reject", "fileData", "err", "filename", "tmpName", "_response", "xmlPath", "attachWorkspace", "metaWorkspace", "execFileResponse", "e", "bundlesRegEx", "readme", "m", "installedText", "installedItems", "allProps", "ii", "infoText", "info", "props", "bundles", "installed", "b", "bundleUrl", "name", "cmd", "_toolName", "_notFoundError", "stdOut", "data", "_code", "_signal", "locateClientToolsInFolder", "rootFolder", "clientTools", "hpccSystemsFolder", "versionFolder", "allClientToolsCache", "clearAllClientToolsCache", "locateAllClientTools", "rootFolder86", "ct", "l", "r", "eclccPathMsg", "logEclccPath", "locateClientTools", "overridePath", "allClientToolsCache2", "buildVersion", "latest", "bestMajor", "ctVersion", "best", "globalCA", "row", "trustwave"]
}
