{"version":3,"file":"js/app.898c3fb1143563f4.bundle.js","mappings":"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","sources":["webpack://dcrdata/webpack/runtime/chunk loaded","webpack://dcrdata/webpack/runtime/create fake namespace object","webpack://dcrdata/webpack/runtime/load script","webpack://dcrdata/./public/index.js","webpack://dcrdata/./public/js/controllers/address_controller.js","webpack://dcrdata/./public/js/controllers/agenda_controller.js","webpack://dcrdata/./public/js/controllers/agendas_controller.js","webpack://dcrdata/./public/js/controllers/atomicswaps_controller.js","webpack://dcrdata/./public/js/controllers/attackcost_controller.js","webpack://dcrdata/./public/js/controllers/blockdetail_controller.js","webpack://dcrdata/./public/js/controllers/blocklist_controller.js","webpack://dcrdata/./public/js/controllers/bwdash_controller.js","webpack://dcrdata/./public/js/controllers/chainaddress_controller.js","webpack://dcrdata/./public/js/controllers/chaincharts_controller.js","webpack://dcrdata/./public/js/controllers/chainhome_controller.js","webpack://dcrdata/./public/js/controllers/chainmarket_controller.js","webpack://dcrdata/./public/js/controllers/chainmempool_controller.js","webpack://dcrdata/./public/js/controllers/chainvisualBlocks_controller.js","webpack://dcrdata/./public/js/controllers/charts_controller.js","webpack://dcrdata/./public/js/controllers/clipboard_controller.js","webpack://dcrdata/./public/js/controllers/common_controller.js","webpack://dcrdata/./public/js/controllers/connection_controller.js","webpack://dcrdata/./public/js/controllers/financebase_controller.js","webpack://dcrdata/./public/js/controllers/financedetail_controller.js","webpack://dcrdata/./public/js/controllers/financereport_controller.js","webpack://dcrdata/./public/js/controllers/footer_controller.js","webpack://dcrdata/./public/js/controllers/homecharts_controller.js","webpack://dcrdata/./public/js/controllers/homepage_controller.js","webpack://dcrdata/./public/js/controllers/market_controller.js","webpack://dcrdata/./public/js/controllers/mempool_controller.js","webpack://dcrdata/./public/js/controllers/menu_controller.js","webpack://dcrdata/./public/js/controllers/newblock_controller.js","webpack://dcrdata/./public/js/controllers/pagenavigation_controller.js","webpack://dcrdata/./public/js/controllers/proposal_controller.js","webpack://dcrdata/./public/js/controllers/rawtx_controller.js","webpack://dcrdata/./public/js/controllers/scroll_controller.js","webpack://dcrdata/./public/js/controllers/search_controller.js","webpack://dcrdata/./public/js/controllers/stakingreward_controller.js","webpack://dcrdata/./public/js/controllers/status_controller.js","webpack://dcrdata/./public/js/controllers/supply_controller.js","webpack://dcrdata/./public/js/controllers/ticketpool_controller.js","webpack://dcrdata/./public/js/controllers/time_controller.js","webpack://dcrdata/./public/js/controllers/top_controller.js","webpack://dcrdata/./public/js/controllers/tx_controller.js","webpack://dcrdata/./public/js/controllers/visualBlocks_controller.js","webpack://dcrdata/./public/js/helpers/animation_helper.js","webpack://dcrdata/./public/js/helpers/block_helper.js","webpack://dcrdata/./public/js/helpers/chart_helper.js","webpack://dcrdata/./public/js/helpers/http.js","webpack://dcrdata/./public/js/helpers/humanize_helper.js","webpack://dcrdata/./public/js/helpers/mempool_helper.js","webpack://dcrdata/./public/js/helpers/meters.js","webpack://dcrdata/./public/js/helpers/module_helper.js","webpack://dcrdata/./public/js/helpers/turbolinks_helper.js","webpack://dcrdata/./public/js/helpers/zoom_helper.js","webpack://dcrdata/./public/js/services/cookie_service.js","webpack://dcrdata/./public/js/services/event_bus_service.js","webpack://dcrdata/./public/js/vendor/mousetrap-pause.js","webpack://dcrdata/./public/js/services/keyboard_navigation_service.js","webpack://dcrdata/./public/js/services/messagesocket_service.js","webpack://dcrdata/./public/js/services/theme_service.js","webpack://dcrdata/./public/js/vendor/mempool.js","webpack://dcrdata/./public/js/controllers/ sync \\.js$","webpack://dcrdata/webpack/bootstrap","webpack://dcrdata/webpack/runtime/compat get default export","webpack://dcrdata/webpack/runtime/define property getters","webpack://dcrdata/webpack/runtime/ensure chunk","webpack://dcrdata/webpack/runtime/get javascript chunk filename","webpack://dcrdata/webpack/runtime/get mini-css chunk filename","webpack://dcrdata/webpack/runtime/global","webpack://dcrdata/webpack/runtime/hasOwnProperty shorthand","webpack://dcrdata/webpack/runtime/make namespace object","webpack://dcrdata/webpack/runtime/publicPath","webpack://dcrdata/webpack/runtime/jsonp chunk loading","webpack://dcrdata/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"dcrdata:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// import 'core-js/stable';\nimport 'regenerator-runtime/runtime'\n/* global require */\nimport ws from './js/services/messagesocket_service'\nimport { Application } from '@hotwired/stimulus'\nimport { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers'\nimport { darkEnabled } from './js/services/theme_service'\nimport globalEventBus from './js/services/event_bus_service'\n\nrequire('./scss/application.scss')\n\nwindow.darkEnabled = darkEnabled\n\nconst application = Application.start()\nconst context = require.context('./js/controllers', true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\ndocument.addEventListener('turbolinks:load', function (e) {\n  document.querySelectorAll('.jsonly').forEach((el) => {\n    el.classList.remove('jsonly')\n  })\n})\n\nexport function notifyNewBlock (newBlock) {\n  if (window.Notification.permission !== 'granted') return\n  const block = newBlock.block\n  const newBlockNtfn = new window.Notification('New Decred Block Mined', {\n    body: `Block mined at height <b>${block.height}</b>`,\n    icon: '/images/dcrdata144x128.png',\n    notifyError: (e) => console.error('Error showing notification:', e)\n  })\n  setTimeout(() => newBlockNtfn.close(), 3000)\n}\n\nfunction getSocketURI (loc) {\n  const protocol = (loc.protocol === 'https:') ? 'wss' : 'ws'\n  return protocol + '://' + loc.host + '/ws'\n}\n\nfunction sleep (ms) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nasync function createWebSocket (loc) {\n  // wait a bit to prevent websocket churn from drive by page loads\n  const uri = getSocketURI(loc)\n  await sleep(300)\n  ws.connect(uri)\n\n  const updateBlockData = function (event) {\n    const newBlock = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('Block received:', newBlock)\n    }\n    newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n    globalEventBus.publish('BLOCK_RECEIVED', newBlock)\n  }\n\n  const updateSummaryData = function (event) {\n    const summary = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('Decred summary received:', summary)\n    }\n    globalEventBus.publish('SUMMARY_RECEIVED', summary)\n  }\n\n  const update24hData = function (event) {\n    const summary24h = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('Decred summary 24h received:', summary24h)\n    }\n    globalEventBus.publish('SUMMARY_24H_RECEIVED', summary24h)\n  }\n\n  const updateLtcBlockData = function (event) {\n    const newBlock = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('LTC Block received:', newBlock)\n    }\n    newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n    globalEventBus.publish('LTC_BLOCK_RECEIVED', newBlock)\n  }\n\n  const updateBtcBlockData = function (event) {\n    const newBlock = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('BTC Block received:', newBlock)\n    }\n    newBlock.block.unixStamp = new Date(newBlock.block.time).getTime() / 1000\n    globalEventBus.publish('BTC_BLOCK_RECEIVED', newBlock)\n  }\n\n  const updateLtcMempoolData = function (event) {\n    const newMempool = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('Mempool LTC received:', newMempool)\n    }\n    globalEventBus.publish('MEMPOOL_LTC_RECEIVED', newMempool)\n  }\n\n  const updateBtcMempoolData = function (event) {\n    const newMempool = JSON.parse(event)\n    if (window.loggingDebug) {\n      console.log('Mempool BTC received:', newMempool)\n    }\n    globalEventBus.publish('MEMPOOL_BTC_RECEIVED', newMempool)\n  }\n\n  ws.registerEvtHandler('newblock', updateBlockData)\n  ws.registerEvtHandler('newltcblock', updateLtcBlockData)\n  ws.registerEvtHandler('newbtcblock', updateBtcBlockData)\n  ws.registerEvtHandler('newltcmempool', updateLtcMempoolData)\n  ws.registerEvtHandler('newbtcmempool', updateBtcMempoolData)\n  ws.registerEvtHandler('summaryinfo', updateSummaryData)\n  ws.registerEvtHandler('summary24h', update24hData)\n  ws.registerEvtHandler('exchange', e => {\n    globalEventBus.publish('EXCHANGE_UPDATE', JSON.parse(e))\n  })\n}\n\n// Debug logging can be enabled by entering logDebug(true) in the console.\n// Your setting will persist across sessions.\nwindow.loggingDebug = window.localStorage.getItem('loggingDebug') === '1'\nwindow.logDebug = yes => {\n  window.loggingDebug = yes\n  window.localStorage.setItem('loggingDebug', yes ? '1' : '0')\n  return 'debug logging set to ' + (yes ? 'true' : 'false')\n}\n\ncreateWebSocket(window.location)\nglobalEventBus.on('BLOCK_RECEIVED', notifyNewBlock)\n","import { Controller } from '@hotwired/stimulus'\nimport { isEmpty } from 'lodash-es'\nimport dompurify from 'dompurify'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport humanize from '../helpers/humanize_helper'\nimport txInBlock from '../helpers/block_helper'\nimport { fadeIn, animationFrame } from '../helpers/animation_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst blockDuration = 5 * 60000\nconst maxAddrRows = 160\nlet Dygraph // lazy loaded on connect\n\nfunction txTypesFunc (d, binSize) {\n  const p = []\n\n  d.time.map((n, i) => {\n    p.push([new Date(n), d.sentRtx[i], d.receivedRtx[i], d.tickets[i], d.votes[i], d.revokeTx[i]])\n  })\n\n  padPoints(p, binSize)\n\n  return p\n}\n\nfunction amountFlowProcessor (d, binSize) {\n  const flowData = []\n  const balanceData = []\n  let balance = 0\n\n  d.time.map((n, i) => {\n    const v = d.net[i]\n    let netReceived = 0\n    let netSent = 0\n\n    v > 0 ? (netReceived = v) : (netSent = (v * -1))\n    flowData.push([new Date(n), d.received[i], d.sent[i], netReceived, netSent])\n    balance += v\n    balanceData.push([new Date(n), balance])\n  })\n\n  padPoints(flowData, binSize)\n  padPoints(balanceData, binSize, true)\n\n  return {\n    flow: flowData,\n    balance: balanceData\n  }\n}\n\nfunction formatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y) + '</span>'\n  })\n  return html\n}\n\nfunction customizedFormatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span> '\n  })\n  return html\n}\n\nfunction setTxnCountText (el, count) {\n  if (el.dataset.formatted) {\n    el.textContent = count + ' transaction' + (count > 1 ? 's' : '')\n  } else {\n    el.textContent = count\n  }\n}\n\nlet commonOptions, typesGraphOptions, amountFlowGraphOptions, balanceGraphOptions\n// Cannot set these until DyGraph is fetched.\nfunction createOptions () {\n  commonOptions = {\n    digitsAfterDecimal: 8,\n    showRangeSelector: true,\n    rangeSelectorHeight: 20,\n    rangeSelectorForegroundStrokeColor: '#999',\n    rangeSelectorBackgroundStrokeColor: '#777',\n    legend: 'follow',\n    fillAlpha: 0.9,\n    labelsKMB: true,\n    labelsUTC: true,\n    stepPlot: false,\n    rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n    rangeSelectorPlotFillGradientColor: 'transparent',\n    rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n    rangeSelectorPlotLineWidth: 2\n  }\n\n  typesGraphOptions = {\n    labels: ['Date', 'Sending (regular)', 'Receiving (regular)', 'Tickets', 'Votes', 'Revocations'],\n    colors: ['#69D3F5', '#2971FF', '#41BF53', 'darkorange', '#FF0090'],\n    ylabel: 'Tx Count',\n    visibility: [true, true, true, true, true],\n    legendFormatter: formatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n\n  amountFlowGraphOptions = {\n    labels: ['Date', 'Received', 'Spent', 'Net Received', 'Net Spent'],\n    colors: ['#2971FF', '#2ED6A1', '#41BF53', '#FF0090'],\n    ylabel: 'Total (DCR)',\n    visibility: [true, false, false, false],\n    legendFormatter: customizedFormatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n\n  balanceGraphOptions = {\n    labels: ['Date', 'Balance'],\n    colors: ['#41BF53'],\n    ylabel: 'Balance (DCR)',\n    plotter: [Dygraph.Plotters.linePlotter, Dygraph.Plotters.fillPlotter],\n    legendFormatter: customizedFormatter,\n    stackedGraph: false,\n    visibility: [true],\n    fillGraph: true,\n    stepPlot: true\n  }\n}\n\nlet ctrl = null\n\nexport default class extends Controller {\n  static get targets () {\n    return ['options', 'addr', 'balance',\n      'flow', 'zoom', 'interval', 'numUnconfirmed',\n      'pagesize', 'txntype', 'txnCount', 'qricon', 'qrimg', 'qrbox',\n      'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n      'range', 'chartbox', 'noconfirms', 'chart', 'pagebuttons',\n      'pending', 'hash', 'matchhash', 'view', 'mergedMsg',\n      'chartLoader', 'listLoader', 'expando', 'littlechart', 'bigchart',\n      'fullscreen', 'tablePagination', 'paginationheader']\n  }\n\n  async connect () {\n    ctrl = this\n    ctrl.retrievedData = {}\n    ctrl.ajaxing = false\n    ctrl.qrCode = false\n    ctrl.requestedChart = false\n    // Bind functions that are passed as callbacks\n    ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n    ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n    ctrl.lastEnd = 0\n    ctrl.confirmMempoolTxs = ctrl._confirmMempoolTxs.bind(ctrl)\n    ctrl.bindElements()\n    ctrl.bindEvents()\n    ctrl.query = new TurboQuery()\n\n    // These two are templates for query parameter sets.\n    // When url query parameters are set, these will also be updated.\n    const settings = ctrl.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'bin', 'flow',\n      'n', 'start', 'txntype', 'time'])\n\n    ctrl.state = Object.assign({}, settings)\n    // Parse stimulus data\n    const cdata = ctrl.data\n    ctrl.dcrAddress = cdata.get('dcraddress')\n    ctrl.paginationParams = {\n      offset: parseInt(cdata.get('offset')),\n      count: parseInt(cdata.get('txnCount'))\n    }\n    ctrl.balance = cdata.get('balance')\n\n    // Get initial view settings from the url\n    ctrl.query.update(settings)\n    this.time = settings.time\n    ctrl.setChartType()\n    if (settings.flow) ctrl.setFlowChecks()\n    if (settings.zoom !== null) {\n      ctrl.zoomButtons.forEach((button) => {\n        button.classList.remove('btn-selected')\n      })\n    }\n    if (settings.bin == null) {\n      settings.bin = ctrl.getBin()\n    }\n    if (settings.chart == null || !ctrl.validChartType(settings.chart)) {\n      settings.chart = ctrl.chartType\n    }\n\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n\n    ctrl.initializeChart()\n    ctrl.drawGraph()\n  }\n\n  disconnect () {\n    if (this.graph !== undefined) {\n      this.graph.destroy()\n    }\n    globalEventBus.off('BLOCK_RECEIVED', this.confirmMempoolTxs)\n    this.retrievedData = {}\n  }\n\n  // Request the initial chart data, grabbing the Dygraph script if necessary.\n  initializeChart () {\n    createOptions()\n    // If no chart data has been requested, e.g. when initially on the\n    // list tab, then fetch the initial chart data.\n    if (!this.requestedChart) {\n      this.fetchGraphData(this.chartType, this.getBin())\n    }\n  }\n\n  bindElements () {\n    this.flowBoxes = this.flowTarget.querySelectorAll('input')\n    // pagesizeTarget is not available for dummy addresses\n    this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n    this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n    this.binputs = this.intervalTarget.querySelectorAll('button')\n  }\n\n  bindEvents () {\n    globalEventBus.on('BLOCK_RECEIVED', this.confirmMempoolTxs)\n    ctrl.paginatorTargets.forEach((link) => {\n      link.addEventListener('click', (e) => {\n        e.preventDefault()\n      })\n    })\n  }\n\n  async showQRCode () {\n    this.qrboxTarget.classList.remove('d-hide')\n    if (this.qrCode) {\n      await fadeIn(this.qrimgTarget)\n    } else {\n      const QRCode = await getDefault(\n        import(/* webpackChunkName: \"qrcode\" */ 'qrcode')\n      )\n      const qrCodeImg = await QRCode.toDataURL(this.dcrAddress,\n        {\n          errorCorrectionLevel: 'H',\n          scale: 6,\n          margin: 0\n        }\n      )\n      this.qrimgTarget.innerHTML = `<img src=\"${qrCodeImg}\"/>`\n      await fadeIn(this.qrimgTarget)\n      if (this.graph) this.graph.resize()\n    }\n    this.qriconTarget.classList.add('d-hide')\n  }\n\n  async hideQRCode () {\n    this.qriconTarget.classList.remove('d-hide')\n    this.qrboxTarget.classList.add('d-hide')\n    this.qrimgTarget.style.opacity = 0\n    await animationFrame()\n    if (this.graph) this.graph.resize()\n  }\n\n  makeTableUrl (txType, count, offset, time) {\n    const root = this.dcrAddress === 'treasury' ? 'treasurytable' : `addresstable/${this.dcrAddress}`\n    return `/${root}?txntype=${txType}&n=${count}&start=${offset}${time && time !== '' ? '&time=' + time : ''}`\n  }\n\n  changePageSize () {\n    this.fetchTableWithPeriod(this.txnType, this.pageSize, this.paginationParams.offset, this.time)\n  }\n\n  changeTxType () {\n    this.fetchTableWithPeriod(this.txnType, this.pageSize, 0, this.time)\n  }\n\n  nextPage () {\n    this.toPage(1)\n  }\n\n  prevPage () {\n    this.toPage(-1)\n  }\n\n  pageNumberLink (e) {\n    e.preventDefault()\n    const url = e.target.href\n    const parser = new URL(url)\n    const start = parser.searchParams.get('start')\n    const pagesize = parser.searchParams.get('n')\n    const txntype = parser.searchParams.get('txntype')\n    const time = parser.searchParams.get('time')\n    this.time = time\n    this.fetchTableWithPeriod(txntype, pagesize, start, time)\n  }\n\n  toPage (direction) {\n    const params = ctrl.paginationParams\n    const count = ctrl.pageSize\n    const txType = ctrl.txnType\n    const time = this.time\n    let requestedOffset = params.offset + count * direction\n    if (requestedOffset >= params.count) return\n    if (requestedOffset < 0) requestedOffset = 0\n    ctrl.fetchTableWithPeriod(txType, count, requestedOffset, time)\n  }\n\n  async fetchTableWithPeriod (txType, count, offset, time) {\n    ctrl.listLoaderTarget.classList.add('loading')\n    const requestCount = count > 20 ? count : 20\n    const tableResponse = await requestJSON(ctrl.makeTableUrl(txType, requestCount, offset, time))\n    ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n    const settings = ctrl.settings\n    settings.n = count\n    settings.start = offset\n    settings.txntype = txType\n    ctrl.paginationParams.count = tableResponse.tx_count\n    ctrl.query.replace(settings)\n    ctrl.paginationParams.offset = offset\n    ctrl.paginationParams.pagesize = count\n    ctrl.paginationParams.txntype = txType\n    ctrl.setPageability()\n    if (ctrl.dcrAddress !== 'treasury') {\n      if (txType.indexOf('merged') === -1) {\n        this.mergedMsgTarget.classList.add('d-hide')\n      } else {\n        this.mergedMsgTarget.classList.remove('d-hide')\n      }\n    }\n    ctrl.tablePaginationParams = tableResponse.pages\n    ctrl.setTablePaginationLinks()\n    ctrl.listLoaderTarget.classList.remove('loading')\n  }\n\n  async fetchTable (txType, count, offset) {\n    this.fetchTableWithPeriod(txType, count, offset, '')\n  }\n\n  setPageability () {\n    const params = ctrl.paginationParams\n    const rowMax = params.count\n    const count = ctrl.pageSize\n    if (ctrl.paginationParams.count === 0) {\n      ctrl.paginationheaderTarget.classList.add('d-hide')\n    } else {\n      ctrl.paginationheaderTarget.classList.remove('d-hide')\n    }\n    if (rowMax > count) {\n      ctrl.pagebuttonsTarget.classList.remove('d-hide')\n    } else {\n      ctrl.pagebuttonsTarget.classList.add('d-hide')\n    }\n    const setAbility = (el, state) => {\n      if (state) {\n        el.classList.remove('disabled')\n      } else {\n        el.classList.add('disabled')\n      }\n    }\n    setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n    setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n    ctrl.pageSizeOptions.forEach((option) => {\n      if (option.value > 100) {\n        if (rowMax > 100) {\n          option.disabled = false\n          option.text = option.value = Math.min(rowMax, maxAddrRows)\n        } else {\n          option.disabled = true\n          option.text = option.value = maxAddrRows\n        }\n      } else {\n        option.disabled = rowMax <= option.value\n      }\n    })\n    setAbility(ctrl.pagesizeTarget, rowMax > 20)\n    const suffix = rowMax > 1 ? 's' : ''\n    let rangeEnd = Number(params.offset) + Number(count)\n    if (rangeEnd > rowMax) rangeEnd = rowMax\n    ctrl.rangeTarget.innerHTML = 'showing ' + (Number(params.offset) + 1).toLocaleString() + ' &ndash; ' +\n    rangeEnd.toLocaleString() + ' of ' + rowMax.toLocaleString() + ' transaction' + suffix\n  }\n\n  createGraph (processedData, otherOptions) {\n    return new Dygraph(\n      this.chartTarget,\n      processedData,\n      { ...commonOptions, ...otherOptions }\n    )\n  }\n\n  setTablePaginationLinks () {\n    const tablePagesLink = ctrl.tablePaginationParams\n    if (tablePagesLink.length === 0) return ctrl.tablePaginationTarget.classList.add('d-hide')\n    ctrl.tablePaginationTarget.classList.remove('d-hide')\n    const txCount = parseInt(ctrl.paginationParams.count)\n    const offset = parseInt(ctrl.paginationParams.offset)\n    const pageSize = parseInt(ctrl.paginationParams.pagesize)\n    const txnType = ctrl.paginationParams.txntype\n    const time = this.time\n    let links = ''\n\n    const root = this.dcrAddress === 'treasury' ? 'treasury' : `address/${this.dcrAddress}`\n\n    if (typeof offset !== 'undefined' && offset > 0) {\n      links = `<a href=\"/${root}?start=${offset - pageSize}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n      'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->address#pageNumberLink\"></a>' + '\\n'\n    }\n\n    links += tablePagesLink.map(d => {\n      if (!d.link) return `<span>${d.str}</span>`\n      return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->address#pageNumberLink\">${d.str}</a>`\n    }).join('\\n')\n\n    if ((txCount - offset) > pageSize) {\n      links += '\\n' + `<a href=\"/${root}?start=${(offset + pageSize)}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n      'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->address#pageNumberLink\"></a>'\n    }\n\n    ctrl.tablePaginationTarget.innerHTML = dompurify.sanitize(links)\n  }\n\n  drawGraph () {\n    const settings = ctrl.settings\n\n    ctrl.noconfirmsTarget.classList.add('d-hide')\n    ctrl.chartTarget.classList.remove('d-hide')\n\n    // Check for invalid view parameters\n    if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n\n    if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n      // Only the zoom has changed.\n      const zoom = Zoom.decode(settings.zoom)\n      if (zoom) {\n        ctrl.setZoom(zoom.start, zoom.end)\n      }\n      return\n    }\n\n    // Set the current view to prevent unnecessary reloads.\n    Object.assign(ctrl.state, settings)\n    ctrl.fetchGraphData(settings.chart, settings.bin)\n  }\n\n  async fetchGraphData (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    if (ctrl.ajaxing === cacheKey) {\n      return\n    }\n    ctrl.requestedChart = cacheKey\n    ctrl.ajaxing = cacheKey\n\n    ctrl.chartLoaderTarget.classList.add('loading')\n\n    // Check for cached data\n    if (ctrl.retrievedData[cacheKey]) {\n      // Queue the function to allow the loader to display.\n      setTimeout(() => {\n        ctrl.popChartCache(chart, bin)\n        ctrl.chartLoaderTarget.classList.remove('loading')\n        ctrl.ajaxing = false\n      }, 10) // 0 should work but doesn't always\n      return\n    }\n\n    let url = `/api/treasury/io/${bin}`\n    if (this.dcrAddress !== 'treasury') {\n      const chartKey = chart === 'balance' ? 'amountflow' : chart\n      url = '/api/address/' + ctrl.dcrAddress + '/' + chartKey + '/' + bin\n    }\n\n    const graphDataResponse = await requestJSON(url)\n    ctrl.processData(chart, bin, graphDataResponse)\n    ctrl.ajaxing = false\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  processData (chart, bin, data) {\n    if (isEmpty(data)) {\n      ctrl.noDataAvailable()\n      return\n    }\n\n    const binSize = Zoom.mapValue(bin) || blockDuration\n    if (chart === 'types') {\n      ctrl.retrievedData['types-' + bin] = txTypesFunc(data, binSize)\n    } else if (chart === 'amountflow' || chart === 'balance') {\n      const processed = amountFlowProcessor(data, binSize)\n      ctrl.retrievedData['amountflow-' + bin] = processed.flow\n      ctrl.retrievedData['balance-' + bin] = processed.balance\n    } else return\n    setTimeout(() => {\n      ctrl.popChartCache(chart, bin)\n    }, 0)\n  }\n\n  popChartCache (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    const binSize = Zoom.mapValue(bin) || blockDuration\n    if (!ctrl.retrievedData[cacheKey] ||\n        ctrl.requestedChart !== cacheKey\n    ) {\n      return\n    }\n    const data = ctrl.retrievedData[cacheKey]\n    let options = null\n    ctrl.flowTarget.classList.add('d-hide')\n    switch (chart) {\n      case 'types':\n        options = typesGraphOptions\n        options.plotter = sizedBarPlotter(binSize)\n        break\n\n      case 'amountflow':\n        options = amountFlowGraphOptions\n        options.plotter = sizedBarPlotter(binSize)\n        ctrl.flowTarget.classList.remove('d-hide')\n        break\n\n      case 'balance':\n        options = balanceGraphOptions\n        break\n    }\n    options.zoomCallback = null\n    options.drawCallback = null\n    if (ctrl.graph === undefined) {\n      ctrl.graph = ctrl.createGraph(data, options)\n    } else {\n      ctrl.graph.updateOptions({\n        ...{ file: data },\n        ...options\n      })\n    }\n    if (chart === 'amountflow') {\n      ctrl.updateFlow()\n    }\n    ctrl.chartLoaderTarget.classList.remove('loading')\n    ctrl.xRange = ctrl.graph.xAxisExtremes()\n    ctrl.validateZoom(binSize)\n  }\n\n  noDataAvailable () {\n    this.noconfirmsTarget.classList.remove('d-hide')\n    this.chartTarget.classList.add('d-hide')\n    this.chartLoaderTarget.classList.remove('loading')\n  }\n\n  validChartType (chart) {\n    return this.optionsTarget.namedItem(chart) || false\n  }\n\n  validGraphInterval (interval) {\n    const bin = interval || this.settings.bin || this.activeBin\n    let b = false\n    this.binputs.forEach((button) => {\n      if (button.name === bin) b = button\n    })\n    return b\n  }\n\n  validateZoom (binSize) {\n    ctrl.setButtonVisibility()\n    const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n    ctrl.setZoom(zoom.start, zoom.end)\n    ctrl.graph.updateOptions({\n      zoomCallback: ctrl.zoomCallback,\n      drawCallback: ctrl.drawCallback\n    })\n  }\n\n  changeGraph (e) {\n    this.settings.chart = this.chartType\n    this.setGraphQuery()\n    this.drawGraph()\n  }\n\n  changeBin (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.settings.bin = target.name\n    ctrl.setIntervalButton(target.name)\n    this.setGraphQuery()\n    this.drawGraph()\n  }\n\n  setGraphQuery () {\n    this.query.replace(this.settings)\n  }\n\n  updateFlow () {\n    const bitmap = ctrl.flow\n    if (bitmap === 0) {\n      // If all boxes are unchecked, just leave the last view\n      // in place to prevent chart errors with zero visible datasets\n      return\n    }\n    ctrl.settings.flow = bitmap\n    ctrl.setGraphQuery()\n    // Set the graph dataset visibility based on the bitmap\n    // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n    const visibility = {}\n    visibility[0] = bitmap & 1\n    visibility[1] = bitmap & 2\n    visibility[2] = visibility[3] = bitmap & 4\n    Object.keys(visibility).forEach((idx) => {\n      ctrl.graph.setVisibility(idx, visibility[idx])\n    })\n  }\n\n  setFlowChecks () {\n    const bitmap = this.settings.flow\n    this.flowBoxes.forEach((box) => {\n      box.checked = bitmap & parseInt(box.value)\n    })\n  }\n\n  onZoom (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    target.classList.add('btn-selected')\n    if (ctrl.graph === undefined) {\n      return\n    }\n    const duration = ctrl.activeZoomDuration\n\n    const end = ctrl.xRange[1]\n    const start = duration === 0 ? ctrl.xRange[0] : end - duration\n    ctrl.setZoom(start, end)\n  }\n\n  setZoom (start, end) {\n    ctrl.chartLoaderTarget.classList.add('loading')\n    ctrl.graph.updateOptions({\n      dateWindow: [start, end]\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.lastEnd = end\n    ctrl.query.replace(ctrl.settings)\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  getBin () {\n    let bin = ctrl.query.get('bin')\n    if (!ctrl.setIntervalButton(bin)) {\n      bin = ctrl.activeBin\n    }\n    return bin\n  }\n\n  setIntervalButton (interval) {\n    const button = ctrl.validGraphInterval(interval)\n    if (!button) return false\n    ctrl.binputs.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    button.classList.add('btn-selected')\n  }\n\n  setViewButton (view) {\n    this.viewTargets.forEach((button) => {\n      if (button.name === view) {\n        button.classList.add('btn-active')\n      } else {\n        button.classList.remove('btn-active')\n      }\n    })\n  }\n\n  setChartType () {\n    const chart = this.settings.chart\n    if (this.validChartType(chart)) {\n      this.optionsTarget.value = chart\n    }\n  }\n\n  setSelectedZoom (zoomKey) {\n    this.zoomButtons.forEach(function (button) {\n      if (button.name === zoomKey) {\n        button.classList.add('btn-selected')\n      } else {\n        button.classList.remove('btn-selected')\n      }\n    })\n  }\n\n  _drawCallback (graph, first) {\n    if (first) return\n    const [start, end] = ctrl.graph.xAxisRange()\n    if (start === end) return\n    if (end === this.lastEnd) return // Only handle slide event.\n    this.lastEnd = end\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.query.replace(ctrl.settings)\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  _zoomCallback (start, end) {\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.query.replace(ctrl.settings)\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  setButtonVisibility () {\n    const duration = ctrl.chartDuration\n    const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n    buttonSets.forEach((buttonSet) => {\n      buttonSet.forEach((button) => {\n        if (button.dataset.fixed) return\n        if (duration > Zoom.mapValue(button.name)) {\n          button.classList.remove('d-hide')\n        } else {\n          button.classList.remove('btn-selected')\n          button.classList.add('d-hide')\n        }\n      })\n    })\n  }\n\n  _confirmMempoolTxs (blockData) {\n    const block = blockData.block\n    if (this.hasPendingTarget) {\n      this.pendingTargets.forEach((row) => {\n        if (txInBlock(row.dataset.txid, block)) {\n          const confirms = row.querySelector('td.addr-tx-confirms')\n          confirms.textContent = '1'\n          confirms.dataset.confirmationBlockHeight = block.height\n          row.querySelector('td.addr-tx-time').textContent = humanize.date(block.time, true)\n          const age = row.querySelector('td.addr-tx-age > span')\n          age.dataset.age = block.time\n          age.textContent = humanize.timeSince(block.unixStamp)\n          delete row.dataset.addressTarget\n          // Increment the displayed tx count\n          const count = this.txnCountTarget\n          count.dataset.txnCount++\n          setTxnCountText(count, count.dataset.txnCount)\n          this.numUnconfirmedTargets.forEach((tr, i) => {\n            const td = tr.querySelector('td.addr-unconfirmed-count')\n            let count = parseInt(tr.dataset.count)\n            if (count) count--\n            tr.dataset.count = count\n            if (count === 0) {\n              tr.classList.add('.d-hide')\n              delete tr.dataset.addressTarget\n            } else {\n              td.textContent = count\n            }\n          })\n        }\n      })\n    }\n  }\n\n  hashOver (e) {\n    const target = e.srcElement || e.target\n    const href = target.href\n    this.hashTargets.forEach((link) => {\n      if (link.href === href) {\n        link.classList.add('blue-row')\n      } else {\n        link.classList.remove('blue-row')\n      }\n    })\n  }\n\n  hashOut (e) {\n    const target = e.srcElement || e.target\n    const href = target.href\n    this.hashTargets.forEach((link) => {\n      if (link.href === href) {\n        link.classList.remove('blue-row')\n      }\n    })\n  }\n\n  toggleExpand (e) {\n    const btn = this.expandoTarget\n    if (btn.classList.contains('dcricon-expand')) {\n      btn.classList.remove('dcricon-expand')\n      btn.classList.add('dcricon-collapse')\n      this.bigchartTarget.appendChild(this.chartboxTarget)\n      this.fullscreenTarget.classList.remove('d-none')\n    } else {\n      this.putChartBack()\n    }\n    if (this.graph) this.graph.resize()\n  }\n\n  putChartBack () {\n    const btn = this.expandoTarget\n    btn.classList.add('dcricon-expand')\n    btn.classList.remove('dcricon-collapse')\n    this.littlechartTarget.appendChild(this.chartboxTarget)\n    this.fullscreenTarget.classList.add('d-none')\n    if (this.graph) this.graph.resize()\n  }\n\n  exitFullscreen (e) {\n    if (e.target !== this.fullscreenTarget) return\n    this.putChartBack()\n  }\n\n  get chartType () {\n    return this.optionsTarget.value\n  }\n\n  get activeView () {\n    let view = null\n    this.viewTargets.forEach((button) => {\n      if (button.classList.contains('btn-active')) view = button.name\n    })\n    return view\n  }\n\n  get activeZoomDuration () {\n    return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n  }\n\n  get activeZoomKey () {\n    const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n    if (activeButtons.length === 0) return null\n    return activeButtons[0].name\n  }\n\n  get chartDuration () {\n    return this.xRange[1] - this.xRange[0]\n  }\n\n  get activeBin () {\n    return this.intervalTarget.getElementsByClassName('btn-selected')[0].name\n  }\n\n  get flow () {\n    let base10 = 0\n    this.flowBoxes.forEach((box) => {\n      if (box.checked) base10 += parseInt(box.value)\n    })\n    return base10\n  }\n\n  get txnType () {\n    return this.txntypeTarget.selectedOptions[0].value\n  }\n\n  get pageSize () {\n    const selected = this.pagesizeTarget.selectedOptions\n    return selected.length ? parseInt(selected[0].value) : 20\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport humanize from '../helpers/humanize_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst chartLayout = {\n  showRangeSelector: true,\n  legend: 'follow',\n  fillGraph: true,\n  colors: ['#0c644e', '#e2b027', '#f36e6e'],\n  stackedGraph: true,\n  legendFormatter: agendasLegendFormatter,\n  labelsSeparateLines: true,\n  labelsKMB: true,\n  labelsUTC: true\n}\n\nfunction agendasLegendFormatter (data) {\n  if (data.x == null) return ''\n  let html\n  if (this.getLabels()[0] === 'Date') {\n    html = this.getLabels()[0] + ': ' + humanize.date(data.x)\n  } else {\n    html = this.getLabels()[0] + ': ' + data.xHTML\n  }\n  const total = data.series.reduce((total, n) => {\n    return total + n.y\n  }, 0)\n  data.series.forEach((series) => {\n    const percentage = total !== 0 ? ((series.y * 100) / total).toFixed(2) : 0\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += `<br>${series.dashHTML}<span style=\"color: ${series.color};\">${series.labelHTML}: ${series.yHTML} (${percentage}%)</span>`\n  })\n  return html\n}\n\nfunction cumulativeVoteChoicesData (d) {\n  if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0, 0]]\n  return d.yes.map((n, i) => {\n    return [\n      new Date(d.time[i]),\n      n,\n      d.abstain[i],\n      d.no[i]\n    ]\n  })\n}\n\nfunction voteChoicesByBlockData (d) {\n  if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0, 0]]\n  return d.yes.map((n, i) => {\n    return [\n      d.height[i],\n      n,\n      d.abstain[i],\n      d.no[i]\n    ]\n  })\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'cumulativeVoteChoices',\n      'voteChoicesByBlock',\n      'agendaName',\n      'extendDescription'\n    ]\n  }\n\n  initialize () {\n    this.emptydata = [[0, 0, 0, 0]]\n    this.cumulativeVoteChoicesChart = false\n    this.voteChoicesByBlockChart = false\n  }\n\n  async connect () {\n    this.agendaId = this.data.get('id')\n    this.element.classList.add('loading')\n    this.agendaName = this.data.get('name')\n    this.description = this.data.get('description')\n    this.agendaNameTarget.innerHTML = this.changeToHTMLTag(this.agendaName)\n    this.extendDescriptionTarget.innerHTML = this.changeToHTMLTag(this.description)\n    this.Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    this.drawCharts()\n    const agendaResponse = await requestJSON('/api/agenda/' + this.agendaId)\n    this.cumulativeVoteChoicesChart.updateOptions({\n      file: cumulativeVoteChoicesData(agendaResponse.by_time)\n    })\n    this.voteChoicesByBlockChart.updateOptions({\n      file: voteChoicesByBlockData(agendaResponse.by_height)\n    })\n\n    this.element.classList.remove('loading')\n  }\n\n  changeToHTMLTag (input) {\n    while (input.indexOf('[[') >= 0 && input.indexOf(']]') >= 0) {\n      const start = input.indexOf('[[') + 2\n      const end = input.indexOf(']]')\n      const inText = input.substring(start, end)\n      if (inText.indexOf('((') >= 0 && inText.indexOf('))') >= 0) {\n        const linkStart = inText.indexOf('((') + 2\n        const linkEnd = inText.indexOf('))')\n        const link = inText.substring(linkStart, linkEnd)\n        const mainText = inText.replace('((' + link + '))', '')\n        const htmlLink = '<a href=\"' + link + '\" target=\"_blank\">' + mainText + '</a>'\n        input = input.replace('[[' + inText + ']]', htmlLink)\n      } else break\n    }\n    return input\n  }\n\n  disconnect () {\n    this.cumulativeVoteChoicesChart.destroy()\n    this.voteChoicesByBlockChart.destroy()\n  }\n\n  drawCharts () {\n    this.cumulativeVoteChoicesChart = this.drawChart(\n      this.cumulativeVoteChoicesTarget,\n      {\n        labels: ['Date', 'Yes', 'Abstain', 'No'],\n        ylabel: 'Cumulative Vote Choices Cast',\n        title: 'Cumulative Vote Choices',\n        labelsKMB: true\n      }\n    )\n    this.voteChoicesByBlockChart = this.drawChart(\n      this.voteChoicesByBlockTarget,\n      {\n        labels: ['Block Height', 'Yes', 'Abstain', 'No'],\n        ylabel: 'Vote Choices Cast',\n        title: 'Vote Choices By Block',\n        plotter: barChartPlotter\n      }\n    )\n  }\n\n  drawChart (el, options, Dygraph) {\n    return new this.Dygraph(\n      el,\n      this.emptydata,\n      {\n        ...chartLayout,\n        ...options\n      }\n    )\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport { darkEnabled } from '../services/theme_service'\nimport { VoteMeter, ProgressMeter } from '../helpers/meters.js'\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'minerMeter', 'voterMeter'\n    ]\n  }\n\n  connect () {\n    this.minerMeter = this.voterMeter = null\n    this.meters = []\n    const opts = {\n      darkMode: darkEnabled()\n    }\n    if (this.hasMinerMeterTarget) {\n      this.minerMeter = new ProgressMeter(this.minerMeterTarget, opts)\n      this.meters.push(this.minerMeter)\n    }\n    if (this.hasVoterMeterTarget) {\n      this.voterMeter = new ProgressMeter(this.voterMeterTarget, opts)\n      this.meters.push(this.voterMeter)\n    }\n    const quorumMetersDivs = document.querySelectorAll('div.quorum')\n    quorumMetersDivs.forEach((meterDiv) => {\n      this.meters.push(new ProgressMeter(meterDiv, opts))\n    })\n    const approvalMetersDivs = document.querySelectorAll('div.approval')\n    approvalMetersDivs.forEach((meterDiv) => {\n      this.meters.push(new VoteMeter(meterDiv, opts))\n    })\n    this.setNightMode = this._setNightMode.bind(this)\n    globalEventBus.on('NIGHT_MODE', this.setNightMode)\n  }\n\n  disconnect () {\n    globalEventBus.off('NIGHT_MODE', this.setNightMode)\n  }\n\n  _setNightMode (state) {\n    this.meters.forEach((meter) => {\n      meter.setDarkMode(state.nightMode)\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport dompurify from 'dompurify'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport { isEmpty } from 'lodash-es'\nimport humanize from '../helpers/humanize_helper'\n\nlet Dygraph // lazy loaded on connect\nconst maxAddrRows = 160\nlet ctrl = null\nlet isSearching = false\n\nfunction amountTxCountProcessor (chart, d, binSize) {\n  const amountData = []\n  const txCountData = []\n  d.time.map((n, i) => {\n    if (chart === 'amount') {\n      amountData.push([new Date(n), d.redeemAmount[i], d.refundAmount[i]])\n    } else if (chart === 'txcount') {\n      txCountData.push([new Date(n), d.redeemCount[i], d.refundCount[i]])\n    }\n  })\n  if (chart === 'amount') {\n    padPoints(amountData, binSize)\n  } else if (chart === 'txcount') {\n    padPoints(txCountData, binSize)\n  }\n  return {\n    amount: amountData,\n    txcount: txCountData\n  }\n}\n\nfunction formatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y) + '</span>'\n  })\n  return html\n}\n\nfunction amountFormatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span>'\n  })\n  return html\n}\n\nlet commonOptions, amountOptions, txCountOptions\nfunction createOptions () {\n  commonOptions = {\n    digitsAfterDecimal: 8,\n    showRangeSelector: true,\n    rangeSelectorHeight: 20,\n    rangeSelectorForegroundStrokeColor: '#999',\n    rangeSelectorBackgroundStrokeColor: '#777',\n    legend: 'follow',\n    fillAlpha: 0.9,\n    labelsKMB: true,\n    labelsUTC: true,\n    stepPlot: false,\n    rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n    rangeSelectorPlotFillGradientColor: 'transparent',\n    rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n    rangeSelectorPlotLineWidth: 2\n  }\n\n  amountOptions = {\n    labels: ['Date', 'Redeemed Amount', 'Refund Amount'],\n    colors: ['#2971ff', '#ff9a29'],\n    ylabel: 'Amount (DCR)',\n    visibility: [true, true],\n    legendFormatter: amountFormatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n\n  txCountOptions = {\n    labels: ['Date', 'Redeemed Count', 'Refund Count'],\n    colors: ['#15b16a', '#9c3e76'],\n    ylabel: '# of contracts',\n    visibility: [true, true],\n    legendFormatter: formatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['pagesize', 'txnCount', 'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n      'range', 'pagebuttons', 'listLoader', 'tablePagination', 'paginationheader', 'pair',\n      'status', 'topTablePagination', 'fullscreen', 'bigchart', 'littlechart', 'chartbox', 'chartLoader',\n      'options', 'zoom', 'interval', 'flow', 'expando', 'noconfirms', 'chart', 'redeemRadio', 'refundRadio',\n      'searchBox', 'searchInput', 'searchBtn', 'clearSearchBtn', 'totalAmount', 'totalContracts', 'redeemCount', 'refundCount']\n  }\n\n  async connect () {\n    ctrl = this\n    ctrl.retrievedData = {}\n    ctrl.swapsData = null\n    ctrl.ajaxing = false\n    ctrl.requestedChart = false\n    ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n    ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n    ctrl.lastEnd = 0\n\n    ctrl.bindElements()\n    ctrl.bindEvents()\n    ctrl.query = new TurboQuery()\n\n    // These two are templates for query parameter sets.\n    // When url query parameters are set, these will also be updated.\n    ctrl.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'bin', 'flow', 'n', 'start', 'pair', 'status', 'search', 'mode'])\n    // Get initial view settings from the url\n    ctrl.query.update(ctrl.settings)\n    ctrl.state = Object.assign({}, ctrl.settings)\n    ctrl.settings.pair = ctrl.settings.pair && ctrl.settings.pair !== '' ? ctrl.settings.pair : 'all'\n    ctrl.settings.status = ctrl.settings.status && ctrl.settings.status !== '' ? ctrl.settings.status : 'all'\n    ctrl.settings.mode = ctrl.settings.mode && ctrl.settings.mode !== '' ? ctrl.settings.mode : 'full'\n    document.getElementById('viewListToggle').checked = ctrl.settings.mode !== 'simple'\n    this.pairTarget.value = ctrl.settings.pair\n    this.statusTarget.value = ctrl.settings.status\n    if (!ctrl.settings.start || ctrl.settings.start === '') {\n      ctrl.settings.start = 0\n    }\n    if (!ctrl.settings.n || ctrl.settings.n === '') {\n      ctrl.settings.n = 20\n    }\n    ctrl.paginationParams = {\n      offset: ctrl.settings.start,\n      count: 0,\n      pagesize: ctrl.settings.n\n    }\n\n    // init for chart\n    ctrl.setChartType()\n    if (ctrl.settings.flow) ctrl.setFlowChecks()\n    if (ctrl.settings.zoom !== null) {\n      ctrl.zoomButtons.forEach((button) => {\n        button.classList.remove('btn-selected')\n      })\n    }\n    if (ctrl.settings.bin == null) {\n      ctrl.settings.bin = ctrl.getBin()\n    }\n    if (ctrl.settings.chart == null || !ctrl.validChartType(ctrl.settings.chart)) {\n      ctrl.settings.chart = ctrl.chartType\n    }\n\n    if (ctrl.settings.search && ctrl.settings.search !== '') {\n      this.searchInputTarget.value = ctrl.settings.search\n      isSearching = true\n      this.searchBtnTarget.classList.add('d-none')\n      this.clearSearchBtnTarget.classList.remove('d-none')\n    } else {\n      this.searchBtnTarget.classList.remove('d-none')\n      this.clearSearchBtnTarget.classList.add('d-none')\n    }\n\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n\n    ctrl.initializeChart()\n    ctrl.drawGraph()\n    // fetch table data\n    await this.fetchTable(ctrl.paginationParams.count, ctrl.paginationParams.offset)\n    this.resetPageSizeOptions()\n    // get socket atomic summary infos and new updated swap list\n    this.processDecredBlock = this._processDecredSummaryInfo.bind(this)\n    globalEventBus.on('SUMMARY_RECEIVED', this.processDecredBlock)\n    this.processBtcBlock = this._processBtcBlock.bind(this)\n    globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBtcBlock)\n    this.processLtcBlock = this._processLtcBlock.bind(this)\n    globalEventBus.on('LTC_BLOCK_RECEIVED', this.processLtcBlock)\n  }\n\n  disconnect () {\n    if (this.graph !== undefined) {\n      this.graph.destroy()\n    }\n    this.retrievedData = {}\n    globalEventBus.off('SUMMARY_RECEIVED', this.processDecredBlock)\n    globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBtcBlock)\n    globalEventBus.off('LTC_BLOCK_RECEIVED', this.processLtcBlock)\n  }\n\n  _processDecredSummaryInfo (data) {\n    const summaryData = data.summary_info\n    this.updateAtomicSwapsFromSocket(summaryData.GroupSwaps, summaryData.swapsTotalAmount,\n      summaryData.swapsTotalContract, summaryData.refundCount)\n  }\n\n  _processBtcBlock (blockData) {\n    this.updateAtomicSwapsFromSocket(blockData.block.GroupSwaps, blockData.extra.swapsTotalAmount,\n      blockData.extra.swapsTotalContract, blockData.extra.refundCount)\n  }\n\n  _processLtcBlock (blockData) {\n    this.updateAtomicSwapsFromSocket(blockData.block.GroupSwaps, blockData.extra.swapsTotalAmount,\n      blockData.extra.swapsTotalContract, blockData.extra.refundCount)\n  }\n\n  updateAtomicSwapsFromSocket (swapList, totalAmount, totalContracts, refundCount) {\n    if (!swapList || swapList.length === 0) {\n      return\n    }\n    this.totalAmountTarget.innerHTML = humanize.decimalParts(humanize.toAmountFloat(totalAmount), true, 2)\n    this.totalContractsTarget.innerHTML = humanize.decimalParts(parseFloat(totalContracts), true, 0)\n    this.refundCountTarget.innerHTML = humanize.decimalParts(parseFloat(refundCount), true, 0)\n    this.redeemCountTarget.innerHTML = humanize.decimalParts(parseFloat(totalContracts - refundCount), true, 0)\n    const insertedGroupTx = []\n    if (ctrl.swapsData === null) {\n      ctrl.swapsData = swapList.length > ctrl.paginationParams.pagesize ? swapList.slice(0, ctrl.paginationParams.pagesize) : swapList\n    } else {\n      const newSwaps = []\n      for (let i = 0; i < swapList.length; i++) {\n        if (i === ctrl.paginationParams.pagesize) {\n          break\n        }\n        if (insertedGroupTx.includes(swapList[i].groupTx)) {\n          continue\n        }\n        newSwaps.push(swapList[i])\n        insertedGroupTx.push(swapList[i].groupTx)\n      }\n      if (newSwaps.length < ctrl.paginationParams.pagesize) {\n        for (let i = 0; i < ctrl.swapsData.length; i++) {\n          const swap = ctrl.swapsData[i]\n          if (newSwaps.length === ctrl.paginationParams.pagesize) {\n            break\n          }\n          if (insertedGroupTx.includes(swap.groupTx)) {\n            continue\n          }\n          newSwaps.push(swap)\n          insertedGroupTx.push(swap.groupTx)\n        }\n      }\n      ctrl.swapsData = newSwaps\n    }\n    this.handlerUpdateTable()\n  }\n\n  // Request the initial chart data, grabbing the Dygraph script if necessary.\n  initializeChart () {\n    createOptions()\n    // If no chart data has been requested, e.g. when initially on the\n    // list tab, then fetch the initial chart data.\n    if (!this.requestedChart) {\n      this.fetchGraphData(this.chartType, this.getBin())\n    }\n  }\n\n  searchInputKeypress (e) {\n    if (e.keyCode === 13) {\n      this.searchAtomicSwapContract()\n    }\n  }\n\n  createDataTableView () {\n    if (this.swapsData === null) {\n      return ''\n    }\n    let resHtml = `<div class=\"btable-table-wrap maxh-none mt-2\">\n      <table class=\"btable-table w-100 table-responsive-sm\">\n\t\t  <thead>\n\t\t  <tr class=\"bg-none\">\n\t\t\t\t<th class=\"text-start fw-bold\">Pair/Currency</th>\n\t\t\t\t<th class=\"text-center fw-bold\">Txid</th>\n        <th class=\"text-start fw-bold\">Value</th>\n\t\t\t\t<th class=\"text-start fw-bold\">Height</th>\n\t\t\t\t<th class=\"text-end fw-bold\">Time (UTC)</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"bgc-white\">`\n    this.swapsData.forEach((swap) => {\n      const hasTargetToken = swap.targetToken !== ''\n      resHtml += `<tr class=\"swap-group-header\">\n\t\t\t\t<td class=\"text-start\" colspan=\"2\">\n\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t${hasTargetToken\n? `<div class=\"p-relative d-flex ai-center pair-icons\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\"> \n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\" class=\"second-pair\">\n\t\t\t\t\t\t  </div>`\n: '<img src=\"/images/synchronize.png\" width=\"20\" height=\"20\" class=\"me-1\">'}\n\t\t\t\t\t\t<p class=\"fw-bold\">${hasTargetToken ? 'DCR/' + swap.targetToken.toUpperCase() : 'Verifying'}</p>\n\t\t\t\t\t\t<span class=\"common-label py-1 px-2 ms-2 ${swap.isRefund ? 'refund-brighter-bg refund-border' : 'success-bg success-border'} fw-400 fs13\">${swap.isRefund ? 'Refund' : 'Redemption'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start fw-bold\" colspan=\"2\">\n          ${humanize.toAmountFloatDisplay(swap.source.totalAmount, -1, 'DCR')}\n\t\t\t\t\t${hasTargetToken ? `&nbsp;(${humanize.toAmountFloatDisplay(swap.target.totalAmount, -1, swap.targetToken.toUpperCase())})` : ''}\n          ${hasTargetToken ? `<div class=\"mt-2 fst-italic\"><span class=\"fw-bold\">Rate:</span> <span class=\"fw-400\">${humanize.decimalParts(humanize.toAmountFloat(swap.target.totalAmount) / humanize.toAmountFloat(swap.source.totalAmount), true, 7)} ${swap.targetToken.toUpperCase()}/DCR</span></div>` : ''}\n\t\t\t\t</td>\n        <td class=\"text-end\"><span data-type=\"age\" data-time-target=\"age\" data-age=\"${swap.time}\">${humanize.timeDuration(humanize.timeToDuration(swap.time))}</span> ago</td>\n\t\t\t</tr>`\n      swap.source.contracts.forEach((contract) => {\n        resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(contract.txid, '/tx/' + contract.txid)}</div>\n\t\t\t\t</td>\n        <td class=\"text-start\">\n          ${humanize.toAmountFloatDisplay(contract.value, -1, 'DCR')}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/decred/block/${contract.height}\">${contract.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n          ${contract.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n      })\n      swap.source.results.forEach((result) => {\n        resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(result.txid, '/tx/' + result.txid)}</div>\n\t\t\t\t</td>\n        <td class=\"text-start\">\n          ${humanize.toAmountFloatDisplay(result.value, -1, 'DCR')}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/decred/block/${result.height}\">${result.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n          ${result.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n      })\n      if (hasTargetToken) {\n        swap.target.contracts.forEach((contract) => {\n          resHtml += `<tr>\n\t\t\t\t  <td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(contract.txid, '/' + swap.targetToken + '/tx/' + contract.txid)}</div>\n\t\t\t\t</td>\n        <td class=\"text-start\">\n\t\t\t\t\t ${humanize.toAmountFloatDisplay(contract.value, -1, swap.targetToken.toUpperCase())}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/${swap.targetToken}/block/${contract.height}\">${contract.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n          ${contract.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n        })\n        swap.target.results.forEach((result) => {\n          resHtml += `<tr>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<div class=\"d-flex ai-center ms-3 ms-lg-4\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<div class=\"clipboard\">${humanize.hashElide(result.txid, '/' + swap.targetToken + '/tx/' + result.txid)}</div>\n\t\t\t\t</td>\n        <td class=\"text-start\">\n          ${humanize.toAmountFloatDisplay(result.value, -1, swap.targetToken.toUpperCase())}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-start\">\n\t\t\t\t\t<a href=\"/${swap.targetToken}/block/${result.height}\">${result.height}</a>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-end\">\n          ${result.timeDisp}\n\t\t\t\t</td>\n\t\t\t</tr>`\n        })\n      }\n    })\n    resHtml += '</tbody></table></div>'\n    return resHtml\n  }\n\n  createGridDataView () {\n    if (this.swapsData === null) {\n      return ''\n    }\n    let resHtml = `<div class=\"btable-table-wrap maxh-none mt-0\">\n                <table class=\"btable-table atomic-table w-100 table-responsive-sm\">\n\t              <tbody class=\"bgc-white\">`\n    this.swapsData.forEach((swap) => {\n      resHtml += `<tr><td>\n\t\t\t\t<div class=\"pb-1 border-2-bottom-grey\">\n\t\t\t\t<div class=\"d-md-flex ai-center fw-600 fs15\">\n\t\t\t\t\t<div class=\"d-flex ai-center\">`\n      const hasTargetToken = swap.targetToken !== ''\n      resHtml += `${!hasTargetToken\n? '<img src=\"/images/synchronize.png\" width=\"20\" height=\"20\" class=\"me-1\">'\n: `<div class=\"p-relative d-flex ai-center pair-icons\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\"> \n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\" class=\"second-pair\">\n\t\t\t\t\t\t  </div>`}<p>${hasTargetToken ? 'DCR/' + swap.targetToken.toUpperCase() : 'Verifying'}</p></div>`\n      resHtml += `<div class=\"d-flex ai-center ms-0 ms-md-3\">Amount:&nbsp;${humanize.toAmountFloatDisplay(swap.source.totalAmount, -1, 'DCR')}\n                ${hasTargetToken ? `&nbsp;(${humanize.toAmountFloatDisplay(swap.target.totalAmount, -1, swap.targetToken.toUpperCase())})` : ''}\n                <span class=\"common-label py-1 px-2 ms-2 ${swap.isRefund ? 'refund-brighter-bg refund-border' : 'success-bg success-border'} fw-400 fs13\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n                </div>\n                <div class=\"mt-2 fst-italic\">\n                  ${hasTargetToken ? `<span class=\"fw-bold\">Rate:</span> ${humanize.decimalParts(humanize.toAmountFloat(swap.target.totalAmount) / humanize.toAmountFloat(swap.source.totalAmount), true, 7)} ${swap.targetToken.toUpperCase()}/DCR, ` : ''}\n                  <span data-type=\"age\" data-time-target=\"age\" data-age=\"${swap.time}\">${humanize.timeDuration(humanize.timeToDuration(swap.time))}</span> ago\n                </div>\n                </div><div class=\"row mt-3\">\n\t\t\t\t\t      <div class=\"col-24 col-md-12 mb-3\">\n\t\t\t\t\t\t    <div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t  <img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t  <div class=\"ms-2\"><span class=\"fw-600\">Contract</span></div>\n\t\t\t\t\t\t    </div>`\n      swap.source.contracts.forEach((contract) => {\n        resHtml += `<div class=\"row mt-1\">\n\t\t\t\t\t\t\t<div class=\"col-24\">\n\t\t\t\t\t\t\t  <div class=\"clipboard\">${humanize.hashElide(contract.txid, '/tx/' + contract.txid)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Block Height: <a href=\"/decred/block/${contract.height}\">${contract.height}</a></p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(contract.value, -1, 'DCR')}</p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\">Fees: ${humanize.toAmountFloatDisplay(contract.fees, -1, 'DCR')}</p>\n\t\t\t\t\t\t\t<p class=\"col-12 ps-2\"><span class=\"fw-bold\">Created: </span>${contract.timeDisp}</p>\n\t\t\t\t\t\t  </div>`\n      })\n      resHtml += `</div>\n\t\t\t\t\t<div class=\"col-24 col-md-12 mb-3\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/dcr-icon-notran.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>`\n      swap.source.results.forEach((result) => {\n        resHtml += `<div class=\"row mt-1\">\n                    <div class=\"col-24\">\n                      <div class=\"clipboard\">${humanize.hashElide(result.txid, '/tx/' + result.txid)}</div>\n                    </div>\n                    <p class=\"col-12 ps-2\">Block Height: <a href=\"/decred/block/${result.height}\">${result.height}</a></p>\n                    <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(result.value, -1, 'DCR')}</p>\n                    <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Locked Time: </span>${result.lockTimeDisp}</p>\n                    <p class=\"col-12 ps-2\"><span class=\"fw-bold\">${swap.isRefund ? 'Refunded' : 'Redeemed'} At: </span>${result.timeDisp}</p>\n                    </div>`\n      })\n      resHtml += '</div></div>'\n      if (hasTargetToken) {\n        resHtml += `<div class=\"row\">\n\t\t\t\t\t  <div class=\"col-24 col-md-12 mb-1\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">Contracts</span></div>\n\t\t\t\t\t\t</div>`\n\n        swap.target.contracts.forEach((contract) => {\n          resHtml += `<div class=\"row mt-1\">\n                    <div class=\"col-24\">\n                      <div class=\"clipboard\">${humanize.hashElide(contract.txid, '/' + swap.targetToken + '/tx/' + contract.txid)}</div>\n                    </div>\n                    <p class=\"col-12 ps-2\">Block Height: <a href=\"/${swap.targetToken}/block/${contract.height}\">${contract.height}</a></p>\n                    <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(contract.value, -1, swap.targetToken.toUpperCase())}</p>\n                    <p class=\"col-12 ps-2\">Fees: ${humanize.toAmountFloatDisplay(contract.fees, -1, swap.targetToken.toUpperCase())}</p>\n                    <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Created: </span>${contract.timeDisp}</p>\n                    </div>`\n        })\n        resHtml += `</div>\n\t\t\t\t\t  <div class=\"col-24 col-md-12 mb-1\">\n\t\t\t\t\t\t<div class=\"d-flex ai-center\">\n\t\t\t\t\t\t\t<img src=\"/images/${swap.targetToken}-icon.png\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t<div class=\"ms-2\"><span class=\"fw-600\">${swap.isRefund ? 'Refund' : 'Redemption'}</span></div>\n\t\t\t\t\t\t</div>`\n        swap.target.results.forEach((result) => {\n          resHtml += `<div class=\"row mt-1\">\n                        <div class=\"col-24\">\n                          <div class=\"clipboard\">${humanize.hashElide(result.txid, '/' + swap.targetToken + '/tx/' + result.txid)}</div>\n                        </div>\n                        <p class=\"col-12 ps-2\">Block Height: <a href=\"/${swap.targetToken}/block/${result.height}\">${result.height}</a></p>\n                        <p class=\"col-12 ps-2\">Value: ${humanize.toAmountFloatDisplay(result.value, -1, swap.targetToken.toUpperCase())}</p>\n                        <p class=\"col-12 ps-2\"><span class=\"fw-bold\">Locked Time: </span>${result.lockTimeDisp}</p>\n                        <p class=\"col-12 ps-2\"><span class=\"fw-bold\">${swap.isRefund ? 'Refunded' : 'Redeemed'} At: </span>${result.timeDisp}</p>\n                        </div>`\n        })\n        resHtml += '</div></div>'\n      }\n      resHtml += '</td></tr>'\n    })\n    resHtml += '</tbody></table></div>'\n    return resHtml\n  }\n\n  searchAtomicSwapContract () {\n    // if search key is empty, ignore\n    if (!this.searchInputTarget.value || this.searchInputTarget.value === '') {\n      this.searchBtnTarget.classList.remove('d-none')\n      this.clearSearchBtnTarget.classList.add('d-none')\n      if (isSearching) {\n        this.settings.search = ''\n        isSearching = false\n        this.paginationParams.offset = 0\n        this.fetchTable(this.pageSize, this.paginationParams.offset)\n      }\n      return\n    }\n    this.searchBtnTarget.classList.add('d-none')\n    this.clearSearchBtnTarget.classList.remove('d-none')\n    this.settings.search = this.searchInputTarget.value\n    this.paginationParams.offset = 0\n    this.fetchTable(this.pageSize, this.paginationParams.offset)\n  }\n\n  async clearSearchState () {\n    this.settings.search = ''\n    this.searchInputTarget.value = ''\n    this.searchBtnTarget.classList.remove('d-none')\n    this.clearSearchBtnTarget.classList.add('d-none')\n    isSearching = false\n    this.paginationParams.offset = 0\n    await this.fetchTable(this.pageSize, this.paginationParams.offset)\n  }\n\n  async clearSearch () {\n    await this.clearSearchState()\n    this.resetPageSizeOptions()\n  }\n\n  onTypeChange (e) {\n    if (!e.target.value || e.target.value === '') {\n      return\n    }\n    this.searchBtnTarget.classList.remove('d-none')\n    this.clearSearchBtnTarget.classList.add('d-none')\n  }\n\n  drawGraph () {\n    const settings = ctrl.settings\n    ctrl.noconfirmsTarget.classList.add('d-hide')\n    ctrl.chartTarget.classList.remove('d-hide')\n    // Check for invalid view parameters\n    if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n    // update flow radio button color\n    this.redeemRadioTarget.classList.add(settings.chart === 'amount' ? 'redeem-amount' : 'redeem-txcount')\n    this.redeemRadioTarget.classList.remove(settings.chart === 'amount' ? 'redeem-txcount' : 'redeem-amount')\n    this.refundRadioTarget.classList.add(settings.chart === 'amount' ? 'refund-amount' : 'refund-txcount')\n    this.refundRadioTarget.classList.remove(settings.chart === 'amount' ? 'refund-txcount' : 'refund-amount')\n\n    if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n      // Only the zoom has changed.\n      const zoom = Zoom.decode(settings.zoom)\n      if (zoom) {\n        ctrl.setZoom(zoom.start, zoom.end)\n      }\n      return\n    }\n\n    // Set the current view to prevent unnecessary reloads.\n    Object.assign(ctrl.state, settings)\n    ctrl.fetchGraphData(settings.chart, settings.bin)\n  }\n\n  changeViewMode () {\n    ctrl.settings.mode = ctrl.settings.mode === 'full' ? 'simple' : 'full'\n    document.getElementById('viewListToggle').checked = ctrl.settings.mode === 'full'\n    ctrl.query.replace(ctrl.settings)\n    ctrl.tableTarget.innerHTML = ctrl.settings.mode === 'full' ? this.createGridDataView() : this.createDataTableView()\n  }\n\n  async fetchGraphData (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    if (ctrl.ajaxing === cacheKey) {\n      return\n    }\n    ctrl.requestedChart = cacheKey\n    ctrl.ajaxing = cacheKey\n\n    ctrl.chartLoaderTarget.classList.add('loading')\n\n    // Check for cached data\n    if (ctrl.retrievedData[cacheKey]) {\n      // Queue the function to allow the loader to display.\n      setTimeout(() => {\n        ctrl.popChartCache(chart, bin)\n        ctrl.chartLoaderTarget.classList.remove('loading')\n        ctrl.ajaxing = false\n      }, 10) // 0 should work but doesn't always\n      return\n    }\n    const url = `/api/atomic-swaps/${chart}/${bin}`\n    const graphDataResponse = await requestJSON(url)\n    ctrl.processData(chart, bin, graphDataResponse)\n    ctrl.ajaxing = false\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  popChartCache (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    const binSize = Zoom.mapValue(bin)\n    if (!ctrl.retrievedData[cacheKey] ||\n      ctrl.requestedChart !== cacheKey\n    ) {\n      return\n    }\n    const data = ctrl.retrievedData[cacheKey]\n    let options = null\n    switch (chart) {\n      case 'amount':\n        options = amountOptions\n        options.plotter = sizedBarPlotter(binSize)\n        break\n      case 'txcount':\n        options = txCountOptions\n        options.plotter = sizedBarPlotter(binSize)\n        break\n    }\n    options.zoomCallback = null\n    options.drawCallback = null\n    if (ctrl.graph === undefined) {\n      ctrl.graph = ctrl.createGraph(data, options)\n    } else {\n      ctrl.graph.updateOptions({\n        ...{ file: data },\n        ...options\n      })\n    }\n    ctrl.updateFlow()\n    ctrl.chartLoaderTarget.classList.remove('loading')\n    ctrl.xRange = ctrl.graph.xAxisExtremes()\n    ctrl.validateZoom(binSize)\n  }\n\n  processData (chart, bin, data) {\n    if (isEmpty(data)) {\n      ctrl.noDataAvailable()\n      return\n    }\n    const binSize = Zoom.mapValue(bin)\n    const processed = amountTxCountProcessor(chart, data, binSize)\n    ctrl.retrievedData[chart + '-' + bin] = chart === 'amount' ? processed.amount : processed.txcount\n    setTimeout(() => {\n      ctrl.popChartCache(chart, bin)\n    }, 0)\n  }\n\n  noDataAvailable () {\n    this.noconfirmsTarget.classList.remove('d-hide')\n    this.chartTarget.classList.add('d-hide')\n    this.chartLoaderTarget.classList.remove('loading')\n  }\n\n  updateFlow () {\n    const bitmap = ctrl.flow\n    if (bitmap === 0) {\n      // If all boxes are unchecked, just leave the last view\n      // in place to prevent chart errors with zero visible datasets\n      return\n    }\n    ctrl.settings.flow = bitmap\n    ctrl.setGraphQuery()\n    // Set the graph dataset visibility based on the bitmap\n    // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n    const visibility = {}\n    visibility[0] = bitmap & 1\n    visibility[1] = bitmap & 2\n    Object.keys(visibility).forEach((idx) => {\n      ctrl.graph.setVisibility(idx, visibility[idx])\n    })\n  }\n\n  validateZoom (binSize) {\n    ctrl.setButtonVisibility()\n    const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n    ctrl.setZoom(zoom.start, zoom.end)\n    ctrl.graph.updateOptions({\n      zoomCallback: ctrl.zoomCallback,\n      drawCallback: ctrl.drawCallback\n    })\n  }\n\n  changeGraph (e) {\n    this.settings.chart = this.chartType\n    this.setGraphQuery()\n    this.drawGraph()\n  }\n\n  changeBin (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.settings.bin = target.name\n    ctrl.setIntervalButton(target.name)\n    this.setGraphQuery()\n    this.drawGraph()\n  }\n\n  setZoom (start, end) {\n    if (ctrl.graph === undefined) {\n      return\n    }\n    ctrl.chartLoaderTarget.classList.add('loading')\n    ctrl.graph.updateOptions({\n      dateWindow: [start, end]\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.lastEnd = end\n    ctrl.query.replace(ctrl.settings)\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  setButtonVisibility () {\n    const duration = ctrl.chartDuration\n    const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n    buttonSets.forEach((buttonSet) => {\n      buttonSet.forEach((button) => {\n        if (button.dataset.fixed) return\n        if (duration > Zoom.mapValue(button.name)) {\n          button.classList.remove('d-hide')\n        } else {\n          button.classList.remove('btn-selected')\n          button.classList.add('d-hide')\n        }\n      })\n    })\n  }\n\n  toggleExpand (e) {\n    const btn = this.expandoTarget\n    if (btn.classList.contains('dcricon-expand')) {\n      btn.classList.remove('dcricon-expand')\n      btn.classList.add('dcricon-collapse')\n      this.bigchartTarget.appendChild(this.chartboxTarget)\n      this.fullscreenTarget.classList.remove('d-none')\n    } else {\n      this.putChartBack()\n    }\n    if (this.graph) this.graph.resize()\n  }\n\n  putChartBack () {\n    const btn = this.expandoTarget\n    btn.classList.add('dcricon-expand')\n    btn.classList.remove('dcricon-collapse')\n    this.littlechartTarget.appendChild(this.chartboxTarget)\n    this.fullscreenTarget.classList.add('d-none')\n    if (this.graph) this.graph.resize()\n  }\n\n  exitFullscreen (e) {\n    if (e.target !== this.fullscreenTarget) return\n    this.putChartBack()\n  }\n\n  setGraphQuery () {\n    this.query.replace(this.settings)\n  }\n\n  createGraph (processedData, otherOptions) {\n    return new Dygraph(\n      this.chartTarget,\n      processedData,\n      { ...commonOptions, ...otherOptions }\n    )\n  }\n\n  getBin () {\n    let bin = ctrl.query.get('bin')\n    if (!ctrl.setIntervalButton(bin)) {\n      bin = ctrl.activeBin\n    }\n    return bin\n  }\n\n  setIntervalButton (interval) {\n    const button = ctrl.validGraphInterval(interval)\n    if (!button) return false\n    ctrl.binputs.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    button.classList.add('btn-selected')\n  }\n\n  setViewButton (view) {\n    this.viewTargets.forEach((button) => {\n      if (button.name === view) {\n        button.classList.add('btn-active')\n      } else {\n        button.classList.remove('btn-active')\n      }\n    })\n  }\n\n  validGraphInterval (interval) {\n    const bin = interval || this.settings.bin || this.activeBin\n    let b = false\n    this.binputs.forEach((button) => {\n      if (button.name === bin) b = button\n    })\n    return b\n  }\n\n  setChartType () {\n    const chart = ctrl.settings.chart\n    if (this.validChartType(chart)) {\n      this.optionsTarget.value = chart\n    }\n  }\n\n  validChartType (chart) {\n    return this.optionsTarget.namedItem(chart) || false\n  }\n\n  setFlowChecks () {\n    const bitmap = this.settings.flow\n    this.flowBoxes.forEach((box) => {\n      box.checked = bitmap & parseInt(box.value)\n    })\n  }\n\n  onZoom (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    target.classList.add('btn-selected')\n    if (ctrl.graph === undefined) {\n      return\n    }\n    const duration = ctrl.activeZoomDuration\n\n    const end = ctrl.xRange[1]\n    const start = duration === 0 ? ctrl.xRange[0] : end - duration\n    ctrl.setZoom(start, end)\n  }\n\n  _zoomCallback (start, end) {\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.query.replace(ctrl.settings)\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  _drawCallback (graph, first) {\n    if (first) return\n    const [start, end] = ctrl.graph.xAxisRange()\n    if (start === end) return\n    if (end === this.lastEnd) return // Only handle slide event.\n    this.lastEnd = end\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.query.replace(ctrl.settings)\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  setSelectedZoom (zoomKey) {\n    this.zoomButtons.forEach(function (button) {\n      if (button.name === zoomKey) {\n        button.classList.add('btn-selected')\n      } else {\n        button.classList.remove('btn-selected')\n      }\n    })\n  }\n\n  bindElements () {\n    this.flowBoxes = this.flowTarget.querySelectorAll('input')\n    this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n    this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n    this.binputs = this.intervalTarget.querySelectorAll('button')\n  }\n\n  bindEvents () {\n    ctrl.paginatorTargets.forEach((link) => {\n      link.addEventListener('click', (e) => {\n        e.preventDefault()\n      })\n    })\n  }\n\n  changePair (e) {\n    ctrl.settings.pair = (!e.target.value || e.target.value === '') ? 'all' : e.target.value\n    this.clearSearchState()\n  }\n\n  changeStatus (e) {\n    ctrl.settings.status = (!e.target.value || e.target.value === '') ? 'all' : e.target.value\n    this.clearSearchState()\n  }\n\n  makeTableUrl (count, offset) {\n    return `/atomicswaps-table?n=${count}&start=${offset}${ctrl.settings.pair && ctrl.settings.pair !== '' ? '&pair=' + ctrl.settings.pair : ''}${ctrl.settings.status && ctrl.settings.status !== '' ? '&status=' + ctrl.settings.status : ''}\n      ${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}`\n  }\n\n  changePageSize () {\n    this.fetchTable(this.pageSize, this.paginationParams.offset)\n  }\n\n  nextPage () {\n    this.toPage(1)\n  }\n\n  prevPage () {\n    this.toPage(-1)\n  }\n\n  pageNumberLink (e) {\n    e.preventDefault()\n    const url = e.target.href\n    const parser = new URL(url)\n    const start = parser.searchParams.get('start')\n    const pagesize = parser.searchParams.get('n')\n    this.fetchTable(pagesize, start)\n  }\n\n  toPage (direction) {\n    const params = ctrl.paginationParams\n    const count = ctrl.pageSize\n    let requestedOffset = params.offset + count * direction\n    if (requestedOffset >= params.count) return\n    if (requestedOffset < 0) requestedOffset = 0\n    ctrl.fetchTable(count, requestedOffset)\n  }\n\n  async fetchTable (count, offset) {\n    ctrl.listLoaderTarget.classList.add('loading')\n    const requestCount = count > 20 ? count : 20\n    const tableResponse = await requestJSON(ctrl.makeTableUrl(requestCount, offset))\n    this.swapsData = tableResponse.swaps_list\n    ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n    const settings = ctrl.settings\n    settings.n = requestCount\n    settings.start = offset\n    ctrl.paginationParams.count = tableResponse.tx_count\n    ctrl.query.replace(settings)\n    ctrl.paginationParams.offset = offset\n    ctrl.paginationParams.pagesize = requestCount\n    ctrl.paginationParams.currentcount = Number(tableResponse.current_count)\n    ctrl.setPageability()\n    ctrl.tablePaginationParams = tableResponse.pages\n    ctrl.setTablePaginationLinks()\n    ctrl.listLoaderTarget.classList.remove('loading')\n  }\n\n  handlerUpdateTable () {\n    if (ctrl.swapsData === null) {\n      return\n    }\n    ctrl.listLoaderTarget.classList.add('loading')\n    // ctrl.paginationParams.count = txCount\n    ctrl.paginationParams.currentcount = ctrl.swapsData.length\n    ctrl.setPageability()\n    ctrl.tableTarget.innerHTML = ctrl.settings.mode === 'full' ? this.createGridDataView() : this.createDataTableView()\n    ctrl.listLoaderTarget.classList.remove('loading')\n  }\n\n  // reset page size selector\n  resetPageSizeOptions () {\n    const params = ctrl.paginationParams\n    const rowMax = params.count\n    const dispCount = params.currentcount\n    let pageSizeOptions = ''\n    if (rowMax >= 20) {\n      this.pagesizeTarget.classList.remove('disabled')\n      this.pagesizeTarget.disabled = false\n    } else {\n      this.pagesizeTarget.classList.add('disabled')\n      this.pagesizeTarget.disabled = true\n    }\n    pageSizeOptions += `<option ${dispCount === 20 ? 'selected' : ''} value=\"20\" ${rowMax < 20 ? 'disabled' : ''}>20</option>`\n    pageSizeOptions += `<option ${dispCount === 40 ? 'selected' : ''} value=\"40\" ${rowMax < 40 ? 'disabled' : ''}>40</option>`\n    pageSizeOptions += `<option ${dispCount === 80 ? 'selected' : ''} value=\"80\" ${rowMax < 80 ? 'disabled' : ''}>80</option>`\n    if (rowMax <= 160) {\n      pageSizeOptions += `<option ${dispCount === rowMax ? 'selected' : ''} value=\"${rowMax}\" ${rowMax <= 160 ? 'disabled' : ''}>${rowMax}</option>`\n    } else {\n      pageSizeOptions += `<option ${dispCount >= 160 ? 'selected' : ''} value=\"160\">160</option>`\n    }\n    this.pagesizeTarget.innerHTML = pageSizeOptions\n    this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n    const settings = ctrl.settings\n    settings.n = this.pageSize\n    ctrl.query.replace(settings)\n  }\n\n  setPageability () {\n    const params = ctrl.paginationParams\n    const rowMax = params.count\n    const count = ctrl.pageSize\n    if (ctrl.paginationParams.count === 0) {\n      ctrl.paginationheaderTarget.classList.add('d-hide')\n    } else {\n      ctrl.paginationheaderTarget.classList.remove('d-hide')\n    }\n    if (rowMax > count) {\n      ctrl.pagebuttonsTarget.classList.remove('d-hide')\n    } else {\n      ctrl.pagebuttonsTarget.classList.add('d-hide')\n    }\n    const setAbility = (el, state) => {\n      if (state) {\n        el.classList.remove('disabled')\n      } else {\n        el.classList.add('disabled')\n      }\n    }\n    setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n    setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n    ctrl.pageSizeOptions.forEach((option) => {\n      if (option.value > 100) {\n        if (rowMax > 100) {\n          option.disabled = false\n          option.text = option.value = Math.min(rowMax, maxAddrRows)\n        } else {\n          option.disabled = true\n          option.text = option.value = maxAddrRows\n        }\n      } else {\n        option.disabled = rowMax <= option.value\n      }\n    })\n    setAbility(ctrl.pagesizeTarget, rowMax > 20)\n    const suffix = rowMax > 1 ? 's' : ''\n    let rangeEnd = Number(params.offset) + Number(count)\n    if (rangeEnd > rowMax) rangeEnd = rowMax\n    ctrl.rangeTarget.innerHTML = 'showing ' + (Number(params.offset) + 1).toLocaleString() + ' &ndash; ' +\n      rangeEnd.toLocaleString() + ' of ' + rowMax.toLocaleString() + ' contract' + suffix\n  }\n\n  setTablePaginationLinks () {\n    const tablePagesLink = ctrl.tablePaginationParams\n    if (tablePagesLink.length === 0) {\n      ctrl.tablePaginationTarget.classList.add('d-hide')\n      ctrl.topTablePaginationTarget.classList.add('d-hide')\n      return\n    }\n    ctrl.tablePaginationTarget.classList.remove('d-hide')\n    ctrl.topTablePaginationTarget.classList.remove('d-hide')\n    const txCount = parseInt(ctrl.paginationParams.count)\n    const offset = parseInt(ctrl.paginationParams.offset)\n    const pageSize = parseInt(ctrl.paginationParams.pagesize)\n    let links = ''\n    if (typeof offset !== 'undefined' && offset > 0) {\n      links = `<a href=\"/atomic-swaps?start=${offset - pageSize}&n=${pageSize}&pair=${ctrl.settings.pair}&status=${ctrl.settings.status}${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}\" ` +\n        'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->atomicswaps#pageNumberLink\"></a>' + '\\n'\n    }\n\n    links += tablePagesLink.map(d => {\n      if (!d.link) return `<span>${d.str}</span>`\n      return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->atomicswaps#pageNumberLink\">${d.str}</a>`\n    }).join('\\n')\n\n    if ((txCount - offset) > pageSize) {\n      links += '\\n' + `<a href=\"/atomic-swaps?start=${(offset + pageSize)}&n=${pageSize}&pair=${ctrl.settings.pair}&status=${ctrl.settings.status}${ctrl.settings.search && ctrl.settings.search !== '' ? '&search=' + ctrl.settings.search : ''}${ctrl.settings.mode && ctrl.settings.mode !== '' ? '&mode=' + ctrl.settings.mode : ''}\" ` +\n        'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->atomicswaps#pageNumberLink\"></a>'\n    }\n    const paginationHTML = dompurify.sanitize(links)\n    ctrl.tablePaginationTarget.innerHTML = paginationHTML\n    ctrl.topTablePaginationTarget.innerHTML = paginationHTML\n  }\n\n  get pageSize () {\n    const selected = this.pagesizeTarget.selectedOptions\n    return selected.length ? parseInt(selected[0].value) : 20\n  }\n\n  get chartType () {\n    return this.optionsTarget.value\n  }\n\n  get activeZoomDuration () {\n    return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n  }\n\n  get activeZoomKey () {\n    const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n    if (activeButtons.length === 0) return null\n    return activeButtons[0].name\n  }\n\n  get chartDuration () {\n    return this.xRange[1] - this.xRange[0]\n  }\n\n  get activeBin () {\n    return this.intervalTarget.getElementsByClassName('btn-selected')[0].name\n  }\n\n  get flow () {\n    let base10 = 0\n    this.flowBoxes.forEach((box) => {\n      if (box.checked) base10 += parseInt(box.value)\n    })\n    return base10\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport humanize from '../helpers/humanize_helper'\nimport dompurify from 'dompurify'\n\nfunction digitformat (amount, decimalPlaces, noComma) {\n  if (!amount) return 0\n\n  if (noComma) return amount.toFixed(decimalPlaces)\n\n  decimalPlaces = decimalPlaces || 0\n  const result = parseFloat(amount).toLocaleString(undefined, { minimumFractionDigits: decimalPlaces, maximumFractionDigits: decimalPlaces }).replace(/\\.0*$/, '')\n  if (result.indexOf('.') > -1 && result.endsWith('0')) {\n    return removeTrailingZeros(result)\n  }\n\n  return result\n}\n\nfunction removeTrailingZeros (value) {\n  value = value.toString()\n  if (value.indexOf('.') === -1) {\n    return value\n  }\n\n  let cutFrom = value.length - 1\n  do {\n    if (value[cutFrom] === '0') {\n      cutFrom--\n    }\n  } while (value[cutFrom] === '0')\n\n  if (value[cutFrom] === '.') {\n    cutFrom--\n  }\n\n  return value.substr(0, cutFrom + 1)\n}\n\nlet Dygraph // lazy loaded on connect\nlet height, dcrPrice, hashrate, tpSize, tpValue, tpPrice, graphData, currentPoint, coinSupply\n\nfunction rateCalculation (y) {\n  y = y || 0.99 // 0.99 TODO confirm why 0.99 is used as default instead of 1\n  const x = 1 - y\n\n  // equation to determine hashpower requirement based on percentage of live stake\n  // https://medium.com/decred/decreds-hybrid-protocol-a-superior-deterrent-to-majority-attacks-9421bf486292\n  // (6 (1-f_s)⁵ -15(1-f_s) + 10(1-f_s)³) / (6f_s⁵-15f_s⁴ + 10f_s³)\n  // (6x⁵-15x⁴ +10x³) / (6y⁵-15y⁴ +10y³) where y = this.value and x = 1-y\n  return ((6 * Math.pow(x, 5)) - (15 * Math.pow(x, 4)) + (10 * Math.pow(x, 3))) / ((6 * Math.pow(y, 5)) - (15 * Math.pow(y, 4)) + (10 * Math.pow(y, 3)))\n}\n\nconst deviceList = {\n  0: {\n    hashrate: 15.6, // Th/s. Convert to GH when display\n    units: 'Th/s',\n    power: 3510, // W\n    cost: 41800, // $\n    name: 'ALPH Miner AL1',\n    link: 'https://shop.bitmain.com/product/detail?pid=00020240720091017398FxBBmL000652'\n  },\n  1: {\n    hashrate: 0.72, // Th/s. Convert to GH when display\n    units: 'Th/s',\n    power: 360, // W\n    cost: 2850, // $\n    name: 'Goldshell AL BOX II',\n    link: 'https://bitmars.io/product/goldshell-al-box-ii-720gh-s-360w-alephium-miner-without-psu/'\n  },\n  2: {\n    hashrate: 0.00516, // Th/s. Convert to GH when display\n    units: 'Th/s',\n    power: 450, // W\n    cost: 1739, // $\n    name: 'RTX 4090',\n    link: 'https://poolbay.io/gpu-miner-profit/119/rtx-4090'\n  },\n  3: {\n    hashrate: 0.00272, // Th/s. Convert to GH when display\n    units: 'Th/s',\n    power: 320, // W\n    cost: 899, // $\n    name: 'RTX 4080',\n    link: 'https://poolbay.io/gpu-miner-profit/122/rtx-4080'\n  }\n}\n\nconst externalAttackType = 'external'\nconst internalAttackType = 'internal'\n\nfunction legendFormatter (data) {\n  let html = ''\n  if (data.x == null) {\n    const dashLabels = data.series.reduce((nodes, series) => {\n      return `${nodes} <span>${series.labelHTML}</span>`\n    }, '')\n    html = `<span>${this.getLabels()[0]}: N/A</span>${dashLabels}`\n  } else {\n    const yVals = data.series.reduce((nodes, series) => {\n      if (!series.isVisible) return nodes\n      const precession = series.y >= 1 ? 2 : 6\n      return `${nodes} <span class=\"ms-3\">${series.labelHTML}: ${digitformat(series.y, precession)}x</span>`\n    }, '<br>')\n\n    html = `<span>${this.getLabels()[0]}: ${digitformat(data.x, 0)}</span>${yVals}`\n  }\n  dompurify.sanitize(html)\n  return html\n}\n\nfunction nightModeOptions (nightModeOn) {\n  if (nightModeOn) {\n    return {\n      rangeSelectorAlpha: 0.3,\n      gridLineColor: '#596D81',\n      colors: ['#2DD8A3', '#2970FF', '#FFC84E']\n    }\n  }\n  return {\n    rangeSelectorAlpha: 0.4,\n    gridLineColor: '#C4CBD2',\n    colors: ['#2970FF', '#006600', '#FF0090']\n  }\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'actualHashRate', 'attackPercent', 'attackPeriod', 'blockHeight', 'countDevice', 'device',\n      'deviceCost', 'deviceDesc', 'deviceName', 'devicePronoun', 'deviceSuffix', 'external', 'internal', 'internalHash', 'kwhRate',\n      'kwhRateLabel', 'otherCosts', 'otherCostsValue', 'priceDCR', 'internalAttackText', 'targetHashRate',\n      'externalAttackText', 'externalAttackPosText', 'additionalDcr', 'newTicketPoolValue', 'internalAttackPosText',\n      'additionalHashRate', 'newHashRate', 'targetPos', 'targetPow', 'ticketAttackSize', 'ticketPoolAttack', 'ticketPoolSize',\n      'ticketPoolSizeLabel', 'ticketPoolValue', 'ticketPrice', 'tickets', 'ticketSizeAttack', 'durationUnit', 'durationLongDesc',\n      'total', 'totalDCRPos', 'totalDeviceCost', 'totalElectricity', 'totalExtraCostRate', 'totalKwh', 'totalPos', 'totalPow',\n      'graph', 'labels', 'projectedTicketPrice', 'projectedTicketPriceIncrease', 'projectedTicketPriceSign', 'attackType', 'attackPosPercentAmountLabel',\n      'dcrPriceLabel', 'totalDCRPosLabel', 'projectedPriceDiv', 'attackNotPossibleWrapperDiv', 'coinSupply', 'totalAttackCostContainer'\n    ]\n  }\n\n  async connect () {\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate([\n      'attack_time', 'target_pow', 'kwh_rate', 'other_costs', 'target_pos', 'price', 'device', 'attack_type'\n    ])\n\n    // Get initial view settings from the url\n    this.query.update(this.settings)\n\n    height = parseInt(this.data.get('height'))\n    hashrate = parseFloat(this.data.get('hashrate'))\n    dcrPrice = parseFloat(this.data.get('dcrprice'))\n    tpPrice = parseFloat(this.data.get('ticketPrice'))\n    tpValue = parseFloat(this.data.get('ticketPoolValue'))\n    tpSize = parseInt(this.data.get('ticketPoolSize'))\n    coinSupply = parseInt(this.data.get('coinSupply'))\n\n    this.defaultSettings = {\n      attack_time: 1,\n      target_pow: 100,\n      kwh_rate: 0.1,\n      other_costs: 5,\n      target_pos: 51,\n      price: dcrPrice,\n      device: 0,\n      attack_type: externalAttackType\n    }\n\n    if (this.settings.attack_time) this.attackPeriodTarget.value = parseInt(this.settings.attack_time)\n    if (this.settings.target_pow) this.targetPowTarget.value = parseFloat(this.settings.target_pow)\n    if (this.settings.kwh_rate) this.kwhRateTarget.value = parseFloat(this.settings.kwh_rate)\n    if (this.settings.other_costs) this.otherCostsTarget.value = parseFloat(this.settings.other_costs)\n    if (this.settings.target_pos) this.setAllInputs(this.targetPosTargets, parseFloat(this.settings.target_pos))\n    if (this.settings.price) this.priceDCRTarget.value = parseFloat(this.settings.price)\n    if (this.settings.device) this.setDevice(this.settings.device)\n    if (this.settings.attack_type) this.attackTypeTarget.value = this.settings.attack_type\n    if (this.settings.target_pos) this.attackPercentTarget.value = parseFloat(this.targetPosTarget.value) / 100\n\n    if (this.settings.attack_type !== internalAttackType) {\n      this.settings.attack_type = externalAttackType\n    }\n    this.setDevicesDesc()\n    this.updateSliderData()\n\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n\n    // dygraph does not provide a way to disable zoom on y-axis https://code.google.com/archive/p/dygraphs/issues/384\n    // this is a hack as doZoomY_ is marked as private\n    Dygraph.prototype.doZoomY_ = function (lowY, highY) {}\n\n    this.plotGraph()\n    this.processNightMode = (params) => {\n      this.chartsView.updateOptions(\n        nightModeOptions(params.nightMode)\n      )\n    }\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n  }\n\n  disconnect () {\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    if (this.chartsView !== undefined) {\n      this.chartsView.destroy()\n    }\n  }\n\n  plotGraph () {\n    const that = this\n    graphData = []\n    this.ratioTable = new Map()\n\n    // populate graphData\n    // to avoid javascript decimal math issue, the iteration is done over whole number and reduced to the expected decimal value within the loop\n    for (let i = 10; i <= 1000; i += 5) {\n      const y = i / 1000\n      const x = rateCalculation(y)\n      this.ratioTable.set(x, y)\n      graphData.push([y * tpSize, x])\n    }\n\n    const options = {\n      ...nightModeOptions(false),\n      labels: ['Attacker Tickets', 'Hash Power Multiplier'],\n      ylabel: 'Hash Power Multiplier',\n      xlabel: 'Attacker Tickets',\n      axes: {\n        y: {\n          axisLabelWidth: 70\n        }\n      },\n      highlightSeriesOpts: { strokeWidth: 2 },\n      legendFormatter: legendFormatter,\n      hideOverlayOnMouseOut: false,\n      labelsDiv: this.labelsTarget,\n      labelsSeparateLines: true,\n      showRangeSelector: false,\n      labelsKMB: true,\n      legend: 'always',\n      logscale: true,\n      interactionModel: {\n        click: function (e) {\n          that.attackPercentTarget.value = currentPoint.x\n          that.updateSliderData()\n        }\n      },\n      highlightCallback: function (event, x, p) {\n        currentPoint = p[0]\n      }\n    }\n\n    this.chartsView = new Dygraph(this.graphTarget, graphData, options)\n    this.chartsView.setAnnotations([{\n      series: 'Hashpower multiplier',\n      x: 0.51,\n      shortText: 'L',\n      text: '51% Attack'\n    }])\n    this.setActivePoint()\n  }\n\n  updateQueryString () {\n    const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n    for (const k in settings) {\n      if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n      query[k] = settings[k]\n    }\n    this.query.replace(query)\n  }\n\n  updateAttackTime () {\n    this.settings.attack_time = this.attackPeriodTarget.value\n    this.updateSliderData()\n  }\n\n  updateTargetPow (e) {\n    this.preserveTargetPow = true\n    const targetPercentage = parseFloat(e.currentTarget.value) / 100\n    let target = this.ratioTable.get(targetPercentage)\n    if (target === undefined) {\n      let previousKey = 0\n      let previousValue = 0\n      this.ratioTable.forEach((value, key) => {\n        if ((previousKey <= targetPercentage && targetPercentage <= key) || (previousKey >= targetPercentage && targetPercentage >= key)) {\n          const gap = Math.abs(key - targetPercentage)\n          const preGap = Math.abs(previousKey - targetPercentage)\n          if (gap < preGap) {\n            target = value\n          } else {\n            target = previousValue\n          }\n        }\n        previousKey = key\n        previousValue = value\n      })\n    }\n    this.attackPercentTarget.value = target\n    this.updateSliderData()\n  }\n\n  chooseDevice () {\n    this.settings.device = this.selectedDevice()\n    this.updateSliderData()\n  }\n\n  chooseAttackType () {\n    this.settings.attack_type = this.selectedAttackType()\n    this.updateSliderData()\n  }\n\n  updateKwhRate () {\n    this.settings.kwh_rate = this.kwhRateTarget.value\n    this.updateSliderData()\n  }\n\n  updateOtherCosts () {\n    this.settings.other_costs = this.otherCostsTarget.value\n    this.updateSliderData()\n  }\n\n  updateTargetPos (e) {\n    this.settings.target_pos = e.currentTarget.value\n    this.preserveTargetPoS = true\n    this.setAllInputs(this.targetPosTargets, e.currentTarget.value)\n    this.updateQueryString()\n    this.attackPercentTarget.value = parseFloat(this.targetPosTarget.value) / 100\n    this.updateSliderData()\n  }\n\n  updatePrice () {\n    this.settings.price = this.priceDCRTarget.value\n    dcrPrice = this.priceDCRTarget.value\n    this.updateSliderData()\n  }\n\n  selectedDevice () { return this.deviceTarget.value }\n\n  selectedAttackType () {\n    return this.attackTypeTarget.value\n  }\n\n  selectOption (options) {\n    let val = '0'\n    options.map((n) => { if (n.selected) val = n.value })\n    return val\n  }\n\n  setDevicesDesc () {\n    this.deviceDescTargets.map((n) => {\n      const info = deviceList[n.value]\n      if (!info) return\n      n.innerHTML = `${info.name} (${info.hashrate} ${info.units}, ${info.power} W, $${digitformat(info.cost)} ea.)`\n    })\n  }\n\n  setDevice (selectedVal) { return this.setOption(this.deviceTargets, selectedVal) }\n\n  setOption (options, selectedVal) {\n    options.map((n) => { n.selected = n.value === selectedVal })\n  }\n\n  setActivePoint () {\n    // Shows point whose details appear on the legend.\n    if (this.chartsView !== undefined) {\n      const val = Math.min(parseFloat(this.attackPercentTarget.value) || 0, 0.99)\n      const row = this.chartsView.getRowForX(val * tpSize)\n      this.chartsView.setSelection(row)\n    }\n  }\n\n  updateTargetHashRate () {\n    const ticketPercentage = parseFloat(this.targetPosTarget.value)\n    this.targetHashRate = hashrate * rateCalculation(ticketPercentage / 100)\n    const powPercentage = 100 * this.targetHashRate / hashrate\n    if (!this.preserveTargetPow) {\n      this.targetPowTarget.value = digitformat(powPercentage, 2, true)\n    } else {\n      this.preserveTargetPow = false\n    }\n    this.setAllValues(this.internalHashTargets, digitformat((this.targetHashRate), 4) + ' Ph/s ')\n    switch (this.settings.attack_type) {\n      case externalAttackType:\n        this.setAllValues(this.newHashRateTargets, digitformat(this.targetHashRate + hashrate, 4))\n        this.setAllValues(this.additionalHashRateTargets, digitformat(this.targetHashRate, 4))\n        this.projectedPriceDivTarget.style.display = 'block'\n        this.internalAttackTextTarget.classList.add('d-none')\n        this.internalAttackPosTextTarget.classList.add('d-none')\n        this.showAll(this.externalAttackTextTargets)\n        this.externalAttackPosTextTarget.classList.remove('d-node')\n        break\n      case internalAttackType:\n      default:\n        this.projectedPriceDivTarget.style.display = 'none'\n        this.hideAll(this.externalAttackTextTargets)\n        this.externalAttackPosTextTarget.classList.add('d-node')\n        this.internalAttackTextTarget.classList.remove('d-none')\n        this.internalAttackPosTextTarget.classList.remove('d-none')\n        break\n    }\n  }\n\n  updateSliderData () {\n    const val = Math.min(parseFloat(this.attackPercentTarget.value) || 0, 0.99)\n    // Makes PoS to be affected by the slider\n    // Target PoS value increases when slider moves to the right\n    if (!this.preserveTargetPoS) {\n      this.setAllInputs(this.targetPosTargets, val * 100)\n    } else {\n      this.preserveTargetPoS = false\n    }\n\n    this.updateTargetHashRate()\n    this.setActivePoint()\n\n    this.ticketsTarget.innerHTML = digitformat(val * tpSize) + ' tickets '\n    switch (this.settings.attack_type) {\n      case externalAttackType:\n        this.hideAll(this.internalAttackPosTextTargets)\n        this.showAll(this.externalAttackPosTextTargets)\n        break\n      case internalAttackType:\n      default:\n        this.hideAll(this.externalAttackPosTextTargets)\n        this.showAll(this.internalAttackPosTextTargets)\n    }\n\n    this.calculate(true)\n  }\n\n  calculate (disableHashRateUpdate) {\n    if (!disableHashRateUpdate) this.updateTargetHashRate()\n\n    this.updateQueryString()\n    const deviceInfo = deviceList[this.selectedDevice()]\n    const deviceCount = Math.ceil((this.targetHashRate * 1000) / deviceInfo.hashrate)\n    const totalDeviceCost = deviceCount * deviceInfo.cost\n    const totalKwh = deviceCount * deviceInfo.power * parseFloat(this.attackPeriodTarget.value) / 1000\n    const totalElectricity = totalKwh * parseFloat(this.kwhRateTarget.value)\n    const extraCost = parseFloat(this.otherCostsTarget.value) / 100 * (totalDeviceCost + totalElectricity)\n    const totalPow = extraCost + totalDeviceCost + totalElectricity\n    let ticketAttackSize, DCRNeed\n    if (this.settings.attack_type === externalAttackType) {\n      DCRNeed = tpValue / (1 - parseFloat(this.targetPosTarget.value) / 100)\n      this.setAllValues(this.newTicketPoolValueTargets, digitformat(DCRNeed, 2))\n      this.setAllValues(this.additionalDcrTargets, digitformat(DCRNeed - tpValue, 2))\n    } else {\n      ticketAttackSize = (tpSize * parseFloat(this.targetPosTarget.value)) / 100\n      DCRNeed = tpValue * (parseFloat(this.targetPosTarget.value) / 100)\n      this.setAllValues(this.ticketPoolAttackTargets, digitformat(DCRNeed))\n    }\n    const projectedTicketPrice = DCRNeed / tpSize\n    this.projectedTicketPriceIncreaseTarget.innerHTML = digitformat(100 * Math.abs(projectedTicketPrice - tpPrice) / tpPrice, 2)\n    this.projectedTicketPriceSignTarget.innerHTML = projectedTicketPrice > tpPrice ? 'increase' : 'decrease'\n    this.ticketPoolValueTarget.innerHTML = digitformat(hashrate, 3)\n    const totalDCRPos = this.settings.attack_type === externalAttackType ? DCRNeed - tpValue : ticketAttackSize * projectedTicketPrice\n    const totalPos = totalDCRPos * dcrPrice\n    const timeStr = this.attackPeriodTarget.value\n    const hourStr = timeStr > 1 ? 'hours' : 'hour'\n    const timeHourStr = timeStr + ' ' + hourStr\n    const devicePronounStr = deviceCount > 1 ? 'them' : 'it'\n    const deviceSuffixStr = deviceCount > 1 ? 's' : ''\n    this.ticketPoolSizeLabelTarget.innerHTML = humanize.commaWithDecimal(tpSize, 0)\n    this.setAllValues(this.actualHashRateTargets, digitformat(hashrate, 4))\n    this.priceDCRTarget.value = dcrPrice.toFixed(2)\n    this.setAllInputs(this.targetPosTargets, parseFloat(this.targetPosTarget.value).toFixed(2))\n    this.ticketPriceTarget.innerHTML = digitformat(tpPrice, 4)\n    this.setAllValues(this.targetHashRateTargets, digitformat(this.targetHashRate, 4))\n    this.setAllValues(this.additionalHashRateTargets, digitformat(this.targetHashRate, 4))\n    this.durationUnitTarget.innerHTML = hourStr\n    this.setAllValues(this.durationLongDescTargets, timeHourStr)\n    this.setAllValues(this.countDeviceTargets, digitformat(deviceCount))\n    this.devicePronounTarget.innerHTML = devicePronounStr\n    this.deviceSuffixTarget.innerHTML = deviceSuffixStr\n    this.setAllValues(this.deviceNameTargets, `<a href=\"${deviceInfo.link}\">${deviceInfo.name}</a>${deviceSuffixStr}`)\n    this.setAllValues(this.totalDeviceCostTargets, digitformat(totalDeviceCost))\n    this.setAllValues(this.totalKwhTargets, digitformat(totalKwh, 2))\n    this.setAllValues(this.totalElectricityTargets, digitformat(totalElectricity, 2))\n    this.setAllValues(this.otherCostsValueTargets, digitformat(extraCost, 2))\n    this.setAllValues(this.totalPowTargets, digitformat(totalPow, 2))\n    this.setAllValues(this.ticketSizeAttackTargets, digitformat(ticketAttackSize))\n    this.setAllValues(this.totalDCRPosTargets, digitformat(totalDCRPos, 2))\n    this.setAllValues(this.totalPosTargets, digitformat(totalPos))\n    this.setAllValues(this.ticketPoolValueTargets, digitformat(tpValue))\n    this.setAllValues(this.ticketPoolSizeTargets, digitformat(tpSize))\n    this.blockHeightTarget.innerHTML = height\n    this.totalTarget.innerHTML = digitformat(totalPow + totalPos, 2)\n    this.projectedTicketPriceTarget.innerHTML = digitformat(projectedTicketPrice, 2)\n    // this.attackPosPercentNeededLabelTarget.innerHTML = digitformat(this.targetPosTarget.value, 2)\n    this.attackPosPercentAmountLabelTarget.innerHTML = digitformat(this.targetPosTarget.value, 2)\n    this.setAllValues(this.totalDCRPosLabelTargets, digitformat(totalDCRPos, 2))\n    this.setAllValues(this.dcrPriceLabelTargets, digitformat(dcrPrice, 2))\n    this.showPosCostWarning(DCRNeed)\n  }\n\n  setAllValues (targets, data) {\n    targets.forEach((n) => { n.innerHTML = data })\n  }\n\n  setAllInputs (targets, data) {\n    targets.forEach((n) => { n.value = data })\n  }\n\n  hideAll (targets) {\n    targets.forEach(el => el.classList.add('d-none'))\n  }\n\n  showAll (targets) {\n    targets.forEach(el => el.classList.remove('d-none'))\n  }\n\n  showPosCostWarning (DCRNeed) {\n    const totalDCRInCirculation = coinSupply / 100000000\n    if (DCRNeed > totalDCRInCirculation) {\n      this.coinSupplyTarget.textContent = digitformat(totalDCRInCirculation, 2)\n      this.totalAttackCostContainerTarget.style.cssText = 'color: #f12222 !important'\n      this.showAll(this.attackNotPossibleWrapperDivTargets)\n    } else {\n      this.totalAttackCostContainerTarget.style.cssText = 'color: #6c757d !important'\n      this.hideAll(this.attackNotPossibleWrapperDivTargets)\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['tooltip']\n  }\n\n  connect () {\n    this.setupTooltips()\n  }\n\n  setupTooltips () {\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.object === 'Vote') {\n          newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n        } else {\n          newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n        }\n\n        if (data.vin && data.vout) {\n          newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n        }\n\n        tooltipElement.title = newContent\n      } catch (error) {}\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport humanize from '../helpers/humanize_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport Url from 'url-parse'\n\nconst conversionRate = 100000000\n\nfunction newBlockHtmlElement (block) {\n  let rewardTxId\n  for (const tx of block.Transactions) {\n    if (tx.Coinbase) {\n      rewardTxId = tx.TxID\n      break\n    }\n  }\n\n  return `<div class=\"block visible\">\n                <div class=\"block-rows\">\n                    ${makeRewardsElement(block.Subsidy, block.MiningFee, block.Votes.length, rewardTxId)}\n                    ${makeVoteElements(block.Votes)}\n                    ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, `/block/${block.Height}`)}\n                    ${makeTransactionElements(block.Transactions, `/block/${block.Height}`)}\n                </div>\n            </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n  let totalDCR = 0\n  const transactionElements = []\n  if (transactions) {\n    for (let i = 0; i < transactions.length; i++) {\n      const tx = transactions[i]\n      totalDCR += tx.Total\n      transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n    }\n  }\n\n  if (transactionElements.length > 50) {\n    const total = transactionElements.length\n    transactionElements.splice(30)\n    transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n                                    <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                                </span>`)\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n                ${transactionElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n  let totalDCR = 0\n  const ticketElements = []\n  const revCount = revocations ? revocations.length : 0\n  const ticketCount = tickets ? tickets.length : 0\n  if (tickets) {\n    for (let i = 0; i < tickets.length; i++) {\n      const ticket = tickets[i]\n      totalDCR += ticket.Total\n      ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n    }\n  }\n  if (ticketElements.length > 50) {\n    const total = ticketElements.length\n    ticketElements.splice(30)\n    ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n                                <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                            </span>`)\n  }\n  const revocationElements = []\n  if (revCount > 0) {\n    for (let i = 0; i < revCount; i++) {\n      const revocation = revocations[i]\n      totalDCR += revocation.Total\n      revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n    }\n  }\n\n  const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n  // append empty squares to tickets+revs\n  for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n    ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${ticketsAndRevocationElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n  // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n  const style = []\n  if (appendFlexGrow) {\n    style.push(`flex-grow: ${Math.round(tx.Total)}`)\n  }\n\n  return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-blocklist-target=\"tooltip\"\n                title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n                <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n            </span>`\n}\n\nfunction makeVoteElements (votes) {\n  let totalDCR = 0\n  const voteLen = votes ? votes.length : 0\n  const voteElements = []\n  if (voteLen > 0) {\n    for (let i = 0; i < voteLen - 1; i++) {\n      const vote = votes[i]\n      totalDCR += vote.Total\n      voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-blocklist-target=\"tooltip\"\n                        title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n                        <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n                    </span>`)\n    }\n  }\n  // append empty squares to votes\n  for (let i = voteElements.length; i < 5; i++) {\n    voteElements.push('<span title=\"Empty vote slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${voteElements.join('\\n')}\n            </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n  if (!subsidy) {\n    return `<div class=\"block-rewards px-1 mt-1\">\n                    <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n                </div>`\n  }\n\n  const pow = subsidy.pow / conversionRate\n  const pos = subsidy.pos / conversionRate\n  const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n  const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n  // const totalDCR = Math.round(pow + fund + fee);\n  const totalDCR = 1\n  return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n  <span class=\"pow\" style=\"flex-grow: ${pow}\" data-blocklist-target=\"tooltip\"\n      title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n      <span class=\"block-element-link\">\n          <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n      </span>\n  </span>\n  <span class=\"pos\" style=\"flex-grow: ${pos}\" data-blocklist-target=\"tooltip\"\n      title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n      <span class=\"block-element-link\">\n          <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n      </span>\n  </span>\n  <span class=\"fund\" style=\"flex-grow: ${fund}\" data-blocklist-target=\"tooltip\"\n      title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n      <span class=\"block-element-link\">\n          <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n      </span>\n  </span>\n  <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-blocklist-target=\"tooltip\"\n      title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n      <span class=\"block-element-link\"></span>\n  </span>\n</div>`\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['table', 'txColHeader', 'voteColHeader', 'ticketColHeader', 'revColHeader',\n      'txColData', 'voteColData', 'ticketColData', 'revColData', 'vsBlocksHeader',\n      'vsSimulData', 'block', 'tooltip', 'txs', 'navLink', 'vsDescription']\n  }\n\n  async initialize () {\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate(['vsdisp'])\n\n    this.defaultSettings = {\n      vsdisp: false\n    }\n    // if isn't decred blocks page, ignore\n    if (!window.location.href.includes('/decred')) {\n      return\n    }\n    this.query.update(this.settings)\n    this.settings.vsdisp = this.settings.vsdisp === true || this.settings.vsdisp === 'true'\n    document.getElementById('vsBlocksToggle').checked = this.settings.vsdisp\n  }\n\n  connect () {\n    this.processBlock = this._processBlock.bind(this)\n    globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n    this.pageOffset = this.data.get('initialOffset')\n    // if isn't decred blocks page, ignore\n    if (!window.location.href.includes('/decred')) {\n      return\n    }\n    this.initTableColumn()\n    this.setupTooltips()\n  }\n\n  showVisualBlocks () {\n    this.settings.vsdisp = !this.settings.vsdisp\n    document.getElementById('vsBlocksToggle').checked = this.settings.vsdisp\n    this.updateQueryString()\n    this.updateVsHrefLink()\n    this.initTableColumn()\n  }\n\n  updateVsHrefLink () {\n    this.navLinkTargets.forEach((navLinkTarget) => {\n      if (!navLinkTarget.href || navLinkTarget.href === '') {\n        return\n      }\n      if (this.settings.vsdisp) {\n        if (!navLinkTarget.href.includes('vsdisp')) {\n          navLinkTarget.href = navLinkTarget.href + '&vsdisp=true'\n        } else if (navLinkTarget.href.includes('vsdisp=false')) {\n          navLinkTarget.href = navLinkTarget.href.replace('vsdisp=false', 'vsdisp=true')\n        }\n      } else {\n        if (navLinkTarget.href && navLinkTarget.href.includes('vsdisp=true')) {\n          if (navLinkTarget.href.includes('?vsdisp=true&')) {\n            navLinkTarget.href = navLinkTarget.href.replace('vsdisp=true&', '')\n          } else if (navLinkTarget.href.includes('&vsdisp=true')) {\n            navLinkTarget.href = navLinkTarget.href.replace('&vsdisp=true', '')\n          }\n        }\n      }\n    })\n  }\n\n  initTableColumn () {\n    if (this.settings.vsdisp) {\n      this.txColHeaderTarget.classList.add('d-none-i')\n      this.voteColHeaderTarget.classList.add('d-none-i')\n      this.ticketColHeaderTarget.classList.add('d-none-i')\n      this.revColHeaderTarget.classList.add('d-none-i')\n      this.vsBlocksHeaderTarget.classList.remove('d-none-i')\n      this.vsDescriptionTarget.classList.remove('d-none')\n\n      this.txColDataTargets.forEach((txColDataTarget) => {\n        txColDataTarget.classList.add('d-none-i')\n      })\n      this.voteColDataTargets.forEach((voteColDataTarget) => {\n        voteColDataTarget.classList.add('d-none-i')\n      })\n      this.ticketColDataTargets.forEach((ticketColDataTarget) => {\n        ticketColDataTarget.classList.add('d-none-i')\n      })\n      this.revColDataTargets.forEach((revColDataTarget) => {\n        revColDataTarget.classList.add('d-none-i')\n      })\n      this.vsSimulDataTargets.forEach((vsSimulDataTarget) => {\n        vsSimulDataTarget.classList.remove('d-none-i')\n      })\n    } else {\n      this.txColHeaderTarget.classList.remove('d-none-i')\n      this.voteColHeaderTarget.classList.remove('d-none-i')\n      this.ticketColHeaderTarget.classList.remove('d-none-i')\n      this.revColHeaderTarget.classList.remove('d-none-i')\n      this.vsBlocksHeaderTarget.classList.add('d-none-i')\n      this.vsDescriptionTarget.classList.add('d-none')\n\n      this.txColDataTargets.forEach((txColDataTarget) => {\n        txColDataTarget.classList.remove('d-none-i')\n      })\n      this.voteColDataTargets.forEach((voteColDataTarget) => {\n        voteColDataTarget.classList.remove('d-none-i')\n      })\n      this.ticketColDataTargets.forEach((ticketColDataTarget) => {\n        ticketColDataTarget.classList.remove('d-none-i')\n      })\n      this.revColDataTargets.forEach((revColDataTarget) => {\n        revColDataTarget.classList.remove('d-none-i')\n      })\n      this.vsSimulDataTargets.forEach((vsSimulDataTarget) => {\n        vsSimulDataTarget.classList.add('d-none-i')\n      })\n    }\n  }\n\n  setupTooltips () {\n    // check for empty tx rows and set custom tooltip\n    this.txsTargets.forEach((div) => {\n      if (div.childeElementCount === 0) {\n        div.title = 'No regular transaction in block'\n      }\n    })\n\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.object === 'Vote') {\n          newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n        } else {\n          newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n        }\n\n        if (data.vin && data.vout) {\n          newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n        }\n\n        tooltipElement.title = newContent\n      } catch (error) {}\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n\n  disconnect () {\n    globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n  }\n\n  _processBlock (blockData) {\n    if (!this.hasTableTarget) return\n    const block = blockData.block\n    // Grab a copy of the first row.\n    const rows = this.tableTarget.querySelectorAll('tr')\n    if (rows.length === 0) return\n    const tr = rows[0]\n    const lastHeight = parseInt(tr.dataset.height)\n    // Make sure this block belongs on the top of this table.\n    if (block.height === lastHeight) {\n      this.tableTarget.removeChild(tr)\n    } else if (block.height === lastHeight + 1) {\n      this.tableTarget.removeChild(rows[rows.length - 1])\n    } else return\n    // Set the td contents based on the order of the existing row.\n    const newRow = document.createElement('tr')\n    newRow.dataset.height = block.height\n    newRow.dataset.linkClass = tr.dataset.linkClass\n    const tds = tr.querySelectorAll('td')\n    const _this = this\n    tds.forEach((td) => {\n      const newTd = document.createElement('td')\n      newTd.className = td.className\n      const dataType = td.dataset.type\n      newTd.dataset.type = dataType\n      switch (dataType) {\n        case 'age':\n          newTd.dataset.age = block.unixStamp\n          newTd.dataset.timeTarget = 'age'\n          newTd.textContent = humanize.timeSince(block.unixStamp)\n          break\n        case 'height': {\n          const link = document.createElement('a')\n          link.href = `/block/${block.height}`\n          link.textContent = block.height\n          link.classList.add(tr.dataset.linkClass)\n          newTd.appendChild(link)\n          break\n        }\n        case 'size':\n          newTd.textContent = humanize.bytes(block.size)\n          break\n        case 'value':\n          newTd.textContent = humanize.threeSigFigs(block.TotalSent)\n          break\n        case 'time':\n          newTd.textContent = humanize.date(block.time, false)\n          break\n        case 'vssimulation':\n          newTd.innerHTML = _this.createNewVsBlock(block)\n          break\n        default:\n          newTd.textContent = block[dataType]\n      }\n      newRow.appendChild(newTd)\n    })\n    this.tableTarget.insertBefore(newRow, this.tableTarget.firstChild)\n    this.setupTooltips()\n  }\n\n  createNewVsBlock (block) {\n    // show only regular tx in block.Transactions, exclude coinbase (reward) transactions\n    const transactions = block.Tx.filter(tx => !tx.Coinbase)\n    // trim unwanted data in this block\n    const trimmedBlockInfo = {\n      Time: block.time,\n      Height: block.height,\n      Total: block.TotalSent,\n      MiningFee: block.MiningFee,\n      Subsidy: block.Subsidy,\n      Votes: block.Votes,\n      Tickets: block.Tickets,\n      Revocations: block.Revs,\n      Transactions: transactions\n    }\n    return newBlockHtmlElement(trimmedBlockInfo)\n  }\n\n  updateQueryString () {\n    const url = Url(window.location.href)\n    const q = Url.qs.parse(url.query)\n    for (const k in this.settings) {\n      q[k] = this.settings[k]\n    }\n    const [query, settings, defaults] = [{}, q, this.defaultSettings]\n    for (const k in settings) {\n      if (!settings[k] || (defaults[k] && settings[k].toString() === defaults[k].toString())) continue\n      query[k] = settings[k]\n    }\n    this.query.replace(query)\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport * as Plotly from 'plotly.js-dist-min'\nimport humanize from '../helpers/humanize_helper'\n\nconst pairList = ['btc_usdc.eth', 'btc_usdt.polygon', 'dcr_btc', 'dcr_ltc', 'dcr_polygon', 'dcr_usdc.eth',\n  'dcr_usdc.polygon', 'dcr_usdt.polygon', 'dgb_btc', 'dgb_usdt.polygon', 'doge_btc', 'eth_btc', 'ltc_btc',\n  'ltc_usdt.polygon', 'usdc.polygon_usdt.polygon', 'zec_btc', 'zec_usdc.eth', 'zec_usdt.polygon'\n]\n\nconst pairColor = ['#690e20', '#38b6ba', '#0f103f', '#2fc399', '#289f87', '#434c9a', '#1c5863', '#153451',\n  '#3169e1', '#82ae14', '#92780b', '#92510b', '#3ca2ca', '#34cbaa', '#227b75', '#408ddb', '#75cda1', '#cd759e'\n]\nexport default class extends Controller {\n  static get targets () {\n    return ['todayStr', 'todayData', 'monthlyStr', 'currentMonthData', 'prevMonthStr', 'prevMonthData',\n      'last90DaysData', 'last6MonthsData', 'lastYearData', 'prevMonthBreakdown', 'curMonthBreakdown',\n      'pageLoader']\n  }\n\n  async connect () {\n    this.pageLoaderTarget.classList.add('loading')\n    const _this = this\n    this.hasData = []\n    this.chartData = []\n    this.weekChartData = []\n    this.dailyChartData = []\n    const selectorOptions = {\n      buttons: [{\n        step: 'month',\n        stepmode: 'backward',\n        count: 6,\n        label: '6m'\n      }, {\n        step: 'month',\n        stepmode: 'backward',\n        count: 12,\n        label: '12m'\n      }, {\n        step: 'month',\n        stepmode: 'backward',\n        count: 24,\n        label: '24m'\n      }, {\n        step: 'all',\n        label: 'all'\n      }]\n    }\n    const dailySelectorOptions = {\n      buttons: [{\n        step: 'day',\n        stepmode: 'backward',\n        count: 7,\n        label: '7d'\n      }, {\n        step: 'day',\n        stepmode: 'backward',\n        count: 30,\n        label: '30d'\n      }, {\n        step: 'day',\n        stepmode: 'backward',\n        count: 90,\n        label: '90d'\n      }, {\n        step: 'all',\n        label: 'all'\n      }]\n    }\n    this.layout = {\n      barmode: 'stack',\n      showlegend: true,\n      xaxis: {\n        rangeselector: selectorOptions,\n        rangeslider: { visible: false }\n      },\n      legend: { orientation: 'h', xanchor: 'center', x: 0.5, traceorder: 'normal' }\n    }\n    this.dailyLayout = {\n      barmode: 'stack',\n      showlegend: true,\n      xaxis: {\n        rangeselector: dailySelectorOptions,\n        rangeslider: { visible: false }\n      },\n      legend: { orientation: 'h', xanchor: 'center', x: 0.5, traceorder: 'normal' }\n    }\n    // check currency pair with data\n    this.dailyData = await this.fetchCsvDataFromUrl()\n    const monthlyData = this.groupMonthlyData(this.dailyData)\n    // weekly data\n    const weeklyData = this.groupWeeklyData(this.dailyData)\n    // calculate sum for all row of daily data\n    for (let i = 0; i < this.dailyData.length; i++) {\n      const sumOfRow = this.sumVolOfBwRow(this.dailyData[i])\n      this.dailyData[i].push(sumOfRow)\n    }\n    // today data\n    const lastDayData = this.dailyData[this.dailyData.length - 1]\n    const lastDayArr = lastDayData[0].split('-')\n    const lastMonthName = this.getMonthName(lastDayArr[1])\n    this.todayStrTarget.textContent = lastMonthName + ' ' + lastDayArr[2] + ', ' + lastDayArr[0]\n    this.todayDataTarget.innerHTML = '$' + humanize.decimalParts(lastDayData[lastDayData.length - 1], true, 0, 0)\n    const lastMonthData = monthlyData[monthlyData.length - 1]\n    const prevMonthData = monthlyData[monthlyData.length - 2]\n    // current month data\n    this.monthlyStrTarget.textContent = lastMonthName + ' ' + lastDayArr[0]\n    this.curMonthBreakdownTarget.textContent = lastMonthName + ' ' + lastDayArr[0]\n    this.currentMonthDataTarget.innerHTML = '$' + humanize.decimalParts(lastMonthData[lastMonthData.length - 1], true, 0, 0)\n    // prev month data\n    const prevMonthArr = prevMonthData[0].split('-')\n    const prevMonthName = this.getMonthName(prevMonthArr[1])\n    this.prevMonthStrTarget.textContent = prevMonthName + ' ' + prevMonthArr[0]\n    this.prevMonthBreakdownTarget.textContent = prevMonthName + ' ' + prevMonthArr[0]\n    this.prevMonthDataTarget.innerHTML = '$' + humanize.decimalParts(prevMonthData[prevMonthData.length - 1], true, 0, 0)\n    // last 90 days data\n    let last90daysSum = 0\n    for (let i = this.dailyData.length - 1; i >= this.dailyData.length - 90; i--) {\n      const itemData = this.dailyData[i]\n      last90daysSum += Number(itemData[itemData.length - 1])\n    }\n    this.last90DaysDataTarget.innerHTML = '$' + humanize.decimalParts(last90daysSum, true, 0, 0)\n    // last 6 months data\n    let last6MonthsSum = 0\n    for (let i = monthlyData.length - 1; i >= monthlyData.length - 6; i--) {\n      const itemData = monthlyData[i]\n      last6MonthsSum += Number(itemData[itemData.length - 1])\n    }\n    this.last6MonthsDataTarget.innerHTML = '$' + humanize.decimalParts(last6MonthsSum, true, 0, 0)\n    // last year data (52 weeks)\n    let lastYearSum = 0\n    for (let i = weeklyData.length - 1; i >= weeklyData.length - 51; i--) {\n      const itemData = weeklyData[i]\n      lastYearSum += Number(itemData[itemData.length - 1])\n    }\n    this.lastYearDataTarget.innerHTML = '$' + humanize.decimalParts(lastYearSum, true, 0, 0)\n    pairList.forEach((pair, index) => {\n      let hasDataBool = false\n      monthlyData.forEach((item) => {\n        const volValue = Number(item[index + 1])\n        if (volValue > 0 && hasDataBool === false) {\n          hasDataBool = true\n        }\n      })\n      _this.hasData.push(hasDataBool)\n    })\n    const curPercentArr = []\n    const curLabels = []\n    const curColors = []\n    const prevPercentArr = []\n    const prevLabels = []\n    const prevColors = []\n    // init chart data\n    pairList.forEach((pair, index) => {\n      if (this.hasData[index]) {\n        // init for monthly vol bar chart\n        const xLabel = []\n        const yLabel = []\n        let sum = 0\n        monthlyData.forEach((item) => {\n          xLabel.push(item[0])\n          const itemValue = Number(item[index + 1])\n          yLabel.push(itemValue)\n          sum += itemValue\n        })\n        _this.chartData.push({\n          x: xLabel,\n          y: yLabel,\n          name: pair,\n          marker: {\n            color: pairColor[index],\n            width: 1\n          },\n          type: 'bar',\n          total: sum\n        })\n        // init for weekly vol bar chart\n        const xWeekLabel = []\n        const yWeekLabel = []\n        let weeklySum = 0\n        weeklyData.forEach((item) => {\n          xWeekLabel.push(item[0])\n          const itemValue = Number(item[index + 1])\n          yWeekLabel.push(itemValue)\n          weeklySum += itemValue\n        })\n        _this.weekChartData.push({\n          x: xWeekLabel,\n          y: yWeekLabel,\n          name: pair,\n          marker: {\n            color: pairColor[index],\n            width: 1\n          },\n          type: 'bar',\n          total: weeklySum\n        })\n        // init for daily vol bar chart\n        const xDailyLabel = []\n        const yDailyLabel = []\n        let dailySum = 0\n        _this.dailyData.forEach((item) => {\n          xDailyLabel.push(item[0])\n          const itemValue = Number(item[index + 1])\n          yDailyLabel.push(itemValue)\n          dailySum += itemValue\n        })\n        _this.dailyChartData.push({\n          x: xDailyLabel,\n          y: yDailyLabel,\n          name: pair,\n          marker: {\n            color: pairColor[index],\n            width: 1\n          },\n          type: 'bar',\n          total: dailySum\n        })\n        // init for current month breakdown\n        const curValueFloat = Number(lastMonthData[index + 1])\n        if (curValueFloat > 0) {\n          curLabels.push(pair)\n          curPercentArr.push(curValueFloat)\n          curColors.push(pairColor[index])\n        }\n        // init for current month breakdown\n        const prevValueFloat = Number(prevMonthData[index + 1])\n        if (prevValueFloat > 0) {\n          prevLabels.push(pair)\n          prevPercentArr.push(prevValueFloat)\n          prevColors.push(pairColor[index])\n        }\n      }\n    })\n    const curBreakdownChartData = [{\n      values: curPercentArr,\n      labels: curLabels,\n      marker: {\n        colors: curColors\n      },\n      type: 'pie'\n    }]\n    const prevBreakdownChartData = [{\n      values: prevPercentArr,\n      labels: prevLabels,\n      marker: {\n        colors: prevColors\n      },\n      type: 'pie'\n    }]\n    // sort monthly trading volume chart data\n    this.chartData.sort(function (a, b) {\n      return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n    })\n    // sort weekly trading volume chart data\n    this.weekChartData.sort(function (a, b) {\n      return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n    })\n    // sort daily trading volume chart data\n    this.dailyChartData.sort(function (a, b) {\n      return a.total === b.total ? 0 : (a.total > b.total ? -1 : 1)\n    })\n    const pieLayout = {\n      legend: { orientation: 'h', xanchor: 'center', x: 0.5 }\n    }\n    Plotly.newPlot('monthlyTradingVolume', this.chartData, this.layout)\n    Plotly.newPlot('weeklyTradingVolume', this.weekChartData, this.layout)\n    Plotly.newPlot('dailyTradingVolume', this.dailyChartData, this.dailyLayout)\n    Plotly.newPlot('curMonthBreakdownChart', curBreakdownChartData, pieLayout)\n    Plotly.newPlot('prevMonthBreakdownChart', prevBreakdownChartData, pieLayout)\n    this.pageLoaderTarget.classList.remove('loading')\n  }\n\n  getMonthName (monthNumStr) {\n    const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n    const monthNum = this.getMonthNumber(monthNumStr)\n    return monthNames[monthNum - 1]\n  }\n\n  getMonthNumber (monthStr) {\n    if (monthStr.startsWith('0')) {\n      return Number(monthStr.replaceAll('0', ''))\n    }\n    return Number(monthStr)\n  }\n\n  async fetchCsvDataFromUrl () {\n    const data = await this.getCsvContent()\n    const csvData = []\n    const jsonObject = data.split(/\\r?\\n|\\r/)\n    if (jsonObject.length < 2) {\n      return csvData\n    }\n    // Skip first header line\n    for (let i = 1; i < jsonObject.length; i++) {\n      if (jsonObject[i] === '' || jsonObject[i].trim() === '') {\n        continue\n      }\n      csvData.push(jsonObject[i].split(','))\n    }\n    return csvData\n  }\n\n  async getCsvContent () {\n    return $.ajax({\n      url: 'https://raw.githubusercontent.com/bochinchero/dcrsnapcsv/main/data/stream/dex_decred_org_VolUSD.csv',\n      type: 'get',\n      dataType: 'text'\n    })\n      .then(function (res) {\n        return res\n      })\n  }\n\n  groupWeeklyData (records) {\n    const res = []\n    let curWeekData = []\n    let curWeekDataNum = []\n    let lastTime\n    records.forEach((record) => {\n      if (record.length < 1 || record[0].trim() === '') {\n        return\n      }\n      const dateRec = new Date(record[0])\n      if (dateRec.getTime() <= 0) {\n        return\n      }\n      const weekDayNum = dateRec.getDay()\n      if (curWeekDataNum.length === 0) {\n        for (let i = 1; i < record.length; i++) {\n          const recordFloat = Number(record[i])\n          curWeekDataNum.push(recordFloat)\n        }\n      } else {\n        for (let i = 1; i < record.length; i++) {\n          const recordFloat = Number(record[i])\n          curWeekDataNum[i - 1] += recordFloat\n        }\n      }\n      // if weekday is Monday\n      if (weekDayNum === 1) {\n        curWeekData.push(record[0])\n        let sum = 0\n        curWeekDataNum.forEach((dataNum) => {\n          curWeekData.push(dataNum + '')\n          sum += dataNum\n        })\n        curWeekData.push(sum + '')\n        res.push(curWeekData)\n        curWeekData = []\n        curWeekDataNum = []\n      }\n      lastTime = dateRec\n    })\n    if (curWeekDataNum.length > 0) {\n      // check nearest week\n      for (let i = 0; i < 7; i++) {\n        const nextDayInt = lastTime.setDate(lastTime.getDate() + i)\n        const nextDay = new Date(nextDayInt)\n        if (nextDay.getDay() === 1) {\n          curWeekData.push(humanize.date(nextDay, false, true))\n          let sum = 0\n          curWeekDataNum.forEach((dataNum) => {\n            curWeekData.push(dataNum + '')\n            sum += dataNum\n          })\n          curWeekData.push(sum + '')\n          res.push(curWeekData)\n          break\n        }\n      }\n    }\n    return res\n  }\n\n  groupMonthlyData (records) {\n    let currentMonth = ''\n    let currentYear = ''\n    const res = []\n    let curMonthData = []\n    records.forEach((record, index) => {\n      const dateArray = record[0].split('-')\n      if (currentMonth === '') {\n        currentYear = dateArray[0]\n        currentMonth = dateArray[1]\n        curMonthData.push(dateArray[0] + '-' + dateArray[1])\n        for (let i = 1; i < record.length; i++) {\n          curMonthData.push(record[i])\n        }\n      } else if (dateArray[0] !== currentYear || dateArray[1] !== currentMonth) {\n        currentYear = dateArray[0]\n        currentMonth = dateArray[1]\n        res.push(curMonthData)\n        curMonthData = []\n        curMonthData.push(dateArray[0] + '-' + dateArray[1])\n        for (let i = 1; i < record.length; i++) {\n          curMonthData.push(record[i])\n        }\n      } else {\n        for (let i = 1; i < record.length; i++) {\n          const curFloat = Number(curMonthData[i])\n          const recordFloat = Number(record[i])\n          curMonthData[i] = (curFloat + recordFloat) + ''\n        }\n      }\n      if (index === records.length - 1) {\n        res.push(curMonthData)\n      }\n    })\n    const _this = this\n    res.forEach((resItem, index) => {\n      const sum = _this.sumVolOfBwRow(resItem)\n      resItem.push(sum + '')\n      res[index] = resItem\n    })\n    return res\n  }\n\n  sumVolOfBwRow (row) {\n    let sum = 0\n    row.forEach((value, index) => {\n      if (index > 0) {\n        const floatValue = Number(value)\n        sum += floatValue\n      }\n    })\n    return sum\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { getDefault } from '../helpers/module_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport txInBlock from '../helpers/block_helper.js'\nimport { fadeIn, animationFrame } from '../helpers/animation_helper.js'\nimport { requestJSON } from '../helpers/http.js'\n\nconst maxAddrRows = 160\nfunction setTxnCountText (el, count) {\n  if (el.dataset.formatted) {\n    el.textContent = count + ' transaction' + (count > 1 ? 's' : '')\n  } else {\n    el.textContent = count\n  }\n}\n\nlet ctrl = null\n\nexport default class extends Controller {\n  static get targets () {\n    return ['addr', 'balance',\n      'numUnconfirmed',\n      'pagesize', 'txntype', 'txnCount', 'qricon', 'qrimg', 'qrbox',\n      'paginator', 'pageplus', 'pageminus', 'listbox', 'table',\n      'range', 'noconfirms', 'pagebuttons',\n      'pending', 'hash', 'matchhash', 'view', 'listLoader',\n      'tablePagination', 'paginationheader']\n  }\n\n  async connect () {\n    ctrl = this\n    ctrl.retrievedData = {}\n    ctrl.ajaxing = false\n    ctrl.qrCode = false\n    ctrl.requestedChart = false\n    ctrl.lastEnd = 0\n    ctrl.confirmMempoolTxs = ctrl._confirmMempoolTxs.bind(ctrl)\n    ctrl.bindElements()\n    ctrl.bindEvents()\n    ctrl.query = new TurboQuery()\n\n    // These two are templates for query parameter sets.\n    // When url query parameters are set, these will also be updated.\n    const settings = ctrl.settings = TurboQuery.nullTemplate(['n', 'start', 'txntype', 'time'])\n    ctrl.state = Object.assign({}, settings)\n    // Parse stimulus data\n    const cdata = ctrl.data\n    ctrl.dcrAddress = cdata.get('dcraddress')\n    ctrl.chainType = cdata.get('chainType')\n    ctrl.paginationParams = {\n      offset: parseInt(cdata.get('offset')),\n      count: parseInt(cdata.get('txnCount'))\n    }\n    ctrl.balance = cdata.get('balance')\n\n    // Get initial view settings from the url\n    ctrl.query.update(settings)\n    this.time = settings.time\n  }\n\n  disconnect () {\n    globalEventBus.off('BLOCK_RECEIVED', this.confirmMempoolTxs)\n    this.retrievedData = {}\n  }\n\n  bindElements () {\n    this.pageSizeOptions = this.hasPagesizeTarget ? this.pagesizeTarget.querySelectorAll('option') : []\n  }\n\n  bindEvents () {\n    globalEventBus.on('BLOCK_RECEIVED', this.confirmMempoolTxs)\n    ctrl.paginatorTargets.forEach((link) => {\n      link.addEventListener('click', (e) => {\n        e.preventDefault()\n      })\n    })\n  }\n\n  async showQRCode () {\n    this.qrboxTarget.classList.remove('d-hide')\n    if (this.qrCode) {\n      await fadeIn(this.qrimgTarget)\n    } else {\n      const QRCode = await getDefault(\n        import(/* webpackChunkName: \"qrcode\" */ 'qrcode')\n      )\n      const qrCodeImg = await QRCode.toDataURL(this.dcrAddress,\n        {\n          errorCorrectionLevel: 'H',\n          scale: 6,\n          margin: 0\n        }\n      )\n      this.qrimgTarget.innerHTML = `<img src=\"${qrCodeImg}\"/>`\n      await fadeIn(this.qrimgTarget)\n      if (this.graph) this.graph.resize()\n    }\n    this.qriconTarget.classList.add('d-hide')\n  }\n\n  async hideQRCode () {\n    this.qriconTarget.classList.remove('d-hide')\n    this.qrboxTarget.classList.add('d-hide')\n    this.qrimgTarget.style.opacity = 0\n    await animationFrame()\n  }\n\n  makeTableUrl (txType, count, offset, time) {\n    const root = `chain/${this.chainType}/addresstable/${this.dcrAddress}`\n    return `/${root}?txntype=${txType}&n=${count}&start=${offset}${time && time !== '' ? '&time=' + time : ''}`\n  }\n\n  changePageSize () {\n    this.fetchTableWithPeriod(this.txnType, this.pageSize, this.paginationParams.offset, this.time)\n  }\n\n  changeTxType () {\n    this.fetchTableWithPeriod(this.txnType, this.pageSize, 0, this.time)\n  }\n\n  nextPage () {\n    this.toPage(1)\n  }\n\n  prevPage () {\n    this.toPage(-1)\n  }\n\n  pageNumberLink (e) {\n    e.preventDefault()\n    const url = e.target.href\n    const parser = new URL(url)\n    const start = parser.searchParams.get('start')\n    const pagesize = parser.searchParams.get('n')\n    const txntype = parser.searchParams.get('txntype')\n    const time = parser.searchParams.get('time')\n    this.time = time\n    this.fetchTableWithPeriod(txntype, pagesize, start, time)\n  }\n\n  toPage (direction) {\n    const params = ctrl.paginationParams\n    const count = ctrl.pageSize\n    const txType = ctrl.txnType\n    const time = this.time\n    let requestedOffset = params.offset + count * direction\n    if (requestedOffset >= params.count) return\n    if (requestedOffset < 0) requestedOffset = 0\n    ctrl.fetchTableWithPeriod(txType, count, requestedOffset, time)\n  }\n\n  async fetchTableWithPeriod (txType, count, offset, time) {\n    ctrl.listLoaderTarget.classList.add('loading')\n    const requestCount = count > 20 ? count : 20\n    const tableResponse = await requestJSON(ctrl.makeTableUrl(txType, requestCount, offset, time))\n    ctrl.tableTarget.innerHTML = dompurify.sanitize(tableResponse.html)\n    const settings = ctrl.settings\n    settings.n = count\n    settings.start = offset\n    settings.txntype = txType\n    ctrl.paginationParams.count = tableResponse.tx_count\n    ctrl.query.replace(settings)\n    ctrl.paginationParams.offset = offset\n    ctrl.paginationParams.pagesize = count\n    ctrl.paginationParams.txntype = txType\n    ctrl.setPageability()\n    ctrl.tablePaginationParams = tableResponse.pages\n    ctrl.setTablePaginationLinks()\n    ctrl.listLoaderTarget.classList.remove('loading')\n  }\n\n  async fetchTable (txType, count, offset) {\n    this.fetchTableWithPeriod(txType, count, offset, '')\n  }\n\n  setPageability () {\n    const params = ctrl.paginationParams\n    const rowMax = params.count\n    const count = ctrl.pageSize\n    if (ctrl.paginationParams.count === 0) {\n      ctrl.paginationheaderTarget.classList.add('d-hide')\n    } else {\n      ctrl.paginationheaderTarget.classList.remove('d-hide')\n    }\n    if (rowMax > count) {\n      ctrl.pagebuttonsTarget.classList.remove('d-hide')\n    } else {\n      ctrl.pagebuttonsTarget.classList.add('d-hide')\n    }\n    const setAbility = (el, state) => {\n      if (state) {\n        el.classList.remove('disabled')\n      } else {\n        el.classList.add('disabled')\n      }\n    }\n    setAbility(ctrl.pageplusTarget, params.offset + count < rowMax)\n    setAbility(ctrl.pageminusTarget, params.offset - count >= 0)\n    ctrl.pageSizeOptions.forEach((option) => {\n      if (option.value > 100) {\n        if (rowMax > 100) {\n          option.disabled = false\n          option.text = option.value = Math.min(rowMax, maxAddrRows)\n        } else {\n          option.disabled = true\n          option.text = option.value = maxAddrRows\n        }\n      } else {\n        option.disabled = rowMax <= option.value\n      }\n    })\n    setAbility(ctrl.pagesizeTarget, rowMax > 20)\n    const suffix = rowMax > 1 ? 's' : ''\n    let rangeEnd = params.offset + count\n    if (rangeEnd > rowMax) rangeEnd = rowMax\n    ctrl.rangeTarget.innerHTML = 'showing ' + (params.offset + 1) + ' &ndash; ' +\n    rangeEnd + ' of ' + rowMax.toLocaleString() + ' transaction' + suffix\n  }\n\n  setTablePaginationLinks () {\n    const tablePagesLink = ctrl.tablePaginationParams\n    if (tablePagesLink.length === 0) return ctrl.tablePaginationTarget.classList.add('d-hide')\n    ctrl.tablePaginationTarget.classList.remove('d-hide')\n    const txCount = parseInt(ctrl.paginationParams.count)\n    const offset = parseInt(ctrl.paginationParams.offset)\n    const pageSize = parseInt(ctrl.paginationParams.pagesize)\n    const txnType = ctrl.paginationParams.txntype\n    const time = this.time\n    let links = ''\n\n    const root = this.dcrAddress === `chain/${this.chainType}/address/${this.dcrAddress}`\n\n    if (typeof offset !== 'undefined' && offset > 0) {\n      links = `<a href=\"/${root}?start=${offset - pageSize}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n      'class=\"d-inline-block dcricon-arrow-left pagination-number pagination-narrow m-1 fz20\" data-action=\"click->address#pageNumberLink\"></a>' + '\\n'\n    }\n\n    links += tablePagesLink.map(d => {\n      if (!d.link) return `<span>${d.str}</span>`\n      return `<a href=\"${d.link}\" class=\"fs18 pager pagination-number${d.active ? ' active' : ''}\" data-action=\"click->address#pageNumberLink\">${d.str}</a>`\n    }).join('\\n')\n\n    if ((txCount - offset) > pageSize) {\n      links += '\\n' + `<a href=\"/${root}?start=${(offset + pageSize)}&n=${pageSize}&txntype=${txnType}${time && time !== '' ? '&time=' + time : ''}\" ` +\n      'class=\"d-inline-block dcricon-arrow-right pagination-number pagination-narrow m-1 fs20\" data-action=\"click->address#pageNumberLink\"></a>'\n    }\n\n    ctrl.tablePaginationTarget.innerHTML = dompurify.sanitize(links)\n  }\n\n  _confirmMempoolTxs (blockData) {\n    const block = blockData.block\n    if (this.hasPendingTarget) {\n      this.pendingTargets.forEach((row) => {\n        if (txInBlock(row.dataset.txid, block)) {\n          const confirms = row.querySelector('td.addr-tx-confirms')\n          confirms.textContent = '1'\n          confirms.dataset.confirmationBlockHeight = block.height\n          row.querySelector('td.addr-tx-time').textContent = humanize.date(block.time, true)\n          const age = row.querySelector('td.addr-tx-age > span')\n          age.dataset.age = block.time\n          age.textContent = humanize.timeSince(block.unixStamp)\n          delete row.dataset.addressTarget\n          // Increment the displayed tx count\n          const count = this.txnCountTarget\n          count.dataset.txnCount++\n          setTxnCountText(count, count.dataset.txnCount)\n          this.numUnconfirmedTargets.forEach((tr, i) => {\n            const td = tr.querySelector('td.addr-unconfirmed-count')\n            let count = parseInt(tr.dataset.count)\n            if (count) count--\n            tr.dataset.count = count\n            if (count === 0) {\n              tr.classList.add('.d-hide')\n              delete tr.dataset.addressTarget\n            } else {\n              td.textContent = count\n            }\n          })\n        }\n      })\n    }\n  }\n\n  get txnType () {\n    return this.txntypeTarget.selectedOptions[0].value\n  }\n\n  get pageSize () {\n    const selected = this.pagesizeTarget.selectedOptions\n    return selected.length ? parseInt(selected[0].value) : 20\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper.js'\nimport { isEqual } from '../helpers/chart_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport Zoom from '../helpers/zoom_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport { darkEnabled } from '../services/theme_service.js'\n\nlet selectedChart\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'missed-votes']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nlet globalChainType = ''\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, avgBlockTime\nlet yFormatter, legendEntry, legendMarker, legendElement\n\nfunction usesWindowUnits (chart) {\n  return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n  return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n  return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n  return modeScales.includes(chart)\n}\n\nfunction intComma (amount) {\n  if (!amount) return ''\n  return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n  const axesIndexes = yValueRanges[chartName]\n  if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n    origYRange.length !== newYRange.length || !axesIndexes) return\n\n  let axes\n  for (let i = 0; i < axesIndexes.length; i++) {\n    const index = axesIndexes[i]\n    if (newYRange.length <= index) continue\n    if (!isEqual(origYRange[index], newYRange[index])) {\n      if (!axes) axes = {}\n      if (index === 0) {\n        axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n      } else if (index === 1) {\n        axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n      }\n    }\n  }\n  return axes\n}\n\nfunction withBigUnits (v, units) {\n  const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n  return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n  if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n  if (height > 1) return baseSubsidy * (1 - stakeShare)\n  if (height === 1) return premine\n  return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n  addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n  return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n  if (data.x == null) return legendElement.classList.add('d-hide')\n  legendElement.classList.remove('d-hide')\n  const div = document.createElement('div')\n  let xHTML = data.xHTML\n  if (data.dygraph.getLabels()[0] === 'Date') {\n    xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n  }\n  div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n  yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n  dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n  return div.innerHTML\n}\n\nfunction nightModeOptions (nightModeOn) {\n  if (nightModeOn) {\n    return {\n      rangeSelectorAlpha: 0.3,\n      gridLineColor: '#596D81',\n      colors: ['#2DD8A3', '#255595', '#FFC84E']\n    }\n  }\n  return {\n    rangeSelectorAlpha: 0.4,\n    gridLineColor: '#C4CBD2',\n    colors: ['#255594', '#006600', '#FF0090']\n  }\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 0\n  return ys.map((y, i) => {\n    return [i * winSize + offset, y * yMult]\n  })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n  return ys.map((y, i) => {\n    return [offset + i, y * yMult]\n  })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1\n  return ys.map((y, i) => {\n    return [offset + heights[i], y * yMult]\n  })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n  yMult = yMult || 1\n  if (data.axis === 'height') {\n    if (data.bin === 'block') return zipIvY(ys, yMult)\n    return zipHvY(data.h, ys, yMult, offset)\n  }\n  return zipTvY(data.t, ys, yMult)\n}\n\nfunction powDiffFunc (data) {\n  if (data.t) return zipWindowTvY(data.t, data.diff)\n  return zipWindowHvY(data.diff, data.window)\n}\n\nfunction circulationFunc (chartData) {\n  let yMax = 0\n  let h = -1\n  const addDough = (newHeight) => {\n    while (h < newHeight) {\n      h++\n      yMax += blockReward(h) * atomsToDCR\n    }\n  }\n  const heights = chartData.h\n  const times = chartData.t\n  const supplies = chartData.supply\n  const isHeightAxis = chartData.axis === 'height'\n  let xFunc, hFunc\n  if (chartData.bin === 'day') {\n    xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n    hFunc = i => heights[i]\n  } else {\n    xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n    hFunc = i => i\n  }\n\n  const inflation = []\n  const data = map(supplies, (n, i) => {\n    const height = hFunc(i)\n    addDough(height)\n    inflation.push(yMax)\n    return [xFunc(i), supplies[i] * atomsToDCR, null, 0]\n  })\n\n  const dailyBlocks = aDay / avgBlockTime\n  const lastPt = data[data.length - 1]\n  let x = lastPt[0]\n  // Set yMax to the start at last actual supply for the prediction line.\n  yMax = lastPt[1]\n  if (!isHeightAxis) x = x.getTime()\n  xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n  const xIncrement = isHeightAxis ? dailyBlocks : aDay\n  const projection = 6 * aMonth\n  data.push([xFunc(x), null, yMax, null])\n  for (let i = 1; i <= projection; i++) {\n    addDough(h + dailyBlocks)\n    x += xIncrement\n    data.push([xFunc(x), null, yMax, null])\n  }\n  return { data, inflation }\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n  return merge({\n    file: data,\n    labels: labelsVal,\n    drawPoints: isDrawPoint,\n    ylabel: yLabel,\n    labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n    labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n  }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'chartWrapper',\n      'labels',\n      'chartsView',\n      'chartSelect',\n      'zoomSelector',\n      'zoomOption',\n      'scaleType',\n      'axisOption',\n      'binSelector',\n      'scaleSelector',\n      'binSize',\n      'legendEntry',\n      'legendMarker',\n      'modeSelector',\n      'modeOption',\n      'rawDataURL',\n      'chartName',\n      'chartTitleName'\n\n    ]\n  }\n\n  async connect () {\n    this.isHomepage = !window.location.href.includes('/charts')\n    this.query = new TurboQuery()\n    premine = parseInt(this.data.get('premine'))\n    stakeValHeight = parseInt(this.data.get('svh'))\n    stakeShare = parseInt(this.data.get('pos')) / 10.0\n    baseSubsidy = parseInt(this.data.get('bs'))\n    subsidyInterval = parseInt(this.data.get('sri'))\n    subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n    avgBlockTime = parseInt(this.data.get('blockTime')) * 1000\n    this.chainType = this.data.get('chainType')\n    const supplyPage = this.data.get('supplyPage')\n    globalChainType = this.chainType\n    legendElement = this.labelsTarget\n\n    // Prepare the legend element generators.\n    const lm = this.legendMarkerTarget\n    lm.remove()\n    lm.removeAttribute('data-charts-target')\n    legendMarker = () => {\n      const node = document.createElement('div')\n      node.appendChild(lm.cloneNode())\n      return node.innerHTML\n    }\n    const le = this.legendEntryTarget\n    le.remove()\n    le.removeAttribute('data-charts-target')\n    legendEntry = s => {\n      const node = le.cloneNode()\n      node.innerHTML = s\n      return node\n    }\n\n    this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'axis', 'visibility', 'home'])\n    if (!this.isHomepage) {\n      this.query.update(this.settings)\n    }\n    this.settings.chart = this.settings.chart || 'block-size'\n    if (supplyPage === 'true') {\n      this.settings.chart = 'coin-supply'\n    }\n    this.zoomCallback = this._zoomCallback.bind(this)\n    this.drawCallback = this._drawCallback.bind(this)\n    this.limits = null\n    this.lastZoom = null\n    this.visibility = []\n    if (this.settings.visibility) {\n      this.settings.visibility.split('-', -1).forEach(s => {\n        this.visibility.push(s === 'true')\n      })\n    }\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    this.drawInitialGraph()\n    this.processNightMode = (params) => {\n      this.chartsView.updateOptions(\n        nightModeOptions(params.nightMode)\n      )\n    }\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n  }\n\n  disconnect () {\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    if (this.chartsView !== undefined) {\n      this.chartsView.destroy()\n    }\n    selectedChart = null\n  }\n\n  drawInitialGraph () {\n    const options = {\n      axes: { y: { axisLabelWidth: 70 }, y2: { axisLabelWidth: 65 } },\n      labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n      digitsAfterDecimal: 8,\n      showRangeSelector: true,\n      rangeSelectorPlotFillColor: '#C4CBD2',\n      rangeSelectorAlpha: 0.4,\n      rangeSelectorHeight: 40,\n      drawPoints: true,\n      pointSize: 0.25,\n      legend: 'always',\n      labelsSeparateLines: true,\n      labelsDiv: legendElement,\n      legendFormatter: legendFormatter,\n      highlightCircleSize: 4,\n      ylabel: 'Ticket Price',\n      y2label: 'Tickets Bought',\n      labelsUTC: true,\n      axisLineColor: '#C4CBD2'\n    }\n\n    this.chartsView = new Dygraph(\n      this.chartsViewTarget,\n      [[1, 1, 5], [2, 5, 11]],\n      options\n    )\n    this.chartSelectTarget.value = this.settings.chart\n\n    if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n    if (this.settings.scale === 'log') this.setScale(this.settings.scale)\n    if (this.settings.zoom) this.setZoom(this.settings.zoom)\n    this.setBin(this.settings.bin ? this.settings.bin : 'day')\n    this.setMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n    const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n    Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n      g.updateOptions({ legendIndex: row }, true)\n      return ogLegendGenerator(g, x, pts, w, row)\n    }\n    this.selectChart()\n  }\n\n  plotGraph (chartName, data) {\n    let d = []\n    const gOptions = {\n      zoomCallback: null,\n      drawCallback: null,\n      logscale: this.settings.scale === 'log',\n      valueRange: [null, null],\n      visibility: null,\n      y2label: null,\n      stepPlot: this.settings.mode === 'stepped',\n      axes: {},\n      series: null,\n      inflation: null\n    }\n\n    yFormatter = defaultYFormatter\n    const xlabel = data.t ? 'Date' : 'Block Height'\n\n    switch (chartName) {\n      case 'block-size': // block size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n        break\n      case 'blockchain-size': // blockchain size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n          'Blockchain Size', false, true))\n        break\n      case 'tx-count': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Transactions'], false,\n          'Total Transactions', false, false))\n        break\n      case 'tx-per-block': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Avg TXs Per Block'], false,\n          'Avg TXs Per Block', false, false))\n        break\n      case 'mined-blocks': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mined Blocks'], false,\n          'Mined Blocks', false, false))\n        break\n      case 'mempool-txs': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Transactions'], false,\n          'Mempool Transactions', false, false))\n        break\n      case 'mempool-size': // blockchain size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Size'], true,\n          'Mempool Size', false, true))\n        break\n      case 'address-number': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Active Addresses'], false,\n          'Active Addresses', false, false))\n        break\n      case 'pow-difficulty': // difficulty graph\n        d = powDiffFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n        break\n      case 'coin-supply': // supply graph\n        if (this.settings.bin === 'day') {\n          d = zip2D(data, data.supply, 1e-6)\n          assign(gOptions, mapDygraphOptions(d, [xlabel, 'Coins Supply (' + globalChainType.toUpperCase() + ')'], false,\n            'Coins Supply (Millions ' + globalChainType.toUpperCase() + ')', false, false))\n          yFormatter = (div, data, i) => {\n            addLegendEntryFmt(div, data.series[0], y => intComma(y * 1e6) + ' ' + globalChainType.toUpperCase())\n          }\n          break\n        }\n        d = circulationFunc(data)\n        assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n          true, 'Coin Supply (' + this.chainType.toUpperCase() + ')', true, false))\n        gOptions.y2label = 'Inflation Limit'\n        gOptions.y3label = 'Mix Rate'\n        gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n        this.visibility = [true, true, false]\n        gOptions.visibility = this.visibility\n        gOptions.series = {\n          'Inflation Limit': {\n            strokePattern: [5, 5],\n            color: '#C4CBD2',\n            strokeWidth: 1.5\n          },\n          'Mix Rate': {\n            color: '#2dd8a3'\n          }\n        }\n        gOptions.inflation = d.inflation\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' ' + globalChainType.toUpperCase())\n          let change = 0\n          if (i < d.inflation.length) {\n            const predicted = d.inflation[i]\n            const unminted = predicted - data.series[0].y\n            change = ((unminted / predicted) * 100).toFixed(2)\n            div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} ` + globalChainType.toUpperCase() + ` (${change}%)`))\n          }\n        }\n        break\n\n      case 'fees': // block fee graph\n        d = zip2D(data, data.fees, atomsToDCR)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (' + globalChainType.toUpperCase() + ')', true, false))\n        break\n\n      case 'duration-btw-blocks': // Duration between blocks graph\n        d = zip2D(data, data.duration, 1, 1)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n          'Duration Between Blocks (seconds)', false, false))\n        break\n\n      case 'hashrate': // Total chainwork over time\n        d = zip2D(data, data.rate, 1e-3, data.offset)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate (petahash/s)'],\n          false, 'Network Hashrate (petahash/s)', true, false))\n        yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n        break\n    }\n\n    const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n    this.rawDataURLTarget.textContent = `${baseURL}/api/chainchart/${this.chainType}/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n    this.chartsView.plotter_.clear()\n    this.chartsView.updateOptions(gOptions, false)\n    if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n    this.validateZoom()\n  }\n\n  async selectChart () {\n    const selection = this.settings.chart = this.chartSelectTarget.value\n    this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n    this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n    this.customLimits = null\n    this.chartWrapperTarget.classList.add('loading')\n    if (isScaleDisabled(selection)) {\n      this.scaleSelectorTarget.classList.add('d-hide')\n    } else {\n      this.scaleSelectorTarget.classList.remove('d-hide')\n    }\n    if (isModeEnabled(selection)) {\n      this.modeSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.modeSelectorTarget.classList.add('d-hide')\n    }\n\n    if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n      this.settings.axis !== this.selectedAxis()) {\n      let url = `/api/chainchart/${this.chainType}/` + selection\n      if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n        // this.binSelectorTarget.classList.add('d-hide')\n        this.settings.bin = 'window'\n      } else {\n        // this.binSelectorTarget.classList.remove('d-hide')\n        this.settings.bin = this.selectedBin()\n        this.binSizeTargets.forEach(el => {\n          if (el.dataset.option !== 'window') return\n          if (usesHybridUnits(selection)) {\n            el.classList.remove('d-hide')\n          } else {\n            el.classList.add('d-hide')\n            if (this.settings.bin === 'window') {\n              this.settings.bin = 'day'\n              this.setActiveOptionBtn(this.settings.bin, this.binSizeTargets)\n            }\n          }\n        })\n      }\n      url += `?bin=${this.settings.bin}`\n\n      this.settings.axis = this.selectedAxis()\n      if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n      url += `&axis=${this.settings.axis}`\n      this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n      const chartResponse = await requestJSON(url)\n      selectedChart = selection\n      this.plotGraph(selection, chartResponse)\n    } else {\n      this.chartWrapperTarget.classList.remove('loading')\n    }\n  }\n\n  getChartName (chartValue) {\n    switch (chartValue) {\n      case 'block-size':\n        return 'Block Size'\n      case 'blockchain-size':\n        return 'Blockchain Size'\n      case 'tx-count':\n        return 'Transaction Count'\n      case 'duration-btw-blocks':\n        return 'Duration Between Blocks'\n      case 'pow-difficulty':\n        return 'PoW Difficulty'\n      case 'hashrate':\n        return 'Hashrate'\n      case 'coin-supply':\n        return 'Coin Supply'\n      case 'fees':\n        return 'Fees'\n      case 'tx-per-block':\n        return 'TXs Per Blocks'\n      case 'mined-blocks':\n        return 'Mined Blocks'\n      case 'mempool-txs':\n        return 'Mempool TXs'\n      case 'mempool-size':\n        return 'Mempool Size'\n      case 'address-number':\n        return 'Active Addresses'\n      default:\n        return ''\n    }\n  }\n\n  async validateZoom () {\n    await animationFrame()\n    this.chartWrapperTarget.classList.add('loading')\n    await animationFrame()\n    let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n    this.limits = this.chartsView.xAxisExtremes()\n    const selected = this.selectedZoom()\n    if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n      this.lastZoom = Zoom.validate(selected, this.limits,\n        this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n    } else {\n      // if this is for the privacy-participation chart, then zoom to the beginning of the record\n      if (selectedChart === 'privacy-participation') {\n        this.limits = oldLimits = this.customLimits\n        this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n      }\n      this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n    }\n    if (this.lastZoom) {\n      this.chartsView.updateOptions({\n        dateWindow: [this.lastZoom.start, this.lastZoom.end]\n      })\n    }\n    if (selected !== this.settings.zoom) {\n      this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n    }\n    await animationFrame()\n    this.chartWrapperTarget.classList.remove('loading')\n    this.chartsView.updateOptions({\n      zoomCallback: this.zoomCallback,\n      drawCallback: this.drawCallback\n    })\n  }\n\n  _zoomCallback (start, end) {\n    this.lastZoom = Zoom.object(start, end)\n    this.settings.zoom = Zoom.encode(this.lastZoom)\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n    const ex = this.chartsView.xAxisExtremes()\n    const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    this.setActiveOptionBtn(option, this.zoomOptionTargets)\n    const axesData = axesToRestoreYRange(this.settings.chart,\n      this.supportedYRange, this.chartsView.yAxisRanges())\n    if (axesData) this.chartsView.updateOptions({ axes: axesData })\n  }\n\n  isTimeAxis () {\n    return this.selectedAxis() === 'time'\n  }\n\n  _drawCallback (graph, first) {\n    if (first) return\n    const [start, end] = this.chartsView.xAxisRange()\n    if (start === end) return\n    if (this.lastZoom.start === start) return // only handle slide event.\n    this._zoomCallback(start, end)\n  }\n\n  setZoom (e) {\n    const target = e.srcElement || e.target\n    let option\n    if (!target) {\n      const ex = this.chartsView.xAxisExtremes()\n      option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    } else {\n      option = target.dataset.option\n    }\n    this.setActiveOptionBtn(option, this.zoomOptionTargets)\n    if (!target) return // Exit if running for the first time\n    this.validateZoom()\n  }\n\n  setBin (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.binSizeTargets)\n    if (!target) return // Exit if running for the first time.\n    selectedChart = null // Force fetch\n    this.selectChart()\n  }\n\n  setScale (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.scaleTypeTargets)\n    if (!target) return // Exit if running for the first time.\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ logscale: option === 'log' })\n    }\n    this.settings.scale = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setMode (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.modeOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n    }\n    this.settings.mode = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setAxis (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.axisOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    this.settings.axis = null\n    this.selectChart()\n  }\n\n  setVisibilityFromSettings () {\n    switch (this.chartSelectTarget.value) {\n      case 'coin-supply':\n        if (this.visibility.length !== 3) {\n          this.visibility = [true, true, false]\n        }\n        break\n      default:\n        return\n    }\n    this.settings.visibility = this.visibility.join('-')\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setActiveOptionBtn (opt, optTargets) {\n    optTargets.forEach(li => {\n      if (li.dataset.option === opt) {\n        li.classList.add('active')\n      } else {\n        li.classList.remove('active')\n      }\n    })\n  }\n\n  selectedZoom () { return this.selectedOption(this.zoomOptionTargets) }\n  selectedBin () { return this.selectedOption(this.binSizeTargets) }\n  selectedScale () { return this.selectedOption(this.scaleTypeTargets) }\n  selectedAxis () { return this.selectedOption(this.axisOptionTargets) }\n\n  selectedOption (optTargets) {\n    let key = false\n    optTargets.forEach((el) => {\n      if (el.classList.contains('active')) key = el.dataset.option\n    })\n    return key\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport mempoolJS from '../vendor/mempool'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['blockHeight', 'blockTotal', 'blockSize', 'blockTime',\n      'exchangeRate', 'totalTransactions', 'coinSupply', 'convertedSupply',\n      'powBar', 'rewardIdx', 'txCount', 'txOutCount', 'totalSent', 'totalFee',\n      'minFeeRate', 'maxFeeRate', 'totalSize', 'remainingBlocks', 'timeRemaning',\n      'diffChange', 'prevRetarget', 'blockTimeAvg']\n  }\n\n  async connect () {\n    this.chainType = this.data.get('chainType')\n    this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n    const rateStr = this.data.get('exchangeRate')\n    this.exchangeRate = 0.0\n    if (rateStr && rateStr !== '') {\n      this.exchangeRate = parseFloat(rateStr)\n    }\n    this.processBlock = this._processBlock.bind(this)\n    switch (this.chainType) {\n      case 'ltc':\n        globalEventBus.on('LTC_BLOCK_RECEIVED', this.processBlock)\n        break\n      case 'btc':\n        globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBlock)\n    }\n    this.processXcUpdate = this._processXcUpdate.bind(this)\n    globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n    const { bitcoin: { websocket } } = mempoolJS({\n      hostname: this.wsHostName\n    })\n    this.ws = websocket.initClient({\n      options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n    })\n    this.mempoolSocketInit()\n  }\n\n  _processXcUpdate (update) {\n    const xc = update.updater\n    const cType = xc.chain_type\n    if (cType !== this.chainType) {\n      return\n    }\n    this.exchangeRate = xc.price\n    this.exchangeRateTarget.textContent = humanize.twoDecimals(xc.price)\n  }\n\n  disconnect () {\n    switch (this.chainType) {\n      case 'ltc':\n        globalEventBus.off('LTC_BLOCK_RECEIVED', this.processBlock)\n        break\n      case 'btc':\n        globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBlock)\n    }\n    globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n    this.ws.close()\n  }\n\n  _processBlock (blockData) {\n    const block = blockData.block\n    this.blockHeightTarget.textContent = block.height\n    this.blockHeightTarget.href = `/block/${block.hash}`\n    this.blockSizeTarget.textContent = humanize.bytes(block.size)\n    this.blockTotalTarget.textContent = humanize.threeSigFigs(block.total)\n    this.blockTimeTarget.dataset.age = block.blocktime_unix\n    this.blockTimeTarget.textContent = humanize.timeSince(block.blocktime_unix)\n    // handler extra data\n    const extra = blockData.extra\n    if (!extra) {\n      return\n    }\n    this.totalTransactionsTarget.textContent = humanize.commaWithDecimal(extra.total_transactions, 0)\n    this.coinSupplyTarget.textContent = humanize.commaWithDecimal(extra.coin_value_supply, 2)\n    if (this.exchangeRate > 0) {\n      const exchangeValue = extra.coin_value_supply * this.exchangeRate\n      this.convertedSupplyTarget.textContent = humanize.threeSigFigs(exchangeValue) + 'USD'\n    }\n  }\n\n  async mempoolSocketInit () {\n    const _this = this\n    this.ws.addEventListener('message', function incoming ({ data }) {\n      const res = JSON.parse(data.toString())\n      if (res.mempoolInfo) {\n        _this.txCountTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.size, true, 0)\n        if (_this.chainType === 'btc') {\n          _this.totalFeeTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.total_fee, false, 8, 2)\n        }\n      }\n      if (res['mempool-blocks']) {\n        let totalSize = 0\n        let ltcTotalFee = 0\n        let minFeeRatevB = Number.MAX_VALUE\n        let maxFeeRatevB = 0\n        res['mempool-blocks'].forEach(memBlock => {\n          totalSize += memBlock.blockSize\n          if (_this.chainType === 'ltc') {\n            ltcTotalFee += memBlock.totalFees\n          }\n          if (memBlock.feeRange) {\n            memBlock.feeRange.forEach(feevB => {\n              if (minFeeRatevB > feevB) {\n                minFeeRatevB = feevB\n              }\n              if (maxFeeRatevB < feevB) {\n                maxFeeRatevB = feevB\n              }\n            })\n          }\n        })\n        if (_this.chainType === 'ltc') {\n          _this.totalFeeTarget.innerHTML = humanize.decimalParts(ltcTotalFee / 1e8, false, 8, 2)\n        }\n        _this.minFeeRateTarget.innerHTML = humanize.decimalParts(minFeeRatevB, true, 0)\n        _this.maxFeeRateTarget.innerHTML = humanize.decimalParts(maxFeeRatevB, true, 0)\n        _this.totalSizeTarget.innerHTML = humanize.bytes(totalSize)\n      }\n      if (res.block) {\n        const extras = res.block.extras\n        _this.txOutCountTarget.innerHTML = humanize.decimalParts(extras.totalOutputs, true, 0)\n        _this.totalSentTarget.innerHTML = humanize.decimalParts(extras.totalOutputAmt / 1e8, false, 8, 2)\n      }\n      if (res.blocks) {\n        let txOutCount = 0\n        let totalSent = 0\n        res.blocks.forEach(block => {\n          const extras = block.extras\n          txOutCount += extras.totalOutputs\n          totalSent += extras.totalOutputAmt\n        })\n        _this.txOutCountTarget.innerHTML = humanize.decimalParts(txOutCount, true, 0)\n        _this.totalSentTarget.innerHTML = humanize.decimalParts(totalSent / 1e8, false, 3, 2)\n      }\n      if (res.da) {\n        const diffChange = res.da.difficultyChange\n        const prevRetarget = res.da.previousRetarget\n        const remainingBlocks = res.da.remainingBlocks\n        const timeRemaining = res.da.remainingTime\n        const timeAvg = res.da.timeAvg\n        _this.diffChangeTarget.innerHTML = humanize.decimalParts(diffChange, false, 2, 0)\n        if (diffChange > 0) {\n          _this.diffChangeTarget.classList.remove('c-red')\n          _this.diffChangeTarget.classList.add('c-green-2')\n        } else {\n          _this.diffChangeTarget.classList.add('c-red')\n          _this.diffChangeTarget.classList.remove('c-green-2')\n        }\n        _this.prevRetargetTarget.innerHTML = humanize.threeSigFigs(prevRetarget)\n        _this.remainingBlocksTarget.innerHTML = humanize.decimalParts(remainingBlocks, true, 0)\n        _this.timeRemaningTarget.setAttribute('data-duration', timeRemaining)\n        _this.blockTimeAvgTarget.setAttribute('data-duration', timeAvg)\n      }\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { darkEnabled } from '../services/theme_service.js'\nimport globalEventBus from '../services/event_bus_service.js'\n\nlet Dygraph\nconst SELL = 1\nconst BUY = 2\nconst candlestick = 'candlestick'\nconst orders = 'orders'\nconst depth = 'depth'\nconst history = 'history'\nconst volume = 'volume'\nconst aggregatedKey = 'aggregated'\nconst anHour = '1h'\nlet globalChainType = ''\nconst minuteMap = {\n  '5m': 5,\n  '30m': 30,\n  '1h': 60,\n  '1d': 1440,\n  '1mo': 43200\n}\nconst PIPI = 2 * Math.PI\nconst prettyDurations = {\n  '5m': '5 min',\n  '30m': '30 min',\n  '1h': 'hour',\n  '1d': 'day',\n  '1mo': 'month'\n}\n\nconst printNames = {\n  dcrdex: 'Dcrdex',\n  btc_coinex: 'Coinex'\n  // default is capitalize\n}\n\nfunction printName (token) {\n  const name = printNames[token]\n  if (name) return name\n  return humanize.capitalize(token)\n}\n\nconst defaultZoomPct = 20\nlet hidden, visibilityChange\nif (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n  hidden = 'hidden'\n  visibilityChange = 'visibilitychange'\n} else if (typeof document.msHidden !== 'undefined') {\n  hidden = 'msHidden'\n  visibilityChange = 'msvisibilitychange'\n} else if (typeof document.webkitHidden !== 'undefined') {\n  hidden = 'webkitHidden'\n  visibilityChange = 'webkitvisibilitychange'\n}\nlet focused = true\nlet aggStacking = true\nlet refreshAvailable = false\nlet availableCandlesticks, availableDepths\n\nfunction screenIsBig () {\n  return window.innerWidth >= 992\n}\n\nfunction validDepthExchange (token) {\n  return availableDepths.indexOf(token) > -1\n}\n\nfunction usesOrderbook (chart) {\n  return chart === depth || chart === orders\n}\n\nfunction usesCandlesticks (chart) {\n  return chart === candlestick || chart === volume || chart === history\n}\n\nlet requestCounter = 0\nlet responseCache = {}\n\nfunction hasCache (k) {\n  if (!responseCache[k]) return false\n  const expiration = new Date(responseCache[k].expiration)\n  return expiration > new Date()\n}\n\nfunction clearCache (k) {\n  if (!responseCache[k]) return\n  delete responseCache[k]\n}\n\nconst lightStroke = '#5587a4'\nconst darkStroke = '#ddd'\nlet chartStroke = lightStroke\nlet conversionFactor = 1\nlet btcPrice, fiatCode\nconst gridColor = '#a5b7cf'\nconst binList = ['5m', '30m', '1h', '4h', '1d', 'week', '1mo']\nlet settings = {}\nconst xcColors = [chartStroke, '#ed6d47', '#41be53', '#9228a7', '#dece12']\n\nlet colorNumerator = 0\nlet colorDenominator = 1\nconst hslS = '100%'\nconst hslL = '50%'\nconst hslOffset = 225 // 0 <= x < 360\nconst btcPairUses = ['btc_binance', 'btc_coinex', 'dcrdex', 'aggregated']\n\n// These are the first four hues generated by getHue(\nconst exchangeHues = {\n  dcrdex: 'hsl(225,100%,50%)',\n  binance: 'hsl(45,100%,50%)',\n  bittrex: 'hsl(315,100%,50%)',\n  poloniex: 'hsl(135,100%,50%)'\n}\n\nconst hsl = (h) => `hsl(${(h + hslOffset) % 360},${hslS},${hslL})`\n\nfunction useBTCPair (exchange) {\n  return btcPairUses.indexOf(exchange) > -1\n}\n\nfunction useUSDPair (exchange) {\n  return btcPairUses.indexOf(exchange) < 0 || exchange === 'aggregated'\n}\n// Generates colors on the hue sequence 0, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16, ...\nfunction generateHue () {\n  if (colorNumerator >= colorDenominator) {\n    colorNumerator = 1 // reset the numerator\n    colorDenominator *= 2 // double the denominator\n    if (colorDenominator >= 512) { // Will generate 256 different hues\n      colorNumerator = 0\n      colorDenominator = 1\n    }\n    return generateHue()\n  }\n  const hue = colorNumerator / colorDenominator * 360\n  colorNumerator += 2\n  return hsl(hue)\n}\n\nfunction getHue (token) {\n  if (exchangeHues[token]) return exchangeHues[token]\n  exchangeHues[token] = generateHue()\n  return exchangeHues[token]\n}\n\nconst yAxisLabelWidth = {\n  depth: 40,\n  orders: 50,\n  candlestick: 40,\n  history: 40,\n  volume: 40\n}\n\nfunction isMobile () {\n  return window.innerWidth <= 768\n}\n\nfunction getAxisWidth (chart) {\n  if (!chart || chart === '' || !yAxisLabelWidth[chart]) {\n    return 50\n  }\n  return yAxisLabelWidth[chart]\n}\n\nfunction getYAxisLabel (label) {\n  return isMobile() ? '' : label\n}\n\n// Generate the constant hues so dynamically assigned hues won't use them.\nObject.keys(exchangeHues).forEach(generateHue)\n\nconst commonChartOpts = {\n  gridLineColor: gridColor,\n  axisLineColor: 'transparent',\n  underlayCallback: (ctx, area, dygraph) => {\n    ctx.lineWidth = 1\n    ctx.strokeStyle = gridColor\n    ctx.strokeRect(area.x, area.y, area.w, area.h)\n  },\n  // these should be set to avoid Dygraph strangeness\n  labels: [' ', ' '], // To avoid an annoying console message,\n  xlabel: ' ',\n  ylabel: ' ',\n  pointSize: 6,\n  showRangeSelector: true,\n  rangeSelectorPlotFillColor: '#b5d2ed',\n  foregroundStrokeColor: '#1e5180',\n  rangeSelectorAlpha: 0.4,\n  rangeSelectorHeight: 40\n}\n\nconst chartResetOpts = {\n  fillGraph: false,\n  strokeWidth: 2,\n  drawPoints: false,\n  logscale: false,\n  xRangePad: 0,\n  yRangePad: 0,\n  stackedGraph: false,\n  zoomCallback: null\n}\n\nfunction convertedThreeSigFigs (x) {\n  return humanize.threeSigFigs(x * conversionFactor)\n}\n\nfunction convertedEightDecimals (x) {\n  return (x * conversionFactor).toFixed(8)\n}\n\nfunction orderbookStats (bids, asks) {\n  const bidEdge = bids[0].price\n  const askEdge = asks[0].price\n  const midGap = (bidEdge + askEdge) / 2\n  return {\n    bidEdge: bidEdge,\n    askEdge: askEdge,\n    gap: askEdge - bidEdge,\n    midGap: midGap,\n    lowCut: 0.1 * midGap, // Low cutoff of 10% market.\n    highCut: midGap * 2 // High cutoff + 100%\n  }\n}\n\nconst dummyOrderbook = {\n  pts: [[0, 0, 0]],\n  outliers: {\n    asks: [],\n    bids: []\n  }\n}\n\nfunction sizedArray (len, v) {\n  const a = []\n  for (let i = 0; i < len; i++) {\n    a.push(v)\n  }\n  return a\n}\n\nfunction rangedPts (pts, cutoff) {\n  const l = []\n  const outliers = []\n  pts.forEach(pt => {\n    if (cutoff(pt)) {\n      outliers.push(pt)\n      return\n    }\n    l.push(pt)\n  })\n  return { pts: l, outliers: outliers }\n}\n\nfunction translateDepthSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  let accumulator = 0\n  const translated = sorted.pts.map(pt => {\n    accumulator += pt.quantity\n    pt = [pt.price, null, null]\n    pt[idx] = accumulator\n    return pt\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction translateDepthPoint (pt, offset, accumulator) {\n  const l = sizedArray(pt.volumes.length + 1, null)\n  l[0] = pt.price\n  pt.volumes.forEach((vol, i) => {\n    accumulator[i] += vol\n    l[offset + i + 1] = accumulator[i]\n  })\n  return l\n}\n\nfunction needsDummyPoint (pt, offset, accumulator) {\n  const xcCount = pt.volumes.length\n  for (let i = 0; i < xcCount; i++) {\n    if (pt.volumes[i] && accumulator[i] === 0) return { price: pt.price + offset, volumes: sizedArray(xcCount, 0) }\n  }\n  return false\n}\n\nfunction translateAggregatedDepthSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const xcCount = pts[0].volumes.length\n  const offset = idx === SELL ? 0 : xcCount\n  const zeroWidth = idx === SELL ? -1e-8 : 1e-8\n  const xcAccumulator = sizedArray(xcCount, 0)\n  const l = []\n  sorted.pts.forEach(pt => {\n    const zeros = needsDummyPoint(pt, zeroWidth, xcAccumulator)\n    if (zeros) {\n      l.push(translateDepthPoint(zeros, offset, xcAccumulator))\n    }\n    l.push(translateDepthPoint(pt, offset, xcAccumulator))\n  })\n  return { pts: l, outliers: sorted.outliers }\n}\n\nfunction translateOrderbookSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const translated = sorted.pts.map(pt => {\n    const l = [pt.price, null, null]\n    l[idx] = pt.quantity\n    return l\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction sumPt (pt) {\n  return pt.volumes.reduce((a, v) => { return a + v }, 0)\n}\n\nfunction translateAggregatedOrderbookSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const translated = sorted.pts.map(pt => {\n    const l = [pt.price, null, null]\n    l[idx] = sumPt(pt)\n    return l\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction processOrderbook (response, translator) {\n  const bids = response.data.bids\n  const asks = response.data.asks\n\n  if (!response.tokens) {\n    // Add the dummy points to make the chart line connect to the baseline and\n    // because otherwise Dygraph has a bug that adds an offset to the asks side.\n    bids.splice(0, 0, { price: bids[0].price + 1e-8, quantity: 0 })\n    asks.splice(0, 0, { price: asks[0].price - 1e-8, quantity: 0 })\n  }\n  if (!bids || !asks) {\n    console.warn('no bid/ask data in API response')\n    return dummyOrderbook\n  }\n  if (!bids.length || !asks.length) {\n    console.warn('empty bid/ask data in API response')\n    return dummyOrderbook\n  }\n  const stats = orderbookStats(bids, asks)\n  const buys = translator(bids, BUY, pt => pt.price < stats.lowCut)\n  buys.pts.reverse()\n  const sells = translator(asks, SELL, pt => pt.price > stats.highCut)\n\n  // Find points in overlapping region with duplicate rates, to deal with a\n  // Dygraphs bug.\n  let dupes\n  if (response.tokens) dupes = findAggregateDupes(buys.pts, sells.pts)\n\n  return {\n    pts: buys.pts.concat(sells.pts),\n    outliers: buys.outliers.concat(sells.outliers),\n    stats: stats,\n    dupes: dupes\n  }\n}\n\nfunction candlestickPlotter (e) {\n  if (e.seriesIndex !== 0) return\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n  ctx.strokeStyle = chartStroke\n  ctx.lineWidth = 1\n  const sets = e.allSeriesPoints\n  if (sets.length < 2) {\n    // do nothing\n    return\n  }\n\n  const barWidth = area.w * Math.abs(sets[0][1].x - sets[0][0].x) * 0.8\n  const [opens, closes, highs, lows] = sets\n  let open, close, high, low\n  for (let i = 0; i < sets[0].length; i++) {\n    ctx.strokeStyle = '#777'\n    open = opens[i]\n    close = closes[i]\n    high = highs[i]\n    low = lows[i]\n    const centerX = area.x + open.x * area.w\n    const topY = area.h * high.y + area.y\n    const bottomY = area.h * low.y + area.y\n    ctx.beginPath()\n    ctx.moveTo(centerX, topY)\n    ctx.lineTo(centerX, bottomY)\n    ctx.stroke()\n    ctx.strokeStyle = 'black'\n    let top\n    if (open.yval > close.yval) {\n      ctx.fillStyle = '#f93f39cc'\n      top = area.h * open.y + area.y\n    } else {\n      ctx.fillStyle = '#1acc84cc'\n      top = area.h * close.y + area.y\n    }\n    const h = area.h * Math.abs(open.y - close.y)\n    const left = centerX - barWidth / 2\n    ctx.fillRect(left, top, barWidth, h)\n    ctx.strokeRect(left, top, barWidth, h)\n  }\n}\n\nfunction drawOrderPt (ctx, pt) {\n  return drawPt(ctx, pt, orderPtSize, true)\n}\n\nfunction drawPt (ctx, pt, size, bordered) {\n  ctx.beginPath()\n  ctx.arc(pt.x, pt.y, size, 0, PIPI)\n  ctx.fill()\n  if (bordered) ctx.stroke()\n}\n\nfunction drawLine (ctx, start, end) {\n  ctx.beginPath()\n  ctx.moveTo(start.x, start.y)\n  ctx.lineTo(end.x, end.y)\n  ctx.stroke()\n}\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction canvasXY (area, pt) {\n  return {\n    x: area.x + pt.x * area.w,\n    y: area.y + pt.y * area.h\n  }\n}\n\nlet orderPtSize = 7\nif (!screenIsBig()) orderPtSize = 4\n\nfunction orderPlotter (e) {\n  if (e.seriesIndex !== 0) return\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n\n  // let buyColor, sellColor\n  const [buyColor, sellColor] = e.dygraph.getColors()\n\n  const [buys, sells] = e.allSeriesPoints\n  ctx.lineWidth = 1\n  ctx.strokeStyle = darkEnabled() ? 'black' : 'white'\n  for (let i = 0; i < buys.length; i++) {\n    const buy = buys[i]\n    const sell = sells[i]\n    if (buy) {\n      ctx.fillStyle = buyColor\n      drawOrderPt(ctx, canvasXY(area, buy))\n    }\n    if (sell) {\n      ctx.fillStyle = sellColor\n      drawOrderPt(ctx, canvasXY(area, sell))\n    }\n  }\n}\n\nconst greekCapDelta = String.fromCharCode(916)\n\nfunction depthLegendPlotter (e) {\n  const tokens = e.dygraph.getOption('tokens')\n  const stats = e.dygraph.getOption('stats')\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n\n  const dark = darkEnabled()\n  const big = screenIsBig()\n  const mg = e.dygraph.toDomCoords(stats.midGap, 0)\n  const midGap = makePt(mg[0], mg[1])\n  const fontSize = big ? 15 : 13\n  ctx.textAlign = 'left'\n  ctx.textBaseline = 'top'\n  ctx.font = `${fontSize}px arial`\n  ctx.lineWidth = 1\n  ctx.strokeStyle = chartStroke\n  const boxColor = dark ? '#2228' : '#fff8'\n\n  const midGapPrice = humanize.threeSigFigs(stats.midGap)\n  const deltaPctTxt = `${greekCapDelta} : ${humanize.threeSigFigs(stats.gap / stats.midGap * 100)}%`\n  const fiatGapTxt = `${humanize.threeSigFigs(stats.gap * btcPrice)} ${fiatCode}`\n  const btcGapTxt = `${humanize.threeSigFigs(stats.gap)} USD`\n  let boxW = 0\n  const txts = [fiatGapTxt, btcGapTxt, deltaPctTxt, midGapPrice]\n  txts.forEach(txt => {\n    const w = ctx.measureText(txt).width\n    if (w > boxW) boxW = w\n  })\n  let rowHeight = fontSize * 1.5\n  const rowPad = big ? (rowHeight - fontSize) / 2 : (rowHeight - fontSize) / 3\n  const boxPad = big ? rowHeight / 3 : rowHeight / 5\n  let x\n  let y = big ? fontSize * 2 : fontSize\n\n  // If it's an aggregated chart, start with a color legend\n  if (tokens) {\n    // If this is an aggregated chart, draw the color legend first\n    const ptSize = fontSize / 3\n    let legW = 0\n    tokens.forEach(token => {\n      const w = ctx.measureText(token).width + rowHeight// leave space for dot\n      if (w > legW) legW = w\n    })\n    x = midGap.x - legW / 2\n    const boxH = rowHeight * tokens.length\n    ctx.fillStyle = boxColor\n    const rect = makePt(x - boxPad, y - boxPad)\n    const dims = makePt(legW + boxPad * 4, boxH + boxPad * 2)\n    ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n    ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n    tokens.forEach(token => {\n      ctx.fillStyle = getHue(token)\n      drawPt(ctx, makePt(x + rowHeight / 2, y + rowHeight / 2 - 1), ptSize)\n      ctx.fillStyle = chartStroke\n      ctx.fillText(token, x + rowPad + rowHeight, y + rowPad)\n      y += rowHeight\n    })\n    y += boxPad * 3\n    x = midGap.x - boxW / 2\n  } else {\n    y += area.h / 4\n    x = midGap.x - boxW / 2 - 25\n  }\n  // Label the gap size.\n  rowHeight -= 2 // just looks better\n  ctx.fillStyle = boxColor\n  const rect = makePt(x - boxPad, y - boxPad)\n  const dims = makePt(boxW + boxPad * 3, rowHeight * 4 + boxPad * 2)\n  ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.fillStyle = chartStroke\n  const centerX = x + (boxW / 2)\n  const write = s => {\n    const cornerX = centerX - (ctx.measureText(s).width / 2)\n    ctx.fillText(s, cornerX + rowPad, y + rowPad)\n    y += rowHeight\n  }\n\n  ctx.save()\n  ctx.font = `bold ${fontSize}px arial`\n  write(midGapPrice)\n  ctx.restore()\n  write(deltaPctTxt)\n  write(fiatGapTxt)\n  write(btcGapTxt)\n\n  // Draw a line from the box to the gap\n  drawLine(ctx,\n    makePt(x + boxW / 2, y + boxPad * 2 + boxPad),\n    makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction depthPlotter (e) {\n  Dygraph.Plotters.fillPlotter(e)\n  const tokens = e.dygraph.getOption('tokens')\n  if (tokens && e.dygraph.getOption('stackedGraph')) {\n    if (e.seriesIndex === 0 || e.seriesIndex === tokens.length) {\n      e.color = chartStroke\n    } else {\n      e.color = 'transparent'\n    }\n    fixAggregateStacking(e)\n  }\n\n  Dygraph.Plotters.linePlotter(e)\n\n  // Callout box with color legend\n  if (e.seriesIndex === e.allSeriesPoints.length - 1) depthLegendPlotter(e)\n}\n\nlet stickZoom, orderZoom\nlet samePair\nfunction calcStickWindow (start, end, bin) {\n  const halfBin = minuteMap[bin] / 2\n  start = new Date(start.getTime())\n  end = new Date(end.getTime())\n  return [\n    start.setMinutes(start.getMinutes() - halfBin),\n    end.setMinutes(end.getMinutes() + halfBin)\n  ]\n}\n\nlet exchangeStateMap\n\nexport default class extends Controller {\n  static get targets () {\n    return ['chartSelect', 'exchanges', 'bin', 'chart', 'legend', 'conversion',\n      'xcName', 'xcLogo', 'actions', 'sticksOnly', 'depthOnly', 'chartLoader',\n      'xcRow', 'xcIndex', 'price', 'age', 'ageSpan', 'link', 'aggOption',\n      'aggStack', 'zoom', 'chainTypeSelected', 'exchangeBtnArea', 'pairSelect',\n      'pairSelectorArea', 'fiatLabel']\n  }\n\n  async connect () {\n    this.isHomepage = !window.location.href.includes('/market')\n    this.chainType = this.data.get('chainType')\n    if (!this.chainType || this.chainType === '') {\n      this.chainType = 'dcr'\n    }\n    globalChainType = this.chainType\n    this.setExchaneLinks()\n    this.query = new TurboQuery()\n    settings = TurboQuery.nullTemplate(['chart', 'xc', 'bin', 'xcs', 'pair'])\n    this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n    const _this = this\n    if (!this.isHomepage) {\n      this.query.update(settings)\n    } else {\n      settings.chart = 'history'\n      let hasBinance = false\n      this.exchangesButtons.forEach(button => {\n        if (button.name === 'binance') {\n          hasBinance = true\n          settings.xc = button.name\n          settings.xcs = button.name\n          settings.bin = isMobile() ? '1d' : '1mo'\n        }\n      })\n      if (!hasBinance) {\n        const defaultOption = _this.exchangesButtons[0]\n        settings.xc = defaultOption.name\n        settings.xcs = defaultOption.name\n        settings.bin = '1d'\n      }\n    }\n    this.initMutilchainExchangeStates()\n    this.processors = {\n      orders: this.processOrders,\n      candlestick: this.processCandlesticks,\n      history: this.processHistory,\n      xchistory: this.processXcsHistory,\n      depth: this.processDepth.bind(this),\n      volume: this.processVolume,\n      xcvolume: this.processXcsVolume\n    }\n    commonChartOpts.labelsDiv = this.legendTarget\n    this.converted = false\n    btcPrice = parseFloat(this.conversionTarget.dataset.factor)\n    fiatCode = this.conversionTarget.dataset.code\n    this.binButtons = this.binTarget.querySelectorAll('button')\n    this.lastUrl = null\n    this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n    this.zoomCallback = this._zoomCallback.bind(this)\n    availableCandlesticks = {}\n    availableDepths = []\n    this.exchangeOptions = []\n\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const option = this.exchangesButtons[i]\n      this.exchangeOptions.push(option)\n      if (option.dataset.sticks) {\n        availableCandlesticks[option.name] = option.dataset.bins.split(';')\n      }\n      if (option.dataset.depth) availableDepths.push(option.name)\n    }\n    availableDepths.push('btc_aggregated')\n    this.chartOptions = []\n    const opts = this.chartSelectTarget.options\n    for (let i = 0; i < opts.length; i++) {\n      this.chartOptions.push(opts[i])\n    }\n\n    if (settings.chart == null) {\n      settings.chart = depth\n    }\n    if (settings.pair == null) {\n      settings.pair = 'usdt'\n    }\n    this.pairSelectTarget.value = settings.pair\n    if (settings.xc == null) {\n      settings.xc = usesOrderbook(settings.chart) ? aggregatedKey : 'binance'\n    }\n    if (settings.stack) {\n      settings.stack = parseInt(settings.stack)\n      if (settings.stack === 0) aggStacking = false\n    }\n    if (settings.bin == null) {\n      settings.bin = anHour\n    }\n    // if chart is history, set to xcs\n    if ((settings.chart === 'history' || settings.chart === 'volume') && (!settings.xcs || settings.xcs === null)) {\n      settings.xcs = settings.xc\n    }\n    this.handlerExchangesDisplay()\n    this.setButtons()\n    this.setExchangeName()\n    this.resize = this._resize.bind(this)\n    window.addEventListener('resize', this.resize)\n    this.tabVis = this._tabVis.bind(this)\n    document.addEventListener(visibilityChange, this.tabVis)\n    this.processNightMode = this._processNightMode.bind(this)\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n    this.processXcUpdate = this._processXcUpdate.bind(this)\n    globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n    if (darkEnabled()) chartStroke = darkStroke\n    this.setNameDisplay()\n    this.fetchInitialData()\n  }\n\n  async initMutilchainExchangeStates () {\n    const url = '/api/chainchart/exchanges'\n    if (exchangeStateMap !== undefined) {\n      return\n    }\n    const response = await requestJSON(url)\n    exchangeStateMap = {}\n    response.forEach((chainState) => {\n      exchangeStateMap[chainState.chain_type] = chainState.exchanges\n    })\n  }\n\n  setExchaneLinks () {\n    this.exchangeLinks = {\n      binance: 'https://www.binance.com/en/trade/' + this.chainType.toUpperCase() + '_USDT',\n      btc_binance: 'https://www.binance.com/en/trade/' + this.chainType.toUpperCase() + '_BTC',\n      bittrex: 'https://bittrex.com/Market/Index?MarketName=USD-' + this.chainType.toUpperCase(),\n      poloniex: 'https://poloniex.com/exchange#usd_' + this.chainType,\n      dragonex: 'https://dragonex.io/en-us/trade/index/' + this.chainType + '_usd',\n      huobi: 'https://www.hbg.com/en-us/exchange/?s=' + this.chainType + '_usd',\n      dcrdex: 'https://dex.decred.org',\n      kucoin: 'https://www.kucoin.com/vi/trade/' + this.chainType.toUpperCase() + '-USDT',\n      gemini: 'https://exchange.gemini.com/trade/' + this.chainType.toUpperCase() + 'USD',\n      coinex: 'https://www.coinex.com/en/exchange/' + this.chainType.toUpperCase() + '-USDT',\n      btc_coinex: 'https://www.coinex.com/en/exchange/dcr-btc'\n    }\n  }\n\n  chainTypeChange (e) {\n    if (e.target.name === this.chainType) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.chainTypeSelectedTargets.forEach((cTypeTarget) => {\n      cTypeTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    this.chainType = e.target.name\n    // reload data\n    globalChainType = this.chainType\n    this.updateOptions()\n    this.handlerExchangesDisplay()\n    this.setButtons()\n    this.setExchaneLinks()\n    this.setExchangeName()\n    orderZoom = undefined\n    this.fetchChart()\n  }\n\n  updateOptions () {\n    const _this = this\n    if (!exchangeStateMap) {\n      return\n    }\n    const volumnedExchanges = exchangeStateMap[this.chainType]\n    // if is top page, update exchange options\n    let selectOptions = ''\n    const exchangeBefore = this.getSelectedExchanges()\n    const selectedExchange = []\n    if (volumnedExchanges && volumnedExchanges.length > 0) {\n      for (let i = 0; i < volumnedExchanges.length; i++) {\n        const exchange = volumnedExchanges[i]\n        if (exchange.State) {\n          selectOptions += `<button name=\"${exchange.Token}\" ${exchange.State.candlesticks ? `data-sticks=\"1\" data-bins=\"${exchange.State.sticks}\"` : ''} ${exchange.State.depth ? 'data-depth=\"1\"' : ''} ` +\n            `class=\"tab-button home-chart-toggle-btn white c-txt-main\">${_this.getExchangeDispName(exchange.Token)}</button>`\n          if (exchangeBefore.includes(exchange.Token)) {\n            selectedExchange.push(exchange.Token)\n          }\n        }\n      }\n      selectOptions += '<button name=\"aggregated\" data-chainmarket-target=\"aggOption\" data-depth=\"1\" ' +\n        'class=\"tab-button home-chart-toggle-btn white c-txt-main\">Aggregated</button>'\n      this.exchangeBtnAreaTarget.innerHTML = selectOptions\n      this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n      availableCandlesticks = {}\n      availableDepths = []\n      this.exchangeOptions = []\n      for (let i = 0; i < this.exchangesButtons.length; i++) {\n        const option = this.exchangesButtons[i]\n        this.exchangeOptions.push(option)\n        if (option.dataset.sticks) {\n          availableCandlesticks[option.name] = option.dataset.bins.split(';')\n        }\n        if (option.dataset.depth) availableDepths.push(option.name)\n      }\n      if (this.chainType === 'dcr') {\n        availableDepths.push('btc_aggregated')\n      }\n      const validExchanges = this.isValidExchange(selectedExchange)\n      const isValidExchanges = validExchanges.length > 0\n      // set current exchange\n      if (isValidExchanges) {\n        this.setActiveExchanges(validExchanges)\n      } else {\n        this.setActiveExchanges(this.getFirstExchangeButton(settings.pair === 'btc' && this.chainType === 'dcr'))\n        this.changeExchangeSetting()\n      }\n    }\n  }\n\n  isValidExchange (selectedExchanges) {\n    const res = []\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const exBtn = this.exchangesButtons[i]\n      if (selectedExchanges.indexOf(exBtn) >= 0 && !exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none')) {\n        res.push(exBtn)\n      }\n    }\n    return res\n  }\n\n  handlerRadiusForBtnGroup (btnGroup) {\n    let firstSetted = false; let lastSetted = false\n    for (let i = 0; i < btnGroup.length; i++) {\n      const btn = btnGroup[i]\n      if (!firstSetted && !btn.classList.contains('d-hide') && !btn.classList.contains('d-none')) {\n        btn.classList.add('first-toggle-btn')\n        firstSetted = true\n      } else {\n        btn.classList.remove('first-toggle-btn')\n      }\n      const lastBtn = btnGroup[btnGroup.length - i - 1]\n      if (!lastSetted && !lastBtn.classList.contains('d-hide') && !lastBtn.classList.contains('d-none')) {\n        lastBtn.classList.add('last-toggle-btn')\n        lastSetted = true\n      } else {\n        lastBtn.classList.remove('last-toggle-btn')\n      }\n    }\n  }\n\n  setActiveExchanges (activeExchanges) {\n    this.exchangesButtons.forEach(exchangeBtn => {\n      if (activeExchanges.includes(exchangeBtn.name)) {\n        exchangeBtn.classList.add('active')\n      } else if (exchangeBtn.classList.contains('active')) {\n        exchangeBtn.classList.remove('active')\n      }\n    })\n  }\n\n  getSelectedExchanges () {\n    const activeExchanges = []\n    this.exchangesButtons.forEach(button => {\n      if (button.classList.contains('active')) {\n        activeExchanges.push(button.name)\n      }\n    })\n    return activeExchanges\n  }\n\n  disconnect () {\n    responseCache = {}\n    window.removeEventListener('resize', this.resize)\n    document.removeEventListener(visibilityChange, this.tabVis)\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n  }\n\n  _resize () {\n    if (this.graph) {\n      orderPtSize = screenIsBig() ? 7 : 4\n      this.graph.resize()\n    }\n    this.setNameDisplay()\n  }\n\n  setNameDisplay () {\n    if (screenIsBig()) {\n      this.xcNameTarget.classList.remove('d-hide')\n    } else {\n      this.xcNameTarget.classList.add('d-hide')\n    }\n  }\n\n  _tabVis () {\n    focused = !document[hidden]\n    if (focused && refreshAvailable) this.refreshChart()\n  }\n\n  async fetchInitialData () {\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    const dummyGraph = new Dygraph(document.createElement('div'), [[0, 1]], { labels: ['', ''] })\n\n    // A little hack to start with the default interaction model. Updating the\n    // interactionModel with updateOptions later does not appear to work.\n    const model = dummyGraph.getOption('interactionModel')\n    model.mousedown = (event, g, context) => {\n      // End panning even if the mouseup event is not on the chart.\n      const mouseup = () => {\n        context.isPanning = false\n        document.removeEventListener('mouseup', mouseup)\n      }\n      document.addEventListener('mouseup', mouseup)\n      context.initializeMouseDown(event, g, context)\n      Dygraph.startPan(event, g, context)\n    }\n    model.mouseup = (event, g, context) => {\n      if (!context.isPanning) return\n      Dygraph.endPan(event, g, context)\n      context.isPanning = false // I think Dygraph is supposed to set this, but they don't.\n      const zoomCallback = g.getOption('zoomCallback')\n      if (zoomCallback) {\n        const range = g.xAxisRange()\n        zoomCallback(range[0], range[1], g.yAxisRanges())\n      }\n    }\n    model.mousemove = (event, g, context) => {\n      if (!context.isPanning) return\n      Dygraph.movePan(event, g, context)\n    }\n    model.touchstart = (event, g, context) => {\n      console.log('TODO: touch start')\n    }\n    model.touchmove = (event, g, context) => {\n      console.log('TODO: touch move')\n    }\n    model.touchend = (event, g, context) => {\n      console.log('TODO: touch end')\n    }\n    commonChartOpts.interactionModel = model\n\n    this.graph = new Dygraph(this.chartTarget, [[0, 0], [0, 1]], commonChartOpts)\n    this.fetchChart()\n  }\n\n  async changePair (e) {\n    const target = e.target || e.srcElement\n    settings.pair = target.value\n    this.handlerExchangesDisplay()\n    this.setButtons()\n    this.setExchangeName()\n    await this.fetchChart()\n    samePair = false\n    if (usesOrderbook(settings.chart)) {\n      this.setZoomPct(defaultZoomPct)\n      samePair = true\n      const stats = this.graph.getOption('stats')\n      const spread = stats.midGap * defaultZoomPct / 100\n      this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n    }\n  }\n\n  handlerExchangesDisplay () {\n    const isBTCPair = settings.pair === 'btc' && this.chainType === 'dcr'\n    this.exchangesButtons.forEach(button => {\n      if (isBTCPair) {\n        this.fiatLabelTarget.textContent = this.chainType.toUpperCase() + '/BTC'\n        if (useBTCPair(button.name)) {\n          button.classList.remove('d-hide')\n        } else if (useUSDPair(button.name)) {\n          button.classList.add('d-hide')\n        }\n      } else {\n        this.fiatLabelTarget.textContent = this.chainType.toUpperCase() + '/USDT'\n        if (useBTCPair(button.name)) {\n          button.classList.add('d-hide')\n        } else if (useUSDPair(button.name)) {\n          button.classList.remove('d-hide')\n        }\n      }\n    })\n    this.reorderExchanges()\n    for (let i = 0; i < this.xcRowTargets.length; i++) {\n      const xcRow = this.xcRowTargets[i]\n      const token = xcRow.dataset.token\n      if (token === 'aggregated') {\n        continue\n      }\n      if (isBTCPair) {\n        if (useBTCPair(token)) {\n          xcRow.classList.remove('d-hide')\n        } else if (useUSDPair(token)) {\n          xcRow.classList.add('d-hide')\n        }\n      } else {\n        if (useBTCPair(token)) {\n          xcRow.classList.add('d-hide')\n        } else if (useUSDPair(token)) {\n          xcRow.classList.remove('d-hide')\n        }\n      }\n    }\n  }\n\n  containExchange (exchange) {\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const exBtn = this.exchangesButtons[i]\n      if (exBtn.name === exchange && !exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none')) {\n        return true\n      }\n    }\n    return false\n  }\n\n  reorderExchanges () {\n    const isBTCPair = settings.pair === 'btc' && this.chainType === 'dcr'\n    const activeExchange = this.getSelectedExchanges()\n    const afterActiveExchange = []\n    const _this = this\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      if (activeExchange.length > 0) {\n        activeExchange.forEach((activeEx) => {\n          if (activeEx !== aggregatedKey && ((isBTCPair && useBTCPair(activeEx)) || (!isBTCPair && useUSDPair(activeEx))) && _this.containExchange(activeEx)) {\n            afterActiveExchange.push(activeEx)\n          }\n        })\n      }\n      if (afterActiveExchange.length <= 0) {\n        afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n      }\n      settings.xcs = afterActiveExchange.join(',')\n    } else {\n      if (activeExchange.length <= 0) {\n        afterActiveExchange.push(usesOrderbook(settings.chart) ? aggregatedKey : _this.getFirstExchangeButton(isBTCPair))\n      } else {\n        const exc = activeExchange[0]\n        if ((isBTCPair && useBTCPair(exc)) || (!isBTCPair && useUSDPair(exc))) {\n          afterActiveExchange.push(exc)\n        } else {\n          afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n        }\n      }\n      if (afterActiveExchange.length > 0) {\n        settings.xc = afterActiveExchange.join(',')\n      }\n    }\n  }\n\n  getXcLogo (xc) {\n    if (xc.startsWith('btc_')) {\n      return xc.replaceAll('btc_', '')\n    }\n    return xc\n  }\n\n  getFirstExchangeButton (isBTCPair) {\n    let firstBtn = this.exchangesButtons[0].name\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const exBtn = this.exchangesButtons[i]\n      if (!exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none') && ((isBTCPair && useBTCPair(exBtn.name)) || (!isBTCPair && useUSDPair(exBtn.name)))) {\n        firstBtn = exBtn.name\n        break\n      }\n    }\n    return firstBtn\n  }\n\n  async fetchChart (isRefresh) {\n    let url\n    requestCounter++\n    const thisRequest = requestCounter\n    let bin = settings.bin\n    let xc = settings.xc\n    if (this.chainType === 'dcr' && xc === 'aggregated' && settings.pair === 'btc') {\n      xc = 'btc_' + xc\n    }\n    const chart = settings.chart\n    const oldZoom = this.graph.xAxisRange()\n    const _this = this\n    if (usesCandlesticks(chart)) {\n      if (settings.chart !== 'history' && settings.chart !== 'volume') {\n        if (!(xc in availableCandlesticks)) {\n          console.warn('invalid candlestick exchange:', xc)\n          return\n        }\n        if (availableCandlesticks[xc].indexOf(bin) === -1) {\n          console.warn('invalid bin:', bin)\n          bin = _this.setLastBin(xc)\n        }\n      }\n      url = `/api/chainchart/${this.chainType}/market/${xc}/candlestick/${bin}`\n    } else if (usesOrderbook(chart)) {\n      if (!validDepthExchange(xc)) {\n        console.warn('invalid depth exchange:', xc)\n        return\n      }\n      url = `/api/chainchart/${this.chainType}/market/${xc}/depth`\n    }\n    if (!url) {\n      console.warn('invalid chart:', chart)\n      return\n    }\n\n    this.chartLoaderTarget.classList.add('loading')\n    let response\n    const xcResponseMap = new Map()\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      const xcs = settings.xcs && settings.xcs !== null ? settings.xcs : settings.xc\n      const xcList = xcs.split(',')\n      if (xcList.length > 0) {\n        for (let i = 0; i < xcList.length; i++) {\n          if (xcList[i].trim() === '') {\n            continue\n          }\n          const itemXc = xcList[i].trim()\n          if (!(itemXc in availableCandlesticks)) {\n            console.warn('invalid candlestick exchange: ', xc)\n            continue\n          }\n          if (availableCandlesticks[itemXc].indexOf(bin) === -1) {\n            console.warn('invalid bin:', bin)\n            bin = _this.setLastBin(itemXc)\n          }\n          const xcUrl = `/api/chainchart/${this.chainType}/market/${xcList[i]}/candlestick/${bin}`\n          let xcResponse\n          if (hasCache(xcUrl)) {\n            xcResponse = responseCache[xcUrl]\n          } else {\n            // response = await axios.get(url)\n            xcResponse = await requestJSON(xcUrl)\n            responseCache[xcUrl] = xcResponse\n          }\n          xcResponseMap.set(xcList[i], xcResponse)\n        }\n        if (thisRequest !== requestCounter) {\n          // new request was issued while waiting.\n          this.chartLoaderTarget.classList.remove('loading')\n          return\n        }\n      }\n    } else {\n      if (hasCache(url)) {\n        response = responseCache[url]\n      } else {\n        // response = await axios.get(url)\n        response = await requestJSON(url)\n        responseCache[url] = response\n        if (thisRequest !== requestCounter) {\n          // new request was issued while waiting.\n          this.chartLoaderTarget.classList.remove('loading')\n          return\n        }\n      }\n    }\n    // Fiat conversion only available for order books for now.\n    if (usesOrderbook(chart)) {\n      this.ageSpanTarget.dataset.age = response.data.time\n      this.ageSpanTarget.textContent = humanize.timeSince(response.data.time)\n      this.ageTarget.classList.remove('d-hide')\n    } else {\n      this.ageTarget.classList.add('d-hide')\n    }\n    // clear canvas before update\n    const canvas = this.chartTarget.querySelector('canvas')\n    if (canvas) {\n      const context = canvas.getContext('2d')\n      context.clearRect(0, 0, canvas.width, canvas.height)\n    }\n    this.graph.updateOptions(chartResetOpts, true)\n    if (settings.chart === 'history') {\n      this.graph.updateOptions(this.processors.xchistory(xcResponseMap))\n    } else if (settings.chart === 'volume') {\n      this.graph.updateOptions(this.processors.xcvolume(xcResponseMap))\n    } else {\n      this.graph.updateOptions(this.processors[chart](response))\n    }\n    if (!this.isHomepage) {\n      this.query.replace(settings)\n    }\n    if (isRefresh) this.graph.updateOptions({ dateWindow: oldZoom })\n    else this.resetZoom()\n    this.chartLoaderTarget.classList.remove('loading')\n    this.lastUrl = url\n    refreshAvailable = false\n  }\n\n  setLastBin (xc) {\n    const availBins = usesOrderbook(settings.chart) ? availableDepths[xc] : availableCandlesticks[xc]\n    for (let i = this.binButtons.length - 1; i >= 0; i--) {\n      const button = this.binButtons[i]\n      if (!button.classList.contains('d-hide') && !button.classList.contains('d-none') && availBins.indexOf(button.name)) {\n        settings.bin = button.name\n        this.setBinSelection()\n        return button.name\n      }\n    }\n    return ''\n  }\n\n  getExchangeDispName (token) {\n    switch (token) {\n      case 'dcrdex':\n        return 'dex.decred.org'\n      default:\n        return this.upperFirstCase(token)\n    }\n  }\n\n  upperFirstCase (token) {\n    return token.charAt(0).toUpperCase() + token.slice(1)\n  }\n\n  processCandlesticks (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    const data = response.sticks.map(stick => {\n      const t = new Date(stick.start)\n      t.setMinutes(t.getMinutes() + halfDuration)\n      return [t, stick.open, stick.close, stick.high, stick.low]\n    })\n    if (data.length === 0) return\n    // limit to 50 points to start. Too many candlesticks = bad.\n    let start = data[0][0]\n    if (data.length > 50) {\n      start = data[data.length - 50][0]\n    }\n    stickZoom = calcStickWindow(start, data[data.length - 1][0], settings.bin)\n    return {\n      file: data,\n      labels: ['time', 'open', 'close', 'high', 'low'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel('Price (USD)'),\n      plotter: candlestickPlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      }\n    }\n  }\n\n  processXcsHistory (responseMap) {\n    const labels = ['time']\n    const colors = []\n    const timeArray = []\n    const timeDataMap = new Map()\n    xcColors[0] = chartStroke\n    let index = 0\n    for (const [key, value] of responseMap) {\n      labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n      colors.push(xcColors[index])\n      value.sticks.map(stick => {\n        const time = new Date(stick.start)\n        if (key === 'huobi' && settings.bin !== '1h') {\n          time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n        }\n        if (settings.bin === '1mo') {\n          time.setHours(0, 0, 0, 0)\n          time.setDate(15)\n        } else if (settings.bin === '1d') {\n          time.setHours(0, 0, 0, 0)\n        } else if (settings.bin === '1h') {\n          time.setMinutes(30, 0, 0)\n        }\n        const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n        // check time exist\n        if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n          timeArray.push(time.getTime())\n        }\n        // check exist on data map\n        const timeInt = time.getTime()\n        let dataArr\n        if (timeDataMap.has(timeInt)) {\n          dataArr = timeDataMap.get(timeInt)\n          dataArr[index] = avg\n        } else {\n          dataArr = []\n          for (let i = 0; i < responseMap.size; i++) {\n            dataArr.push(0)\n          }\n          dataArr[index] = avg\n        }\n        timeDataMap.set(timeInt, dataArr)\n      })\n      index++\n    }\n\n    timeArray.sort(function (time1, time2) {\n      if (time1 > time2) {\n        return 1\n      } else if (time1 < time2) {\n        return -1\n      }\n      return 0\n    })\n    // remove all has zero value item\n    const resArray = []\n    timeArray.forEach((time) => {\n      if (timeDataMap.has(time)) {\n        const dataArray = timeDataMap.get(time)\n        // check has zero data\n        let hasZero = false\n        dataArray.forEach((val) => {\n          if (!val || val <= 0) {\n            hasZero = true\n          }\n        })\n        if (!hasZero) {\n          resArray.push(time)\n        }\n      }\n    })\n    return {\n      file: resArray.map(time => {\n        if (timeDataMap.has(time)) {\n          const dataArray = timeDataMap.get(time)\n          const res = []\n          res.push(new Date(time))\n          res.push(...dataArray)\n          return res\n        }\n        const res = []\n        res.push(new Date(time))\n        for (let i = 0; i < labels.length - 1; i++) {\n          res.push(0)\n        }\n        return res\n      }),\n      labels: labels,\n      xlabel: 'Time',\n      ylabel: getYAxisLabel('Price (USD)'),\n      colors: colors,\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      },\n      strokeWidth: 2\n    }\n  }\n\n  processHistory (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    return {\n      file: response.sticks.map(stick => {\n        const t = new Date(stick.start)\n        t.setMinutes(t.getMinutes() + halfDuration)\n        // Not sure what the best way to reduce a candlestick to a single number\n        // Trying this simple approach for now.\n        const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n        return [t, avg]\n      }),\n      labels: ['time', 'price'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel('Price (USD)'),\n      colors: [chartStroke],\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      },\n      strokeWidth: 3\n    }\n  }\n\n  processVolume (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    return {\n      file: response.sticks.map(stick => {\n        const t = new Date(stick.start)\n        t.setMinutes(t.getMinutes() + halfDuration)\n        return [t, stick.volume]\n      }),\n      labels: ['time', 'volume'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel('Volume (' + globalChainType.toUpperCase() + ` / ${prettyDurations[settings.bin]})`),\n      colors: [chartStroke],\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      },\n      strokeWidth: 3\n    }\n  }\n\n  processXcsVolume (responseMap) {\n    const labels = ['time']\n    const colors = []\n    const timeArray = []\n    const timeDataMap = new Map()\n    let index = 0\n    xcColors[0] = chartStroke\n    for (const [key, value] of responseMap) {\n      labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n      colors.push(xcColors[index])\n      value.sticks.map(stick => {\n        const time = new Date(stick.start)\n        if (key === 'huobi' && settings.bin !== '1h') {\n          time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n        }\n        if (settings.bin === '1mo') {\n          time.setHours(0, 0, 0, 0)\n          time.setDate(15)\n        } else if (settings.bin === '1d') {\n          time.setHours(0, 0, 0, 0)\n        } else if (settings.bin === '1h') {\n          time.setMinutes(30, 0, 0)\n        }\n        const vol = stick.volume\n        // check time exist\n        if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n          timeArray.push(time.getTime())\n        }\n        // check exist on data map\n        const timeInt = time.getTime()\n        let dataArr\n        if (timeDataMap.has(timeInt)) {\n          dataArr = timeDataMap.get(timeInt)\n          dataArr[index] = vol\n        } else {\n          dataArr = []\n          for (let i = 0; i < responseMap.size; i++) {\n            dataArr.push(0)\n          }\n          dataArr[index] = vol\n        }\n        timeDataMap.set(timeInt, dataArr)\n      })\n      index++\n    }\n    timeArray.sort(function (time1, time2) {\n      if (time1 > time2) {\n        return 1\n      } else if (time1 < time2) {\n        return -1\n      }\n      return 0\n    })\n    // remove all has zero value item\n    const resArray = []\n    timeArray.forEach((time) => {\n      if (timeDataMap.has(time)) {\n        const dataArray = timeDataMap.get(time)\n        // check has zero data\n        let hasZero = false\n        dataArray.forEach((val) => {\n          if (!val || val <= 0) {\n            hasZero = true\n          }\n        })\n        if (!hasZero) {\n          resArray.push(time)\n        }\n      }\n    })\n    return {\n      file: resArray.map(time => {\n        if (timeDataMap.has(time)) {\n          const dataArray = timeDataMap.get(time)\n          const res = []\n          res.push(new Date(time))\n          res.push(...dataArray)\n          return res\n        }\n        const res = []\n        res.push(new Date(time))\n        for (let i = 0; i < labels.length - 1; i++) {\n          res.push(0)\n        }\n        return res\n      }),\n      labels: labels,\n      xlabel: 'Time',\n      ylabel: getYAxisLabel('Volume (' + globalChainType.toUpperCase() + ` / ${prettyDurations[settings.bin]})`),\n      colors: colors,\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      },\n      strokeWidth: 2\n    }\n  }\n\n  processDepth (response) {\n    if (response.tokens) {\n      return this.processAggregateDepth(response)\n    }\n    const data = processOrderbook(response, translateDepthSide)\n    return {\n      labels: ['price', 'cumulative sell', 'cumulative buy'],\n      file: data.pts,\n      fillGraph: true,\n      colors: ['#ed6d47', '#41be53'],\n      xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n      ylabel: getYAxisLabel('Volume (' + globalChainType.toUpperCase() + ')'),\n      tokens: null,\n      stats: data.stats,\n      plotter: depthPlotter, // Don't use Dygraph.linePlotter here. fillGraph won't work.\n      zoomCallback: this.zoomCallback,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs,\n          valueFormatter: convertedEightDecimals\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      }\n    }\n  }\n\n  processAggregateDepth (response) {\n    // Re-order the data so that deepest books are first.\n    reorderAggregateData(response)\n    const tokens = response.tokens\n    const data = processOrderbook(response, translateAggregatedDepthSide)\n    const xcCount = tokens.length\n    const keys = sizedArray(xcCount * 2 + 1, null)\n    keys[0] = 'price'\n    const colors = sizedArray(xcCount * 2, null)\n    for (let i = 0; i < xcCount; i++) {\n      const token = tokens[i]\n      const color = getHue(token)\n      keys[i + 1] = ` ${token} sell`\n      keys[xcCount + i + 1] = ` ${token} buy`\n      colors[i] = color\n      colors[xcCount + i] = color\n    }\n    return {\n      labels: keys,\n      file: data.pts,\n      colors: colors,\n      xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n      ylabel: getYAxisLabel('Volume (' + globalChainType.toUpperCase() + ')'),\n      plotter: depthPlotter,\n      fillGraph: aggStacking,\n      stackedGraph: aggStacking,\n      tokens: tokens,\n      stats: data.stats,\n      dupes: data.dupes,\n      zoomCallback: this.zoomCallback,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs,\n          valueFormatter: convertedEightDecimals\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      }\n    }\n  }\n\n  processOrders (response) {\n    const data = processOrderbook(response, response.tokens ? translateAggregatedOrderbookSide : translateOrderbookSide)\n    return {\n      labels: ['price', 'sell', 'buy'],\n      file: data.pts,\n      colors: ['#f93f39cc', '#1acc84cc'],\n      xlabel: `Price (${this.converted ? fiatCode : 'USD'})`,\n      ylabel: getYAxisLabel('Volume (' + globalChainType.toUpperCase() + ')'),\n      plotter: orderPlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.chart)\n        }\n      },\n      zoomCallback: this.zoomCallback,\n      stats: data.stats,\n      strokeWidth: 0,\n      drawPoints: true,\n      logscale: true,\n      xRangePad: 15,\n      yRangePad: 15\n    }\n  }\n\n  justifyBins () {\n    let bins = []\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      if (!settings.xcs || settings.xcs === '') {\n        settings.xcs = settings.xc === 'aggregated' ? this.exchangesButtons[0].name : settings.xc\n      }\n      bins = this.getHistoryChartAvailableBins()\n    } else {\n      if (settings.xc === 'aggregated' && settings.chart === 'candlestick') {\n        settings.xc = this.exchangesButtons[0].name\n      }\n      bins = availableCandlesticks[settings.xc]\n    }\n    if (bins.indexOf(settings.bin) === -1) {\n      settings.bin = bins[0]\n      this.setBinSelection()\n    }\n  }\n\n  getHistoryChartAvailableBins () {\n    const bins = []\n    let xcs = [settings.xc]\n    if (settings.xcs && settings.xcs !== '') {\n      xcs = settings.xcs.split(',')\n    }\n    bins.push(...binList)\n    xcs.forEach((xc) => {\n      const itemBins = availableCandlesticks[xc]\n      for (let i = bins.length - 1; i >= 0; i--) {\n        if (itemBins.indexOf(bins[i]) < 0) {\n          bins.splice(i, 1)\n        }\n      }\n    })\n    return bins\n  }\n\n  setButtons () {\n    this.chartSelectTarget.value = settings.chart\n    let lastExchangeBtn = this.exchangesButtons[0]\n    let lastExchangeIndex = 0\n    if (this.chainType === 'dcr') {\n      this.pairSelectorAreaTarget.classList.remove('d-hide')\n    } else {\n      this.pairSelectorAreaTarget.classList.add('d-hide')\n    }\n    this.exchangesButtons.forEach(exchangeBtn => {\n      const idx = Number(exchangeBtn.dataset.exchangeindex)\n      if (idx > lastExchangeIndex) {\n        lastExchangeIndex = idx\n        lastExchangeBtn = exchangeBtn\n      }\n    })\n    const xsList = settings.chart === 'history' || settings.chart === 'volume' ? settings.xcs.split(',') : settings.xc.split(',')\n    this.setActiveExchanges(xsList)\n    if (usesOrderbook(settings.chart)) {\n      this.binTarget.classList.add('d-hide')\n      this.zoomTarget.classList.remove('d-hide')\n      this.aggOptionTarget.classList.remove('d-hide')\n      lastExchangeBtn.classList.remove('last-toggle-btn')\n    } else {\n      this.binTarget.classList.remove('d-hide')\n      this.aggOptionTarget.classList.add('d-hide')\n      lastExchangeBtn.classList.add('last-toggle-btn')\n      this.zoomTarget.classList.add('d-hide')\n      let bins\n      if (settings.chart === 'history' || settings.chart === 'volume') {\n        bins = this.getHistoryChartAvailableBins()\n      } else {\n        bins = availableCandlesticks[settings.xc]\n      }\n      let lastBinIndex = 0\n      let firstBinIndex = binList.length\n      bins.forEach((bin) => {\n        const indexOfBin = binList.indexOf(bin)\n        if (indexOfBin >= 0) {\n          if (indexOfBin > lastBinIndex) {\n            lastBinIndex = indexOfBin\n          }\n          if (indexOfBin < firstBinIndex) {\n            firstBinIndex = indexOfBin\n          }\n        }\n      })\n      this.binButtons.forEach(button => {\n        if (bins.indexOf(button.name) >= 0) {\n          button.classList.remove('d-hide')\n          if (button.name === binList[lastBinIndex]) {\n            button.classList.add('last-toggle-btn')\n          } else {\n            button.classList.remove('last-toggle-btn')\n          }\n          if (button.name === binList[firstBinIndex]) {\n            button.classList.add('first-toggle-btn')\n          } else {\n            button.classList.remove('first-toggle-btn')\n          }\n        } else {\n          button.classList.add('d-hide')\n        }\n      })\n      this.setBinSelection()\n    }\n    const depthDisabled = !validDepthExchange(settings.xc)\n    this.depthOnlyTargets.forEach(option => {\n      option.disabled = depthDisabled\n    })\n    if (settings.xc === aggregatedKey && settings.chart === depth) {\n      this.aggStackTarget.classList.remove('d-hide')\n      settings.stack = aggStacking ? 1 : 0\n    } else {\n      this.aggStackTarget.classList.add('d-hide')\n      settings.stack = null\n    }\n    this.handlerRadiusForBtnGroup(this.exchangesButtons)\n    this.handlerRadiusForBtnGroup(this.binButtons)\n  }\n\n  setBinSelection () {\n    const bin = settings.bin\n    this.binButtons.forEach(button => {\n      if (button.name === bin) {\n        button.classList.add('active')\n      } else {\n        button.classList.remove('active')\n      }\n    })\n  }\n\n  changeGraph (e) {\n    const target = e.target || e.srcElement\n    settings.chart = target.value\n    if (usesCandlesticks(settings.chart)) {\n      this.justifyBins()\n    }\n    this.reorderExchanges()\n    this.setButtons()\n    this.setExchangeName()\n    this.fetchChart()\n  }\n\n  changeExchangeSetting () {\n    const selectedExchanges = this.getSelectedExchanges().join(',')\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      settings.xcs = selectedExchanges\n    } else {\n      settings.xc = selectedExchanges\n    }\n    this.setExchangeName()\n    if (usesCandlesticks(settings.chart)) {\n      if (!availableCandlesticks[settings.xc]) {\n        // exchange does not have candlestick data\n        // show the depth chart.\n        settings.chart = depth\n      } else {\n        this.justifyBins()\n      }\n    }\n    this.setButtons()\n  }\n\n  setExchange (e) {\n    let node = e.target || e.srcElement\n    while (node && node.nodeName !== 'TR') node = node.parentNode\n    if (!node || !node.dataset || !node.dataset.token) return\n    if (usesCandlesticks(settings.chart) && node.dataset.token === aggregatedKey) {\n      return\n    }\n    this.handlerExchange(node.dataset.token)\n  }\n\n  changeBin (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    settings.bin = btn.name\n    this.justifyBins()\n    this.setBinSelection()\n    this.fetchChart()\n  }\n\n  changeExchange (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.handlerExchange(btn.name)\n  }\n\n  handlerExchange (token) {\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      const xcs = settings.xcs.split(',')\n      if (xcs.indexOf(token) < 0) {\n        xcs.push(token)\n      } else {\n        if (xcs.length > 1) {\n          xcs.splice(xcs.indexOf(token), 1)\n        } else {\n          return\n        }\n      }\n      settings.xcs = xcs.join(',')\n    } else {\n      if (settings.xc === token) {\n        return\n      }\n      settings.xc = token\n    }\n    this.setExchangeName()\n    if (usesCandlesticks(settings.chart)) {\n      if (settings.xc !== 'aggregated') {\n        if (!availableCandlesticks[settings.xc]) {\n          settings.chart = depth\n        }\n      }\n      this.justifyBins()\n    }\n    this.setButtons()\n    orderZoom = undefined\n    this.fetchChart()\n  }\n\n  resetZoom () {\n    if (settings.chart === candlestick) {\n      this.graph.updateOptions({ dateWindow: stickZoom })\n    } else if (usesOrderbook(settings.chart)) {\n      if (orderZoom && samePair) this.graph.updateOptions({ dateWindow: orderZoom })\n      else {\n        this.setZoomPct(defaultZoomPct)\n        samePair = true\n      }\n    } else {\n      this.graph.resetZoom()\n    }\n  }\n\n  refreshChart () {\n    refreshAvailable = true\n    if (!focused) {\n      return\n    }\n    this.fetchChart(true)\n  }\n\n  setConversion (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.conversionTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n    btn.classList.add('btn-selected')\n    let cLabel = 'USD'\n    if (e.target.name === 'USD') {\n      this.converted = false\n      conversionFactor = 1\n    } else {\n      this.converted = true\n      conversionFactor = btcPrice\n      cLabel = fiatCode\n    }\n    this.graph.updateOptions({ xlabel: `Price (${cLabel})` })\n  }\n\n  setExchangeName () {\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      this.xcLogoTarget.classList.add('d-hide')\n      this.actionsTarget.classList.add('d-hide')\n      // exchange name\n      const exchanges = []\n      if (settings.xcs) {\n        const exStrArr = settings.xcs.split(',')\n        exStrArr.forEach((ex) => {\n          exchanges.push(ex.charAt(0).toUpperCase() + ex.slice(1))\n        })\n      }\n      this.xcNameTarget.textContent = exchanges.join(',')\n      this.xcNameTarget.classList.add('fs-17')\n    } else {\n      this.xcLogoTarget.classList.remove('d-hide')\n      this.xcNameTarget.classList.remove('fs-17')\n      this.xcLogoTarget.className = `exchange-logo ${this.getXcLogo(settings.xc)}`\n      const prettyName = printName(settings.xc)\n      this.xcNameTarget.textContent = prettyName\n      const href = this.exchangeLinks[settings.xc]\n      if (href) {\n        this.linkTarget.href = href\n        this.linkTarget.textContent = `Visit ${prettyName}`\n        this.actionsTarget.classList.remove('d-hide')\n      } else {\n        this.actionsTarget.classList.add('d-hide')\n      }\n    }\n  }\n\n  _processNightMode (data) {\n    if (!this.graph) return\n    chartStroke = data.nightMode ? darkStroke : lightStroke\n    if (settings.chart === history || settings.chart === volume) {\n      this.graph.updateOptions({ colors: [chartStroke] })\n    }\n    if (settings.chart === orders || settings.chart === depth) {\n      this.graph.setAnnotations([])\n    }\n  }\n\n  getExchangeRow (token) {\n    const rows = this.xcRowTargets\n    for (let i = 0; i < rows.length; i++) {\n      const tr = rows[i]\n      if (tr.dataset.token === token) {\n        const row = {}\n        tr.querySelectorAll('td').forEach(td => {\n          switch (td.dataset.type) {\n            case 'price':\n              row.price = td\n              break\n            case 'volume':\n              row.volume = td\n              break\n            case 'fiat':\n              row.fiat = td\n              break\n            case 'arrow':\n              row.arrow = td.querySelector('span')\n              break\n          }\n        })\n        return row\n      }\n    }\n    return null\n  }\n\n  setStacking (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.aggStackTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n    btn.classList.add('btn-selected')\n    aggStacking = btn.name === 'on'\n    this.graph.updateOptions({ stackedGraph: aggStacking, fillGraph: aggStacking })\n  }\n\n  setZoom (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.setZoomPct(parseInt(btn.name))\n    const stats = this.graph.getOption('stats')\n    const spread = stats.midGap * parseFloat(btn.name) / 100\n    this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n  }\n\n  setZoomPct (pct) {\n    this.zoomButtons.forEach(b => {\n      if (parseInt(b.name) === pct) b.classList.add('btn-selected')\n      else b.classList.remove('btn-selected')\n    })\n    const stats = this.graph.getOption('stats')\n    const spread = stats.midGap * pct / 100\n    let low = stats.midGap - spread\n    let high = stats.midGap + spread\n    const [min, max] = this.graph.xAxisExtremes()\n    if (low < min) low = min\n    if (high > max) high = max\n    orderZoom = [low, high]\n    this.graph.updateOptions({ dateWindow: orderZoom })\n  }\n\n  _zoomCallback (start, end) {\n    orderZoom = [start, end]\n    this.zoomButtons.forEach(b => b.classList.remove('btn-selected'))\n  }\n\n  _processXcUpdate (update) {\n    const xc = update.updater\n    const cType = xc.chain_type\n    if (cType !== this.chainType) {\n      return\n    }\n    if (update.fiat) { // btc-fiat exchange update\n      this.xcIndexTargets.forEach(span => {\n        if (span.dataset.token === xc.token) {\n          span.textContent = humanize.commaWithDecimal(xc.price, 2)\n        }\n      })\n    } else { // dcr-btc exchange update\n      const row = this.getExchangeRow(xc.token)\n      if (!row) {\n        return\n      }\n      if (row.volume) {\n        row.volume.textContent = humanize.threeSigFigs(xc.volume)\n      }\n      if (row.price) {\n        row.price.textContent = humanize.threeSigFigs(xc.price)\n      }\n      if (row.fiat) {\n        row.fiat.textContent = (xc.price * update.btc_price).toFixed(2)\n      }\n      if (xc.change === 0) {\n        row.arrow.className = ''\n      } else if (xc.change > 0) {\n        row.arrow.className = 'dcricon-arrow-up text-green'\n      } else {\n        row.arrow.className = 'dcricon-arrow-down text-danger'\n      }\n    }\n    // Update the big displayed value and the aggregated row\n    const fmtPrice = update.price.toFixed(2)\n    this.priceTarget.textContent = fmtPrice\n    const aggRow = this.getExchangeRow(aggregatedKey)\n    btcPrice = update.btc_price\n    if (!aggRow) {\n      return\n    }\n    if (aggRow.price) {\n      aggRow.price.textContent = humanize.threeSigFigs(update.price / btcPrice)\n    }\n    if (aggRow.volume) {\n      aggRow.volume.textContent = humanize.threeSigFigs(update.volume)\n    }\n    if (aggRow.fiat) {\n      aggRow.fiat.textContent = fmtPrice\n    }\n    // Auto-update the chart if it makes sense.\n    if (settings.xc !== aggregatedKey && settings.xc !== xc.token) return\n    if (settings.xc === aggregatedKey &&\n      hasCache(this.lastUrl) &&\n      responseCache[this.lastUrl].tokens.indexOf(update.updater) === -1) return\n    if (usesOrderbook(settings.chart)) {\n      clearCache(this.lastUrl)\n      this.refreshChart()\n    } else if (usesCandlesticks(settings.chart)) {\n      // Only show refresh button if cache is expired\n      if (!hasCache(this.lastUrl)) {\n        this.refreshChart()\n      }\n    }\n  }\n}\n\nfunction aggregateSums (side, sums, tokens, cutoff) {\n  for (const pt of side) {\n    if (cutoff(pt.price)) continue\n    for (const i in tokens) sums[i][1] += pt.volumes[i]\n  }\n}\n\n/*\n * reorderAggregateData reorders the aggregated order book data so that the\n * deepest books are first.\n */\nfunction reorderAggregateData (response) {\n  let tokens = response.tokens\n  const sums = []\n  for (const token of tokens) sums.push([token, 0])\n\n  const stats = orderbookStats(response.data.bids, response.data.asks)\n\n  aggregateSums(response.data.bids, sums, tokens, v => v < stats.lowCut)\n  aggregateSums(response.data.asks, sums, tokens, v => v > stats.highCut)\n\n  sums.sort((a, b) => a[1] - b[1])\n\n  const idxKey = {}\n  for (const i in sums) idxKey[sums[i][0]] = i\n\n  const reorder = side => {\n    for (const pt of side) {\n      const v = []\n      for (const i in pt.volumes) v[idxKey[tokens[i]]] = pt.volumes[i]\n      pt.volumes = v\n    }\n  }\n  reorder(response.data.bids)\n  reorder(response.data.asks)\n\n  response.tokens = tokens = sums.map(v => v[0])\n}\n\n/*\n * findAggregateDupes finds price bins in the aggregated depth chart data that\n * have entries on both the buy and sell sides. Dygraphs doesn't handle the\n * duplicates well during drawing, so we will try to clean up the Dygraphs data\n * before passing it to the plotter.\n */\nfunction findAggregateDupes (buys, sells) {\n  const dupes = []\n  if (sells.length) {\n    let sellIdx = 0\n    let sellPrice = sells[sellIdx][0]\n\n    for (const i in buys) {\n      const buyPrice = buys[i][0]\n      if (buyPrice < sellPrice) continue\n\n      while (buyPrice > sellPrice) {\n        sellIdx++\n        if (sellIdx >= sells.length) return dupes\n        sellPrice = sells[sellIdx][0]\n      }\n      if (Math.round(buyPrice * 1e8) === Math.round(sellPrice * 1e8)) {\n        // Found a duplicate.\n        dupes.push({\n          price: buyPrice,\n          i: buys.length + sellIdx,\n          buy: buys[i],\n          sell: sells[sellIdx]\n        })\n      }\n    }\n  }\n  return dupes\n}\n\n/*\n * fixAggregateStacking attempts to correct a Dygraphs limitation where stacked\n * plots don't display right when 1) the data isn't monotionically increasing in\n * price, and 2) there is an exact match on price on the doubled back region.\n */\nfunction fixAggregateStacking (e) {\n  if (e.setName.endsWith('buy')) return // only sell sides need fixing\n  const dupes = e.dygraph.getOption('dupes')\n  if (!dupes || dupes.length === 0) return\n  let dupeIdx = 0\n  let dupe = dupes[dupeIdx]\n  // var dataIdx = e.seriesIndex + 1\n  // var accume = 0\n  // var accumeStacked = 0\n  const pts = e.points\n  for (let i = dupe.i; i < pts.length; i++) {\n    const pt = pts[i]\n    if (dupe && i === dupe.i) {\n      // Need to adjust this one. Find a way to find a mapping from value to\n      // ratio to canvas position.\n\n      // Figure out how much buy order is mistakenly added.\n      const misplacedVal = dupe.buy.reduce((acc, v) => { return i === 0 ? acc : acc + v }, 0)\n      const subRatio = misplacedVal / e.axis.maxyval\n      // Fixing these three values doesn't actually seem to affect the display,\n      // but fixing them anyway.\n      pt.y += subRatio\n      pt.y_stacked += subRatio\n      pt.yval_stacked -= misplacedVal\n      // This line is the ticket to remove the dark black outline on the spike.\n      pt.canvasy += subRatio * e.plotArea.h\n\n      // TODO: Figure out how to add in missed accumulation, since the Dygraph\n      // bug seems to ignore the actual sell value. Or just dump Dygraphs and\n      // use canvas directly.\n      // accumeStacked += dupe.sell.reduce((acc, v) => { return i === 0 ? acc : acc + v}, 0)\n      // accume += dupe.sell[dataIdx]\n\n      dupeIdx++\n      if (dupeIdx >= dupes.length) dupe = null\n      else dupe = dupes[dupeIdx]\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport mempoolJS from '../vendor/mempool'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['txCount', 'totalFees', 'txOutCount', 'minFeeRate', 'maxFeeRate', 'transList', 'totalSent', 'bestBlock', 'bestBlockTime', 'lastBlockSize']\n  }\n\n  initialize () {\n    this.chainType = this.data.get('chainType')\n    this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n  }\n\n  connect () {\n    const { bitcoin: { websocket } } = mempoolJS({\n      hostname: this.wsHostName\n    })\n    this.ws = websocket.initClient({\n      options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n    })\n    this.mempoolSocketInit()\n  }\n\n  disconnect () {\n    this.ws.close()\n  }\n\n  async mempoolSocketInit () {\n    const _this = this\n    this.ws.addEventListener('message', function incoming ({ data }) {\n      const res = JSON.parse(data.toString())\n      if (res.mempoolInfo) {\n        _this.txCountTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.size, true, 0)\n        if (_this.chainType === 'btc') {\n          _this.totalFeesTarget.innerHTML = humanize.decimalParts(res.mempoolInfo.total_fee, false, 8, 2)\n        }\n      }\n      if (res['mempool-blocks']) {\n        let totalSize = 0\n        let ltcTotalFee = 0\n        let minFeeRatevB = Number.MAX_VALUE\n        let maxFeeRatevB = 0\n        res['mempool-blocks'].forEach(memBlock => {\n          totalSize += memBlock.blockSize\n          if (_this.chainType === 'ltc') {\n            ltcTotalFee += memBlock.totalFees\n          }\n          if (memBlock.feeRange) {\n            memBlock.feeRange.forEach(feevB => {\n              if (minFeeRatevB > feevB) {\n                minFeeRatevB = feevB\n              }\n              if (maxFeeRatevB < feevB) {\n                maxFeeRatevB = feevB\n              }\n            })\n          }\n        })\n        if (_this.chainType === 'ltc') {\n          _this.totalFeesTarget.innerHTML = humanize.decimalParts(ltcTotalFee / 1e8, false, 8, 2)\n        }\n        _this.minFeeRateTarget.innerHTML = humanize.decimalParts(minFeeRatevB, true, 0)\n        _this.maxFeeRateTarget.innerHTML = humanize.decimalParts(maxFeeRatevB, true, 0)\n        _this.lastBlockSizeTarget.innerHTML = humanize.bytes(totalSize)\n      }\n      if (res.block) {\n        const blockHeight = res.block.height\n        _this.bestBlockTarget.textContent = blockHeight\n        _this.bestBlockTimeTarget.setAttribute('data-age', res.block.timestamp)\n        const extras = res.block.extras\n        _this.txOutCountTarget.innerHTML = humanize.decimalParts(extras.totalOutputs, true, 0)\n        _this.totalSentTarget.innerHTML = humanize.threeSigFigs(extras.totalOutputAmt / 1e8)\n      }\n      if (res.blocks) {\n        let txOutCount = 0\n        let totalSent = 0\n        res.blocks.forEach(block => {\n          const extras = block.extras\n          txOutCount += extras.totalOutputs\n          totalSent += extras.totalOutputAmt\n        })\n        _this.txOutCountTarget.innerHTML = humanize.decimalParts(txOutCount, true, 0)\n        _this.totalSentTarget.innerHTML = humanize.threeSigFigs(totalSent / 1e8)\n      }\n      if (res.transactions) {\n        let inner = ''\n        res.transactions.forEach(tx => {\n          const txHash = tx.txid\n          const totalOut = tx.value\n          const fees = tx.fee\n          const rate = tx.rate\n          inner += `<tr><td class=\"break-word clipboard\"><a class=\"hash lh1rem\" href=\"/${_this.chainType}/tx/${txHash}\">${txHash}</a><span class=\"dcricon-copy clickable\" data-controller=\"clipboard\"` +\n                  'data-action=\"click->clipboard#copyTextToClipboard\"></span><span class=\"alert alert-secondary alert-copy\"></span></td>'\n          inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(totalOut / 1e8, false, 8, 2)}</td>`\n          inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(fees / 1e8, false, 8, 2)}</td>`\n          inner += `<td class=\"mono fs15 text-end\">${humanize.decimalParts(rate, false, 8, 2)}</td></tr>`\n        })\n        _this.transListTarget.innerHTML = inner\n      }\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\nimport mempoolJS from '../vendor/mempool'\nimport humanize from '../helpers/humanize_helper'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['box', 'title', 'showmore', 'root', 'txs', 'tooltip', 'block',\n      'memTotalSent', 'memTime']\n  }\n\n  connect () {\n    this.chainType = this.data.get('chainType')\n    this.wsHostName = this.chainType === 'ltc' ? 'litecoinspace.org' : 'mempool.space'\n    this.processBlock = this._processBlock.bind(this)\n    switch (this.chainType) {\n      case 'ltc':\n        globalEventBus.on('LTC_BLOCK_RECEIVED', this.processBlock)\n        break\n      case 'btc':\n        globalEventBus.on('BTC_BLOCK_RECEIVED', this.processBlock)\n    }\n    const { bitcoin: { websocket } } = mempoolJS({\n      hostname: this.wsHostName\n    })\n    this.ws = websocket.initClient({\n      options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart']\n    })\n    this.mempoolSocketInit()\n  }\n\n  disconnect () {\n    switch (this.chainType) {\n      case 'ltc':\n        globalEventBus.off('LTC_BLOCK_RECEIVED', this.processBlock)\n        break\n      case 'btc':\n        globalEventBus.off('BTC_BLOCK_RECEIVED', this.processBlock)\n    }\n    // close websocket for mempool\n    this.ws.close()\n  }\n\n  _processBlock (blockData) {\n    const blocks = blockData.blocks\n    const newBlock = blockData.block\n    if (!blocks || !newBlock) {\n      return\n    }\n    // get last block (oldest block) target\n    this.blockTargets.forEach(blockTarget => {\n      if (blockTarget.id !== 'memblocks') {\n        let exist = false\n        // remove block exclude in blocks\n        blocks.forEach(block => {\n          if (Number(block.height) === Number(blockTarget.id)) {\n            exist = true\n          }\n        })\n        if (!exist) {\n        // if not exist, remove\n          blockTarget.remove()\n        }\n      }\n    })\n\n    // sort blocks\n    blocks.sort((a, b) => {\n      if (a.height > b.height) {\n        return 1\n      }\n      if (a.height < b.height) {\n        return -1\n      }\n      return 0\n    })\n\n    let firstBlockHeight = 0\n    // get first block target height on DOM\n    this.blockTargets.forEach(blockTarget => {\n      if (blockTarget.id !== 'memblocks') {\n        if (Number(blockTarget.id) > firstBlockHeight) {\n          firstBlockHeight = Number(blockTarget.id)\n        }\n      }\n    })\n    const _this = this\n    // mempool outerHTML\n    const mempoolBlock = document.getElementById('memblocks')\n    if (!mempoolBlock) {\n      return\n    }\n    const meminnerHtml = mempoolBlock.innerHTML\n    if (!meminnerHtml) {\n      return\n    }\n    mempoolBlock.remove()\n    blocks.forEach(block => {\n      if (block.height > firstBlockHeight) {\n      // Create best block target\n        const bestBlockTarget = '<div class=\"block-info\">' +\n        `<a class=\"color-code\" href=\"/${_this.chainType}/block/${block.height}\">${block.height}</a>` +\n        '<div class=\"mono amount\" style=\"line-height: 1;\">' +\n        `<span>${humanize.threeSigFigs(block.TotalSentSats / 1e8)}</span>` +\n        `<span class=\"unit\">${_this.chainType.toUpperCase()}</span>` +\n        `</div><span class=\"timespan\"><span data-time-target=\"age\" data-age=\"${block.blocktime_unix}\"></span>&nbsp;ago</span></div>` +\n        '<div class=\"block-rows chain-block-rows\"><div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: 1\">' +\n        `<span class=\"pow chain-pow left-vs-block-data\" style=\"flex-grow: ${block.BlockReward / 1e8}\" ` +\n        `title='{\"object\": \"Block Reward\", \"total\": \"${block.BlockReward / 1e8}\"}' ` +\n        'data-chainvisualBlocks-target=\"tooltip\"><span class=\"block-element-link\"></span>' +\n        `</span><span class=\"fees right-vs-block-data\" style=\"flex-grow: ${block.FeesSats / 1e8}\" ` +\n        `title='{\"object\": \"Tx Fees\", \"total\": \"${block.FeesSats / 1e8}\"}' data-chainvisualBlocks-target=\"tooltip\">` +\n        '<span class=\"block-element-link\"></span></span></div><div class=\"block-transactions px-1 my-1\" style=\"flex-grow: 1\">' +\n        `<span class=\"chain-block-tx left-vs-block-data\" style=\"flex-grow: ${block.tx_count}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Tx Count\", \"count\": \"${block.tx_count}\"}'>` +\n        '<span class=\"block-element-link\"></span></span>' +\n        `<span class=\"chain-block-tx\" style=\"flex-grow: ${block.TotalInputs}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Inputs Count\", \"count\": \"${block.TotalInputs}\"}'>` +\n        '<span class=\"block-element-link\"></span></span>' +\n        `<span class=\"chain-block-tx right-vs-block-data\" style=\"flex-grow: ${block.TotalOutputs}\" data-chainvisualBlocks-target=\"tooltip\" title='{\"object\": \"Outputs Count\", \"count\": \"${block.TotalOutputs}\"}'>` +\n        '<span class=\"block-element-link\"></span></span></div></div>'\n        // create first block\n        const theFirst = document.createElement('div')\n        theFirst.setAttribute('data-chainvisualBlocks-target', 'block')\n        theFirst.id = block.height + ''\n        theFirst.classList.add('block')\n        theFirst.classList.add('visible')\n        theFirst.innerHTML = bestBlockTarget\n        _this.boxTarget.prepend(theFirst)\n      }\n    })\n    // create mempool box\n    const mempoolBox = document.createElement('div')\n    mempoolBox.setAttribute('data-chainvisualBlocks-target', 'block')\n    mempoolBox.id = 'memblocks'\n    mempoolBox.classList.add('block')\n    mempoolBox.classList.add('visible')\n    mempoolBox.innerHTML = meminnerHtml\n    this.boxTarget.prepend(mempoolBox)\n    this.setupTooltips()\n  }\n\n  visibleBlocks () {\n    return this.boxTarget.querySelectorAll('.visible')\n  }\n\n  mempoolSocketInit () {\n    const _this = this\n    const memBlockReward = document.getElementById('memBlockReward')\n    const memFeeSpan = document.getElementById('memFeeSpan')\n    const memTxCount = document.getElementById('memTxCount')\n    const memInputCount = document.getElementById('memInputCount')\n    const memOutputCount = document.getElementById('memOutputCount')\n    // mempool local data\n    this.txCount = Number(memTxCount.getAttribute('data-value'))\n    this.fees = parseFloat(memFeeSpan.getAttribute('data-value'))\n    this.totalSent = parseFloat(this.memTotalSentTarget.getAttribute('data-value'))\n    this.inputsCount = Number(memInputCount.getAttribute('data-value'))\n    this.outputsCount = Number(memOutputCount.getAttribute('data-value'))\n    this.memRewardBlockOuter = memBlockReward.outerHTML\n    this.ws.addEventListener('message', function incoming ({ data }) {\n      let hasChange = false\n      const res = JSON.parse(data.toString())\n      if (res.mempoolInfo) {\n        hasChange = true\n        _this.txCount = res.mempoolInfo.size\n        if (_this.chainType === 'btc') {\n          _this.fees = res.mempoolInfo.total_fee\n        }\n      }\n      if (res['mempool-blocks']) {\n        hasChange = true\n        let ltcTotalFee = 0\n        res['mempool-blocks'].forEach(memBlock => {\n          if (_this.chainType === 'ltc') {\n            ltcTotalFee += memBlock.totalFees\n          }\n        })\n        if (_this.chainType === 'ltc') {\n          _this.fees = ltcTotalFee / 1e8\n        }\n      }\n      if (res.block) {\n        hasChange = true\n        const extras = res.block.extras\n        _this.inputsCount = extras.totalInputs\n        _this.outputsCount = extras.totalOutputs\n        _this.totalSent = extras.totalOutputAmt / 1e8\n      }\n      if (res.blocks) {\n        hasChange = true\n        let txOutCount = 0\n        let txInCount = 0\n        let tempTotalSent = 0\n        res.blocks.forEach(block => {\n          const extras = block.extras\n          txOutCount += extras.totalOutputs\n          txInCount += extras.totalInputs\n          tempTotalSent += extras.totalOutputAmt\n        })\n        _this.totalSent = tempTotalSent / 1e8\n        _this.inputsCount = txInCount\n        _this.outputsCount = txOutCount\n      }\n      if (hasChange) {\n        const mempoolBox = document.getElementById('memblocks')\n        if (mempoolBox) {\n          mempoolBox.remove()\n        }\n        // Create best block target\n        const mempoolInnerTarget = '<div class=\"block-info\">' +\n        `<a class=\"color-code\" href=\"/${_this.chainType}/mempool\">Mempool</a>` +\n        '<div class=\"mono amount\" style=\"line-height: 1;\">' +\n        `<span>${humanize.threeSigFigs(_this.totalSent)}</span>` +\n        `<span class=\"unit\">${_this.chainType.toUpperCase()}</span>` +\n        '</div><span class=\"timespan\">now</span></div>' +\n        '<div class=\"block-rows chain-block-rows\"><div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: 1\">' +\n        _this.memRewardBlockOuter +\n        `<span class=\"fees right-vs-block-data\" style=\"flex-grow: ${_this.fees / 1e8}\" ` +\n        `title='{\"object\": \"Tx Fees\", \"total\": \"${_this.fees}\"}' data-chainvisualBlocks-target=\"tooltip\">` +\n        '<span class=\"block-element-link\"></span></span></div><div class=\"block-transactions px-1 my-1\" style=\"flex-grow: 1\">' +\n        `<span class=\"chain-block-tx left-vs-block-data\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.txCount}\" title='{\"object\": \"Tx Count\", \"count\": \"${_this.txCount}\"}'>` +\n        '<span class=\"block-element-link\"></span></span>' +\n        `<span class=\"chain-block-tx\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.inputsCount}\" title='{\"object\": \"Inputs Count\", \"count\": \"${_this.inputsCount}\"}'>` +\n        '<span class=\"block-element-link\"></span></span>' +\n        `<span class=\"chain-block-tx right-vs-block-data\" data-chainvisualBlocks-target=\"tooltip\" style=\"flex-grow: ${_this.outputsCount}\" title='{\"object\": \"Outputs Count\", \"count\": \"${_this.outputsCount}\"}'>` +\n        '<span class=\"block-element-link\"></span></span></div></div>'\n        // remove old mempool box\n        const theKid = document.createElement('div')\n        theKid.setAttribute('data-chainvisualBlocks-target', 'block')\n        theKid.id = 'memblocks'\n        theKid.classList.add('block')\n        theKid.classList.add('visible')\n        theKid.innerHTML = mempoolInnerTarget\n        _this.boxTarget.prepend(theKid)\n        _this.setupTooltips()\n      }\n    })\n  }\n\n  setupTooltips () {\n    const _this = this\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.count) {\n          newContent = `<b>${data.object}</b><br>${data.count}`\n        } else {\n          newContent = `<b>${data.object}</b><br>${data.total} ` + _this.chainType.toUpperCase()\n        }\n        tooltipElement.title = newContent\n      } catch (error) {}\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper'\nimport { isEqual } from '../helpers/chart_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport { darkEnabled } from '../services/theme_service'\n\nlet selectedChart\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'pow-difficulty', 'missed-votes']\nconst rangeUse = ['hashrate', 'pow-difficulty']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nconst multiYAxisChart = ['ticket-price', 'coin-supply', 'privacy-participation']\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst chainworkUnits = ['exahash', 'zettahash', 'yottahash']\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet ticketPoolSizeTarget, premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, windowSize, avgBlockTime\nlet rawCoinSupply, rawPoolValue\nlet yFormatter, legendEntry, legendMarker, legendElement\nlet rangeOption = ''\nconst yAxisLabelWidth = {\n  y1: {\n    'ticket-price': 30,\n    'ticket-pool-size': 30,\n    'ticket-pool-value': 30,\n    'stake-participation': 30,\n    'privacy-participation': 40,\n    'missed-votes': 30,\n    'block-size': 35,\n    'blockchain-size': 30,\n    'tx-count': 45,\n    'duration-btw-blocks': 40,\n    'pow-difficulty': 40,\n    chainwork: 35,\n    hashrate: 40,\n    'coin-supply': 30,\n    fees: 35\n  },\n  y2: {\n    'ticket-price': 45\n  }\n}\n\nfunction usesWindowUnits (chart) {\n  return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n  return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n  return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n  return modeScales.includes(chart)\n}\n\nfunction hasMultipleVisibility (chart) {\n  return multiYAxisChart.indexOf(chart) > -1\n}\n\nfunction useRange (chart) {\n  return rangeUse.indexOf(chart) > -1\n}\n\nfunction intComma (amount) {\n  if (!amount) return ''\n  return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction isMobile () {\n  return window.innerWidth <= 768\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n  const axesIndexes = yValueRanges[chartName]\n  if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n    origYRange.length !== newYRange.length || !axesIndexes) return\n\n  let axes\n  for (let i = 0; i < axesIndexes.length; i++) {\n    const index = axesIndexes[i]\n    if (newYRange.length <= index) continue\n    if (!isEqual(origYRange[index], newYRange[index])) {\n      if (!axes) axes = {}\n      if (index === 0) {\n        axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n      } else if (index === 1) {\n        axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n      }\n    }\n  }\n  return axes\n}\n\nfunction withBigUnits (v, units) {\n  const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n  return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n  if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n  if (height > 1) return baseSubsidy * (1 - stakeShare)\n  if (height === 1) return premine\n  return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n  addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n  return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n  if (data.x == null) return legendElement.classList.add('d-hide')\n  legendElement.classList.remove('d-hide')\n  const div = document.createElement('div')\n  let xHTML = data.xHTML\n  if (data.dygraph.getLabels()[0] === 'Date') {\n    xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n  }\n  div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n  yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n  dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n  return div.innerHTML\n}\n\nfunction hashrateTimePlotter (e) {\n  // ASIC miners get turned on\n  const asicLines = ['● ASIC miners', 'get turned on']\n  hashrateLegendPlotter(e, 1546339611000, 197, asicLines, 'left')\n  // Miner reward change 60% to 10%\n  const minerLines = ['● Miner reward', 'change 60% to 10%']\n  hashrateLegendPlotter(e, 1652266011000, 150, minerLines, 'right')\n  if (rangeOption !== 'before' || rangeOption !== 'after') {\n    const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n    hashrateLegendPlotter(e, 1693612800000, 0, lines, 'right')\n  }\n}\n\nfunction hashrateBlockPlotter (e) {\n  // ASIC miners get turned on\n  const asicLines = ['● ASIC miners', 'get turned on']\n  hashrateLegendPlotter(e, 306247, 197, asicLines, 'left')\n  // Miner reward change 60% to 10%\n  const minerLines = ['● Miner reward', 'change 60% to 10%']\n  hashrateLegendPlotter(e, 658518, 150, minerLines, 'right')\n  if (rangeOption !== 'before' || rangeOption !== 'after') {\n    const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n    hashrateLegendPlotter(e, 794429, 0, lines, 'right')\n  }\n}\n\nfunction difficultyTimePlotter (e) {\n  // ASIC miners get turned on\n  const asicLines = ['● ASIC miners', 'get turned on']\n  hashrateLegendPlotter(e, 1546339611000, 11500000000, asicLines, 'left')\n  // Miner reward change 60% to 10%\n  const minerLines = ['● Miner reward', 'change 60% to 10%']\n  hashrateLegendPlotter(e, 1652266011000, 10000000000, minerLines, 'right')\n  if (rangeOption !== 'before' || rangeOption !== 'after') {\n    const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n    hashrateLegendPlotter(e, 1693612800000, 0, lines, 'right')\n  }\n}\n\nfunction difficultyBlockPlotter (e) {\n  // ASIC miners get turned on\n  const asicLines = ['● ASIC miners', 'get turned on']\n  hashrateLegendPlotter(e, 306247, 11500000000, asicLines, 'left')\n  // Miner reward change 60% to 10%\n  const minerLines = ['● Miner reward', 'change 60% to 10%']\n  hashrateLegendPlotter(e, 658518, 10000000000, minerLines, 'right')\n  if (rangeOption !== 'before' || rangeOption !== 'after') {\n    const lines = ['● Transition of the', 'algorithm to BLAKE3', '● Miner reward', 'change 10% to 1%']\n    hashrateLegendPlotter(e, 794429, 0, lines, 'right')\n  }\n}\n\nfunction makePt (x, y) { return { x, y } }\n\n// Legend plotter processing for hashrate chart for blake3 algorithm transition\nfunction hashrateLegendPlotter (e, midGapValue, startY, lines, direct) {\n  Dygraph.Plotters.fillPlotter(e)\n  Dygraph.Plotters.linePlotter(e)\n  const area = e.plotArea\n  const ctx = e.drawingContext\n  const mg = e.dygraph.toDomCoords(midGapValue, startY)\n  const midGap = makePt(mg[0], mg[1])\n  const fontSize = 13\n  const dark = darkEnabled()\n  ctx.textAlign = 'left'\n  ctx.textBaseline = 'top'\n  ctx.font = `${fontSize}px arial`\n  ctx.lineWidth = 1\n  ctx.strokeStyle = dark ? '#ffffff' : '#259331'\n  const boxColor = dark ? '#1e2b39' : '#ffffff'\n  let boxW = 0\n  const txts = [...lines]\n  txts.forEach(txt => {\n    const w = ctx.measureText(txt).width\n    if (w > boxW) boxW = w\n  })\n  let rowHeight = fontSize * 1.5\n  const rowPad = (rowHeight - fontSize) / 3\n  const boxPad = rowHeight / 5\n  let y = fontSize\n  y += midGap.y - 2 * area.h / 3\n  // Label the gap size.\n  rowHeight -= 2 // just looks better\n  ctx.fillStyle = boxColor\n  const reactX = direct === 'left' ? midGap.x - boxW - boxPad * 2 : midGap.x + boxPad\n  const rect = makePt(reactX, y - boxPad)\n  const dims = makePt(boxW + boxPad * 3, rowHeight * lines.length + boxPad * 2)\n  ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.fillStyle = dark ? '#ffffff' : '#259331'\n  const centerX = direct === 'left' ? midGap.x - boxW / 2 - 4 : midGap.x + boxW / 2 + 8\n  const write = s => {\n    const cornerX = centerX - (ctx.measureText(s).width / 2)\n    ctx.fillText(s, cornerX + rowPad, y + rowPad)\n    y += rowHeight\n  }\n\n  ctx.save()\n  lines.forEach((line) => {\n    write(line)\n  })\n  // Draw a line from the box to the gap\n  const lineToX = direct === 'left' ? midGap.x - boxW / 2 : midGap.x + boxW / 2\n  drawLine(ctx,\n    makePt(lineToX, y),\n    makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction drawLine (ctx, start, end) {\n  ctx.beginPath()\n  ctx.moveTo(start.x, start.y)\n  ctx.lineTo(end.x, end.y)\n  ctx.stroke()\n}\n\nfunction nightModeOptions (nightModeOn) {\n  if (nightModeOn) {\n    return {\n      rangeSelectorAlpha: 0.3,\n      gridLineColor: '#596D81',\n      colors: ['#2DD8A3', '#255595', '#FFC84E']\n    }\n  }\n  return {\n    rangeSelectorAlpha: 0.4,\n    gridLineColor: '#C4CBD2',\n    colors: ['#255594', '#006600', '#FF0090']\n  }\n}\n\nfunction zipWindowHvYZ (ys, zs, winSize, yMult, zMult, offset) {\n  yMult = yMult || 1\n  zMult = zMult || 1\n  offset = offset || 0\n  return ys.map((y, i) => {\n    return [i * winSize + offset, y * yMult, zs[i] * zMult]\n  })\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 0\n  return ys.map((y, i) => {\n    return [i * winSize + offset, y * yMult]\n  })\n}\n\nfunction zipWindowTvYZ (times, ys, zs, yMult, zMult) {\n  yMult = yMult || 1\n  zMult = zMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult, zs[i] * zMult]\n  })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n  return ys.map((y, i) => {\n    return [offset + i, y * yMult]\n  })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1\n  return ys.map((y, i) => {\n    return [offset + heights[i], y * yMult]\n  })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n  yMult = yMult || 1\n  if (data.axis === 'height') {\n    if (data.bin === 'block') return zipIvY(ys, yMult)\n    return zipHvY(data.h, ys, yMult, offset)\n  }\n  return zipTvY(data.t, ys, yMult)\n}\n\nfunction anonymitySetFunc (data) {\n  let d\n  let start = -1\n  let end = 0\n  if (data.axis === 'height') {\n    if (data.bin === 'block') {\n      d = data.anonymitySet.map((y, i) => {\n        if (start === -1 && y > 0) {\n          start = i\n        }\n        end = i\n        return [i, y * atomsToDCR]\n      })\n    } else {\n      d = data.anonymitySet.map((y, i) => {\n        if (start === -1 && y > 0) {\n          start = i\n        }\n        end = data.h[i]\n        return [data.h[i], y * atomsToDCR]\n      })\n    }\n  } else {\n    d = data.t.map((t, i) => {\n      if (start === -1 && data.anonymitySet[i] > 0) {\n        start = t * 1000\n      }\n      end = t * 1000\n      return [new Date(t * 1000), data.anonymitySet[i] * atomsToDCR]\n    })\n  }\n  return { data: d, limits: [start, end] }\n}\n\nfunction ticketPriceFunc (data) {\n  if (data.t) return zipWindowTvYZ(data.t, data.price, data.count, atomsToDCR)\n  return zipWindowHvYZ(data.price, data.count, data.window, atomsToDCR)\n}\n\nfunction poolSizeFunc (data) {\n  let out = []\n  if (data.axis === 'height') {\n    if (data.bin === 'block') out = zipIvY(data.count)\n    else out = zipHvY(data.h, data.count)\n  } else {\n    out = zipTvY(data.t, data.count)\n  }\n  out.forEach(pt => pt.push(null))\n  if (out.length) {\n    out[0][2] = ticketPoolSizeTarget\n    out[out.length - 1][2] = ticketPoolSizeTarget\n  }\n  return out\n}\n\nfunction percentStakedFunc (data) {\n  rawCoinSupply = data.circulation.map(v => v * atomsToDCR)\n  rawPoolValue = data.poolval.map(v => v * atomsToDCR)\n  const ys = rawPoolValue.map((v, i) => [v / rawCoinSupply[i] * 100])\n  if (data.axis === 'height') {\n    if (data.bin === 'block') return zipIvY(ys)\n    return zipHvY(data.h, ys)\n  }\n  return zipTvY(data.t, ys)\n}\n\nfunction powDiffFunc (data) {\n  if (data.t) return zipWindowTvY(data.t, data.diff)\n  return zipWindowHvY(data.diff, data.window, 1, data.offset)\n}\n\nfunction circulationFunc (chartData) {\n  let yMax = 0\n  let h = -1\n  const addDough = (newHeight) => {\n    while (h < newHeight) {\n      h++\n      yMax += blockReward(h) * atomsToDCR\n    }\n  }\n  const heights = chartData.h\n  const times = chartData.t\n  const supplies = chartData.supply\n  const anonymitySet = chartData.anonymitySet\n  const isHeightAxis = chartData.axis === 'height'\n  let xFunc, hFunc\n  if (chartData.bin === 'day') {\n    xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n    hFunc = i => heights[i]\n  } else {\n    xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n    hFunc = i => i\n  }\n\n  const inflation = []\n  const data = map(supplies, (n, i) => {\n    const height = hFunc(i)\n    addDough(height)\n    inflation.push(yMax)\n    return [xFunc(i), supplies[i] * atomsToDCR, null, anonymitySet[i] * atomsToDCR]\n  })\n\n  const dailyBlocks = aDay / avgBlockTime\n  const lastPt = data[data.length - 1]\n  let x = lastPt[0]\n  // Set yMax to the start at last actual supply for the prediction line.\n  yMax = lastPt[1]\n  if (!isHeightAxis) x = x.getTime()\n  xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n  const xIncrement = isHeightAxis ? dailyBlocks : aDay\n  const projection = 6 * aMonth\n  data.push([xFunc(x), null, yMax, null])\n  for (let i = 1; i <= projection; i++) {\n    addDough(h + dailyBlocks)\n    x += xIncrement\n    data.push([xFunc(x), null, yMax, null])\n  }\n  return { data, inflation }\n}\n\nfunction missedVotesFunc (data) {\n  if (data.t) return zipWindowTvY(data.t, data.missed)\n  return zipWindowHvY(data.missed, data.window, 1, data.offset * data.window)\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n  return merge({\n    file: data,\n    labels: labelsVal,\n    drawPoints: isDrawPoint,\n    ylabel: yLabel,\n    labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n    labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n  }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'chartWrapper',\n      'labels',\n      'chartsView',\n      'chartSelect',\n      'zoomSelector',\n      'zoomOption',\n      'scaleType',\n      'axisOption',\n      'binSelector',\n      'scaleSelector',\n      'ticketsPurchase',\n      'ticketsPrice',\n      'anonymitySet',\n      'vSelectorItem',\n      'vSelector',\n      'binSize',\n      'legendEntry',\n      'legendMarker',\n      'modeSelector',\n      'modeOption',\n      'rawDataURL',\n      'chartName',\n      'chartTitleName',\n      'rangeSelector',\n      'rangeOption'\n    ]\n  }\n\n  async connect () {\n    this.isHomepage = !window.location.href.includes('/charts')\n    this.query = new TurboQuery()\n    ticketPoolSizeTarget = parseInt(this.data.get('tps'))\n    premine = parseInt(this.data.get('premine'))\n    stakeValHeight = parseInt(this.data.get('svh'))\n    stakeShare = parseInt(this.data.get('pos')) / 10.0\n    baseSubsidy = parseInt(this.data.get('bs'))\n    subsidyInterval = parseInt(this.data.get('sri'))\n    subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n    windowSize = parseInt(this.data.get('windowSize'))\n    avgBlockTime = parseInt(this.data.get('blockTime')) * 1000\n    const supplyPage = this.data.get('supplyPage')\n    legendElement = this.labelsTarget\n\n    // Prepare the legend element generators.\n    const lm = this.legendMarkerTarget\n    lm.remove()\n    lm.removeAttribute('data-charts-target')\n    legendMarker = () => {\n      const node = document.createElement('div')\n      node.appendChild(lm.cloneNode())\n      return node.innerHTML\n    }\n    const le = this.legendEntryTarget\n    le.remove()\n    le.removeAttribute('data-charts-target')\n    legendEntry = s => {\n      const node = le.cloneNode()\n      node.innerHTML = s\n      return node\n    }\n\n    this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'range', 'axis', 'visibility', 'home'])\n    if (!this.isHomepage) {\n      this.query.update(this.settings)\n    }\n    this.settings.chart = this.settings.chart || 'ticket-price'\n    if (supplyPage === 'true') {\n      this.settings.chart = 'coin-supply'\n    }\n    this.zoomCallback = this._zoomCallback.bind(this)\n    this.drawCallback = this._drawCallback.bind(this)\n    this.limits = null\n    this.lastZoom = null\n    this.visibility = []\n    if (this.settings.visibility) {\n      this.settings.visibility.split('-', -1).forEach(s => {\n        this.visibility.push(s === 'true')\n      })\n    }\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    this.drawInitialGraph()\n    this.processNightMode = (params) => {\n      this.chartsView.updateOptions(\n        nightModeOptions(params.nightMode)\n      )\n    }\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n  }\n\n  disconnect () {\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    if (this.chartsView !== undefined) {\n      this.chartsView.destroy()\n    }\n    selectedChart = null\n  }\n\n  drawInitialGraph () {\n    const options = {\n      axes: { y: { axisLabelWidth: 50 }, y2: { axisLabelWidth: 55 } },\n      labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n      digitsAfterDecimal: 8,\n      showRangeSelector: true,\n      rangeSelectorPlotFillColor: '#C4CBD2',\n      rangeSelectorAlpha: 0.4,\n      rangeSelectorHeight: 40,\n      drawPoints: true,\n      pointSize: 0.25,\n      legend: 'always',\n      labelsSeparateLines: true,\n      labelsDiv: legendElement,\n      legendFormatter: legendFormatter,\n      highlightCircleSize: 4,\n      ylabel: 'Ticket Price',\n      y2label: 'Tickets Bought',\n      labelsUTC: true,\n      axisLineColor: '#C4CBD2'\n    }\n\n    this.chartsView = new Dygraph(\n      this.chartsViewTarget,\n      [[1, 1, 5], [2, 5, 11]],\n      options\n    )\n    this.setSelectedChart(this.settings.chart)\n    if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n    if (this.settings.scale === 'log') this.setScale(this.settings.scale)\n    // default on mobile is year, on other is all\n    if (humanize.isEmpty(this.settings.zoom) && isMobile()) {\n      this.settings.zoom = 'year'\n    }\n    if (this.settings.zoom) this.setZoom(this.settings.zoom)\n    this.setBin(this.settings.bin ? this.settings.bin : 'day')\n    this.setRange(this.settings.range ? this.settings.range : 'after')\n    this.setMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n    const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n    Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n      g.updateOptions({ legendIndex: row }, true)\n      return ogLegendGenerator(g, x, pts, w, row)\n    }\n    this.selectChart()\n  }\n\n  plotGraph (chartName, data) {\n    let d = []\n    const gOptions = {\n      zoomCallback: null,\n      drawCallback: null,\n      logscale: this.settings.scale === 'log',\n      valueRange: [null, null],\n      visibility: null,\n      y2label: null,\n      y3label: null,\n      stepPlot: this.settings.mode === 'stepped',\n      axes: {},\n      series: null,\n      inflation: null,\n      plotter: null\n    }\n    rawPoolValue = []\n    rawCoinSupply = []\n    yFormatter = defaultYFormatter\n    const xlabel = data.t ? 'Date' : 'Block Height'\n    const _this = this\n    const isHeightBlock = data.axis === 'height' && data.bin === 'block'\n    switch (chartName) {\n      case 'ticket-price': // price graph\n        d = ticketPriceFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Price', 'Tickets Bought'], true,\n          'Price (DCR)', true, false))\n        gOptions.y2label = 'Tickets Bought'\n        gOptions.series = { 'Tickets Bought': { axis: 'y2' } }\n        this.visibility = [this.getTargetsChecked(this.ticketsPriceTargets), this.getTargetsChecked(this.ticketsPurchaseTargets)]\n        gOptions.visibility = this.visibility\n        gOptions.axes.y2 = {\n          valueRange: [0, windowSize * 20 * 8],\n          axisLabelFormatter: (y) => Math.round(y),\n          axisLabelWidth: isMobile() ? yAxisLabelWidth.y2['ticket-price'] : yAxisLabelWidth.y2['ticket-price'] + 15\n        }\n        yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n        break\n      case 'ticket-pool-size': // pool size graph\n        d = poolSizeFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Size', 'Network Target'],\n          false, 'Ticket Pool Size', true, false))\n        gOptions.series = {\n          'Network Target': {\n            strokePattern: [5, 3],\n            connectSeparatedPoints: true,\n            strokeWidth: 2,\n            color: '#C4CBD2'\n          }\n        }\n        yFormatter = customYFormatter(y => `${intComma(y)} tickets &nbsp;&nbsp; (network target ${intComma(ticketPoolSizeTarget)})`)\n        break\n\n      case 'stake-participation':\n        d = percentStakedFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Stake Participation'], true,\n          'Stake Participation (%)', true, false))\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => y.toFixed(4) + '%')\n          div.appendChild(legendEntry(`${legendMarker()} Ticket Pool Value: ${intComma(rawPoolValue[i])} DCR`))\n          div.appendChild(legendEntry(`${legendMarker()} Coin Supply: ${intComma(rawCoinSupply[i])} DCR`))\n        }\n        break\n\n      case 'ticket-pool-value': // pool value graph\n        d = zip2D(data, data.poolval, atomsToDCR)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Value'], true,\n          'Ticket Pool Value (DCR)', true, false))\n        yFormatter = customYFormatter(y => intComma(y) + ' DCR')\n        break\n\n      case 'block-size': // block size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n        break\n\n      case 'blockchain-size': // blockchain size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n          'Blockchain Size', false, true))\n        break\n\n      case 'tx-count': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Number of Transactions'], false,\n          '# of Transactions', false, false))\n        break\n\n      case 'pow-difficulty': // difficulty graph\n        d = powDiffFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n        if (_this.settings.range !== 'after') {\n          gOptions.plotter = _this.settings.axis === 'height' ? difficultyBlockPlotter : difficultyTimePlotter\n        }\n        break\n\n      case 'coin-supply': // supply graph\n        d = circulationFunc(data)\n        assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n          true, 'Coin Supply (DCR)', true, false))\n        gOptions.y2label = 'Inflation Limit'\n        gOptions.y3label = 'Mix Rate'\n        gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n        this.visibility = [true, true, this.getTargetsChecked(this.anonymitySetTargets)]\n        gOptions.visibility = this.visibility\n        gOptions.series = {\n          'Inflation Limit': {\n            strokePattern: [5, 5],\n            color: '#C4CBD2',\n            strokeWidth: 1.5\n          },\n          'Mix Rate': {\n            color: '#2dd8a3'\n          }\n        }\n        gOptions.inflation = d.inflation\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' DCR')\n          let change = 0\n          if (i < d.inflation.length) {\n            const supply = data.series[0].y\n            if (this.getTargetsChecked(this.anonymitySetTargets)) {\n              const mixed = data.series[2].y\n              const mixedPercentage = ((mixed / supply) * 100).toFixed(2)\n              div.appendChild(legendEntry(`${legendMarker()} Mixed: ${intComma(mixed)} DCR (${mixedPercentage}%)`))\n            }\n            const predicted = d.inflation[i]\n            const unminted = predicted - data.series[0].y\n            change = ((unminted / predicted) * 100).toFixed(2)\n            div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} DCR (${change}%)`))\n          }\n        }\n        break\n\n      case 'fees': // block fee graph\n        d = zip2D(data, data.fees, atomsToDCR)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (DCR)', true, false))\n        yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n        break\n\n      case 'privacy-participation': { // anonymity set graph\n        d = anonymitySetFunc(data)\n        this.customLimits = d.limits\n        const label = 'Mix Rate'\n        assign(gOptions, mapDygraphOptions(d.data, [xlabel, label], false, `${label} (DCR)`, true, false))\n\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => (y > 0 ? intComma(y) : '0') + ' DCR')\n        }\n        break\n      }\n      case 'duration-btw-blocks': // Duration between blocks graph\n        d = zip2D(data, data.duration, 1, 1)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n          'Duration Between Blocks (seconds)', false, false))\n        break\n\n      case 'chainwork': // Total chainwork over time\n        d = zip2D(data, data.work)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Cumulative Chainwork'],\n          false, 'Cumulative Chainwork (exahash)', true, false))\n        yFormatter = customYFormatter(y => withBigUnits(y, chainworkUnits))\n        break\n\n      case 'hashrate': // Total chainwork over time\n        d = isHeightBlock ? zipHvY(data.h, data.rate, 1e-3, data.offset) : zip2D(data, data.rate, 1e-3, data.offset)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate'],\n          false, 'Network Hashrate (petahash/s)', true, false))\n        yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n        if (_this.settings.range !== 'after') {\n          gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n        }\n        break\n\n      case 'missed-votes':\n        d = missedVotesFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Missed Votes'], false,\n          'Missed Votes per Window', true, false))\n        break\n    }\n    gOptions.axes.y = {\n      axisLabelWidth: isMobile() ? yAxisLabelWidth.y1[chartName] : yAxisLabelWidth.y1[chartName] + 15\n    }\n    const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n    this.rawDataURLTarget.textContent = `${baseURL}/api/chart/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n    this.chartsView.plotter_.clear()\n    this.chartsView.updateOptions(gOptions, false)\n    if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n    this.validateZoom()\n  }\n\n  async selectChart () {\n    const selectChart = this.getSelectedChart()\n    const selection = this.settings.chart = selectChart\n    this.chartNameTarget.textContent = this.getChartName(selectChart)\n    this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n    this.customLimits = null\n    this.chartWrapperTarget.classList.add('loading')\n    if (isScaleDisabled(selection)) {\n      this.hideMultiTargets(this.scaleSelectorTargets)\n      this.showMultiTargets(this.vSelectorTargets)\n    } else {\n      this.showMultiTargets(this.scaleSelectorTargets)\n    }\n    if (isModeEnabled(selection)) {\n      this.showMultiTargets(this.modeSelectorTargets)\n    } else {\n      this.hideMultiTargets(this.modeSelectorTargets)\n    }\n    if (hasMultipleVisibility(selection)) {\n      this.showMultiTargets(this.vSelectorTargets)\n      this.updateVSelector(selection)\n    } else {\n      this.hideMultiTargets(this.vSelectorTargets)\n    }\n    if (useRange(selection)) {\n      this.settings.range = this.selectedRange()\n      rangeOption = this.settings.range\n      this.showMultiTargets(this.rangeSelectorTargets)\n    } else {\n      this.settings.range = ''\n      rangeOption = ''\n      this.hideMultiTargets(this.rangeSelectorTargets)\n    }\n    if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n      this.settings.axis !== this.selectedAxis() || this.settings.range !== this.selectedRange()) {\n      let url = '/api/chart/' + selection\n      if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n        this.hideMultiTargets(this.binSelectorTargets)\n        this.settings.bin = 'window'\n      } else {\n        this.showMultiTargets(this.binSelectorTargets)\n        this.settings.bin = this.selectedBin()\n        const _this = this\n        this.binSizeTargets.forEach(el => {\n          if (_this.exitCond(el)) {\n            return\n          }\n          if (el.dataset.option !== 'window') return\n          if (usesHybridUnits(selection)) {\n            el.classList.remove('d-hide')\n          } else {\n            el.classList.add('d-hide')\n            if (this.settings.bin === 'window') {\n              this.settings.bin = 'day'\n              this.setActiveOptionBtn(this.settings.bin, this.binSizeTargets)\n            }\n          }\n        })\n      }\n      url += `?bin=${this.settings.bin}`\n      if (this.settings.range !== '') {\n        url += `&range=${this.settings.range}`\n      }\n      this.settings.axis = this.selectedAxis()\n      if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n      url += `&axis=${this.settings.axis}`\n      this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n      const chartResponse = await requestJSON(url)\n      selectedChart = selection\n      this.plotGraph(selection, chartResponse)\n    } else {\n      this.chartWrapperTarget.classList.remove('loading')\n    }\n  }\n\n  getChartName (chartValue) {\n    switch (chartValue) {\n      case 'ticket-price':\n        return 'Ticket Price'\n      case 'ticket-pool-size':\n        return 'Ticket Pool Size'\n      case 'ticket-pool-value':\n        return 'Ticket Pool Value'\n      case 'stake-participation':\n        return 'Stake Participation'\n      case 'privacy-participation':\n        return 'Privacy Participation'\n      case 'missed-votes':\n        return 'Missed Votes'\n      case 'block-size':\n        return 'Block Size'\n      case 'blockchain-size':\n        return 'Blockchain Size'\n      case 'tx-count':\n        return 'Transaction Count'\n      case 'duration-btw-blocks':\n        return 'Duration Between Blocks'\n      case 'pow-difficulty':\n        return 'PoW Difficulty'\n      case 'chainwork':\n        return 'Total Work'\n      case 'hashrate':\n        return 'Hashrate'\n      case 'coin-supply':\n        return 'Coin Supply'\n      case 'fees':\n        return 'Fees'\n      default:\n        return ''\n    }\n  }\n\n  async validateZoom () {\n    await animationFrame()\n    this.chartWrapperTarget.classList.add('loading')\n    await animationFrame()\n    let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n    this.limits = this.chartsView.xAxisExtremes()\n    const selected = this.selectedZoom()\n    if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n      this.lastZoom = Zoom.validate(selected, this.limits,\n        this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n    } else {\n      // if this is for the privacy-participation chart, then zoom to the beginning of the record\n      if (selectedChart === 'privacy-participation') {\n        this.limits = oldLimits = this.customLimits\n        this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n      }\n      this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n    }\n    if (this.lastZoom) {\n      this.chartsView.updateOptions({\n        dateWindow: [this.lastZoom.start, this.lastZoom.end]\n      })\n    }\n    if (selected !== this.settings.zoom) {\n      this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n    }\n    await animationFrame()\n    this.chartWrapperTarget.classList.remove('loading')\n    this.chartsView.updateOptions({\n      zoomCallback: this.zoomCallback,\n      drawCallback: this.drawCallback\n    })\n  }\n\n  _zoomCallback (start, end) {\n    this.lastZoom = Zoom.object(start, end)\n    this.settings.zoom = Zoom.encode(this.lastZoom)\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n    const ex = this.chartsView.xAxisExtremes()\n    const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    this.setActiveOptionBtn(option, this.zoomOptionTargets)\n    const axesData = axesToRestoreYRange(this.settings.chart,\n      this.supportedYRange, this.chartsView.yAxisRanges())\n    if (axesData) this.chartsView.updateOptions({ axes: axesData })\n  }\n\n  isTimeAxis () {\n    return this.selectedAxis() === 'time'\n  }\n\n  _drawCallback (graph, first) {\n    // update position of y1, y2 label\n    if (isMobile()) {\n      // get axes\n      const axes = graph.getOption('axes')\n      if (axes) {\n        const y1label = this.chartsViewTarget.querySelector('.dygraph-label.dygraph-ylabel')\n        const y2label = this.chartsViewTarget.querySelector('.dygraph-label.dygraph-y2label')\n        if (y1label) {\n          const yAxis = axes.y\n          if (yAxis) {\n            const yLabelWidth = yAxis.axisLabelWidth\n            if (yLabelWidth) {\n              y1label.style.top = (Number(yLabelWidth) + 5) + 'px'\n            }\n          }\n        }\n        if (y2label) {\n          const y2Axis = axes.y2\n          if (y2Axis) {\n            const y2LabelWidth = y2Axis.axisLabelWidth\n            if (y2LabelWidth) {\n              y2label.style.top = (Number(y2LabelWidth) + 5) + 'px'\n            }\n          }\n        }\n      }\n    }\n    if (first) return\n    const [start, end] = this.chartsView.xAxisRange()\n    if (start === end) return\n    if (this.lastZoom.start === start) return // only handle slide event.\n    this._zoomCallback(start, end)\n  }\n\n  setZoom (e) {\n    const target = e.srcElement || e.target\n    let option\n    if (!target) {\n      const ex = this.chartsView.xAxisExtremes()\n      option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    } else {\n      option = target.dataset.option\n    }\n    this.setActiveOptionBtn(option, this.zoomOptionTargets)\n    if (!target) return // Exit if running for the first time\n    this.validateZoom()\n  }\n\n  setRange (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.rangeOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    selectedChart = null // Force fetch\n    this.selectChart()\n  }\n\n  setBin (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.binSizeTargets)\n    // hide vSelector\n    this.updateVSelector()\n    if (!target) return // Exit if running for the first time.\n    selectedChart = null // Force fetch\n    this.selectChart()\n  }\n\n  setScale (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.scaleTypeTargets)\n    if (!target) return // Exit if running for the first time.\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ logscale: option === 'log' })\n    }\n    this.settings.scale = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setMode (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.modeOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n    }\n    this.settings.mode = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setAxis (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.axisOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    this.settings.axis = null\n    this.selectChart()\n  }\n\n  updateVSelector (chart) {\n    if (!chart) {\n      chart = this.getSelectedChart()\n    }\n    const that = this\n    let showWrapper = false\n    this.vSelectorItemTargets.forEach(el => {\n      if (that.exitCond(el)) {\n        return\n      }\n      let show = el.dataset.charts.indexOf(chart) > -1\n      if (el.dataset.bin && el.dataset.bin.indexOf(that.selectedBin()) === -1) {\n        show = false\n      }\n      if (show) {\n        el.classList.remove('d-hide')\n        showWrapper = true\n      } else {\n        el.classList.add('d-hide')\n      }\n    })\n    if (showWrapper) {\n      this.showMultiTargets(this.vSelectorTargets)\n    } else {\n      this.hideMultiTargets(this.vSelectorTargets)\n    }\n    this.setVisibilityFromSettings()\n  }\n\n  setVisibilityFromSettings () {\n    const selectChart = this.getSelectedChart()\n    switch (selectChart) {\n      case 'ticket-price':\n        if (this.visibility.length !== 2) {\n          this.visibility = [true, this.getTargetsChecked(this.ticketsPurchaseTargets)]\n        }\n        this.setTargetsChecked(this.ticketsPriceTargets, this.visibility[0])\n        this.setTargetsChecked(this.ticketsPurchaseTargets, this.visibility[1])\n        break\n      case 'coin-supply':\n        if (this.visibility.length !== 3) {\n          this.visibility = [true, true, this.getTargetsChecked(this.anonymitySetTargets)]\n        }\n        this.setTargetsChecked(this.anonymitySetTargets, this.visibility[2])\n        break\n      case 'privacy-participation':\n        if (this.visibility.length !== 2) {\n          this.visibility = [true, this.getTargetsChecked(this.anonymitySetTargets)]\n        }\n        this.setTargetsChecked(this.anonymitySetTargets, this.visibility[1])\n        break\n      default:\n        return\n    }\n    this.settings.visibility = this.visibility.join('-')\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setVisibility (e) {\n    const selectChart = this.getSelectedChart()\n    switch (selectChart) {\n      case 'ticket-price':\n      {\n        const ticketPriceChecked = this.getTargetsChecked(this.ticketsPriceTargets)\n        const ticketPurchaseChecked = this.getTargetsChecked(this.ticketsPurchaseTargets)\n        if (!ticketPriceChecked && !ticketPurchaseChecked) {\n          e.currentTarget.checked = true\n          return\n        }\n        this.visibility = [ticketPriceChecked, ticketPurchaseChecked]\n        break\n      }\n      case 'coin-supply':\n        this.visibility = [true, true, this.getTargetsChecked(this.anonymitySetTargets)]\n        break\n      case 'privacy-participation':\n        this.visibility = [true, this.getTargetsChecked(this.anonymitySetTargets)]\n        break\n      default:\n        return\n    }\n    this.chartsView.updateOptions({ visibility: this.visibility })\n    this.settings.visibility = this.visibility.join('-')\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setActiveOptionBtn (opt, optTargets) {\n    const _this = this\n    optTargets.forEach(li => {\n      if (_this.exitCond(li)) {\n        return\n      }\n      if (li.dataset.option === opt) {\n        li.classList.add('active')\n      } else {\n        li.classList.remove('active')\n      }\n    })\n  }\n\n  selectedZoom () { return this.selectedOption(this.zoomOptionTargets) }\n  selectedBin () { return this.selectedOption(this.binSizeTargets) }\n  selectedScale () { return this.selectedOption(this.scaleTypeTargets) }\n  selectedAxis () { return this.selectedNormalOption(this.axisOptionTargets) }\n  selectedRange () { return this.selectedOption(this.rangeOptionTargets) }\n\n  selectedOption (optTargets) {\n    let key = false\n    const _this = this\n    optTargets.forEach((el) => {\n      if (_this.exitCond(el)) return\n      if (el.classList.contains('active')) key = el.dataset.option\n    })\n    return key\n  }\n\n  selectedNormalOption (optTargets) {\n    let key = false\n    optTargets.forEach((el) => {\n      if (el.classList.contains('active')) key = el.dataset.option\n    })\n    return key\n  }\n\n  hideMultiTargets (opts) {\n    opts.forEach((opt) => {\n      opt.classList.add('d-hide')\n    })\n  }\n\n  exitCond (opt) {\n    return (isMobile() && !opt.classList.contains('mobile-mode')) || (!isMobile() && opt.classList.contains('mobile-mode'))\n  }\n\n  showMultiTargets (opts) {\n    opts.forEach((opt) => {\n      if ((isMobile() && !opt.classList.contains('mobile-mode')) || (!isMobile() && opt.classList.contains('mobile-mode'))) {\n        opt.classList.add('d-hide')\n      } else {\n        opt.classList.remove('d-hide')\n        opt.classList.remove('d-none')\n      }\n    })\n  }\n\n  getSelectedChart () {\n    let selected = 'ticket-price'\n    const _this = this\n    this.chartSelectTargets.forEach((chart) => {\n      if (_this.exitCond(chart)) {\n        return\n      }\n      selected = chart.value\n    })\n    return selected\n  }\n\n  setSelectedChart (select) {\n    const _this = this\n    this.chartSelectTargets.forEach((chart) => {\n      if (_this.exitCond(chart)) {\n        return\n      }\n      chart.value = select\n    })\n  }\n\n  getTargetsChecked (targets) {\n    const _this = this\n    let checked = false\n    targets.forEach((target) => {\n      if (_this.exitCond(target)) {\n        return\n      }\n      checked = target.checked\n    })\n    return checked\n  }\n\n  setTargetsChecked (targets, checked) {\n    const _this = this\n    targets.forEach((target) => {\n      if (_this.exitCond(target)) {\n        return\n      }\n      target.checked = checked\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport const copyIcon = () => {\n  const copyIcon = document.createElement('span')\n  copyIcon.classList.add('dcricon-copy')\n  copyIcon.classList.add('clickable')\n  copyIcon.dataset.controller = 'clipboard'\n  copyIcon.dataset.action = 'click->clipboard#copyTextToClipboard this'\n  return copyIcon.outerHTML\n}\n\nexport const alertArea = () => {\n  const alertArea = document.createElement('span')\n  alertArea.classList.add('alert')\n  alertArea.classList.add('alert-success')\n  alertArea.classList.add('alert-copy')\n  return alertArea.outerHTML\n}\n\nexport default class extends Controller {\n  copyTextToClipboard (clickEvent) {\n    const parentNode = clickEvent.srcElement.parentNode\n    const textContent = parentNode.textContent.trim().split(' ')[0]\n    navigator.clipboard.writeText(textContent).then(() => {\n      const alertCopy = parentNode.getElementsByClassName('alert-copy')[0]\n      alertCopy.textContent = 'Copied'\n      alertCopy.style.display = 'inline-table'\n      setTimeout(function () {\n        alertCopy.textContent = ''\n        alertCopy.style.display = 'none'\n      }, 1000)\n    }, (reason) => {\n      console.error('Unable to copy:', reason)\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { toggleSun } from '../services/theme_service'\n\nexport default class extends Controller {\n  checkHomePage () {\n    const originUrl = window.location.origin\n    let href = window.location.href\n    if (href.includes(originUrl)) {\n      href = href.replace(originUrl, '')\n      if (href === '/' || href === '') {\n        return true\n      }\n      return false\n    }\n    return false\n  }\n\n  onSunClick () {\n    toggleSun()\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['indicator', 'status']\n  }\n\n  connect () {\n    this.indicatorTarget.classList.remove('hidden')\n\n    ws.registerEvtHandler('open', () => {\n      if (window.loggingDebug) console.log('Connected')\n      this.updateConnectionStatus('Connected', true)\n    })\n\n    ws.registerEvtHandler('close', () => {\n      console.log('Disconnected')\n      this.updateConnectionStatus('Disconnected', false)\n    })\n\n    ws.registerEvtHandler('error', (evt) => {\n      console.log('WebSocket error:', evt)\n      this.updateConnectionStatus('Disconnected', false)\n    })\n\n    ws.registerEvtHandler('ping', (evt) => {\n      if (window.loggingDebug) console.debug('ping. users online: ', evt)\n    })\n  }\n\n  updateConnectionStatus (msg, connected) {\n    if (connected) {\n      this.indicatorTarget.classList.add('connected')\n      this.indicatorTarget.classList.remove('disconnected')\n    } else {\n      this.indicatorTarget.classList.remove('connected')\n      this.indicatorTarget.classList.add('disconnected')\n    }\n    this.statusTarget.textContent = `${msg} `\n  }\n\n  requestNotifyPermission () {\n    if (window.Notification.permission === 'granted') return\n    if (window.Notification.permission !== 'denied') window.Notification.requestPermission()\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { requestJSON } from '../helpers/http'\n\nexport default class FinanceReportController extends Controller {\n  static values = {\n    reportMinYear: Number,\n    reportMaxYear: Number,\n    reportMinMonth: Number,\n    reportMaxMonth: Number\n  }\n\n  async initReportTimeRange () {\n    // Get time range of reports\n    const url = '/api/finance-report/time-range'\n    const timeRangeRes = await requestJSON(url)\n    if (!timeRangeRes) {\n      return\n    }\n    this.reportMinYear = timeRangeRes.minYear\n    this.reportMinMonth = timeRangeRes.minMonth\n    this.reportMaxYear = timeRangeRes.maxYear\n    this.reportMaxMonth = timeRangeRes.maxMonth\n  }\n\n  isMobile () {\n    try { document.createEvent('TouchEvent'); return true } catch (e) { return false }\n  }\n}\n","import TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport FinanceReportController from './financebase_controller'\n\nconst responseCache = {}\nlet requestCounter = 0\nlet domainList\nlet tokenList\nlet ownerList\nlet responseData\n\nfunction hasCache (k) {\n  if (!responseCache[k]) return false\n  const expiration = new Date(responseCache[k].expiration)\n  return expiration > new Date()\n}\n\nexport default class extends FinanceReportController {\n  static get targets () {\n    return ['noData', 'reportArea',\n      'proposalReport', 'legacyReport', 'yearMonthInfoTable',\n      'nextButton', 'proposalArea', 'noReport',\n      'totalSpanRow', 'monthlyArea', 'yearlyArea',\n      'monthlyReport', 'yearlyReport', 'summaryArea', 'summaryReport',\n      'proposalSpanRow', 'prevBtn', 'nextBtn',\n      'toVote', 'toDiscussion',\n      'expendiduteValue', 'prevNextButtons', 'toUpReport',\n      'currentDetail', 'yearBreadcumb', 'proposalSumCard', 'proposalTopSummary',\n      'domainSummaryTable', 'domainSummaryArea', 'proposalSpent',\n      'treasurySpent', 'unaccountedValue', 'proposalSpentArea', 'treasurySpentArea',\n      'unaccountedValueArea', 'detailReportTitle', 'summaryTableTitle']\n  }\n\n  async initialize () {\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate([\n      'type', 'time', 'token', 'name', 'stype', 'order'\n    ])\n\n    this.politeiaUrl = this.data.get('politeiaUrl')\n\n    this.defaultSettings = {\n      type: '',\n      time: '',\n      token: '',\n      name: '',\n      stype: 'pname',\n      order: 'desc'\n    }\n\n    if (!this.settings.order) {\n      this.settings.order = this.defaultSettings.order\n    }\n\n    this.query.update(this.settings)\n\n    if (!this.settings.type) {\n      this.showNoData()\n      return\n    }\n\n    if (this.settings.type === 'month' || this.settings.type === 'year') {\n      if (!this.settings.time) {\n        this.showNoData()\n        return\n      }\n    }\n    if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n      if (!this.settings.name) {\n        this.showNoData()\n        return\n      }\n    }\n    if (this.settings.type === 'proposal' && !this.settings.token) {\n      this.showNoData()\n      return\n    }\n    this.noDataTarget.classList.add('d-none')\n    this.reportAreaTarget.classList.remove('d-none')\n\n    if (this.settings.type === 'proposal' || this.settings.type === 'domain' || this.settings.type === 'owner') {\n      this.prevNextButtonsTarget.classList.add('d-none')\n    } else {\n      this.prevNextButtonsTarget.classList.remove('d-none')\n    }\n    if (this.settings.type === 'month' || this.settings.type === 'year') {\n      this.yearMonthCalculate()\n      return\n    }\n    this.initScrollerForTable()\n    this.proposalTopSummaryTarget.classList.add('d-none')\n    this.totalSpanRowTarget.classList.add('d-none')\n    this.proposalCalculate()\n  }\n\n  async initScrollerForTable () {\n    const $scroller = document.getElementById('scroller')\n    const $container = document.getElementById('containerBody')\n    const $wrapper = document.getElementById('wrapperReportTable')\n    let ignoreScrollEvent = false\n    let animation = null\n    const scrollbarPositioner = () => {\n      const scrollTop = document.scrollingElement.scrollTop\n      const wrapperTop = $wrapper.offsetTop\n      const wrapperBottom = wrapperTop + $wrapper.offsetHeight\n\n      const topMatch = (window.innerHeight + scrollTop) >= wrapperTop\n      const bottomMatch = (scrollTop) <= wrapperBottom\n\n      if (topMatch && bottomMatch) {\n        const inside = wrapperBottom >= scrollTop && window.innerHeight + scrollTop <= wrapperBottom\n\n        if (inside) {\n          $scroller.style.bottom = '0px'\n        } else {\n          const offset = (scrollTop + window.innerHeight) - wrapperBottom\n\n          $scroller.style.bottom = offset + 'px'\n        }\n        $scroller.classList.add('visible')\n      } else {\n        $scroller.classList.remove('visible')\n      }\n\n      window.requestAnimationFrame(scrollbarPositioner)\n    }\n\n    window.requestAnimationFrame(scrollbarPositioner)\n\n    $scroller.addEventListener('scroll', (e) => {\n      if (ignoreScrollEvent) return false\n\n      if (animation) window.cancelAnimationFrame(animation)\n      animation = window.requestAnimationFrame(() => {\n        ignoreScrollEvent = true\n        $container.scrollLeft = $scroller.scrollLeft\n        ignoreScrollEvent = false\n      })\n    })\n\n    $container.addEventListener('scroll', (e) => {\n      if (ignoreScrollEvent) return false\n\n      if (animation) window.cancelAnimationFrame(animation)\n      animation = window.requestAnimationFrame(() => {\n        ignoreScrollEvent = true\n        $scroller.scrollLeft = $container.scrollLeft\n\n        ignoreScrollEvent = false\n      })\n    })\n\n    $(window).on('resize', function () {\n      // get table thead size\n      const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n      const tableWidth = parseFloat(tableWidthStr.trim())\n      const parentContainerWidthStr = $('#summaryTableArea').css('width').replace('px', '')\n      const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n      if (tableWidth < parentContainerWidth + 5) {\n        $('#scroller').addClass('d-none')\n      } else {\n        $('#scroller').removeClass('d-none')\n      }\n      // set overflow class\n      $('#scroller').css('width', $('#summaryTableArea').css('width'))\n    })\n  }\n\n  showNoData () {\n    this.noDataTarget.classList.remove('d-none')\n    this.reportAreaTarget.classList.add('d-none')\n  }\n\n  updateQueryString () {\n    const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n    for (const k in settings) {\n      if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n      query[k] = settings[k]\n    }\n    this.query.replace(query)\n  }\n\n  prevReport (e) {\n    let currentValue\n    if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n      const itemIndex = this.settings.type === 'domain' ? domainList.indexOf(this.settings.name) : ownerList.indexOf(this.settings.name)\n      if (itemIndex < 0) {\n        return\n      }\n      this.settings.name = this.settings.type === 'domain' ? domainList[itemIndex - 1] : ownerList[itemIndex - 1]\n      currentValue = this.settings.name\n    }\n\n    if (this.settings.type === 'proposal') {\n      const itemIndex = tokenList.indexOf(this.settings.token)\n      if (itemIndex < 0) {\n        return\n      }\n      this.settings.token = tokenList[itemIndex - 1]\n      currentValue = this.settings.token\n    }\n\n    if (this.settings.type === 'year') {\n      this.settings.time = this.settings.time - 1\n    } else if (this.settings.type === 'month') {\n      const timeArr = this.settings.time.trim().split('_')\n      let year = parseInt(timeArr[0])\n      let month = parseInt(timeArr[1])\n      if (month === 1) {\n        year = year - 1\n        month = 12\n      } else {\n        month = month - 1\n      }\n      this.settings.time = year + '_' + month\n    }\n\n    this.updateQueryString()\n    if (this.settings.type === 'year' || this.settings.type === 'month') {\n      this.yearMonthCalculate()\n    }\n    if (this.settings.type === 'domain' || this.settings.type === 'proposal' || this.settings.type === 'owner') {\n      this.handlerNextPrevButton(this.settings.type, currentValue)\n      this.proposalCalculate()\n    }\n  }\n\n  nextReport (e) {\n    let currentValue\n    if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n      const itemIndex = this.settings.type === 'domain' ? domainList.indexOf(this.settings.name) : ownerList.indexOf(this.settings.name)\n      if (itemIndex < 0) {\n        return\n      }\n      this.settings.name = this.settings.type === 'domain' ? domainList[itemIndex + 1] : ownerList[itemIndex + 1]\n      currentValue = this.settings.name\n    }\n\n    if (this.settings.type === 'proposal') {\n      const itemIndex = tokenList.indexOf(this.settings.token)\n      if (itemIndex < 0) {\n        return\n      }\n      currentValue = this.settings.token\n      this.settings.token = tokenList[itemIndex + 1]\n    }\n    if (this.settings.type === 'year') {\n      this.settings.time = this.settings.time + 1\n    } else if (this.settings.type === 'month') {\n      const timeArr = this.settings.time.trim().split('_')\n      let year = parseInt(timeArr[0])\n      let month = parseInt(timeArr[1])\n      if (month === 12) {\n        year = year + 1\n        month = 1\n      } else {\n        month = month + 1\n      }\n      this.settings.time = year + '_' + month\n    }\n    this.updateQueryString()\n\n    if (this.settings.type === 'year' || this.settings.type === 'month') {\n      this.yearMonthCalculate()\n    }\n    if (this.settings.type === 'domain' || this.settings.type === 'proposal' || this.settings.type === 'owner') {\n      this.handlerNextPrevButton(this.settings.type, currentValue)\n      this.proposalCalculate()\n    }\n  }\n\n  proposalDetailsListUpdate () {\n    if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n      this.summaryReportTarget.innerHTML = this.createSummaryTable(responseData.proposalInfos, this.settings.type === 'owner', this.settings.type === 'domain')\n      this.handlerScrollerTable()\n    } else if (this.settings.type === 'proposal') {\n      this.summaryReportTarget.innerHTML = this.createSummaryTable(responseData.otherProposalInfos, true, false)\n      this.handlerScrollerTable()\n    }\n  }\n\n  yearMonthProposalListUpdate () {\n    this.proposalReportTarget.innerHTML = this.createProposalDetailReport(responseData)\n  }\n\n  async proposalCalculate () {\n    this.yearBreadcumbTarget.classList.add('d-none')\n    if (this.settings.type === 'domain') {\n      const domainDisp = this.settings.name.charAt(0).toUpperCase() + this.settings.name.slice(1)\n      this.currentDetailTarget.textContent = domainDisp\n      this.detailReportTitleTarget.textContent = 'Domain Detail Report - ' + domainDisp\n      // set main report url\n      this.toUpReportTarget.href = '/finance-report?pgroup=domains'\n    } else if (this.settings.type === 'owner') {\n      this.currentDetailTarget.textContent = this.settings.name\n      this.detailReportTitleTarget.textContent = 'Author Detail Report - ' + this.settings.name\n      this.toUpReportTarget.href = '/finance-report?pgroup=authors'\n    } else {\n      this.toUpReportTarget.href = '/finance-report'\n    }\n    if (this.settings.type === 'domain' || this.settings.type === 'proposal') {\n      this.nextBtnTarget.classList.add('d-none')\n      this.prevBtnTarget.classList.add('d-none')\n    } else {\n      this.prevBtnTarget.classList.remove('d-none')\n      this.nextBtnTarget.classList.remove('d-none')\n    }\n    const url = `/api/finance-report/detail?type=${this.settings.type}&${this.settings.type === 'proposal' ? 'token=' + this.settings.token : 'name=' + this.settings.name}`\n    let response\n    requestCounter++\n    const thisRequest = requestCounter\n    if (hasCache(url)) {\n      response = responseCache[url]\n    } else {\n      // response = await axios.get(url)\n      response = await requestJSON(url)\n      responseCache[url] = response\n      if (thisRequest !== requestCounter) {\n        // new request was issued while waiting.\n        console.log('Response request different')\n      }\n    }\n    if (!response) {\n      this.monthlyAreaTarget.classList.add('d-none')\n      this.yearlyAreaTarget.classList.add('d-none')\n      if (this.settings.type === 'domain') {\n        this.summaryAreaTarget.classList.add('d-none')\n      }\n      return\n    }\n    responseData = response\n    this.monthlyAreaTarget.classList.remove('d-none')\n    this.yearlyAreaTarget.classList.remove('d-none')\n    if (this.settings.type === 'domain' || this.settings.type === 'owner') {\n      this.summaryAreaTarget.classList.remove('d-none')\n      this.summaryTableTitleTarget.textContent = 'Proposals'\n      this.summaryReportTarget.innerHTML = this.createSummaryTable(response.proposalInfos, this.settings.type === 'owner', this.settings.type === 'domain')\n      this.handlerScrollerTable()\n      this.setDomainGeneralInfo(response, this.settings.type)\n      if (this.settings.type === 'domain') {\n        domainList = response.domainList\n      } else {\n        ownerList = response.ownerList\n      }\n      this.handlerNextPrevButton(this.settings.type === 'domain' ? 'domain' : 'owner', this.settings.name)\n    }\n    if (this.settings.type === 'proposal') {\n      // show summary proposal list\n      if (!response.otherProposalInfos || response.otherProposalInfos.length === 0) {\n        this.summaryAreaTarget.classList.add('d-none')\n      } else {\n        this.summaryAreaTarget.classList.remove('d-none')\n        this.summaryTableTitleTarget.textContent = 'Proposals with the same owner'\n        this.summaryReportTarget.innerHTML = this.createSummaryTable(response.otherProposalInfos, true, false)\n        this.handlerScrollerTable()\n      }\n      this.toVoteTarget.classList.remove('d-none')\n      this.toDiscussionTarget.classList.remove('d-none')\n      this.toVoteTarget.href = `/proposal/${this.settings.token}`\n      this.toDiscussionTarget.href = `${this.politeiaUrl}/record/${this.settings.token.substring(0, 7)}`\n      tokenList = response.tokenList\n      this.handlerNextPrevButton('proposal', this.settings.token)\n      const proposalName = response.proposalInfo ? response.proposalInfo.name : ''\n      this.currentDetailTarget.textContent = proposalName\n      this.detailReportTitleTarget.textContent = 'Proposal Detail Report - ' + proposalName\n      this.proposalSumCardTarget.classList.remove('d-none')\n      const remainingStr = response.proposalInfo.totalRemaining === 0.0 ? '<p>Status: <span class=\"fw-600\">Finished</span></p>' : `<p>Total Remaining (Est): <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.totalRemaining, 2, 2)}</span></p>`\n      this.proposalSpanRowTarget.innerHTML = `<p>Owner: <a href=\"${'/finance-report/detail?type=owner&name=' + response.proposalInfo.author}\" class=\"fw-600 link-hover-underline\">${response.proposalInfo.author}</a></p>` +\n      `<p>Domain: <a href=\"${'/finance-report/detail?type=domain&name=' + response.proposalInfo.domain}\" class=\"link-hover-underline fw-600\">${response.proposalInfo.domain.charAt(0).toUpperCase() + response.proposalInfo.domain.slice(1)}</a></p>` +\n      `<p>Start Date: <span class=\"fw-600\">${response.proposalInfo.start}</span></p>` +\n      `<p>End Date: <span class=\"fw-600\">${response.proposalInfo.end}</span></p>` +\n      `<p>Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.budget, 2, 2)}</span></p>` +\n      `<p>Total Spent (Est): <span class=\"fw-600\">$${humanize.formatToLocalString(response.proposalInfo.totalSpent, 2, 2)}</span></p>` + remainingStr\n    } else {\n      this.toVoteTarget.classList.add('d-none')\n      this.toDiscussionTarget.classList.add('d-none')\n    }\n    // Create info of\n    // create monthly table\n    if (this.settings.type === 'owner') {\n      this.monthlyAreaTarget.classList.add('d-none')\n      this.yearlyAreaTarget.classList.add('d-none')\n    } else {\n      if (this.settings.type === 'proposal') {\n        // if proposal, hide yearly summary\n        this.yearlyAreaTarget.classList.add('d-none')\n      } else {\n        this.yearlyAreaTarget.classList.remove('d-none')\n        this.yearlyReportTarget.innerHTML = this.createMonthYearTable(response, 'year')\n      }\n      this.monthlyAreaTarget.classList.remove('d-none')\n      this.monthlyReportTarget.innerHTML = this.createMonthYearTable(response, 'month')\n    }\n  }\n\n  handlerScrollerTable () {\n    const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n    const tableWidth = parseFloat(tableWidthStr.trim())\n    const parentContainerWidthStr = $('#summaryTableArea').css('width').replace('px', '')\n    const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n    let hideScroller = false\n    if (tableWidth < parentContainerWidth + 5) {\n      $('#scroller').addClass('d-none')\n      hideScroller = true\n    } else {\n      $('#scroller').removeClass('d-none')\n    }\n    this.summaryReportTarget.classList.add('proposal-table-padding')\n    $('#reportTable').css('width', 'auto')\n    $('html').css('overflow-x', 'hidden')\n    // set overflow class\n    $('#containerReportTable').addClass('of-x-hidden')\n    $('#containerBody').addClass('of-x-hidden')\n    $('#scrollerLong').css('width', (tableWidth + 25) + 'px')\n    // set scroller width fit with container width\n    $('#scroller').css('width', $('#summaryTableArea').css('width'))\n    if (this.isMobile()) {\n      $('#containerBody').css('overflow', 'scroll')\n      this.summaryReportTarget.classList.remove('proposal-table-padding')\n      $('#scroller').addClass('d-none')\n    } else {\n      this.summaryReportTarget.classList.add('proposal-table-padding')\n      if (!hideScroller) {\n        $('#scroller').removeClass('d-none')\n      }\n    }\n  }\n\n  setDomainGeneralInfo (data, type) {\n    this.proposalSumCardTarget.classList.remove('d-none')\n    let totalBudget = 0; let totalSpent = 0; let totalRemaining = 0\n    if (data.proposalInfos && data.proposalInfos.length > 0) {\n      data.proposalInfos.forEach((proposal) => {\n        totalBudget += proposal.budget\n        totalSpent += proposal.totalSpent\n        totalRemaining += proposal.totalRemaining > 0 ? proposal.totalRemaining : 0\n      })\n    }\n    this.proposalSpanRowTarget.innerHTML = `<p>Total Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</span></p>` +\n    `<p>Total ${type === 'owner' ? 'Received' : 'Spent'} (Estimate):<span class=\"fw-600\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</span></p>` +\n    `<p>Total Remaining (Estimate): <span class=\"fw-600\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</span></p>`\n  }\n\n  handlerNextPrevButton (type, currentValue) {\n    let handlerList\n    if (type === 'domain') {\n      handlerList = domainList\n    } else if (type === 'proposal') {\n      handlerList = tokenList\n    } else if (type === 'owner') {\n      handlerList = ownerList\n    }\n\n    if (!handlerList || handlerList.length < 1) {\n      return\n    }\n    const indexOfNow = handlerList.indexOf(currentValue)\n    if (indexOfNow < 0) {\n      return\n    }\n    if (indexOfNow === 0) {\n      // disable left array button\n      this.prevBtnTarget.classList.add('disabled')\n      this.prevBtnTarget.classList.remove('cursor-pointer')\n    } else {\n      this.prevBtnTarget.classList.remove('disabled')\n      this.prevBtnTarget.classList.add('cursor-pointer')\n    }\n    if (indexOfNow === handlerList.length - 1) {\n      this.nextBtnTarget.classList.add('disabled')\n      this.nextBtnTarget.classList.remove('cursor-pointer')\n    } else {\n      this.nextBtnTarget.classList.remove('disabled')\n      this.nextBtnTarget.classList.add('cursor-pointer')\n    }\n  }\n\n  handlerYearMonthNextPrevButton () {\n    const time = this.settings.time\n    let prevBtnShow = true\n    let nextBtnShow = true\n    if (this.settings.type === 'year') {\n      if (time === this.reportMinYear) {\n        prevBtnShow = false\n      }\n      if (time === this.reportMaxYear) {\n        nextBtnShow = false\n      }\n    } else if (this.settings.type === 'month') {\n      const timeArr = this.settings.time.trim().split('_')\n      const year = parseInt(timeArr[0])\n      const month = parseInt(timeArr[1])\n      if (year === this.reportMinYear && month === this.reportMinMonth) {\n        prevBtnShow = false\n      }\n      if (year === this.reportMaxYear && month === this.reportMaxMonth) {\n        nextBtnShow = false\n      }\n    }\n    if (prevBtnShow) {\n      this.prevBtnTarget.classList.remove('disabled')\n      this.prevBtnTarget.classList.add('cursor-pointer')\n    } else {\n      this.prevBtnTarget.classList.add('disabled')\n      this.prevBtnTarget.classList.remove('cursor-pointer')\n    }\n    if (nextBtnShow) {\n      this.nextBtnTarget.classList.remove('disabled')\n      this.nextBtnTarget.classList.add('cursor-pointer')\n    } else {\n      this.nextBtnTarget.classList.add('disabled')\n      this.nextBtnTarget.classList.remove('cursor-pointer')\n    }\n  }\n\n  createSummaryTable (data, hideAuthor, hideDomain) {\n    $('#reportTable').css('width', '')\n    if (!data) {\n      return ''\n    }\n    let thead = '<thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"va-mid text-center month-col fs-13i fw-600 proposal-name-col\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByPName\">Name</label>' +\n      `<span data-action=\"click->financedetail#sortByPName\" class=\"${(this.settings.stype === 'pname' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pname' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    if (!hideDomain) {\n      thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDomain\">Domain</label>' +\n        `<span data-action=\"click->financedetail#sortByDomain\" class=\"${(this.settings.stype === 'domain' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'domain' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    }\n    if (!hideAuthor) {\n      thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByAuthor\">Author</label>' +\n        `<span data-action=\"click->financedetail#sortByAuthor\" class=\"${(this.settings.stype === 'author' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'author' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    }\n    thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByStartDate\">Start Date</label>' +\n      `<span data-action=\"click->financedetail#sortByStartDate\" class=\"${(this.settings.stype === 'startdt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.stype || this.settings.stype === '' || this.settings.stype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByEndDate\">End Date</label>' +\n      `<span data-action=\"click->financedetail#sortByEndDate\" class=\"${(this.settings.stype === 'enddt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'enddt' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByBudget\">Budget</label>' +\n      `<span data-action=\"click->financedetail#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDays\">Days</label>' +\n      `<span data-action=\"click->financedetail#sortByDays\" class=\"${(this.settings.stype === 'days' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'days' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByAvg\">Monthly Avg (Est)</label>' +\n      `<span data-action=\"click->financedetail#sortByAvg\" class=\"${(this.settings.stype === 'avg' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'avg' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortBySpent\">Total Spent (Est)</label>' +\n      `<span data-action=\"click->financedetail#sortBySpent\" class=\"${(this.settings.stype === 'spent' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600 pr-10i\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByRemaining\">Total Remaining (Est)</label>' +\n      `<span data-action=\"click->financedetail#sortByRemaining\" class=\"${(this.settings.stype === 'remaining' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'remaining' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '</tr></thead>'\n\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    let totalBudget = 0\n    let totalAllSpent = 0\n    let totalRemaining = 0\n    // create tbody content\n    const summaryList = this.sortSummary(data)\n    for (let i = 0; i < summaryList.length; i++) {\n      const summary = summaryList[i]\n      const lengthInDays = this.getLengthInDay(summary)\n      let monthlyAverage = summary.budget / lengthInDays\n      if (lengthInDays < 30) {\n        monthlyAverage = summary.budget\n      } else {\n        monthlyAverage = monthlyAverage * 30\n      }\n      totalBudget += summary.budget\n      totalAllSpent += summary.totalSpent\n      totalRemaining += summary.totalRemaining > 0 ? summary.totalRemaining : 0\n      bodyList += `<tr class=\"${summary.totalRemaining > 0 ? 'summary-active-row' : 'proposal-summary-row'}\">` +\n        `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=proposal&token=' + summary.token}\" class=\"link-hover-underline fs-13i\">${summary.name}</a></td>`\n      if (!hideAuthor) {\n        bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>`\n      }\n      if (!hideDomain) {\n        bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>`\n      }\n      bodyList += `<td class=\"va-mid text-center fs-13i\">${summary.start}</td>` +\n        `<td class=\"va-mid text-center fs-13i\">${summary.end}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right fs-13i\">${lengthInDays}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : ''}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i pr-10i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : '-'}</td>` +\n        '</tr>'\n    }\n    const totalColSpan = hideAuthor && hideDomain ? '3' : ((!hideAuthor && hideDomain) || (hideAuthor && !hideDomain) ? '4' : '5')\n    bodyList += '<tr class=\"text-secondary finance-table-header finance-table-footer last-row-header\">' +\n    `<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"${totalColSpan}\">Total</td>` +\n    `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n    '<td>-</td><td>-</td>' +\n    `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalAllSpent > 0 ? '$' + humanize.formatToLocalString(totalAllSpent, 2, 2) : '-'}</td>` +\n    `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalRemaining > 0 ? '$' + humanize.formatToLocalString(totalRemaining, 2, 2) : '-'}</td>` +\n    '</tr>'\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  getLengthInDay (summary) {\n    const start = Date.parse(summary.start)\n    const end = Date.parse(summary.end)\n    const oneDay = 24 * 60 * 60 * 1000\n\n    return Math.round(Math.abs((end - start) / oneDay))\n  }\n\n  getYearDataFromMonthData (data) {\n    const result = []\n    const yearDataMap = new Map()\n    const yearDataDcrMap = new Map()\n    const yearArr = []\n    data.monthData.forEach((item) => {\n      const monthArr = item.month.split('-')\n      if (monthArr.length !== 2) {\n        return\n      }\n      const year = monthArr[0]\n      if (!yearArr.includes(year)) {\n        yearArr.push(year)\n      }\n      if (yearDataMap.has(year)) {\n        yearDataMap.set(year, yearDataMap.get(year) + item.expense)\n        yearDataDcrMap.set(year, yearDataDcrMap.get(year) + item.expenseDcr)\n      } else {\n        yearDataMap.set(year, item.expense)\n        yearDataDcrMap.set(year, item.expenseDcr)\n      }\n    })\n\n    yearArr.forEach((year) => {\n      const object = {\n        month: year,\n        expense: yearDataMap.get(year),\n        expenseDcr: yearDataDcrMap.get(year)\n      }\n      result.push(object)\n    })\n    return result\n  }\n\n  getFullTimeParam (timeInput, splitChar) {\n    const timeArr = timeInput.split(splitChar)\n    let timeParam = ''\n    if (timeArr.length === 2) {\n      timeParam = timeArr[0] + '_'\n      // if month < 10\n      if (timeArr[1].charAt(0) === '0') {\n        timeParam += timeArr[1].substring(1, timeArr[1].length)\n      } else {\n        timeParam += timeArr[1]\n      }\n    }\n    return timeParam\n  }\n\n  createMonthYearTable (data, type) {\n    let handlerData = data.monthData\n    if (type === 'year') {\n      handlerData = this.getYearDataFromMonthData(data)\n    }\n    let breakTable = 7\n    if (type === 'year' || this.settings.type === 'proposal') {\n      // No break\n      breakTable = 50\n    }\n    return this.createTableDetailForMonthYear(handlerData, breakTable, type)\n  }\n\n  createTableDetailForMonthYear (handlerData, breakTable, type) {\n    let allTable = ''\n    let count = 0\n    let stepNum = 0\n    for (let i = 0; i < handlerData.length; i++) {\n      if (count === 0) {\n        allTable += `<table class=\"table monthly v3 border-grey-2 w-auto ${stepNum > 0 ? 'ms-2' : ''}\" style=\"height: 40px;\">` +\n        '<col><colgroup span=\"2\"></colgroup><thead>' +\n        `<tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">${type === 'year' ? 'Year' : 'Month'}</th>` +\n        '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th>'\n        allTable += (this.settings.type === 'year' ? '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Actual Spent</th>' : '') + '</tr>'\n        allTable += '<tr class=\"text-secondary finance-table-header\">' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n        allTable += this.settings.type === 'year' ? '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' : ''\n        allTable += '</tr></thead><tbody>'\n      }\n      const dataMonth = handlerData[i]\n      let isFuture = false\n      const timeYearMonth = this.getYearMonthArray(dataMonth.month, '-')\n      const nowDate = new Date()\n      const year = nowDate.getUTCFullYear()\n      const month = nowDate.getUTCMonth() + 1\n      if (type === 'year') {\n        isFuture = timeYearMonth[0] > year\n      } else if (type === 'month') {\n        const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n        const compareNowTime = year * 12 + month\n        isFuture = compareDataTime > compareNowTime\n      }\n      allTable += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\">`\n      const timeParam = this.getFullTimeParam(dataMonth.month, '-')\n      allTable += `<td class=\"text-left px-2 fs-13i\"><a class=\"link-hover-underline fs-13i fw-600\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report/detail?type=' + type + '&time=' + (timeParam === '' ? dataMonth.month : timeParam)}\">${dataMonth.month}</a></td>`\n      allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.expense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.expense, 2, 2) : '-'}</td>` +\n                  `<td class=\"text-right px-2 fs-13i\">${dataMonth.expenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.expenseDcr / 1e8, 2, 2) : '-'}</td>`\n      if (this.settings.type === 'year') {\n        allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.actualExpense, 2, 2) : '-'}</td>` +\n                    `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.actualExpenseDcr / 1e8, 2, 2) : '-'}</td>`\n      }\n      allTable += '</tr>'\n      if (count === breakTable) {\n        allTable += '</tbody>'\n        allTable += '</table>'\n        count = 0\n      } else {\n        count++\n      }\n      stepNum++\n    }\n    if (count !== breakTable) {\n      allTable += '</tbody>'\n      allTable += '</table>'\n    }\n    return allTable\n  }\n\n  // Calculate and response\n  async yearMonthCalculate () {\n    // init report time range\n    await this.initReportTimeRange()\n    this.handlerYearMonthNextPrevButton()\n    // set up navigative to main report and up level of time\n    let monthYearDisplay = this.settings.time.toString().replace('_', '-')\n    this.toUpReportTarget.href = '/finance-report'\n    let reportType\n    if (this.settings.type === 'year') {\n      this.yearBreadcumbTarget.classList.add('d-none')\n      reportType = 'Yearly Summary Report'\n    } else {\n      reportType = 'Monthly Summary Report'\n      this.yearBreadcumbTarget.classList.remove('d-none')\n      if (this.settings.time) {\n        const timeArr = this.settings.time.trim().split('_')\n        if (timeArr.length >= 2) {\n          const year = parseInt(timeArr[0])\n          this.yearBreadcumbTarget.href = '/finance-report/detail?type=year&time=' + year\n          this.yearBreadcumbTarget.textContent = year\n        }\n      }\n      const myArr = this.settings.time.toString().split('_')\n      if (myArr.length >= 2) {\n        const monthNumber = Number(myArr[1])\n        const date = new Date()\n        date.setMonth(monthNumber - 1)\n        monthYearDisplay = date.toLocaleString('en-US', { month: 'long' }) + ' ' + myArr[0]\n      }\n    }\n    this.currentDetailTarget.textContent = monthYearDisplay\n    this.detailReportTitleTarget.textContent = reportType + ' - ' + monthYearDisplay\n    const url = `/api/finance-report/detail?type=${this.settings.type}&time=${this.settings.time}`\n    let response\n    requestCounter++\n    const thisRequest = requestCounter\n    if (hasCache(url)) {\n      response = responseCache[url]\n    } else {\n      // response = await axios.get(url)\n      response = await requestJSON(url)\n      responseCache[url] = response\n      if (thisRequest !== requestCounter) {\n        // new request was issued while waiting.\n        console.log('Response request different')\n      }\n    }\n\n    if (!response) {\n      this.proposalAreaTarget.classList.add('d-none')\n      return\n    }\n    responseData = response\n    this.proposalReportTarget.innerHTML = this.createProposalDetailReport(response)\n    if (response.proposalTotal > 0) {\n      this.proposalTopSummaryTarget.classList.remove('d-none')\n      this.handlerSummaryArea(response)\n      this.createDomainsSummaryTable(response)\n    } else {\n      this.proposalTopSummaryTarget.classList.add('d-none')\n    }\n    this.createYearMonthTopSummary(response)\n    // create month data list if type is year\n    if (this.settings.type === 'year') {\n      if (response.monthlyResultData && response.monthlyResultData.length > 0) {\n        this.monthlyAreaTarget.classList.remove('d-none')\n        this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(response.monthlyResultData, 12, 'month')\n      } else {\n        this.monthlyAreaTarget.classList.add('d-none')\n      }\n    }\n  }\n\n  handlerSummaryArea (data) {\n    this.expendiduteValueTarget.textContent = '$' + humanize.formatToLocalString(data.proposalTotal, 2, 2)\n    // display proposal spent value\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return\n    }\n    let totalSpent = 0\n    let totalSpentDCR = 0\n    for (let i = 0; i < data.reportDetail.length; i++) {\n      const report = data.reportDetail[i]\n      totalSpent += report.spentEst > 0 ? report.spentEst : 0\n      totalSpentDCR += report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n    }\n    if (totalSpent > 0) {\n      this.proposalSpentAreaTarget.classList.remove('d-none')\n      this.proposalSpentTarget.textContent = '$' + humanize.formatToLocalString(totalSpent, 2, 2) + ` (${humanize.formatToLocalString(totalSpentDCR, 2, 2)} DCR)`\n    } else {\n      this.proposalSpentAreaTarget.classList.add('d-none')\n    }\n    // display treasury spent value\n    if (totalSpent > 0) {\n      this.treasurySpentAreaTarget.classList.remove('d-none')\n      this.unaccountedValueAreaTarget.classList.remove('d-none')\n      const combinedUSD = data.treasurySummary.outvalueUSD + data.legacySummary.outvalueUSD\n      const combinedDCR = data.treasurySummary.outvalue + data.legacySummary.outvalue\n      this.treasurySpentTarget.textContent = '$' + humanize.formatToLocalString(combinedUSD, 2, 2) + ` (${humanize.formatToLocalString(combinedDCR / 100000000, 2, 2)} DCR)`\n      const deltaUSD = combinedUSD - totalSpent\n      const deltaDCR = combinedDCR / 100000000 - totalSpentDCR\n      this.unaccountedValueTarget.textContent = (deltaUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(deltaUSD), 2, 2) + ` (${humanize.formatToLocalString(deltaDCR, 2, 2)} DCR, ${deltaUSD < 0 ? 'Missing' : 'Unaccounted'})`\n    } else {\n      this.treasurySpentAreaTarget.classList.add('d-none')\n      this.unaccountedValueAreaTarget.classList.add('d-none')\n    }\n  }\n\n  createDomainDetailReport (data) {\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return ''\n    }\n    const domainMap = new Map()\n    data.reportDetail.forEach((detail) => {\n      if (domainMap.has(detail.domain)) {\n        domainMap.set(detail.domain, domainMap.get(detail.domain) + detail.expense)\n      } else {\n        domainMap.set(detail.domain, detail.expense)\n      }\n    })\n    let tbody = '<tbody>###</tbody>'\n\n    let bodyList = ''\n    for (let i = 0; i < data.domainList.length; i++) {\n      const domain = data.domainList[i]\n      bodyList += '<tr>'\n      // td domain name\n      bodyList += `<td class=\"text-left fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" class=\"link-hover-underline fs-13i\">${domain.charAt(0).toUpperCase() + domain.slice(1)}</a></td>`\n      bodyList += `<td class=\"text-right fs-13i\">$${humanize.formatToLocalString(domainMap.get(domain), 2, 2)}</td>`\n      bodyList += '</tr>'\n    }\n    tbody = tbody.replace('###', bodyList)\n    return tbody\n  }\n\n  createYearMonthTopSummary (data) {\n    if (data.treasurySummary.invalue <= 0 && data.treasurySummary.outvalue <= 0 && data.legacySummary.invalue <= 0 && data.legacySummary.outvalue <= 0) {\n      this.totalSpanRowTarget.classList.add('d-none')\n      return\n    }\n    this.totalSpanRowTarget.classList.remove('d-none')\n    let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n    '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Treasury Type</th>' +\n    '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Value</th></tr>' +\n    '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n    '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n    innerHtml += data.treasurySummary.invalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n    `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.invalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.treasurySummary.outvalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n    `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.outvalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.legacySummary.invalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n    `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.invalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.legacySummary.outvalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n    `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.outvalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += '</tbody>'\n    this.yearMonthInfoTableTarget.innerHTML = innerHtml\n  }\n\n  createDomainsSummaryTable (data) {\n    const domainDataMap = this.getDomainsSummaryData(data)\n    let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n    '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>' +\n    '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th></tr>' +\n    '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n    '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n    let totalDCR = 0; let totalUSD = 0\n    let hasData = false\n    domainDataMap.forEach((val, key) => {\n      if (val.valueDCR !== 0 || val.valueUSD !== 0) {\n        const valueDCR = val.valueDCR\n        totalDCR += val.valueDCR\n        const valueUSD = val.valueUSD\n        totalUSD += val.valueUSD\n        hasData = true\n        innerHtml += `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\"><a href=\"/finance-report/detail?type=domain&name=${key}\" class=\"link-hover-underline fs-13i\">${key.charAt(0).toUpperCase() + key.slice(1)}</a></td>` +\n                     `<td class=\"text-right px-2 fs-13i\">${valueDCR > 0 ? humanize.formatToLocalString(valueDCR, 2, 2) : '-'}</td>` +\n                     `<td class=\"text-right px-2 fs-13i\">$${valueUSD > 0 ? humanize.formatToLocalString(valueUSD, 2, 2) : '-'}</td></tr>`\n      }\n    })\n    if (!hasData) {\n      this.domainSummaryAreaTarget.classList.add('d-none')\n      return\n    }\n    this.domainSummaryAreaTarget.classList.remove('d-none')\n    innerHtml += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"va-mid text-center fw-600 fs-13i\">Total</td>' +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalDCR > 0 ? humanize.formatToLocalString(totalDCR, 2, 2) : '-'}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalUSD > 0 ? '$' + humanize.formatToLocalString(totalUSD, 2, 2) : '-'}</td>` +\n      '</tr>'\n    innerHtml += '</tbody>'\n    this.domainSummaryTableTarget.innerHTML = innerHtml\n  }\n\n  sortByPName () {\n    this.proposalSort('pname')\n  }\n\n  sortByAuthor () {\n    this.proposalSort('author')\n  }\n\n  sortByDomain () {\n    this.proposalSort('domain')\n  }\n\n  sortByStartDate () {\n    this.proposalSort('startdt')\n  }\n\n  sortByEndDate () {\n    this.proposalSort('enddt')\n  }\n\n  sortBySpent () {\n    this.proposalSort('spent')\n  }\n\n  sortByBudget () {\n    this.proposalSort('budget')\n  }\n\n  sortByDays () {\n    this.proposalSort('days')\n  }\n\n  sortByAvg () {\n    this.proposalSort('avg')\n  }\n\n  sortByRemaining () {\n    this.proposalSort('remaining')\n  }\n\n  proposalSort (type) {\n    this.settings.stype = type\n    this.settings.order = this.settings.order === 'esc' ? 'desc' : 'esc'\n    if (this.settings.type === 'year' || this.settings.type === 'month') {\n      this.yearMonthProposalListUpdate()\n    } else {\n      this.proposalDetailsListUpdate()\n    }\n  }\n\n  createProposalDetailReport (data) {\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      this.proposalAreaTarget.classList.add('d-none')\n      return ''\n    }\n\n    if (!this.settings.stype || this.settings.stype === '') {\n      this.settings.stype = 'pname'\n    }\n\n    this.proposalAreaTarget.classList.remove('d-none')\n    const thead = '<thead>' +\n    '<tr class=\"text-secondary finance-table-header\">' +\n    '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByPName\">Proposal Name</label>' +\n    `<span data-action=\"click->financedetail#sortByPName\" class=\"${(this.settings.stype === 'pname' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pname' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n    '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortByDomain\">Domain</label>' +\n    `<span data-action=\"click->financedetail#sortByDomain\" class=\"${(this.settings.stype === 'domain' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'domain' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n    `<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financedetail#sortBySpent\">This ${this.settings.type === 'year' ? 'Year' : 'Month'} (Est)</label>` +\n    `<span data-action=\"click->financedetail#sortBySpent\" class=\"${(this.settings.stype === 'spent' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n    '</tr></thead>'\n\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    let totalExpense = 0\n    // sort by startdt\n    const summaryList = this.sortSummary(data.reportDetail)\n    for (let i = 0; i < summaryList.length; i++) {\n      bodyList += '<tr class=\"odd-even-row\">'\n      const report = summaryList[i]\n      // add proposal name\n      bodyList += '<td class=\"va-mid px-2 text-left fs-13i\">' +\n      `<a href=\"${'/finance-report/detail?type=proposal&token=' + report.token}\" class=\"link-hover-underline fs-13i d-block\">${report.name}</a></td>` +\n      `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + report.domain}\" class=\"link-hover-underline fs-13i\">${report.domain.charAt(0).toUpperCase() + report.domain.slice(1)}</a></td>` +\n        '<td class=\"va-mid text-right px-2 fs-13i\">' +\n        `${report.totalSpent > 0 ? '$' + humanize.formatToLocalString(report.totalSpent, 2, 2) : ''}</td></tr>`\n      totalExpense += report.totalSpent\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n    '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"2\">Total</td>' +\n    `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalExpense > 0 ? '$' + humanize.formatToLocalString(totalExpense, 2, 2) : ''}</td>` +\n    '</tr>'\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  getDomainsSummaryData (data) {\n    const result = new Map()\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return result\n    }\n    for (let i = 0; i < data.reportDetail.length; i++) {\n      const report = data.reportDetail[i]\n      const domain = report.domain\n      if (result.has(domain)) {\n        const detailData = {}\n        const existData = result.get(domain)\n        detailData.valueDCR = existData.valueDCR + (report.totalSpentDcr > 0 ? report.totalSpentDcr : 0)\n        detailData.valueUSD = existData.valueUSD + (report.spentEst > 0 ? report.spentEst : 0)\n        result.set(domain, detailData)\n      } else {\n        const detailData = {}\n        detailData.valueDCR = report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n        detailData.valueUSD = report.spentEst > 0 ? report.spentEst : 0\n        result.set(domain, detailData)\n      }\n    }\n    return result\n  }\n\n  sortSummary (summary) {\n    if (!summary || summary.length === 0) {\n      return\n    }\n    const _this = this\n    if (this.settings.stype === 'domain') {\n      return this.sortSummaryByDomain(summary)\n    }\n    summary.sort(function (a, b) {\n      let aData = null\n      let bData = null\n      let alength\n      let blength\n      switch (_this.settings.stype) {\n        case 'pname':\n          aData = a.name\n          bData = b.name\n          break\n        case 'author':\n          aData = a.author\n          bData = b.author\n          break\n        case 'budget':\n          aData = a.budget\n          bData = b.budget\n          break\n        case 'spent':\n          aData = a.totalSpent\n          bData = b.totalSpent\n          break\n        case 'remaining':\n          aData = a.totalRemaining\n          bData = b.totalRemaining\n          break\n        case 'days':\n          aData = _this.getLengthInDay(a)\n          bData = _this.getLengthInDay(b)\n          break\n        case 'avg':\n          alength = _this.getLengthInDay(a)\n          blength = _this.getLengthInDay(b)\n          aData = (a.budget / alength) * 30\n          bData = (b.budget / blength) * 30\n          break\n        case 'enddt':\n          aData = Date.parse(a.end)\n          bData = Date.parse(b.end)\n          break\n        default:\n          aData = Date.parse(a.start)\n          bData = Date.parse(b.start)\n          break\n      }\n\n      if (aData > bData) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (aData < bData) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByDomain (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.domain > b.domain) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      } else if (a.domain < b.domain) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      } else {\n        if (a.name > b.name) {\n          return _this.settings.order === 'desc' ? -1 : 1\n        }\n        if (a.name < b.name) {\n          return _this.settings.order === 'desc' ? 1 : -1\n        }\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  getYearMonthArray (timeInput, splitChar) {\n    const timeArr = timeInput.split(splitChar)\n    const result = []\n    if (timeArr.length < 2) {\n      result.push(parseInt(timeArr[0]))\n      return result\n    }\n    result.push(parseInt(timeArr[0]))\n    result.push(parseInt(timeArr[1]))\n    return result\n  }\n}\n","import TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { isEmpty } from 'lodash-es'\nimport { getDefault } from '../helpers/module_helper'\nimport { padPoints, sizedBarPlotter } from '../helpers/chart_helper'\nimport Zoom from '../helpers/zoom_helper'\nimport FinanceReportController from './financebase_controller.js'\n\nconst responseCache = {}\nlet requestCounter = 0\nlet responseData\nlet proposalResponse = null\nlet treasuryResponse = null\nlet isSearching = false\nlet domainChartData = null\nlet domainChartYearData = null\nlet domainYearData = null\nlet combinedChartData = null\nlet combinedChartYearData = null\nlet combinedData = null\nlet combinedAvgData = null\nlet combinedYearData = null\nlet combineBalanceMap = null\nlet combinedYearlyBalanceMap = null\nlet treasuryBalanceMap = null\nlet treasuryYearlyBalanceMap = null\nlet adminBalanceMap = null\nlet adminYearlyBalanceMap = null\nlet treasurySummaryMap = null\nlet redrawChart = true\nlet domainChartZoom\nlet treasuryChartZoom\nlet domainChartBin\nlet treasuryChartBin\nlet domainChartFlow\nlet treasuryChartFlow\nlet combinedChartZoom\nlet combinedChartBin\nlet combinedChartFlow\nlet adminChartZoom\nlet adminChartBin\nlet adminChartFlow\nlet detailMonthlySummary\nlet yearList\n\n// report detail variable\nconst responseDetailCache = {}\nlet requestDetailCounter = 0\nlet responseDetailData\nlet mainReportSettingsState\nlet detailReportSettingsState\nlet mainReportInitialized = false\n\nfunction hasDetailCache (k) {\n  if (!responseDetailCache[k]) return false\n  const expiration = new Date(responseDetailCache[k].expiration)\n  return expiration > new Date()\n}\n\nconst proposalNote = '*The data is the daily cost estimate based on the total budget divided by the total number of proposals days.'\nlet treasuryNote = ''\n\nfunction hasCache (k) {\n  if (!responseCache[k]) return false\n  const expiration = new Date(responseCache[k].expiration)\n  return expiration > new Date()\n}\n\n// start function and variable for chart\nconst blockDuration = 5 * 60000\nlet Dygraph // lazy loaded on connect\n\nfunction txTypesFunc (d, binSize) {\n  const p = []\n\n  d.time.map((n, i) => {\n    p.push([new Date(n), d.sentRtx[i], d.receivedRtx[i], d.tickets[i], d.votes[i], d.revokeTx[i]])\n  })\n\n  padPoints(p, binSize)\n\n  return p\n}\n\nfunction amountFlowProcessor (d, binSize) {\n  const flowData = []\n  const balanceData = []\n  let balance = 0\n\n  d.time.map((n, i) => {\n    const v = d.net[i]\n    let netReceived = 0\n    let netSent = 0\n\n    v > 0 ? (netReceived = v) : (netSent = (v * -1))\n    flowData.push([new Date(n), d.received[i], d.sent[i], netReceived, netSent])\n    balance += v\n    balanceData.push([new Date(n), balance])\n  })\n\n  padPoints(flowData, binSize)\n  padPoints(balanceData, binSize, true)\n\n  return {\n    flow: flowData,\n    balance: balanceData\n  }\n}\n\nfunction domainChartProcessor (d, binSize) {\n  const flowData = []\n\n  d.time.map((n, i) => {\n    flowData.push([new Date(n), d.marketing[i], d.development[i]])\n  })\n\n  padPoints(flowData, binSize)\n\n  return {\n    flow: flowData\n  }\n}\n\nfunction customizedFormatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': ' + (isNaN(series.y) ? '' : series.y + ' DCR') + '</span> '\n  })\n  return html\n}\n\nfunction domainChartFormatter (data) {\n  let xHTML = ''\n  if (data.xHTML !== undefined) {\n    xHTML = humanize.date(data.x, false, true)\n  }\n  let html = this.getLabels()[0] + ': ' + xHTML\n  data.series.map((series) => {\n    if (series.color === undefined) return ''\n    // Skip display of zeros\n    if (series.y === 0) return ''\n    const l = '<span style=\"color: ' + series.color + ';\"> ' + series.labelHTML\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += '<br>' + series.dashHTML + l + ': $' + (isNaN(series.y) ? '' : humanize.formatToLocalString(Number(series.y), 2, 2)) + '</span> '\n  })\n  return html\n}\n\nlet commonOptions, amountFlowGraphOptions, balanceGraphOptions, domainGraphOptions\n// Cannot set these until DyGraph is fetched.\nfunction createOptions () {\n  commonOptions = {\n    digitsAfterDecimal: 8,\n    showRangeSelector: true,\n    rangeSelectorHeight: 20,\n    rangeSelectorForegroundStrokeColor: '#999',\n    rangeSelectorBackgroundStrokeColor: '#777',\n    legend: 'follow',\n    fillAlpha: 0.9,\n    labelsKMB: true,\n    labelsUTC: true,\n    stepPlot: false,\n    rangeSelectorPlotFillColor: 'rgba(128, 128, 128, 0.3)',\n    rangeSelectorPlotFillGradientColor: 'transparent',\n    rangeSelectorPlotStrokeColor: 'rgba(128, 128, 128, 0.7)',\n    rangeSelectorPlotLineWidth: 2\n  }\n\n  amountFlowGraphOptions = {\n    labels: ['Date', 'Income', 'Outgoing', 'Net Received', 'Net Spent'],\n    colors: ['#2971FF', '#2ED6A1', '#41BF53', '#FF0090'],\n    ylabel: 'Total (DCR)',\n    visibility: [true, false, false, false],\n    legendFormatter: customizedFormatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n\n  domainGraphOptions = {\n    labels: ['Date', 'Marketing', 'Development'],\n    colors: ['#2971FF', '#2ED6A1'],\n    ylabel: 'Total Spend (USD)',\n    visibility: [true, true],\n    legendFormatter: domainChartFormatter,\n    stackedGraph: true,\n    fillGraph: false\n  }\n\n  balanceGraphOptions = {\n    labels: ['Date', 'Balance'],\n    colors: ['#41BF53'],\n    ylabel: 'Balance (DCR)',\n    plotter: [Dygraph.Plotters.linePlotter, Dygraph.Plotters.fillPlotter],\n    legendFormatter: customizedFormatter,\n    stackedGraph: false,\n    visibility: [true],\n    fillGraph: true,\n    stepPlot: true\n  }\n}\n\nlet ctrl = null\n// end function and varibable for chart\n\nexport default class extends FinanceReportController {\n  static get targets () {\n    return ['report', 'colorNoteRow', 'colorLabel', 'colorDescription',\n      'interval', 'groupBy', 'searchInput', 'searchBtn', 'clearSearchBtn', 'searchBox', 'nodata',\n      'treasuryToggleArea', 'reportDescription', 'reportAllPage',\n      'activeProposalSwitchArea', 'options', 'flow', 'zoom', 'cinterval', 'chartbox', 'noconfirms',\n      'chart', 'chartLoader', 'expando', 'littlechart', 'bigchart', 'fullscreen', 'treasuryChart', 'treasuryChartTitle',\n      'yearSelect', 'ttype', 'yearSelectTitle', 'treasuryTypeTitle', 'groupByLabel', 'typeSelector',\n      'amountFlowOption', 'balanceOption', 'chartHeader', 'outgoingExp', 'nameMatrixSwitch',\n      'weekZoomBtn', 'dayZoomBtn', 'weekGroupBtn', 'dayGroupBtn', 'sentRadioLabel', 'receivedRadioLabel',\n      'netSelectRadio', 'selectTreasuryType', 'proposalSelectType', 'proposalType', 'listLabel', 'monthLabel',\n      'currentBalanceArea', 'treasuryBalanceDisplay', 'treasuryLegacyPercent', 'treasuryTypeRate', 'chartData',\n      'specialTreasury', 'decentralizedData', 'adminData', 'domainFutureRow', 'futureLabel', 'reportType', 'pageLoader',\n      'treasuryBalanceRate', 'treasuryLegacyRate', 'decentralizedDataRate', 'adminDataRate', 'decentralizedTitle', 'adminTitle',\n      'treasuryBalanceCard', 'subTreasuryTitle', 'noDetailData', 'reportArea', 'detailReportArea', 'mainReportTopArea', 'proposalSumCard',\n      'proposalSpanRow', 'toVote', 'toDiscussion', 'totalSpanRow', 'expendiduteValue', 'yearMonthInfoTable', 'noReport', 'domainArea',\n      'domainReport', 'proposalArea', 'proposalReport', 'monthlyArea', 'monthlyReport', 'yearlyArea', 'yearlyReport', 'sameOwnerProposalArea',\n      'otherProposalSummary', 'summaryArea', 'summaryReport', 'reportParentContainer', 'yearMonthSelector', 'topYearSelect', 'topMonthSelect',\n      'detailReportTitle', 'prevBtn', 'nextBtn', 'proposalTopSummary', 'domainSummaryTable', 'domainSummaryArea', 'proposalSpent',\n      'treasurySpent', 'unaccountedValue', 'proposalSpentArea', 'treasurySpentArea', 'unaccountedValueArea', 'viewMode', 'useMonthAvgToggle',\n      'detailGroupBy', 'dinterval', 'detailMonthlyDesc']\n  }\n\n  async connectData () {\n    ctrl = this\n    ctrl.retrievedData = {}\n    ctrl.ajaxing = false\n    ctrl.requestedChart = false\n    // Bind functions that are passed as callbacks\n    ctrl.zoomCallback = ctrl._zoomCallback.bind(ctrl)\n    ctrl.drawCallback = ctrl._drawCallback.bind(ctrl)\n    ctrl.lastEnd = 0\n    ctrl.bindElements()\n    if (this.settings.type === 'bytime') {\n      return\n    }\n    // These two are templates for query parameter sets.\n    // When url query parameters are set, these will also be updated.\n    ctrl.state = Object.assign({}, ctrl.settings)\n\n    // Parse stimulus data\n    const cdata = ctrl.data\n    ctrl.dcrAddress = cdata.get('dcraddress')\n    ctrl.balance = cdata.get('balance')\n\n    if (ctrl.isTreasuryReport()) {\n      ctrl.settings.zoom = ctrl.getTreasuryZoomStatus()\n      ctrl.settings.bin = ctrl.getTreasuryBinStatus()\n      ctrl.settings.flow = ctrl.getTreasuryFlowStatus()\n    } else if (ctrl.isDomainType()) {\n      ctrl.settings.zoom = domainChartZoom || ctrl.settings.zoom\n      ctrl.settings.bin = domainChartBin || ctrl.settings.bin\n      ctrl.settings.flow = domainChartFlow || ctrl.settings.flow\n    } else {\n      ctrl.settings.zoom = ''\n      ctrl.settings.bin = ctrl.defaultSettings.bin\n      ctrl.settings.flow = ctrl.defaultSettings.flow\n    }\n    if (ctrl.isNullValue(ctrl.optionsTarget.value)) {\n      ctrl.optionsTarget.value = 'balance'\n    }\n    // Get initial view settings from the url\n    ctrl.setChartType()\n    if (!ctrl.isNullValue(ctrl.settings.flow)) {\n      ctrl.setFlowChecks()\n    } else {\n      ctrl.settings.flow = ctrl.defaultSettings.flow\n      ctrl.setFlowChecks()\n    }\n    if (!ctrl.isNullValue(ctrl.settings.zoom)) {\n      ctrl.zoomButtons.forEach((button) => {\n        button.classList.remove('btn-selected')\n      })\n    }\n    if (ctrl.isNullValue(ctrl.settings.bin)) {\n      ctrl.settings.bin = ctrl.getBin()\n    }\n    if (ctrl.isNullValue(ctrl.settings.chart) || !ctrl.validChartType(ctrl.settings.chart)) {\n      ctrl.settings.chart = ctrl.chartType\n    }\n    Dygraph = await getDefault(\n      import('../vendor/dygraphs.min.js')\n    )\n    ctrl.currentTType = ctrl.settings.ttype\n    ctrl.changedTType = null\n    this.calculate()\n  }\n\n  getTreasuryZoomStatus () {\n    switch (this.settings.ttype) {\n      case 'current':\n        return treasuryChartZoom || this.settings.zoom\n      case 'legacy':\n        return adminChartZoom || this.settings.zoom\n      default:\n        return combinedChartZoom || this.settings.zoom\n    }\n  }\n\n  getTreasuryBinStatus () {\n    switch (this.settings.ttype) {\n      case 'current':\n        return treasuryChartBin || this.settings.bin\n      case 'legacy':\n        return adminChartBin || this.settings.bin\n      default:\n        return combinedChartBin || this.settings.bin\n    }\n  }\n\n  getTreasuryFlowStatus () {\n    switch (this.settings.ttype) {\n      case 'current':\n        return treasuryChartFlow || this.settings.flow\n      case 'legacy':\n        return adminChartFlow || this.settings.flow\n      default:\n        return combinedChartFlow || this.settings.flow\n    }\n  }\n\n  setTreasuryZoomStatus (zoom) {\n    switch (this.settings.ttype) {\n      case 'current':\n        treasuryChartZoom = zoom\n        break\n      case 'legacy':\n        adminChartZoom = zoom\n        break\n      default:\n        combinedChartZoom = zoom\n    }\n  }\n\n  setTreasuryBinStatus (bin) {\n    switch (this.settings.ttype) {\n      case 'current':\n        treasuryChartBin = bin\n        break\n      case 'legacy':\n        adminChartBin = bin\n        break\n      default:\n        combinedChartBin = bin\n    }\n  }\n\n  setTreasuryFlowStatus (flow) {\n    switch (this.settings.ttype) {\n      case 'current':\n        treasuryChartFlow = flow\n        break\n      case 'legacy':\n        adminChartFlow = flow\n        break\n      default:\n        combinedChartFlow = flow\n    }\n  }\n\n  _drawCallback (graph, first) {\n    if (first) return\n    const [start, end] = ctrl.graph.xAxisRange()\n    if (start === end) return\n    if (end === this.lastEnd) return // Only handle slide event.\n    this.lastEnd = end\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    if (ctrl.isTreasuryReport()) {\n      ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n    } else if (ctrl.isDomainType()) {\n      domainChartZoom = ctrl.settings.zoom\n    }\n    ctrl.updateQueryString()\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  _zoomCallback (start, end) {\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    if (ctrl.isTreasuryReport()) {\n      ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n    } else if (ctrl.isDomainType()) {\n      domainChartZoom = ctrl.settings.zoom\n    }\n    ctrl.updateQueryString()\n    ctrl.setSelectedZoom(Zoom.mapKey(ctrl.settings.zoom, ctrl.graph.xAxisExtremes()))\n  }\n\n  setSelectedZoom (zoomKey) {\n    this.zoomButtons.forEach(function (button) {\n      if (button.name === zoomKey) {\n        button.classList.add('btn-selected')\n      } else {\n        button.classList.remove('btn-selected')\n      }\n    })\n  }\n\n  drawGraph () {\n    const settings = ctrl.settings\n    ctrl.noconfirmsTarget.classList.add('d-hide')\n    ctrl.chartTarget.classList.remove('d-hide')\n    // Check for invalid view parameters\n    if (!ctrl.validChartType(settings.chart) || !ctrl.validGraphInterval()) return\n    if (settings.chart === ctrl.state.chart && settings.bin === ctrl.state.bin) {\n      // Only the zoom has changed.\n      const zoom = Zoom.decode(settings.zoom)\n      if (zoom) {\n        ctrl.setZoom(zoom.start, zoom.end)\n      }\n      return\n    }\n    // Set the current view to prevent unnecessary reloads.\n    Object.assign(ctrl.state, settings)\n    if (ctrl.isTreasuryReport()) {\n      ctrl.setTreasuryZoomStatus(settings.zoom)\n      ctrl.setTreasuryBinStatus(settings.bin)\n      ctrl.setTreasuryFlowStatus(settings.flow)\n    } else if (ctrl.isDomainType()) {\n      domainChartZoom = settings.zoom\n      domainChartBin = settings.bin\n      domainChartFlow = settings.flow\n    }\n    ctrl.fetchGraphData(settings.chart, settings.bin)\n  }\n\n  setIntervalButton (interval) {\n    const button = ctrl.validGraphInterval(interval)\n    if (!button) return false\n    ctrl.binputs.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    button.classList.add('btn-selected')\n  }\n\n  validGraphInterval (interval) {\n    const bin = interval || this.settings.bin || this.activeBin\n    let b = false\n    this.binputs.forEach((button) => {\n      if (button.name === bin) b = button\n    })\n    return b\n  }\n\n  getBin () {\n    let bin = ctrl.query.get('bin')\n    if (!ctrl.setIntervalButton(bin)) {\n      bin = ctrl.activeBin\n    }\n    return bin\n  }\n\n  setFlowChecks () {\n    const bitmap = this.settings.flow\n    this.flowBoxes.forEach((box) => {\n      box.checked = bitmap & parseInt(box.value)\n    })\n  }\n\n  disconnect () {\n    if (this.graph !== undefined) {\n      this.graph.destroy()\n    }\n    this.retrievedData = {}\n  }\n\n  validChartType (chart) {\n    return this.optionsTarget.namedItem(chart) || false\n  }\n\n  setChartType () {\n    const chart = this.settings.chart\n    if (this.validChartType(chart)) {\n      this.optionsTarget.value = chart\n    }\n  }\n\n  // Request the initial chart data, grabbing the Dygraph script if necessary.\n  initializeChart () {\n    createOptions()\n    // If no chart data has been requested, e.g. when initially on the\n    // list tab, then fetch the initial chart data.\n    this.fetchGraphData(this.chartType, this.getBin())\n  }\n\n  async fetchGraphData (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    if (ctrl.ajaxing === cacheKey) {\n      return\n    }\n    ctrl.requestedChart = cacheKey\n    ctrl.ajaxing = cacheKey\n\n    ctrl.chartLoaderTarget.classList.add('loading')\n    // if not change type\n    if (this.isDomainType() || (!ctrl.currentTType && ctrl.currentTType === ctrl.changedTType)) {\n      // Check for cached data\n      if (ctrl.retrievedData[cacheKey]) {\n        // Queue the function to allow the loader to display.\n        setTimeout(() => {\n          ctrl.popChartCache(chart, bin)\n          ctrl.chartLoaderTarget.classList.remove('loading')\n          ctrl.ajaxing = false\n        }, 10) // 0 should work but doesn't always\n        return\n      }\n    }\n    // if else, get data from api\n    let graphDataResponse = null\n    if (this.settings.type === 'treasury' && (bin === 'week' || bin === 'day') && this.settings.ttype !== 'current' && this.settings.ttype !== 'legacy') {\n      const treasuryUrl = `/api/treasury/io/${bin}`\n      const legacyUrl = '/api/address/' + ctrl.devAddress + '/amountflow/' + bin\n      const treasuryRes = await requestJSON(treasuryUrl)\n      const legacyRes = await requestJSON(legacyUrl)\n      graphDataResponse = this.combinedDataHandler(treasuryRes, legacyRes)\n    } else {\n      let url = `/api/treasury/io/${bin}`\n      if (!this.isDomainType() && this.settings.ttype === 'legacy') {\n        url = '/api/address/' + ctrl.devAddress + '/amountflow/' + bin\n      }\n      graphDataResponse = this.isDomainType() ? (bin === 'year' ? domainChartYearData : domainChartData) : (this.settings.ttype !== 'current' && this.settings.ttype !== 'legacy') ? (bin === 'year' ? combinedChartYearData : combinedChartData) : await requestJSON(url)\n    }\n    ctrl.processData(chart, bin, graphDataResponse)\n    this.currentTType = this.changedTType\n    ctrl.ajaxing = false\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  isDomainType () {\n    return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && this.settings.pgroup === 'domains'\n  }\n\n  combinedDataHandler (treasuryRes, legacyRes) {\n    // create time map\n    const timeArr = []\n    // return combined data\n    const combinedDataMap = new Map()\n    const _this = this\n    if (treasuryRes && treasuryRes.time) {\n      treasuryRes.time.map((time, index) => {\n        const dateTime = new Date(time)\n        const dateTimeStr = _this.getStringFromDate(dateTime)\n        timeArr.push(dateTimeStr)\n        const item = {\n          time: dateTimeStr,\n          received: treasuryRes.received[index],\n          sent: treasuryRes.sent[index],\n          net: treasuryRes.net[index]\n        }\n        combinedDataMap.set(dateTimeStr, item)\n      })\n    }\n\n    if (legacyRes && legacyRes.time) {\n      legacyRes.time.map((time, index) => {\n        const dateTime = new Date(time)\n        const dateTimeStr = _this.getStringFromDate(dateTime)\n        if (!timeArr.includes(dateTimeStr)) {\n          timeArr.push(dateTimeStr)\n          const item = {\n            time: dateTimeStr,\n            received: legacyRes.received[index],\n            sent: legacyRes.sent[index],\n            net: legacyRes.net[index]\n          }\n          combinedDataMap.set(dateTimeStr, item)\n        } else {\n          const item = combinedDataMap.get(dateTimeStr)\n          item.received = Number(item.received) + Number(legacyRes.received[index])\n          item.sent = Number(item.sent) + Number(legacyRes.sent[index])\n          item.net = Number(item.net) + Number(legacyRes.net[index])\n          combinedDataMap.set(dateTimeStr, item)\n        }\n      })\n    }\n\n    timeArr.sort(function (a, b) {\n      const aTime = new Date(a)\n      const bTime = new Date(b)\n      if (aTime > bTime) {\n        return 1\n      }\n      if (aTime < bTime) {\n        return -1\n      }\n      return 0\n    })\n\n    const timeInsertArr = []\n    const receivedArr = []\n    const sentArr = []\n    const netArr = []\n    timeArr.forEach((time) => {\n      timeInsertArr.push(time + 'T07:00:00Z')\n      const item = combinedDataMap.get(time)\n      receivedArr.push(item.received)\n      sentArr.push(item.sent)\n      netArr.push(item.net)\n    })\n    const mainResult = {\n      time: timeInsertArr,\n      received: receivedArr,\n      sent: sentArr,\n      net: netArr\n    }\n    return mainResult\n  }\n\n  getStringFromDate (date) {\n    let result = date.getFullYear() + '-'\n    const month = date.getMonth() + 1\n    result += (month < 10 ? '0' + month : month) + '-'\n    const day = date.getDate()\n    result += day < 10 ? '0' + day : day\n    return result\n  }\n\n  processData (chart, bin, data) {\n    if (isEmpty(data)) {\n      ctrl.noDataAvailable()\n      return\n    }\n    const binSize = Zoom.mapValue(bin) || blockDuration\n    if (chart === 'types') {\n      ctrl.retrievedData['types-' + bin] = txTypesFunc(data, binSize)\n    } else if (chart === 'amountflow' || chart === 'balance') {\n      const processed = this.isDomainType() ? domainChartProcessor(data, binSize) : amountFlowProcessor(data, binSize)\n      ctrl.retrievedData['amountflow-' + bin] = processed.flow\n      if (!ctrl.isDomainType()) {\n        ctrl.retrievedData['balance-' + bin] = processed.balance\n      }\n    } else return\n    setTimeout(() => {\n      ctrl.popChartCache(chart, bin)\n    }, 0)\n  }\n\n  noDataAvailable () {\n    this.noconfirmsTarget.classList.remove('d-hide')\n    this.chartTarget.classList.add('d-hide')\n    this.chartLoaderTarget.classList.remove('loading')\n  }\n\n  popChartCache (chart, bin) {\n    const cacheKey = chart + '-' + bin\n    const binSize = Zoom.mapValue(bin) || blockDuration\n    if (!ctrl.retrievedData[cacheKey] ||\n      ctrl.requestedChart !== cacheKey\n    ) {\n      return\n    }\n    const data = ctrl.retrievedData[cacheKey]\n    let options = null\n    ctrl.flowTarget.classList.add('d-hide')\n    switch (chart) {\n      case 'amountflow':\n        options = this.isDomainType() ? domainGraphOptions : amountFlowGraphOptions\n        options.plotter = sizedBarPlotter(binSize)\n        ctrl.flowTarget.classList.remove('d-hide')\n        break\n      case 'balance':\n        options = balanceGraphOptions\n        break\n    }\n    options.zoomCallback = null\n    options.drawCallback = null\n    if (ctrl.graph === undefined) {\n      ctrl.graph = ctrl.createGraph(data, options)\n    } else {\n      ctrl.graph.updateOptions({\n        ...{ file: data },\n        ...options\n      })\n    }\n    if (chart === 'amountflow') {\n      ctrl.updateFlow()\n    }\n    ctrl.chartLoaderTarget.classList.remove('loading')\n    ctrl.xRange = ctrl.graph.xAxisExtremes()\n    ctrl.validateZoom(binSize)\n  }\n\n  changeBin (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.settings.bin = target.name\n    ctrl.setIntervalButton(target.name)\n    this.handlerBinSelectorWhenChange()\n    if (target.name === 'year') {\n      if (ctrl.zoomButtons) {\n        ctrl.zoomButtons.forEach((button) => {\n          if (button.name === 'all') {\n            button.click()\n          }\n        })\n      }\n    }\n    this.updateQueryString()\n    this.drawGraph()\n  }\n\n  changeGraph (e) {\n    this.settings.chart = this.chartType\n    if (this.settings.type === 'treasury') {\n      this.treasuryChart = this.settings.chart\n    }\n    this.updateQueryString()\n    this.drawGraph()\n  }\n\n  validateZoom (binSize) {\n    ctrl.setButtonVisibility()\n    const zoom = Zoom.validate(ctrl.activeZoomKey || ctrl.settings.zoom, ctrl.xRange, binSize)\n    ctrl.setZoom(zoom.start, zoom.end)\n    ctrl.graph.updateOptions({\n      zoomCallback: ctrl.zoomCallback,\n      drawCallback: ctrl.drawCallback\n    })\n  }\n\n  setZoom (start, end) {\n    ctrl.chartLoaderTarget.classList.add('loading')\n    ctrl.graph.updateOptions({\n      dateWindow: [start, end]\n    })\n    ctrl.settings.zoom = Zoom.encode(start, end)\n    ctrl.lastEnd = end\n    ctrl.updateQueryString()\n    ctrl.chartLoaderTarget.classList.remove('loading')\n  }\n\n  onZoom (e) {\n    const target = e.srcElement || e.target\n    if (target.nodeName !== 'BUTTON') return\n    ctrl.zoomButtons.forEach((button) => {\n      button.classList.remove('btn-selected')\n    })\n    target.classList.add('btn-selected')\n    if (ctrl.graph === undefined) {\n      return\n    }\n\n    this.handlerAllowChartSelector()\n    const duration = ctrl.activeZoomDuration\n    const end = ctrl.xRange[1]\n    const start = duration === 0 ? ctrl.xRange[0] : end - duration\n    ctrl.setZoom(start, end)\n    if (ctrl.isTreasuryReport()) {\n      ctrl.setTreasuryZoomStatus(ctrl.settings.zoom)\n    } else if (ctrl.isDomainType()) {\n      domainChartZoom = ctrl.settings.zoom\n    }\n  }\n\n  handlerBinSelectorWhenChange () {\n    switch (this.activeBin) {\n      case 'all':\n        this.handlerZoomDisabledBySelector(['all'])\n        break\n      default:\n        this.handlerZoomDisabledBySelector([])\n    }\n  }\n\n  handlerZoomDisabledBySelector (disabledTypes) {\n    this.zoomButtons.forEach((button) => {\n      if (disabledTypes.includes(button.name)) {\n        button.disabled = true\n      } else {\n        button.disabled = false\n      }\n    })\n  }\n\n  handlerAllowChartSelector () {\n    const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n    if (activeButtons.length === 0) return\n    const activeZoomType = activeButtons[0].name\n    switch (activeZoomType) {\n      case 'all':\n        if (this.activeBin === 'all') {\n          ctrl.binputs.forEach((button) => {\n            if (button.name === 'year') {\n              button.click()\n            }\n          })\n        }\n        this.handlerGroupDisabledBySelector(['all'])\n        break\n      case 'year':\n        this.handlerGroupDisabledBySelector([])\n        break\n      case 'month':\n        // if current group type is year, change to month\n        if (this.activeBin === 'year') {\n          ctrl.binputs.forEach((button) => {\n            if (button.name === 'month') {\n              button.click()\n            }\n          })\n        }\n        this.handlerGroupDisabledBySelector(['year'])\n        break\n      case 'week':\n        if (this.activeBin === 'year' || this.activeBin === 'month') {\n          ctrl.binputs.forEach((button) => {\n            if (button.name === 'week') {\n              button.click()\n            }\n          })\n        }\n        this.handlerGroupDisabledBySelector(['year', 'month'])\n        break\n      case 'day':\n        if (this.activeBin === 'year' || this.activeBin === 'month' || this.activeBin === 'week') {\n          ctrl.binputs.forEach((button) => {\n            if (button.name === 'day') {\n              button.click()\n            }\n          })\n        }\n        this.handlerGroupDisabledBySelector(['year', 'month', 'week'])\n        break\n    }\n  }\n\n  handlerGroupDisabledBySelector (disabledTypes) {\n    this.binputs.forEach((button) => {\n      if (disabledTypes.includes(button.name)) {\n        button.disabled = true\n      } else {\n        button.disabled = false\n      }\n    })\n  }\n\n  toggleExpand (e) {\n    const btn = this.expandoTarget\n    if (btn.classList.contains('dcricon-expand')) {\n      btn.classList.remove('dcricon-expand')\n      btn.classList.add('dcricon-collapse')\n      this.bigchartTarget.appendChild(this.chartboxTarget)\n      this.fullscreenTarget.classList.remove('d-none')\n    } else {\n      this.putChartBack()\n    }\n    if (this.graph) this.graph.resize()\n  }\n\n  putChartBack () {\n    const btn = this.expandoTarget\n    btn.classList.add('dcricon-expand')\n    btn.classList.remove('dcricon-collapse')\n    this.littlechartTarget.appendChild(this.chartboxTarget)\n    this.fullscreenTarget.classList.add('d-none')\n    if (this.graph) this.graph.resize()\n  }\n\n  exitFullscreen (e) {\n    if (e.target !== this.fullscreenTarget) return\n    this.putChartBack()\n  }\n\n  setButtonVisibility () {\n    const duration = ctrl.chartDuration\n    const buttonSets = [ctrl.zoomButtons, ctrl.binputs]\n    buttonSets.forEach((buttonSet) => {\n      buttonSet.forEach((button) => {\n        if (button.dataset.fixed) return\n        if (duration > Zoom.mapValue(button.name)) {\n          button.classList.remove('d-hide')\n        } else {\n          button.classList.remove('btn-selected')\n          button.classList.add('d-hide')\n        }\n      })\n    })\n  }\n\n  updateFlow () {\n    const bitmap = ctrl.flow\n    if (bitmap === 0) {\n      // If all boxes are unchecked, just leave the last view\n      // in place to prevent chart errors with zero visible datasets\n      return\n    }\n    ctrl.settings.flow = bitmap\n    ctrl.updateQueryString()\n    // Set the graph dataset visibility based on the bitmap\n    // Dygraph dataset indices: 0 received, 1 sent, 2 & 3 net\n    const visibility = {}\n    visibility[0] = bitmap & 1\n    visibility[1] = bitmap & 2\n    visibility[2] = visibility[3] = bitmap & 4\n    Object.keys(visibility).forEach((idx) => {\n      ctrl.graph.setVisibility(idx, visibility[idx])\n    })\n  }\n\n  createGraph (processedData, otherOptions) {\n    return new Dygraph(\n      this.chartTarget,\n      processedData,\n      { ...commonOptions, ...otherOptions }\n    )\n  }\n\n  bindElements () {\n    this.flowBoxes = this.flowTarget.querySelectorAll('input')\n    this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n    this.binputs = this.cintervalTarget.querySelectorAll('button')\n  }\n\n  async initialize () {\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate([\n      'chart', 'zoom', 'bin', 'flow', 'type', 'tsort', 'psort', 'stype',\n      'order', 'interval', 'search', 'usd', 'active', 'year', 'ttype', 'pgroup',\n      'ptype', 'dtype', 'dtime', 'dtoken', 'dname', 'dstype', 'dorder', 'tavg', 'dinterval'])\n    this.politeiaUrl = this.data.get('politeiaUrl')\n    this.defaultSettings = {\n      type: 'proposal',\n      tsort: 'newest',\n      psort: 'newest',\n      pgroup: 'proposals',\n      stype: 'startdt',\n      order: 'desc',\n      interval: 'month',\n      ptype: 'month',\n      search: '',\n      usd: false,\n      active: true,\n      chart: 'amountflow',\n      zoom: '',\n      bin: 'month',\n      flow: 3,\n      year: 0, // 0 when display all year\n      ttype: 'combined',\n      dtype: 'year',\n      dtime: '',\n      dtoken: '',\n      dname: '',\n      dstype: 'pname',\n      dorder: 'desc',\n      tavg: false,\n      dinterval: 'month'\n    }\n    mainReportInitialized = false\n    detailReportSettingsState = undefined\n    mainReportSettingsState = undefined\n    this.query.update(this.settings)\n    if (this.isNullValue(this.settings.type)) {\n      this.settings.type = this.defaultSettings.type\n    }\n    await this.initReportTimeRange()\n    if (this.settings.type === 'bytime') {\n      this.initReportDetailData()\n      this.connectData()\n      return\n    }\n    await this.initMainFinancialReport()\n    await this.connectData()\n  }\n\n  async initMainFinancialReport () {\n    this.treasuryChart = 'balance'\n    this.proposalTSort = 'oldest'\n    this.treasuryTSort = 'newest'\n    this.isMonthDisplay = false\n    this.useMonthAvg = false\n    this.devAddress = this.data.get('devAddress')\n    treasuryNote = `*All numbers are pulled from the blockchain. Includes <a href=\"/treasury\" data-turbolinks=\"false\">treasury</a> and <a href=\"/address/${this.devAddress}\" data-turbolinks=\"false\">legacy</a> data.`\n    redrawChart = true\n    domainChartZoom = undefined\n    treasuryChartZoom = undefined\n    combinedChartZoom = undefined\n    adminChartZoom = undefined\n    domainChartBin = undefined\n    treasuryChartBin = undefined\n    combinedChartBin = undefined\n    adminChartBin = undefined\n    domainChartFlow = undefined\n    treasuryChartFlow = undefined\n    combinedChartFlow = undefined\n    adminChartFlow = undefined\n    isSearching = false\n    await this.initData()\n    this.initScrollerForTable()\n    this.isMonthDisplay = this.isTreasuryReport() || this.isDomainType() ? true : this.isProposalMonthReport() || this.isAuthorMonthGroup()\n    this.useMonthAvg = this.settings.tavg\n    document.getElementById('useMonthAvg').checked = this.useMonthAvg\n    const tooltipElements = document.getElementsByClassName('cell-tooltip')\n    document.addEventListener('click', function (event) {\n      for (let i = 0; i < tooltipElements.length; i++) {\n        const popEl = tooltipElements[i]\n        const isClickInside = popEl.contains(event.target)\n        // if click outside, add hidden to all tooltiptext element\n        const tooltiptext = popEl.getElementsByClassName('tooltiptext')[0]\n        if (!tooltiptext) {\n          continue\n        }\n        if (!isClickInside) {\n          popEl.classList.remove('active')\n          tooltiptext.style.visibility = 'hidden'\n        }\n      }\n    })\n    mainReportInitialized = true\n  }\n\n  initYearMonthSelector () {\n    // handle month year of dtime\n    let selectedYear = -1\n    let selectedMonth = 0\n    if (this.settings.dtime && this.settings.dtime !== '') {\n      const timeArr = this.settings.dtime.toString().split('_')\n      selectedYear = Number(timeArr[0])\n      if (timeArr.length > 1) {\n        selectedMonth = Number(timeArr[1])\n      }\n    }\n    selectedYear = selectedYear < 0 ? this.reportMaxYear : selectedYear\n    let yearOptions = `<option name=\"all\" value=\"0\" ${selectedYear === 0 ? 'selected' : ''}>All</option>`\n    for (let i = this.reportMaxYear; i >= this.reportMinYear; i--) {\n      yearOptions += `<option name=\"year_${i}\" value=\"${i}\" ${selectedYear === i ? 'selected' : ''}>${i}</option>`\n    }\n    this.topYearSelectTarget.innerHTML = yearOptions\n\n    // init month selector\n    let minMonth = 1\n    let maxMonth = 12\n    if (selectedYear === this.reportMinYear) {\n      minMonth = this.reportMinMonth\n    }\n    if (selectedYear === this.reportMaxYear) {\n      maxMonth = this.reportMaxMonth\n    }\n    if (selectedYear === 0) {\n      this.topMonthSelectTarget.disabled = true\n    } else {\n      this.topMonthSelectTarget.disabled = false\n    }\n    selectedMonth = selectedMonth < 0 ? maxMonth : selectedMonth\n    let monthOptions = `<option name=\"month_all\" value=\"0\" ${selectedYear === 0 || selectedMonth === 0 ? 'selected' : ''}>All Months</option>`\n    for (let i = minMonth; i <= maxMonth; i++) {\n      monthOptions += `<option name=\"month_${i}\" value=\"${i}\" ${selectedMonth === i ? 'selected' : ''}>${this.getMonthDisplay(i)}</option>`\n    }\n    this.topMonthSelectTarget.innerHTML = monthOptions\n    const timeIntArr = this.getDetailYearMonth()\n    // init for prev, next buttons\n    let prevBtnShow = true\n    let nextBtnShow = true\n    let hidePrevBtn = false\n    let hideNextBtn = false\n    if (this.isYearDetailReport()) {\n      if (this.isAllYearTimeReport(this.settings.dtime)) {\n        prevBtnShow = false\n        nextBtnShow = false\n        hidePrevBtn = true\n        hideNextBtn = true\n      } else if (timeIntArr[0] === this.reportMinYear) {\n        prevBtnShow = false\n      } else if (timeIntArr[0] === this.reportMaxYear) {\n        nextBtnShow = false\n      }\n    } else if (this.isMonthDetailReport()) {\n      if (timeIntArr[0] === this.reportMinYear && timeIntArr[1] === this.reportMinMonth) {\n        prevBtnShow = false\n      }\n      if (timeIntArr[0] === this.reportMaxYear && timeIntArr[1] === this.reportMaxMonth) {\n        nextBtnShow = false\n      }\n    }\n    if (hidePrevBtn) {\n      this.prevBtnTarget.classList.add('d-none')\n    } else {\n      this.prevBtnTarget.classList.remove('d-none')\n    }\n    if (hideNextBtn) {\n      this.nextBtnTarget.classList.add('d-none')\n    } else {\n      this.nextBtnTarget.classList.remove('d-none')\n    }\n    if (prevBtnShow) {\n      this.prevBtnTarget.classList.remove('disabled')\n      this.prevBtnTarget.classList.add('cursor-pointer')\n    } else {\n      this.prevBtnTarget.classList.add('disabled')\n      this.prevBtnTarget.classList.remove('cursor-pointer')\n    }\n    if (nextBtnShow) {\n      this.nextBtnTarget.classList.remove('disabled')\n      this.nextBtnTarget.classList.add('cursor-pointer')\n    } else {\n      this.nextBtnTarget.classList.add('disabled')\n      this.nextBtnTarget.classList.remove('cursor-pointer')\n    }\n  }\n\n  initReportDetailData () {\n    this.reportTypeTargets.forEach((rTypeTarget) => {\n      rTypeTarget.classList.remove('active')\n      if (rTypeTarget.name === 'bytime') {\n        rTypeTarget.classList.add('active')\n      }\n    })\n    this.viewModeTarget.classList.add('d-none')\n    this.detailReportAreaTarget.classList.remove('d-none')\n    this.mainReportTopAreaTarget.classList.add('d-none')\n    this.reportParentContainerTarget.classList.add('d-none')\n    this.proposalSelectTypeTarget.classList.add('d-none')\n    this.selectTreasuryTypeTarget.classList.add('d-none')\n    this.yearMonthSelectorTarget.classList.remove('d-none')\n    if (this.isNullValue(this.settings.dorder)) {\n      this.settings.dorder = this.defaultSettings.dorder\n    }\n    if (this.isNullValue(this.settings.dtype)) {\n      this.settings.dtype = this.defaultSettings.dtype\n    }\n    if (this.isNullValue(this.settings.dtime)) {\n      // init dtime is now\n      const now = new Date()\n      const year = now.getFullYear()\n      const month = now.getMonth() + 1\n      let time = year\n      if (this.settings.dtype === 'month') {\n        time = time + '_' + month\n      } else {\n        time = '0'\n      }\n      this.settings.dtime = time\n    } else {\n      if (this.settings.dtime.toString().includes('_')) {\n        this.settings.dtype = 'month'\n      } else {\n        this.settings.dtype = 'year'\n      }\n    }\n    // init for detail report title\n    const timeArr = this.settings.dtime.toString().split('_')\n    this.detailReportTitleTarget.textContent = (this.isYearDetailReport() ? (this.isAllYearTimeReport(this.settings.dtime) ? 'All Time Report' : 'Yearly Report - ') : 'Monthly Report - ') +\n      (this.isAllYearTimeReport(this.settings.dtime) ? '' : ((timeArr.length > 1 && this.settings.dtype === 'month' ? this.getMonthDisplay(Number(timeArr[1])) + ' ' : '') + timeArr[0]))\n    // init year month selector\n    this.initYearMonthSelector()\n    this.updateQueryString()\n    this.noDetailDataTarget.classList.add('d-none')\n    this.reportAreaTarget.classList.remove('d-none')\n    this.yearMonthCalculate()\n  }\n\n  getMonthDisplay (month) {\n    switch (month) {\n      case 1:\n        return 'January'\n      case 2:\n        return 'February'\n      case 3:\n        return 'March'\n      case 4:\n        return 'April'\n      case 5:\n        return 'May'\n      case 6:\n        return 'June'\n      case 7:\n        return 'July'\n      case 8:\n        return 'August'\n      case 9:\n        return 'September'\n      case 10:\n        return 'October'\n      case 11:\n        return 'November'\n      case 12:\n        return 'December'\n      default:\n        return ''\n    }\n  }\n\n  async initData () {\n    this.detailReportAreaTarget.classList.add('d-none')\n    this.mainReportTopAreaTarget.classList.remove('d-none')\n    this.yearMonthSelectorTarget.classList.add('d-none')\n    this.reportParentContainerTarget.classList.remove('d-none')\n    this.viewModeTarget.classList.remove('d-none')\n    if ((this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') && !this.isDomainType()) {\n      this.defaultSettings.tsort = 'oldest'\n    } else {\n      this.defaultSettings.tsort = 'newest'\n    }\n    if ((typeof this.settings.active) !== 'boolean') {\n      this.settings.active = this.defaultSettings.active\n    }\n    if ((typeof this.settings.tavg) !== 'boolean') {\n      this.settings.tavg = this.useMonthAvg\n    }\n    if (this.isNullValue(this.settings.ptype)) {\n      this.settings.ptype = this.defaultSettings.ptype\n    }\n    if (this.isNullValue(this.settings.pgroup)) {\n      this.settings.pgroup = this.defaultSettings.pgroup\n    }\n    if (!this.isNullValue(this.settings.type) && this.settings.type === 'treasury') {\n      this.defaultSettings.stype = ''\n    }\n\n    if (this.settings.type === 'treasury' || this.isDomainType()) {\n      this.settings.tsort = this.treasuryTSort\n    } else {\n      this.settings.tsort = this.proposalTSort\n    }\n    this.reportTypeTargets.forEach((rTypeTarget) => {\n      rTypeTarget.classList.remove('active')\n      if ((!this.settings.type && rTypeTarget.name === 'proposal') ||\n        (rTypeTarget.name === 'proposal' && (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary')) ||\n        (rTypeTarget.name === 'treasury' && this.settings.type === 'treasury')) {\n        rTypeTarget.classList.add('active')\n      }\n    })\n    if (this.isNullValue(this.settings.interval)) {\n      this.settings.interval = this.defaultSettings.interval\n    }\n    if (this.isNullValue(this.settings.ttype)) {\n      this.settings.ttype = this.defaultSettings.ttype\n    }\n    if (this.settings.search) {\n      this.searchInputTarget.value = this.settings.search\n      isSearching = true\n      this.searchBtnTarget.classList.add('d-none')\n      this.clearSearchBtnTarget.classList.remove('d-none')\n    } else {\n      this.searchBtnTarget.classList.remove('d-none')\n      this.clearSearchBtnTarget.classList.add('d-none')\n    }\n    if (this.isTreasuryReport()) {\n      this.ttypeTargets.forEach((ttypeTarget) => {\n        ttypeTarget.classList.remove('active')\n        if ((ttypeTarget.name === this.settings.ttype) || (ttypeTarget.name === 'current' && !this.settings.ttype)) {\n          ttypeTarget.classList.add('active')\n        }\n      })\n    }\n    if (this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n      this.proposalTypeTargets.forEach((proposalTypeTarget) => {\n        proposalTypeTarget.classList.remove('active')\n        if ((proposalTypeTarget.name === this.settings.pgroup) || (proposalTypeTarget.name === 'proposals' && !this.settings.pgroup)) {\n          proposalTypeTarget.classList.add('active')\n        }\n      })\n    }\n  }\n\n  async initScrollerForTable () {\n    const $scroller = document.getElementById('scroller')\n    const $container = document.getElementById('containerBody')\n    const $wrapper = document.getElementById('wrapperReportTable')\n    let ignoreScrollEvent = false\n    let animation = null\n    const scrollbarPositioner = () => {\n      const scrollTop = document.scrollingElement.scrollTop\n      const wrapperTop = $wrapper.offsetTop\n      const wrapperBottom = wrapperTop + $wrapper.offsetHeight\n\n      const topMatch = (window.innerHeight + scrollTop) >= wrapperTop\n      const bottomMatch = (scrollTop) <= wrapperBottom\n\n      if (topMatch && bottomMatch) {\n        const inside = wrapperBottom >= scrollTop && window.innerHeight + scrollTop <= wrapperBottom\n\n        if (inside) {\n          $scroller.style.bottom = '0px'\n        } else {\n          const offset = (scrollTop + window.innerHeight) - wrapperBottom\n\n          $scroller.style.bottom = offset + 'px'\n        }\n        $scroller.classList.add('visible')\n      } else {\n        $scroller.classList.remove('visible')\n      }\n\n      window.requestAnimationFrame(scrollbarPositioner)\n    }\n\n    window.requestAnimationFrame(scrollbarPositioner)\n\n    $scroller.addEventListener('scroll', (e) => {\n      if (ignoreScrollEvent) return false\n\n      if (animation) window.cancelAnimationFrame(animation)\n      animation = window.requestAnimationFrame(() => {\n        ignoreScrollEvent = true\n        $container.scrollLeft = $scroller.scrollLeft\n        ignoreScrollEvent = false\n      })\n    })\n\n    $container.addEventListener('scroll', (e) => {\n      if (ignoreScrollEvent) return false\n\n      if (animation) window.cancelAnimationFrame(animation)\n      animation = window.requestAnimationFrame(() => {\n        ignoreScrollEvent = true\n        $scroller.scrollLeft = $container.scrollLeft\n\n        ignoreScrollEvent = false\n      })\n    })\n\n    $(window).on('resize', function () {\n      // get table thead size\n      const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n      const tableWidth = parseFloat(tableWidthStr.trim())\n      const parentContainerWidthStr = $('#repotParentContainer').css('width').replace('px', '')\n      const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n      if (tableWidth < parentContainerWidth + 5) {\n        $('#scroller').addClass('d-none')\n      } else {\n        $('#scroller').removeClass('d-none')\n      }\n      // set overflow class\n      $('#scroller').css('width', $('#repotParentContainer').css('width'))\n    })\n  }\n\n  searchInputKeypress (e) {\n    if (e.keyCode === 13) {\n      this.searchProposal()\n    }\n  }\n\n  onTypeChange (e) {\n    if (!e.target.value || e.target.value === '') {\n      return\n    }\n    this.searchBtnTarget.classList.remove('d-none')\n    this.clearSearchBtnTarget.classList.add('d-none')\n  }\n\n  searchProposal () {\n    // if search key is empty, ignore\n    if (!this.searchInputTarget.value || this.searchInputTarget.value === '') {\n      this.searchBtnTarget.classList.remove('d-none')\n      this.clearSearchBtnTarget.classList.add('d-none')\n      if (isSearching) {\n        this.settings.search = this.defaultSettings.search\n        isSearching = false\n        this.calculate()\n      }\n      return\n    }\n    this.searchBtnTarget.classList.add('d-none')\n    this.clearSearchBtnTarget.classList.remove('d-none')\n    this.settings.search = this.searchInputTarget.value\n    this.calculate()\n  }\n\n  clearSearch (e) {\n    this.settings.search = this.defaultSettings.search\n    this.searchInputTarget.value = ''\n    this.searchBtnTarget.classList.remove('d-none')\n    this.clearSearchBtnTarget.classList.add('d-none')\n    isSearching = false\n    this.calculate()\n  }\n\n  updateQueryString () {\n    const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n    for (const k in settings) {\n      if ((((typeof settings[k]) !== 'boolean') && !settings[k]) || settings[k].toString() === defaults[k].toString()) continue\n      query[k] = settings[k]\n    }\n    this.query.replace(query)\n  }\n\n  parseSettingsState (isMain) {\n    if (isMain) {\n      mainReportSettingsState = {}\n    } else {\n      detailReportSettingsState = {}\n    }\n    for (const k in this.settings) {\n      if (isMain) {\n        mainReportSettingsState[k] = this.settings[k]\n      } else {\n        detailReportSettingsState[k] = this.settings[k]\n      }\n    }\n  }\n\n  parseSettingsFromState (isMain) {\n    const state = isMain ? mainReportSettingsState : detailReportSettingsState\n    if (!state) {\n      for (const k in this.defaultSettings) {\n        this.settings[k] = this.defaultSettings[k]\n      }\n      return\n    }\n    this.settings = {}\n    for (const k in state) {\n      this.settings[k] = state[k]\n    }\n  }\n\n  setReportTitle () {\n    switch (this.settings.type) {\n      case '':\n      case 'proposal':\n        this.reportDescriptionTarget.innerHTML = proposalNote\n        if (this.settings.pgroup === '' || this.settings.pgroup === 'proposals') {\n          this.settings.interval = this.defaultSettings.interval\n          this.reportDescriptionTarget.classList.add('d-none')\n        } else if (this.settings.pgroup === 'authors') {\n          if (this.settings.ptype !== 'list') {\n            this.reportDescriptionTarget.classList.add('d-none')\n          } else {\n            this.reportDescriptionTarget.classList.remove('d-none')\n            this.reportDescriptionTarget.innerHTML = proposalNote\n          }\n        }\n        break\n      case 'summary':\n        this.reportDescriptionTarget.innerHTML = proposalNote\n        break\n      case 'domain':\n        this.reportDescriptionTarget.innerHTML = proposalNote\n        break\n      case 'treasury':\n        this.reportDescriptionTarget.innerHTML = treasuryNote\n        break\n      case 'author':\n        this.reportDescriptionTarget.innerHTML = proposalNote\n    }\n  }\n\n  async treasuryTypeChange (e) {\n    if (e.target.name === this.settings.ttype) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.ttypeTargets.forEach((ttypeTarget) => {\n      ttypeTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    this.settings.ttype = e.target.name\n    this.changedTType = e.target.name\n    redrawChart = true\n    await this.initData()\n    await this.connectData()\n  }\n\n  async reportTypeChange (e) {\n    if (((this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && e.target.name === 'proposal') ||\n      (this.settings.type === 'treasury' && e.target.name === 'treasury') || (this.settings.type === 'bytime' && e.target.name === 'bytime')) {\n      return\n    }\n    if (this.settings.type !== 'bytime' && e.target.name === 'bytime') {\n      this.parseSettingsState(true)\n      this.parseSettingsFromState(false)\n    } else if (this.settings.type === 'bytime' && e.target.name !== 'bytime') {\n      this.parseSettingsState(false)\n      this.parseSettingsFromState(true)\n    }\n    this.settings.type = e.target.name\n    if (this.settings.type === 'treasury') {\n      this.settings.chart = this.treasuryChart\n      this.optionsTarget.value = this.settings.chart\n    } else if ((this.settings.type === '' || this.settings.type === 'proposal') && !this.isMonthDisplay && mainReportInitialized) {\n      this.settings.type = 'summary'\n    }\n    if (this.settings.type === 'bytime') {\n      this.initReportDetailData()\n      return\n    }\n    redrawChart = true\n    if (!mainReportInitialized) {\n      await this.initMainFinancialReport()\n    } else {\n      await this.initData()\n    }\n    await this.connectData()\n  }\n\n  async proposalTypeChange (e) {\n    if (e.target.name === this.settings.pgroup) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.proposalTypeTargets.forEach((proposalTypeTarget) => {\n      proposalTypeTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    this.settings.pgroup = e.target.name\n    if (this.settings.pgroup === '' || this.settings.pgroup === 'proposals') {\n      this.settings.type = this.isMonthDisplay ? 'proposal' : 'summary'\n      this.settings.ptype = this.defaultSettings.ptype\n    } else if (this.settings.pgroup === 'authors') {\n      this.settings.ptype = this.isMonthDisplay ? '' : 'list'\n      this.settings.type = this.defaultSettings.type\n    } else if (this.settings.pgroup === 'domains') {\n      this.settings.ptype = this.defaultSettings.ptype\n    }\n    this.settings.stype = this.defaultSettings.stype\n    await this.initData()\n    await this.connectData()\n  }\n\n  isProposalGroup () {\n    return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n  }\n\n  isSummaryReport () {\n    return this.settings.type === 'summary' && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n  }\n\n  isProposalMonthReport () {\n    return (this.settings.type === '' || this.settings.type === 'proposal') && (this.settings.pgroup === '' || this.settings.pgroup === 'proposals')\n  }\n\n  isAuthorGroup () {\n    return (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') && this.settings.pgroup === 'authors'\n  }\n\n  isAuthorListGroup () {\n    return this.isAuthorGroup() && this.settings.ptype === 'list'\n  }\n\n  isAuthorMonthGroup () {\n    return this.isAuthorGroup() && this.settings.ptype !== 'list'\n  }\n\n  isTreasuryReport () {\n    return this.settings.type === 'treasury'\n  }\n\n  dintervalChange (e) {\n    if (e.target.name === ctrl.settings.dinterval) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.dintervalTargets.forEach((dintervalTarget) => {\n      dintervalTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    ctrl.settings.dinterval = e.target.name\n    this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(detailMonthlySummary, 12, 'month')\n  }\n\n  intervalChange (e) {\n    if (e.target.name === ctrl.settings.interval) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.intervalTargets.forEach((intervalTarget) => {\n      intervalTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    ctrl.settings.interval = e.target.name\n    // if (e.target.name === 'year') {\n    //   if (ctrl.settings.bin !== 'year') {\n    //     ctrl.binputs.forEach((button) => {\n    //       if (button.name === 'year') {\n    //         button.click()\n    //       }\n    //     })\n    //     ctrl.zoomButtons.forEach((button) => {\n    //       if (button.name === 'all') {\n    //         button.click()\n    //       }\n    //     })\n    //   }\n    // } else {\n    //   if (ctrl.settings.bin === 'year') {\n    //     ctrl.binputs.forEach((button) => {\n    //       if (button.name === 'month') {\n    //         button.click()\n    //       }\n    //     })\n    //     ctrl.zoomButtons.forEach((button) => {\n    //       if (button.name === 'year') {\n    //         button.click()\n    //       }\n    //     })\n    //   }\n    // }\n    this.calculate()\n  }\n\n  getApiUrlByType () {\n    switch (this.settings.type) {\n      case 'treasury':\n        return '/api/finance-report/treasury'\n      default:\n        return `/api/finance-report/proposal?search=${!this.settings.search ? '' : this.settings.search}`\n    }\n  }\n\n  isNotChartZoom () {\n    switch (this.settings.ttype) {\n      case 'current':\n        return !treasuryChartZoom\n      case 'legacy':\n        return !adminChartZoom\n      default:\n        return !combinedChartZoom\n    }\n  }\n\n  createReportTable () {\n    if (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n      $('#reportTable').css('width', '')\n    }\n    // if summary, display toggle for filter Proposals are active\n    if (this.settings.type === 'summary') {\n      if (!this.settings.active) {\n        document.getElementById('activeProposalInput').checked = false\n      } else {\n        document.getElementById('activeProposalInput').checked = true\n      }\n    }\n    this.updateQueryString()\n\n    if (this.settings.type === 'treasury') {\n      this.treasuryToggleAreaTarget.classList.remove('d-none')\n      this.createTreasuryTable(responseData)\n      this.treasuryChartTarget.classList.remove('d-none')\n      const notChartZoom = this.isNotChartZoom()\n      if (redrawChart) {\n        this.initializeChart()\n        this.drawGraph()\n        redrawChart = false\n        if (ctrl.zoomButtons && notChartZoom) {\n          ctrl.zoomButtons.forEach((button) => {\n            if (button.name === 'all') {\n              button.click()\n            }\n          })\n        }\n      }\n      this.selectTreasuryTypeTarget.classList.remove('d-none')\n      this.currentBalanceAreaTarget.classList.remove('d-none')\n      this.chartDataTarget.classList.remove('d-none')\n      this.balanceOptionTarget.classList.remove('d-none')\n      this.activeProposalSwitchAreaTarget.classList.add('d-none')\n    } else {\n      this.treasuryToggleAreaTarget.classList.add('d-none')\n      this.currentBalanceAreaTarget.classList.add('d-none')\n      this.selectTreasuryTypeTarget.classList.add('d-none')\n      if (this.isSummaryReport() || this.isAuthorListGroup()) {\n        this.activeProposalSwitchAreaTarget.classList.remove('d-none')\n      } else {\n        this.activeProposalSwitchAreaTarget.classList.add('d-none')\n      }\n      if (!this.isDomainType()) {\n        this.outgoingExpTarget.classList.add('d-none')\n        this.treasuryChartTarget.classList.add('d-none')\n      } else {\n        this.outgoingExpTarget.classList.remove('d-none')\n        this.outgoingExpTarget.classList.add('mt-1')\n        this.outgoingExpTarget.innerHTML = '*Delta (Est): Estimated difference between actual spending and estimated spending for Proposals. <br />&nbsp;<span style=\"font-style: italic;\">(Delta > 0: Unaccounted, Delta < 0: Missing)</span>'\n      }\n    }\n\n    if (this.isDomainType() || this.settings.type === 'treasury') {\n      this.groupByTarget.classList.remove('d-none')\n      this.useMonthAvgToggleTarget.classList.remove('d-none')\n      this.treasuryChartTitleTarget.classList.remove('d-none')\n      this.treasuryTypeTitleTarget.classList.remove('d-none')\n      if (this.settings.type === 'treasury') {\n        this.typeSelectorTarget.classList.remove('d-none')\n        this.treasuryChartTitleTarget.textContent = 'Treasury IO Chart'\n        this.weekGroupBtnTarget.classList.remove('d-none')\n        this.dayGroupBtnTarget.classList.remove('d-none')\n        // show some option on group and zoom\n        this.weekZoomBtnTarget.classList.remove('d-none')\n        this.dayZoomBtnTarget.classList.remove('d-none')\n        // change domain on radio button label\n        this.sentRadioLabelTarget.textContent = 'Sent'\n        this.receivedRadioLabelTarget.textContent = 'Received'\n        // hide net radio button\n        this.netSelectRadioTarget.classList.remove('d-none')\n      } else {\n        this.typeSelectorTarget.classList.add('d-none')\n        this.treasuryChartTitleTarget.textContent = 'Domains Chart Data'\n        this.treasuryTypeTitleTarget.textContent = 'Domains Spending Data'\n        this.weekGroupBtnTarget.classList.add('d-none')\n        this.dayGroupBtnTarget.classList.add('d-none')\n        // hide some option on group and zoom\n        this.weekZoomBtnTarget.classList.add('d-none')\n        this.dayZoomBtnTarget.classList.add('d-none')\n        // change domain on radio button label\n        this.sentRadioLabelTarget.textContent = 'Development'\n        this.receivedRadioLabelTarget.textContent = 'Marketing'\n        // hide net radio button\n        this.netSelectRadioTarget.classList.add('d-none')\n      }\n    } else {\n      this.groupByTarget.classList.add('d-none')\n      this.useMonthAvgToggleTarget.classList.add('d-none')\n      this.treasuryChartTitleTarget.classList.add('d-none')\n      this.treasuryTypeTitleTarget.classList.add('d-none')\n    }\n\n    // if treasury, get table content in other area\n    if (this.settings.type !== 'treasury') {\n      this.reportTarget.innerHTML = this.createTableContent()\n    }\n\n    // handler for group domains and authors\n    if (this.settings.type === '' || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n      if (this.settings.pgroup === 'domains') {\n        this.treasuryChartTarget.classList.remove('d-none')\n        // check chart type. If current is balance, change to amountflow\n        if (this.settings.chart === 'balance' || this.chartType === 'balance') {\n          this.settings.chart = 'amountflow'\n          this.optionsTarget.value = 'amountflow'\n        }\n        const notChartZoom = !domainChartZoom\n        if (redrawChart) {\n          this.initializeChart()\n          this.drawGraph()\n          redrawChart = false\n          // hide balance select option\n          this.balanceOptionTarget.classList.add('d-none')\n          this.chartDataTarget.classList.add('d-none')\n          if (ctrl.zoomButtons && notChartZoom) {\n            ctrl.zoomButtons.forEach((button) => {\n              if (button.name === 'all') {\n                button.click()\n              }\n            })\n          }\n        }\n      }\n    }\n    const tableWidthStr = $('#reportTable thead').css('width').replace('px', '')\n    const tableWidth = parseFloat(tableWidthStr.trim())\n    const parentContainerWidthStr = $('#repotParentContainer').css('width').replace('px', '')\n    const parentContainerWidth = parseFloat(parentContainerWidthStr.trim())\n    let hideScroller = false\n    if (tableWidth < parentContainerWidth + 5) {\n      $('#scroller').addClass('d-none')\n      hideScroller = true\n    } else {\n      $('#scroller').removeClass('d-none')\n    }\n    this.reportTarget.classList.add('proposal-table-padding')\n    let widthFinal = $('#reportTable thead').css('width')\n    if (widthFinal !== '' && !this.isProposalMonthReport() && !this.isSummaryReport() && !this.isAuthorMonthGroup()) {\n      let width = parseFloat(widthFinal.replaceAll('px', ''))\n      width += 30\n      widthFinal = width + 'px'\n      this.searchBoxTarget.classList.add('searchbox-align')\n    } else {\n      this.searchBoxTarget.classList.remove('searchbox-align')\n    }\n    $('#reportTable').css('width', this.isTreasuryReport() ? 'auto' : widthFinal)\n    $('html').css('overflow-x', 'hidden')\n    // set overflow class\n    $('#containerReportTable').addClass('of-x-hidden')\n    $('#containerBody').addClass('of-x-hidden')\n    $('#scrollerLong').css('width', (tableWidth + 25) + 'px')\n    // set scroller width fit with container width\n    $('#scroller').css('width', $('#repotParentContainer').css('width'))\n    if (this.isMobile()) {\n      $('#containerBody').css('overflow', 'scroll')\n      this.reportTarget.classList.remove('proposal-table-padding')\n      $('#scroller').addClass('d-none')\n    } else {\n      this.reportTarget.classList.add('proposal-table-padding')\n      if (!hideScroller) {\n        $('#scroller').removeClass('d-none')\n      }\n    }\n    if (this.isProposalMonthReport() || this.isAuthorMonthGroup()) {\n      // handler for scroll default\n      if (this.settings.psort === 'oldest') {\n        if (this.settings.tsort === 'newest') {\n          $('#scroller').scrollLeft(tableWidth)\n        } else {\n          $('#scroller').scrollLeft(0)\n        }\n      } else {\n        if (this.settings.tsort === 'newest') {\n          $('#scroller').scrollLeft(0)\n        } else {\n          $('#scroller').scrollLeft(tableWidth)\n        }\n      }\n    }\n    //  else {\n    //   $('#scroller').addClass('d-none')\n    // }\n    // else {\n    //   $('#reportTable').css('width', 'auto')\n    //   $('#scroller').scrollLeft(0)\n    //   $('#scroller').addClass('d-none')\n    //   $('html').css('overflow-x', '')\n    // }\n  }\n\n  createTableContent () {\n    if ((this.settings.type === '' || this.settings.type === 'summary' || this.settings.type === 'proposal') &&\n      this.settings.pgroup !== 'proposals' && this.settings.pgroup !== '') {\n      if (this.settings.pgroup === 'domains') {\n        return this.createDomainTable(responseData)\n      }\n      if (this.settings.pgroup === 'authors') {\n        if (this.settings.ptype === 'list') {\n          return this.createAuthorTable(responseData)\n        } else {\n          return this.createMonthAuthorTable(responseData)\n        }\n      }\n      return ''\n    }\n    switch (this.settings.type) {\n      case 'summary':\n        return this.createSummaryTable(responseData)\n      default:\n        return this.createProposalTable(responseData)\n    }\n  }\n\n  sortByCreateDate () {\n    if (this.settings.type === 'treasury' || this.isDomainType()) {\n      this.settings.tsort = this.settings.tsort === 'oldest' ? 'newest' : 'oldest'\n      this.treasuryTSort = this.settings.tsort\n    } else {\n      this.settings.tsort = (this.settings.tsort === 'oldest' || !this.settings.tsort || this.settings.tsort === '') ? 'newest' : 'oldest'\n      this.proposalTSort = this.settings.tsort\n    }\n    if (this.settings.type === 'treasury' || this.isDomainType()) {\n      this.settings.stype = ''\n    }\n    this.createReportTable(false)\n  }\n\n  sortByDate () {\n    this.settings.psort = (this.settings.psort === 'newest' || !this.settings.psort || this.settings.psort === '') ? 'oldest' : 'newest'\n    this.createReportTable(false)\n  }\n\n  sortByStartDate () {\n    this.sortByType('startdt')\n  }\n\n  sortByPName () {\n    this.sortByType('pname')\n  }\n\n  sortByIncoming () {\n    this.sortByType('incoming')\n  }\n\n  sortByRate () {\n    this.sortByType('rate')\n  }\n\n  sortByOutgoing () {\n    this.sortByType('outgoing')\n  }\n\n  sortByNet () {\n    this.sortByType('net')\n  }\n\n  sortByBalance () {\n    this.sortByType('balance')\n  }\n\n  sortSpentPercent () {\n    this.sortByType('percent')\n  }\n\n  sortByOutgoingEst () {\n    this.sortByType('outest')\n  }\n\n  sortByDomain () {\n    this.sortByType('domain')\n  }\n\n  sortByAuthor () {\n    this.sortByType('author')\n  }\n\n  sortByPNum () {\n    this.sortByType('pnum')\n  }\n\n  sortByBudget () {\n    this.sortByType('budget')\n  }\n\n  sortByDays () {\n    this.sortByType('days')\n  }\n\n  sortByAvg () {\n    this.sortByType('avg')\n  }\n\n  sortByDomainItem (e) {\n    this.sortByType(e.params.domain)\n  }\n\n  sortByDomainTotal () {\n    this.sortByType('total')\n  }\n\n  sortByUnaccounted () {\n    this.sortByType('unaccounted')\n  }\n\n  sortByTotalSpent () {\n    this.sortByType('spent')\n  }\n\n  sortByRemaining () {\n    this.sortByType('remaining')\n  }\n\n  sortByEndDate () {\n    this.sortByType('enddt')\n  }\n\n  sortByType (type) {\n    this.settings.stype = type\n    this.settings.order = this.settings.order === 'esc' ? 'desc' : 'esc'\n    this.createReportTable(false)\n  }\n\n  getTreasuryYearlyData (summary) {\n    const dataMap = new Map()\n    const yearArr = []\n    for (let i = 0; i < summary.length; i++) {\n      const item = summary[i]\n      const month = item.month\n      if (month && month !== '') {\n        const timeArr = month.split('-')\n        const year = timeArr[0]\n        if (!yearArr.includes(year)) {\n          yearArr.push(year)\n        }\n        let monthStr = ''\n        if (timeArr[1].charAt(0) === '0') {\n          monthStr = timeArr[1].substring(1, timeArr[1].length)\n        } else {\n          monthStr = timeArr[1]\n        }\n        const monthInt = parseInt(monthStr, 0)\n        let monthObj = {}\n        if (dataMap.has(year)) {\n          monthObj = dataMap.get(year)\n          monthObj.invalue += item.invalue\n          monthObj.invalueUSD += item.invalueUSD\n          monthObj.outvalue += item.outvalue\n          monthObj.outvalueUSD += item.outvalueUSD\n          monthObj.difference += item.difference\n          monthObj.differenceUSD += item.differenceUSD\n          monthObj.total += item.total\n          monthObj.totalUSD += item.totalUSD\n          monthObj.outEstimate += item.outEstimate\n          monthObj.outEstimateUsd += item.outEstimateUsd\n          monthObj.monthPrice += item.monthPrice\n          monthObj.taddValue += item.taddValue\n          monthObj.taddValueUSD += item.taddValueUSD\n          monthObj.count += 1\n          if (monthInt > monthObj.monthInt) {\n            monthObj.monthInt = monthInt\n            monthObj.creditLink = item.creditLink\n            monthObj.debitLink = item.debitLink\n            monthObj.balance = item.balance\n            monthObj.balanceUSD = item.balanceUSD\n          }\n        } else {\n          monthObj.month = year\n          monthObj.invalue = item.invalue\n          monthObj.invalueUSD = item.invalueUSD\n          monthObj.outvalue = item.outvalue\n          monthObj.outvalueUSD = item.outvalueUSD\n          monthObj.difference = item.difference\n          monthObj.differenceUSD = item.differenceUSD\n          monthObj.total = item.total\n          monthObj.totalUSD = item.totalUSD\n          monthObj.outEstimate = item.outEstimate\n          monthObj.outEstimateUsd = item.outEstimateUsd\n          monthObj.monthPrice = item.monthPrice\n          monthObj.count = 1\n          monthObj.monthInt = monthInt\n          monthObj.balance = item.balance\n          monthObj.balanceUSD = item.balanceUSD\n          monthObj.debitLink = item.debitLink\n          monthObj.creditLink = item.creditLink\n          monthObj.taddValue = item.taddValue\n          monthObj.taddValueUSD = item.taddValueUSD\n        }\n        dataMap.set(year, monthObj)\n      }\n    }\n    const result = []\n    yearArr.forEach((year) => {\n      const tempResultItem = dataMap.get(year)\n      if (tempResultItem.count > 0) {\n        tempResultItem.monthPrice = tempResultItem.monthPrice / tempResultItem.count\n      }\n      result.push(tempResultItem)\n    })\n    return result\n  }\n\n  getProposalYearlyData (data) {\n    const result = {}\n    result.allSpent = data.allSpent\n    result.allBudget = data.allBudget\n    result.proposalList = data.proposalList\n    result.domainList = data.domainList\n    result.summary = data.summary\n\n    const dataMap = new Map()\n    const yearArr = []\n    data.report.forEach((report) => {\n      const month = report.month\n      if (month && month !== '') {\n        const year = month.split('/')[0]\n        if (!yearArr.includes(year)) {\n          yearArr.push(year)\n        }\n        let monthObj = {}\n        if (dataMap.has(year)) {\n          monthObj = dataMap.get(year)\n          monthObj.total += report.total\n          for (let i = 0; i < monthObj.allData.length; i++) {\n            monthObj.allData[i].expense += report.allData[i].expense\n          }\n          for (let i = 0; i < monthObj.domainData.length; i++) {\n            monthObj.domainData[i].expense += report.domainData[i].expense\n            // calculate DCR value\n            monthObj.domainData[i].expenseDCR += report.usdRate > 0 ? report.domainData[i].expense / report.usdRate : 0\n          }\n          monthObj.treasurySpent += report.treasurySpent\n          monthObj.treasurySpentDCR += report.usdRate > 0 ? report.treasurySpent / report.usdRate : 0\n        } else {\n          monthObj.total = report.total\n          monthObj.month = year\n          monthObj.allData = []\n          monthObj.domainData = []\n          for (let i = 0; i < report.allData.length; i++) {\n            const item = report.allData[i]\n            const allDataItem = {}\n            allDataItem.token = item.token\n            allDataItem.name = item.name\n            allDataItem.expense = item.expense\n            allDataItem.domain = item.domain\n            monthObj.allData.push(allDataItem)\n          }\n          for (let i = 0; i < report.domainData.length; i++) {\n            const item = report.domainData[i]\n            const domainDataItem = {}\n            domainDataItem.domain = item.domain\n            domainDataItem.expense = item.expense\n            // calculate DCR value\n            domainDataItem.expenseDCR = report.usdRate > 0 ? item.expense / report.usdRate : 0\n            monthObj.domainData.push(domainDataItem)\n          }\n          monthObj.treasurySpent = report.treasurySpent\n          monthObj.treasurySpentDCR = report.usdRate > 0 ? report.treasurySpent / report.usdRate : 0\n        }\n        dataMap.set(year, monthObj)\n      }\n    })\n    result.report = []\n    yearArr.forEach((year) => {\n      result.report.push(dataMap.get(year))\n    })\n    return result\n  }\n\n  createProposalTable (data) {\n    if (!data.report) {\n      return ''\n    }\n\n    let handlerData = data\n    if (this.settings.interval === 'year') {\n      handlerData = this.getProposalYearlyData(data)\n    }\n\n    if (handlerData.report.length < 1) {\n      this.nodataTarget.classList.remove('d-none')\n      this.reportTarget.classList.add('d-none')\n      return\n    }\n    this.nodataTarget.classList.add('d-none')\n    this.reportTarget.classList.remove('d-none')\n\n    let thead = '<thead><tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"text-center ps-0 month-col border-right-grey report-first-header head-first-cell\">' +\n      '<div class=\"c1\"><span data-action=\"click->financereport#sortByDate\" class=\"homeicon-swap vertical-sort\"></span></div><div class=\"c2\"><span id=\"sortCreateDate\" data-action=\"click->financereport#sortByCreateDate\" class=\"homeicon-swap horizontal-sort\"></span></div></th>' +\n      '###' +\n      '<th class=\"text-right ps-0 fw-600 fs-13i month-col ta-center border-left-grey report-last-header va-mid\">Total</th>' +\n      '</tr></thead>'\n    let tbody = '<tbody>###</tbody>'\n\n    let headList = ''\n    const proposalTokenMap = data.proposalTokenMap\n    for (let i = 0; i < handlerData.report.length; i++) {\n      const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n      const report = handlerData.report[index]\n      const timeParam = this.getFullTimeParam(report.month, '/')\n\n      if (this.settings.interval === 'year') {\n        headList += `<th class=\"text-center fw-600 pb-30i fs-13i table-header-sticky va-mid mw-75px\" id=\"${this.settings.interval + ';' + report.month}\">`\n        headList += '<div class=\"d-flex justify-content-center\">'\n        headList += `<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report?type=bytime&dtype=' + this.settings.interval + '&dtime=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}`\n        headList += '</a></div></th>'\n      } else {\n        headList += '<th class=\"text-right fw-600 pb-30i fs-13i ps-2 pe-2 table-header-sticky va-mid mw-75px\" ' +\n          `id=\"${this.settings.interval + ';' + report.month}\" ` +\n          `><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=month&dtime=' + (timeParam === '' ? report.month : timeParam)}\"><span class=\"d-block pr-5\">${report.month.replace('/', '-')}</span></a></th>`\n      }\n    }\n    thead = thead.replace('###', headList)\n\n    let bodyList = ''\n    for (let i = 0; i < handlerData.proposalList.length; i++) {\n      const index = this.settings.psort === 'oldest' ? (handlerData.proposalList.length - i - 1) : i\n      const proposal = handlerData.proposalList[index]\n      let token = ''\n      if (proposalTokenMap[proposal] && proposalTokenMap[proposal] !== '') {\n        token = proposalTokenMap[proposal]\n      }\n      bodyList += `<tr class=\"odd-even-row\"><td class=\"text-center fs-13i border-right-grey report-first-data\"><a href=\"${'/finance-report/detail?type=proposal&token=' + token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i d-block ${this.settings.interval === 'year' ? 'proposal-year-title' : 'proposal-title-col'}\">${proposal}</a></td>`\n      for (let j = 0; j < handlerData.report.length; j++) {\n        const tindex = this.settings.tsort === 'newest' ? j : (handlerData.report.length - j - 1)\n        const report = handlerData.report[tindex]\n        const allData = report.allData[index]\n        if (allData.expense > 0) {\n          if (this.settings.interval === 'year') {\n            bodyList += `<td class=\"${this.settings.interval === 'year' ? 'text-center' : 'text-right'} fs-13i proposal-content-td va-mid\">`\n            bodyList += '<div class=\"d-flex justify-content-center\">'\n            bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(allData.expense, 2, 2)}</span>`\n            bodyList += '</div>'\n          } else {\n            bodyList += '<td class=\"text-right fs-13i proposal-content-td va-mid\">'\n            bodyList += `$${humanize.formatToLocalString(allData.expense, 2, 2)}`\n          }\n        } else {\n          bodyList += '<td class=\"text-center fs-13i\">'\n        }\n        bodyList += '</td>'\n      }\n      bodyList += `<td class=\"text-right fs-13i fw-600 border-left-grey report-last-data va-mid\">$${humanize.formatToLocalString(handlerData.summary[index].budget, 2, 2)}</td></tr>`\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"text-center fw-600 fs-13i report-first-header report-first-last-footer va-mid\">Total</td>'\n    for (let i = 0; i < handlerData.report.length; i++) {\n      const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n      const report = handlerData.report[index]\n      if (this.settings.interval === 'year') {\n        bodyList += '<td class=\"text-center fw-600 fs-13i va-mid\">'\n        bodyList += '<div class=\"d-flex justify-content-center\">'\n        bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(report.total, 2, 2)}</span>`\n        bodyList += '</div>'\n        bodyList += '</td>'\n      } else {\n        bodyList += `<td class=\"text-right fw-600 fs-13i va-mid\">$${humanize.formatToLocalString(report.total, 2, 2)}</td>`\n      }\n    }\n\n    bodyList += `<td class=\"text-right fw-600 fs-13i report-last-header report-first-last-footer va-mid\">$${humanize.formatToLocalString(handlerData.allBudget, 2, 2)}</td></tr>`\n\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  createMonthAuthorTable (data) {\n    if (!data.report) {\n      return ''\n    }\n\n    const handlerData = data\n    if (handlerData.report.length < 1) {\n      this.nodataTarget.classList.remove('d-none')\n      this.reportTarget.classList.add('d-none')\n      return\n    }\n    this.nodataTarget.classList.add('d-none')\n    this.reportTarget.classList.remove('d-none')\n\n    let thead = '<thead><tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"text-center ps-0 month-col border-right-grey report-first-header head-first-cell\">' +\n      '<div class=\"c1\"><span data-action=\"click->financereport#sortByDate\" class=\"homeicon-swap vertical-sort\"></span></div><div class=\"c2\"><span data-action=\"click->financereport#sortByCreateDate\" class=\"homeicon-swap horizontal-sort\"></span></div></th>' +\n      '###' +\n      '<th class=\"text-right ps-0 fw-600 month-col ta-center border-left-grey report-last-header va-mid\">Total</th>' +\n      '</tr></thead>'\n    let tbody = '<tbody>###</tbody>'\n\n    let headList = ''\n    for (let i = 0; i < handlerData.report.length; i++) {\n      const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n      const report = handlerData.report[index]\n      const timeParam = this.getFullTimeParam(report.month, '/')\n      if (this.settings.interval === 'year') {\n        headList += `<th class=\"text-center fw-600 pb-30i fs-13i table-header-sticky va-mid mw-75px\" id=\"${this.settings.interval + ';' + report.month}\">`\n        headList += '<div class=\"d-flex justify-content-center\">'\n        headList += `<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report/detail?type=' + this.settings.interval + '&time=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}`\n        headList += '</a></div></th>'\n      } else {\n        headList += '<th class=\"text-right fw-600 pb-30i fs-13i ps-2 pe-2 table-header-sticky va-mid mw-75px\" ' +\n          `id=\"${this.settings.interval + ';' + report.month}\" ` +\n          `><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=month&dtime=' + (timeParam === '' ? report.month : timeParam)}\"><span class=\"d-block pr-5\">${report.month.replace('/', '-')}</span></a></th>`\n      }\n    }\n    thead = thead.replace('###', headList)\n\n    let bodyList = ''\n    for (let i = 0; i < handlerData.authorReport.length; i++) {\n      const index = this.settings.psort === 'oldest' ? (handlerData.authorReport.length - i - 1) : i\n      const author = handlerData.authorReport[index]\n      const budget = author.budget\n      bodyList += `<tr class=\"odd-even-row\"><td class=\"text-center fs-13i border-right-grey report-first-data\"><a data-turbolinks=\"false\" href=\"/finance-report/detail?type=owner&name=${author.name}\" class=\"link-hover-underline fw-600 fs-13i d-block ${this.settings.interval === 'year' ? 'proposal-year-title' : 'author-title-col'}\">${author.name}</a></td>`\n      for (let j = 0; j < handlerData.report.length; j++) {\n        const tindex = this.settings.tsort === 'newest' ? j : (handlerData.report.length - j - 1)\n        const report = handlerData.report[tindex]\n        const expense = this.getAuthorExpense(author.name, report.authorData)\n        if (expense > 0) {\n          if (this.settings.interval === 'year') {\n            bodyList += `<td class=\"${this.settings.interval === 'year' ? 'text-center' : 'text-right'} fs-13i proposal-content-td va-mid\">`\n            bodyList += '<div class=\"d-flex justify-content-center\">'\n            bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(expense, 2, 2)}</span>`\n            bodyList += '</div>'\n          } else {\n            bodyList += '<td class=\"text-right fs-13i proposal-content-td va-mid\">'\n            bodyList += `$${humanize.formatToLocalString(expense, 2, 2)}`\n          }\n        } else {\n          bodyList += '<td class=\"text-center fs-13i\">'\n        }\n        bodyList += '</td>'\n      }\n      bodyList += `<td class=\"text-right fs-13i fw-600 border-left-grey report-last-data va-mid\">$${humanize.formatToLocalString(budget, 2, 2)}</td></tr>`\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"text-center fw-600 fs-13i report-first-header report-first-last-footer va-mid\">Total</td>'\n    for (let i = 0; i < handlerData.report.length; i++) {\n      const index = this.settings.tsort === 'newest' ? i : (handlerData.report.length - i - 1)\n      const report = handlerData.report[index]\n      if (this.settings.interval === 'year') {\n        bodyList += '<td class=\"text-center fw-600 fs-13i va-mid\">'\n        bodyList += '<div class=\"d-flex justify-content-center\">'\n        bodyList += `<span style=\"text-align: right; width: 80px;\">$${humanize.formatToLocalString(report.total, 2, 2)}</span>`\n        bodyList += '</div>'\n        bodyList += '</td>'\n      } else {\n        bodyList += `<td class=\"text-right fw-600 fs-13i va-mid\">$${humanize.formatToLocalString(report.total, 2, 2)}</td>`\n      }\n    }\n\n    bodyList += `<td class=\"text-right fw-600 fs-13i report-last-header report-first-last-footer va-mid\">$${humanize.formatToLocalString(handlerData.allBudget, 2, 2)}</td></tr>`\n\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  getAuthorExpense (author, authorData) {\n    let expense = 0\n    authorData.forEach(tmp => {\n      if (tmp.author === author) {\n        expense = tmp.expense\n      }\n    })\n    return expense\n  }\n\n  createSummaryTable (data) {\n    if (!data.report) {\n      return ''\n    }\n    if (data.summary.length < 1) {\n      this.nodataTarget.classList.remove('d-none')\n      this.reportTarget.classList.add('d-none')\n      return\n    }\n    this.nodataTarget.classList.add('d-none')\n    this.reportTarget.classList.remove('d-none')\n\n    if (!this.settings.stype || this.settings.stype === '') {\n      this.settings.stype = this.defaultSettings.stype\n    }\n\n    if (!this.settings.order || this.settings.order === '') {\n      this.settings.order = this.defaultSettings.order\n    }\n\n    const thead = '<thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"va-mid text-center fs-13i month-col fw-600 proposal-name-col\">Name</th>' +\n      '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Domain</th>' +\n      '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Author</th>' +\n      '<th class=\"va-mid text-center fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByStartDate\">Start Date</label>' +\n      `<span data-action=\"click->financereport#sortByStartDate\" class=\"${(this.settings.stype === 'startdt' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.stype || this.settings.stype === '' || this.settings.stype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-center fs-13i px-2 fw-600\">End Date</th>' +\n      '<th class=\"va-mid text-right fs-13i px-2 fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBudget\">Budget</label>' +\n      `<span data-action=\"click->financereport#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Days</th>' +\n      '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Monthly Avg (Est)</th>' +\n      '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Total Spent (Est)</th>' +\n      '<th class=\"va-mid text-right fs-13i px-2 fw-600\">Total Remaining (Est)</th></tr></thead>'\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    const proposalTokenMap = data.proposalTokenMap\n    // Handler sort before display data\n    // sort by param\n    const summaryList = this.sortSummary(data.summary)\n    let totalBudget = 0.0\n    let totalSpent = 0.0\n    // create tbody content\n    for (let i = 0; i < summaryList.length; i++) {\n      const summary = summaryList[i]\n      if (this.settings.active && summary.totalRemaining === 0.0) {\n        continue\n      }\n      let token = ''\n      if (proposalTokenMap[summary.name] && proposalTokenMap[summary.name] !== '') {\n        token = proposalTokenMap[summary.name]\n      }\n      const lengthInDays = this.getLengthInDay(summary)\n      let monthlyAverage = summary.budget / lengthInDays\n      if (lengthInDays < 30) {\n        monthlyAverage = summary.budget\n      } else {\n        monthlyAverage = monthlyAverage * 30\n      }\n      totalBudget += summary.budget\n      totalSpent += summary.totalSpent\n      bodyList += `<tr class=\"${summary.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\">` +\n        `<td class=\"va-mid text-center fs-13i proposal-name-column\"><a href=\"${'/finance-report/detail?type=proposal&token=' + token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.name}</a></td>` +\n        `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>` +\n        `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>` +\n        `<td class=\"va-mid text-center px-2 fs-13i\">${summary.start}</td>` +\n        `<td class=\"va-mid text-center px-2 fs-13i\">${summary.end}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${lengthInDays}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : '-'}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : '-'}</td>` +\n        '</tr>'\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"5\">Total</td>' +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n      '<td class=\"va-mid text-right px-2 fw-600 fs-13i\">-</td><td class=\"va-mid text-right px-2 fw-600 fs-13i\">-</td>' +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget - totalSpent, 2, 2)}</td>` +\n      '</tr>'\n\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  changeYear (e) {\n    if (!e.target.value || e.target.value === '') {\n      return\n    }\n    this.settings.year = e.target.value\n    this.calculate()\n  }\n\n  changeTopYear (e) {\n    if (!e.target.value || e.target.value === '') {\n      return\n    }\n    const currentTime = this.settings.dtime\n    const timeArr = currentTime.toString().split('_')\n    let currentMonth = 0\n    if (timeArr.length > 1) {\n      currentMonth = Number(timeArr[1])\n    }\n    if (this.isAllYearTimeReport(e.target.value) || (e.target.value === this.reportMinYear && currentMonth < this.reportMinMonth) || (e.target.value === this.reportMaxYear && currentMonth > this.reportMaxMonth)) {\n      currentMonth = 0\n    }\n    if (this.isAllYearTimeReport(e.target.value)) {\n      this.topMonthSelectTarget.disabled = true\n      this.settings.dtype = 'year'\n      this.settings.dtime = '0'\n    } else {\n      this.topMonthSelectTarget.disabled = false\n      this.settings.dtime = e.target.value + (currentMonth > 0 ? '_' + currentMonth : '')\n    }\n    this.initReportDetailData()\n  }\n\n  isAllYearTimeReport (yearOption) {\n    return yearOption === '' || yearOption === 0 || yearOption === '0'\n  }\n\n  changeTopMonth (e) {\n    if (!e.target.value || e.target.value === '') {\n      return\n    }\n    const currentTime = this.settings.dtime\n    const timeArr = currentTime.toString().split('_')\n    const year = timeArr[0]\n    if (e.target.value > 0) {\n      this.settings.dtime = year + '_' + e.target.value\n    } else {\n      this.settings.dtime = year\n    }\n    this.initReportDetailData()\n  }\n\n  getLengthInDay (summary) {\n    const start = Date.parse(summary.start)\n    const end = Date.parse(summary.end)\n    const oneDay = 24 * 60 * 60 * 1000\n\n    return Math.round(Math.abs((end - start) / oneDay))\n  }\n\n  sortAuthorData (authorList) {\n    switch (this.settings.stype) {\n      case 'budget':\n        return this.sortSummaryByBudget(authorList)\n      case 'spent':\n        return this.sortAuthorByTotalReceived(authorList)\n      case 'remaining':\n        return this.sortAuthorByRemaining(authorList)\n      case 'pnum':\n        return this.sortAuthorByProposalNum(authorList)\n      default:\n        return this.sortSummaryByName(authorList)\n    }\n  }\n\n  sortAuthorByProposalNum (authorList) {\n    if (!authorList) {\n      return\n    }\n    const _this = this\n    authorList.sort(function (a, b) {\n      if (a.proposals > b.proposals) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.proposals < b.proposals) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return authorList\n  }\n\n  sortAuthorByRemaining (authorList) {\n    if (!authorList) {\n      return\n    }\n    const _this = this\n    authorList.sort(function (a, b) {\n      if (a.totalRemaining > b.totalRemaining) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.totalRemaining < b.totalRemaining) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return authorList\n  }\n\n  sortAuthorByTotalReceived (authorList) {\n    if (!authorList) {\n      return\n    }\n    const _this = this\n    authorList.sort(function (a, b) {\n      if (a.totalReceived > b.totalReceived) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.totalReceived < b.totalReceived) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return authorList\n  }\n\n  sortDomains (domainDataList) {\n    let result = []\n    if (!domainDataList || domainDataList.length === 0) {\n      return result\n    }\n\n    // if not sort by data column, sort by month, year\n    if (!this.settings.stype || this.settings.stype === '') {\n      for (let i = 0; i < domainDataList.length; i++) {\n        const sort = this.settings.tsort\n        result.push(sort === 'oldest' ? domainDataList[domainDataList.length - i - 1] : domainDataList[i])\n      }\n      return result\n    }\n\n    result = Array.from(domainDataList)\n    const _this = this\n    result.sort(function (a, b) {\n      let aData = null\n      let bData = null\n      if (_this.settings.stype === 'total') {\n        aData = a.total + (a.unaccounted > 0 ? a.unaccounted : 0)\n        bData = b.total + (b.unaccounted > 0 ? b.unaccounted : 0)\n      } else if (_this.settings.stype === 'unaccounted') {\n        aData = a.unaccounted\n        bData = b.unaccounted\n      } else if (_this.settings.stype === 'rate') {\n        aData = a.usdRate\n        bData = b.usdRate\n      } else {\n        a.domainData.forEach((aDomainData) => {\n          if (_this.settings.stype === aDomainData.domain) {\n            aData = aDomainData.expense\n          }\n        })\n        b.domainData.forEach((bDomainData) => {\n          if (_this.settings.stype === bDomainData.domain) {\n            bData = bDomainData.expense\n          }\n        })\n      }\n      if (aData > bData) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (aData < bData) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return result\n  }\n\n  sortTreasury (treasuryList) {\n    let result = []\n    if (!treasuryList) {\n      return result\n    }\n    // if not sort by data column, sort by month, year\n    if (!this.settings.stype || this.settings.stype === '') {\n      for (let i = 0; i < treasuryList.length; i++) {\n        const sort = this.settings.tsort\n        result.push(sort === 'newest' ? treasuryList[i] : treasuryList[treasuryList.length - i - 1])\n      }\n      return result\n    }\n\n    result = Array.from(treasuryList)\n    const _this = this\n    result.sort(function (a, b) {\n      let aData = null\n      let bData = null\n      switch (_this.settings.stype) {\n        case 'outgoing':\n          aData = a.outvalue\n          bData = b.outvalue\n          break\n        case 'net':\n          aData = a.outvalue > a.invalue ? 0 - a.difference : a.difference\n          bData = b.outvalue > b.invalue ? 0 - b.difference : b.difference\n          break\n        case 'outest':\n          aData = a.outEstimate\n          bData = b.outEstimate\n          break\n        case 'rate':\n          aData = a.monthPrice\n          bData = b.monthPrice\n          break\n        case 'balance':\n          aData = a.balance\n          bData = b.balance\n          break\n        case 'percent':\n          aData = 0\n          bData = 0\n          if (a.outvalue > 0) {\n            aData = 100 * 1e8 * a.outEstimate / a.outvalue\n          }\n          if (b.outvalue > 0) {\n            bData = 100 * 1e8 * b.outEstimate / b.outvalue\n          }\n          break\n        default:\n          aData = a.invalue\n          bData = b.invalue\n      }\n      if (aData > bData) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (aData < bData) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return result\n  }\n\n  sortSummary (summary) {\n    switch (this.settings.stype) {\n      case 'pname':\n        return this.sortSummaryByName(summary)\n      case 'domain':\n        return this.sortSummaryByDomain(summary)\n      case 'author':\n        return this.sortSummaryByAuthor(summary)\n      case 'budget':\n        return this.sortSummaryByBudget(summary)\n      case 'spent':\n        return this.sortSummaryBySpent(summary)\n      case 'remaining':\n        return this.sortSummaryByRemaining(summary)\n      case 'days':\n        return this.sortSummaryByDays(summary)\n      case 'avg':\n        return this.sortSummaryByAvg(summary)\n      case 'enddt':\n        return this.sortSummaryByDate(summary, false)\n      default:\n        return this.sortSummaryByDate(summary, true)\n    }\n  }\n\n  sortSummaryByDate (summary, isStart) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      const date1 = Date.parse(isStart ? a.start : a.end)\n      const date2 = Date.parse(isStart ? b.start : b.end)\n      if (date1 > date2) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (date1 < date2) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByDays (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      const lengtha = _this.getLengthInDay(a)\n      const lengthb = _this.getLengthInDay(b)\n      if (lengtha > lengthb) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (lengtha < lengthb) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByAvg (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      const avga = (a.budget / _this.getLengthInDay(a)) * 30\n      const avgb = (b.budget / _this.getLengthInDay(b)) * 30\n      if (avga > avgb) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (avga < avgb) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByRemaining (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.totalRemaining > b.totalRemaining) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.totalRemaining < b.totalRemaining) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryBySpent (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.totalSpent > b.totalSpent) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.totalSpent < b.totalSpent) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByBudget (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.budget > b.budget) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.budget < b.budget) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortByStartdt (summary) {\n    if (this.settings.order !== 'esc') {\n      return summary\n    }\n    const result = []\n    for (let i = summary.length - 1; i >= 0; i--) {\n      result.push(summary[i])\n    }\n    return result\n  }\n\n  sortSummaryByDomain (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.domain > b.domain) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      } else if (a.domain < b.domain) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      } else {\n        if (a.name > b.name) {\n          return _this.settings.order === 'desc' ? -1 : 1\n        }\n        if (a.name < b.name) {\n          return _this.settings.order === 'desc' ? 1 : -1\n        }\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByName (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.name > b.name) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.name < b.name) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortSummaryByAuthor (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.author > b.author) {\n        return _this.settings.order === 'desc' ? -1 : 1\n      }\n      if (a.author < b.author) {\n        return _this.settings.order === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  swapItemOnArray (array, index1, index2) {\n    const temp = array[index1]\n    array[index1] = index2\n    array[index2] = temp\n  }\n\n  createAuthorTable (data) {\n    if (!data.authorReport) {\n      return ''\n    }\n\n    if (!this.settings.stype || this.settings.stype === '') {\n      this.settings.stype = 'author'\n    }\n\n    if (!this.settings.order || this.settings.order === '') {\n      this.settings.order = this.defaultSettings.order\n    }\n\n    const thead = '<thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"va-mid text-center px-2 fs-13i month-col fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByAuthor\">Author</label>' +\n      `<span data-action=\"click->financereport#sortByAuthor\" class=\"${(this.settings.stype === 'author' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'author' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByPNum\">Proposals</label>' +\n      `<span data-action=\"click->financereport#sortByPNum\" class=\"${(this.settings.stype === 'pnum' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'pnum' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBudget\">Total Budget</label>' +\n      `<span data-action=\"click->financereport#sortByBudget\" class=\"${(this.settings.stype === 'budget' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Received (Est)</th>' +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Remaining (Est)</th>' +\n      '</tr></thead>'\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    let totalBudget = 0\n    let totalSpent = 0\n    let totalRemaining = 0\n    let totalProposals = 0\n    // Handler sort before display data\n    const authorList = this.sortAuthorData(data.authorReport)\n    // create tbody content\n    for (let i = 0; i < authorList.length; i++) {\n      const author = authorList[i]\n      if (this.settings.active && author.totalRemaining === 0.0) {\n        continue\n      }\n      totalBudget += author.budget\n      totalSpent += author.totalReceived\n      totalRemaining += author.totalRemaining\n      totalProposals += author.proposals\n      bodyList += `<tr class=\"${author.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\"><td class=\"va-mid text-center px-2 fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report/detail?type=owner&name=' + author.name}\">${author.name}</a></td>`\n      bodyList += `<td class=\"va-mid text-center px-2 fs-13i\">${author.proposals}</td>`\n      bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.budget > 0 ? '$' + humanize.formatToLocalString(author.budget, 2, 2) : '-'}</td>`\n      bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.totalReceived > 0 ? '$' + humanize.formatToLocalString(author.totalReceived, 2, 2) : '-'}</td>`\n      bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${author.totalRemaining > 0 ? '$' + humanize.formatToLocalString(author.totalRemaining, 2, 2) : '-'}</td></tr>`\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"va-mid text-center px-2 fw-600 fs-13i\">Total</td>' +\n      `<td class=\"va-mid text-center px-2 fw-600 fs-13i\">${totalProposals}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</td>` +\n      '</tr>'\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  createDomainTable (data) {\n    if (!data.report) {\n      return ''\n    }\n    let handlerData = data\n    // combined data of report and treasury report\n    const treasuryDataMap = this.getTreasuryMonthSpentMap(data.treasurySummary)\n    handlerData = this.getTreasuryDomainCombined(handlerData, treasuryDataMap)\n    if (this.settings.interval === 'year') {\n      handlerData = domainYearData != null ? domainYearData : this.getProposalYearlyData(handlerData)\n      this.futureLabelTarget.textContent = 'Years in the future'\n    } else {\n      this.futureLabelTarget.textContent = 'Months in the future'\n    }\n\n    if (handlerData.report.length < 1) {\n      this.nodataTarget.classList.remove('d-none')\n      this.reportTarget.classList.add('d-none')\n      return\n    }\n    this.nodataTarget.classList.add('d-none')\n    this.reportTarget.classList.remove('d-none')\n    let thead = '<col><colgroup span=\"2\"></colgroup><col5group span=\"5\"></col5group><thead><tr class=\"text-secondary finance-table-header\">' +\n      `<th rowspan=\"2\" class=\"va-mid text-center ps-0 month-col cursor-pointer\" data-action=\"click->financereport#sortByCreateDate\"><span class=\"${this.settings.tsort === 'oldest' ? 'dcricon-arrow-up' : 'dcricon-arrow-down'} ${this.settings.stype && this.settings.stype !== '' ? 'c-grey-4' : ''} col-sort\"></span></th>`\n    if (this.settings.interval !== 'year') {\n      thead += '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Rate (USD/DCR)</th>'\n    }\n    thead += '###' +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Delta (Est)</th>' +\n      '<th colspan=\"5\" scope=\"col5group\" class=\"va-mid text-center-i total-last-col fs-13i fw-600 border-left-grey\">Total Spent</th></tr>####</thead>'\n    let row2 = '<tr class=\"text-secondary finance-table-header\">'\n    let tbody = '<tbody>###</tbody>'\n\n    let headList = ''\n    let domainsRateColumn = ''\n    handlerData.domainList.forEach((domain) => {\n      const domainDisp = domain.charAt(0).toUpperCase() + domain.slice(1)\n      headList += `<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i domain-content-cell fs-13i fw-600\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${domainDisp} (Est)</a>` +\n        `<span data-action=\"click->financereport#sortByDomainItem\" data-financereport-domain-param=\"${domain}\" class=\"${(this.settings.stype === domain && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== domain ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n      row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n      domainsRateColumn += `<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">${domainDisp}</th>`\n    })\n    headList += '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Dev Spend Total (Est)</th>'\n    row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      domainsRateColumn +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">Unaccounted</th></tr>'\n    thead = thead.replace('####', row2)\n    thead = thead.replace('###', headList)\n    let bodyList = ''\n    const domainDataMap = new Map()\n    // sort before display on table\n    const domainList = this.sortDomains(handlerData.report)\n    let unaccountedTotal = 0\n    let unaccountedDcrTotal = 0\n    let totalAllDcr = 0\n    let totalAllValue = 0\n    let totalDevAll = 0\n    let totalDevAllDCR = 0\n    const domainDCRTotalMap = new Map()\n    const _this = this\n    // create tbody content\n    for (let i = 0; i < domainList.length; i++) {\n      const report = domainList[i]\n      const timeParam = this.getFullTimeParam(report.month, '/')\n      let isFuture = false\n      const timeYearMonth = this.getYearMonthArray(report.month, '/')\n      const nowDate = new Date()\n      const year = nowDate.getUTCFullYear()\n      const month = nowDate.getUTCMonth() + 1\n      let rowTotal = 0\n      let rowTotalDCR = 0\n      if (this.settings.interval === 'year') {\n        isFuture = timeYearMonth[0] > year\n      } else {\n        const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n        const compareNowTime = year * 12 + month\n        isFuture = compareDataTime > compareNowTime\n      }\n      const usdRate = this.settings.interval === 'year' ? 0 : report.usdRate\n      bodyList += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\"><td class=\"va-mid text-center fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" style=\"text-align: right; width: 80px;\" href=\"${'/finance-report?type=bytime&' + (this.settings.interval === 'year' ? '' : 'dtype=month&') + 'dtime=' + (timeParam === '' ? report.month : timeParam)}\">${report.month.replace('/', '-')}</a></td>`\n      if (this.settings.interval !== 'year') {\n        bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${usdRate > 0 ? '$' + humanize.formatToLocalString(usdRate, 2, 2) : '-'}</td>`\n      }\n      report.domainData.forEach((domainData) => {\n        const dcrValue = this.settings.interval === 'year' ? domainData.expenseDCR : (usdRate > 0 ? domainData.expense / usdRate : 0)\n        const dcrDisp = dcrValue > 0 ? humanize.formatToLocalString(dcrValue, 2, 2) : '-'\n        bodyList += `<td class=\"va-mid text-right px-2 fs-13i\">${domainData.expense > 0 ? '$' + humanize.formatToLocalString(domainData.expense, 2, 2) : '-'}</td>` +\n          `<td class=\"va-mid text-right px-2 fs-13i\">${dcrDisp}</td>`\n        rowTotal += domainData.expense > 0 ? domainData.expense : 0\n        rowTotalDCR += dcrValue > 0 ? dcrValue : 0\n        if (domainDataMap.has(domainData.domain)) {\n          domainDataMap.set(domainData.domain, domainDataMap.get(domainData.domain) + domainData.expense)\n        } else {\n          domainDataMap.set(domainData.domain, domainData.expense)\n        }\n        if (domainDCRTotalMap.has(domainData.domain)) {\n          domainDCRTotalMap.set(domainData.domain, domainDCRTotalMap.get(domainData.domain) + dcrValue)\n        } else {\n          domainDCRTotalMap.set(domainData.domain, dcrValue)\n        }\n      })\n      const devTotal = rowTotal\n      const devTotalDCR = rowTotalDCR\n      totalDevAll += devTotal\n      totalDevAllDCR += devTotalDCR\n      const unaccounted = report.treasurySpent > 0 ? report.treasurySpent - devTotal : -devTotal\n      const unaccountedDcr = this.settings.interval === 'year' ? (report.treasurySpentDCR > 0 ? report.treasurySpentDCR - rowTotalDCR : -rowTotalDCR) : (usdRate > 0 ? unaccounted / usdRate : 0)\n      const unaccountedDcrDisp = (unaccountedDcr >= 0 ? '' : '-') + humanize.formatToLocalString(Math.abs(unaccountedDcr), 2, 2)\n      rowTotal += unaccounted\n      rowTotalDCR += unaccountedDcr\n      let rateStr = ''\n      let unaccountedPercent = 100\n      report.domainData.forEach((domainData) => {\n        const rate = _this.isZeroNumber(rowTotal) ? 0 : 100 * domainData.expense / rowTotal\n        rateStr += `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${isFuture || rowTotal <= 0 ? '-' : ((rate < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rate), 2, 2) + '%')}</td>`\n        unaccountedPercent -= rate\n      })\n      rateStr += `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${isFuture || rowTotal <= 0 ? '-' : ((unaccountedPercent < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedPercent), 2, 2) + '%')}</td>`\n      const totalDcrDisp = this.isZeroNumber(rowTotalDCR) ? '-' : (rowTotalDCR < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rowTotalDCR), 2, 2)\n      totalAllDcr += rowTotalDCR > 0 ? rowTotalDCR : 0\n      totalAllValue += rowTotal > 0 ? rowTotal : 0\n      unaccountedTotal += unaccounted\n      unaccountedDcrTotal += unaccountedDcr\n      // display dev spent total\n      bodyList += `<td class=\"va-mid text-right fs-13i px-2\">${devTotal > 0 ? '$' + humanize.formatToLocalString(devTotal, 2, 2) : '-'}</td>` +\n        `<td class=\"va-mid text-right fs-13i px-2\">${devTotalDCR > 0 ? humanize.formatToLocalString(devTotalDCR, 2, 2) : '-'}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${isFuture ? '-' : (unaccounted >= 0 ? '' : '-') + '$' + humanize.formatToLocalString(Math.abs(unaccounted), 2, 2)}`\n      if (!isFuture) {\n        bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showUnaccountedUSDTooltip\" data-show=\"${report.treasurySpent + ';' + devTotal}\"><span class=\"tooltiptext cursor-default click-popup\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n      }\n      bodyList += '</td>' +\n        `<td class=\"va-mid text-right fs-13i px-2\">${isFuture ? '-' : unaccountedDcrDisp}</td>` +\n        `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${this.isZeroNumber(rowTotal) ? '-' : (rowTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(rowTotal), 2, 2)}</td>` +\n        `<td class=\"va-mid text-right fs-13i px-2 fw-600\">${totalDcrDisp}</td>` +\n        `${rateStr}</tr>`\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\"><td class=\"text-center fw-600 fs-13i border-right-grey\">Total (Est)</td>'\n    if (this.settings.interval !== 'year') {\n      bodyList += '<td class=\"va-mid text-right fw-600 fs-13i px-2\">-</td>'\n    }\n    let rateTotalStr = ''\n    let unaccountedTotalPercent = 100\n    handlerData.domainList.forEach((domain) => {\n      const expData = domainDataMap.has(domain) ? domainDataMap.get(domain) : 0\n      const expDcrData = domainDCRTotalMap.has(domain) ? domainDCRTotalMap.get(domain) : 0\n      const rateTotal = _this.isZeroNumber(totalAllValue) ? 0 : 100 * expData / totalAllValue\n      bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(expData, 2, 2)}</td>`\n      bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${humanize.formatToLocalString(expDcrData, 2, 2)}</td>`\n      rateTotalStr += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${(rateTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(rateTotal), 2, 2) + '%'}</td>`\n      unaccountedTotalPercent -= rateTotal\n    })\n    rateTotalStr += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${(unaccountedTotalPercent < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedTotalPercent), 2, 2) + '%'}</td>`\n    bodyList += `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(totalDevAll, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${humanize.formatToLocalString(totalDevAllDCR, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${this.isZeroNumber(unaccountedTotal) ? '-' : (unaccountedTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedTotal), 2, 2)}</td>` +\n      `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${this.isZeroNumber(unaccountedDcrTotal) ? '-' : (unaccountedDcrTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedDcrTotal), 2, 2)}</td>` +\n      `<td class=\"va-mid text-right fw-600 fs-13i px-2\">$${humanize.formatToLocalString(totalAllValue, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right fw-600 fs-13i px-2\">${totalAllDcr > 0 ? humanize.formatToLocalString(totalAllDcr, 2, 2) : '-'}</td>` +\n      `${rateTotalStr}</tr>`\n\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  isZeroNumber (number) {\n    if (number === 0) {\n      return true\n    }\n    const num = Math.abs(number)\n    return num.toFixed(2) === '0.00'\n  }\n\n  showIngoingTaddTooltip (e) {\n    const target = e.target\n    const data = target.dataset.show\n    if (!data || data === '') {\n      return\n    }\n    const dataArr = data.split(';')\n    if (dataArr.length < 2) {\n      return\n    }\n    const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n    if (!tooltipText) {\n      return\n    }\n    if (target.classList.contains('active')) {\n      target.classList.remove('active')\n      tooltipText.style.visibility = 'hidden'\n    } else {\n      target.classList.add('active')\n      tooltipText.style.visibility = 'visible'\n      const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n      if (!textElement) {\n        return\n      }\n      textElement.innerHTML = `<p>Decentralized Treasury received <br /><span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0]), 2, 2)} DCR(~$${humanize.formatToLocalString(Number(dataArr[1]), 2, 2)})</span> <br />from Admin Treasury</p>`\n    }\n  }\n\n  showOutgoingTaddTooltip (e) {\n    const target = e.target\n    const data = target.dataset.show\n    if (!data || data === '') {\n      return\n    }\n    const dataArr = data.split(';')\n    if (dataArr.length < 2) {\n      return\n    }\n    const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n    if (!tooltipText) {\n      return\n    }\n    if (target.classList.contains('active')) {\n      target.classList.remove('active')\n      tooltipText.style.visibility = 'hidden'\n    } else {\n      target.classList.add('active')\n      tooltipText.style.visibility = 'visible'\n      const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n      if (!textElement) {\n        return\n      }\n      textElement.innerHTML = `<p>Admin Treasury sent <br /><span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0]), 2, 2)} DCR(~$${humanize.formatToLocalString(Number(dataArr[1]), 2, 2)})</span><br />to Decentralized Treasury</p>`\n    }\n  }\n\n  showUnaccountedUSDTooltip (e) {\n    const target = e.target\n    const data = target.dataset.show\n    if (!data || data === '') {\n      return\n    }\n    const dataArr = data.split(';')\n    if (dataArr.length < 2) {\n      return\n    }\n    const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n    if (!tooltipText) {\n      return\n    }\n    if (target.classList.contains('active')) {\n      target.classList.remove('active')\n      tooltipText.style.visibility = 'hidden'\n    } else {\n      target.classList.add('active')\n      tooltipText.style.visibility = 'visible'\n      const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n      if (!textElement) {\n        return\n      }\n      textElement.innerHTML = `<div class=\"fs-18\">-</div><div class=\"ms-2\"><p>Treasury Spent: <span class=\"fw-600\">$${humanize.formatToLocalString(Number(dataArr[0].trim()), 2, 2)}</span></p><p class=\"mt-2\">Estimate Spend: <span class=\"fw-600\">$${humanize.formatToLocalString(Number(dataArr[1].trim()), 2, 2)}</span></p></div>`\n    }\n  }\n\n  showUnaccountedTooltip (e) {\n    const target = e.target\n    const data = target.dataset.show\n    if (!data || data === '') {\n      return\n    }\n    const dataArr = data.split(';')\n    if (dataArr.length < 2) {\n      return\n    }\n    const tooltipText = target.getElementsByClassName('tooltiptext')[0]\n    if (!tooltipText) {\n      return\n    }\n    if (target.classList.contains('active')) {\n      target.classList.remove('active')\n      tooltipText.style.visibility = 'hidden'\n    } else {\n      target.classList.add('active')\n      tooltipText.style.visibility = 'visible'\n      const textElement = tooltipText.getElementsByClassName('tooltip-text')[0]\n      if (!textElement) {\n        return\n      }\n      textElement.innerHTML = `<div class=\"fs-18\">-</div><div class=\"ms-2\"><p>Treasury Spent: <span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[0].trim()), 2, 2)} DCR</span></p><p class=\"mt-2\">Dev Spent (Est): <span class=\"fw-600\">${humanize.formatToLocalString(Number(dataArr[1].trim()), 2, 2)} DCR</span></p></div>`\n    }\n  }\n\n  getTreasuryDomainCombined (reportData, treasuryDataMap) {\n    const report = reportData.report\n    if (!report || report.length === 0) {\n      return reportData\n    }\n    for (let i = report.length - 1; i >= 0; i--) {\n      const reportItem = report[i]\n      const monthFormat = reportItem.month.replace('/', '-')\n      reportData.report[i].treasurySpent = treasuryDataMap.has(monthFormat) ? treasuryDataMap.get(monthFormat) : 0\n    }\n    return reportData\n  }\n\n  getFullTimeParam (timeInput, splitChar) {\n    const timeArr = timeInput.split(splitChar)\n    let timeParam = ''\n    if (timeArr.length === 2) {\n      timeParam = timeArr[0] + '_'\n      // if month < 10\n      if (timeArr[1].charAt(0) === '0') {\n        timeParam += timeArr[1].substring(1, timeArr[1].length)\n      } else {\n        timeParam += timeArr[1]\n      }\n    }\n    return timeParam\n  }\n\n  getYearMonthArray (timeInput, splitChar) {\n    const timeArr = timeInput.split(splitChar)\n    const result = []\n    if (timeArr.length < 2) {\n      result.push(parseInt(timeArr[0]))\n      return result\n    }\n    result.push(parseInt(timeArr[0]))\n    result.push(parseInt(timeArr[1]))\n    return result\n  }\n\n  createTreasuryTable (data) {\n    this.treasuryTypeTitleTarget.textContent = this.settings.ttype === 'legacy' ? 'Admin Treasury' : this.settings.ttype === 'combined' ? 'Combined' : 'Decentralized Treasury'\n    if (this.isCombinedReport()) {\n      this.outgoingExpTarget.classList.remove('d-none')\n      this.outgoingExpTarget.classList.remove('mt-2')\n      this.outgoingExpTarget.innerHTML = '*Dev Spent (Est): Estimated costs covered for proposals.<br />' +\n        '*Delta (Est): Estimated difference between actual spending and estimated spending for Proposals. <br />&nbsp;<span style=\"font-style: italic;\">(Delta > 0: Unaccounted, Delta < 0: Missing)</span>'\n    } else {\n      this.outgoingExpTarget.classList.add('d-none')\n    }\n    if (!data.treasurySummary && !data.legacySummary) {\n      return\n    }\n    // init treasury summary map\n    if (treasurySummaryMap === null) {\n      treasurySummaryMap = new Map()\n      data.treasurySummary.forEach(treasury => {\n        const tmpTreasury = {}\n        Object.assign(tmpTreasury, treasury)\n        treasurySummaryMap.set(treasury.month, tmpTreasury)\n      })\n    }\n    let treasuryData = this.getTreasuryDataWithType(data)\n    // if not init combined, hanlder data\n    if (!combinedChartData || !combinedChartYearData) {\n      this.handlerDataForCombinedChart(treasuryData)\n    }\n    if (treasuryData === null) {\n      return\n    }\n\n    if (this.settings.interval === 'year') {\n      treasuryData = this.getTreasuryYearlyData(treasuryData)\n      combinedYearData = treasuryData\n      this.yearSelectTitleTarget.classList.add('d-none')\n      this.yearSelectTarget.classList.add('d-none')\n    } else {\n      this.yearSelectTitleTarget.classList.remove('d-none')\n      this.yearSelectTarget.classList.remove('d-none')\n      // init year select options\n      this.initYearSelectOptions(treasuryData)\n    }\n    // filter by year\n    if (this.settings.interval !== 'year' && this.settings.year && this.settings.year.toString() !== '0') {\n      const tmpData = []\n      treasuryData.forEach((treasury) => {\n        const yearArr = treasury.month.split('-')\n        if (yearArr.length < 2) {\n          return\n        }\n        if (this.settings.year.toString() !== yearArr[0].trim()) {\n          return\n        }\n        tmpData.push(treasury)\n      })\n      treasuryData = tmpData\n    }\n\n    if (this.settings.ttype === 'combined') {\n      this.initLegacyBalanceMap(this.settings.interval === 'year' ? this.getTreasuryYearlyData(data.legacySummary) : data.legacySummary, this.settings.interval === 'year' ? combinedYearData : this.settings.tavg ? combinedAvgData : combinedData)\n      this.initTreasuryBalanceMap(this.settings.interval === 'year' ? this.getTreasuryYearlyData(data.treasurySummary) : data.treasurySummary, this.settings.interval === 'year' ? combinedYearData : this.settings.tavg ? combinedAvgData : combinedData)\n      this.initCombinedBalanceMap(treasuryData)\n      this.specialTreasuryTarget.classList.add('d-none')\n      this.treasuryTypeRateTarget.classList.remove('d-none')\n    } else {\n      this.specialTreasuryTarget.classList.remove('d-none')\n      this.treasuryTypeRateTarget.classList.add('d-none')\n    }\n    this.reportTarget.innerHTML = this.createTreasuryLegacyTableContent(treasuryData, data.treasurySummary, data.legacySummary)\n  }\n\n  isCombinedReport () {\n    return this.settings.type === 'treasury' && (this.settings.ttype === 'combined' || this.settings.ttype === '')\n  }\n\n  initYearSelectOptions (treasuryData) {\n    const yearArr = []\n    if (!treasuryData) {\n      return\n    }\n    treasuryData.forEach((treasury) => {\n      const timeArr = treasury.month.split('-')\n      if (timeArr.length > 1) {\n        const year = timeArr[0].trim()\n        if (!yearArr.includes(year)) {\n          yearArr.push(year)\n        }\n      }\n    })\n    let options = `<option name=\"all\" value=\"0\" ${!this.settings.year || this.settings.year === 0 ? 'selected' : ''}>All</option>`\n    yearArr.forEach((year) => {\n      options += `<option name=\"name_${year}\" value=\"${year}\" ${this.settings.year && this.settings.year.toString() === year ? 'selected' : ''}>${year}</option>`\n    })\n    this.yearSelectTarget.innerHTML = options\n  }\n\n  getTreasuryMonthSpentMap (treasurySummary) {\n    const spentMap = new Map()\n    if (!treasurySummary || treasurySummary.length < 1) {\n      return spentMap\n    }\n    treasurySummary.forEach((summary) => {\n      spentMap.set(summary.month, summary.outvalueUSD)\n    })\n    return spentMap\n  }\n\n  getTreasuryValueMapByMonth (treasurySummary) {\n    const summaryMap = new Map()\n    const result = new Map()\n    treasurySummary.forEach((summary) => {\n      summaryMap.set(summary.month, summary.balanceUSD)\n    })\n    const now = new Date()\n    const month = now.getUTCMonth() + 1\n    const year = now.getUTCFullYear()\n    const nowCompare = this.settings.interval === 'year' ? year : year * 12 + month\n    const lowestTime = treasurySummary[treasurySummary.length - 1].month\n    const lowestArr = lowestTime.split('-')\n    if (this.settings.interval !== 'year' && lowestArr.length < 2) {\n      return result\n    }\n    const lowestYear = Number(lowestArr[0])\n    let lowestMonth = 0\n    if (this.settings.interval !== 'year') {\n      // if month < 10\n      let lowestMonthStr = ''\n      if (lowestArr[1].charAt(0) === '0') {\n        lowestMonthStr = lowestArr[1].substring(1, lowestArr[1].length)\n      } else {\n        lowestMonthStr = lowestArr[1]\n      }\n      lowestMonth = Number(lowestMonthStr)\n    }\n\n    const lowestCompare = this.settings.interval === 'year' ? lowestYear : lowestYear * 12 + lowestMonth\n    // browse frome lowest to now\n    let tempBalance = 0\n    for (let i = lowestCompare; i <= nowCompare; i++) {\n      let year = i\n      let month = 0\n      let key = ''\n      if (this.settings.interval !== 'year') {\n        month = i % 12\n        year = (i - month) / 12\n        if (month === 0) {\n          year -= 1\n          month = 12\n        }\n        key = year + '-' + (month < 10 ? '0' + month : month)\n      } else {\n        key = year.toString()\n      }\n      // check key on summary map\n      if (summaryMap.has(key)) {\n        tempBalance = summaryMap.get(key)\n      }\n      result.set(key, tempBalance)\n    }\n    return result\n  }\n\n  getTreasuryDataWithType (data) {\n    if (this.settings.ttype === 'current') {\n      return data.treasurySummary\n    }\n    if (this.settings.ttype === 'legacy') {\n      return data.legacySummary\n    }\n    if (!this.settings.tavg && combinedData !== null) {\n      return combinedData\n    } else if (this.settings.tavg && combinedAvgData !== null) {\n      return combinedAvgData\n    }\n    const _this = this\n    // create time map\n    const timeArr = []\n    // return combined data\n    const combinedDataMap = new Map()\n    if (data.treasurySummary) {\n      data.treasurySummary.forEach((treasury) => {\n        timeArr.push(treasury.month)\n        const tmpTreasury = {}\n        Object.assign(tmpTreasury, treasury)\n        combinedDataMap.set(treasury.month, tmpTreasury)\n      })\n    }\n    if (data.legacySummary) {\n      data.legacySummary.forEach((legacy) => {\n        if (!timeArr.includes(legacy.month)) {\n          timeArr.push(legacy.month)\n          const tmpLegacy = {}\n          Object.assign(tmpLegacy, legacy)\n          combinedDataMap.set(legacy.month, tmpLegacy)\n        } else if (combinedDataMap.has(legacy.month)) {\n          // if has in array (in map)\n          const item = combinedDataMap.get(legacy.month)\n          let treasuryInvalue = item.invalue\n          let legacyOutValue = legacy.outvalue\n          let treasuryInvalueUSD = item.invalueUSD\n          let legacyOutValueUSD = legacy.outvalueUSD\n          if (item.taddValue && item.taddValue > 0) {\n            treasuryInvalue = item.invalue - item.taddValue\n            legacyOutValue = legacy.outvalue - item.taddValue\n            treasuryInvalueUSD = item.invalueUSD - item.taddValueUSD\n            legacyOutValueUSD = legacy.outvalueUSD - item.taddValueUSD\n          }\n          item.invalue = treasuryInvalue + legacy.invalue\n          item.invalueUSD = treasuryInvalueUSD + legacy.invalueUSD\n          item.outvalue += legacyOutValue\n          item.outvalueUSD += legacyOutValueUSD\n          item.total += legacy.total\n          item.totalUSD += legacy.totalUSD\n          item.difference = Math.abs(item.invalue - item.outvalue)\n          item.differenceUSD = (item.difference / 100000000) * item.monthPrice\n          combinedDataMap.set(legacy.month, item)\n        }\n      })\n    }\n\n    timeArr.sort(function (a, b) {\n      const aTimeCompare = _this.getTimeCompare(a)\n      const bTimeCompare = _this.getTimeCompare(b)\n      if (aTimeCompare > bTimeCompare) {\n        return 1\n      }\n      if (aTimeCompare < bTimeCompare) {\n        return -1\n      }\n      return 0\n    })\n\n    const result = []\n    let balanceTotal = 0.0\n    timeArr.forEach((month) => {\n      if (combinedDataMap.has(month)) {\n        const dataItem = combinedDataMap.get(month)\n        balanceTotal += dataItem.invalue - dataItem.outvalue\n        dataItem.balance = balanceTotal\n        dataItem.balanceUSD = (balanceTotal / 100000000) * dataItem.monthPrice\n        result.push(dataItem)\n      }\n    })\n    const mainResult = []\n    for (let i = result.length - 1; i >= 0; i--) {\n      mainResult.push(result[i])\n    }\n    if (this.settings.tavg) {\n      combinedAvgData = mainResult\n    } else {\n      combinedData = mainResult\n    }\n    return mainResult\n  }\n\n  initLegacyBalanceMap (legacyData, combinedData) {\n    if (this.settings.interval !== 'year' && adminBalanceMap != null) {\n      return adminBalanceMap\n    }\n    if (this.settings.interval === 'year' && adminYearlyBalanceMap != null) {\n      return adminYearlyBalanceMap\n    }\n    const tempHasDataBalancemap = new Map()\n    legacyData.forEach(summary => {\n      tempHasDataBalancemap.set(summary.month, summary.balance)\n    })\n    // for each combined data\n    let currentBalance = 0\n    const tempBalanceMap = new Map()\n    for (let i = combinedData.length - 1; i >= 0; i--) {\n      const combined = combinedData[i]\n      if (tempHasDataBalancemap.has(combined.month)) {\n        currentBalance = tempHasDataBalancemap.get(combined.month)\n      }\n      tempBalanceMap.set(combined.month, currentBalance)\n    }\n    if (this.settings.interval === 'year') {\n      adminYearlyBalanceMap = tempBalanceMap\n    } else {\n      adminBalanceMap = tempBalanceMap\n    }\n    return tempBalanceMap\n  }\n\n  initTreasuryBalanceMap (treasuryData, combinedData) {\n    if (this.settings.interval !== 'year' && treasuryBalanceMap != null) {\n      return treasuryBalanceMap\n    }\n    if (this.settings.interval === 'year' && treasuryYearlyBalanceMap != null) {\n      return treasuryYearlyBalanceMap\n    }\n    const tempHasDataBalancemap = new Map()\n    treasuryData.forEach(summary => {\n      tempHasDataBalancemap.set(summary.month, summary.balance)\n    })\n    // for each combined data\n    let currentBalance = 0\n    const tempBalanceMap = new Map()\n    for (let i = combinedData.length - 1; i >= 0; i--) {\n      const combined = combinedData[i]\n      if (tempHasDataBalancemap.has(combined.month)) {\n        currentBalance = tempHasDataBalancemap.get(combined.month)\n      }\n      tempBalanceMap.set(combined.month, currentBalance)\n    }\n    if (this.settings.interval === 'year') {\n      treasuryYearlyBalanceMap = tempBalanceMap\n    } else {\n      treasuryBalanceMap = tempBalanceMap\n    }\n    return tempBalanceMap\n  }\n\n  initCombinedBalanceMap (summaryData) {\n    if (this.settings.interval === 'year' && combinedYearlyBalanceMap != null) {\n      return combinedYearlyBalanceMap\n    }\n    if (this.settings.interval !== 'year' && combineBalanceMap != null) {\n      return combineBalanceMap\n    }\n    const tmpCombineBalanceMap = new Map()\n    summaryData.forEach(summary => {\n      tmpCombineBalanceMap.set(summary.month, summary.balance)\n    })\n\n    if (this.settings.interval === 'year') {\n      combinedYearlyBalanceMap = tmpCombineBalanceMap\n    } else {\n      combineBalanceMap = tmpCombineBalanceMap\n    }\n    return tmpCombineBalanceMap\n  }\n\n  getTimeCompare (timStr) {\n    const aTimeSplit = timStr.split('-')\n    let year = 0\n    let month = 0\n    if (aTimeSplit.length >= 2) {\n      // year\n      year = parseInt(aTimeSplit[0])\n      // if month < 10\n      if (aTimeSplit[1].charAt(0) === '0') {\n        month = parseInt(aTimeSplit[1].substring(1, aTimeSplit[1].length))\n      } else {\n        month = parseInt(aTimeSplit[1])\n      }\n    } else {\n      return 0\n    }\n\n    return year * 12 + month\n  }\n\n  createTreasuryLegacyTableContent (summary, treasurySummary, legacySummary) {\n    const isLegacy = this.settings.ttype === 'legacy'\n    const isCombined = !this.settings.ttype || this.settings.ttype === '' || this.settings.ttype === 'combined'\n    const isDecentralized = this.settings.ttype === 'current'\n    // create row 1\n    let thead = '<col><colgroup span=\"2\"></colgroup><thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      `<th rowspan=\"2\" class=\"va-mid text-center ps-0 month-col cursor-pointer\" data-action=\"click->financereport#sortByCreateDate\"><span class=\"${this.settings.tsort === 'newest' ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype && this.settings.stype !== '' ? 'c-grey-4' : ''} col-sort\"></span></th>`\n    const usdDisp = this.settings.usd === true || this.settings.usd === 'true'\n    let row2 = '<tr class=\"text-secondary finance-table-header\">'\n    thead += '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Rate (USD/DCR)</th>' +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByIncoming\">Received</label>' +\n      `<span data-action=\"click->financereport#sortByIncoming\" class=\"${(this.settings.stype === 'incoming' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'incoming' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByOutgoing\">Spent</label>' +\n      `<span data-action=\"click->financereport#sortByOutgoing\" class=\"${(this.settings.stype === 'outgoing' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'outgoing' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Net</th>' +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortByBalance\">Balance</label>' +\n      `<span data-action=\"click->financereport#sortByBalance\" class=\"${(this.settings.stype === 'balance' && this.settings.order === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.stype !== 'balance' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>'\n    if (isCombined) {\n      thead += '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Dev Spent (Est)</th>' +\n        '<th rowspan=\"2\" class=\"va-mid text-right-i fs-13i px-2 fw-600 treasury-content-cell\">Dev Spent (%)</th>' +\n        '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Delta (Est)</th>'\n      row2 += '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n        '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>'\n    }\n    thead += '</tr>'\n    row2 += '</tr>'\n\n    // add row 2\n    thead += row2\n    thead += '</thead>'\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    // create tbody content\n    let incomeTotal = 0; let outTotal = 0; let estimateOutTotal = 0\n    let incomeUSDTotal = 0; let outUSDTotal = 0; let estimateOutUSDTotal = 0\n    let lastBalance = 0; let lastBalanceUSD = 0\n    let unaccountedTotal = 0; let unaccountedUSDTotal = 0\n    let lastTreasuryItem, lastAdminItem\n    let lastMonth = ''\n    if (summary.length > 0) {\n      lastBalance = summary[0].balance\n      lastBalanceUSD = summary[0].balanceUSD\n      lastMonth = summary[0].month\n    }\n    if (treasurySummary.length > 0) {\n      lastTreasuryItem = treasurySummary[0]\n    }\n    if (legacySummary.length > 0) {\n      lastAdminItem = legacySummary[0]\n    }\n    // display balance in top\n    if (!isCombined) {\n      this.treasuryBalanceDisplayTarget.textContent = humanize.formatToLocalString((lastBalance / 100000000), 2, 2) + ' DCR'\n      this.treasuryBalanceRateTarget.textContent = '~$' + humanize.formatToLocalString(lastBalanceUSD, 2, 2)\n      this.treasuryBalanceCardTarget.classList.remove('col-md-16', 'col-xl-12', 'col-xxl-8')\n      this.treasuryBalanceCardTarget.classList.add('col-sm-12', 'col-lg-8', 'col-xl-6', 'col-xxl-5')\n      this.subTreasuryTitleTarget.textContent = (isLegacy ? 'Admin' : 'Decentralized') + ' Balance'\n    } else {\n      this.treasuryBalanceCardTarget.classList.remove('col-sm-12', 'col-lg-8', 'col-xl-6', 'col-xxl-5')\n      this.treasuryBalanceCardTarget.classList.add('col-md-16', 'col-xl-12', 'col-xxl-8')\n    }\n    const balanceMap = this.settings.interval === 'year' ? combinedYearlyBalanceMap : combineBalanceMap\n    if (isCombined && lastMonth !== '' && balanceMap.has(lastMonth)) {\n      const combined = balanceMap.get(lastMonth)\n      let legacy = 0; let tresury = 0\n      let legacyUSD = 0; let treasuryUSD = 0\n      if (lastAdminItem) {\n        legacy = lastAdminItem.balance\n        legacyUSD = lastAdminItem.balanceUSD\n      }\n      if (lastTreasuryItem) {\n        tresury = lastTreasuryItem.balance\n        treasuryUSD = lastTreasuryItem.balanceUSD\n      }\n      const lastLegacyRate = 100 * legacy / combined\n      const lastTreasuryRate = 100 * tresury / combined\n      this.treasuryLegacyPercentTarget.textContent = `${humanize.formatToLocalString((lastBalance / 100000000), 2, 2)} DCR`\n      this.treasuryLegacyRateTarget.textContent = '~$' + humanize.formatToLocalString((lastBalanceUSD), 2, 2)\n      this.decentralizedDataTarget.textContent = `${humanize.formatToLocalString((tresury / 100000000), 2, 2)} DCR`\n      this.decentralizedDataRateTarget.textContent = '~$' + humanize.formatToLocalString(treasuryUSD, 2, 2)\n      this.decentralizedTitleTarget.textContent = 'Decentralized (' + humanize.formatToLocalString(lastTreasuryRate, 2, 2) + '%)'\n      this.adminDataTarget.textContent = `${humanize.formatToLocalString((legacy / 100000000), 2, 2)} DCR`\n      this.adminDataRateTarget.textContent = '~$' + humanize.formatToLocalString(legacyUSD, 2, 2)\n      this.adminTitleTarget.textContent = 'Admin (' + humanize.formatToLocalString(lastLegacyRate, 2, 2) + '%)'\n    }\n    const treasuryList = this.sortTreasury(summary)\n    const _this = this\n    treasuryList.forEach((item) => {\n      const timeParam = _this.getFullTimeParam(item.month, '-')\n      incomeTotal += item.invalue\n      incomeUSDTotal += item.invalueUSD\n      outTotal += item.outvalue\n      outUSDTotal += item.outvalueUSD\n      estimateOutTotal += item.outEstimate\n      estimateOutUSDTotal += item.outEstimateUsd\n      let taddValue = 0\n      let taddValueUSD = 0\n      if (isLegacy) {\n        if (treasurySummaryMap.has(item.month)) {\n          const existTreasury = treasurySummaryMap.get(item.month)\n          taddValue = existTreasury.taddValue\n          taddValueUSD = existTreasury.taddValueUSD\n        }\n      } else {\n        taddValue = item.taddValue\n        taddValueUSD = item.taddValueUSD\n      }\n      const netNegative = item.outvalue > item.invalue\n      const incomDisplay = item.invalue <= 0 ? '-' : humanize.formatToLocalString((item.invalue / 100000000), 2, 2)\n      const incomUSDDisplay = item.invalue <= 0 ? '' : humanize.formatToLocalString(item.invalueUSD, 2, 2)\n      const outcomeDisplay = item.outvalue <= 0 ? '-' : humanize.formatToLocalString((item.outvalue / 100000000), 2, 2)\n      const outcomeUSDDisplay = item.outvalue <= 0 ? '' : humanize.formatToLocalString(item.outvalueUSD, 2, 2)\n      const differenceDisplay = item.difference <= 0 ? '' : humanize.formatToLocalString((item.difference / 100000000), 2, 2)\n      const differenceUSDDisplay = item.difference <= 0 ? '' : humanize.formatToLocalString(item.differenceUSD, 2, 2)\n      const balanceDisplay = item.balance <= 0 ? '' : humanize.formatToLocalString((item.balance / 100000000), 2, 2)\n      const balanceUSDDisplay = item.balance <= 0 ? '' : humanize.formatToLocalString(item.balanceUSD, 2, 2)\n      let incomeHref = ''\n      let outcomeHref = ''\n      if (!isCombined) {\n        incomeHref = item.invalue > 0 ? item.creditLink : ''\n        outcomeHref = item.outvalue > 0 ? item.debitLink : ''\n      }\n      bodyList += '<tr class=\"odd-even-row\">' +\n        `<td class=\"va-mid text-center fs-13i fw-600\"><a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&' + (this.settings.interval === 'year' ? '' : 'dtype=month&') + '&dtime=' + (timeParam === '' ? item.month : timeParam)}\">${item.month}</a></td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">$${humanize.formatToLocalString(item.monthPrice, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell ${!isLegacy && taddValue > 0 ? 'special-cell' : ''}\">${incomeHref !== '' ? '<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"' + incomeHref + '\">' : ''}${incomDisplay}${incomeHref !== '' ? '</a>' : ''}`\n      if (!isLegacy && taddValue > 0) {\n        bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showIngoingTaddTooltip\" data-show=\"${(taddValue / 1e8) + ';' + taddValueUSD}\"><span class=\"tooltiptext cursor-default click-popup\" style=\"text-align: left; line-height: 1rem;\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n      }\n      bodyList += '</td>' +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${incomUSDDisplay !== '' ? '$' + incomUSDDisplay : '-'}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell ${!isDecentralized && taddValue > 0 ? 'special-cell' : ''}\">${outcomeHref !== '' ? '<a class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\" href=\"' + outcomeHref + '\">' : ''}${outcomeDisplay}${outcomeHref !== '' ? '</a>' : ''}`\n      if (!isDecentralized && taddValue > 0) {\n        bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showOutgoingTaddTooltip\" data-show=\"${(taddValue / 1e8) + ';' + taddValueUSD}\"><span class=\"tooltiptext cursor-default click-popup\" style=\"text-align: left; line-height: 1rem;\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n      }\n      bodyList += '</td>' +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${outcomeUSDDisplay !== '' ? '$' + outcomeUSDDisplay : '-'}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${netNegative ? '-' : ''}${differenceDisplay !== '' ? differenceDisplay : '-'}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${netNegative ? '-' : ''}${differenceUSDDisplay !== '' ? '$' + differenceUSDDisplay : '-'}</td>` +\n        `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${balanceDisplay !== '' ? balanceDisplay : '-'}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${balanceUSDDisplay !== '' ? '$' + balanceUSDDisplay : '-'}</td>`\n      if (isCombined) {\n        // calculate dev spent percent\n        let devSentPercent = 0\n        if (item.outvalue > 0) {\n          devSentPercent = 100 * 1e8 * item.outEstimate / item.outvalue\n        }\n        const unaccounted = item.outvalue - 1e8 * item.outEstimate\n        unaccountedTotal += unaccounted\n        const unaccountedUSD = item.outvalueUSD - item.outEstimateUsd\n        unaccountedUSDTotal += unaccountedUSD\n        bodyList += `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${item.outEstimate === 0.0 ? '-' : humanize.formatToLocalString(item.outEstimate, 2, 2)}</td>` +\n          `<td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${item.outEstimate !== 0.0 ? '$' + humanize.formatToLocalString(item.outEstimateUsd, 2, 2) : '-'}</td>` +\n          `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${devSentPercent === 0.0 ? '-' : humanize.formatToLocalString(devSentPercent, 2, 2) + '%'}</td>` +\n          `<td class=\"va-mid ps-2 text-right-i fs-13i treasury-content-cell\">${unaccounted === 0 ? '-' : (unaccounted < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccounted) / 100000000, 2, 2)}`\n        if (unaccounted !== 0) {\n          bodyList += `<span class=\"dcricon-info cursor-pointer cell-tooltip ms-1\" data-action=\"click->financereport#showUnaccountedTooltip\" data-show=\"${item.outvalue / 100000000 + ';' + item.outEstimate}\"><span class=\"tooltiptext cursor-default move-left-click-popup\"><span class=\"tooltip-text d-flex ai-center\"></span></span></span>`\n        }\n        bodyList += `</td><td class=\"va-mid text-right-i ps-2 fs-13i treasury-content-cell\">${unaccountedUSD === 0 ? '-' : (unaccountedUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedUSD), 2, 2)}</td>`\n      }\n      // Display month price of decred\n      bodyList += '</tr>'\n    })\n    const totalIncomDisplay = humanize.formatToLocalString((incomeTotal / 100000000), 2, 2)\n    const totalIncomUSDDisplay = humanize.formatToLocalString(incomeUSDTotal, 2, 2)\n    const totalOutcomeDisplay = humanize.formatToLocalString((outTotal / 100000000), 2, 2)\n    const totalOutcomeUSDDisplay = humanize.formatToLocalString(outUSDTotal, 2, 2)\n    const totalEstimateOutgoing = humanize.formatToLocalString(estimateOutTotal, 2, 2)\n    const totalEstimateOutUSDgoing = humanize.formatToLocalString(estimateOutUSDTotal, 2, 2)\n    const lastBalanceDisplay = humanize.formatToLocalString((lastBalance / 100000000), 2, 2)\n    const lastBalanceUSDDisplay = humanize.formatToLocalString(lastBalanceUSD, 2, 2)\n    const totalBalanceNegative = lastBalance < 0.0\n    bodyList += '<tr class=\"va-mid finance-table-header finance-table-footer last-row-header\"><td class=\"text-center fw-600 fs-13i border-right-grey\">Total</td>' +\n      '<td class=\"va-mid text-right-i fw-600 fs-13i ps-2 treasury-content-cell\">-</td>' +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalIncomDisplay}</td>` +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${incomeUSDTotal > 0 ? '$' : ''}${totalIncomUSDDisplay}</td>` +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalOutcomeDisplay}</td>` +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${outUSDTotal > 0 ? '$' : ''}${totalOutcomeUSDDisplay}</td>` +\n      '<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">-</td><td class=\"va-mid text-right-i fw-600 fs-13i treasury-content-cell\">-</td>' +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalBalanceNegative ? '-' : ''}${lastBalanceDisplay}</td>` +\n      `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${lastBalanceUSD > 0 ? '$' : ''}${totalBalanceNegative ? '-' : ''}${usdDisp ? '$' : ''}${lastBalanceUSDDisplay}</td>`\n    if (isCombined) {\n      let totalDevSentPercent = 0\n      if (outTotal > 0) {\n        totalDevSentPercent = 100 * 1e8 * estimateOutTotal / outTotal\n      }\n      bodyList += `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${totalEstimateOutgoing}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${estimateOutUSDTotal > 0 ? '$' : ''}${totalEstimateOutUSDgoing}</td>` +\n        `<td class=\"va-mid text-right-i fw-600 fs-13i treasury-content-cell\">${totalDevSentPercent > 0 ? humanize.formatToLocalString(totalDevSentPercent, 2, 2) + '%' : '-'}</td>` +\n        `<td class=\"va-mid ps-2 text-right-i fw-600 fs-13i treasury-content-cell\">${unaccountedTotal === 0 ? '-' : (unaccountedTotal < 0 ? '-' : '') + humanize.formatToLocalString(Math.abs(unaccountedTotal / 100000000), 2, 2)}</td>` +\n        `<td class=\"va-mid text-right-i ps-2 fw-600 fs-13i treasury-content-cell\">${unaccountedUSDTotal === 0 ? '-' : (unaccountedUSDTotal < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(unaccountedUSDTotal), 2, 2)}</td>`\n    }\n    bodyList += '</tr>'\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  getProposalResponse (pResponse) {\n    if (!this.settings.tavg || !pResponse.treasurySummary || pResponse.treasurySummary.length < 1) {\n      return pResponse\n    }\n    const res = {}\n    Object.assign(res, pResponse)\n    const treasurySum = []\n    const treasuryYearlyData = this.getTreasuryYearlyData(pResponse.treasurySummary)\n    const treasuryMonthAvgMap = new Map()\n    const _this = this\n    if (treasuryYearlyData && treasuryYearlyData.length > 0) {\n      treasuryYearlyData.forEach((yearData) => {\n        const numOfMonth = _this.countMonthOnYearData(yearData.month, pResponse.treasurySummary)\n        if (numOfMonth > 0) {\n          treasuryMonthAvgMap.set(yearData.month, { invalue: yearData.invalue / numOfMonth, outvalue: yearData.outvalue / numOfMonth })\n        }\n      })\n      pResponse.treasurySummary.forEach((tSummary) => {\n        const tmpTreasury = {}\n        Object.assign(tmpTreasury, tSummary)\n        if (tmpTreasury.month) {\n          const year = tmpTreasury.month.split('-')[0]\n          if (treasuryMonthAvgMap.has(year)) {\n            tmpTreasury.invalue = treasuryMonthAvgMap.get(year).invalue\n            tmpTreasury.outvalue = treasuryMonthAvgMap.get(year).outvalue\n            tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n            tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n            tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n            tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n            tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n            tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n          }\n        }\n        treasurySum.push(tmpTreasury)\n      })\n    }\n    res.treasurySummary = treasurySum\n    return res\n  }\n\n  countMonthOnYearData (yearStr, treasuryData) {\n    let count = 0\n    treasuryData.forEach((tData) => {\n      if (tData.month.startsWith(yearStr)) {\n        count++\n      }\n    })\n    return count\n  }\n\n  getTreasuryResponse (tResponse) {\n    if (!this.settings.tavg) {\n      return tResponse\n    }\n    const res = {}\n    const treasurySum = []\n    const legacySum = []\n    const treasuryYearlyData = this.getTreasuryYearlyData(tResponse.treasurySummary)\n    const legacyYearlyData = this.getTreasuryYearlyData(tResponse.legacySummary)\n    const treasuryMonthAvgMap = new Map()\n    const legacyMonthAvgMap = new Map()\n    const taddMonthValueMap = new Map()\n    const taddYearValueMap = new Map()\n    const _this = this\n    if (treasuryYearlyData && treasuryYearlyData.length > 0) {\n      treasuryYearlyData.forEach((yearData) => {\n        const numOfMonth = _this.countMonthOnYearData(yearData.month, tResponse.treasurySummary)\n        if (numOfMonth > 0) {\n          treasuryMonthAvgMap.set(yearData.month, { invalue: (yearData.invalue - yearData.taddValue) / numOfMonth, outvalue: yearData.outvalue / numOfMonth })\n          taddYearValueMap.set(yearData.month, yearData.taddValue)\n        }\n      })\n      tResponse.treasurySummary.forEach((tSummary) => {\n        const tmpTreasury = {}\n        Object.assign(tmpTreasury, tSummary)\n        if (tmpTreasury.month) {\n          const year = tmpTreasury.month.split('-')[0]\n          if (treasuryMonthAvgMap.has(year)) {\n            taddMonthValueMap.set(tmpTreasury.month, tmpTreasury.taddValue)\n            tmpTreasury.invalue = treasuryMonthAvgMap.get(year).invalue\n            if (tmpTreasury.taddValue > 0) {\n              tmpTreasury.invalue += tmpTreasury.taddValue\n            }\n            tmpTreasury.outvalue = treasuryMonthAvgMap.get(year).outvalue\n            tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n            tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n            tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n            tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n            tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n            tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n            tmpTreasury.devSpentPercent = tmpTreasury.outvalue > 0 ? 100 * (tmpTreasury.outEstimate / tmpTreasury.outvalue) : 0\n          }\n        }\n        treasurySum.push(tmpTreasury)\n      })\n    }\n\n    if (legacyYearlyData && legacyYearlyData.length > 0) {\n      legacyYearlyData.forEach((yearData) => {\n        const numOfMonth = _this.countMonthOnYearData(yearData.month, tResponse.legacySummary)\n        if (numOfMonth > 0) {\n          let tadd = 0\n          if (taddYearValueMap.has(yearData.month)) {\n            tadd = taddYearValueMap.get(yearData.month) > 0 ? taddYearValueMap.get(yearData.month) : 0\n          }\n          legacyMonthAvgMap.set(yearData.month, { invalue: yearData.invalue / numOfMonth, outvalue: (yearData.outvalue - tadd) / numOfMonth })\n        }\n      })\n      tResponse.legacySummary.forEach((lSummary) => {\n        const tmpTreasury = {}\n        Object.assign(tmpTreasury, lSummary)\n        if (tmpTreasury.month) {\n          const year = tmpTreasury.month.split('-')[0]\n          if (legacyMonthAvgMap.has(year)) {\n            let tadd = 0\n            if (taddMonthValueMap.has(tmpTreasury.month)) {\n              tadd = taddMonthValueMap.get(tmpTreasury.month) > 0 ? taddMonthValueMap.get(tmpTreasury.month) : 0\n            }\n            tmpTreasury.invalue = legacyMonthAvgMap.get(year).invalue\n            tmpTreasury.outvalue = legacyMonthAvgMap.get(year).outvalue + tadd\n            tmpTreasury.invalueUSD = tmpTreasury.monthPrice * (tmpTreasury.invalue / 1e8)\n            tmpTreasury.outvalueUSD = tmpTreasury.monthPrice * (tmpTreasury.outvalue / 1e8)\n            tmpTreasury.difference = Math.abs(tmpTreasury.invalue - tmpTreasury.outvalue)\n            tmpTreasury.differenceUSD = Math.abs(tmpTreasury.invalueUSD - tmpTreasury.outvalueUSD)\n            tmpTreasury.total = tmpTreasury.invalue + tmpTreasury.outvalue\n            tmpTreasury.totalUSD = tmpTreasury.invalueUSD + tmpTreasury.outvalueUSD\n          }\n        }\n        legacySum.push(tmpTreasury)\n      })\n    }\n    res.treasurySummary = treasurySum\n    res.legacySummary = legacySum\n    return res\n  }\n\n  // Calculate and response\n  async calculate () {\n    this.pageLoaderTarget.classList.add('loading')\n    this.setReportTitle()\n    if (this.isTreasuryReport() || this.isDomainType()) {\n      this.intervalTargets.forEach((intervalTarget) => {\n        intervalTarget.classList.remove('active')\n        if (intervalTarget.name === this.settings.interval) {\n          intervalTarget.classList.add('active')\n        }\n      })\n    }\n    if (this.isTreasuryReport()) {\n      this.searchBoxTarget.classList.add('d-none')\n      this.searchBoxTarget.classList.remove('report-search-box')\n      this.colorNoteRowTarget.classList.add('d-none')\n      this.searchInputTarget.value = ''\n      this.settings.search = this.defaultSettings.search\n    } else {\n      if (this.settings.type !== 'domain') {\n        this.settings.chart = this.defaultSettings.chart\n      }\n      this.searchBoxTarget.classList.remove('d-none')\n      this.searchBoxTarget.classList.add('report-search-box')\n      if (((this.settings.pgroup === '' || this.settings.pgroup === 'proposals') && this.settings.type === 'summary') || (this.settings.pgroup === 'authors' && this.settings.ptype === 'list')) {\n        this.searchBoxTarget.classList.add('ms-3')\n      } else {\n        this.searchBoxTarget.classList.remove('ms-3')\n      }\n      this.settings.usd = false\n    }\n\n    if (this.isNullValue(this.settings.type) || this.settings.type === 'proposal' || this.settings.type === 'summary') {\n      this.proposalSelectTypeTarget.classList.remove('d-none')\n      document.getElementById('nameMonthSwitchInput').checked = this.isMonthDisplay\n      if ((this.settings.pgroup === 'proposals' && this.settings.type === 'summary') || (this.settings.pgroup === 'authors' && this.settings.ptype === 'list')) {\n        this.colorLabelTarget.classList.remove('proposal-note-color')\n        this.colorLabelTarget.classList.add('summary-note-color')\n        this.reportDescriptionTarget.classList.remove('d-none')\n      } else if ((this.settings.pgroup === 'proposals' && (this.settings.type === 'proposal' || this.settings.type === '')) || (this.settings.pgroup === 'authors' && this.settings.ptype !== 'list')) {\n        this.colorLabelTarget.classList.remove('summary-note-color')\n        this.colorLabelTarget.classList.add('proposal-note-color')\n        this.reportDescriptionTarget.classList.add('d-none')\n        this.colorDescriptionTarget.textContent = (this.settings.interval === 'year' ? 'Valid payment year (Estimated based on total budget and time period of proposal)' : 'Valid payment month (Estimated based on total budget and time period of proposal)')\n      } else {\n        this.reportDescriptionTarget.classList.remove('d-none')\n      }\n\n      if (this.settings.pgroup === 'domains') {\n        this.domainFutureRowTarget.classList.remove('d-none')\n      } else {\n        this.domainFutureRowTarget.classList.add('d-none')\n      }\n\n      // handler for group type\n      if (this.settings.pgroup === 'proposals') {\n        this.nameMatrixSwitchTarget.classList.remove('d-none')\n        this.colorNoteRowTarget.classList.remove('d-none')\n        if (this.settings.type === 'summary') {\n          this.colorLabelTarget.classList.remove('proposal-note-color')\n          this.colorLabelTarget.classList.add('summary-note-color')\n          this.colorDescriptionTarget.textContent = 'The proposals are still active'\n        } else {\n          this.colorLabelTarget.classList.remove('summary-note-color')\n          this.colorLabelTarget.classList.add('proposal-note-color')\n        }\n      } else if (this.settings.pgroup === 'domains') {\n        this.nameMatrixSwitchTarget.classList.add('d-none')\n        this.colorNoteRowTarget.classList.add('d-none')\n      } else if (this.settings.pgroup === 'authors') {\n        this.colorNoteRowTarget.classList.remove('d-none')\n        this.nameMatrixSwitchTarget.classList.remove('d-none')\n        if (this.settings.ptype === 'list') {\n          this.colorDescriptionTarget.textContent = 'The authors are still active'\n        }\n      }\n    } else {\n      this.nameMatrixSwitchTarget.classList.add('d-none')\n      this.proposalSelectTypeTarget.classList.add('d-none')\n      this.reportDescriptionTarget.classList.remove('d-none')\n      this.domainFutureRowTarget.classList.add('d-none')\n    }\n    // disabled group button for loading\n    this.disabledGroupButton()\n    if (!this.settings.search || this.settings.search === '') {\n      let haveResponseData\n      // if got report. ignore get by api\n      if (this.settings.type === 'treasury') {\n        if (treasuryResponse !== null) {\n          responseData = this.getTreasuryResponse(treasuryResponse)\n          haveResponseData = true\n        }\n      } else if (proposalResponse !== null) {\n        responseData = this.getProposalResponse(proposalResponse)\n        haveResponseData = true\n      }\n\n      if (haveResponseData) {\n        if (this.isDomainType()) {\n          this.handlerDomainYearlyData(responseData)\n        }\n        this.handlerDataForDomainChart(responseData)\n        this.createReportTable()\n        this.enabledGroupButton()\n        this.pageLoaderTarget.classList.remove('loading')\n        return\n      }\n    }\n\n    // const _this = this\n    requestCounter++\n    const thisRequest = requestCounter\n\n    const url = this.getApiUrlByType()\n    let response\n    if (hasCache(url)) {\n      response = responseCache[url]\n    } else {\n      // response = await axios.get(url)\n      response = await requestJSON(url)\n      responseCache[url] = response\n      if (thisRequest !== requestCounter) {\n        // new request was issued while waiting.\n        console.log('Response request different')\n      }\n    }\n    // create table data\n    responseData = response && this.settings.type === 'treasury' ? this.getTreasuryResponse(response) : this.getProposalResponse(response)\n    if (this.isDomainType()) {\n      this.handlerDomainYearlyData(responseData)\n    }\n    // handler for domain chart\n    this.handlerDataForDomainChart(response)\n    if (!this.settings.search || this.settings.search === '') {\n      if (this.settings.type === 'treasury') {\n        treasuryResponse = response\n      } else {\n        proposalResponse = response\n      }\n    }\n    this.createReportTable()\n    this.enabledGroupButton()\n    this.pageLoaderTarget.classList.remove('loading')\n  }\n\n  handlerDomainYearlyData (data) {\n    const treasuryDataMap = this.getTreasuryMonthSpentMap(data.treasurySummary)\n    const handlerData = this.getTreasuryDomainCombined(data, treasuryDataMap)\n    domainYearData = this.getProposalYearlyData(handlerData)\n  }\n\n  handlerDataForCombinedChart (data) {\n    if (combinedChartData !== null && combinedChartYearData !== null) {\n      return\n    }\n    if (!data || data.length === 0) {\n      combinedChartData = {}\n      combinedChartYearData = {}\n      return\n    }\n\n    combinedChartData = this.getDataForCombinedChart(data, 'month')\n    const treasuryYearlyData = this.getTreasuryYearlyData(data)\n    combinedChartYearData = this.getDataForCombinedChart(treasuryYearlyData, 'year')\n  }\n\n  getDataForCombinedChart (data, type) {\n    const timeArr = []\n    const spentArr = []\n    const receivedArr = []\n    const netArr = []\n    for (let i = data.length - 1; i >= 0; i--) {\n      const item = data[i]\n      if (type === 'month') {\n        timeArr.push(item.month + '-01T07:00:00Z')\n      } else {\n        timeArr.push(item.month + '-01-01T07:00:00Z')\n      }\n      spentArr.push(item.outvalue / 100000000)\n      receivedArr.push(item.invalue / 100000000)\n      netArr.push((item.invalue - item.outvalue) / 100000000)\n    }\n    const result = {\n      time: timeArr,\n      received: receivedArr,\n      sent: spentArr,\n      net: netArr\n    }\n    return result\n  }\n\n  handlerDataForDomainChart (data) {\n    // if data is existed, skip\n    if (domainChartData !== null && domainChartYearData !== null) {\n      return\n    }\n    if (!data.report || data.report.length === 0) {\n      domainChartData = null\n      domainChartYearData = null\n      return\n    }\n    // get monthly data\n    domainChartData = this.getDataOfDomainChart(data, 'month')\n    if (domainYearData != null) {\n      domainChartYearData = this.getDataOfDomainChart(domainYearData, 'year')\n    }\n  }\n\n  getDataOfDomainChart (data, type) {\n    // handler for yearlydata\n    const timeArr = []\n    const marketingArr = []\n    const developmentArr = []\n    const virtualNetArr = []\n    for (let i = data.report.length - 1; i >= 0; i--) {\n      const item = data.report[i]\n      if (type === 'month') {\n        timeArr.push(item.month.replace('/', '-') + '-01T07:00:00Z')\n      } else {\n        timeArr.push(item.month + '-01-01T07:00:00Z')\n      }\n      virtualNetArr.push(0)\n      let hasMarketing = false\n      let hasDevelopment = false\n      item.domainData.forEach((domainData) => {\n        if (domainData.domain === 'marketing') {\n          marketingArr.push(domainData.expense)\n          hasMarketing = true\n        } else if (domainData.domain === 'development') {\n          developmentArr.push(domainData.expense)\n          hasDevelopment = true\n        }\n      })\n      if (!hasMarketing) {\n        marketingArr.push(0)\n      }\n      if (!hasDevelopment) {\n        developmentArr.push(0)\n      }\n    }\n    const result = {\n      time: timeArr,\n      marketing: marketingArr,\n      development: developmentArr\n    }\n    return result\n  }\n\n  enabledGroupButton () {\n    // enabled group button after loading\n    this.intervalTargets.forEach((intervalTarget) => {\n      intervalTarget.disabled = false\n    })\n  }\n\n  disabledGroupButton () {\n    // disabled group button after loading\n    this.intervalTargets.forEach((intervalTarget) => {\n      intervalTarget.disabled = true\n    })\n  }\n\n  activeProposalSwitch (e) {\n    const switchCheck = document.getElementById('activeProposalInput').checked\n    this.settings.active = switchCheck\n    this.calculate()\n  }\n\n  nameMatrixSwitchEvent (e) {\n    const switchCheck = document.getElementById('nameMonthSwitchInput').checked\n    this.isMonthDisplay = switchCheck\n    // if is proposals group type\n    if (this.settings.pgroup === 'proposals') {\n      this.settings.type = !switchCheck || switchCheck === 'false' ? 'summary' : 'proposal'\n    } else {\n      this.settings.ptype = !switchCheck || switchCheck === 'false' ? 'list' : 'month'\n    }\n    this.calculate()\n  }\n\n  useMonthAvgSwitch (e) {\n    const switchCheck = document.getElementById('useMonthAvg').checked\n    this.useMonthAvg = switchCheck\n    // if is not Treasury or domain type, do not anything\n    if (!this.isTreasuryReport() && !this.isDomainType()) {\n      return\n    }\n    this.settings.tavg = this.useMonthAvg\n    this.calculate()\n  }\n\n  proposalReportTimeDetail (e) {\n    const idArr = e.target.id.split(';')\n    if (idArr.length !== 2) {\n      return\n    }\n    window.location.href = '/finance-report/detail?type=' + idArr[0] + '&time=' + idArr[1].replace('/', '_')\n  }\n\n  showNoData () {\n    this.noDetailDataTarget.classList.remove('d-none')\n    this.reportAreaTarget.classList.add('d-none')\n  }\n\n  prevReport (e) {\n    const timeIntArr = this.getDetailYearMonth()\n    if (this.isYearDetailReport()) {\n      if (timeIntArr[0] === this.reportMinYear) {\n        return\n      }\n      this.settings.dtime = (timeIntArr[0] - 1).toString()\n    } else if (this.isMonthDetailReport()) {\n      let year = timeIntArr[0]\n      let month = timeIntArr[1]\n      if (year === this.reportMinYear && month === this.reportMinMonth) {\n        return\n      }\n      if (month === 1) {\n        year = year - 1\n        month = 12\n      } else {\n        month = month - 1\n      }\n      this.settings.dtime = year + '_' + month\n    }\n    this.initReportDetailData()\n  }\n\n  nextReport (e) {\n    const timeIntArr = this.getDetailYearMonth()\n    if (this.isYearDetailReport()) {\n      if (timeIntArr[0] === this.reportMaxYear) {\n        return\n      }\n      this.settings.dtime = (timeIntArr[0] + 1).toString()\n    } else if (this.isMonthDetailReport()) {\n      let year = timeIntArr[0]\n      let month = timeIntArr[1]\n      if (year === this.reportMaxYear && month === this.reportMaxMonth) {\n        return\n      }\n      if (month === 12) {\n        year = year + 1\n        month = 1\n      } else {\n        month = month + 1\n      }\n      this.settings.dtime = year + '_' + month\n    }\n    this.initReportDetailData()\n  }\n\n  proposalDetailsListUpdate () {\n    if (this.settings.dtype === 'domain' || this.settings.dtype === 'owner') {\n      this.summaryReportTarget.innerHTML = this.createDetailSummaryTable(responseDetailData.proposalInfos, this.settings.dtype === 'owner', this.settings.dtype === 'domain')\n    } else if (this.settings.dtype === 'proposal') {\n      this.otherProposalSummaryTarget.innerHTML = this.createDetailSummaryTable(responseDetailData.otherProposalInfos, true, false)\n    }\n  }\n\n  yearMonthProposalListUpdate () {\n    this.proposalReportTarget.innerHTML = this.createProposalDetailReport(responseDetailData)\n  }\n\n  setDomainGeneralInfo (data, type) {\n    this.proposalSumCardTarget.classList.remove('d-none')\n    let totalBudget = 0; let totalSpent = 0; let totalRemaining = 0\n    if (data.proposalInfos && data.proposalInfos.length > 0) {\n      data.proposalInfos.forEach((proposal) => {\n        totalBudget += proposal.budget\n        totalSpent += proposal.totalSpent\n        totalRemaining += proposal.totalRemaining > 0 ? proposal.totalRemaining : 0\n      })\n    }\n    this.proposalSpanRowTarget.innerHTML = `<p>Total Budget: <span class=\"fw-600\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</span></p>` +\n      `<p>Total ${type === 'owner' ? 'Received' : 'Spent'} (Estimate):<span class=\"fw-600\">$${humanize.formatToLocalString(totalSpent, 2, 2)}</span></p>` +\n      `<p>Total Remaining (Estimate): <span class=\"fw-600\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</span></p>`\n  }\n\n  createDetailSummaryTable (data, hideAuthor, hideDomain) {\n    if (!data) {\n      return ''\n    }\n    let thead = '<thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"va-mid text-center month-col fs-13i fw-600 proposal-name-col\">Name</th>'\n    if (!hideDomain) {\n      thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Domain</th>'\n    }\n    if (!hideAuthor) {\n      thead += '<th class=\"va-mid text-center fs-13i px-2 fw-600\">Author</th>'\n    }\n    thead += '<th class=\"va-mid text-center px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailByStartDate\">Start Date</label>' +\n      `<span data-action=\"click->financereport#sortDetailByStartDate\" class=\"${(this.settings.dstype === 'startdt' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${(!this.settings.dstype || this.settings.dstype === '' || this.settings.dstype === 'startdt') ? '' : 'c-grey-4'} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-center px-2 fs-13i fw-600\">End Date</th>' +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailByBudget\">Budget</label>' +\n      `<span data-action=\"click->financereport#sortDetailByBudget\" class=\"${(this.settings.dstype === 'budget' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'budget' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>` +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Days</th>' +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Monthly Avg (Est)</th>' +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Spent (Est)</th>' +\n      '<th class=\"va-mid text-right px-2 fs-13i fw-600\">Total Remaining (Est)</th></tr></thead>'\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    let totalBudget = 0\n    let totalAllSpent = 0\n    let totalRemaining = 0\n    // create tbody content\n    const summaryList = this.sortDetailSummary(data)\n    for (let i = 0; i < summaryList.length; i++) {\n      const summary = summaryList[i]\n      const lengthInDays = this.getLengthInDay(summary)\n      let monthlyAverage = summary.budget / lengthInDays\n      if (lengthInDays < 30) {\n        monthlyAverage = summary.budget\n      } else {\n        monthlyAverage = monthlyAverage * 30\n      }\n      totalBudget += summary.budget\n      totalAllSpent += summary.totalSpent\n      totalRemaining += summary.totalRemaining > 0 ? summary.totalRemaining : 0\n      bodyList += `<tr class=\"${summary.totalRemaining === 0.0 ? 'proposal-summary-row' : 'summary-active-row'}\">` +\n        `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=proposal&token=' + summary.token}\" class=\"link-hover-underline fs-13i\" data-turbolinks=\"false\">${summary.name}</a></td>`\n      if (!hideAuthor) {\n        bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=owner&name=' + summary.author}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.author}</a></td>`\n      }\n      if (!hideDomain) {\n        bodyList += `<td class=\"va-mid text-center fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + summary.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${summary.domain.charAt(0).toUpperCase() + summary.domain.slice(1)}</a></td>`\n      }\n      bodyList += `<td class=\"va-mid text-center fs-13i\">${summary.start}</td>` +\n        `<td class=\"va-mid text-center fs-13i\">${summary.end}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(summary.budget, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right fs-13i\">${lengthInDays}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">$${humanize.formatToLocalString(monthlyAverage, 2, 2)}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalSpent > 0 ? '$' + humanize.formatToLocalString(summary.totalSpent, 2, 2) : ''}</td>` +\n        `<td class=\"va-mid text-right px-2 fs-13i\">${summary.totalRemaining > 0 ? '$' + humanize.formatToLocalString(summary.totalRemaining, 2, 2) : ''}</td>` +\n        '</tr>'\n    }\n    const totalColSpan = hideAuthor && hideDomain ? '3' : ((!hideAuthor && hideDomain) || (hideAuthor && !hideDomain) ? '4' : '5')\n    bodyList += '<tr class=\"text-secondary finance-table-header finance-table-footer last-row-header\">' +\n      `<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"${totalColSpan}\">Total</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalBudget, 2, 2)}</td>` +\n      '<td></td><td></td>' +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalAllSpent, 2, 2)}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">$${humanize.formatToLocalString(totalRemaining, 2, 2)}</td>` +\n      '</tr>'\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  getYearDataFromMonthData (data) {\n    const result = []\n    const yearDataMap = new Map()\n    const yearArr = []\n    data.monthData.forEach((item) => {\n      const monthArr = item.month.split('-')\n      if (monthArr.length !== 2) {\n        return\n      }\n      const year = monthArr[0]\n      if (!yearArr.includes(year)) {\n        yearArr.push(year)\n      }\n      if (yearDataMap.has(year)) {\n        yearDataMap.set(year, yearDataMap.get(year) + item.expense)\n      } else {\n        yearDataMap.set(year, item.expense)\n      }\n    })\n\n    yearArr.forEach((year) => {\n      const object = {\n        month: year,\n        expense: yearDataMap.get(year)\n      }\n      result.push(object)\n    })\n    return result\n  }\n\n  createMonthYearTable (data, type) {\n    let handlerData = data.monthData\n    if (type === 'year') {\n      handlerData = this.getYearDataFromMonthData(data)\n    }\n    let breakTable = 7\n    if (type === 'year' || this.settings.dtype === 'proposal') {\n      // No break\n      breakTable = 50\n    }\n    return this.createTableDetailForMonthYear(handlerData, breakTable, type)\n  }\n\n  createTableDetailForMonthYear (handlerDataInput, breakTable, type) {\n    detailMonthlySummary = handlerDataInput\n    let allTable = ''\n    let count = 0\n    let stepNum = 0\n    let handlerData = []\n    handlerData.push(...handlerDataInput)\n    const yearData = []\n    if (this.isAllYearTimeReport(this.settings.dtime)) {\n      this.detailGroupByTarget.classList.remove('d-none')\n      this.detailMonthlyDescTarget.textContent = this.settings.dinterval === 'year' ? 'Years in the future' : 'Months in the future'\n      if (this.settings.dinterval === 'year' && yearList.length > 0) {\n        yearList.forEach((year) => {\n          let spentUSD = 0; let spentDCR = 0; let actualSpentUSD = 0; let actualSpentDCR = 0\n          detailMonthlySummary.forEach((detailMonthly) => {\n            if (detailMonthly.month.startsWith(year + '')) {\n              spentUSD += detailMonthly.expense\n              spentDCR += detailMonthly.expenseDcr\n              actualSpentUSD += detailMonthly.actualExpense\n              actualSpentDCR += detailMonthly.actualExpenseDcr\n            }\n          })\n          yearData.push({\n            month: year + '',\n            expense: spentUSD,\n            expenseDcr: spentDCR,\n            actualExpense: actualSpentUSD,\n            actualExpenseDcr: actualSpentDCR\n          })\n        })\n        handlerData = yearData\n      }\n    } else {\n      this.detailMonthlyDescTarget.textContent = 'Months in the future'\n      this.detailGroupByTarget.classList.add('d-none')\n    }\n    for (let i = 0; i < handlerData.length; i++) {\n      if (count === 0) {\n        allTable += `<table class=\"table monthly v3 border-grey-2 w-auto ${stepNum > 0 ? 'ms-2' : ''}\" style=\"height: 40px;\">` +\n          '<col><colgroup span=\"2\"></colgroup><thead>' +\n          `<tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">${type === 'year' ? 'Year' : 'Month'}</th>` +\n          '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th>'\n        allTable += (this.settings.dtype === 'year' ? '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Actual Spent</th>' : '') + '</tr>'\n        allTable += '<tr class=\"text-secondary finance-table-header\">' +\n          '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th>' +\n          '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>'\n        allTable += this.settings.dtype === 'year' ? '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' : ''\n        allTable += '</tr></thead><tbody>'\n      }\n      const dataMonth = handlerData[i]\n      let isFuture = false\n      const timeYearMonth = this.getYearMonthArray(dataMonth.month, '-')\n      const nowDate = new Date()\n      const year = nowDate.getUTCFullYear()\n      const month = nowDate.getUTCMonth() + 1\n      if (type === 'year') {\n        isFuture = timeYearMonth[0] > year\n      } else if (type === 'month') {\n        if (this.isAllYearTimeReport(this.settings.dtime) && this.settings.dinterval === 'year') {\n          isFuture = timeYearMonth[0] > year\n        } else {\n          const compareDataTime = timeYearMonth[0] * 12 + timeYearMonth[1]\n          const compareNowTime = year * 12 + month\n          isFuture = compareDataTime > compareNowTime\n        }\n      }\n      allTable += `<tr class=\"odd-even-row ${isFuture ? 'future-row-data' : ''}\">`\n      const timeParam = this.getFullTimeParam(dataMonth.month, '-')\n      allTable += `<td class=\"text-left px-2 fs-13i\"><a class=\"link-hover-underline fs-13i fw-600\" style=\"text-align: right; width: 80px;\" data-turbolinks=\"false\" href=\"${'/finance-report?type=bytime&dtype=' + (this.isAllYearTimeReport(this.settings.dtime) && this.settings.dinterval === 'year' ? 'year' : type) + '&dtime=' + (timeParam === '' ? dataMonth.month : timeParam)}\">${dataMonth.month}</a></td>`\n      allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.expense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.expense, 2, 2) : '-'}</td>` +\n        `<td class=\"text-right px-2 fs-13i\">${dataMonth.expenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.expenseDcr / 1e8, 2, 2) : '-'}</td>`\n      if (this.settings.dtype === 'year') {\n        allTable += `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpense !== 0.0 ? '$' + humanize.formatToLocalString(dataMonth.actualExpense, 2, 2) : '-'}</td>` +\n          `<td class=\"text-right px-2 fs-13i\">${dataMonth.actualExpenseDcr !== 0.0 ? humanize.formatToLocalString(dataMonth.actualExpenseDcr / 1e8, 2, 2) : '-'}</td>`\n      }\n      allTable += '</tr>'\n      if (count === breakTable) {\n        allTable += '</tbody>'\n        allTable += '</table>'\n        count = 0\n      } else {\n        count++\n      }\n      stepNum++\n    }\n    if (count !== breakTable) {\n      allTable += '</tbody>'\n      allTable += '</table>'\n    }\n    return allTable\n  }\n\n  // Calculate and response\n  async yearMonthCalculate () {\n    this.pageLoaderTarget.classList.add('loading')\n    // set up navigative to main report and up level of time\n    // this.toUpReportTarget.href = '/finance-report'\n    const url = `/api/finance-report/detail?type=${this.settings.dtype}&time=${this.settings.dtime}`\n    let response\n    requestDetailCounter++\n    const thisRequest = requestDetailCounter\n    if (hasDetailCache(url)) {\n      response = responseDetailCache[url]\n    } else {\n      // response = await axios.get(url)\n      response = await requestJSON(url)\n      responseDetailCache[url] = response\n      if (thisRequest !== requestDetailCounter) {\n        // new request was issued while waiting.\n        console.log('Response request different')\n      }\n    }\n\n    if (!response) {\n      this.proposalAreaTarget.classList.add('d-none')\n      this.pageLoaderTarget.classList.remove('loading')\n      return\n    }\n    responseDetailData = response\n    this.proposalReportTarget.innerHTML = this.createProposalDetailReport(response)\n    if (response.proposalTotal > 0) {\n      this.proposalTopSummaryTarget.classList.remove('d-none')\n      this.handlerSummaryArea(response)\n      this.createDomainsSummaryTable(response)\n    } else {\n      this.proposalTopSummaryTarget.classList.add('d-none')\n    }\n    yearList = response.yearList\n    this.createYearMonthTopSummary(response)\n    // create month data list if type is year\n    if (this.settings.dtype === 'year') {\n      if (response.monthlyResultData && response.monthlyResultData.length > 0) {\n        this.monthlyAreaTarget.classList.remove('d-none')\n        this.monthlyReportTarget.innerHTML = this.createTableDetailForMonthYear(response.monthlyResultData, 12, 'month')\n      } else {\n        this.monthlyAreaTarget.classList.add('d-none')\n      }\n    } else {\n      this.monthlyAreaTarget.classList.add('d-none')\n    }\n    this.pageLoaderTarget.classList.remove('loading')\n  }\n\n  handlerSummaryArea (data) {\n    this.expendiduteValueTarget.textContent = '$' + humanize.formatToLocalString(data.proposalTotal, 2, 2)\n    // display proposal spent value\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return\n    }\n    let totalSpent = 0\n    let totalSpentDCR = 0\n    for (let i = 0; i < data.reportDetail.length; i++) {\n      const report = data.reportDetail[i]\n      totalSpent += report.spentEst > 0 ? report.spentEst : 0\n      totalSpentDCR += report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n    }\n    if (totalSpent > 0) {\n      this.proposalSpentAreaTarget.classList.remove('d-none')\n      this.proposalSpentTarget.textContent = '$' + humanize.formatToLocalString(totalSpent, 2, 2) + ` (${humanize.formatToLocalString(totalSpentDCR, 2, 2)} DCR)`\n    } else {\n      this.proposalSpentAreaTarget.classList.add('d-none')\n    }\n    // display treasury spent value\n    if (totalSpent > 0) {\n      this.treasurySpentAreaTarget.classList.remove('d-none')\n      this.unaccountedValueAreaTarget.classList.remove('d-none')\n      const combinedUSD = data.treasurySummary.outvalueUSD + data.legacySummary.outvalueUSD\n      const combinedDCR = data.treasurySummary.outvalue + data.legacySummary.outvalue\n      this.treasurySpentTarget.textContent = '$' + humanize.formatToLocalString(combinedUSD, 2, 2) + ` (${humanize.formatToLocalString(combinedDCR / 100000000, 2, 2)} DCR)`\n      const deltaUSD = combinedUSD - totalSpent\n      const deltaDCR = combinedDCR / 100000000 - totalSpentDCR\n      this.unaccountedValueTarget.textContent = (deltaUSD < 0 ? '-' : '') + '$' + humanize.formatToLocalString(Math.abs(deltaUSD), 2, 2) + ` (${humanize.formatToLocalString(deltaDCR, 2, 2)} DCR, ${deltaUSD < 0 ? 'Missing' : 'Unaccounted'})`\n    } else {\n      this.treasurySpentAreaTarget.classList.add('d-none')\n      this.unaccountedValueAreaTarget.classList.add('d-none')\n    }\n  }\n\n  createDomainDetailReport (data) {\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return ''\n    }\n    const domainMap = new Map()\n    data.reportDetail.forEach((detail) => {\n      if (domainMap.has(detail.domain)) {\n        domainMap.set(detail.domain, domainMap.get(detail.domain) + detail.expense)\n      } else {\n        domainMap.set(detail.domain, detail.expense)\n      }\n    })\n    let tbody = '<tbody>###</tbody>'\n\n    let bodyList = ''\n    for (let i = 0; i < data.domainList.length; i++) {\n      const domain = data.domainList[i]\n      bodyList += '<tr>'\n      // td domain name\n      bodyList += `<td class=\"text-left fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${domain.charAt(0).toUpperCase() + domain.slice(1)}</a></td>`\n      bodyList += `<td class=\"text-right fs-13i\">$${humanize.formatToLocalString(domainMap.get(domain), 2, 2)}</td>`\n      bodyList += '</tr>'\n    }\n    tbody = tbody.replace('###', bodyList)\n    return tbody\n  }\n\n  createYearMonthTopSummary (data) {\n    if (data.treasurySummary.invalue <= 0 && data.treasurySummary.outvalue <= 0 && data.legacySummary.invalue <= 0 && data.legacySummary.outvalue <= 0) {\n      this.totalSpanRowTarget.classList.add('d-none')\n      return\n    }\n    this.totalSpanRowTarget.classList.remove('d-none')\n    let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n      '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Treasury Type</th>' +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Value</th></tr>' +\n      '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n    innerHtml += data.treasurySummary.invalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n      `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.invalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.treasurySummary.outvalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Decentralized Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.treasurySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n      `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.treasurySummary.outvalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.legacySummary.invalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Income</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.invalue / 100000000), 3, 3) + ' DCR'}</td>` +\n      `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.invalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += data.legacySummary.outvalue > 0\n      ? `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\">Admin Outgoing</td><td class=\"text-right px-2 fs-13i\">${humanize.formatToLocalString((data.legacySummary.outvalue / 100000000), 3, 3) + ' DCR'}</td>` +\n      `<td class=\"text-right px-2 fs-13i\">$${humanize.formatToLocalString((data.legacySummary.outvalueUSD), 2, 2)}</td></tr>`\n      : ''\n    innerHtml += '</tbody>'\n    this.yearMonthInfoTableTarget.innerHTML = innerHtml\n  }\n\n  createDomainsSummaryTable (data) {\n    const domainDataMap = this.getDomainsSummaryData(data)\n    let innerHtml = '<col><colgroup span=\"2\"></colgroup>' +\n      '<thead><tr class=\"text-secondary finance-table-header\"><th rowspan=\"2\" class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>' +\n      '<th colspan=\"2\" scope=\"colgroup\" class=\"va-mid text-center-i fs-13i fw-600\">Spent (Est)</th></tr>' +\n      '<tr class=\"text-secondary finance-table-header\"><th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">DCR</th>' +\n      '<th scope=\"col\" class=\"va-mid text-center-i fs-13i fw-600\">USD</th></tr></thead><tbody>'\n    let totalDCR = 0; let totalUSD = 0\n    let hasData = false\n    domainDataMap.forEach((val, key) => {\n      if (val.valueDCR !== 0 || val.valueUSD !== 0) {\n        const valueDCR = val.valueDCR\n        totalDCR += val.valueDCR\n        const valueUSD = val.valueUSD\n        totalUSD += val.valueUSD\n        hasData = true\n        innerHtml += `<tr class=\"odd-even-row\"><td class=\"text-left px-2 fs-13i\"><a href=\"/finance-report/detail?type=domain&name=${key}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${key.charAt(0).toUpperCase() + key.slice(1)}</a></td>` +\n          `<td class=\"text-right px-2 fs-13i\">${valueDCR > 0 ? humanize.formatToLocalString(valueDCR, 2, 2) : '-'}</td>` +\n          `<td class=\"text-right px-2 fs-13i\">$${valueUSD > 0 ? humanize.formatToLocalString(valueUSD, 2, 2) : '-'}</td></tr>`\n      }\n    })\n    if (!hasData) {\n      this.domainSummaryAreaTarget.classList.add('d-none')\n      return\n    }\n    this.domainSummaryAreaTarget.classList.remove('d-none')\n    innerHtml += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"va-mid text-center fw-600 fs-13i\">Total</td>' +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalDCR > 0 ? humanize.formatToLocalString(totalDCR, 2, 2) : '-'}</td>` +\n      `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalUSD > 0 ? '$' + humanize.formatToLocalString(totalUSD, 2, 2) : '-'}</td>` +\n      '</tr>'\n    innerHtml += '</tbody>'\n    this.domainSummaryTableTarget.innerHTML = innerHtml\n  }\n\n  getDomainsSummaryData (data) {\n    const result = new Map()\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      return result\n    }\n    for (let i = 0; i < data.reportDetail.length; i++) {\n      const report = data.reportDetail[i]\n      const domain = report.domain\n      if (result.has(domain)) {\n        const detailData = {}\n        const existData = result.get(domain)\n        detailData.valueDCR = existData.valueDCR + (report.totalSpentDcr > 0 ? report.totalSpentDcr : 0)\n        detailData.valueUSD = existData.valueUSD + (report.spentEst > 0 ? report.spentEst : 0)\n        result.set(domain, detailData)\n      } else {\n        const detailData = {}\n        detailData.valueDCR = report.totalSpentDcr > 0 ? report.totalSpentDcr : 0\n        detailData.valueUSD = report.spentEst > 0 ? report.spentEst : 0\n        result.set(domain, detailData)\n      }\n    }\n    return result\n  }\n\n  sortDetailByPName () {\n    this.proposalDetailSort('pname')\n  }\n\n  sortDetailByAuthor () {\n    this.proposalDetailSort('author')\n  }\n\n  sortDetailByDomain () {\n    this.proposalDetailSort('domain')\n  }\n\n  sortDetailByStartDate () {\n    this.proposalDetailSort('startdt')\n  }\n\n  sortDetailByEndDate () {\n    this.proposalDetailSort('enddt')\n  }\n\n  sortDetailBySpent () {\n    this.proposalDetailSort('spent')\n  }\n\n  sortDetailByBudget () {\n    this.proposalDetailSort('budget')\n  }\n\n  sortDetailByDays () {\n    this.proposalDetailSort('days')\n  }\n\n  sortDetailByAvg () {\n    this.proposalDetailSort('avg')\n  }\n\n  sortDetailByRemaining () {\n    this.proposalDetailSort('remaining')\n  }\n\n  proposalDetailSort (type) {\n    this.settings.dstype = type\n    this.settings.dorder = this.settings.dorder === 'esc' ? 'desc' : 'esc'\n    if (this.settings.dtype === 'year' || this.settings.dtype === 'month') {\n      this.yearMonthProposalListUpdate()\n    } else {\n      this.proposalDetailsListUpdate()\n    }\n  }\n\n  createProposalDetailReport (data) {\n    if (!data.reportDetail || data.reportDetail.length === 0) {\n      this.proposalAreaTarget.classList.add('d-none')\n      return ''\n    }\n\n    if (!this.settings.dstype || this.settings.dstype === '') {\n      this.settings.dstype = 'pname'\n    }\n\n    this.proposalAreaTarget.classList.remove('d-none')\n    const yearTotalData = []\n    let thead = '<thead>' +\n      '<tr class=\"text-secondary finance-table-header\">' +\n      '<th class=\"va-mid text-center px-2 fs-13i fw-600\">Proposal Name</th>' +\n      '<th class=\"va-mid text-center px-2 fs-13i fw-600\">Domain</th>'\n    if (this.isAllYearTimeReport(this.settings.dtime)) {\n      if (data.reportDetail[0].spentYears.length > 0) {\n        for (let i = 0; i < data.reportDetail[0].spentYears.length; i++) {\n          const spentYear = data.reportDetail[0].spentYears[i]\n          thead += `<th class=\"va-mid text-center px-2 fs-13i fw-600\">${spentYear.year}</th>`\n          yearTotalData.push(0)\n        }\n      }\n      thead += '<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailBySpent\">Total (Est)</label>' +\n        `<span data-action=\"click->financereport#sortDetailBySpent\" class=\"${(this.settings.dstype === 'spent' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    } else {\n      thead += `<th class=\"va-mid text-right px-2 fs-13i fw-600\"><label class=\"cursor-pointer\" data-action=\"click->financereport#sortDetailBySpent\">This ${this.settings.dtype === 'year' ? 'Year' : 'Month'} (Est)</label>` +\n        `<span data-action=\"click->financereport#sortDetailBySpent\" class=\"${(this.settings.dstype === 'spent' && this.settings.dorder === 'desc') ? 'dcricon-arrow-down' : 'dcricon-arrow-up'} ${this.settings.dstype !== 'spent' ? 'c-grey-4' : ''} col-sort ms-1\"></span></th>`\n    }\n    thead += '</tr></thead>'\n\n    let tbody = '<tbody>###</tbody>'\n    let bodyList = ''\n    let totalExpense = 0\n    // sort by startdt\n    const summaryList = this.sortDetailSummary(data.reportDetail)\n    const _this = this\n    for (let i = 0; i < summaryList.length; i++) {\n      bodyList += '<tr class=\"odd-even-row\">'\n      const report = summaryList[i]\n      // add proposal name\n      bodyList += '<td class=\"va-mid px-2 text-left fs-13i\">' +\n        `<a href=\"${'/finance-report/detail?type=proposal&token=' + report.token}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i d-block\">${report.name}</a></td>` +\n        `<td class=\"va-mid text-center px-2 fs-13i\"><a href=\"${'/finance-report/detail?type=domain&name=' + report.domain}\" data-turbolinks=\"false\" class=\"link-hover-underline fs-13i\">${report.domain.charAt(0).toUpperCase() + report.domain.slice(1)}</a></td>`\n      if (_this.isAllYearTimeReport(_this.settings.dtime)) {\n        if (report.spentYears.length > 0) {\n          let countHasData = 0\n          report.spentYears.forEach((yData) => {\n            if (yData.spend > 0) {\n              countHasData++\n            }\n          })\n          for (let i = 0; i < report.spentYears.length; i++) {\n            const yearData = report.spentYears[i]\n            let spend = yearData.spend\n            if (countHasData === 1 && spend > 0) {\n              spend = report.totalSpent\n            }\n            bodyList += '<td class=\"va-mid text-right px-2 fs-13i\">' +\n              `${spend > 0 ? '$' + humanize.formatToLocalString(spend, 2, 2) : ''}</td>`\n            yearTotalData[i] += spend\n          }\n        }\n      }\n      bodyList += '<td class=\"va-mid text-right px-2 fs-13i fw-600\">' +\n          `${report.totalSpent > 0 ? '$' + humanize.formatToLocalString(report.totalSpent, 2, 2) : ''}</td>`\n      totalExpense += report.totalSpent\n    }\n\n    bodyList += '<tr class=\"finance-table-header finance-table-footer last-row-header\">' +\n      '<td class=\"va-mid text-center fw-600 fs-13i\" colspan=\"2\">Total</td>'\n    if (_this.isAllYearTimeReport(_this.settings.dtime)) {\n      for (let i = 0; i < data.reportDetail[0].spentYears.length; i++) {\n        bodyList += `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${yearTotalData[i] > 0 ? '$' + humanize.formatToLocalString(yearTotalData[i], 2, 2) : ''}</td>`\n      }\n    }\n    bodyList += `<td class=\"va-mid text-right px-2 fw-600 fs-13i\">${totalExpense > 0 ? '$' + humanize.formatToLocalString(totalExpense, 2, 2) : ''}</td></tr>`\n    tbody = tbody.replace('###', bodyList)\n    return thead + tbody\n  }\n\n  sortDetailSummary (summary) {\n    if (!summary || summary.length === 0) {\n      return\n    }\n    const _this = this\n    if (this.settings.dstype === 'domain') {\n      return this.sortDetailSummaryByDomain(summary)\n    }\n    summary.sort(function (a, b) {\n      let aData = null\n      let bData = null\n      let alength\n      let blength\n      switch (_this.settings.dstype) {\n        case 'pname':\n          aData = a.name\n          bData = b.name\n          break\n        case 'author':\n          aData = a.author\n          bData = b.author\n          break\n        case 'budget':\n          aData = a.budget\n          bData = b.budget\n          break\n        case 'spent':\n          aData = a.totalSpent\n          bData = b.totalSpent\n          break\n        case 'remaining':\n          aData = a.totalRemaining\n          bData = b.totalRemaining\n          break\n        case 'days':\n          aData = _this.getLengthInDay(a)\n          bData = _this.getLengthInDay(b)\n          break\n        case 'avg':\n          alength = _this.getLengthInDay(a)\n          blength = _this.getLengthInDay(b)\n          aData = (a.budget / alength) * 30\n          bData = (b.budget / blength) * 30\n          break\n        case 'enddt':\n          aData = Date.parse(a.end)\n          bData = Date.parse(b.end)\n          break\n        default:\n          aData = Date.parse(a.start)\n          bData = Date.parse(b.start)\n          break\n      }\n\n      if (aData > bData) {\n        return _this.settings.dorder === 'desc' ? -1 : 1\n      }\n      if (aData < bData) {\n        return _this.settings.dorder === 'desc' ? 1 : -1\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  sortDetailSummaryByDomain (summary) {\n    if (!summary) {\n      return\n    }\n    const _this = this\n    summary.sort(function (a, b) {\n      if (a.domain > b.domain) {\n        return _this.settings.dorder === 'desc' ? -1 : 1\n      } else if (a.domain < b.domain) {\n        return _this.settings.dorder === 'desc' ? 1 : -1\n      } else {\n        if (a.name > b.name) {\n          return _this.settings.dorder === 'desc' ? -1 : 1\n        }\n        if (a.name < b.name) {\n          return _this.settings.dorder === 'desc' ? 1 : -1\n        }\n      }\n      return 0\n    })\n\n    return summary\n  }\n\n  getDetailYearMonthArray (timeInput, splitChar) {\n    const timeArr = timeInput.split(splitChar)\n    const result = []\n    if (timeArr.length < 2) {\n      result.push(parseInt(timeArr[0]))\n      return result\n    }\n    result.push(parseInt(timeArr[0]))\n    result.push(parseInt(timeArr[1]))\n    return result\n  }\n\n  isYearDetailReport () {\n    return this.settings.dtype === '' || this.settings.dtype === 'year'\n  }\n\n  isMonthDetailReport () {\n    return this.settings.dtype === 'month'\n  }\n\n  getDetailYearMonth () {\n    if (!this.settings.dtime || this.settings.dtime === '') {\n      return []\n    }\n    const timeArr = this.settings.dtime.toString().split('_')\n    const res = []\n    res.push(Number(timeArr[0]))\n    if (timeArr.length > 1) {\n      res.push(Number(timeArr[1]))\n    }\n    return res\n  }\n\n  isNullValue (value) {\n    return value === null || value === undefined || (typeof value === 'string' && value === '')\n  }\n\n  get chartType () {\n    if (this.isDomainType()) {\n      return 'amountflow'\n    }\n    return this.optionsTarget.value\n  }\n\n  get activeZoomDuration () {\n    return this.activeZoomKey ? Zoom.mapValue(this.activeZoomKey) : false\n  }\n\n  get activeZoomKey () {\n    const activeButtons = this.zoomTarget.getElementsByClassName('btn-selected')\n    if (activeButtons.length === 0) return null\n    return activeButtons[0].name\n  }\n\n  get chartDuration () {\n    return this.xRange[1] - this.xRange[0]\n  }\n\n  get activeBin () {\n    return this.cintervalTarget.getElementsByClassName('btn-selected')[0].name\n  }\n\n  get flow () {\n    let base10 = 0\n    this.flowBoxes.forEach((box) => {\n      if (box.checked) base10 += parseInt(box.value)\n    })\n    return base10\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['footerBar']\n  }\n\n  connect () {\n    this.isHomepage = this.data.get('isHomepage') === 'true'\n    if (this.isHomepage) {\n      this.footerBarTarget.classList.add('d-none')\n    } else {\n      this.footerBarTarget.classList.remove('d-none')\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport { assign, map, merge } from 'lodash-es'\nimport { animationFrame } from '../helpers/animation_helper.js'\nimport { isEqual } from '../helpers/chart_helper.js'\nimport { requestJSON } from '../helpers/http.js'\nimport humanize from '../helpers/humanize_helper.js'\nimport { getDefault } from '../helpers/module_helper.js'\nimport TurboQuery from '../helpers/turbolinks_helper.js'\nimport Zoom from '../helpers/zoom_helper.js'\nimport globalEventBus from '../services/event_bus_service.js'\nimport { darkEnabled } from '../services/theme_service.js'\n\nlet selectedChart\nlet selectedType\nlet Dygraph // lazy loaded on connect\n\nconst aDay = 86400 * 1000 // in milliseconds\nconst aMonth = 30 // in days\nconst atomsToDCR = 1e-8\nconst windowScales = ['ticket-price', 'pow-difficulty', 'missed-votes']\nconst rangeUse = ['hashrate', 'pow-difficulty']\nconst hybridScales = ['privacy-participation']\nconst lineScales = ['ticket-price', 'privacy-participation']\nconst modeScales = ['ticket-price']\nconst multiYAxisChart = ['ticket-price', 'coin-supply', 'privacy-participation']\nconst decredChartOpts = ['ticket-price', 'ticket-pool-size', 'ticket-pool-value', 'stake-participation',\n  'privacy-participation', 'missed-votes', 'block-size', 'blockchain-size', 'tx-count', 'duration-btw-blocks',\n  'pow-difficulty', 'chainwork', 'hashrate', 'coin-supply', 'fees']\nconst mutilchainChartOpts = ['block-size', 'blockchain-size', 'tx-count', 'tx-per-block', 'address-number',\n  'pow-difficulty', 'hashrate', 'mined-blocks', 'mempool-size', 'mempool-txs', 'coin-supply', 'fees']\nlet globalChainType = ''\n// index 0 represents y1 and 1 represents y2 axes.\nconst yValueRanges = { 'ticket-price': [1] }\nconst hashrateUnits = ['Th/s', 'Ph/s', 'Eh/s']\nlet ticketPoolSizeTarget, premine, stakeValHeight, stakeShare\nlet baseSubsidy, subsidyInterval, subsidyExponent, windowSize, avgBlockTime\nlet rawCoinSupply, rawPoolValue\nlet yFormatter, legendEntry, legendMarker, legendElement\n\nfunction hashrateTimePlotter (e) {\n  hashrateLegendPlotter(e, 1693612800000)\n}\n\nfunction hashrateBlockPlotter (e) {\n  hashrateLegendPlotter(e, 794429)\n}\n\nfunction makePt (x, y) { return { x, y } }\n\n// Legend plotter processing for hashrate chart for blake3 algorithm transition\nfunction hashrateLegendPlotter (e, midGapValue) {\n  Dygraph.Plotters.fillPlotter(e)\n  Dygraph.Plotters.linePlotter(e)\n  const area = e.plotArea\n  const ctx = e.drawingContext\n  const mg = e.dygraph.toDomCoords(midGapValue, 0)\n  const midGap = makePt(mg[0], mg[1])\n  const fontSize = 13\n  const dark = darkEnabled()\n  ctx.textAlign = 'left'\n  ctx.textBaseline = 'top'\n  ctx.font = `${fontSize}px arial`\n  ctx.lineWidth = 1\n  ctx.strokeStyle = dark ? '#ffffff' : '#23562f'\n  const boxColor = dark ? '#1e2b39' : '#ffffff'\n\n  const line1 = 'Milestone'\n  const line2 = '- Transition of the'\n  const line3 = 'algorithm to BLAKE3'\n  const line4 = '- Change block reward'\n  const line5 = 'subsidy split to 1/89/10'\n  let boxW = 0\n  const txts = [line1, line2, line3, line4, line5]\n  txts.forEach(txt => {\n    const w = ctx.measureText(txt).width\n    if (w > boxW) boxW = w\n  })\n  let rowHeight = fontSize * 1.5\n  const rowPad = (rowHeight - fontSize) / 3\n  const boxPad = rowHeight / 5\n  let y = fontSize\n  y += area.h / 4\n  // Label the gap size.\n  rowHeight -= 2 // just looks better\n  ctx.fillStyle = boxColor\n  const rect = makePt(midGap.x + boxPad, y - boxPad)\n  const dims = makePt(boxW + boxPad * 3, rowHeight * 5 + boxPad * 2)\n  ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.fillStyle = dark ? '#ffffff' : '#23562f'\n  const centerX = midGap.x + boxW / 2 + 8\n  const write = s => {\n    const cornerX = centerX - (ctx.measureText(s).width / 2)\n    ctx.fillText(s, cornerX + rowPad, y + rowPad)\n    y += rowHeight\n  }\n\n  ctx.save()\n  ctx.font = `bold ${fontSize + 2}px arial`\n  write(line1)\n  ctx.restore()\n  write(line2)\n  write(line3)\n  write(line4)\n  write(line5)\n  // Draw a line from the box to the gap\n  drawLine(ctx,\n    makePt(midGap.x + boxW / 2, y),\n    makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction drawLine (ctx, start, end) {\n  ctx.beginPath()\n  ctx.moveTo(start.x, start.y)\n  ctx.lineTo(end.x, end.y)\n  ctx.stroke()\n}\n\nfunction useRange (chart) {\n  return rangeUse.indexOf(chart) > -1\n}\n\nfunction usesWindowUnits (chart) {\n  return windowScales.indexOf(chart) > -1\n}\n\nfunction usesHybridUnits (chart) {\n  return hybridScales.indexOf(chart) > -1\n}\n\nfunction isScaleDisabled (chart) {\n  return lineScales.indexOf(chart) > -1\n}\n\nfunction isModeEnabled (chart) {\n  return modeScales.includes(chart)\n}\n\nfunction hasMultipleVisibility (chart) {\n  return multiYAxisChart.indexOf(chart) > -1\n}\n\nfunction intComma (amount) {\n  if (!amount) return ''\n  return amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\n}\n\nfunction zipWindowHvYZ (ys, zs, winSize, yMult, zMult, offset) {\n  yMult = yMult || 1\n  zMult = zMult || 1\n  offset = offset || 0\n  return ys.map((y, i) => {\n    return [i * winSize + offset, y * yMult, zs[i] * zMult]\n  })\n}\n\nfunction zipWindowTvYZ (times, ys, zs, yMult, zMult) {\n  yMult = yMult || 1\n  zMult = zMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult, zs[i] * zMult]\n  })\n}\n\nfunction ticketPriceFunc (data) {\n  if (data.t) return zipWindowTvYZ(data.t, data.price, data.count, atomsToDCR)\n  return zipWindowHvYZ(data.price, data.count, data.window, atomsToDCR)\n}\n\nfunction poolSizeFunc (data) {\n  let out = []\n  if (data.axis === 'height') {\n    if (data.bin === 'block') out = zipIvY(data.count)\n    else out = zipHvY(data.h, data.count)\n  } else {\n    out = zipTvY(data.t, data.count)\n  }\n  out.forEach(pt => pt.push(null))\n  if (out.length) {\n    out[0][2] = ticketPoolSizeTarget\n    out[out.length - 1][2] = ticketPoolSizeTarget\n  }\n  return out\n}\n\nfunction percentStakedFunc (data) {\n  rawCoinSupply = data.circulation.map(v => v * atomsToDCR)\n  rawPoolValue = data.poolval.map(v => v * atomsToDCR)\n  const ys = rawPoolValue.map((v, i) => [v / rawCoinSupply[i] * 100])\n  if (data.axis === 'height') {\n    if (data.bin === 'block') return zipIvY(ys)\n    return zipHvY(data.h, ys)\n  }\n  return zipTvY(data.t, ys)\n}\n\nfunction anonymitySetFunc (data) {\n  let d\n  let start = -1\n  let end = 0\n  if (data.axis === 'height') {\n    if (data.bin === 'block') {\n      d = data.anonymitySet.map((y, i) => {\n        if (start === -1 && y > 0) {\n          start = i\n        }\n        end = i\n        return [i, y * atomsToDCR]\n      })\n    } else {\n      d = data.anonymitySet.map((y, i) => {\n        if (start === -1 && y > 0) {\n          start = i\n        }\n        end = data.h[i]\n        return [data.h[i], y * atomsToDCR]\n      })\n    }\n  } else {\n    d = data.t.map((t, i) => {\n      if (start === -1 && data.anonymitySet[i] > 0) {\n        start = t * 1000\n      }\n      end = t * 1000\n      return [new Date(t * 1000), data.anonymitySet[i] * atomsToDCR]\n    })\n  }\n  return { data: d, limits: [start, end] }\n}\n\nfunction axesToRestoreYRange (chartName, origYRange, newYRange) {\n  const axesIndexes = yValueRanges[chartName]\n  if (!Array.isArray(origYRange) || !Array.isArray(newYRange) ||\n    origYRange.length !== newYRange.length || !axesIndexes) return\n\n  let axes\n  for (let i = 0; i < axesIndexes.length; i++) {\n    const index = axesIndexes[i]\n    if (newYRange.length <= index) continue\n    if (!isEqual(origYRange[index], newYRange[index])) {\n      if (!axes) axes = {}\n      if (index === 0) {\n        axes = Object.assign(axes, { y1: { valueRange: origYRange[index] } })\n      } else if (index === 1) {\n        axes = Object.assign(axes, { y2: { valueRange: origYRange[index] } })\n      }\n    }\n  }\n  return axes\n}\n\nfunction withBigUnits (v, units) {\n  const i = v === 0 ? 0 : Math.floor(Math.log10(v) / 3)\n  return (v / Math.pow(1000, i)).toFixed(3) + ' ' + units[i]\n}\n\nfunction blockReward (height) {\n  if (height >= stakeValHeight) return baseSubsidy * Math.pow(subsidyExponent, Math.floor(height / subsidyInterval))\n  if (height > 1) return baseSubsidy * (1 - stakeShare)\n  if (height === 1) return premine\n  return 0\n}\n\nfunction addLegendEntryFmt (div, series, fmt) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${fmt(series.y)}`))\n}\n\nfunction addLegendEntry (div, series) {\n  div.appendChild(legendEntry(`${series.dashHTML} ${series.labelHTML}: ${series.yHTML}`))\n}\n\nfunction defaultYFormatter (div, data) {\n  addLegendEntry(div, data.series[0])\n}\n\nfunction customYFormatter (fmt) {\n  return (div, data) => addLegendEntryFmt(div, data.series[0], fmt)\n}\n\nfunction legendFormatter (data) {\n  if (data.x == null) return legendElement.classList.add('d-hide')\n  legendElement.classList.remove('d-hide')\n  const div = document.createElement('div')\n  let xHTML = data.xHTML\n  if (data.dygraph.getLabels()[0] === 'Date') {\n    xHTML = humanize.date(data.x, false, selectedChart !== 'ticket-price')\n  }\n  div.appendChild(legendEntry(`${data.dygraph.getLabels()[0]}: ${xHTML}`))\n  yFormatter(div, data, data.dygraph.getOption('legendIndex'))\n  dompurify.sanitize(div, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n  return div.innerHTML\n}\n\nfunction nightModeOptions (nightModeOn) {\n  if (nightModeOn) {\n    return {\n      rangeSelectorAlpha: 0.3,\n      gridLineColor: '#596D81',\n      colors: ['#2DD8A3', '#255595', '#FFC84E']\n    }\n  }\n  return {\n    rangeSelectorAlpha: 0.4,\n    gridLineColor: '#C4CBD2',\n    colors: ['#255594', '#006600', '#FF0090']\n  }\n}\n\nfunction zipWindowHvY (ys, winSize, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 0\n  return ys.map((y, i) => {\n    return [i * winSize + offset, y * yMult]\n  })\n}\n\nfunction zipWindowTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipTvY (times, ys, yMult) {\n  yMult = yMult || 1\n  return times.map((t, i) => {\n    return [new Date(t * 1000), ys[i] * yMult]\n  })\n}\n\nfunction zipIvY (ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1 // TODO: check for why offset is set to a default value of 1 when genesis block has a height of 0\n  return ys.map((y, i) => {\n    return [offset + i, y * yMult]\n  })\n}\n\nfunction zipHvY (heights, ys, yMult, offset) {\n  yMult = yMult || 1\n  offset = offset || 1\n  return ys.map((y, i) => {\n    return [offset + heights[i], y * yMult]\n  })\n}\n\nfunction zip2D (data, ys, yMult, offset) {\n  yMult = yMult || 1\n  if (data.axis === 'height') {\n    if (data.bin === 'block') return zipIvY(ys, yMult)\n    return zipHvY(data.h, ys, yMult, offset)\n  }\n  return zipTvY(data.t, ys, yMult)\n}\n\nfunction powDiffFunc (data) {\n  if (data.t) return zipWindowTvY(data.t, data.diff)\n  return zipWindowHvY(data.diff, data.window, 1, data.offset)\n}\n\nfunction circulationFunc (chartData) {\n  let yMax = 0\n  let h = -1\n  const addDough = (newHeight) => {\n    while (h < newHeight) {\n      h++\n      yMax += blockReward(h) * atomsToDCR\n    }\n  }\n  const heights = chartData.h\n  const times = chartData.t\n  const supplies = chartData.supply\n  const isHeightAxis = chartData.axis === 'height'\n  let xFunc, hFunc\n  if (chartData.bin === 'day') {\n    xFunc = isHeightAxis ? i => heights[i] : i => new Date(times[i] * 1000)\n    hFunc = i => heights[i]\n  } else {\n    xFunc = isHeightAxis ? i => i : i => new Date(times[i] * 1000)\n    hFunc = i => i\n  }\n\n  const inflation = []\n  const data = map(supplies, (n, i) => {\n    const height = hFunc(i)\n    addDough(height)\n    inflation.push(yMax)\n    return [xFunc(i), supplies[i] * atomsToDCR, null, 0]\n  })\n\n  const dailyBlocks = aDay / avgBlockTime\n  const lastPt = data[data.length - 1]\n  let x = lastPt[0]\n  // Set yMax to the start at last actual supply for the prediction line.\n  yMax = lastPt[1]\n  if (!isHeightAxis) x = x.getTime()\n  xFunc = isHeightAxis ? xx => xx : xx => { return new Date(xx) }\n  const xIncrement = isHeightAxis ? dailyBlocks : aDay\n  const projection = 6 * aMonth\n  data.push([xFunc(x), null, yMax, null])\n  for (let i = 1; i <= projection; i++) {\n    addDough(h + dailyBlocks)\n    x += xIncrement\n    data.push([xFunc(x), null, yMax, null])\n  }\n  return { data, inflation }\n}\n\nfunction mapDygraphOptions (data, labelsVal, isDrawPoint, yLabel, labelsMG, labelsMG2) {\n  return merge({\n    file: data,\n    labels: labelsVal,\n    drawPoints: isDrawPoint,\n    ylabel: yLabel,\n    labelsKMB: labelsMG2 && labelsMG ? false : labelsMG,\n    labelsKMG2: labelsMG2 && labelsMG ? false : labelsMG2\n  }, nightModeOptions(darkEnabled()))\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'chartWrapper',\n      'labels',\n      'chartsView',\n      'chartSelect',\n      'zoomSelector',\n      'zoomOption',\n      'scaleType',\n      'axisOption',\n      'binSelector',\n      'scaleSelector',\n      'binSize',\n      'legendEntry',\n      'legendMarker',\n      'modeSelector',\n      'modeOption',\n      'rawDataURL',\n      'chartName',\n      'chartTitleName',\n      'chainTypeSelected',\n      'vSelectorItem',\n      'vSelector',\n      'ticketsPurchase',\n      'anonymitySet',\n      'ticketsPrice',\n      'rangeSelector',\n      'rangeOption'\n    ]\n  }\n\n  async connect () {\n    this.isHomepage = !window.location.href.includes('/charts')\n    this.query = new TurboQuery()\n    premine = parseInt(this.data.get('premine'))\n    stakeValHeight = parseInt(this.data.get('svh'))\n    stakeShare = parseInt(this.data.get('pos')) / 10.0\n    baseSubsidy = parseInt(this.data.get('bs'))\n    subsidyInterval = parseInt(this.data.get('sri'))\n    subsidyExponent = parseFloat(this.data.get('mulSubsidy')) / parseFloat(this.data.get('divSubsidy'))\n    this.chainType = 'dcr'\n    avgBlockTime = parseInt(this.data.get(this.chainType + 'BlockTime')) * 1000\n    globalChainType = this.chainType\n    legendElement = this.labelsTarget\n\n    // Prepare the legend element generators.\n    const lm = this.legendMarkerTarget\n    lm.remove()\n    lm.removeAttribute('data-charts-target')\n    legendMarker = () => {\n      const node = document.createElement('div')\n      node.appendChild(lm.cloneNode())\n      return node.innerHTML\n    }\n    const le = this.legendEntryTarget\n    le.remove()\n    le.removeAttribute('data-charts-target')\n    legendEntry = s => {\n      const node = le.cloneNode()\n      node.innerHTML = s\n      return node\n    }\n\n    this.settings = TurboQuery.nullTemplate(['chart', 'zoom', 'scale', 'bin', 'axis', 'visibility', 'home', 'range'])\n    if (!this.isHomepage) {\n      this.query.update(this.settings)\n    }\n    this.settings.chart = this.settings.chart || 'ticket-price'\n    this.zoomButtons = this.zoomSelectorTarget.querySelectorAll('button')\n    this.binButtons = this.binSelectorTarget.querySelectorAll('button')\n    this.scaleButtons = this.scaleSelectorTarget.querySelectorAll('button')\n    this.modeButtons = this.modeSelectorTarget.querySelectorAll('button')\n    this.zoomCallback = this._zoomCallback.bind(this)\n    this.drawCallback = this._drawCallback.bind(this)\n    this.limits = null\n    this.lastZoom = null\n    this.visibility = []\n    this.setRange(this.settings.range ? this.settings.range : 'after')\n    if (this.settings.visibility) {\n      this.settings.visibility.split('-', -1).forEach(s => {\n        this.visibility.push(s === 'true')\n      })\n    }\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    this.drawInitialGraph()\n    this.processNightMode = (params) => {\n      this.chartsView.updateOptions(\n        nightModeOptions(params.nightMode)\n      )\n    }\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n  }\n\n  setRange (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.rangeOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    selectedChart = null // Force fetch\n    this.selectChart()\n  }\n\n  setVisibility (e) {\n    switch (this.chartSelectTarget.value) {\n      case 'ticket-price':\n        if (!this.ticketsPriceTarget.checked && !this.ticketsPurchaseTarget.checked) {\n          e.currentTarget.checked = true\n          return\n        }\n        this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n        break\n      case 'coin-supply':\n        this.visibility = [true, true, this.anonymitySetTarget.checked]\n        break\n      case 'privacy-participation':\n        this.visibility = [true, this.anonymitySetTarget.checked]\n        break\n      default:\n        return\n    }\n    this.chartsView.updateOptions({ visibility: this.visibility })\n    this.settings.visibility = this.visibility.join('-')\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  disconnect () {\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    if (this.chartsView !== undefined) {\n      this.chartsView.destroy()\n    }\n    selectedChart = null\n  }\n\n  drawInitialGraph () {\n    const options = {\n      axes: { y: { axisLabelWidth: 70 }, y2: { axisLabelWidth: 65 } },\n      labels: ['Date', 'Ticket Price', 'Tickets Bought'],\n      digitsAfterDecimal: 8,\n      showRangeSelector: true,\n      rangeSelectorPlotFillColor: '#C4CBD2',\n      rangeSelectorAlpha: 0.4,\n      rangeSelectorHeight: 40,\n      drawPoints: true,\n      pointSize: 0.25,\n      legend: 'always',\n      labelsSeparateLines: true,\n      labelsDiv: legendElement,\n      legendFormatter: legendFormatter,\n      highlightCircleSize: 4,\n      ylabel: 'Ticket Price',\n      y2label: 'Tickets Bought',\n      labelsUTC: true,\n      axisLineColor: '#C4CBD2'\n    }\n\n    this.chartsView = new Dygraph(\n      this.chartsViewTarget,\n      [[1, 1, 5], [2, 5, 11]],\n      options\n    )\n    this.chartSelectTarget.value = this.settings.chart\n\n    if (this.settings.axis) this.setAxis(this.settings.axis) // set first\n    if (this.settings.scale === 'log') this.setSelectScale(this.settings.scale)\n    if (this.settings.zoom) this.setSelectZoom(this.settings.zoom)\n    this.setSelectBin(this.settings.bin ? this.settings.bin : 'day')\n    this.setSelectMode(this.settings.mode ? this.settings.mode : 'smooth')\n\n    const ogLegendGenerator = Dygraph.Plugins.Legend.generateLegendHTML\n    Dygraph.Plugins.Legend.generateLegendHTML = (g, x, pts, w, row) => {\n      g.updateOptions({ legendIndex: row }, true)\n      return ogLegendGenerator(g, x, pts, w, row)\n    }\n    this.selectChart()\n  }\n\n  plotGraph (chartName, data) {\n    let d = []\n    const gOptions = {\n      zoomCallback: null,\n      drawCallback: null,\n      logscale: this.settings.scale === 'log',\n      valueRange: [null, null],\n      visibility: null,\n      y2label: null,\n      y3label: null,\n      stepPlot: this.settings.mode === 'stepped',\n      axes: {},\n      series: null,\n      inflation: null,\n      plotter: null\n    }\n    rawPoolValue = []\n    rawCoinSupply = []\n    yFormatter = defaultYFormatter\n    const xlabel = data.t ? 'Date' : 'Block Height'\n    const _this = this\n    const isHeightBlock = data.axis === 'height' && data.bin === 'block'\n    switch (chartName) {\n      case 'ticket-price': // price graph\n        d = ticketPriceFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Price', 'Tickets Bought'], true,\n          'Price (DCR)', true, false))\n        gOptions.y2label = 'Tickets Bought'\n        gOptions.series = { 'Tickets Bought': { axis: 'y2' } }\n        this.visibility = [this.ticketsPriceTarget.checked, this.ticketsPurchaseTarget.checked]\n        gOptions.visibility = this.visibility\n        gOptions.axes.y2 = {\n          valueRange: [0, windowSize * 20 * 8],\n          axisLabelFormatter: (y) => Math.round(y)\n        }\n        yFormatter = customYFormatter(y => y.toFixed(8) + ' DCR')\n        break\n      case 'ticket-pool-size': // pool size graph\n        d = poolSizeFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Size', 'Network Target'],\n          false, 'Ticket Pool Size', true, false))\n        gOptions.series = {\n          'Network Target': {\n            strokePattern: [5, 3],\n            connectSeparatedPoints: true,\n            strokeWidth: 2,\n            color: '#C4CBD2'\n          }\n        }\n        yFormatter = customYFormatter(y => `${intComma(y)} tickets &nbsp;&nbsp; (network target ${intComma(ticketPoolSizeTarget)})`)\n        break\n      case 'stake-participation':\n        d = percentStakedFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Stake Participation'], true,\n          'Stake Participation (%)', true, false))\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => y.toFixed(4) + '%')\n          div.appendChild(legendEntry(`${legendMarker()} Ticket Pool Value: ${intComma(rawPoolValue[i])} DCR`))\n          div.appendChild(legendEntry(`${legendMarker()} Coin Supply: ${intComma(rawCoinSupply[i])} DCR`))\n        }\n        break\n      case 'privacy-participation': { // anonymity set graph\n        d = anonymitySetFunc(data)\n        this.customLimits = d.limits\n        const label = 'Mix Rate'\n        assign(gOptions, mapDygraphOptions(d.data, [xlabel, label], false, `${label} (DCR)`, true, false))\n\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => (y > 0 ? intComma(y) : '0') + ' DCR')\n        }\n        break\n      }\n      case 'ticket-pool-value': // pool value graph\n        d = zip2D(data, data.poolval, atomsToDCR)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Ticket Pool Value'], true,\n          'Ticket Pool Value (DCR)', true, false))\n        yFormatter = customYFormatter(y => intComma(y) + ' DCR')\n        break\n      case 'block-size': // block size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Block Size'], false, 'Block Size', true, false))\n        break\n      case 'blockchain-size': // blockchain size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Blockchain Size'], true,\n          'Blockchain Size', false, true))\n        break\n      case 'tx-count': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Transactions'], false,\n          'Total Transactions', false, false))\n        break\n      case 'tx-per-block': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Avg TXs Per Block'], false,\n          'Avg TXs Per Block', false, false))\n        break\n      case 'mined-blocks': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mined Blocks'], false,\n          'Mined Blocks', false, false))\n        break\n      case 'mempool-txs': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Transactions'], false,\n          'Mempool Transactions', false, false))\n        break\n      case 'mempool-size': // blockchain size graph\n        d = zip2D(data, data.size)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Mempool Size'], true,\n          'Mempool Size', false, true))\n        break\n      case 'address-number': // tx per block graph\n        d = zip2D(data, data.count)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Active Addresses'], false,\n          'Active Addresses', false, false))\n        break\n      case 'pow-difficulty': // difficulty graph\n        d = powDiffFunc(data)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Difficulty'], true, 'Difficulty', true, false))\n        if (_this.settings.range !== 'before' && _this.settings.range !== 'after') {\n          gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n        }\n        break\n      case 'coin-supply': // supply graph\n        if (this.settings.bin === 'day') {\n          d = zip2D(data, data.supply)\n          assign(gOptions, mapDygraphOptions(d, [xlabel, 'Coins Supply'], false,\n            'Coins Supply', false, false))\n          break\n        }\n        d = circulationFunc(data)\n        assign(gOptions, mapDygraphOptions(d.data, [xlabel, 'Coin Supply', 'Inflation Limit', 'Mix Rate'],\n          true, 'Coin Supply (' + this.chainType.toUpperCase() + ')', true, false))\n        gOptions.y2label = 'Inflation Limit'\n        gOptions.y3label = 'Mix Rate'\n        gOptions.series = { 'Inflation Limit': { axis: 'y2' }, 'Mix Rate': { axis: 'y3' } }\n        this.visibility = [true, true, this.anonymitySetTarget.checked]\n        gOptions.visibility = this.visibility\n        gOptions.series = {\n          'Inflation Limit': {\n            strokePattern: [5, 5],\n            color: '#C4CBD2',\n            strokeWidth: 1.5\n          },\n          'Mix Rate': {\n            color: '#2dd8a3'\n          }\n        }\n        gOptions.inflation = d.inflation\n        yFormatter = (div, data, i) => {\n          addLegendEntryFmt(div, data.series[0], y => intComma(y) + ' ' + globalChainType.toUpperCase())\n          let change = 0\n          if (i < d.inflation.length) {\n            if (selectedType === 'dcr') {\n              const supply = data.series[0].y\n              if (this.anonymitySetTarget.checked) {\n                const mixed = data.series[2].y\n                const mixedPercentage = ((mixed / supply) * 100).toFixed(2)\n                div.appendChild(legendEntry(`${legendMarker()} Mixed: ${intComma(mixed)} DCR (${mixedPercentage}%)`))\n              }\n            }\n            const predicted = d.inflation[i]\n            const unminted = predicted - data.series[0].y\n            change = ((unminted / predicted) * 100).toFixed(2)\n            div.appendChild(legendEntry(`${legendMarker()} Unminted: ${intComma(unminted)} ` + globalChainType.toUpperCase() + ` (${change}%)`))\n          }\n        }\n        break\n\n      case 'fees': // block fee graph\n        d = zip2D(data, data.fees, atomsToDCR)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Total Fee'], false, 'Total Fee (' + globalChainType.toUpperCase() + ')', true, false))\n        yFormatter = customYFormatter(y => y.toFixed(8) + ' ' + globalChainType.toUpperCase())\n        break\n\n      case 'duration-btw-blocks': // Duration between blocks graph\n        d = zip2D(data, data.duration, 1, 1)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Duration Between Blocks'], false,\n          'Duration Between Blocks (seconds)', false, false))\n        break\n\n      case 'hashrate': // Total chainwork over time\n        d = this.chainType === 'dcr' ? (isHeightBlock ? zipHvY(data.h, data.rate, 1e-3, data.offset) : zip2D(data, data.rate, 1e-3, data.offset)) : zip2D(data, data.rate, 1e-3, data.offset)\n        assign(gOptions, mapDygraphOptions(d, [xlabel, 'Network Hashrate'],\n          false, 'Network Hashrate (petahash/s)', true, false))\n        yFormatter = customYFormatter(y => withBigUnits(y * 1e3, hashrateUnits))\n        if (_this.settings.range !== 'before' && _this.settings.range !== 'after') {\n          gOptions.plotter = _this.settings.axis === 'height' ? hashrateBlockPlotter : hashrateTimePlotter\n        }\n        break\n    }\n\n    const baseURL = `${this.query.url.protocol}//${this.query.url.host}`\n    this.rawDataURLTarget.textContent = this.chainType === 'dcr'\n      ? `${baseURL}/api/chart/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n      : `${baseURL}/api/chainchart/${this.chainType}/${chartName}?axis=${this.settings.axis}&bin=${this.settings.bin}`\n\n    this.chartsView.plotter_.clear()\n    this.chartsView.updateOptions(gOptions, false)\n    if (yValueRanges[chartName]) this.supportedYRange = this.chartsView.yAxisRanges()\n    this.validateZoom()\n  }\n\n  updateVSelector (chart) {\n    if (!chart) {\n      chart = this.chartSelectTarget.value\n    }\n    const that = this\n    let showWrapper = false\n    this.vSelectorItemTargets.forEach(el => {\n      let show = el.dataset.charts.indexOf(chart) > -1\n      if (el.dataset.bin && el.dataset.bin.indexOf(that.selectedBin()) === -1) {\n        show = false\n      }\n      if (show) {\n        el.classList.remove('d-hide')\n        showWrapper = true\n      } else {\n        el.classList.add('d-hide')\n      }\n    })\n    if (showWrapper) {\n      this.vSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.vSelectorTarget.classList.add('d-hide')\n    }\n    this.setVisibilityFromSettings()\n  }\n\n  async chainTypeChange (e) {\n    if (e.target.name === this.chainType) {\n      return\n    }\n    const target = e.srcElement || e.target\n    this.chainTypeSelectedTargets.forEach((cTypeTarget) => {\n      cTypeTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    let reinitChartType = false\n    reinitChartType = this.chainType === 'dcr' || e.target.name === 'dcr'\n    this.chainType = e.target.name\n    // reinit\n    if (reinitChartType) {\n      this.chartSelectTarget.innerHTML = this.chainType === 'dcr' ? this.getDecredChartOptsHtml() : this.getMutilchainChartOptsHtml()\n    }\n    // determind select chart\n    this.settings.chart = this.getSelectedChart()\n    this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n    this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n    this.customLimits = null\n    this.chartWrapperTarget.classList.add('loading')\n    if (isScaleDisabled(this.settings.chart)) {\n      this.scaleSelectorTarget.classList.add('d-hide')\n    } else {\n      this.scaleSelectorTarget.classList.remove('d-hide')\n    }\n    if (isModeEnabled(this.settings.chart)) {\n      this.modeSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.modeSelectorTarget.classList.add('d-hide')\n    }\n    if (hasMultipleVisibility(this.settings.chart)) {\n      this.vSelectorTarget.classList.remove('d-hide')\n      this.updateVSelector(this.settings.chart)\n    } else {\n      this.vSelectorTarget.classList.add('d-hide')\n    }\n    if (useRange(this.settings.chart) && this.chainType === 'dcr') {\n      this.settings.range = this.selectedRange()\n      this.rangeSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.settings.range = ''\n      this.rangeSelectorTarget.classList.add('d-hide')\n    }\n    if (selectedType !== this.chainType || (selectedType === this.chainType && selectedChart !== this.settings.chart) ||\n    this.settings.bin !== this.selectedBin() || this.settings.axis !== this.selectedAxis()) {\n      let url = this.chainType === 'dcr' ? '/api/chart/' + this.settings.chart : `/api/chainchart/${this.chainType}/` + this.settings.chart\n      if (usesWindowUnits(this.settings.chart) && !usesHybridUnits(this.settings.chart)) {\n        this.binSelectorTarget.classList.add('d-hide')\n        this.settings.bin = 'window'\n      } else {\n        this.settings.bin = this.selectedBin()\n        if (this.chainType === 'dcr') {\n          this.binSelectorTarget.classList.remove('d-hide')\n          this.binButtons.forEach(btn => {\n            if (btn.name !== 'window') return\n            if (usesHybridUnits(this.settings.chart)) {\n              btn.classList.remove('d-hide')\n            } else {\n              btn.classList.add('d-hide')\n              if (this.settings.bin === 'window') {\n                this.settings.bin = 'day'\n                this.setActiveToggleBtn(this.settings.bin, this.binButtons)\n              }\n            }\n          })\n        } else {\n          this.binSelectorTarget.classList.add('d-hide')\n        }\n      }\n      url += `?bin=${this.settings.bin}`\n      if (this.settings.range !== '') {\n        url += `&range=${this.settings.range}`\n      }\n      this.settings.axis = this.selectedAxis()\n      if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n      url += `&axis=${this.settings.axis}`\n      this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n      const chartResponse = await requestJSON(url)\n      selectedType = this.chainType\n      selectedChart = this.settings.chart\n      this.plotGraph(this.settings.chart, chartResponse)\n    } else {\n      this.chartWrapperTarget.classList.remove('loading')\n    }\n  }\n\n  getSelectedChart () {\n    let hasChart = false\n    const chartOpts = this.chainType === 'dcr' ? decredChartOpts : mutilchainChartOpts\n    chartOpts.forEach((opt) => {\n      if (this.settings.chart === opt) {\n        hasChart = true\n      }\n    })\n    if (hasChart) {\n      this.chartSelectTarget.value = this.settings.chart\n      return this.settings.chart\n    }\n    return chartOpts[0]\n  }\n\n  getDecredChartOptsHtml () {\n    return '<optgroup label=\"Staking\">' +\n    '<option value=\"ticket-price\">Ticket Price</option>' +\n    '<option value=\"ticket-pool-size\">Ticket Pool Size</option>' +\n    '<option value=\"ticket-pool-value\">Ticket Pool Value</option>' +\n    '<option value=\"stake-participation\">Stake Participation</option>' +\n    '<option value=\"privacy-participation\">Privacy Participation</option>' +\n    '<option value=\"missed-votes\">Missed Votes</option>' +\n    '</optgroup>' +\n    '<optgroup label=\"Chain\">' +\n    '<option value=\"block-size\">Block Size</option>' +\n    '<option value=\"blockchain-size\">Blockchain Size</option>' +\n    '<option value=\"tx-count\">Transaction Count</option>' +\n    '<option value=\"duration-btw-blocks\">Duration Between Blocks</option>' +\n    '</optgroup>' +\n    '<optgroup label=\"Mining\">' +\n    '<option value=\"pow-difficulty\">PoW Difficulty</option>' +\n    '<option value=\"chainwork\">Total Work</option>' +\n    '<option value=\"hashrate\">Hashrate</option>' +\n    '</optgroup>' +\n    '<optgroup label=\"Distribution\">' +\n    '<option value=\"coin-supply\">Coin Supply</option>' +\n    '<option value=\"fees\">Fees</option>' +\n    '</optgroup>'\n  }\n\n  getMutilchainChartOptsHtml () {\n    return '<optgroup label=\"Chain\">' +\n    '<option value=\"block-size\">Block Size</option>' +\n    '<option value=\"blockchain-size\">Blockchain Size</option>' +\n    '<option value=\"tx-count\">Transaction Count</option>' +\n    '<option value=\"tx-per-block\">TXs Per Blocks</option>' +\n    '<option value=\"address-number\">Active Addresses</option>' +\n    '</optgroup>' +\n    '<optgroup label=\"Mining\">' +\n    '<option value=\"pow-difficulty\">Difficulty</option>' +\n    '<option value=\"hashrate\">Hashrate</option>' +\n    '<option value=\"mined-blocks\">Mined Blocks</option>' +\n    '<option value=\"mempool-size\">Mempool Size</option>' +\n    '<option value=\"mempool-txs\">Mempool TXs</option>' +\n    '</optgroup>' +\n    '<optgroup label=\"Distribution\">' +\n    '<option value=\"coin-supply\">Coin Supply</option>' +\n    '<option value=\"fees\">Fees</option>' +\n    '</optgroup>'\n  }\n\n  async selectChart () {\n    const selection = this.settings.chart = this.chartSelectTarget.value\n    this.chartNameTarget.textContent = this.getChartName(this.chartSelectTarget.value)\n    this.chartTitleNameTarget.textContent = this.chartNameTarget.textContent\n    this.customLimits = null\n    this.chartWrapperTarget.classList.add('loading')\n    if (isScaleDisabled(selection)) {\n      this.scaleSelectorTarget.classList.add('d-hide')\n      this.vSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.scaleSelectorTarget.classList.remove('d-hide')\n    }\n    if (isModeEnabled(selection)) {\n      this.modeSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.modeSelectorTarget.classList.add('d-hide')\n    }\n    if (hasMultipleVisibility(selection)) {\n      this.vSelectorTarget.classList.remove('d-hide')\n      this.updateVSelector(selection)\n    } else {\n      this.vSelectorTarget.classList.add('d-hide')\n    }\n    if (useRange(selection) && this.chainType === 'dcr') {\n      this.settings.range = this.selectedRange()\n      this.rangeSelectorTarget.classList.remove('d-hide')\n    } else {\n      this.settings.range = ''\n      this.rangeSelectorTarget.classList.add('d-hide')\n    }\n    if (selectedChart !== selection || this.settings.bin !== this.selectedBin() ||\n      this.settings.axis !== this.selectedAxis() || (this.chainType === 'dcr' && this.settings.range !== this.selectedRange())) {\n      let url = this.chainType === 'dcr' ? '/api/chart/' + selection : `/api/chainchart/${this.chainType}/` + selection\n      if (usesWindowUnits(selection) && !usesHybridUnits(selection)) {\n        this.binSelectorTarget.classList.add('d-hide')\n        this.settings.bin = 'window'\n      } else {\n        this.settings.bin = this.selectedBin()\n        if (this.chainType === 'dcr') {\n          this.binSelectorTarget.classList.remove('d-hide')\n          this.binButtons.forEach(btn => {\n            if (btn.name !== 'window') return\n            if (usesHybridUnits(selection)) {\n              btn.classList.remove('d-hide')\n            } else {\n              btn.classList.add('d-hide')\n              if (this.settings.bin === 'window') {\n                this.settings.bin = 'day'\n                this.setActiveToggleBtn(this.settings.bin, this.binButtons)\n              }\n            }\n          })\n        } else {\n          this.binSelectorTarget.classList.add('d-hide')\n        }\n      }\n      url += `?bin=${this.settings.bin}`\n      if (this.chainType === 'dcr' && this.settings.range !== '') {\n        url += `&range=${this.settings.range}`\n      }\n      this.settings.axis = this.selectedAxis()\n      if (!this.settings.axis) this.settings.axis = 'time' // Set the default.\n      url += `&axis=${this.settings.axis}`\n      this.setActiveOptionBtn(this.settings.axis, this.axisOptionTargets)\n      const chartResponse = await requestJSON(url)\n      selectedChart = selection\n      selectedType = this.chainType\n      this.plotGraph(selection, chartResponse)\n    } else {\n      this.chartWrapperTarget.classList.remove('loading')\n    }\n  }\n\n  getChartName (chartValue) {\n    switch (chartValue) {\n      case 'block-size':\n        return 'Block Size'\n      case 'blockchain-size':\n        return 'Blockchain Size'\n      case 'tx-count':\n        return 'Transaction Count'\n      case 'duration-btw-blocks':\n        return 'Duration Between Blocks'\n      case 'pow-difficulty':\n        return 'PoW Difficulty'\n      case 'hashrate':\n        return 'Hashrate'\n      case 'coin-supply':\n        return 'Coin Supply'\n      case 'fees':\n        return 'Fees'\n      case 'tx-per-block':\n        return 'TXs Per Blocks'\n      case 'mined-blocks':\n        return 'Mined Blocks'\n      case 'mempool-txs':\n        return 'Mempool TXs'\n      case 'mempool-size':\n        return 'Mempool Size'\n      case 'address-number':\n        return 'Active Addresses'\n      default:\n        return ''\n    }\n  }\n\n  async validateZoom () {\n    await animationFrame()\n    this.chartWrapperTarget.classList.add('loading')\n    await animationFrame()\n    let oldLimits = this.limits || this.chartsView.xAxisExtremes()\n    this.limits = this.chartsView.xAxisExtremes()\n    const selected = this.selectedZoom()\n    if (selected && !(selectedChart === 'privacy-participation' && selected === 'all')) {\n      this.lastZoom = Zoom.validate(selected, this.limits,\n        this.isTimeAxis() ? avgBlockTime : 1, this.isTimeAxis() ? 1 : avgBlockTime)\n    } else {\n      // if this is for the privacy-participation chart, then zoom to the beginning of the record\n      if (selectedChart === 'privacy-participation') {\n        this.limits = oldLimits = this.customLimits\n        this.settings.zoom = Zoom.object(this.limits[0], this.limits[1])\n      }\n      this.lastZoom = Zoom.project(this.settings.zoom, oldLimits, this.limits)\n    }\n    if (this.lastZoom) {\n      this.chartsView.updateOptions({\n        dateWindow: [this.lastZoom.start, this.lastZoom.end]\n      })\n    }\n    if (selected !== this.settings.zoom) {\n      this._zoomCallback(this.lastZoom.start, this.lastZoom.end)\n    }\n    await animationFrame()\n    this.chartWrapperTarget.classList.remove('loading')\n    this.chartsView.updateOptions({\n      zoomCallback: this.zoomCallback,\n      drawCallback: this.drawCallback\n    })\n  }\n\n  _zoomCallback (start, end) {\n    this.lastZoom = Zoom.object(start, end)\n    this.settings.zoom = Zoom.encode(this.lastZoom)\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n    const ex = this.chartsView.xAxisExtremes()\n    const option = Zoom.mapKey(this.settings.zoom, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    this.setActiveToggleBtn(option, this.zoomButtons)\n    const axesData = axesToRestoreYRange(this.settings.chart,\n      this.supportedYRange, this.chartsView.yAxisRanges())\n    if (axesData) this.chartsView.updateOptions({ axes: axesData })\n  }\n\n  isTimeAxis () {\n    return this.selectedAxis() === 'time'\n  }\n\n  _drawCallback (graph, first) {\n    if (first) return\n    const [start, end] = this.chartsView.xAxisRange()\n    if (start === end) return\n    if (this.lastZoom.start === start) return // only handle slide event.\n    this._zoomCallback(start, end)\n  }\n\n  setSelectZoom (e) {\n    const btn = e.target || e.srcElement\n    let option\n    if (btn.nodeName === 'BUTTON') {\n      option = btn.name\n    } else {\n      const ex = this.chartsView.xAxisExtremes()\n      option = Zoom.mapKey(e, ex, this.isTimeAxis() ? 1 : avgBlockTime)\n    }\n    this.setActiveToggleBtn(option, this.zoomButtons)\n    if (!e.target) return // Exit if running for the first time\\\n    this.validateZoom()\n  }\n\n  setSelectBin (e) {\n    const btn = e.target || e.srcElement\n    if (!btn) {\n      return\n    }\n    let option\n    if (btn.nodeName === 'BUTTON') {\n      option = btn.name\n    }\n    if (!option) {\n      return\n    }\n    this.setActiveToggleBtn(option, this.binButtons)\n    this.updateVSelector()\n    selectedChart = null // Force fetch\n    this.selectChart()\n  }\n\n  setSelectScale (e) {\n    const btn = e.target || e.srcElement\n    if (!btn) {\n      return\n    }\n    let option\n    if (btn.nodeName === 'BUTTON') {\n      option = btn.name\n    }\n    if (!option) {\n      return\n    }\n    this.setActiveToggleBtn(option, this.scaleButtons)\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ logscale: option === 'log' })\n    }\n    this.settings.scale = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setSelectMode (e) {\n    const btn = e.target || e.srcElement\n    if (!btn) {\n      return\n    }\n    let option\n    if (btn.nodeName === 'BUTTON') {\n      option = btn.name\n    }\n    if (!option) {\n      return\n    }\n    this.setActiveToggleBtn(option, this.modeButtons)\n    if (this.chartsView) {\n      this.chartsView.updateOptions({ stepPlot: option === 'stepped' })\n    }\n    this.settings.mode = option\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setAxis (e) {\n    const target = e.srcElement || e.target\n    const option = target ? target.dataset.option : e\n    if (!option) return\n    this.setActiveOptionBtn(option, this.axisOptionTargets)\n    if (!target) return // Exit if running for the first time.\n    this.settings.axis = null\n    this.selectChart()\n  }\n\n  setVisibilityFromSettings () {\n    switch (this.chartSelectTarget.value) {\n      case 'ticket-price':\n        if (this.visibility.length !== 2) {\n          this.visibility = [true, this.ticketsPurchaseTarget.checked]\n        }\n        this.ticketsPriceTarget.checked = this.visibility[0]\n        this.ticketsPurchaseTarget.checked = this.visibility[1]\n        break\n      case 'coin-supply':\n        if (this.visibility.length !== 3) {\n          this.visibility = [true, true, this.anonymitySetTarget.checked]\n        }\n        this.anonymitySetTarget.checked = this.visibility[2]\n        break\n      case 'privacy-participation':\n        if (this.visibility.length !== 2) {\n          this.visibility = [true, this.anonymitySetTarget.checked]\n        }\n        this.anonymitySetTarget.checked = this.visibility[1]\n        break\n      default:\n        return\n    }\n    this.settings.visibility = this.visibility.join('-')\n    if (!this.isHomepage) {\n      this.query.replace(this.settings)\n    }\n  }\n\n  setActiveOptionBtn (opt, optTargets) {\n    optTargets.forEach(li => {\n      if (li.dataset.option === opt) {\n        li.classList.add('active')\n      } else {\n        li.classList.remove('active')\n      }\n    })\n  }\n\n  setActiveToggleBtn (opt, optTargets) {\n    optTargets.forEach(button => {\n      if (button.name === opt) {\n        button.classList.add('active')\n      } else {\n        button.classList.remove('active')\n      }\n    })\n  }\n\n  selectedZoom () { return this.selectedButtons(this.zoomButtons) }\n  selectedBin () { return this.selectedButtons(this.binButtons) }\n  selectedScale () { return this.selectedButtons(this.scaleButtons) }\n  selectedAxis () { return this.selectedOption(this.axisOptionTargets) }\n  selectedRange () { return this.selectedOption(this.rangeOptionTargets) }\n\n  selectedOption (optTargets) {\n    let key = false\n    optTargets.forEach((el) => {\n      if (el.classList.contains('active')) key = el.dataset.option\n    })\n    return key\n  }\n\n  selectedButtons (btnTargets) {\n    let key = false\n    btnTargets.forEach((btn) => {\n      if (btn.classList.contains('active')) key = btn.name\n    })\n    return key\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport ws from '../services/messagesocket_service'\nimport { keyNav } from '../services/keyboard_navigation_service'\nimport globalEventBus from '../services/event_bus_service'\nimport Mempool from '../helpers/mempool_helper'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst conversionRate = 100000000\nconst pages = ['blockchain', 'mining', 'market', 'ticket', '24h', 'charts']\n\nfunction getPageTitleName (index) {\n  switch (index) {\n    case 0:\n      return 'Blockchain Summary'\n    case 1:\n      return 'Mempool And Mining'\n    case 2:\n      return 'Market Charts'\n    case 3:\n      return 'Staking And Voting'\n    case 4:\n      return '24h Metrics'\n    case 5:\n      return 'Chain Charts'\n  }\n  return ''\n}\n\nfunction getPageTitleIcon (index) {\n  switch (index) {\n    case 0:\n      return '/images/blockchain-icon.svg'\n    case 1:\n      return '/images/mining-icon.svg'\n    case 2:\n      return '/images/market-icon.svg'\n    case 3:\n      return '/images/ticket.svg'\n    case 4:\n      return '/images/hour-24.svg'\n    case 5:\n      return '/images/chain-chart.svg'\n  }\n  return ''\n}\n\nfunction setMenuDropdownPos (e) {\n  const submenu = e.querySelector('.home-menu-dropdown')\n  if (!submenu) return\n  const rect = submenu.getBoundingClientRect()\n  const windowWidth = window.innerWidth\n  if (rect.right > windowWidth) {\n    submenu.style.left = '-' + (rect.right - windowWidth - 5) + 'px'\n    submenu.style.right = 'auto'\n  }\n}\n\nfunction makeMempoolBlock (block) {\n  let fees = 0\n  if (!block.Transactions) return\n  for (const tx of block.Transactions) {\n    fees += tx.Fees\n  }\n\n  return `<div class=\"block-rows homepage-blocks-row\">\n                    ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n                    ${makeVoteElements(block.Votes)}\n                    ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n                    ${makeTransactionElements(block.Transactions, '/mempool')}\n                </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n  let totalDCR = 0\n  const transactionElements = []\n  if (transactions) {\n    for (let i = 0; i < transactions.length; i++) {\n      const tx = transactions[i]\n      totalDCR += tx.Total\n      transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n    }\n  }\n\n  if (transactionElements.length > 50) {\n    const total = transactionElements.length\n    transactionElements.splice(30)\n    transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n                                    <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                                </span>`)\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n                ${transactionElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n  // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n  const style = []\n  if (appendFlexGrow) {\n    style.push(`flex-grow: ${Math.round(tx.Total)}`)\n  }\n\n  return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-homepage-target=\"tooltip\"\n                title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n                <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n            </span>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n  let totalDCR = 0\n  const ticketElements = []\n  const revCount = revocations ? revocations.length : 0\n  const ticketCount = tickets ? tickets.length : 0\n  if (tickets) {\n    for (let i = 0; i < tickets.length; i++) {\n      const ticket = tickets[i]\n      totalDCR += ticket.Total\n      ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n    }\n  }\n  if (ticketElements.length > 50) {\n    const total = ticketElements.length\n    ticketElements.splice(30)\n    ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n                                <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                            </span>`)\n  }\n  const revocationElements = []\n  if (revCount > 0) {\n    for (let i = 0; i < revCount; i++) {\n      const revocation = revocations[i]\n      totalDCR += revocation.Total\n      revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n    }\n  }\n\n  const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n  // append empty squares to tickets+revs\n  for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n    ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${ticketsAndRevocationElements.join('\\n')}\n            </div>`\n}\n\nfunction makeVoteElements (votes) {\n  let totalDCR = 0\n  const voteLen = votes ? votes.length : 0\n  const voteElements = []\n  if (voteLen > 0) {\n    for (let i = 0; i < voteLen - 1; i++) {\n      const vote = votes[i]\n      totalDCR += vote.Total\n      voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-homepage-target=\"tooltip\"\n                        title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n                        <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n                    </span>`)\n    }\n  }\n  // append empty squares to votes\n  for (let i = voteElements.length; i < 5; i++) {\n    voteElements.push('<span title=\"Empty vote slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${voteElements.join('\\n')}\n            </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n  if (!subsidy) {\n    return `<div class=\"block-rewards px-1 mt-1\">\n                    <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n                </div>`\n  }\n\n  const pow = subsidy.pow / conversionRate\n  const pos = subsidy.pos / conversionRate\n  const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n  const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n  // const totalDCR = Math.round(pow + fund + fee);\n  const totalDCR = 1\n  return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                <span class=\"pow\" style=\"flex-grow: ${pow}\" data-homepage-target=\"tooltip\"\n                    title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"pos\" style=\"flex-grow: ${pos}\" data-homepage-target=\"tooltip\"\n                    title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"fund\" style=\"flex-grow: ${fund}\" data-homepage-target=\"tooltip\"\n                    title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-homepage-target=\"tooltip\"\n                    title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n                    <span class=\"block-element-link\"></span>\n                </span>\n            </div>`\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['difficulty',\n      'bsubsidyTotal', 'bsubsidyPow', 'bsubsidyPos', 'bsubsidyDev',\n      'coinSupply', 'blocksdiff', 'devFund', 'windowIndex', 'posBar',\n      'rewardIdx', 'powBar', 'poolSize', 'poolValue', 'ticketReward',\n      'targetPct', 'poolSizePct', 'hashrate', 'hashrateDelta',\n      'nextExpectedSdiff', 'nextExpectedMin', 'nextExpectedMax', 'mempool',\n      'mpRegTotal', 'mpRegCount', 'mpTicketTotal', 'mpTicketCount', 'mpVoteTotal', 'mpVoteCount',\n      'mpRevTotal', 'mpRevCount', 'voteTally', 'blockVotes', 'blockHeight', 'blockSize',\n      'blockTotal', 'consensusMsg', 'powConverted', 'convertedDev',\n      'convertedSupply', 'convertedDevSub', 'exchangeRate', 'convertedStake',\n      'mixedPct', 'searchKey', 'memBlock', 'tooltip', 'avgBlockTime', 'tspentAmount', 'tspentCount',\n      'onlineNodes', 'blockchainSize', 'avgBlockSize', 'totalTxs', 'totalAddresses', 'totalOutputs',\n      'totalSwapsAmount', 'totalContracts', 'redeemCount', 'refundCount', 'bwTotalVol', 'last30DayBwVol',\n      'convertedMemSent', 'mempoolSize', 'mempoolFees', 'convertedMempoolFees', 'feeAvg', 'txfeeConverted',\n      'poolsTable', 'rewardReduceRemain', 'marketCap', 'lastBlockTime', 'missedTickets', 'last1000BlocksMissed',\n      'ticketFee', 'vspTable', 'mined24hBlocks', 'txs24hCount', 'sent24h', 'sent24hUsd', 'fees24h', 'fees24hUsd',\n      'vout24h', 'activeAddr24h', 'powReward24h', 'powReward24hUsd', 'supply24h', 'supply24hUsd', 'treasuryBal24h',\n      'treasuryBal24hUsd', 'staked24h', 'tickets24h', 'posReward24h', 'posReward24hUsd', 'voted24h', 'missed24h',\n      'swapAmount24h', 'swapAmount24hUsd', 'swapCount24h', 'swapPartCount24h', 'bwVol24h', 'homeContent',\n      'homeThumbs', 'exchangeRateBottom'\n    ]\n  }\n\n  connect () {\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate(['page'])\n    this.pageIndex = 0\n    if (humanize.isEmpty(this.settings.page)) {\n      const params = new URLSearchParams(window.location.search)\n      if (!humanize.isEmpty(params.get('page'))) {\n        this.settings.page = params.get('page')\n      }\n    }\n    if (!humanize.isEmpty(this.settings.page)) {\n      this.pageIndex = pages.indexOf(this.settings.page)\n      if (this.pageIndex < 0) {\n        this.pageIndex = 0\n      }\n    }\n    this.content = document.getElementById('newHomeContent')\n    this.thumbs = document.querySelectorAll('.new-home-thumb')\n    this.snapPageContents = document.querySelectorAll('.snap-page-content')\n    this.navBarHeight = this.newHomeMenuHeight = this.homeThumbnailHeight = this.viewHeight = 0\n    this.contentHeights = []\n    const _this = this\n    window.addEventListener('load', () => {\n      _this.navBarHeight = document.getElementById('navBar').offsetHeight\n      _this.newHomeMenuHeight = document.getElementById('newHomeMenu').offsetHeight\n      _this.homeThumbnailHeight = document.getElementById('homeThumbnail').offsetHeight\n      _this.viewHeight = window.innerHeight - _this.navBarHeight - _this.newHomeMenuHeight - _this.homeThumbnailHeight - 2\n      _this.updateContentHeight()\n      if (_this.pageIndex > 0) {\n        _this.moveToPageByIndex(_this.pageIndex)\n      }\n    })\n    window.addEventListener('resize', function () {\n      _this.navBarHeight = document.getElementById('navBar').offsetHeight\n      _this.newHomeMenuHeight = document.getElementById('newHomeMenu').offsetHeight\n      _this.homeThumbnailHeight = document.getElementById('homeThumbnail').offsetHeight\n      _this.viewHeight = window.innerHeight - _this.navBarHeight - _this.newHomeMenuHeight - _this.homeThumbnailHeight - 2\n      _this.updateContentHeight()\n    })\n    this.content.addEventListener('scroll', () => {\n      const scrollTop = _this.content.scrollTop + 5\n      let currentHeight = 0\n      let index = 0\n      while (currentHeight < scrollTop) {\n        if (scrollTop < currentHeight + _this.contentHeights[index]) {\n          break\n        }\n        currentHeight += _this.contentHeights[index]\n        index++\n      }\n      _this.thumbs.forEach(thumb => thumb.classList.remove('active'))\n      _this.thumbs[index].classList.add('active')\n      const title = getPageTitleName(index)\n      const icon = getPageTitleIcon(index)\n      document.getElementById('pageBarTitleTop').textContent = title\n      document.getElementById('pageBarIconTop').src = icon\n      if (index !== _this.pageIndex) {\n        _this.pageIndex = index\n        _this.settings.page = pages[index]\n        _this.query.replace(_this.settings)\n      }\n    })\n\n    document.querySelectorAll('.menu-list-item').forEach(menuItem => {\n      menuItem.addEventListener('mouseenter', function () {\n        setMenuDropdownPos(this)\n      })\n    })\n\n    const dropdowns = document.querySelectorAll('.menu-list-item')\n    const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0\n    if (isTouchDevice) {\n      dropdowns.forEach(dropdown => {\n        const btn = dropdown.querySelector('.home-menu-wrapper')\n        const menu = dropdown.querySelector('.home-menu-dropdown')\n        btn.addEventListener('touchstart', function (e) {\n          e.preventDefault()\n          menu.classList.toggle('show')\n          dropdowns.forEach(otherDropdown => {\n            if (otherDropdown !== dropdown) {\n              otherDropdown.querySelector('.home-menu-dropdown').classList.remove('show')\n            }\n          })\n        })\n      })\n\n      document.addEventListener('touchstart', function (e) {\n        dropdowns.forEach(dropdown => {\n          const menu = dropdown.querySelector('.home-menu-dropdown')\n          if (!dropdown.contains(e.target)) {\n            menu.classList.remove('show')\n          }\n        })\n      })\n    }\n\n    // get default exchange rate\n    this.exchangeRate = Number(this.data.get('exchangeRate'))\n    this.exchangeIndex = this.data.get('exchangeIndex')\n    this.ticketsPerBlock = parseInt(this.mpVoteCountTarget.dataset.ticketsPerBlock)\n    this.mempoolTotalSent = Number(this.mempoolTarget.dataset.memsent)\n    this.mempoolFees = Number(this.mempoolFeesTarget.dataset.memfees)\n    this.powReward = Number(this.bsubsidyPowTarget.dataset.powreward)\n    this.txFeeAvg = Number(this.feeAvgTarget.dataset.feeavg)\n    const mempoolData = this.mempoolTarget.dataset\n    ws.send('getmempooltxs', mempoolData.id)\n    this.mempool = new Mempool(mempoolData, this.voteTallyTargets)\n    ws.registerEvtHandler('newtxs', (evt) => {\n      const txs = JSON.parse(evt)\n      this.mempool.mergeTxs(txs)\n      this.setMempoolFigures()\n      keyNav(evt, false, true)\n      ws.send('getmempooltrimmed', '')\n    })\n    ws.registerEvtHandler('mempool', (evt) => {\n      const m = JSON.parse(evt)\n      this.mempool.replace(m)\n      this.setMempoolFigures()\n      keyNav(evt, false, true)\n      ws.send('getmempooltxs', '')\n      ws.send('getmempooltrimmed', '')\n    })\n    ws.registerEvtHandler('getmempooltxsResp', (evt) => {\n      const m = JSON.parse(evt)\n      this.mempool.replace(m)\n      this.setMempoolFigures()\n      keyNav(evt, false, true)\n    })\n\n    ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n      this.handleMempoolUpdate(event)\n    })\n\n    this.processBlock = this._processBlock.bind(this)\n    globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n    this.processSummaryInfo = this._processSummary.bind(this)\n    globalEventBus.on('SUMMARY_RECEIVED', this.processSummaryInfo)\n    this.processSummary24hInfo = this._process24hInfo.bind(this)\n    globalEventBus.on('SUMMARY_24H_RECEIVED', this.processSummary24hInfo)\n    this.processXcUpdate = this._processXcUpdate.bind(this)\n    globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n    this.setupTooltips()\n    const isDev = this.data.get('dev')\n    if (isDev && isDev !== '') {\n      this.setAvgBlockTime()\n    }\n  }\n\n  moveToPageByIndex (index) {\n    let toScroll = 0\n    for (let i = 0; i < index; i++) {\n      toScroll += this.contentHeights[i]\n    }\n    // scroll to view\n    document.getElementById('newHomeContent').scrollTo({ top: toScroll, behavior: 'smooth' })\n  }\n\n  setPageIndex (e) {\n    const index = Number(e.currentTarget.dataset.index)\n    if (index > this.contentHeights.length - 1) {\n      return\n    }\n    this.pageIndex = index\n    this.settings.page = pages[index]\n    this.query.replace(this.settings)\n    this.moveToPageByIndex(index)\n  }\n\n  updateContentHeight () {\n    const _this = this\n    this.contentHeights = []\n    this.snapPageContents.forEach((pageContent) => {\n      const cHeight = pageContent.offsetHeight\n      _this.contentHeights.push(cHeight > _this.viewHeight ? cHeight : _this.viewHeight)\n      const section = pageContent.querySelector('section')\n      if (cHeight < _this.viewHeight && section) {\n        section.style.height = _this.viewHeight + 'px'\n        section.classList.remove('h-100')\n      } else {\n        section.classList.add('h-100')\n      }\n    })\n  }\n\n  _processXcUpdate (update) {\n    const xc = update.updater\n    const cType = xc.chain_type\n    if (cType && cType !== 'dcr') {\n      return\n    }\n    const newPrice = update.price\n    if (Number(newPrice) > 0) {\n      this.exchangeRate = newPrice\n      this.syncExchangeAllPrice()\n    }\n  }\n\n  syncExchangeAllPrice () {\n    if (this.mempoolTotalSent > 0 && this.hasConvertedMemSentTarget) {\n      this.convertedMemSentTarget.textContent = `${humanize.threeSigFigs(this.mempoolTotalSent * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.mempoolFees > 0 && this.hasConvertedMempoolFeesTarget) {\n      this.convertedMempoolFeesTarget.textContent = `${humanize.threeSigFigs(this.mempoolFees * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasExchangeRateTarget) {\n      this.exchangeRateTarget.textContent = humanize.twoDecimals(this.exchangeRate)\n    }\n    if (this.hasExchangeRateBottomTarget) {\n      this.exchangeRateBottomTarget.textContent = humanize.twoDecimals(this.exchangeRate)\n    }\n    if (this.powReward > 0 && this.hasPowConvertedTarget) {\n      this.powConvertedTarget.textContent = `${humanize.twoDecimals(this.powReward / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.txFeeAvg > 0 && this.hasTxfeeConverted) {\n      this.txfeeConvertedTarget.textContent = `${(this.txFeeAvg / 1e8 * this.exchangeRate).toFixed(5)} ${this.exchangeIndex}`\n    }\n  }\n\n  async setAvgBlockTime () {\n    const url = '/api/block/avg-block-time'\n    const resData = await requestJSON(url)\n    this.avgBlockTimeTarget.textContent = humanize.timeDuration(resData * 1000)\n  }\n\n  handleMempoolUpdate (evt) {\n    const mempool = JSON.parse(evt)\n    mempool.Time = Math.round((new Date()).getTime() / 1000)\n    this.memBlockTarget.innerHTML = makeMempoolBlock(mempool)\n    this.setupTooltips()\n  }\n\n  setupTooltips () {\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.object === 'Vote') {\n          newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n        } else {\n          newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n        }\n\n        if (data.vin && data.vout) {\n          newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n        }\n\n        tooltipElement.title = newContent\n      } catch (error) { }\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n\n  disconnect () {\n    ws.deregisterEvtHandlers('newtxs')\n    ws.deregisterEvtHandlers('mempool')\n    ws.deregisterEvtHandlers('getmempooltxsResp')\n    ws.deregisterEvtHandlers('getmempooltrimmedResp')\n    globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n    globalEventBus.off('SUMMARY_RECEIVED', this.processSummaryInfo)\n    globalEventBus.off('SUMMARY_24H_RECEIVED', this.processSummary24hInfo)\n    globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n  }\n\n  setMempoolFigures () {\n    const totals = this.mempool.totals()\n    const counts = this.mempool.counts()\n    const fees = this.mempool.fees()\n    this.mpRegTotalTarget.textContent = humanize.threeSigFigs(totals.regular)\n    this.mpRegCountTarget.textContent = counts.regular\n\n    this.mpTicketTotalTarget.textContent = humanize.threeSigFigs(totals.ticket)\n    this.mpTicketCountTarget.textContent = counts.ticket\n\n    this.mpVoteTotalTarget.textContent = humanize.threeSigFigs(totals.vote)\n\n    const ct = this.mpVoteCountTarget\n    while (ct.firstChild) ct.removeChild(ct.firstChild)\n    this.mempool.voteSpans(counts.vote).forEach((span) => { ct.appendChild(span) })\n\n    this.mpRevTotalTarget.textContent = humanize.threeSigFigs(totals.rev)\n    this.mpRevCountTarget.textContent = counts.rev\n\n    this.mempoolTarget.textContent = humanize.threeSigFigs(totals.total)\n    this.mempoolFeesTarget.innerHTML = humanize.decimalParts(fees.fees, false, 8, 5)\n\n    if (this.exchangeRate > 0 && totals.total > 0) {\n      this.convertedMemSentTarget.textContent = `${humanize.threeSigFigs(totals.total * this.exchangeRate)} ${this.exchangeIndex}`\n      this.mempoolTotalSent = totals.total\n    }\n    if (this.exchangeRate > 0 && fees.fees > 0) {\n      this.convertedMempoolFeesTarget.textContent = `${humanize.threeSigFigs(fees.fees * this.exchangeRate)} ${this.exchangeIndex}`\n      this.mempoolFees = fees.fees\n    }\n    // set size\n    this.mempoolSizeTarget.textContent = humanize.bytes(totals.size)\n    this.setVotes()\n  }\n\n  setVotes () {\n    const hash = this.blockVotesTarget.dataset.hash\n    const votes = this.mempool.blockVoteTally(hash)\n    this.blockVotesTarget.querySelectorAll('div').forEach((div, i) => {\n      const span = div.firstElementChild\n      if (i < votes.affirm) {\n        span.className = 'd-inline-block dcricon-affirm'\n        div.dataset.tooltip = 'the stakeholder has voted to accept this block'\n      } else if (i < votes.affirm + votes.reject) {\n        span.className = 'd-inline-block dcricon-reject'\n        div.dataset.tooltip = 'the stakeholder has voted to reject this block'\n      } else {\n        span.className = 'd-inline-block dcricon-missing'\n        div.dataset.tooltip = 'this vote has not been received yet'\n      }\n    })\n    const threshold = this.ticketsPerBlock / 2\n    if (votes.affirm > threshold) {\n      this.consensusMsgTarget.textContent = 'approved'\n      this.consensusMsgTarget.className = 'small text-green'\n    } else if (votes.reject > threshold) {\n      this.consensusMsgTarget.textContent = 'rejected'\n      this.consensusMsgTarget.className = 'small text-danger'\n    } else {\n      this.consensusMsgTarget.textContent = ''\n    }\n  }\n\n  getPoolProviderInnerHtml (poolType) {\n    if (!poolType || poolType === '') {\n      return '<p>N/A</p>'\n    }\n    const poolName = poolType === 'miningandco' ? 'miningandco.com' : poolType === 'e4pool' ? 'e4pool.com' : 'threepool.tech'\n    const poolLink = poolType === 'miningandco' ? 'decred.miningandco.com' : poolType === 'e4pool' ? 'dcr.e4pool.com' : 'dcr.threepool.tech'\n    const code = poolType === 'miningandco' ? 'CA' : poolType === 'e4pool' ? 'RU' : 'BR'\n    return `<div class=\"tooltip1 me-1\">\n      <img src=\"/images/${code}_24.webp\" width=\"24\" height=\"24\" alt=\"${code}\" />\n    </div>\n    <a href=\"https://${poolLink}\" target=\"_blank\">\n      ${poolName}\n    </a>`\n  }\n\n  updateLastBlocksPools (blocksPools) {\n    if (!blocksPools || blocksPools.length === 0) {\n      return\n    }\n    let poolHtml = ''\n    const _this = this\n    blocksPools.forEach((pool) => {\n      poolHtml += `<tr>\n        <td class=\"text-start\">\n        <a data-turbolinks=\"false\" href=\"/block/${pool.blockheight}\"\n        >${pool.blockheight}</a\n    >\n    </td>\n    <td class=\"d-flex justify-content-center ai-center\">\n      ${_this.getPoolProviderInnerHtml(pool.poolType)}\n    </td>\n    <td class=\"text-center\">\n      ${pool.poolType !== '' ? pool.miner : 'N/A'}  \n    </td>\n    <td class=\"text-center\">\n      ${pool.poolType !== '' ? pool.minedby : 'N/A'}  \n    </td>\n  </tr>`\n    })\n    this.poolsTableTarget.innerHTML = poolHtml\n  }\n\n  _processSummary (data) {\n    const summary = data.summary_info\n    this.onlineNodesTarget.innerHTML = humanize.decimalParts(summary.peerCount, true, 0)\n    this.totalTxsTarget.innerHTML = humanize.decimalParts(summary.total_transactions, true, 0)\n    this.totalAddressesTarget.innerHTML = humanize.decimalParts(summary.total_addresses, true, 0)\n    this.totalOutputsTarget.innerHTML = humanize.decimalParts(summary.total_outputs, true, 0)\n    this.totalSwapsAmountTarget.innerHTML = humanize.decimalParts(summary.swapsTotalAmount / 100000000, true, 0)\n    this.totalContractsTarget.innerHTML = humanize.decimalParts(summary.swapsTotalContract, true, 0)\n    this.redeemCountTarget.innerHTML = humanize.decimalParts(summary.swapsTotalContract - summary.refundCount, true, 0)\n    this.refundCountTarget.innerHTML = humanize.decimalParts(summary.refundCount, true, 0)\n    this.bwTotalVolTarget.innerHTML = humanize.decimalParts(summary.bisonWalletVol, true, 0)\n    this.last30DayBwVolTarget.innerHTML = humanize.decimalParts(summary.bwLast30DaysVol, true, 0)\n    this.updateLastBlocksPools(summary.poolDataList)\n    if (this.hasMissedTicketsTarget) {\n      this.missedTicketsTarget.innerHTML = humanize.decimalParts(summary.ticketsSummary.missedTickets, true, 0)\n      this.last1000BlocksMissedTarget.innerHTML = humanize.decimalParts(summary.ticketsSummary.last1000BlocksMissed, true, 0)\n      this.ticketFeeTarget.innerHTML = humanize.decimalParts(summary.ticketsSummary.last1000BlocksTicketFeeAvg, false, 8, 5)\n      this.vspTableTarget.innerHTML = this.getVspTable(summary.vspList)\n    }\n  }\n\n  getVspTable (vspList) {\n    if (!vspList || vspList.length <= 0) {\n      return ''\n    }\n    let result = ''\n    vspList.forEach((vsp) => {\n      result += `<tr>\n   <td class=\"text-start\">\n      <a data-turbolinks=\"false\" target=\"_blank\" href=\"https://${vsp.vspLink}\">${vsp.vspLink}</a>\n   </td>\n   <td class=\"text-center\">\n      ${vsp.voting}\n   </td>\n   <td class=\"text-center\">\n    ${vsp.voted}\n   </td>\n   <td class=\"text-center\">\n    ${vsp.missed}\n   </td>\n   <td class=\"text-center\">\n    ${vsp.feepercentage}%\n   </td>\n  </tr>`\n    })\n    return result\n  }\n\n  // process for 24h info socket\n  _process24hInfo (data) {\n    const summary24h = data.summary_24h\n    this.mined24hBlocksTarget.innerHTML = humanize.decimalParts(summary24h.blocks, true, 0)\n    this.txs24hCountTarget.innerHTML = humanize.decimalParts(summary24h.numTx24h, true, 0)\n    this.sent24hTarget.innerHTML = humanize.decimalParts(summary24h.sent24h / 1e8, true, 2)\n    this.fees24hTarget.innerHTML = humanize.decimalParts(summary24h.fees24h / 1e8, true, 2)\n    this.vout24hTarget.innerHTML = humanize.decimalParts(summary24h.numVout24h, true, 0)\n    this.activeAddr24hTarget.innerHTML = humanize.decimalParts(summary24h.activeAddresses, true, 0)\n    this.powReward24hTarget.innerHTML = humanize.decimalParts(summary24h.totalPowReward / 1e8, true, 2)\n    this.supply24hTarget.innerHTML = humanize.decimalParts(summary24h.dcrSupply / 1e8, true, 2)\n    this.treasuryBal24hTarget.innerHTML = `<span class=\"dcricon-arrow-${summary24h.treasuryBalanceChange > 0 ? 'up text-green' : 'down text-danger'}\"></span>\n        <span class=\"${summary24h.treasuryBalanceChange > 0 ? 'c-green-2' : 'c-red'}\">${humanize.decimalParts(Math.abs(summary24h.treasuryBalanceChange) / 1e8, true, 2)}\n        </span>`\n    this.staked24hTarget.innerHTML = `<span class=\"dcricon-arrow-${summary24h.stakedDCR > 0 ? 'up text-green' : 'down text-danger'}\"></span>\n        <span class=\"${summary24h.stakedDCR > 0 ? 'c-green-2' : 'c-red'}\">${humanize.decimalParts(Math.abs(summary24h.stakedDCR) / 1e8, true, 2)}\n        </span>`\n    this.tickets24hTarget.innerHTML =\n      `<span class=\"dcricon-arrow-${summary24h.stakedDCR > 0 ? 'up text-green' : 'down text-danger'}\"></span>\n        <span class=\"${summary24h.stakedDCR > 0 ? 'c-green-2' : 'c-red'}\">\n        ${humanize.decimalParts(summary24h.numTickets, true, 0)}</span>`\n    this.posReward24hTarget.innerHTML = humanize.decimalParts(summary24h.posReward / 1e8, true, 2)\n    this.voted24hTarget.innerHTML = humanize.decimalParts(summary24h.voted, true, 0)\n    this.missed24hTarget.innerHTML = humanize.decimalParts(summary24h.missed, true, 0)\n    this.swapAmount24hTarget.innerHTML = humanize.decimalParts(summary24h.atomicSwapAmount / 1e8, true, 0)\n    this.swapCount24hTarget.innerHTML = humanize.decimalParts(summary24h.swapRedeemCount + summary24h.swapRefundCount, true, 0)\n    this.swapPartCount24hTarget.innerHTML = `${humanize.decimalParts(summary24h.swapRedeemCount, true, 0)} redemptions\n    , ${humanize.decimalParts(summary24h.swapRefundCount, true, 0)} refunds`\n    this.bwVol24hTarget.innerHTML = humanize.decimalParts(summary24h.bisonWalletVol, true, 0)\n    if (this.exchangeRate <= 0) {\n      return\n    }\n    if (this.hasSent24hUsdTarget) {\n      this.sent24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.sent24h / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasFees24hUsdTarget) {\n      this.fees24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.fees24h / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasPowReward24hUsdTarget) {\n      this.powReward24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.totalPowReward / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasSupply24hUsdTarget) {\n      this.supply24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.dcrSupply / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasPosReward24hUsdTarget) {\n      this.posReward24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.posReward / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasSwapAmount24hUsdTarget) {\n      this.swapAmount24hUsdTarget.textContent = `${humanize.threeSigFigs(summary24h.atomicSwapAmount / 1e8 * this.exchangeRate)} ${this.exchangeIndex}`\n    }\n    if (this.hasTreasuryBal24hUsdTarget) {\n      this.treasuryBal24hUsdTarget.innerHTML =\n        `<span class=\"dcricon-arrow-${summary24h.treasuryBalanceChange > 0 ? 'up text-green' : 'down text-danger'}\"></span>\n      <span class=\"${summary24h.treasuryBalanceChange > 0 ? 'c-green-2' : 'c-red'}\">\n      ${humanize.threeSigFigs(summary24h.treasuryBalanceChange / 1e8 * this.exchangeRate)}</span> ${this.exchangeIndex}`\n    }\n  }\n\n  _processBlock (blockData) {\n    const ex = blockData.extra\n    this.difficultyTarget.innerHTML = humanize.decimalParts(ex.difficulty, true, 0)\n    this.bsubsidyPowTarget.innerHTML = humanize.decimalParts(ex.subsidy.pow / 100000000, false, 8, 2)\n    this.bsubsidyPosTarget.innerHTML = humanize.decimalParts((ex.subsidy.pos / 500000000), false, 8, 2) // 5 votes per block (usually)\n    this.bsubsidyDevTarget.innerHTML = humanize.decimalParts(ex.subsidy.dev / 100000000, false, 8, 2)\n    this.tspentAmountTarget.innerHTML = humanize.decimalParts(ex.treasury_bal.spent / 100000000, true, 2, 0)\n    this.tspentCountTarget.innerHTML = humanize.decimalParts(ex.treasury_bal.spend_count, true, 0) + ' spends'\n    this.coinSupplyTarget.innerHTML = humanize.decimalParts(ex.coin_supply / 100000000, true, 0)\n    this.mixedPctTarget.innerHTML = ex.mixed_percent.toFixed(0)\n    this.blocksdiffTarget.innerHTML = humanize.decimalParts(ex.sdiff, false, 8, 2)\n    this.nextExpectedSdiffTarget.innerHTML = humanize.decimalParts(ex.next_expected_sdiff, false, 2, 2)\n    this.nextExpectedMinTarget.innerHTML = humanize.decimalParts(ex.next_expected_min, false, 2, 2)\n    this.nextExpectedMaxTarget.innerHTML = humanize.decimalParts(ex.next_expected_max, false, 2, 2)\n    this.windowIndexTarget.textContent = ex.window_idx\n    this.posBarTarget.style.width = `${(ex.window_idx / ex.params.window_size) * 100}%`\n    this.poolSizeTarget.innerHTML = humanize.decimalParts(ex.pool_info.size, true, 0)\n    this.targetPctTarget.textContent = parseFloat(ex.pool_info.percent_target - 100).toFixed(2)\n    this.rewardIdxTarget.textContent = ex.reward_idx\n    this.powBarTarget.style.width = `${(ex.reward_idx / ex.params.reward_window_size) * 100}%`\n    const blockRewardReduceDuration = (ex.params.reward_window_size - ex.reward_idx) * ex.params.target_block_time / 1e6\n    this.rewardReduceRemainTarget.textContent = humanize.timeDuration(blockRewardReduceDuration, 'minute') + ' remaining'\n    this.poolValueTarget.innerHTML = humanize.decimalParts(ex.pool_info.value, true, 0)\n    this.ticketRewardTarget.innerHTML = `${ex.reward.toFixed(2)}%`\n    this.poolSizePctTarget.textContent = parseFloat(ex.pool_info.percent).toFixed(2)\n    this.feeAvgTarget.innerHTML = humanize.decimalParts(ex.txFeeAvg / 100000000, false, 8, 4)\n    this.txFeeAvg = ex.txFeeAvg\n    this.powReward = ex.subsidy.pow\n    const treasuryTotal = ex.dev_fund + ex.treasury_bal.balance\n    this.devFundTarget.innerHTML = humanize.decimalParts(treasuryTotal / 100000000, true, 0)\n    if (ex.hash_rate > 0.001 && ex.hash_rate < 1) {\n      ex.hash_rate = ex.hash_rate * 1000\n    } else if (ex.hash_rate < 0.001) {\n      ex.hash_rate = ex.hash_rate * 1000000\n    }\n    this.hashrateTarget.innerHTML = humanize.decimalParts(ex.hash_rate, false, 3, 2)\n    this.hashrateDeltaTarget.innerHTML = humanize.fmtPercentage(ex.hash_rate_change_month)\n    this.blockVotesTarget.dataset.hash = blockData.block.hash\n    this.setVotes()\n    const block = blockData.block\n    this.blockHeightTarget.textContent = block.height\n    this.blockHeightTarget.href = `/block/${block.hash}`\n    this.blockSizeTarget.textContent = humanize.bytes(block.size)\n    this.blockTotalTarget.textContent = humanize.threeSigFigs(block.total)\n    this.blockchainSizeTarget.textContent = ex.formatted_size\n    this.avgBlockSizeTarget.textContent = ex.formattedAvgBlockSize\n    this.lastBlockTimeTarget.textContent = humanize.timeSince(block.blocktime_unix)\n    this.lastBlockTimeTarget.dataset.age = block.blocktime_unix\n    if (ex.exchange_rate) {\n      const xcRate = ex.exchange_rate.value\n      const btcIndex = ex.exchange_rate.index\n      if (this.hasPowConvertedTarget) {\n        this.powConvertedTarget.textContent = `${humanize.twoDecimals(ex.subsidy.pow / 1e8 * xcRate)} ${btcIndex}`\n      }\n      if (this.hasConvertedDevTarget) {\n        this.convertedDevTarget.textContent = `${humanize.threeSigFigs(treasuryTotal / 1e8 * xcRate)} ${btcIndex}`\n      }\n      if (this.hasConvertedSupplyTarget) {\n        this.convertedSupplyTarget.textContent = `${humanize.threeSigFigs(ex.coin_supply / 1e8 * xcRate)} ${btcIndex}`\n      }\n      if (this.hasConvertedDevSubTarget) {\n        this.convertedDevSubTarget.textContent = `${humanize.twoDecimals(ex.subsidy.dev / 1e8 * xcRate)} ${btcIndex}`\n      }\n      if (this.hasConvertedStakeTarget) {\n        this.convertedStakeTarget.textContent = `${humanize.twoDecimals(ex.sdiff * xcRate)} ${btcIndex}`\n      }\n      if (this.hasMarketCap) {\n        this.hasMarketCapTarget.textContent = `${humanize.threeSigFigs(ex.coin_supply / 1e8 * xcRate)} ${btcIndex}`\n      }\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport { requestJSON } from '../helpers/http'\nimport humanize from '../helpers/humanize_helper'\nimport { darkEnabled } from '../services/theme_service'\nimport globalEventBus from '../services/event_bus_service'\n\nlet Dygraph\nconst SELL = 1\nconst BUY = 2\nconst candlestick = 'candlestick'\nconst orders = 'orders'\nconst depth = 'depth'\nconst history = 'history'\nconst volume = 'volume'\nconst aggregatedKey = 'aggregated'\nconst anHour = '1h'\nconst minuteMap = {\n  '5m': 5,\n  '30m': 30,\n  '1h': 60,\n  '1d': 1440,\n  '1mo': 43200\n}\nconst PIPI = 2 * Math.PI\nconst prettyDurations = {\n  '5m': '5 min',\n  '30m': '30 min',\n  '1h': 'hour',\n  '1d': 'day',\n  '1mo': 'month'\n}\nconst exchangeLinks = {\n  binance: 'https://www.binance.com/en/trade/DCR_USDT',\n  btc_binance: 'https://www.binance.com/en/trade/DCR_BTC',\n  bittrex: 'https://bittrex.com/Market/Index?MarketName=BTC-DCR',\n  poloniex: 'https://poloniex.com/exchange#btc_dcr',\n  dragonex: 'https://dragonex.io/en-us/trade/index/dcr_btc',\n  huobi: 'https://www.hbg.com/en-us/exchange/?s=dcr_btc',\n  dcrdex: 'https://dex.decred.org',\n  coinex: 'https://www.coinex.com/en/exchange/DCR-USDT',\n  btc_coinex: 'https://www.coinex.com/en/exchange/dcr-btc'\n}\n\nconst btcPairUses = ['btc_binance', 'btc_coinex', 'dcrdex', 'aggregated']\n\nconst yAxisLabelWidth = {\n  usdt: {\n    depth: 40,\n    orders: 50,\n    candlestick: 30,\n    history: 30,\n    volume: 40\n  },\n  btc: {\n    depth: 40,\n    orders: 40,\n    candlestick: 60,\n    history: 60,\n    volume: 40\n  }\n}\n\nfunction isMobile () {\n  return window.innerWidth <= 768\n}\n\nfunction useBTCPair (exchange) {\n  return btcPairUses.indexOf(exchange) > -1\n}\n\nfunction useUSDPair (exchange) {\n  return btcPairUses.indexOf(exchange) < 0 || exchange === 'aggregated'\n}\n\nfunction getAxisWidth (pair, chart) {\n  if (!pair || pair === '' || !yAxisLabelWidth[pair] || !yAxisLabelWidth[pair][chart]) {\n    return 50\n  }\n  return yAxisLabelWidth[pair][chart]\n}\n\nfunction getYAxisLabel (label) {\n  return isMobile() ? '' : label\n}\n\nconst printNames = {\n  dcrdex: 'Dcrdex',\n  btc_coinex: 'Coinex'\n  // default is capitalize\n}\n\nfunction printName (token) {\n  const name = printNames[token]\n  if (name) return name\n  return humanize.capitalize(token)\n}\n\nconst defaultZoomPct = 20\nlet hidden, visibilityChange\nif (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n  hidden = 'hidden'\n  visibilityChange = 'visibilitychange'\n} else if (typeof document.msHidden !== 'undefined') {\n  hidden = 'msHidden'\n  visibilityChange = 'msvisibilitychange'\n} else if (typeof document.webkitHidden !== 'undefined') {\n  hidden = 'webkitHidden'\n  visibilityChange = 'webkitvisibilitychange'\n}\nlet focused = true\nlet aggStacking = true\nlet refreshAvailable = false\nlet availableCandlesticks, availableDepths\n\nfunction screenIsBig () {\n  return window.innerWidth >= 992\n}\n\nfunction validDepthExchange (token) {\n  return availableDepths.indexOf(token) > -1\n}\n\nfunction usesOrderbook (chart) {\n  return chart === depth || chart === orders\n}\n\nfunction usesCandlesticks (chart) {\n  return chart === candlestick || chart === volume || chart === history\n}\n\nlet requestCounter = 0\nlet responseCache = {}\n\nfunction hasCache (k) {\n  if (!responseCache[k]) return false\n  const expiration = new Date(responseCache[k].expiration)\n  return expiration > new Date()\n}\n\nfunction clearCache (k) {\n  if (!responseCache[k]) return\n  delete responseCache[k]\n}\n\nconst lightStroke = '#5587a4'\nconst darkStroke = '#ddd'\nlet chartStroke = lightStroke\nlet conversionFactor = 1\nlet btcPrice, fiatCode\nconst gridColor = '#a5b7cf'\nconst binList = ['5m', '30m', '1h', '4h', '1d', 'week', '1mo']\nlet settings = {}\nconst xcColors = [chartStroke, '#ed6d47', '#41be53', '#9228a7', '#dece12']\n\nlet colorNumerator = 0\nlet colorDenominator = 1\nconst hslS = '100%'\nconst hslL = '50%'\nconst hslOffset = 225 // 0 <= x < 360\n\n// These are the first four hues generated by getHue(\nconst exchangeHues = {\n  dcrdex: 'hsl(225,100%,50%)',\n  binance: 'hsl(45,100%,50%)',\n  bittrex: 'hsl(315,100%,50%)',\n  poloniex: 'hsl(135,100%,50%)'\n}\n\nconst hsl = (h) => `hsl(${(h + hslOffset) % 360},${hslS},${hslL})`\n// Generates colors on the hue sequence 0, 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16, ...\nfunction generateHue () {\n  if (colorNumerator >= colorDenominator) {\n    colorNumerator = 1 // reset the numerator\n    colorDenominator *= 2 // double the denominator\n    if (colorDenominator >= 512) { // Will generate 256 different hues\n      colorNumerator = 0\n      colorDenominator = 1\n    }\n    return generateHue()\n  }\n  const hue = colorNumerator / colorDenominator * 360\n  colorNumerator += 2\n  return hsl(hue)\n}\n\nfunction getHue (token) {\n  if (exchangeHues[token]) return exchangeHues[token]\n  exchangeHues[token] = generateHue()\n  return exchangeHues[token]\n}\n\n// Generate the constant hues so dynamically assigned hues won't use them.\nObject.keys(exchangeHues).forEach(generateHue)\n\nconst commonChartOpts = {\n  gridLineColor: gridColor,\n  axisLineColor: 'transparent',\n  underlayCallback: (ctx, area, dygraph) => {\n    ctx.lineWidth = 1\n    ctx.strokeStyle = gridColor\n    ctx.strokeRect(area.x, area.y, area.w, area.h)\n  },\n  // these should be set to avoid Dygraph strangeness\n  labels: [' ', ' '], // To avoid an annoying console message,\n  xlabel: ' ',\n  ylabel: ' ',\n  pointSize: 6,\n  showRangeSelector: true,\n  rangeSelectorPlotFillColor: '#b5d2ed',\n  foregroundStrokeColor: '#1e5180',\n  rangeSelectorAlpha: 0.4,\n  rangeSelectorHeight: 40\n}\n\nconst chartResetOpts = {\n  fillGraph: false,\n  strokeWidth: 2,\n  drawPoints: false,\n  logscale: false,\n  xRangePad: 0,\n  yRangePad: 0,\n  stackedGraph: false,\n  zoomCallback: null\n}\n\nfunction convertedThreeSigFigs (x) {\n  return humanize.threeSigFigs(x * conversionFactor)\n}\n\nfunction convertedEightDecimals (x) {\n  return (x * conversionFactor).toFixed(8)\n}\n\nfunction orderbookStats (bids, asks) {\n  const bidEdge = bids[0].price\n  const askEdge = asks[0].price\n  const midGap = (bidEdge + askEdge) / 2\n  return {\n    bidEdge: bidEdge,\n    askEdge: askEdge,\n    gap: askEdge - bidEdge,\n    midGap: midGap,\n    lowCut: 0.1 * midGap, // Low cutoff of 10% market.\n    highCut: midGap * 2 // High cutoff + 100%\n  }\n}\n\nconst dummyOrderbook = {\n  pts: [[0, 0, 0]],\n  outliers: {\n    asks: [],\n    bids: []\n  }\n}\n\nfunction sizedArray (len, v) {\n  const a = []\n  for (let i = 0; i < len; i++) {\n    a.push(v)\n  }\n  return a\n}\n\nfunction rangedPts (pts, cutoff) {\n  const l = []\n  const outliers = []\n  pts.forEach(pt => {\n    if (cutoff(pt)) {\n      outliers.push(pt)\n      return\n    }\n    l.push(pt)\n  })\n  return { pts: l, outliers: outliers }\n}\n\nfunction translateDepthSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  let accumulator = 0\n  const translated = sorted.pts.map(pt => {\n    accumulator += pt.quantity\n    pt = [pt.price, null, null]\n    pt[idx] = accumulator\n    return pt\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction translateDepthPoint (pt, offset, accumulator) {\n  const l = sizedArray(pt.volumes.length + 1, null)\n  l[0] = pt.price\n  pt.volumes.forEach((vol, i) => {\n    accumulator[i] += vol\n    l[offset + i + 1] = accumulator[i]\n  })\n  return l\n}\n\nfunction needsDummyPoint (pt, offset, accumulator) {\n  const xcCount = pt.volumes.length\n  for (let i = 0; i < xcCount; i++) {\n    if (pt.volumes[i] && accumulator[i] === 0) return { price: pt.price + offset, volumes: sizedArray(xcCount, 0) }\n  }\n  return false\n}\n\nfunction translateAggregatedDepthSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const xcCount = pts[0].volumes.length\n  const offset = idx === SELL ? 0 : xcCount\n  const zeroWidth = idx === SELL ? -1e-8 : 1e-8\n  const xcAccumulator = sizedArray(xcCount, 0)\n  const l = []\n  sorted.pts.forEach(pt => {\n    const zeros = needsDummyPoint(pt, zeroWidth, xcAccumulator)\n    if (zeros) {\n      l.push(translateDepthPoint(zeros, offset, xcAccumulator))\n    }\n    l.push(translateDepthPoint(pt, offset, xcAccumulator))\n  })\n  return { pts: l, outliers: sorted.outliers }\n}\n\nfunction translateOrderbookSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const translated = sorted.pts.map(pt => {\n    const l = [pt.price, null, null]\n    l[idx] = pt.quantity\n    return l\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction sumPt (pt) {\n  return pt.volumes.reduce((a, v) => { return a + v }, 0)\n}\n\nfunction translateAggregatedOrderbookSide (pts, idx, cutoff) {\n  const sorted = rangedPts(pts, cutoff)\n  const translated = sorted.pts.map(pt => {\n    const l = [pt.price, null, null]\n    l[idx] = sumPt(pt)\n    return l\n  })\n  return { pts: translated, outliers: sorted.outliers }\n}\n\nfunction processOrderbook (response, translator) {\n  const bids = response.data.bids\n  const asks = response.data.asks\n\n  if (!response.tokens) {\n    // Add the dummy points to make the chart line connect to the baseline and\n    // because otherwise Dygraph has a bug that adds an offset to the asks side.\n    bids.splice(0, 0, { price: bids[0].price + 1e-8, quantity: 0 })\n    asks.splice(0, 0, { price: asks[0].price - 1e-8, quantity: 0 })\n  }\n  if (!bids || !asks) {\n    console.warn('no bid/ask data in API response')\n    return dummyOrderbook\n  }\n  if (!bids.length || !asks.length) {\n    console.warn('empty bid/ask data in API response')\n    return dummyOrderbook\n  }\n  const stats = orderbookStats(bids, asks)\n  const buys = translator(bids, BUY, pt => pt.price < stats.lowCut)\n  buys.pts.reverse()\n  const sells = translator(asks, SELL, pt => pt.price > stats.highCut)\n\n  // Find points in overlapping region with duplicate rates, to deal with a\n  // Dygraphs bug.\n  let dupes\n  if (response.tokens) dupes = findAggregateDupes(buys.pts, sells.pts)\n\n  return {\n    pts: buys.pts.concat(sells.pts),\n    outliers: buys.outliers.concat(sells.outliers),\n    stats: stats,\n    dupes: dupes\n  }\n}\n\nfunction candlestickPlotter (e) {\n  if (e.seriesIndex !== 0) return\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n  ctx.strokeStyle = chartStroke\n  ctx.lineWidth = 1\n  const sets = e.allSeriesPoints\n  if (sets.length < 2) {\n    // do nothing\n    return\n  }\n\n  const barWidth = area.w * Math.abs(sets[0][1].x - sets[0][0].x) * 0.8\n  const [opens, closes, highs, lows] = sets\n  let open, close, high, low\n  for (let i = 0; i < sets[0].length; i++) {\n    ctx.strokeStyle = '#777'\n    open = opens[i]\n    close = closes[i]\n    high = highs[i]\n    low = lows[i]\n    const centerX = area.x + open.x * area.w\n    const topY = area.h * high.y + area.y\n    const bottomY = area.h * low.y + area.y\n    ctx.beginPath()\n    ctx.moveTo(centerX, topY)\n    ctx.lineTo(centerX, bottomY)\n    ctx.stroke()\n    ctx.strokeStyle = 'black'\n    let top\n    if (open.yval > close.yval) {\n      ctx.fillStyle = '#f93f39cc'\n      top = area.h * open.y + area.y\n    } else {\n      ctx.fillStyle = '#1acc84cc'\n      top = area.h * close.y + area.y\n    }\n    const h = area.h * Math.abs(open.y - close.y)\n    const left = centerX - barWidth / 2\n    ctx.fillRect(left, top, barWidth, h)\n    ctx.strokeRect(left, top, barWidth, h)\n  }\n}\n\nfunction drawOrderPt (ctx, pt) {\n  return drawPt(ctx, pt, orderPtSize, true)\n}\n\nfunction drawPt (ctx, pt, size, bordered) {\n  ctx.beginPath()\n  ctx.arc(pt.x, pt.y, size, 0, PIPI)\n  ctx.fill()\n  if (bordered) ctx.stroke()\n}\n\nfunction drawLine (ctx, start, end) {\n  ctx.beginPath()\n  ctx.moveTo(start.x, start.y)\n  ctx.lineTo(end.x, end.y)\n  ctx.stroke()\n}\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction canvasXY (area, pt) {\n  return {\n    x: area.x + pt.x * area.w,\n    y: area.y + pt.y * area.h\n  }\n}\n\nlet orderPtSize = 7\nif (!screenIsBig()) orderPtSize = 4\n\nfunction orderPlotter (e) {\n  if (e.seriesIndex !== 0) return\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n\n  // let buyColor, sellColor\n  const [buyColor, sellColor] = e.dygraph.getColors()\n\n  const [buys, sells] = e.allSeriesPoints\n  ctx.lineWidth = 1\n  ctx.strokeStyle = darkEnabled() ? 'black' : 'white'\n  for (let i = 0; i < buys.length; i++) {\n    const buy = buys[i]\n    const sell = sells[i]\n    if (buy) {\n      ctx.fillStyle = buyColor\n      drawOrderPt(ctx, canvasXY(area, buy))\n    }\n    if (sell) {\n      ctx.fillStyle = sellColor\n      drawOrderPt(ctx, canvasXY(area, sell))\n    }\n  }\n}\n\nconst greekCapDelta = String.fromCharCode(916)\n\nfunction depthLegendPlotter (e) {\n  const tokens = e.dygraph.getOption('tokens')\n  const stats = e.dygraph.getOption('stats')\n\n  const area = e.plotArea\n  const ctx = e.drawingContext\n\n  const dark = darkEnabled()\n  const big = screenIsBig()\n  const mg = e.dygraph.toDomCoords(stats.midGap, 0)\n  const midGap = makePt(mg[0], mg[1])\n  const fontSize = big ? 15 : 13\n  ctx.textAlign = 'left'\n  ctx.textBaseline = 'top'\n  ctx.font = `${fontSize}px arial`\n  ctx.lineWidth = 1\n  ctx.strokeStyle = chartStroke\n  const boxColor = dark ? '#2228' : '#fff8'\n\n  const midGapPrice = humanize.threeSigFigs(stats.midGap)\n  const deltaPctTxt = `${greekCapDelta} : ${humanize.threeSigFigs(stats.gap / stats.midGap * 100)}%`\n  const fiatGapTxt = `${humanize.threeSigFigs(stats.gap * btcPrice)} ${fiatCode}`\n  const btcGapTxt = `${humanize.threeSigFigs(stats.gap)} BTC`\n  let boxW = 0\n  const txts = [fiatGapTxt, btcGapTxt, deltaPctTxt, midGapPrice]\n  txts.forEach(txt => {\n    const w = ctx.measureText(txt).width\n    if (w > boxW) boxW = w\n  })\n  let rowHeight = fontSize * 1.5\n  const rowPad = big ? (rowHeight - fontSize) / 2 : (rowHeight - fontSize) / 3\n  const boxPad = big ? rowHeight / 3 : rowHeight / 5\n  let x\n  let y = big ? fontSize * 2 : fontSize\n\n  // If it's an aggregated chart, start with a color legend\n  if (tokens) {\n    // If this is an aggregated chart, draw the color legend first\n    const ptSize = fontSize / 3\n    let legW = 0\n    tokens.forEach(token => {\n      const w = ctx.measureText(token).width + rowHeight// leave space for dot\n      if (w > legW) legW = w\n    })\n    x = midGap.x - legW / 2\n    const boxH = rowHeight * tokens.length\n    ctx.fillStyle = boxColor\n    const rect = makePt(x - boxPad, y - boxPad)\n    const dims = makePt(legW + boxPad * 4, boxH + boxPad * 2)\n    ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n    ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n    tokens.forEach(token => {\n      ctx.fillStyle = getHue(token)\n      drawPt(ctx, makePt(x + rowHeight / 2, y + rowHeight / 2 - 1), ptSize)\n      ctx.fillStyle = chartStroke\n      ctx.fillText(token, x + rowPad + rowHeight, y + rowPad)\n      y += rowHeight\n    })\n    y += boxPad * 3\n    x = midGap.x - boxW / 2\n  } else {\n    y += area.h / 4\n    x = midGap.x - boxW / 2 - 25\n  }\n  // Label the gap size.\n  rowHeight -= 2 // just looks better\n  ctx.fillStyle = boxColor\n  const rect = makePt(x - boxPad, y - boxPad)\n  const dims = makePt(boxW + boxPad * 3, rowHeight * 4 + boxPad * 2)\n  ctx.fillRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.strokeRect(rect.x, rect.y, dims.x, dims.y)\n  ctx.fillStyle = chartStroke\n  const centerX = x + (boxW / 2)\n  const write = s => {\n    const cornerX = centerX - (ctx.measureText(s).width / 2)\n    ctx.fillText(s, cornerX + rowPad, y + rowPad)\n    y += rowHeight\n  }\n\n  ctx.save()\n  ctx.font = `bold ${fontSize}px arial`\n  write(midGapPrice)\n  ctx.restore()\n  write(deltaPctTxt)\n  write(fiatGapTxt)\n  write(btcGapTxt)\n\n  // Draw a line from the box to the gap\n  drawLine(ctx,\n    makePt(x + boxW / 2, y + boxPad * 2 + boxPad),\n    makePt(midGap.x, midGap.y - boxPad))\n}\n\nfunction depthPlotter (e) {\n  Dygraph.Plotters.fillPlotter(e)\n  const tokens = e.dygraph.getOption('tokens')\n  if (tokens && e.dygraph.getOption('stackedGraph')) {\n    if (e.seriesIndex === 0 || e.seriesIndex === tokens.length) {\n      e.color = chartStroke\n    } else {\n      e.color = 'transparent'\n    }\n    fixAggregateStacking(e)\n  }\n\n  Dygraph.Plotters.linePlotter(e)\n\n  // Callout box with color legend\n  if (e.seriesIndex === e.allSeriesPoints.length - 1) depthLegendPlotter(e)\n}\n\nlet stickZoom, orderZoom\nlet samePair\nfunction calcStickWindow (start, end, bin) {\n  const halfBin = minuteMap[bin] / 2\n  start = new Date(start.getTime())\n  end = new Date(end.getTime())\n  return [\n    start.setMinutes(start.getMinutes() - halfBin),\n    end.setMinutes(end.getMinutes() + halfBin)\n  ]\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['chartSelect', 'exchanges', 'bin', 'chart', 'legend', 'conversion',\n      'xcName', 'xcLogo', 'actions', 'sticksOnly', 'depthOnly', 'chartLoader',\n      'xcRow', 'xcIndex', 'price', 'age', 'ageSpan', 'link', 'aggOption',\n      'aggStack', 'zoom', 'pairSelect', 'exchangeBtnArea', 'fiatLabel',\n      'usdChange', 'btcPrice', 'btcChange', 'dcrVol', 'usdVol',\n      'volCapRate', 'lowPrice', 'highPrice', 'priceBar', 'priceBarMarker',\n      'priceBarLabel']\n  }\n\n  async connect () {\n    this.isHomepage = !window.location.href.includes('/market')\n    this.query = new TurboQuery()\n    settings = TurboQuery.nullTemplate(['chart', 'xc', 'bin', 'xcs', 'pair'])\n    this.exchangesButtons = this.exchangesTarget.querySelectorAll('button')\n    this.dcrBtcPrice = this.data.get('dcrbtcprice')\n    this.dcrBtcVolume = this.data.get('dcrbtcvolume')\n    this.dcrUsdtPrice = this.data.get('price')\n    this.dcrUsdtVolume = this.data.get('volume')\n    const _this = this\n    if (!this.isHomepage) {\n      this.query.update(settings)\n    } else {\n      settings.chart = 'history'\n      let hasBinance = false\n      this.exchangesButtons.forEach(button => {\n        if (button.name === 'binance') {\n          hasBinance = true\n          settings.xc = button.name\n          settings.xcs = button.name\n          // in mobile view mode, default bin is 1d\n          settings.bin = isMobile() ? '1d' : '1mo'\n        }\n      })\n      if (!hasBinance) {\n        const defaultOption = _this.exchangesButtons[0]\n        settings.xc = defaultOption.name\n        settings.xcs = defaultOption.name\n        settings.bin = '1d'\n      }\n    }\n    this.processors = {\n      orders: this.processOrders,\n      candlestick: this.processCandlesticks,\n      history: this.processHistory,\n      xchistory: this.processXcsHistory,\n      depth: this.processDepth.bind(this),\n      volume: this.processVolume,\n      xcvolume: this.processXcsVolume\n    }\n    commonChartOpts.labelsDiv = this.legendTarget\n    this.converted = false\n    btcPrice = parseFloat(this.conversionTarget.dataset.factor)\n    fiatCode = this.conversionTarget.dataset.code\n    this.binButtons = this.binTarget.querySelectorAll('button')\n    this.lastUrl = null\n    this.zoomButtons = this.zoomTarget.querySelectorAll('button')\n    this.depthZoomCallback = this._depthZoomCallback.bind(this)\n    availableCandlesticks = {}\n    availableDepths = []\n    this.exchangeOptions = []\n\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const option = this.exchangesButtons[i]\n      this.exchangeOptions.push(option)\n      if (option.dataset.sticks) {\n        availableCandlesticks[option.name] = option.dataset.bins.split(';')\n      }\n      if (option.dataset.depth) availableDepths.push(option.name)\n    }\n    availableDepths.push('btc_aggregated')\n    this.chartOptions = []\n    const opts = this.chartSelectTarget.options\n    for (let i = 0; i < opts.length; i++) {\n      this.chartOptions.push(opts[i])\n    }\n\n    if (settings.chart == null) {\n      settings.chart = depth\n    }\n    if (settings.pair == null || !settings.pair) {\n      settings.pair = 'usdt'\n    }\n    this.pairSelectTarget.value = settings.pair\n    if (settings.xc == null) {\n      settings.xc = usesOrderbook(settings.chart) ? aggregatedKey : 'binance'\n    }\n    if (settings.stack) {\n      settings.stack = parseInt(settings.stack)\n      if (settings.stack === 0) aggStacking = false\n    }\n    if (settings.bin == null) {\n      settings.bin = anHour\n    }\n    if (settings.pair === 'btc') {\n      this.setAggRowData(true)\n    }\n    // if chart is history, set to xcs\n    if ((settings.chart === 'history' || settings.chart === 'volume') && (!settings.xcs || settings.xcs === null)) {\n      settings.xcs = settings.xc\n    }\n    this.handlerExchangesDisplay()\n    this.setButtons()\n    this.setExchangeName()\n    this.resize = this._resize.bind(this)\n    window.addEventListener('resize', this.resize)\n    this.tabVis = this._tabVis.bind(this)\n    document.addEventListener(visibilityChange, this.tabVis)\n    this.processNightMode = this._processNightMode.bind(this)\n    globalEventBus.on('NIGHT_MODE', this.processNightMode)\n    this.processXcUpdate = this._processXcUpdate.bind(this)\n    globalEventBus.on('EXCHANGE_UPDATE', this.processXcUpdate)\n    if (darkEnabled()) chartStroke = darkStroke\n    this.setNameDisplay()\n    this.fetchInitialData()\n    // TODO: handler all pages\n    if (this.isHomepage) {\n      this.updateMarketPriceBar()\n    }\n  }\n\n  updateMarketPriceBar () {\n    const currentPrice = Number(this.priceBarTarget.dataset.price)\n    const lowPrice = Number(this.priceBarTarget.dataset.low)\n    const highPrice = Number(this.priceBarTarget.dataset.high)\n    const percent = ((currentPrice - lowPrice) / (highPrice - lowPrice)) * 100\n    this.priceBarMarkerTarget.style.left = `${percent}%`\n    this.priceBarLabelTarget.style.left = `${percent}%`\n  }\n\n  handlerRadiusForBtnGroup (btnGroup) {\n    let firstSetted = false; let lastSetted = false\n    for (let i = 0; i < btnGroup.length; i++) {\n      const btn = btnGroup[i]\n      if (!firstSetted && !btn.classList.contains('d-hide') && !btn.classList.contains('d-none')) {\n        btn.classList.add('first-toggle-btn')\n        firstSetted = true\n      } else {\n        btn.classList.remove('first-toggle-btn')\n      }\n      const lastBtn = btnGroup[btnGroup.length - i - 1]\n      if (!lastSetted && !lastBtn.classList.contains('d-hide') && !lastBtn.classList.contains('d-none')) {\n        lastBtn.classList.add('last-toggle-btn')\n        lastSetted = true\n      } else {\n        lastBtn.classList.remove('last-toggle-btn')\n      }\n    }\n  }\n\n  setAggRowData (isBtcPair) {\n    const aggRow = this.getExchangeRow(aggregatedKey)\n    aggRow.price.textContent = humanize.threeSigFigs(isBtcPair ? this.dcrBtcPrice : this.dcrUsdtPrice)\n    aggRow.volume.textContent = humanize.threeSigFigs(isBtcPair ? this.dcrBtcVolume : this.dcrUsdtVolume)\n  }\n\n  disconnect () {\n    responseCache = {}\n    window.removeEventListener('resize', this.resize)\n    document.removeEventListener(visibilityChange, this.tabVis)\n    globalEventBus.off('NIGHT_MODE', this.processNightMode)\n    globalEventBus.off('EXCHANGE_UPDATE', this.processXcUpdate)\n  }\n\n  _resize () {\n    if (this.graph) {\n      orderPtSize = screenIsBig() ? 7 : 4\n      this.graph.resize()\n    }\n    this.setNameDisplay()\n  }\n\n  setNameDisplay () {\n    if (screenIsBig()) {\n      this.xcNameTarget.classList.remove('d-hide')\n    } else {\n      this.xcNameTarget.classList.add('d-hide')\n    }\n  }\n\n  _tabVis () {\n    focused = !document[hidden]\n    if (focused && refreshAvailable) this.refreshChart()\n  }\n\n  async fetchInitialData () {\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    const dummyGraph = new Dygraph(document.createElement('div'), [[0, 1]], { labels: ['', ''] })\n\n    // A little hack to start with the default interaction model. Updating the\n    // interactionModel with updateOptions later does not appear to work.\n    const model = dummyGraph.getOption('interactionModel')\n    model.mousedown = (event, g, context) => {\n      // End panning even if the mouseup event is not on the chart.\n      const mouseup = () => {\n        context.isPanning = false\n        document.removeEventListener('mouseup', mouseup)\n      }\n      document.addEventListener('mouseup', mouseup)\n      context.initializeMouseDown(event, g, context)\n      Dygraph.startPan(event, g, context)\n    }\n    model.mouseup = (event, g, context) => {\n      if (!context.isPanning) return\n      Dygraph.endPan(event, g, context)\n      context.isPanning = false // I think Dygraph is supposed to set this, but they don't.\n      const zoomCallback = g.getOption('zoomCallback')\n      if (zoomCallback) {\n        const range = g.xAxisRange()\n        zoomCallback(range[0], range[1], g.yAxisRanges())\n      }\n    }\n    model.mousemove = (event, g, context) => {\n      if (!context.isPanning) return\n      Dygraph.movePan(event, g, context)\n    }\n    model.touchstart = (event, g, context) => {\n      console.log('TODO: touch start')\n    }\n    model.touchmove = (event, g, context) => {\n      console.log('TODO: touch move')\n    }\n    model.touchend = (event, g, context) => {\n      console.log('TODO: touch end')\n    }\n    commonChartOpts.interactionModel = model\n\n    this.graph = new Dygraph(this.chartTarget, [[0, 0], [0, 1]], commonChartOpts)\n    this.fetchChart()\n  }\n\n  async fetchChart (isRefresh) {\n    let url = null\n    requestCounter++\n    const thisRequest = requestCounter\n    let bin = settings.bin\n    let xc = settings.xc\n    const _this = this\n    if (xc === 'aggregated' && settings.pair === 'btc') {\n      xc = 'btc_' + xc\n    }\n    const chart = settings.chart\n    const oldZoom = this.graph.xAxisRange()\n    if (usesCandlesticks(chart)) {\n      if (settings.chart !== 'history' && settings.chart !== 'volume') {\n        if (!(xc in availableCandlesticks)) {\n          console.warn('invalid candlestick exchange:', xc)\n          return\n        }\n        if (availableCandlesticks[xc].indexOf(bin) === -1) {\n          console.warn('invalid bin:', bin)\n          bin = _this.setLastBin(xc)\n        }\n      }\n      url = `/api/chart/market/${xc}/candlestick/${bin}`\n    } else if (usesOrderbook(chart)) {\n      if (!validDepthExchange(xc)) {\n        console.warn('invalid depth exchange:', xc)\n        return\n      }\n      url = `/api/chart/market/${xc}/depth`\n    }\n    if (!url) {\n      console.warn('invalid chart:', chart)\n      return\n    }\n\n    this.chartLoaderTarget.classList.add('loading')\n    let response\n    const xcResponseMap = new Map()\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      const xcs = settings.xcs && settings.xcs !== null ? settings.xcs : settings.xc\n      const xcList = xcs.split(',')\n      if (xcList.length > 0) {\n        for (let i = 0; i < xcList.length; i++) {\n          if (xcList[i].trim() === '') {\n            continue\n          }\n          const itemXc = xcList[i].trim()\n          if (!(itemXc in availableCandlesticks)) {\n            console.warn('invalid candlestick exchange: ', xc)\n            continue\n          }\n          if (availableCandlesticks[itemXc].indexOf(bin) === -1) {\n            console.warn('invalid bin:', bin)\n            bin = _this.setLastBin(itemXc)\n          }\n          const xcUrl = `/api/chart/market/${xcList[i]}/candlestick/${bin}`\n          let xcResponse\n          if (hasCache(xcUrl)) {\n            xcResponse = responseCache[xcUrl]\n          } else {\n            // response = await axios.get(url)\n            xcResponse = await requestJSON(xcUrl)\n            responseCache[xcUrl] = xcResponse\n          }\n          xcResponseMap.set(xcList[i], xcResponse)\n        }\n        if (thisRequest !== requestCounter) {\n          // new request was issued while waiting.\n          this.chartLoaderTarget.classList.remove('loading')\n          return\n        }\n      }\n    } else {\n      if (hasCache(url)) {\n        response = responseCache[url]\n      } else {\n        // response = await axios.get(url)\n        response = await requestJSON(url)\n        responseCache[url] = response\n        if (thisRequest !== requestCounter) {\n          // new request was issued while waiting.\n          this.chartLoaderTarget.classList.remove('loading')\n          return\n        }\n      }\n    }\n    // Fiat conversion only available for order books for now.\n    if (usesOrderbook(chart)) {\n      this.ageSpanTarget.dataset.age = response.data.time\n      this.ageSpanTarget.textContent = humanize.timeSince(response.data.time)\n      this.ageTarget.classList.remove('d-hide')\n    } else {\n      this.ageTarget.classList.add('d-hide')\n    }\n    // clear canvas before update\n    const canvas = this.chartTarget.querySelector('canvas')\n    if (canvas) {\n      const context = canvas.getContext('2d')\n      context.clearRect(0, 0, canvas.width, canvas.height)\n    }\n    this.graph.updateOptions(chartResetOpts, true)\n    if (settings.chart === 'history') {\n      this.graph.updateOptions(this.processors.xchistory(xcResponseMap))\n    } else if (settings.chart === 'volume') {\n      this.graph.updateOptions(this.processors.xcvolume(xcResponseMap))\n    } else {\n      this.graph.updateOptions(this.processors[chart](response))\n    }\n    if (!this.isHomepage) {\n      this.query.replace(settings)\n    }\n    if (isRefresh) this.graph.updateOptions({ dateWindow: oldZoom })\n    else this.resetZoom()\n    this.chartLoaderTarget.classList.remove('loading')\n    this.lastUrl = url\n    refreshAvailable = false\n  }\n\n  setLastBin (xc) {\n    const availBins = usesOrderbook(settings.chart) ? availableDepths[xc] : availableCandlesticks[xc]\n    for (let i = this.binButtons.length - 1; i >= 0; i--) {\n      const button = this.binButtons[i]\n      if (!button.classList.contains('d-hide') && !button.classList.contains('d-none') && availBins.indexOf(button.name)) {\n        settings.bin = button.name\n        this.setBinSelection()\n        return button.name\n      }\n    }\n    return ''\n  }\n\n  processCandlesticks (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    const data = response.sticks.map(stick => {\n      const t = new Date(stick.start)\n      t.setMinutes(t.getMinutes() + halfDuration)\n      return [t, stick.open, stick.close, stick.high, stick.low]\n    })\n    if (data.length === 0) return\n    // limit to 50 points to start. Too many candlesticks = bad.\n    let start = data[0][0]\n    if (data.length > 50) {\n      start = data[data.length - 50][0]\n    }\n    stickZoom = calcStickWindow(start, data[data.length - 1][0], settings.bin)\n    return {\n      file: data,\n      labels: ['time', 'open', 'close', 'high', 'low'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel(`Price (${settings.pair === 'btc' ? 'BTC' : 'USD'})`),\n      plotter: candlestickPlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      }\n    }\n  }\n\n  processXcsHistory (responseMap) {\n    const labels = ['time']\n    const colors = []\n    const timeArray = []\n    const timeDataMap = new Map()\n    xcColors[0] = chartStroke\n    let index = 0\n    for (const [key, value] of responseMap) {\n      labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n      colors.push(xcColors[index])\n      value.sticks.map(stick => {\n        const time = new Date(stick.start)\n        if (key === 'huobi' && settings.bin !== '1h') {\n          time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n        }\n        if (settings.bin === '1mo') {\n          time.setHours(0, 0, 0, 0)\n          time.setDate(15)\n        } else if (settings.bin === '1d') {\n          time.setHours(0, 0, 0, 0)\n        } else if (settings.bin === '1h') {\n          time.setMinutes(30, 0, 0)\n        }\n        const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n        // check time exist\n        if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n          timeArray.push(time.getTime())\n        }\n        // check exist on data map\n        const timeInt = time.getTime()\n        let dataArr\n        if (timeDataMap.has(timeInt)) {\n          dataArr = timeDataMap.get(timeInt)\n          dataArr[index] = avg\n        } else {\n          dataArr = []\n          for (let i = 0; i < responseMap.size; i++) {\n            dataArr.push(0)\n          }\n          dataArr[index] = avg\n        }\n        timeDataMap.set(timeInt, dataArr)\n      })\n      index++\n    }\n\n    timeArray.sort(function (time1, time2) {\n      if (time1 > time2) {\n        return 1\n      } else if (time1 < time2) {\n        return -1\n      }\n      return 0\n    })\n    // remove all has zero value item\n    const resArray = []\n    timeArray.forEach((time) => {\n      if (timeDataMap.has(time)) {\n        const dataArray = timeDataMap.get(time)\n        // check has zero data\n        let hasZero = false\n        dataArray.forEach((val) => {\n          if (!val || val <= 0) {\n            hasZero = true\n          }\n        })\n        if (!hasZero) {\n          resArray.push(time)\n        }\n      }\n    })\n    return {\n      file: resArray.map(time => {\n        if (timeDataMap.has(time)) {\n          const dataArray = timeDataMap.get(time)\n          const res = []\n          res.push(new Date(time))\n          res.push(...dataArray)\n          return res\n        }\n        const res = []\n        res.push(new Date(time))\n        for (let i = 0; i < labels.length - 1; i++) {\n          res.push(0)\n        }\n        return res\n      }),\n      labels: labels,\n      xlabel: 'Time',\n      ylabel: getYAxisLabel(`Price (${settings.pair === 'btc' ? 'BTC' : 'USD'})`),\n      colors: colors,\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      },\n      strokeWidth: 2\n    }\n  }\n\n  processHistory (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    return {\n      file: response.sticks.map(stick => {\n        const t = new Date(stick.start)\n        t.setMinutes(t.getMinutes() + halfDuration)\n        // Not sure what the best way to reduce a candlestick to a single number\n        // Trying this simple approach for now.\n        const avg = (stick.open + stick.close + stick.high + stick.low) / 4\n        return [t, avg]\n      }),\n      labels: ['time', 'price'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel(`Price (${settings.pair === 'btc' ? 'BTC' : 'USD'})`),\n      colors: [chartStroke],\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      },\n      strokeWidth: 3\n    }\n  }\n\n  processXcsVolume (responseMap) {\n    const labels = ['time']\n    const colors = []\n    const timeArray = []\n    const timeDataMap = new Map()\n    xcColors[0] = chartStroke\n    let index = 0\n    for (const [key, value] of responseMap) {\n      labels.push(key.charAt(0).toUpperCase() + key.slice(1))\n      colors.push(xcColors[index])\n      value.sticks.map(stick => {\n        const time = new Date(stick.start)\n        if (key === 'huobi' && settings.bin !== '1h') {\n          time.setTime(time.getTime() + (8 * 60 * 60 * 1000))\n        }\n        if (settings.bin === '1mo') {\n          time.setHours(0, 0, 0, 0)\n          time.setDate(15)\n        } else if (settings.bin === '1d') {\n          time.setHours(0, 0, 0, 0)\n        } else if (settings.bin === '1h') {\n          time.setMinutes(30, 0, 0)\n        }\n        const vol = stick.volume\n        // check time exist\n        if (!timeArray.some(tmpTime => tmpTime === time.getTime())) {\n          timeArray.push(time.getTime())\n        }\n        // check exist on data map\n        const timeInt = time.getTime()\n        let dataArr\n        if (timeDataMap.has(timeInt)) {\n          dataArr = timeDataMap.get(timeInt)\n          dataArr[index] = vol\n        } else {\n          dataArr = []\n          for (let i = 0; i < responseMap.size; i++) {\n            dataArr.push(0)\n          }\n          dataArr[index] = vol\n        }\n        timeDataMap.set(timeInt, dataArr)\n      })\n      index++\n    }\n    timeArray.sort(function (time1, time2) {\n      if (time1 > time2) {\n        return 1\n      } else if (time1 < time2) {\n        return -1\n      }\n      return 0\n    })\n    // remove all has zero value item\n    const resArray = []\n    timeArray.forEach((time) => {\n      if (timeDataMap.has(time)) {\n        const dataArray = timeDataMap.get(time)\n        // check has zero data\n        let hasZero = false\n        dataArray.forEach((val) => {\n          if (!val || val <= 0) {\n            hasZero = true\n          }\n        })\n        if (!hasZero) {\n          resArray.push(time)\n        }\n      }\n    })\n    return {\n      file: resArray.map(time => {\n        if (timeDataMap.has(time)) {\n          const dataArray = timeDataMap.get(time)\n          const res = []\n          res.push(new Date(time))\n          res.push(...dataArray)\n          return res\n        }\n        const res = []\n        res.push(new Date(time))\n        for (let i = 0; i < labels.length - 1; i++) {\n          res.push(0)\n        }\n        return res\n      }),\n      labels: labels,\n      xlabel: 'Time',\n      ylabel: getYAxisLabel(`Volume (DCR / ${prettyDurations[settings.bin]})`),\n      colors: colors,\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      },\n      strokeWidth: 2\n    }\n  }\n\n  processVolume (response) {\n    const halfDuration = minuteMap[settings.bin] / 2\n    return {\n      file: response.sticks.map(stick => {\n        const t = new Date(stick.start)\n        t.setMinutes(t.getMinutes() + halfDuration)\n        return [t, stick.volume]\n      }),\n      labels: ['time', 'volume'],\n      xlabel: 'Time',\n      ylabel: getYAxisLabel(`Volume (DCR / ${prettyDurations[settings.bin]})`),\n      colors: [chartStroke],\n      plotter: Dygraph.Plotters.linePlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: Dygraph.dateAxisLabelFormatter\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      },\n      strokeWidth: 3\n    }\n  }\n\n  processDepth (response) {\n    if (response.tokens) {\n      return this.processAggregateDepth(response)\n    }\n    const data = processOrderbook(response, translateDepthSide)\n    return {\n      labels: ['price', 'cumulative sell', 'cumulative buy'],\n      file: data.pts,\n      fillGraph: true,\n      colors: ['#ed6d47', '#41be53'],\n      xlabel: 'Price (USD)',\n      ylabel: getYAxisLabel('Volume (DCR)'),\n      tokens: null,\n      stats: data.stats,\n      plotter: depthPlotter, // Don't use Dygraph.linePlotter here. fillGraph won't work.\n      zoomCallback: this.depthZoomCallback,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs,\n          valueFormatter: convertedEightDecimals\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      }\n    }\n  }\n\n  processAggregateDepth (response) {\n    // Re-order the data so that deepest books are first.\n    reorderAggregateData(response)\n    const tokens = response.tokens\n    const data = processOrderbook(response, translateAggregatedDepthSide)\n    const xcCount = tokens.length\n    const keys = sizedArray(xcCount * 2 + 1, null)\n    keys[0] = 'price'\n    const colors = sizedArray(xcCount * 2, null)\n    for (let i = 0; i < xcCount; i++) {\n      const token = tokens[i]\n      const color = getHue(token)\n      keys[i + 1] = ` ${token} sell`\n      keys[xcCount + i + 1] = ` ${token} buy`\n      colors[i] = color\n      colors[xcCount + i] = color\n    }\n    return {\n      labels: keys,\n      file: data.pts,\n      colors: colors,\n      xlabel: 'Price (USD)',\n      ylabel: getYAxisLabel('Volume (DCR)'),\n      plotter: depthPlotter,\n      fillGraph: aggStacking,\n      stackedGraph: aggStacking,\n      tokens: tokens,\n      stats: data.stats,\n      dupes: data.dupes,\n      zoomCallback: this.depthZoomCallback,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs,\n          valueFormatter: convertedEightDecimals\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      }\n    }\n  }\n\n  processOrders (response) {\n    const data = processOrderbook(response, response.tokens ? translateAggregatedOrderbookSide : translateOrderbookSide)\n    return {\n      labels: ['price', 'sell', 'buy'],\n      file: data.pts,\n      colors: ['#f93f39cc', '#1acc84cc'],\n      xlabel: 'Price (USD)',\n      ylabel: getYAxisLabel('Volume (DCR)'),\n      plotter: orderPlotter,\n      axes: {\n        x: {\n          axisLabelFormatter: convertedThreeSigFigs\n        },\n        y: {\n          axisLabelFormatter: humanize.threeSigFigs,\n          valueFormatter: humanize.threeSigFigs,\n          axisLabelWidth: getAxisWidth(settings.pair, settings.chart)\n        }\n      },\n      zoomCallback: this.depthZoomCallback,\n      stats: data.stats,\n      strokeWidth: 0,\n      drawPoints: true,\n      logscale: true,\n      xRangePad: 15,\n      yRangePad: 15\n    }\n  }\n\n  justifyBins () {\n    let bins = []\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      if (!settings.xcs || settings.xcs === '') {\n        settings.xcs = settings.xc === 'aggregated' ? this.exchangesButtons[0].name : settings.xc\n      }\n      bins = this.getHistoryChartAvailableBins()\n    } else {\n      if (settings.xc === 'aggregated' && settings.chart === 'candlestick') {\n        settings.xc = this.exchangesButtons[0].name\n      }\n      bins = availableCandlesticks[settings.xc]\n    }\n    if (bins.indexOf(settings.bin) === -1) {\n      settings.bin = bins[0]\n      this.setBinSelection()\n    }\n  }\n\n  setActiveExchanges (activeExchanges) {\n    this.exchangesButtons.forEach(exchangeBtn => {\n      if (activeExchanges.includes(exchangeBtn.name)) {\n        exchangeBtn.classList.add('active')\n      } else if (exchangeBtn.classList.contains('active')) {\n        exchangeBtn.classList.remove('active')\n      }\n    })\n  }\n\n  setButtons () {\n    this.chartSelectTarget.value = settings.chart\n    let lastExchangeBtn = this.exchangesButtons[0]\n    let lastExchangeIndex = 0\n    this.exchangesButtons.forEach(exchangeBtn => {\n      const idx = Number(exchangeBtn.dataset.exchangeindex)\n      if (idx > lastExchangeIndex) {\n        lastExchangeIndex = idx\n        lastExchangeBtn = exchangeBtn\n      }\n    })\n    const xsList = settings.chart === 'history' || settings.chart === 'volume' ? settings.xcs.split(',') : settings.xc.split(',')\n    this.setActiveExchanges(xsList)\n    if (usesOrderbook(settings.chart)) {\n      this.binTarget.classList.add('d-hide')\n      this.zoomTarget.classList.remove('d-hide')\n      this.aggOptionTarget.classList.remove('d-hide')\n      lastExchangeBtn.classList.remove('last-toggle-btn')\n    } else {\n      this.binTarget.classList.remove('d-hide')\n      this.zoomTarget.classList.add('d-hide')\n      this.aggOptionTarget.classList.add('d-hide')\n      lastExchangeBtn.classList.add('last-toggle-btn')\n      let bins\n      if (settings.chart === 'history' || settings.chart === 'volume') {\n        bins = this.getHistoryChartAvailableBins()\n      } else {\n        bins = availableCandlesticks[settings.xc]\n      }\n      this.binButtons.forEach(button => {\n        if (bins.indexOf(button.name) >= 0) {\n          button.classList.remove('d-hide')\n        } else {\n          button.classList.add('d-hide')\n        }\n      })\n      this.setBinSelection()\n    }\n    const depthDisabled = !validDepthExchange(settings.xc)\n    this.depthOnlyTargets.forEach(option => {\n      option.disabled = depthDisabled\n    })\n    if (settings.xc === aggregatedKey && settings.chart === depth) {\n      this.aggStackTarget.classList.remove('d-hide')\n      settings.stack = aggStacking ? 1 : 0\n    } else {\n      this.aggStackTarget.classList.add('d-hide')\n      settings.stack = null\n    }\n    this.handlerRadiusForBtnGroup(this.exchangesButtons)\n    this.handlerRadiusForBtnGroup(this.binButtons)\n  }\n\n  getHistoryChartAvailableBins () {\n    const bins = []\n    let xcs = [settings.xc]\n    if (settings.xcs && settings.xcs !== '') {\n      xcs = settings.xcs.split(',')\n    }\n    bins.push(...binList)\n    xcs.forEach((xc) => {\n      const itemBins = availableCandlesticks[xc]\n      for (let i = bins.length - 1; i >= 0; i--) {\n        if (itemBins.indexOf(bins[i]) < 0) {\n          bins.splice(i, 1)\n        }\n      }\n    })\n    return bins\n  }\n\n  setBinSelection () {\n    const bin = settings.bin\n    this.binButtons.forEach(button => {\n      if (button.name === bin) {\n        button.classList.add('active')\n      } else {\n        button.classList.remove('active')\n      }\n    })\n  }\n\n  changeGraph (e) {\n    const target = e.target || e.srcElement\n    settings.chart = target.value\n    if (usesCandlesticks(settings.chart)) {\n      this.justifyBins()\n    }\n    this.reorderExchanges()\n    this.setButtons()\n    this.setExchangeName()\n    this.fetchChart()\n  }\n\n  reorderExchanges () {\n    const isBTCPair = settings.pair === 'btc'\n    const activeExchange = this.getSelectedExchanges()\n    const afterActiveExchange = []\n    const _this = this\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      if (activeExchange.length > 0) {\n        activeExchange.forEach((activeEx) => {\n          if (activeEx !== aggregatedKey && ((isBTCPair && useBTCPair(activeEx)) || (!isBTCPair && useUSDPair(activeEx)))) {\n            afterActiveExchange.push(activeEx)\n          }\n        })\n      }\n      if (afterActiveExchange.length <= 0) {\n        afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n      }\n      settings.xcs = afterActiveExchange.join(',')\n    } else {\n      if (activeExchange.length <= 0) {\n        afterActiveExchange.push(usesOrderbook(settings.chart) ? aggregatedKey : _this.getFirstExchangeButton(isBTCPair))\n      } else {\n        const exc = activeExchange[0]\n        if ((isBTCPair && useBTCPair(exc)) || (!isBTCPair && useUSDPair(exc))) {\n          afterActiveExchange.push(exc)\n        } else {\n          afterActiveExchange.push(_this.getFirstExchangeButton(isBTCPair))\n        }\n      }\n      if (afterActiveExchange.length > 0) {\n        settings.xc = afterActiveExchange.join(',')\n      }\n    }\n  }\n\n  async changePair (e) {\n    const target = e.target || e.srcElement\n    settings.pair = target.value\n    this.setAggRowData(settings.pair === 'btc')\n    this.handlerExchangesDisplay()\n    this.setButtons()\n    this.setExchangeName()\n    await this.fetchChart()\n    samePair = false\n    if (usesOrderbook(settings.chart)) {\n      samePair = true\n      this.setZoomPct(defaultZoomPct)\n      const stats = this.graph.getOption('stats')\n      const spread = stats.midGap * defaultZoomPct / 100\n      this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n    }\n  }\n\n  handlerExchangesDisplay () {\n    const isBTCPair = settings.pair === 'btc'\n    this.exchangesButtons.forEach(button => {\n      if (isBTCPair) {\n        this.fiatLabelTarget.textContent = 'DCR/BTC'\n        if (useBTCPair(button.name)) {\n          button.classList.remove('d-hide')\n        } else if (useUSDPair(button.name)) {\n          button.classList.add('d-hide')\n        }\n      } else {\n        this.fiatLabelTarget.textContent = 'DCR/USDT'\n        if (useBTCPair(button.name)) {\n          button.classList.add('d-hide')\n        } else if (useUSDPair(button.name)) {\n          button.classList.remove('d-hide')\n        }\n      }\n    })\n    this.reorderExchanges()\n    for (let i = 0; i < this.xcRowTargets.length; i++) {\n      const xcRow = this.xcRowTargets[i]\n      const token = xcRow.dataset.token\n      if (token === 'aggregated') {\n        continue\n      }\n      if (isBTCPair) {\n        if (useBTCPair(token)) {\n          xcRow.classList.remove('d-hide')\n        } else if (useUSDPair(token)) {\n          xcRow.classList.add('d-hide')\n        }\n      } else {\n        if (useBTCPair(token)) {\n          xcRow.classList.add('d-hide')\n        } else if (useUSDPair(token)) {\n          xcRow.classList.remove('d-hide')\n        }\n      }\n    }\n  }\n\n  getFirstExchangeButton (isBTCPair) {\n    let firstBtn = this.exchangesButtons[0].name\n    for (let i = 0; i < this.exchangesButtons.length; i++) {\n      const exBtn = this.exchangesButtons[i]\n      if (!exBtn.classList.contains('d-hide') && !exBtn.classList.contains('d-none') && ((isBTCPair && useBTCPair(exBtn.name)) || (!isBTCPair && useUSDPair(exBtn.name)))) {\n        firstBtn = exBtn.name\n        break\n      }\n    }\n    return firstBtn\n  }\n\n  changeExchange (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.handlerExchange(btn.name)\n  }\n\n  setExchange (e) {\n    // not handle if is history or volume chart\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      return\n    }\n    let node = e.target || e.srcElement\n    while (node && node.nodeName !== 'TR') node = node.parentNode\n    if (!node || !node.dataset || !node.dataset.token) return\n    if (usesCandlesticks(settings.chart) && node.dataset.token === aggregatedKey) {\n      return\n    }\n    this.handlerExchange(node.dataset.token)\n  }\n\n  handlerExchange (token) {\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      const xcs = settings.xcs.split(',')\n      if (xcs.indexOf(token) < 0) {\n        xcs.push(token)\n      } else {\n        if (xcs.length > 1) {\n          xcs.splice(xcs.indexOf(token), 1)\n        } else {\n          return\n        }\n      }\n      settings.xcs = xcs.join(',')\n    } else {\n      if (settings.xc === token) {\n        return\n      }\n      settings.xc = token\n    }\n    if (usesCandlesticks(settings.chart)) {\n      if (settings.xc !== 'aggregated') {\n        if (!availableCandlesticks[settings.xc]) {\n          settings.chart = depth\n        }\n      }\n      this.justifyBins()\n    }\n    this.setButtons()\n    this.setExchangeName()\n    this.fetchChart()\n    this.resetZoom()\n  }\n\n  changeBin (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    settings.bin = btn.name\n    this.justifyBins()\n    this.setBinSelection()\n    this.fetchChart()\n  }\n\n  resetZoom () {\n    if (settings.chart === candlestick) {\n      this.graph.updateOptions({ dateWindow: stickZoom })\n    } else if (usesOrderbook(settings.chart)) {\n      if (orderZoom && samePair) this.graph.updateOptions({ dateWindow: orderZoom })\n      else {\n        this.setZoomPct(defaultZoomPct)\n        samePair = true\n      }\n    } else {\n      this.graph.resetZoom()\n    }\n  }\n\n  refreshChart () {\n    refreshAvailable = true\n    if (!focused) {\n      return\n    }\n    this.fetchChart(true)\n  }\n\n  setConversion (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.conversionTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n    btn.classList.add('btn-selected')\n    let cLabel = 'BTC'\n    if (e.target.name === 'BTC') {\n      this.converted = false\n      conversionFactor = 1\n    } else {\n      this.converted = true\n      conversionFactor = btcPrice\n      cLabel = fiatCode\n    }\n    this.graph.updateOptions({ xlabel: `Price (${cLabel})` })\n  }\n\n  setExchangeName () {\n    if (settings.chart === 'history' || settings.chart === 'volume') {\n      this.xcLogoTarget.classList.add('d-hide')\n      this.actionsTarget.classList.add('d-hide')\n      // exchange name\n      const exchanges = []\n      if (settings.xcs) {\n        const exStrArr = settings.xcs.split(',')\n        exStrArr.forEach((ex) => {\n          exchanges.push(ex.charAt(0).toUpperCase() + ex.slice(1))\n        })\n      }\n      this.xcNameTarget.textContent = exchanges.join(',')\n      this.xcNameTarget.classList.add('fs-17')\n    } else {\n      this.xcNameTarget.classList.remove('fs-17')\n      this.xcLogoTarget.classList.remove('d-hide')\n      this.xcLogoTarget.className = `exchange-logo ${this.getXcLogo(settings.xc)}`\n      const prettyName = printName(settings.xc)\n      this.xcNameTarget.textContent = prettyName\n      const href = exchangeLinks[settings.xc]\n      if (href) {\n        this.linkTarget.href = href\n        this.linkTarget.textContent = `Visit ${prettyName}`\n        this.actionsTarget.classList.remove('d-hide')\n      } else {\n        this.actionsTarget.classList.add('d-hide')\n      }\n    }\n  }\n\n  getXcLogo (xc) {\n    if (xc.startsWith('btc_')) {\n      return xc.replaceAll('btc_', '')\n    }\n    return xc\n  }\n\n  _processNightMode (data) {\n    if (!this.graph) return\n    chartStroke = data.nightMode ? darkStroke : lightStroke\n    if (settings.chart === history || settings.chart === volume) {\n      this.graph.updateOptions({ colors: [chartStroke] })\n    }\n    if (settings.chart === orders || settings.chart === depth) {\n      this.graph.setAnnotations([])\n    }\n  }\n\n  getExchangeRow (token) {\n    const rows = this.xcRowTargets\n    for (let i = 0; i < rows.length; i++) {\n      const tr = rows[i]\n      if (tr.dataset.token === token) {\n        const row = {}\n        tr.querySelectorAll('td').forEach(td => {\n          switch (td.dataset.type) {\n            case 'price':\n              row.price = td\n              break\n            case 'volume':\n              row.volume = td\n              break\n            case 'fiat':\n              row.fiat = td\n              break\n            case 'arrow':\n              row.arrow = td.querySelector('span')\n              break\n          }\n        })\n        return row\n      }\n    }\n    return null\n  }\n\n  getSelectedExchanges () {\n    const activeExchanges = []\n    this.exchangesButtons.forEach(button => {\n      if (button.classList.contains('active')) {\n        activeExchanges.push(button.name)\n      }\n    })\n    return activeExchanges\n  }\n\n  setStacking (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.aggStackTarget.querySelectorAll('button').forEach(b => b.classList.remove('btn-selected'))\n    btn.classList.add('btn-selected')\n    aggStacking = btn.name === 'on'\n    this.graph.updateOptions({ stackedGraph: aggStacking, fillGraph: aggStacking })\n  }\n\n  setZoom (e) {\n    const btn = e.target || e.srcElement\n    if (btn.nodeName !== 'BUTTON' || !this.graph) return\n    this.setZoomPct(parseInt(btn.name))\n    const stats = this.graph.getOption('stats')\n    const spread = stats.midGap * parseFloat(btn.name) / 100\n    this.graph.updateOptions({ dateWindow: [stats.midGap - spread, stats.midGap + spread] })\n  }\n\n  setZoomPct (pct) {\n    this.zoomButtons.forEach(b => {\n      if (parseInt(b.name) === pct) b.classList.add('btn-selected')\n      else b.classList.remove('btn-selected')\n    })\n    const stats = this.graph.getOption('stats')\n    const spread = stats.midGap * pct / 100\n    let low = stats.midGap - spread\n    let high = stats.midGap + spread\n    const [min, max] = this.graph.xAxisExtremes()\n    if (low < min) low = min\n    if (high > max) high = max\n    orderZoom = [low, high]\n    this.graph.updateOptions({ dateWindow: orderZoom })\n  }\n\n  _depthZoomCallback (start, end) {\n    orderZoom = [start, end]\n    this.zoomButtons.forEach(b => b.classList.remove('btn-selected'))\n  }\n\n  _processXcUpdate (update) {\n    const xc = update.updater\n    const cType = xc.chain_type\n    if (cType && cType !== 'dcr') {\n      return\n    }\n    if (update.fiat) { // btc-fiat exchange update\n      this.xcIndexTargets.forEach(span => {\n        if (span.dataset.token === xc.token) {\n          span.textContent = humanize.commaWithDecimal(xc.price, 2)\n        }\n      })\n    } else { // dcr-btc exchange update\n      const row = this.getExchangeRow(xc.token)\n      row.volume.textContent = humanize.threeSigFigs(xc.volume)\n      row.price.textContent = humanize.threeSigFigs(xc.price)\n      // row.fiat.textContent = (xc.price * update.btc_price).toFixed(2)\n      if (xc.change === 0) {\n        row.arrow.className = ''\n      } else if (xc.change > 0) {\n        row.arrow.className = 'dcricon-arrow-up text-green'\n      } else {\n        row.arrow.className = 'dcricon-arrow-down text-danger'\n      }\n    }\n    // Update the big displayed value and the aggregated row\n    // const fmtPrice = settings.pair === 'btc' ? update.dcr_btc_price.toFixed(6) : update.price.toFixed(2)\n    this.priceTarget.textContent = update.price.toFixed(2)\n    // TODO: handler on all page\n    if (this.isHomepage) {\n      // handler dcr/usd price change\n      const usdChangeHtml = update.dcr_usd_24h_change === 0\n        ? '<span></span>'\n        : `<span class=\"dcricon-arrow-${update.dcr_usd_24h_change > 0 ? 'up text-green' : 'down text-danger'}\">\n      ${Math.abs(100 * update.dcr_usd_24h_change / update.price).toFixed(2)}%</span>`\n      this.usdChangeTarget.innerHTML = usdChangeHtml\n      this.btcPriceTarget.textContent = update.dcr_btc_price.toFixed(6)\n      // handler dcr/btc price change\n      const btcChangeHtml = update.dcr_btc_24h_change === 0\n        ? '<span></span>'\n        : `<span class=\"dcricon-arrow-${update.dcr_btc_24h_change > 0 ? 'up text-green' : 'down text-danger'}\">\n    ${Math.abs(100 * update.dcr_btc_24h_change / update.dcr_btc_price).toFixed(2)}%</span>`\n      this.btcChangeTarget.innerHTML = btcChangeHtml\n      // display dcr volume\n      this.dcrVolTarget.textContent = humanize.threeSigFigs(update.volume)\n      // display usd volume\n      this.usdVolTarget.textContent = humanize.threeSigFigs(Math.round(update.volume * update.price))\n      // display vol/cap rate (%)\n      this.volCapRateTarget.textContent = (100 * update.volume / Number(this.volCapRateTarget.dataset.coinall)).toFixed(2)\n      // display low/high price\n      this.lowPriceTarget.textContent = update.low_price.toFixed(2)\n      this.highPriceTarget.textContent = update.high_price.toFixed(2)\n      // display on price bar label\n      this.priceBarLabelTarget.textContent = update.price.toFixed(2)\n      // TODO: directly handle\n      this.priceBarTarget.dataset.low = update.low_price\n      this.priceBarTarget.dataset.high = update.high_price\n      this.priceBarTarget.dataset.price = update.price\n      this.updateMarketPriceBar()\n    }\n    const aggRow = this.getExchangeRow(aggregatedKey)\n    btcPrice = update.btc_price\n    this.dcrBtcPrice = update.dcr_btc_price\n    this.dcrUsdtPrice = update.price\n    this.dcrUsdtVolume = update.volume\n    this.dcrBtcVolum = update.dcr_btc_volume\n    aggRow.price.textContent = humanize.threeSigFigs(settings.pair === 'btc' ? update.dcr_btc_price : update.price)\n    aggRow.volume.textContent = humanize.threeSigFigs(settings.pair === 'btc' ? update.dcr_btc_volume : update.volume)\n    // Auto-update the chart if it makes sense.\n    if (settings.xc !== aggregatedKey && settings.xc !== xc.token) return\n    if (settings.xc === aggregatedKey &&\n      hasCache(this.lastUrl) &&\n      responseCache[this.lastUrl].tokens.indexOf(update.updater) === -1) return\n    if (usesOrderbook(settings.chart)) {\n      clearCache(this.lastUrl)\n      this.refreshChart()\n    } else if (usesCandlesticks(settings.chart)) {\n      // Only show refresh button if cache is expired\n      if (!hasCache(this.lastUrl)) {\n        this.refreshChart()\n      }\n    }\n  }\n}\n\nfunction aggregateSums (side, sums, tokens, cutoff) {\n  for (const pt of side) {\n    if (cutoff(pt.price)) continue\n    for (const i in tokens) sums[i][1] += pt.volumes[i]\n  }\n}\n\n/*\n * reorderAggregateData reorders the aggregated order book data so that the\n * deepest books are first.\n */\nfunction reorderAggregateData (response) {\n  let tokens = response.tokens\n  const sums = []\n  for (const token of tokens) sums.push([token, 0])\n\n  const stats = orderbookStats(response.data.bids, response.data.asks)\n\n  aggregateSums(response.data.bids, sums, tokens, v => v < stats.lowCut)\n  aggregateSums(response.data.asks, sums, tokens, v => v > stats.highCut)\n\n  sums.sort((a, b) => a[1] - b[1])\n\n  const idxKey = {}\n  for (const i in sums) idxKey[sums[i][0]] = i\n\n  const reorder = side => {\n    for (const pt of side) {\n      const v = []\n      for (const i in pt.volumes) v[idxKey[tokens[i]]] = pt.volumes[i]\n      pt.volumes = v\n    }\n  }\n  reorder(response.data.bids)\n  reorder(response.data.asks)\n\n  response.tokens = tokens = sums.map(v => v[0])\n}\n\n/*\n * findAggregateDupes finds price bins in the aggregated depth chart data that\n * have entries on both the buy and sell sides. Dygraphs doesn't handle the\n * duplicates well during drawing, so we will try to clean up the Dygraphs data\n * before passing it to the plotter.\n */\nfunction findAggregateDupes (buys, sells) {\n  const dupes = []\n  if (sells.length) {\n    let sellIdx = 0\n    let sellPrice = sells[sellIdx][0]\n\n    for (const i in buys) {\n      const buyPrice = buys[i][0]\n      if (buyPrice < sellPrice) continue\n\n      while (buyPrice > sellPrice) {\n        sellIdx++\n        if (sellIdx >= sells.length) return dupes\n        sellPrice = sells[sellIdx][0]\n      }\n      if (Math.round(buyPrice * 1e8) === Math.round(sellPrice * 1e8)) {\n        // Found a duplicate.\n        dupes.push({\n          price: buyPrice,\n          i: buys.length + sellIdx,\n          buy: buys[i],\n          sell: sells[sellIdx]\n        })\n      }\n    }\n  }\n  return dupes\n}\n\n/*\n * fixAggregateStacking attempts to correct a Dygraphs limitation where stacked\n * plots don't display right when 1) the data isn't monotionically increasing in\n * price, and 2) there is an exact match on price on the doubled back region.\n */\nfunction fixAggregateStacking (e) {\n  if (e.setName.endsWith('buy')) return // only sell sides need fixing\n  const dupes = e.dygraph.getOption('dupes')\n  if (!dupes || dupes.length === 0) return\n  let dupeIdx = 0\n  let dupe = dupes[dupeIdx]\n  // var dataIdx = e.seriesIndex + 1\n  // var accume = 0\n  // var accumeStacked = 0\n  const pts = e.points\n  for (let i = dupe.i; i < pts.length; i++) {\n    const pt = pts[i]\n    if (dupe && i === dupe.i) {\n      // Need to adjust this one. Find a way to find a mapping from value to\n      // ratio to canvas position.\n\n      // Figure out how much buy order is mistakenly added.\n      const misplacedVal = dupe.buy.reduce((acc, v) => { return i === 0 ? acc : acc + v }, 0)\n      const subRatio = misplacedVal / e.axis.maxyval\n      // Fixing these three values doesn't actually seem to affect the display,\n      // but fixing them anyway.\n      pt.y += subRatio\n      pt.y_stacked += subRatio\n      pt.yval_stacked -= misplacedVal\n      // This line is the ticket to remove the dark black outline on the spike.\n      pt.canvasy += subRatio * e.plotArea.h\n\n      // TODO: Figure out how to add in missed accumulation, since the Dygraph\n      // bug seems to ignore the actual sell value. Or just dump Dygraphs and\n      // use canvas directly.\n      // accumeStacked += dupe.sell.reduce((acc, v) => { return i === 0 ? acc : acc + v}, 0)\n      // accume += dupe.sell[dataIdx]\n\n      dupeIdx++\n      if (dupeIdx >= dupes.length) dupe = null\n      else dupe = dupes[dupeIdx]\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { map, each } from 'lodash-es'\nimport dompurify from 'dompurify'\nimport humanize from '../helpers/humanize_helper'\nimport ws from '../services/messagesocket_service'\nimport { keyNav } from '../services/keyboard_navigation_service'\nimport Mempool from '../helpers/mempool_helper'\nimport { copyIcon, alertArea } from './clipboard_controller'\nconst conversionRate = 100000000\n\nfunction incrementValue (el) {\n  if (!el) return\n  el.textContent = parseInt(el.textContent) + 1\n}\n\nfunction rowNode (rowText) {\n  const tbody = document.createElement('tbody')\n  tbody.innerHTML = rowText\n  dompurify.sanitize(tbody, { IN_PLACE: true, FORBID_TAGS: ['svg', 'math'] })\n  return tbody.firstElementChild\n}\n\nfunction txTableRow (tx) {\n  return rowNode(`<tr class=\"flash\">\n        <td class=\"break-word clipboard\">\n          <a class=\"hash\" href=\"/tx/${tx.hash}\" title=\"${tx.hash}\">${tx.hash}</a>\n          ${copyIcon()}\n          ${alertArea()}\n        </td>\n        <td class=\"mono fs15 text-end\">${humanize.decimalParts(tx.total, false, 8)}</td>\n        <td class=\"mono fs15 text-end\">${tx.size} B</td>\n        <td class=\"mono fs15 text-end\">${tx.fee_rate} DCR/kB</td>\n        <td class=\"mono fs15 text-end\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n    </tr>`)\n}\n\nfunction treasuryTxTableRow (tx) {\n  return rowNode(`<tr class=\"flash\">\n        <td class=\"break-word clipboard\">\n          <a class=\"hash\" href=\"/tx/${tx.hash}\" title=\"${tx.hash}\">${tx.hash}</a>\n          ${copyIcon()}\n          ${alertArea()}\n        </td>\n        <td class=\"mono fs15 text-end\">${humanize.decimalParts(tx.total, false, 8)}</td>\n        <td class=\"mono fs15 text-end\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n    </tr>`)\n}\n\nfunction voteTxTableRow (tx) {\n  return rowNode(`<tr class=\"flash\" data-height=\"${tx.vote_info.block_validation.height}\" data-blockhash=\"${tx.vote_info.block_validation.hash}\">\n        <td class=\"break-word clipboard\">\n          <a class=\"hash\" href=\"/tx/${tx.hash}\">${tx.hash}</a>\n          ${copyIcon()}\n          ${alertArea()}\n        </td>\n        <td class=\"mono fs15\"><a href=\"/block/${tx.vote_info.block_validation.hash}\">${tx.vote_info.block_validation.height}<span\n          class=\"small\">${tx.vote_info.last_block ? ' best' : ''}</span></a></td>\n        <td class=\"mono fs15 text-end\"><a href=\"/tx/${tx.vote_info.ticket_spent}\">${tx.vote_info.mempool_ticket_index}<a/></td>\n        <td class=\"mono fs15 text-end\">${tx.vote_info.vote_version}</td>\n        <td class=\"mono fs15 text-end d-none d-sm-table-cell\">${humanize.decimalParts(tx.total, false, 8)}</td>\n        <td class=\"mono fs15 text-end\">${humanize.bytes(tx.size)}</td>\n        <td class=\"mono fs15 text-end d-none d-sm-table-cell jsonly\" data-time-target=\"age\" data-age=\"${tx.time}\">${humanize.timeSince(tx.time)}</td>\n    </tr>`)\n}\n\nfunction buildTable (target, txType, txns, rowFn) {\n  while (target.firstChild) target.removeChild(target.firstChild)\n  if (txns && txns.length > 0) {\n    map(txns, rowFn).forEach((tr) => {\n      target.appendChild(tr)\n    })\n  } else {\n    target.innerHTML = `<tr class=\"no-tx-tr\"><td colspan=\"${(txType === 'votes' ? 8 : 4)}\">No ${txType} in mempool.</td></tr>`\n  }\n}\n\nfunction addTxRow (tx, target, rowFn) {\n  if (target.childElementCount === 1 && target.firstElementChild.classList.contains('no-tx-tr')) {\n    target.removeChild(target.firstElementChild)\n  }\n  target.insertBefore(rowFn(tx), target.firstChild)\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n  if (!subsidy) {\n    return `<div class=\"block-rewards px-1 mt-1\">\n                    <span class=\"pow\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"pos\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fund\"><span class=\"paint left-vs-block-data\" style=\"width:100%;\"></span></span>\n                    <span class=\"fees right-vs-block-data\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n                </div>`\n  }\n\n  const pow = subsidy.pow / conversionRate\n  const pos = subsidy.pos / conversionRate\n  const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n  const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n  // const totalDCR = Math.round(pow + fund + fee);\n  const totalDCR = 1\n  return `<div class=\"block-rewards px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                <span class=\"pow\" style=\"flex-grow: ${pow}\" data-mempool-target=\"tooltip\"\n                    title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint left-vs-block-data\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"pos\" style=\"flex-grow: ${pos}\" data-mempool-target=\"tooltip\"\n                    title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"fund\" style=\"flex-grow: ${fund}\" data-mempool-target=\"tooltip\"\n                    title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}'>\n                    <span class=\"block-element-link\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </span>\n                </span>\n                <span class=\"fees right-vs-block-data\" style=\"flex-grow: ${fee}\" data-mempool-target=\"tooltip\"\n                    title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'>\n                    <span class=\"block-element-link\"></span>\n                </span>\n            </div>`\n}\n\nfunction makeVoteElements (votes) {\n  let totalDCR = 0\n  const voteLen = votes ? votes.length : 0\n  const voteElements = []\n  if (voteLen > 0) {\n    for (let i = 0; i < voteLen - 1; i++) {\n      const vote = votes[i]\n      totalDCR += vote.Total\n      voteElements.push(`<span style=\"background: ${vote.VoteValid ? 'linear-gradient(to right, #2971ff 0%, #528cff 100%)' : 'linear-gradient(to right, #fd714a 0%, #f6896a 100%)'}\" data-mempool-target=\"tooltip\"\n                        title='{\"object\": \"Vote\", \"voteValid\": \"${vote.VoteValid}\"}' class=\"${i === 0 ? 'left-vs-block-data' : ''} ${i === voteLen - 1 ? 'right-vs-block-data' : ''}\">\n                        <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n                    </span>`)\n    }\n  }\n  // append empty squares to votes\n  for (let i = voteElements.length; i < 5; i++) {\n    voteElements.push('<span title=\"Empty vote slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-votes px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${voteElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n  let totalDCR = 0\n  const ticketElements = []\n  const revCount = revocations ? revocations.length : 0\n  const ticketCount = tickets ? tickets.length : 0\n  if (tickets) {\n    for (let i = 0; i < tickets.length; i++) {\n      const ticket = tickets[i]\n      totalDCR += ticket.Total\n      ticketElements.push(makeTxElement(ticket, `block-ticket ${i === 0 ? 'left-vs-block-data' : ''} ${i === tickets.length - 1 && revCount === 0 ? 'right-vs-block-data' : ''}`, 'Ticket'))\n    }\n  }\n  if (ticketElements.length > 50) {\n    const total = ticketElements.length\n    ticketElements.splice(30)\n    ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n                                <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                            </span>`)\n  }\n  const revocationElements = []\n  if (revCount > 0) {\n    for (let i = 0; i < revCount; i++) {\n      const revocation = revocations[i]\n      totalDCR += revocation.Total\n      revocationElements.push(makeTxElement(revocation, `block-rev ${ticketCount === 0 && i === 0 ? 'left-vs-block-data' : ''} ${i === revCount - 1 ? 'right-vs-block-data' : ''}`, 'Revocation'))\n    }\n  }\n\n  const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n  // append empty squares to tickets+revs\n  for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n    ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-tickets px-1 mt-1\" style=\"flex-grow: ${totalDCR}\">\n                ${ticketsAndRevocationElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n  // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n  const style = []\n  if (appendFlexGrow) {\n    style.push(`flex-grow: ${Math.round(tx.Total)}`)\n  }\n\n  return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-mempool-target=\"tooltip\"\n                title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n                <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n            </span>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n  let totalDCR = 0\n  const transactionElements = []\n  if (transactions) {\n    for (let i = 0; i < transactions.length; i++) {\n      const tx = transactions[i]\n      totalDCR += tx.Total\n      transactionElements.push(makeTxElement(tx, `block-tx ${i === 0 ? 'left-vs-block-data' : ''} ${i === transactions.length - 1 ? 'right-vs-block-data' : ''}`, 'Transaction', true))\n    }\n  }\n\n  if (transactionElements.length > 50) {\n    const total = transactionElements.length\n    transactionElements.splice(30)\n    transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n                                    <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                                </span>`)\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-transactions px-1 my-1\" style=\"flex-grow: ${totalDCR}\">\n                ${transactionElements.join('\\n')}\n            </div>`\n}\n\nfunction makeMempoolBlock (block) {\n  let fees = 0\n  if (!block.Transactions) return\n  for (const tx of block.Transactions) {\n    fees += tx.Fees\n  }\n\n  return `<div class=\"block-rows\">\n                    ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n                    ${makeVoteElements(block.Votes)}\n                    ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n                    ${makeTransactionElements(block.Transactions, '/mempool')}\n                </div>`\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'bestBlock',\n      'bestBlockTime',\n      'tspendTransactions',\n      'taddTransactions',\n      'voteTransactions',\n      'ticketTransactions',\n      'revocationTransactions',\n      'regularTransactions',\n      'mempool',\n      'voteTally',\n      'regTotal',\n      'regCount',\n      'ticketTotal',\n      'ticketCount',\n      'voteTotal',\n      'voteCount',\n      'revTotal',\n      'revCount',\n      'likelyTotal',\n      'mempoolSize',\n      'memBlock',\n      'tooltip'\n    ]\n  }\n\n  connect () {\n    // from txhelpers.DetermineTxTypeString\n    const mempoolData = this.mempoolTarget.dataset\n    ws.send('getmempooltxs', mempoolData.id)\n    this.mempool = new Mempool(mempoolData, this.voteTallyTargets)\n    this.txTargetMap = {\n      'Treasury Spend': this.tspendTransactionsTarget,\n      Vote: this.voteTransactionsTarget,\n      Ticket: this.ticketTransactionsTarget,\n      Revocation: this.revocationTransactionsTarget,\n      Regular: this.regularTransactionsTarget\n    }\n    if (this.hasTaddTransactionsTarget) this.txTargetMap['Treasury Add'] = this.taddTransactionsTarget\n    this.countTargetMap = {\n      Vote: this.numVoteTarget,\n      Ticket: this.numTicketTarget,\n      Revocation: this.numRevocationTarget,\n      Regular: this.numRegularTarget\n    }\n    ws.registerEvtHandler('newtxs', (evt) => {\n      const txs = JSON.parse(evt)\n      this.mempool.mergeTxs(txs)\n      this.renderNewTxns(txs)\n      this.setMempoolFigures()\n      this.labelVotes()\n      this.sortVotesTable()\n      keyNav(evt, false, true)\n      ws.send('getmempooltrimmed', '')\n    })\n    ws.registerEvtHandler('mempool', (evt) => {\n      const m = JSON.parse(evt)\n      this.mempool.replace(m)\n      this.setMempoolFigures()\n      this.updateBlock(m)\n      ws.send('getmempooltxs', '')\n      ws.send('getmempooltrimmed', '')\n    })\n    ws.registerEvtHandler('getmempooltxsResp', (evt) => {\n      const m = JSON.parse(evt)\n      this.mempool.replace(m)\n      this.handleTxsResp(m)\n      this.setMempoolFigures()\n      this.labelVotes()\n      this.sortVotesTable()\n      keyNav(evt, false, true)\n    })\n    ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n      this.handleMempoolUpdate(event)\n    })\n    this.setupTooltips()\n  }\n\n  disconnect () {\n    ws.deregisterEvtHandlers('newtxs')\n    ws.deregisterEvtHandlers('mempool')\n    ws.deregisterEvtHandlers('getmempooltxsResp')\n    ws.deregisterEvtHandlers('getmempooltrimmedResp')\n  }\n\n  handleMempoolUpdate (evt) {\n    const mempool = JSON.parse(evt)\n    mempool.Time = Math.round((new Date()).getTime() / 1000)\n    this.memBlockTarget.innerHTML = makeMempoolBlock(mempool)\n    this.setupTooltips()\n  }\n\n  setupTooltips () {\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.object === 'Vote') {\n          newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n        } else {\n          newContent = `<b>${data.object}</b><br>${humanize.decimalParts(data.total, false, 8, 2)} DCR`\n        }\n\n        if (data.vin && data.vout) {\n          newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n        }\n\n        tooltipElement.title = newContent\n      } catch (error) {}\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n\n  updateBlock (m) {\n    this.bestBlockTarget.textContent = m.block_height\n    this.bestBlockTarget.dataset.hash = m.block_hash\n    this.bestBlockTarget.href = `/block/${m.block_hash}`\n    this.bestBlockTimeTarget.dataset.age = m.block_time\n  }\n\n  setMempoolFigures () {\n    const totals = this.mempool.totals()\n    const counts = this.mempool.counts()\n    this.regTotalTarget.textContent = humanize.threeSigFigs(totals.regular)\n    this.regCountTarget.textContent = counts.regular\n\n    this.ticketTotalTarget.textContent = humanize.threeSigFigs(totals.ticket)\n    this.ticketCountTarget.textContent = counts.ticket\n\n    this.voteTotalTarget.textContent = humanize.threeSigFigs(totals.vote)\n\n    const ct = this.voteCountTarget\n    while (ct.firstChild) ct.removeChild(ct.firstChild)\n    this.mempool.voteSpans(counts.vote).forEach((span) => { ct.appendChild(span) })\n\n    this.revTotalTarget.textContent = humanize.threeSigFigs(totals.rev)\n    this.revCountTarget.textContent = counts.rev\n\n    this.likelyTotalTarget.textContent = humanize.threeSigFigs(totals.total)\n    this.mempoolSizeTarget.textContent = humanize.bytes(totals.size)\n\n    this.labelVotes()\n    // this.setVotes()\n  }\n\n  handleTxsResp (m) {\n    buildTable(this.regularTransactionsTarget, 'regular transactions', m.tx, txTableRow)\n    buildTable(this.revocationTransactionsTarget, 'revocations', m.revs, txTableRow)\n    buildTable(this.voteTransactionsTarget, 'votes', m.votes, voteTxTableRow)\n    buildTable(this.ticketTransactionsTarget, 'tickets', m.tickets, txTableRow)\n    buildTable(this.tspendTransactionsTarget, 'tspends', m.tspends, treasuryTxTableRow)\n    if (this.hasTaddTransactionsTarget) buildTable(this.taddTransactionsTarget, 'tadds', m.tadds, treasuryTxTableRow)\n  }\n\n  renderNewTxns (txs) {\n    each(txs, (tx) => {\n      incrementValue(this.countTargetMap[tx.Type])\n      let rowFn\n      switch (tx.Type) {\n        case 'Vote':\n          rowFn = voteTxTableRow\n          break\n        case 'Treasury Spend':\n          rowFn = treasuryTxTableRow\n          break\n        case 'Treasury Add':\n          if (!this.hasTaddTransactionsTarget) return\n          rowFn = treasuryTxTableRow\n          break\n        default:\n          rowFn = txTableRow\n      }\n      addTxRow(tx, this.txTargetMap[tx.Type], rowFn)\n    })\n  }\n\n  labelVotes () {\n    const bestBlockHash = this.bestBlockTarget.dataset.hash\n    const bestBlockHeight = parseInt(this.bestBlockTarget.textContent)\n    this.voteTransactionsTarget.querySelectorAll('tr').forEach((tr) => {\n      const voteValidationHash = tr.dataset.blockhash\n      const voteBlockHeight = tr.dataset.height\n      const best = tr.querySelector('.small')\n      if (!best) return // Just the \"No votes in mempool.\" td?\n      best.textContent = ''\n      if (voteBlockHeight > bestBlockHeight) {\n        tr.classList.add('blue-row')\n        tr.classList.remove('disabled-row')\n      } else if (voteValidationHash !== bestBlockHash) {\n        tr.classList.add('disabled-row')\n        tr.classList.remove('blue-row')\n        if (tr.classList.contains('last_block')) {\n          tr.textContent = 'False'\n        }\n      } else {\n        tr.classList.remove('disabled-row')\n        tr.classList.remove('blue-row')\n        best.textContent = ' (best)'\n      }\n    })\n  }\n\n  sortVotesTable () {\n    const rows = Array.from(this.voteTransactionsTarget.querySelectorAll('tr'))\n    rows.sort(function (a, b) {\n      if (a.dataset.height === b.dataset.height) {\n        const indexA = parseInt(a.dataset.ticketIndex)\n        const indexB = parseInt(b.dataset.ticketIndex)\n        return (indexA - indexB)\n      } else {\n        return (b.dataset.height - a.dataset.height)\n      }\n    })\n    this.voteTransactionsTarget.innerHTML = ''\n    rows.forEach((row) => { this.voteTransactionsTarget.appendChild(row) })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { closeMenu, toggleSun } from '../services/theme_service'\n\nfunction closest (el, id) {\n  // https://stackoverflow.com/a/48726873/1124661\n  if (el.id === id) {\n    return el\n  }\n  if (el.parentNode && el.parentNode.nodeName !== 'BODY') {\n    return closest(el.parentNode, id)\n  }\n  return null\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['toggle', 'homeToggle', 'form', 'homeMenu', 'commonMenu']\n  }\n\n  connect () {\n    this.clickout = this._clickout.bind(this)\n    this.formTargets.forEach(form => {\n      form.addEventListener('submit', e => {\n        e.preventDefault()\n        return false\n      })\n    })\n  }\n\n  checkHomePage () {\n    const originUrl = window.location.origin\n    let href = window.location.href\n    if (href.includes(originUrl)) {\n      href = href.replace(originUrl, '')\n      if (href === '/' || href === '') {\n        return true\n      }\n      return false\n    }\n    return false\n  }\n\n  _clickout (e) {\n    const target = e.target || e.srcElement\n    if (!closest(target, 'hamburger-menu')) {\n      document.removeEventListener('click', this.clickout)\n      closeMenu()\n    }\n  }\n\n  toggle (e) {\n    if (this.toggleTarget.checked) {\n      document.addEventListener('click', this.clickout)\n    }\n  }\n\n  homeToggle (e) {\n    if (this.homeToggleTarget.checked) {\n      document.addEventListener('click', this.clickout)\n    }\n  }\n\n  onSunClick () {\n    toggleSun()\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport globalEventBus from '../services/event_bus_service'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['confirmations']\n  }\n\n  initialize () {\n    const that = this\n    globalEventBus.on('BLOCK_RECEIVED', function (data) {\n      that.refreshConfirmations(data.block.height)\n    })\n  }\n\n  connect () {\n    this.confirmationsTargets.forEach((el, i) => {\n      if (!el.dataset.confirmations) return\n      this.setConfirmationText(el, el.dataset.confirmations)\n    })\n  }\n\n  setConfirmationText (el, confirmations) {\n    if (confirmations > 0) {\n      el.textContent = el.dataset.yes.replace('#', confirmations).replace('@', confirmations > 1 ? 's' : '')\n      el.classList.add('confirmed')\n    } else {\n      el.textContent = el.dataset.no\n      el.classList.remove('confirmed')\n    }\n  }\n\n  refreshConfirmations (expHeight) {\n    this.confirmationsTargets.forEach((el, i) => {\n      const confirmHeight = parseInt(el.dataset.confirmationBlockHeight)\n      if (confirmHeight === -1) return // Unconfirmed block\n      const confirmations = expHeight - confirmHeight + 1\n      this.setConfirmationText(el, confirmations)\n      el.dataset.confirmations = confirmations\n    })\n  }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\nimport Url from 'url-parse'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['pagesize', 'votestatus', 'listview']\n  }\n\n  setPageSize () {\n    const url = Url(window.location.href)\n    const q = Url.qs.parse(url.query)\n    delete q.offset\n    delete q.height\n    q[this.pagesizeTarget.dataset.offsetkey] = this.pagesizeTarget.dataset.offset\n    q.rows = this.pagesizeTarget.selectedOptions[0].value\n    if (this.hasVotestatusTarget) {\n      q.byvotestatus = this.votestatusTarget.selectedOptions[0].value\n    }\n    url.set('query', q)\n    Turbolinks.visit(url.toString())\n  }\n\n  setFilterbyVoteStatus () {\n    const url = Url(window.location.href)\n    const q = {}\n    q.byvotestatus = this.votestatusTarget.selectedOptions[0].value\n    url.set('query', q)\n    Turbolinks.visit(url.toString())\n  }\n\n  setListView () {\n    const url = Url(window.location.href, true)\n    const newPeriod = this.listviewTarget.selectedOptions[0].value\n    if (url.pathname !== newPeriod) {\n      url.set('query', {})\n    }\n    url.set('pathname', newPeriod)\n    Turbolinks.visit(url.href)\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { MiniMeter } from '../helpers/meters.js'\nimport { darkEnabled } from '../services/theme_service'\nimport globalEventBus from '../services/event_bus_service'\nimport { getDefault } from '../helpers/module_helper'\nimport { multiColumnBarPlotter, synchronize } from '../helpers/chart_helper'\nimport dompurify from 'dompurify'\nimport humanize from '../helpers/humanize_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst common = {\n  labelsKMB: true,\n  legend: 'always',\n  fillGraph: true,\n  strokeWidth: 2,\n  gridLineColor: '#C4CBD2',\n  labelsUTC: true,\n  legendFormatter: legendFormatter\n}\n\nconst percentConfig = {\n  ...common,\n  labels: ['Date', 'Percent Yes'],\n  ylabel: 'Approval (%)',\n  colors: ['#2971FF'],\n  labelsSeparateLines: true,\n  underlayCallback: function (context, area, g) {\n    const xVals = g.xAxisExtremes()\n    const xl = g.toDomCoords(xVals[0], 60)\n    const xr = g.toDomCoords(xVals[1], 60)\n\n    context.beginPath()\n    context.strokeStyle = '#ED6D47'\n    context.moveTo(xl[0], xl[1])\n    context.lineTo(xr[0], xr[1])\n    context.fillStyle = '#ED6D47'\n    context.fillText('60% Approval', xl[0] + 20, xl[1] + 10)\n    context.closePath()\n    context.stroke()\n  }\n}\n\nconst cumulativeConfig = {\n  ...common,\n  labels: ['Date', 'Total Votes'],\n  ylabel: 'Vote Count',\n  colors: ['#2971FF'],\n  underlayCallback: function (context, area, g) {\n    const xVals = g.xAxisExtremes()\n    const xl = g.toDomCoords(xVals[0], 8269)\n    const xr = g.toDomCoords(xVals[1], 8269)\n\n    context.beginPath()\n    context.strokeStyle = '#ED6D47'\n    context.moveTo(xl[0], xl[1])\n    context.lineTo(xr[0], xr[1])\n    context.fillStyle = '#ED6D47'\n    context.fillText('20% Quorum', xl[0] + 20, xl[1] + 10)\n    context.closePath()\n    context.stroke()\n  }\n}\n\nfunction legendFormatter (data) {\n  let html\n  if (data.x == null) {\n    html = data.series.map(function (series) {\n      return series.dashHTML + ' <span style=\"color:' +\n        series.color + ';\">' + series.labelHTML + ' </span> '\n    }).join('')\n  } else {\n    html = this.getLabels()[0] + ': ' + humanize.date(data.x) + ' UTC &nbsp;&nbsp;'\n    data.series.forEach(function (series, index) {\n      if (!series.isVisible) return\n\n      let symbol = ''\n      if (series.labelHTML.includes('Percent')) {\n        series.labelHTML = 'Yes'\n        symbol = '%'\n      } else if (index === 0) {\n        html = ''\n      } else {\n        // html += ' <br> '\n      }\n\n      const labeledData = '<span style=\"color:' + series.color + ';\">' +\n        series.labelHTML + ' </span> : ' + Math.abs(series.y)\n      html += series.dashHTML + ' ' + labeledData + '' + symbol + ' &nbsp;'\n    })\n  }\n  dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n  return html\n}\n\nconst hourlyVotesConfig = {\n  ...common,\n  plotter: multiColumnBarPlotter,\n  showRangeSelector: true,\n  labels: ['Date', 'Yes', 'No'],\n  ylabel: 'Votes Per Hour',\n  xlabel: 'Date',\n  colors: ['#2DD8A3', '#ED6D47'],\n  fillColors: ['rgb(150,235,209)', 'rgb(246,182,163)']\n}\n\nlet gs = []\nlet Dygraph\nlet chartData = {}\n\nlet percentData\nlet cumulativeData\nlet hourlyVotesData\nexport default class extends Controller {\n  static get targets () {\n    return ['token', 'approvalMeter', 'cumulative', 'cumulativeLegend',\n      'approval', 'approvalLegend', 'log', 'logLegend'\n    ]\n  }\n\n  async connect () {\n    if (!this.hasApprovalMeterTarget) return // there will be no meter or charts\n\n    const d = this.approvalMeterTarget.dataset\n    const opts = {\n      darkMode: darkEnabled(),\n      segments: [\n        { end: d.threshold, color: '#ed6d47' },\n        { end: 1, color: '#2dd8a3' }\n      ]\n    }\n    this.approvalMeter = new MiniMeter(this.approvalMeterTarget, opts)\n\n    chartData = await requestJSON('/api/proposal/' + this.tokenTarget.dataset.hash)\n    if (!chartData) return\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n\n    this.setChartsData()\n    this.plotGraph()\n    this.setNightMode = this._setNightMode.bind(this)\n    globalEventBus.on('NIGHT_MODE', this.setNightMode)\n  }\n\n  disconnect () {\n    gs.map((chart) => { chart.destroy() })\n    globalEventBus.off('NIGHT_MODE', this.setNightMode)\n  }\n\n  setChartsData () {\n    let total = 0\n    let yes = 0\n    let hourlyYes = 0\n    let hourlyNo = 0\n    let currentDate = new Date(chartData?.time[0] * 1000)\n    let currentHour = currentDate.getHours()\n\n    percentData = []\n    cumulativeData = []\n    hourlyVotesData = []\n\n    chartData.time.map((n, i) => {\n      const formatedDate = new Date(n * 1000)\n      yes += chartData.yes[i]\n      total += (chartData.no[i] + chartData.yes[i])\n\n      const percent = ((yes * 100) / total).toFixed(2)\n\n      // accumulate hourly vote data. currentDate keeps track\n      // of the hour of such date we are parsing data for\n      hourlyYes += chartData.yes[i]\n      hourlyNo += chartData.no[i]\n      if (formatedDate.getHours() !== currentHour) {\n        currentDate.setMinutes(0)\n        percentData.push([currentDate, parseFloat(percent)])\n        cumulativeData.push([currentDate, total])\n        hourlyVotesData.push([currentDate, hourlyYes, hourlyNo * -1])\n        currentDate = formatedDate\n        currentHour = formatedDate.getHours()\n        hourlyYes = 0\n        hourlyNo = 0\n      }\n    })\n\n    // add empty data at the beginning and end of hourlyVotesData\n    // to pad the bar chart data on both ends\n    const firstDate = new Date(chartData.time[0] * 1000)\n    firstDate.setHours(firstDate.getHours() - 1)\n    const lastDate = new Date(chartData.time[chartData.time.length - 1] * 1000)\n    lastDate.setHours(lastDate.getHours() + 1)\n    hourlyVotesData.unshift([firstDate, 0, 0])\n    hourlyVotesData.push([lastDate, 0, 0])\n  }\n\n  plotGraph () {\n    percentConfig.labelsDiv = this.approvalLegendTarget\n    cumulativeConfig.labelsDiv = this.cumulativeLegendTarget\n    hourlyVotesConfig.labelsDiv = this.logLegendTarget\n    gs = [\n      new Dygraph(\n        this.approvalTarget,\n        percentData,\n        percentConfig\n      ),\n      new Dygraph(\n        this.cumulativeTarget,\n        cumulativeData,\n        cumulativeConfig\n      ),\n      new Dygraph(\n        this.logTarget,\n        hourlyVotesData,\n        hourlyVotesConfig\n      )\n    ]\n\n    const options = {\n      zoom: true,\n      selection: true\n    }\n\n    synchronize(gs, options)\n  }\n\n  _setNightMode (state) {\n    if (this.approvalMeter) {\n      this.approvalMeter.setDarkMode(state.nightMode)\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\nimport { fadeIn } from '../helpers/animation_helper'\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'decode',\n      'broadcast',\n      'rawTransaction',\n      'decodedTransaction',\n      'decodeHeader'\n    ]\n  }\n\n  connect () {\n    ws.registerEvtHandler('decodetxResp', (evt) => {\n      this.decodeHeaderTarget.textContent = 'Decoded tx'\n      fadeIn(this.decodedTransactionTarget)\n      this.decodedTransactionTarget.textContent = evt\n    })\n    ws.registerEvtHandler('sendtxResp', (evt) => {\n      this.decodeHeaderTarget.textContent = 'Sent tx'\n      fadeIn(this.decodedTransactionTarget)\n      this.decodedTransactionTarget.textContent = evt\n    })\n  }\n\n  disconnect () {\n    ws.deregisterEvtHandlers('decodetxResp')\n    ws.deregisterEvtHandlers('sendtxResp')\n  }\n\n  send (e) {\n    if (e.type === 'keypress' && e.keyCode !== 13) {\n      return\n    }\n    if (this.rawTransactionTarget.value !== '') {\n      ws.send(e.target.dataset.eventId, this.rawTransactionTarget.value)\n      this.rawTransactionTarget.textContent = ''\n      this.decodedTransactionTarget.textContent = ''\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { toggleSun } from '../services/theme_service'\n\n$(document).mouseup(function (e) {\n  const selectArea = $('#chainSelectList')\n  if (!selectArea.is(e.target) && selectArea.has(e.target).length === 0) {\n    if (selectArea.css('display') !== 'none') {\n      selectArea.css('display', 'none')\n    }\n  }\n})\n\n$(window).on('resize', function (event) {\n  const winWidth = $(window).width()\n  if (winWidth > 700) {\n    $('#menu').css('width', $('#topBarLeft').width())\n    return\n  }\n  $('#menu').css('width', 'auto')\n})\n\nconst multichainList = ['btc', 'ltc']\n\nfunction isMutilchainUrl (url) {\n  let isMultichain = false\n  multichainList.forEach((chain) => {\n    if (url.includes('/' + chain)) {\n      isMultichain = true\n    }\n  })\n  return isMultichain\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['navbar', 'coinSelect']\n  }\n\n  connect () {\n    this.isMutilchain = isMutilchainUrl(window.location.href)\n    if (this.isMutilchain) {\n      const urlArr = window.location.href.split('/')\n      let chain\n      urlArr.forEach((element) => {\n        if (multichainList.includes(element)) {\n          chain = element\n        }\n      })\n      this.coinSelectTarget.value = chain\n      this.currentChain = chain\n    } else {\n      this.currentChain = 'dcr'\n    }\n    const _this = this\n    document.addEventListener('scroll', function () {\n      _this.handlerScroll()\n    })\n    _this.handlerScroll()\n    $('html').css('overflow-x', '')\n    // handler for chain selection\n    const chainArray = []\n    const chainNameArr = []\n    $('.vodiapicker option').each(function () {\n      const img = $(this).attr('data-thumbnail')\n      const text = this.innerText\n      const value = $(this).val()\n      const item = '<li><img src=\"' + img + '\" alt=\"\" value=\"' + value + '\"/><span>' + text + '</span></li>'\n      chainArray.push(item)\n      chainNameArr.push(value)\n    })\n    $('#selectUl').html(chainArray)\n    const chainIndex = chainNameArr.indexOf(this.currentChain)\n    if (chainIndex >= 0) {\n      $('.chain-selected-btn').html(chainArray[chainIndex])\n      $('.chain-selected-btn').attr('value', this.currentChain)\n    }\n    $('#selectUl li').click(function () {\n      const value = $(this).find('img').attr('value')\n      if (value === _this.currentChain) {\n        $('.selection-area').toggle()\n        return\n      }\n      _this.keepWithUrl(value)\n      // const img = $(this).find('img').attr('src')\n      // const text = this.innerText\n      // const item = '<li><img src=\"' + img + '\" alt=\"\" /><span>' + text + '</span></li>'\n      // $('.chain-selected-btn').html(item)\n      // $('.chain-selected-btn').attr('value', value)\n      // $('.selection-area').toggle()\n    })\n    $('.chain-selected-btn').click(function () {\n      $('.selection-area').toggle()\n    })\n    $('#menu').css('width', $('#topBarLeft').width())\n  }\n\n  handlerScroll () {\n    // Get the scroll position\n    const scrollPos = window.pageYOffset\n    if (scrollPos > 20) {\n      this.navbarTarget.classList.add('scroll-topbar')\n      $('#menuDivider').addClass('d-none')\n    } else {\n      this.navbarTarget.classList.remove('scroll-topbar')\n      $('#menuDivider').removeClass('d-none')\n    }\n  }\n\n  changeCoin (e) {\n    const coin = e.target.value\n    this.keepWithUrl(coin)\n  }\n\n  removeUrlPostfixParam (href) {\n    const indexOfParam = href.indexOf('?')\n    if (indexOfParam < 0) {\n      return href\n    }\n    return href.substring(0, indexOfParam)\n  }\n\n  getParamFromURL (href, key) {\n    const indexOfParam = href.indexOf('?')\n    if (indexOfParam < 0) {\n      return ''\n    }\n    const paramStr = href.substring(indexOfParam + 1)\n    const paramArr = paramStr.split('&')\n    let value = ''\n    paramArr.forEach(param => {\n      if (!param || param === '') {\n        return\n      }\n      const paramV = param.split('=')\n      if (paramV.length < 2) {\n        return\n      }\n      if (key === paramV[0].trim()) {\n        value = paramV[1].trim()\n      }\n    })\n    return value\n  }\n\n  keepWithUrl (coin) {\n    const href = window.location.href\n    const originUrl = this.removeUrlPostfixParam(href)\n    const oldChain = this.currentChain\n    this.currentChain = coin\n    //  if is chainhome\n    if (window.location.pathname === '/' || originUrl.endsWith('/decred') || originUrl.endsWith('/' + oldChain)) {\n      //  if current is decred home, coin difference with dcr\n      if (window.location.pathname === '/' || originUrl.endsWith('/decred')) {\n        if (coin === 'dcr') {\n          return\n        }\n        window.location.href = originUrl + coin\n        return\n      }\n      if (oldChain === coin) {\n        return\n      }\n      if (coin === 'dcr') {\n        window.location.href = originUrl.replaceAll('/' + oldChain, '/decred')\n      } else {\n        window.location.href = originUrl.replaceAll('/' + oldChain, '/' + coin)\n      }\n    }\n    //  if is market page\n    if (href.includes('/market')) {\n      let newHref = this.replaceChainFromURL(originUrl, 'market', oldChain, coin)\n      //  get chart type\n      const chartType = this.getParamFromURL(href, 'chart')\n      if (chartType !== '') {\n        newHref += '?chart=' + chartType\n      }\n      window.location.href = newHref\n      return\n    }\n    //  if is blocks page\n    if (href.includes('/blocks')) {\n      let newHref = this.replaceChainFromURL(originUrl, 'blocks', oldChain, coin)\n      //  get rows per page\n      const rpp = this.getParamFromURL(href, 'rows')\n      if (rpp !== '') {\n        newHref += '?rows=' + rpp\n      }\n      window.location.href = newHref\n      return\n    }\n    //  if mempool page\n    if (href.includes('/mempool')) {\n      const newHref = this.replaceChainFromURL(originUrl, 'mempool', oldChain, coin)\n      window.location.href = newHref\n      return\n    }\n    //  if supply page\n    if (href.includes('/supply')) {\n      const newHref = this.replaceChainFromURL(originUrl, 'supply', oldChain, coin)\n      window.location.href = newHref\n      return\n    }\n    //  if supply page\n    if (href.includes('/parameters')) {\n      const newHref = this.replaceChainFromURL(originUrl, 'parameters', oldChain, coin)\n      window.location.href = newHref\n      return\n    }\n    //  if visualblocks page\n    if (href.includes('/visualblocks')) {\n      const newHref = this.replaceChainFromURL(originUrl, 'visualblocks', oldChain, coin)\n      window.location.href = newHref\n      return\n    }\n    //  if charts page\n    if (href.includes('/charts')) {\n      let newHref = this.replaceChainFromURL(originUrl, 'charts', oldChain, coin)\n      //  get chart type\n      const chartType = this.getParamFromURL(href, 'chart')\n      if (chartType !== '') {\n        if (this.isSameChainChart(chartType, oldChain, coin)) {\n          newHref += '?chart=' + chartType\n        }\n      }\n      window.location.href = newHref\n      return\n    }\n    //  else\n    switch (coin) {\n      case 'dcr':\n        window.location.href = '/decred'\n        break\n      default:\n        window.location.href = '/' + coin\n        break\n    }\n  }\n\n  isSameChainChart (chartType, oldCoin, newCoin) {\n    const sameChart = ['block-size', 'blockchain-size', 'tx-count', 'pow-difficulty', 'coin-supply', 'fees', 'duration-btw-blocks', 'hashrate']\n    if (oldCoin !== 'dcr' && newCoin !== 'dcr') {\n      return true\n    }\n    return sameChart.includes(chartType)\n  }\n\n  replaceChainFromURL (href, endsWith, oldCoin, newCoin) {\n    //  if oldCoin is decred\n    if (oldCoin === 'dcr') {\n      let replaceStr = '/' + endsWith\n      if (href.includes('/decred')) {\n        replaceStr = '/decred' + replaceStr\n      }\n      return href.replaceAll(replaceStr, '/' + newCoin + '/' + endsWith)\n    }\n    if (newCoin === 'dcr') {\n      return href.replaceAll('/' + oldCoin + '/' + endsWith, '/decred/' + endsWith)\n    }\n    return href.replaceAll('/' + oldCoin + '/' + endsWith, '/' + newCoin + '/' + endsWith)\n  }\n\n  topSunClick () {\n    toggleSun()\n  }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  execute (e) {\n    e.preventDefault()\n    const search = e.target[0].value.trim()\n    if (search === '') {\n      return\n    }\n    Turbolinks.visit('/search?search=' + search)\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport TurboQuery from '../helpers/turbolinks_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst responseCache = {}\nlet requestCounter = 0\n\nfunction hasCache (k) {\n  if (!responseCache[k]) return false\n  const expiration = new Date(responseCache[k].expiration)\n  return expiration > new Date()\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return [\n      'blockHeight',\n      'startDate', 'endDate',\n      'priceDCR', 'dayText', 'amount', 'days', 'daysText',\n      'amountRoi', 'percentageRoi',\n      'table', 'tableBody', 'rowTemplate', 'amountError', 'startDateErr'\n    ]\n  }\n\n  async initialize () {\n    this.rewardPeriod = parseInt(this.data.get('rewardPeriod'))\n    this.targetTimePerBlock = parseInt(this.data.get('timePerblock'))\n    this.ticketExpiry = parseInt(this.data.get('ticketExpiry'))\n    this.ticketMaturity = parseInt(this.data.get('ticketMaturity'))\n    this.coinbaseMaturity = parseInt(this.data.get('coinbaseMaturity'))\n    this.ticketsPerBlock = parseInt(this.data.get('ticketsPerblock'))\n    this.ticketPrice = parseFloat(this.data.get('ticketPrice'))\n    this.poolSize = parseInt(this.data.get('poolSize'))\n    this.poolValue = parseFloat(this.data.get('poolValue'))\n    this.blockHeight = parseInt(this.data.get('blockHeight'))\n    this.coinSupply = parseInt(this.data.get('coinSupply')) / 1e8\n    // default, startDate is 3 month ago\n    this.last3Months = new Date()\n    this.last3Months.setMonth(this.last3Months.getMonth() - 3)\n    this.startDateTarget.value = this.formatDateToString(this.last3Months)\n    this.endDateTarget.value = this.formatDateToString(new Date())\n    this.amountTarget.value = 1000\n\n    this.query = new TurboQuery()\n    this.settings = TurboQuery.nullTemplate([\n      'amount', 'start', 'end'\n    ])\n\n    this.defaultSettings = {\n      amount: 1000,\n      start: this.startDateTarget.value,\n      end: this.endDateTarget.value\n    }\n\n    this.query.update(this.settings)\n    if (this.settings.amount) {\n      this.amountTarget.value = this.settings.amount\n    }\n    if (this.settings.start) {\n      this.startDateTarget.value = this.settings.start\n    }\n    if (this.settings.end) {\n      this.endDateTarget.value = this.settings.end\n    }\n\n    this.calculate()\n  }\n\n  // Amount input event\n  amountKeypress (e) {\n    if (e.keyCode === 13) {\n      this.amountChanged()\n    }\n  }\n\n  // convert date to strin display (YYYY-MM-DD)\n  formatDateToString (date) {\n    return [\n      date.getFullYear(),\n      ('0' + (date.getMonth() + 1)).slice(-2),\n      ('0' + date.getDate()).slice(-2)\n    ].join('-')\n  }\n\n  updateQueryString () {\n    const [query, settings, defaults] = [{}, this.settings, this.defaultSettings]\n    for (const k in settings) {\n      if (!settings[k] || settings[k].toString() === defaults[k].toString()) continue\n      query[k] = settings[k]\n    }\n    this.query.replace(query)\n  }\n\n  // When amount was changed\n  amountChanged () {\n    this.settings.amount = parseInt(this.amountTarget.value)\n    this.calculate()\n  }\n\n  // StartDate type event\n  startDateKeypress (e) {\n    if (e.keyCode !== 13) {\n      return\n    }\n    if (!this.validateDate()) {\n      return\n    }\n    this.startDateChanged()\n  }\n\n  // When startDate was changed\n  startDateChanged () {\n    if (!this.validateDate()) {\n      return\n    }\n    this.settings.start = this.startDateTarget.value\n    this.calculate()\n  }\n\n  // EndDate type event\n  endDateKeypress (e) {\n    if (e.keyCode !== 13) {\n      return\n    }\n    if (!this.validateDate()) {\n      return\n    }\n    this.endDateChanged()\n  }\n\n  // When EndDate was changed\n  endDateChanged () {\n    if (!this.validateDate()) {\n      return\n    }\n    this.settings.end = this.endDateTarget.value\n    this.calculate()\n  }\n\n  // Validate Date range\n  validateDate () {\n    const startDate = new Date(this.startDateTarget.value)\n    const endDate = new Date(this.endDateTarget.value)\n\n    if (startDate > endDate) {\n      this.startDateErrTarget.textContent = 'Invalid date range'\n      return\n    }\n    const days = this.getDaysOfRange(startDate, endDate)\n    if (days < this.rewardPeriod) {\n      this.startDateErrTarget.textContent = `You must stake for more than ${this.rewardPeriod} days`\n      return false\n    }\n\n    this.startDateErrTarget.textContent = ''\n    return true\n  }\n\n  hideAll (targets) {\n    targets.classList.add('d-none')\n  }\n\n  showAll (targets) {\n    targets.classList.remove('d-none')\n  }\n\n  // Get days between startDate and endDate\n  getDaysOfRange (startDate, endDate) {\n    const differenceInTime = endDate.getTime() - startDate.getTime()\n    return differenceInTime / (1000 * 3600 * 24)\n  }\n\n  // Get Date from Days start from startDay\n  getDateFromDays (startDate, days) {\n    const tmpDate = new Date()\n    tmpDate.setFullYear(startDate.getFullYear())\n    tmpDate.setMonth(startDate.getMonth())\n    tmpDate.setDate(startDate.getDate() + Number(days))\n    return this.formatDateToString(tmpDate)\n  }\n\n  handlerRewardCalculator (days, startDate, amount) {\n    let today = new Date()\n    today = new Date(today.setUTCHours(0, 0, 0, 0))\n    let startingHeight = this.blockHeight\n    if (startDate.getTime() !== today.getTime()) {\n      const miliSecDiff = Math.abs(startDate - today)\n      const minutes = Math.floor(miliSecDiff / (1000 * 60))\n      const targetTimePerBlockMinutes = Math.floor(this.targetTimePerBlock / 60)\n      const blockDiff = Math.floor(minutes / targetTimePerBlockMinutes)\n      if (startDate.getTime() < today.getTime()) {\n        startingHeight = startingHeight - blockDiff\n      } else {\n        startingHeight = startingHeight + blockDiff\n      }\n    }\n    const stakePerc = this.poolValue / this.coinSupply\n    this.simulateStakingReward(days, amount, stakePerc, this.coinSupply, startingHeight, this.ticketPrice, this.blockHeight, startDate, amount)\n  }\n\n  async simulateStakingReward (numOfDays, startingBalance, currentStakePercent,\n    actualCoinBase, startingBlockHeight, actualTicketPrice, blockHeight, startDate, amount) {\n    requestCounter++\n    const thisRequest = requestCounter\n    const blocksPerDay = 86400 / this.targetTimePerBlock\n    const numberOfBlocks = numOfDays * blocksPerDay\n    let ticketsPurchased = 0\n    const coinAdjustmentFactor = actualCoinBase / this.maxCoinSupplyAtBlock(startingBlockHeight)\n    const meanVotingBlock = this.calcMeanVotingBlocks()\n    const theoTicketPrice = this.theoreticalTicketPrice(startingBlockHeight, coinAdjustmentFactor, currentStakePercent, meanVotingBlock)\n    const ticketAdjustmentFactor = actualTicketPrice / this.theoreticalTicketPrice(blockHeight, coinAdjustmentFactor, currentStakePercent, meanVotingBlock)\n    // Prepare for simulation\n    let simblock = startingBlockHeight\n    let ticketPrice = 0\n    let dcrBalance = startingBalance\n    const simulationTable = []\n    simulationTable.push({\n      simBlock: simblock,\n      simDay: 0,\n      dcrBalance: dcrBalance,\n      ticketPrice: theoTicketPrice,\n      reward: 0\n    })\n\n    // Get milstone to get subsidy info\n    const simBlockMilestone = []\n    let tmpSimblock = simblock\n    while (tmpSimblock < numberOfBlocks + startingBlockHeight) {\n      tmpSimblock += this.ticketMaturity + meanVotingBlock\n      tmpSimblock = Math.floor(tmpSimblock)\n      simBlockMilestone.push(tmpSimblock)\n      tmpSimblock += this.coinbaseMaturity\n      tmpSimblock++\n    }\n    const blockListParam = simBlockMilestone.join(',')\n    // get subsidy for milestones\n    const url = `/api/stakingcalc/getBlocksReward?list=${blockListParam}`\n    let response\n    if (hasCache(url)) {\n      response = responseCache[url]\n    } else {\n      // response = await axios.get(url)\n      response = await requestJSON(url)\n      responseCache[url] = response\n      if (thisRequest !== requestCounter) {\n        // new request was issued while waiting.\n        this.startDateTarget.classList.remove('loading')\n        return\n      }\n    }\n    const rewardMap = response.rewardMap\n    const rewardMyMap = new Map()\n    for (const key in rewardMap) {\n      rewardMyMap.set(Number(key), rewardMap[key])\n    }\n    while (simblock < numberOfBlocks + startingBlockHeight) {\n      ticketPrice = this.theoreticalTicketPrice(simblock, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) * ticketAdjustmentFactor\n      ticketsPurchased = Math.floor(dcrBalance / ticketPrice)\n      simulationTable[simulationTable.length - 1].ticketPrice = ticketPrice\n      simulationTable[simulationTable.length - 1].ticketsPurchased = ticketsPurchased\n      simblock += this.ticketMaturity + meanVotingBlock\n      simblock = Math.floor(simblock)\n      if (!rewardMyMap.has(simblock)) {\n        continue\n      }\n      dcrBalance += rewardMyMap.get(simblock) * ticketsPurchased\n      const blocksPassed = simblock - simulationTable[simulationTable.length - 1].simBlock\n      const daysPassed = blocksPassed / blocksPerDay\n      const day = simulationTable[simulationTable.length - 1].simDay + Math.floor(daysPassed)\n      simulationTable.push({\n        simBlock: simblock,\n        simDay: day,\n        dcrBalance: dcrBalance,\n        reward: Number(rewardMyMap.get(simblock)) * ticketsPurchased,\n        returnedFund: ticketPrice * ticketsPurchased,\n        ticketPrice: this.theoreticalTicketPrice(simblock, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) * ticketAdjustmentFactor\n      })\n\n      simblock += this.coinbaseMaturity\n      simblock++\n    }\n    const simulationReward = ((dcrBalance - startingBalance) / startingBalance) * 100\n    const excessBlocks = simblock - startingBlockHeight\n    const stakingRward = (numberOfBlocks / excessBlocks) * simulationReward\n    const overflow = startingBalance * (simulationReward - stakingRward) / 100\n    simulationTable[simulationTable.length - 1].dcrBalance -= overflow\n    simulationTable[simulationTable.length - 1].simDay -= (simblock - numberOfBlocks - startingBlockHeight) / blocksPerDay\n    simulationTable[simulationTable.length - 1].reward -= overflow\n    for (let i = simulationTable.length - 1; i > 0; i--) {\n      if (simulationTable[i].reward >= 0) {\n        break\n      }\n      simulationTable[i - 1].reward += simulationTable[i].reward\n      simulationTable[i].reward = 0\n    }\n    this.createResultTable(stakingRward, simulationTable, numOfDays, startDate, amount)\n  }\n\n  createResultTable (reward, simulationTable, days, startDate, amount) {\n    this.daysTextTarget.textContent = parseInt(days)\n    // number of periods\n    reward = !reward ? 0 : reward\n    const totalAmount = reward * amount * 1 / 100\n    this.percentageRoiTarget.textContent = reward.toFixed(2)\n    this.amountRoiTarget.textContent = totalAmount.toFixed(2)\n    if (!simulationTable || simulationTable.length === 0) {\n      this.hideAll(this.tableTarget)\n    } else {\n      this.showAll(this.tableTarget)\n    }\n    this.tableBodyTarget.innerHTML = ''\n    const _this = this\n    simulationTable.forEach(item => {\n      const exRow = document.importNode(_this.rowTemplateTarget.content, true)\n      const fields = exRow.querySelectorAll('td')\n      fields[0].innerText = _this.getDateFromDays(startDate, item.simDay)\n      fields[1].innerText = item.simBlock\n      item.returnedFund = !item.returnedFund ? 0 : item.returnedFund\n      item.ticketPrice = !item.ticketPrice ? 0 : item.ticketPrice\n      item.reward = !item.reward ? 0 : item.reward\n      fields[2].innerText = item.ticketPrice.toFixed(2)\n      fields[3].innerText = item.returnedFund.toFixed(2)\n      fields[4].innerText = item.reward.toFixed(2)\n      fields[5].innerText = item.dcrBalance.toFixed(2)\n      fields[6].innerText = (100 * (item.dcrBalance - amount) / amount).toFixed(2)\n      fields[7].innerText = item.ticketsPurchased ? item.ticketsPurchased : 0\n      _this.tableBodyTarget.appendChild(exRow)\n    })\n  }\n\n  theoreticalTicketPrice (blocknum, coinAdjustmentFactor, currentStakePercent, meanVotingBlock) {\n    const projectedCoinsCirculating = this.maxCoinSupplyAtBlock(blocknum) * coinAdjustmentFactor * currentStakePercent\n    const ticketPoolSize = (meanVotingBlock + this.ticketMaturity + this.coinbaseMaturity) * this.ticketsPerBlock\n    return projectedCoinsCirculating / ticketPoolSize\n  }\n\n  maxCoinSupplyAtBlock (blocknum) {\n    const maxSupply = (-(9 / (1e19)) * Math.pow(blocknum, 4) + (7 / (1e12)) * Math.pow(blocknum, 3) -\n      (2 / (1e5)) * Math.pow(blocknum, 2) + 29.757 * blocknum + 76963 + 1680000) // Premine 1.68M\n    return maxSupply\n  }\n\n  calcMeanVotingBlocks () {\n    const logPoolSizeM1 = Math.log(this.poolSize - 1)\n    const logPoolSize = Math.log(this.poolSize)\n    let v = 0\n    for (let i = 0; i <= this.ticketExpiry; i++) {\n      v += Math.exp(Math.log(i) + (i - 1) * logPoolSizeM1 - i * logPoolSize)\n    }\n    return v\n  }\n\n  // Calculate and response\n  async calculate () {\n    const amount = parseFloat(this.amountTarget.value)\n    if (!(amount > 0)) {\n      this.amountErrorTarget.textContent = 'Amount must be greater than 0'\n      return\n    }\n    this.amountErrorTarget.textContent = ''\n\n    let startDate = new Date(this.startDateTarget.value)\n    let endDate = new Date(this.endDateTarget.value)\n    startDate = new Date(startDate.setUTCHours(0, 0, 0, 0))\n    endDate = new Date(endDate.setUTCHours(0, 0, 0, 0))\n    const days = this.getDaysOfRange(startDate, endDate)\n    if (days < this.rewardPeriod) {\n      this.startDateErrTarget.textContent = `You must stake for more than ${this.rewardPeriod} days`\n      return\n    }\n    this.startDateErrTarget.textContent = ''\n    this.updateQueryString()\n    this.handlerRewardCalculator(days, startDate, amount)\n  }\n}\n","/* global Turbolinks */\nimport { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport ws from '../services/messagesocket_service'\nimport globalEventBus from '../services/event_bus_service'\n\nfunction buildProgressBar (data) {\n  const clean = dompurify.sanitize\n  const progressVal = data.percentage_complete\n  const timeRemaining = humanizeTime(data.seconds_to_complete)\n  const htmlString = data.bar_msg.length > 0 ? clean(`<p style=\"font-size:14px;\">${data.bar_msg}</p>`, { FORBID_TAGS: ['svg', 'math'] }) : ''\n  const subtitle = data.subtitle.trim()\n  let notifStr = subtitle.length > 0 ? clean(`<span style=\"font-size:11px;\">notification : <i>${subtitle}</i></span>`, { FORBID_TAGS: ['svg', 'math'] }) : ''\n\n  let remainingStr = 'pending'\n  if (progressVal > 0) {\n    remainingStr = data.seconds_to_complete > 0 ? 'remaining approx.  ' + timeRemaining : '0sec'\n  }\n\n  if (progressVal === 100) {\n    remainingStr = 'done'\n  }\n\n  if (subtitle === 'sync complete') {\n    notifStr = ''\n  }\n\n  return htmlString + clean(`<div class=\"progress\" style=\"height:30px;border-radius:5px;\">\n                <div class=\"progress-bar sync-progress-bar\" role=\"progressbar\" style=\"height:auto; width:` + progressVal + `%;\">\n                <span class=\"nowrap ps-1 fw-bold\">Progress ` + progressVal + '% (' + remainingStr + `)</span>\n                </div>\n            </div>`, { FORBID_TAGS: ['svg', 'math'] }) + notifStr\n}\n\nfunction humanizeTime (secs) {\n  const years = Math.floor(secs / 31536000) % 10\n  const months = Math.floor(secs / 2628000) % 12\n  const weeks = Math.floor(secs / 604800) % 4\n  const days = Math.floor(secs / 86400) % 7\n  const hours = Math.floor(secs / 3600) % 24\n  const minutes = Math.floor(secs / 60) % 60\n  const seconds = secs % 60\n  const timeUnit = ['yr', 'mo', 'wk', 'd', 'hr', 'min', 'sec']\n\n  return [years, months, weeks, days, hours, minutes, seconds]\n    .map((v, i) => v !== 0 ? v + '' + timeUnit[i] : '')\n    .join('  ')\n}\n\nlet hasRedirected = false\n\nexport default class extends Controller {\n  static get targets () {\n    return ['statusSyncing', 'futureBlock', 'init', 'address', 'message', 'searchResult']\n  }\n\n  connect () {\n    this.progressBars = {\n      'initial-load': this.initTarget,\n      'addresses-sync': this.addressTarget\n    }\n    const isMutilchain = this.data.get('isMutilchain')\n    const additionInfo = this.data.get('addInfo')\n    if (isMutilchain === 'true') {\n      this.searchResultTarget.innerHTML = additionInfo\n    }\n    ws.registerEvtHandler('blockchainSync', (evt) => {\n      const d = JSON.parse(evt)\n      let i\n\n      for (i = 0; i < d.length; i++) {\n        const v = d[i]\n\n        const bar = this.progressBars[v.progress_bar_id]\n        while (bar.firstChild) bar.removeChild(bar.firstChild)\n        bar.innerHTML = buildProgressBar(v)\n\n        if (v.subtitle === 'sync complete' && !hasRedirected) {\n          hasRedirected = true // block consecutive calls.\n          const msg = 'Blockchain synchronization complete. You will be redirected to the home page shortly.'\n          this.messageTarget.querySelector('h5').textContent = msg\n          setTimeout(() => Turbolinks.visit('/'), 10000)\n          if (window.Notification.permission === 'granted') {\n            const ntfn = new window.Notification('Blockchain Sync Complete', {\n              body: msg,\n              icon: '/images/dcrdata144x128.png'\n            })\n            setTimeout(() => ntfn.close(), 5000)\n          }\n          return\n        }\n      }\n    })\n    this.processBlock = this._processBlock.bind(this)\n    globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n  }\n\n  disconnect () {\n    ws.deregisterEvtHandlers('blockchainSync')\n    globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n  }\n\n  _processBlock (blockData) {\n    if (this.hasFutureBlockTarget) {\n      Turbolinks.visit(window.location, { action: 'replace' })\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['tiles', 'ticketTiles', 'yearTile', 'weekTile']\n  }\n\n  connect () {\n    const targetTimeStr = this.data.get('targetTime')\n    const ticketTimeStr = this.data.get('ticketTime')\n    this.chainType = this.data.get('chainType')\n    if (!targetTimeStr) {\n      return\n    }\n    this.targetDate = parseInt(targetTimeStr)\n    this.runTargetCountDown()\n    if (this.chainType === 'dcr') {\n      this.ticketTime = parseInt(ticketTimeStr)\n      this.runTicketTargetCountDown()\n    }\n  }\n\n  runTargetCountDown () {\n    this.getCountdown()\n    const _this = this\n    setInterval(function () { _this.getCountdown() }, 1000)\n  }\n\n  runTicketTargetCountDown () {\n    this.getTicketCountdown()\n    const _this = this\n    setInterval(function () { _this.getTicketCountdown() }, 1000)\n  }\n\n  pad (n) {\n    return (n < 10 ? '0' : '') + n\n  }\n\n  getTicketCountdown () {\n    const currentDate = new Date().getTime()\n    let secondsLeft = this.ticketTime - currentDate / 1000\n    this.ticketDays = this.pad(parseInt(secondsLeft / 86400))\n    secondsLeft = secondsLeft % 86400\n\n    this.ticketHours = this.pad(parseInt(secondsLeft / 3600))\n    secondsLeft = secondsLeft % 3600\n\n    this.ticketMinutes = this.pad(parseInt(secondsLeft / 60))\n    this.ticketSeconds = this.pad(parseInt(secondsLeft % 60))\n\n    // format countdown string + set tag value\n    this.ticketTilesTarget.innerHTML = '<span>' + this.ticketDays + '</span><span>' + this.ticketHours + '</span><span>' + this.ticketMinutes + '</span><span>' + this.ticketSeconds + '</span>'\n  }\n\n  getCountdown () {\n    const currentDate = new Date().getTime()\n    let secondsLeft = this.targetDate - currentDate / 1000\n\n    // years handler\n    this.years = null\n    const numOfYears = parseInt(secondsLeft / 31536000)\n    if (numOfYears > 0) {\n      this.years = this.pad(numOfYears)\n      secondsLeft = secondsLeft % 31536000\n    }\n\n    // week handler\n    this.weeks = null\n    const numOfWeek = parseInt(secondsLeft / 604800)\n    if (numOfWeek > 0) {\n      this.weeks = this.pad(numOfWeek)\n      secondsLeft = secondsLeft % 604800\n    }\n\n    // days handler\n    this.days = this.pad(parseInt(secondsLeft / 86400))\n    secondsLeft = secondsLeft % 86400\n\n    // hours handler\n    this.hours = this.pad(parseInt(secondsLeft / 3600))\n    secondsLeft = secondsLeft % 3600\n\n    // minutes handler\n    this.minutes = this.pad(parseInt(secondsLeft / 60))\n    // seconds handler\n    this.seconds = this.pad(parseInt(secondsLeft % 60))\n\n    // format countdown string + set tag value\n    let tileHtml = ''\n    if (this.years !== null) {\n      this.yearTileTarget.classList.remove('d-hide')\n      tileHtml += '<span>' + this.years + '</span>'\n    } else {\n      this.yearTileTarget.classList.add('d-hide')\n    }\n    if (this.weeks !== null) {\n      this.weekTileTarget.classList.remove('d-hide')\n      tileHtml += '<span>' + this.weeks + '</span>'\n    } else {\n      this.weekTileTarget.classList.add('d-hide')\n    }\n    tileHtml += '<span>' + this.days + '</span><span>' + this.hours + '</span><span>' + this.minutes + '</span><span>' + this.seconds + '</span>'\n    this.tilesTarget.innerHTML = tileHtml\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ws from '../services/messagesocket_service'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { getDefault } from '../helpers/module_helper'\nimport dompurify from 'dompurify'\nimport { requestJSON } from '../helpers/http'\n\nlet Dygraph // lazy loaded on connect\n\n// Common code for ploting dygraphs\nfunction legendFormatter (data) {\n  if (data.x == null) return ''\n  let html = this.getLabels()[0] + ': ' + data.xHTML\n  data.series.map((series) => {\n    const labeledData = ' <span style=\"color: ' + series.color + ';\">' + series.labelHTML + ': ' + series.yHTML\n    html += '<br>' + series.dashHTML + labeledData + '</span>'\n  })\n  dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n  return html\n}\n\n// Plotting the actual ticketpool graphs\nlet ms = 0\nlet origDate = 0\n\nfunction Comparator (a, b) {\n  if (a[0] < b[0]) return -1\n  if (a[0] > b[0]) return 1\n  return 0\n}\n\nfunction purchasesGraphData (items, memP) {\n  const s = []\n  let finalDate = ''\n\n  items.time.map((n, i) => {\n    finalDate = new Date(n)\n    s.push([finalDate, 0, items.immature[i], items.live[i], items.price[i]])\n  })\n\n  if (memP) {\n    s.push([new Date(memP.time), memP.count, 0, 0, memP.price]) // add mempool\n  }\n\n  origDate = s[0][0] - new Date(0)\n  ms = (finalDate - new Date(0)) + 1000\n\n  return s\n}\n\nfunction priceGraphData (items, memP) {\n  let mempl = 0\n  let mPrice = 0\n  let mCount = 0\n  let p = []\n\n  if (memP) {\n    mPrice = memP.price\n    mCount = memP.count\n  }\n\n  items.price.map((n, i) => {\n    if (n === mPrice) {\n      mempl = mCount\n      p.push([n, mempl, items.immature[i], items.live[i]])\n    } else {\n      p.push([n, 0, items.immature[i], items.live[i]])\n    }\n  })\n\n  if (mempl === 0) {\n    p.push([mPrice, mCount, 0, 0]) // add mempool\n    p = p.sort(Comparator)\n  }\n\n  return p\n}\n\nfunction populateOutputs (data) {\n  const totalCount = parseInt(data.count.reduce((a, n) => { return a + n }, 0))\n  let tableData = '<tr><th style=\"width: 30%;\"># of sstxcommitment outputs</th><th>Count</th><th>% Occurrence</th></tr>'\n  data.outputs.map((n, i) => {\n    const count = parseInt(data.count[i])\n    tableData += `<tr><td class=\"pe-2 lh1rem vam nowrap xs-w117 fw-bold\">${parseInt(n)}</td>\n    <td><span class=\"hash lh1rem\">${count}</span></td>\n    <td><span class=\"hash lh1rem\">${((count * 100) / totalCount).toFixed(4)}% </span></td></tr>`\n  })\n  const tbody = document.createElement('tbody')\n  tbody.innerHTML = tableData\n  return tbody\n}\n\nfunction getWindow (val) {\n  switch (val) {\n    case 'day': return [(ms - 8.64E+07) - 1000, ms]\n    case 'wk': return [(ms - 6.048e+8) - 1000, ms]\n    case 'mo': return [(ms - 2.628e+9) - 1000, ms]\n    default: return [origDate, ms]\n  }\n}\n\nconst commonOptions = {\n  retainDateWindow: false,\n  showRangeSelector: true,\n  digitsAfterDecimal: 8,\n  fillGraph: true,\n  stackedGraph: true,\n  plotter: barChartPlotter,\n  legendFormatter: legendFormatter,\n  labelsSeparateLines: true,\n  rangeSelectorHeight: 30,\n  legend: 'follow'\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['zoom', 'bars', 'age', 'wrapper', 'outputs']\n  }\n\n  async initialize () {\n    this.mempool = false\n    this.tipHeight = 0\n    this.purchasesGraph = null\n    this.priceGraph = null\n    this.graphData = {\n      time_chart: null,\n      price_chart: null\n    }\n    this.zoom = 'all'\n    this.bars = 'all'\n\n    Dygraph = await getDefault(\n      import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n    )\n    this.chartCount += 2\n    this.purchasesGraph = this.makePurchasesGraph()\n    this.priceGraph = this.makePriceGraph()\n  }\n\n  connect () {\n    ws.registerEvtHandler('newblock', () => {\n      ws.send('getticketpooldata', this.bars)\n    })\n\n    ws.registerEvtHandler('getticketpooldataResp', (evt) => {\n      if (evt === '') {\n        return\n      }\n      const data = JSON.parse(evt)\n      this.processData(data)\n    })\n\n    this.fetchAll()\n  }\n\n  async fetchAll () {\n    this.wrapperTarget.classList.add('loading')\n    const chartsResponse = await requestJSON('/api/ticketpool/charts')\n    this.processData(chartsResponse)\n    this.wrapperTarget.classList.remove('loading')\n  }\n\n  processData (data) {\n    if (data.mempool) {\n      // If mempool data is included, assume the data height is the tip.\n      this.mempool = data.mempool\n      this.tipHeight = data.height\n    }\n    if (data.time_chart) {\n      // Only append the mempool data if this data goes to the tip.\n      const mempool = this.tipHeight === data.height ? this.mempool : false\n      this.graphData.time_chart = purchasesGraphData(data.time_chart, mempool)\n      if (this.purchasesGraph !== null) {\n        this.purchasesGraph.updateOptions({ file: this.graphData.time_chart })\n        this.purchasesGraph.resetZoom()\n      }\n    }\n    if (data.price_chart) {\n      this.graphData.price_chart = priceGraphData(data.price_chart, this.mempool)\n      if (this.priceGraph !== null) {\n        this.priceGraph.updateOptions({ file: this.graphData.price_chart })\n      }\n    }\n    if (data.outputs_chart) {\n      while (this.outputsTarget.firstChild) this.outputsTarget.removeChild(this.outputsTarget.firstChild)\n      this.outputsTarget.appendChild(populateOutputs(data.outputs_chart))\n    }\n  }\n\n  disconnect () {\n    this.purchasesGraph.destroy()\n    this.priceGraph.destroy()\n\n    ws.deregisterEvtHandlers('ticketpool')\n    ws.deregisterEvtHandlers('getticketpooldataResp')\n  }\n\n  onZoom (e) {\n    const target = e.srcElement || e.target\n    this.zoomTargets.forEach((zoomTarget) => {\n      zoomTarget.classList.remove('active')\n    })\n    target.classList.add('active')\n    this.zoom = e.target.name\n    this.purchasesGraph.updateOptions({ dateWindow: getWindow(this.zoom) })\n  }\n\n  async onBarsChange (e) {\n    const target = e.srcElement || e.target\n    this.barsTargets.forEach((barsTarget) => {\n      barsTarget.classList.remove('active')\n    })\n    this.bars = e.target.name\n    target.classList.add('active')\n    this.wrapperTarget.classList.add('loading')\n    const url = '/api/ticketpool/bydate/' + this.bars\n    const ticketPoolResponse = await requestJSON(url)\n    this.purchasesGraph.updateOptions({\n      file: purchasesGraphData(ticketPoolResponse.time_chart)\n    })\n    this.wrapperTarget.classList.remove('loading')\n  }\n\n  makePurchasesGraph () {\n    const d = this.graphData.time_chart || [[0, 0, 0, 0, 0]]\n    const p = {\n      labels: ['Date', 'Mempool Tickets', 'Immature Tickets', 'Live Tickets', 'Ticket Value'],\n      colors: ['#FF8C00', '#006600', '#2971FF', '#ff0090'],\n      title: 'Tickets Purchase Distribution',\n      ylabel: 'Number of Tickets',\n      y2label: 'A.v.g. Tickets Value (DCR)',\n      dateWindow: getWindow('day'),\n      series: {\n        'Ticket Value': {\n          axis: 'y2',\n          plotter: Dygraph.Plotters.linePlotter\n        }\n      },\n      axes: { y2: { axisLabelFormatter: (d) => { return d.toFixed(1) } } }\n    }\n    return new Dygraph(\n      document.getElementById('tickets-by-purchase-date'),\n      d, { ...commonOptions, ...p }\n    )\n  }\n\n  makePriceGraph () {\n    const d = this.graphData.price_chart || [[0, 0, 0, 0]]\n    const p = {\n      labels: ['Price', 'Mempool Tickets', 'Immature Tickets', 'Live Tickets'],\n      colors: ['#FF8C00', '#006600', '#2971FF'],\n      title: 'Ticket Price Distribution',\n      labelsKMB: true,\n      xlabel: 'Ticket Price (DCR)',\n      ylabel: 'Number of Tickets'\n    }\n    return new Dygraph(\n      document.getElementById('tickets-by-purchase-price'),\n      d, { ...commonOptions, ...p }\n    )\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\n\nfunction isCorrectVal (value) {\n  return /^\\d+$/.test(value) && value > 0\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['age', 'blocktime', 'header', 'duration']\n  }\n\n  connect () {\n    this.startAgeRefresh()\n    this.startDurationRefresh()\n    this.processBlock = this._processBlock.bind(this)\n    this.targetBlockTime = parseInt(document.getElementById('navBar').dataset.blocktime)\n    if (this.hasBlocktimeTarget) {\n      globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n    }\n    if (this.hasHeaderTarget) {\n      this.headerTargets.forEach(h => {\n        h.textContent = h.dataset.jstitle\n      })\n    }\n  }\n\n  disconnect () {\n    this.stopAgeRefresh()\n    this.stopDurationRefresh()\n    if (this.hasBlocktimeTarget) {\n      globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n    }\n  }\n\n  _processBlock (blockData) {\n    const block = blockData.block\n    this.blocktimeTarget.dataset.stamp = block.unixStamp\n    this.blocktimeTarget.classList.remove('text-danger')\n    this.blocktimeTarget.textContent = humanize.timeSince(block.unixStamp)\n  }\n\n  startAgeRefresh () {\n    setTimeout(() => {\n      this.setAges()\n    })\n    this.ageRefreshTimer = setInterval(() => {\n      this.setAges()\n    }, 10 * 1000)\n  }\n\n  startDurationRefresh () {\n    setTimeout(() => {\n      this.setDurations()\n    })\n    this.durationRefreshTimer = setInterval(() => {\n      this.setDurations()\n    }, 10 * 1000)\n  }\n\n  stopAgeRefresh () {\n    if (this.ageRefreshTimer) {\n      clearInterval(this.ageRefreshTimer)\n    }\n  }\n\n  stopDurationRefresh () {\n    if (this.durationRefreshTimer) {\n      clearInterval(this.durationRefreshTimer)\n    }\n  }\n\n  setDurations () {\n    if (!this.hasDurationTarget) return\n    this.durationTargets.forEach((el) => {\n      el.textContent = humanize.timeDuration(el.dataset.duration)\n    })\n  }\n\n  setAges () {\n    if (this.hasBlocktimeTarget) {\n      const lbt = this.blocktimeTarget.dataset.stamp\n      this.blocktimeTarget.textContent = humanize.timeSince(lbt)\n      if ((new Date()).getTime() / 1000 - lbt > 8 * this.targetBlockTime) { // 8*blocktime = 40minutes = 12000 seconds\n        this.element.classList.add('text-danger')\n      }\n    }\n    if (!this.hasAgeTarget) return\n    this.ageTargets.forEach((el) => {\n      if (isCorrectVal(el.dataset.age)) {\n        el.textContent = humanize.timeSince(el.dataset.age)\n      } else if (el.dataset.age !== '') {\n        el.textContent = humanize.timeSince(Date.parse(el.dataset.age) / 1000)\n      }\n    })\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport globalEventBus from '../services/event_bus_service'\n\nexport default class extends Controller {\n  static get targets () {\n    return ['difficulty', 'blockHeight', 'blockTime', 'supportedTable']\n  }\n\n  connect () {\n    const activeChainStr = this.data.get('activeChain')\n    if (!activeChainStr || activeChainStr === '') {\n      return\n    }\n    this.activeChainArr = activeChainStr.split(',')\n    const _this = this\n    this.activeChainArr.forEach(activeChain => {\n      if (!activeChain || activeChain === '') {\n        return\n      }\n      switch (activeChain) {\n        case 'dcr':\n          _this.processBlock = _this._processBlock.bind(_this)\n          globalEventBus.on('BLOCK_RECEIVED', _this.processBlock)\n          break\n        case 'ltc':\n          _this.processLTCBlock = _this._processLTCBlock.bind(_this)\n          globalEventBus.on('LTC_BLOCK_RECEIVED', _this.processLTCBlock)\n          break\n        case 'btc':\n          _this.processBTCBlock = _this._processBTCBlock.bind(_this)\n          globalEventBus.on('BTC_BLOCK_RECEIVED', _this.processBTCBlock)\n      }\n    })\n  }\n\n  disconnect () {\n    const _this = this\n    this.activeChainArr.forEach(activeChain => {\n      if (!activeChain || activeChain === '') {\n        return\n      }\n      switch (activeChain) {\n        case 'dcr':\n          globalEventBus.off('BLOCK_RECEIVED', _this.processBlock)\n          break\n        case 'ltc':\n          globalEventBus.off('LTC_BLOCK_RECEIVED', _this.processLTCBlock)\n          break\n        case 'btc':\n          globalEventBus.off('BTC_BLOCK_RECEIVED', _this.processBTCBlock)\n      }\n    })\n  }\n\n  _processBlock (blockData) {\n    this.processMutilchainBlock(blockData, 'dcr')\n  }\n\n  _processLTCBlock (blockData) {\n    this.processMutilchainBlock(blockData, 'ltc')\n  }\n\n  _processBTCBlock (blockData) {\n    this.processMutilchainBlock(blockData, 'btc')\n  }\n\n  processMutilchainBlock (blockData, chainType) {\n    const blockHeightObj = document.getElementById(chainType + '_blockHeight')\n    const txCountObj = document.getElementById(chainType + '_txcount')\n    const coinSupplyObj = document.getElementById(chainType + '_coinSupply')\n    const block = blockData.block\n    blockHeightObj.textContent = block.height\n    blockHeightObj.href = (chainType === 'dcr' ? '' : '/' + chainType) + `/block/${block.hash}`\n\n    // handler extra data\n    const extra = blockData.extra\n    if (!extra) {\n      return\n    }\n    txCountObj.textContent = humanize.commaWithDecimal(extra.total_transactions, 0)\n    coinSupplyObj.textContent = humanize.commaWithDecimal(extra.coin_value_supply, 2)\n  }\n}\n","import txInBlock from '../helpers/block_helper'\nimport globalEventBus from '../services/event_bus_service'\nimport { barChartPlotter } from '../helpers/chart_helper'\nimport { Controller } from '@hotwired/stimulus'\nimport humanize from '../helpers/humanize_helper'\nimport { MiniMeter } from '../helpers/meters.js'\nimport { darkEnabled } from '../services/theme_service'\nimport { getDefault } from '../helpers/module_helper'\nimport { requestJSON } from '../helpers/http'\n\nconst chartLayout = {\n  showRangeSelector: true,\n  legend: 'follow',\n  fillGraph: true,\n  colors: ['#0c644e', '#f36e6e'],\n  stackedGraph: true,\n  legendFormatter: agendasLegendFormatter,\n  labelsSeparateLines: true,\n  labelsKMB: true,\n  labelsUTC: true\n}\n\nfunction agendasLegendFormatter (data) {\n  if (data.x == null) return ''\n  let html\n  if (this.getLabels()[0] === 'Date') {\n    html = this.getLabels()[0] + ': ' + humanize.date(data.x)\n  } else {\n    html = this.getLabels()[0] + ': ' + data.xHTML\n  }\n  const total = data.series.reduce((total, n) => {\n    return total + n.y\n  }, 0)\n  data.series.forEach((series) => {\n    const percentage = total !== 0 ? ((series.y * 100) / total).toFixed(2) : 0\n    html = '<span style=\"color:#2d2d2d;\">' + html + '</span>'\n    html += `<br>${series.dashHTML}<span style=\"color: ${series.color};\">${series.labelHTML}: ${series.yHTML} (${percentage}%)</span>`\n  })\n  return html\n}\n\nfunction cumulativeVoteChoicesData (d) {\n  if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0]]\n  return d.yes.map((n, i) => {\n    return [\n      new Date(d.time[i]),\n      n,\n      d.no[i]\n    ]\n  })\n}\n\nfunction voteChoicesByBlockData (d) {\n  if (d == null || !(d.yes instanceof Array)) return [[0, 0, 0]]\n  return d.yes.map((n, i) => {\n    return [\n      d.height[i],\n      n,\n      d.no[i]\n    ]\n  })\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['unconfirmed', 'confirmations', 'formattedAge', 'age', 'progressBar',\n      'ticketStage', 'expiryChance', 'mempoolTd', 'ticketMsg',\n      'expiryMsg', 'statusMsg', 'spendingTx', 'approvalMeter', 'cumulativeVoteChoices',\n      'voteChoicesByBlock', 'outputRow', 'showMoreText', 'showMoreIcon']\n  }\n\n  initialize () {\n    this.emptydata = [[0, 0, 0]]\n    this.cumulativeVoteChoicesChart = false\n    this.voteChoicesByBlockChart = false\n  }\n\n  async connect () {\n    this.txid = this.data.get('txid')\n    this.type = this.data.get('type')\n    this.isTSpend = this.type === 'Treasury Spend'\n    this.processBlock = this._processBlock.bind(this)\n    this.tspendExpend = false\n    this.targetBlockTime = parseInt(document.getElementById('navBar').dataset.blocktime)\n    globalEventBus.on('BLOCK_RECEIVED', this.processBlock)\n\n    if (this.isTSpend) {\n      this.Dygraph = await getDefault(\n        import(/* webpackChunkName: \"dygraphs\" */ '../vendor/dygraphs.min.js')\n      )\n      this.drawCharts()\n      const agendaResponse = await requestJSON('/api/treasury/votechart/' + this.txid)\n      this.cumulativeVoteChoicesChart.updateOptions({\n        file: cumulativeVoteChoicesData(agendaResponse.by_time)\n      })\n      this.voteChoicesByBlockChart.updateOptions({\n        file: voteChoicesByBlockData(agendaResponse.by_height)\n      })\n    }\n\n    // Approval meter for tspend votes.\n    if (!this.hasApprovalMeterTarget) return // there will be no meter.\n\n    const d = this.approvalMeterTarget.dataset\n    const opts = {\n      darkMode: darkEnabled(),\n      segments: [\n        { end: d.threshold, color: '#ed6d47' },\n        { end: 1, color: '#2dd8a3' }\n      ]\n    }\n    this.approvalMeter = new MiniMeter(this.approvalMeterTarget, opts)\n  }\n\n  drawCharts () {\n    this.cumulativeVoteChoicesChart = this.drawChart(\n      this.cumulativeVoteChoicesTarget,\n      {\n        labels: ['Date', 'Yes', 'No'],\n        ylabel: 'Cumulative Vote Choices Cast',\n        title: 'Cumulative Vote Choices',\n        labelsKMB: true\n      }\n    )\n    this.voteChoicesByBlockChart = this.drawChart(\n      this.voteChoicesByBlockTarget,\n      {\n        labels: ['Block Height', 'Yes', 'No'],\n        ylabel: 'Vote Choices Cast',\n        title: 'Vote Choices By Block',\n        plotter: barChartPlotter\n      }\n    )\n  }\n\n  toggleExpand () {\n    this.tspendExpend = !this.tspendExpend\n    if (!this.outputRowTargets || this.outputRowTargets.length === 0) {\n      return\n    }\n    this.outputRowTargets.forEach((rowTarget) => {\n      // get index\n      const index = rowTarget.dataset.index\n      if (Number(index) < 5) {\n        return\n      }\n      if (this.tspendExpend) {\n        rowTarget.classList.remove('d-hide')\n      } else {\n        rowTarget.classList.add('d-hide')\n      }\n    })\n    this.showMoreTextTarget.textContent = this.tspendExpend ? 'Show Less' : 'Show More'\n    if (this.tspendExpend) {\n      this.showMoreIconTarget.classList.add('reverse')\n    } else {\n      this.showMoreIconTarget.classList.remove('reverse')\n    }\n  }\n\n  disconnect () {\n    globalEventBus.off('BLOCK_RECEIVED', this.processBlock)\n  }\n\n  drawChart (el, options, Dygraph) {\n    return new this.Dygraph(\n      el,\n      this.emptydata,\n      {\n        ...chartLayout,\n        ...options\n      }\n    )\n  }\n\n  _processBlock (blockData) {\n    const block = blockData.block\n    const extra = blockData.extra\n    // If this is a transaction in mempool, it will have an unconfirmedTarget.\n    if (this.hasUnconfirmedTarget) {\n      const txid = this.unconfirmedTarget.dataset.txid\n      if (txInBlock(txid, block)) {\n        this.confirmationsTarget.textContent = this.confirmationsTarget.dataset.yes.replace('#', '1').replace('@', '')\n        this.confirmationsTarget.classList.add('confirmed')\n        // Set the block link\n        const link = this.unconfirmedTarget.querySelector('.mp-unconfirmed-link')\n        link.href = '/block/' + block.hash\n        link.textContent = block.height\n        this.unconfirmedTarget.querySelector('.mp-unconfirmed-msg').classList.add('d-none')\n        // Reset the age and time to be based off of the block time.\n        const age = this.unconfirmedTarget.querySelector('.mp-unconfirmed-time')\n        age.dataset.age = block.time\n        age.textContent = humanize.timeSince(block.unixStamp)\n        this.formattedAgeTarget.textContent = humanize.date(block.time, true)\n        this.ageTarget.dataset.age = block.unixStamp\n        this.ageTarget.textContent = humanize.timeSince(block.unixStamp)\n        this.ageTarget.dataset.timeTarget = 'age'\n        // Prepare the progress bar for updating\n        if (this.hasProgressBarTarget) {\n          this.progressBarTarget.dataset.confirmHeight = block.height\n        }\n        delete this.unconfirmedTarget.dataset.txTarget\n      }\n    }\n\n    // Look for any unconfirmed matching tx hashes in the table.\n    if (this.hasMempoolTdTarget) {\n      this.mempoolTdTargets.forEach((td) => {\n        const txid = td.dataset.txid\n        if (txInBlock(txid, block)) {\n          const link = document.createElement('a')\n          link.textContent = block.height\n          link.href = `/block/${block.height}`\n          while (td.firstChild) td.removeChild(td.firstChild)\n          td.appendChild(link)\n          delete td.dataset.txTarget\n        }\n      })\n    }\n\n    // Advance the progress bars.\n    if (!this.hasProgressBarTarget) {\n      return\n    }\n    const bar = this.progressBarTarget\n    let txBlockHeight = parseInt(bar.dataset.confirmHeight)\n    if (txBlockHeight === 0) {\n      return\n    }\n    let confirmations = block.height - txBlockHeight + 1\n    let txType = bar.dataset.txType\n    let complete = parseInt(bar.getAttribute('aria-valuemax'))\n\n    if (txType === 'LiveTicket') {\n      // Check for a spending vote\n      const votes = block.Votes || []\n      for (const idx in votes) {\n        const vote = votes[idx]\n        if (this.txid === vote.VoteInfo.ticket_spent) {\n          const link = document.createElement('a')\n          link.href = `/tx/${vote.TxID}`\n          link.textContent = 'vote'\n          const msg = this.spendingTxTarget\n          while (msg.firstChild) msg.removeChild(msg.firstChild)\n          msg.appendChild(link)\n          this.ticketStageTarget.innerHTML = 'Voted'\n          return\n        }\n      }\n    }\n\n    if (confirmations === complete + 1) {\n      // Hide bars after completion, or change ticket to live ticket\n      if (txType === 'Ticket') {\n        txType = bar.dataset.txType = 'LiveTicket'\n        const expiry = parseInt(bar.dataset.expiry)\n        bar.setAttribute('aria-valuemax', expiry)\n        txBlockHeight = bar.dataset.confirmHeight = block.height\n        this.ticketMsgTarget.classList.add('d-none')\n        this.expiryMsgTarget.classList.remove('d-none')\n        confirmations = 1\n        complete = expiry\n      } else {\n        this.ticketStageTarget.innerHTML = txType === 'LiveTicket' ? 'Expired' : 'Mature'\n        return\n      }\n    }\n\n    const barMsg = bar.querySelector('span')\n    if (confirmations === complete) {\n      // Special case: progress reaching max\n      switch (txType) {\n        case 'Ticket':\n          barMsg.textContent = 'Mature. Eligible to vote on next block.'\n          this.statusMsgTarget.textContent = 'live'\n          break\n        case 'LiveTicket':\n          barMsg.textContent = 'Ticket has expired'\n          delete bar.dataset.txTarget\n          this.statusMsgTarget.textContent = 'expired'\n          break\n        default: // Vote\n          barMsg.textContent = 'Mature. Ready to spend.'\n          this.statusMsgTarget.textContent = 'mature'\n      }\n      return\n    }\n\n    // Otherwise, set the bar appropriately\n    const blocksLeft = complete + 1 - confirmations\n    const remainingTime = blocksLeft * this.targetBlockTime\n    switch (txType) {\n      case 'LiveTicket': {\n        barMsg.textContent = `block ${confirmations} of ${complete} (${(remainingTime / 86400.0).toFixed(1)} days remaining)`\n        // Chance of expiring is (1-P)^N where P := single-block probability of being picked, N := blocks remaining.\n        const pctChance = Math.pow(1 - parseFloat(bar.dataset.ticketsPerBlock) / extra.pool_info.size, blocksLeft) * 100\n        this.expiryChanceTarget.textContent = `${pctChance.toFixed(2)}%`\n        break\n      }\n      case 'Ticket':\n        barMsg.textContent = `Immature, eligible to vote in ${blocksLeft} blocks (${(remainingTime / 3600.0).toFixed(1)} hours remaining)`\n        break\n      default: // Vote\n        barMsg.textContent = `Immature, spendable in ${blocksLeft} blocks (${(remainingTime / 3600.0).toFixed(1)} hours remaining)`\n    }\n    bar.setAttribute('aria-valuenow', confirmations)\n    bar.style.width = `${(confirmations / complete * 100).toString()}%`\n  }\n\n  toggleScriptData (e) {\n    const target = e.srcElement || e.target\n    const scriptData = target.querySelector('div.script-data')\n    if (!scriptData) return\n    scriptData.classList.toggle('d-hide')\n  }\n\n  _setNightMode (state) {\n    if (this.approvalMeter) {\n      this.approvalMeter.setDarkMode(state.nightMode)\n    }\n  }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport dompurify from 'dompurify'\nimport globalEventBus from '../services/event_bus_service'\nimport ws from '../services/messagesocket_service'\n\nconst conversionRate = 100000000\n\nfunction makeNode (html) {\n  const div = document.createElement('div')\n  div.innerHTML = dompurify.sanitize(html, { FORBID_TAGS: ['svg', 'math'] })\n  return div.firstChild\n}\n\nfunction makeMempoolBlock (block) {\n  let fees = 0\n  if (!block.Transactions) return\n  for (const tx of block.Transactions) {\n    fees += tx.Fees\n  }\n\n  return makeNode(`<div class=\"block visible\">\n                <div class=\"block-info\">\n                    <a class=\"color-code\" href=\"/mempool\">Mempool</a>\n                    <div class=\"mono\" style=\"line-height: 1;\">${Math.floor(block.Total)} DCR</div>\n                    <span class=\"timespan\">\n                        <span data-time-target=\"age\" data-age=\"${block.Time}\"></span>\n                    </span>\n                </div>\n                <div class=\"block-rows\">\n                    ${makeRewardsElement(block.Subsidy, fees, block.Votes.length, '#')}\n                    ${makeVoteElements(block.Votes)}\n                    ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, '/mempool')}\n                    ${makeTransactionElements(block.Transactions, '/mempool')}\n                </div>\n            </div>`\n  )\n}\n\nfunction newBlockHtmlElement (block) {\n  let rewardTxId\n  for (const tx of block.Transactions) {\n    if (tx.Coinbase) {\n      rewardTxId = tx.TxID\n      break\n    }\n  }\n\n  return makeNode(`<div class=\"block visible\">\n                ${makeBlockSummary(block.Height, block.Total, block.Time)}\n                <div class=\"block-rows\">\n                    ${makeRewardsElement(block.Subsidy, block.MiningFee, block.Votes.length, rewardTxId)}\n                    ${makeVoteElements(block.Votes)}\n                    ${makeTicketAndRevocationElements(block.Tickets, block.Revocations, `/block/${block.Height}`)}\n                    ${makeTransactionElements(block.Transactions, `/block/${block.Height}`)}\n                </div>\n            </div>`\n  )\n}\n\nfunction makeBlockSummary (blockHeight, totalSent, time) {\n  return `<div class=\"block-info\">\n                <a class=\"color-code\" href=\"/block/${blockHeight}\">${blockHeight}</a>\n                <div class=\"mono\" style=\"line-height: 1;\">${Math.floor(totalSent)} DCR</div>\n                <span class=\"timespan\">\n                    <span data-time-target=\"age\" data-age=\"${time}\"></span>&nbsp;ago\n                </span>\n            </div>`\n}\n\nfunction makeRewardsElement (subsidy, fee, voteCount, rewardTxId) {\n  if (!subsidy) {\n    return `<div class=\"block-rewards\">\n                    <span class=\"pow\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n                    <span class=\"pos\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n                    <span class=\"fund\"><span class=\"paint\" style=\"width:100%;\"></span></span>\n                    <span class=\"fees\" title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}'></span>\n                </div>`\n  }\n\n  const pow = subsidy.pow / conversionRate\n  const pos = subsidy.pos / conversionRate\n  const fund = (subsidy.developer || subsidy.dev) / conversionRate\n\n  const backgroundColorRelativeToVotes = `style=\"width: ${voteCount * 20}%\"` // 5 blocks = 100% painting\n\n  // const totalDCR = Math.round(pow + fund + fee);\n  const totalDCR = 1\n  return `<div class=\"block-rewards\" style=\"flex-grow: ${totalDCR}\">\n                <span class=\"pow\" style=\"flex-grow: ${pow}\"\n                    title='{\"object\": \"PoW Reward\", \"total\": \"${pow}\"}' data-visualBlocks-target=\"tooltip\">\n                    <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </a>\n                </span>\n                <span class=\"pos\" style=\"flex-grow: ${pos}\"\n                    title='{\"object\": \"PoS Reward\", \"total\": \"${pos}\"}' data-visualBlocks-target=\"tooltip\">\n                    <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </a>\n                </span>\n                <span class=\"fund\" style=\"flex-grow: ${fund}\"\n                    title='{\"object\": \"Project Fund\", \"total\": \"${fund}\"}' data-visualBlocks-target=\"tooltip\">\n                    <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\">\n                        <span class=\"paint\" ${backgroundColorRelativeToVotes}></span>\n                    </a>\n                </span>\n                <span class=\"fees\" style=\"flex-grow: ${fee}\"\n                    title='{\"object\": \"Tx Fees\", \"total\": \"${fee}\"}' data-visualBlocks-target=\"tooltip\">\n                    <a class=\"block-element-link\" href=\"/tx/${rewardTxId}\"></a>\n                </span>\n            </div>`\n}\n\nfunction makeVoteElements (votes) {\n  let totalDCR = 0\n  const voteElements = (votes || []).map(vote => {\n    totalDCR += vote.Total\n    return `<span style=\"background-color: ${vote.VoteValid ? '#2971ff' : 'rgba(253, 113, 74, 0.8)'}\"\n                    title='{\"object\": \"Vote\", \"total\": \"${vote.Total}\", \"voteValid\": \"${vote.VoteValid}\"}' data-visualBlocks-target=\"tooltip\">\n                    <a class=\"block-element-link\" href=\"/tx/${vote.TxID}\"></a>\n                </span>`\n  })\n\n  // append empty squares to votes\n  for (let i = voteElements.length; i < 5; i++) {\n    voteElements.push('<span title=\"Empty vote slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-votes\" style=\"flex-grow: ${totalDCR}\">\n                ${voteElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTicketAndRevocationElements (tickets, revocations, blockHref) {\n  let totalDCR = 0\n\n  const ticketElements = (tickets || []).map(ticket => {\n    totalDCR += ticket.Total\n    return makeTxElement(ticket, 'block-ticket', 'Ticket')\n  })\n  if (ticketElements.length > 50) {\n    const total = ticketElements.length\n    ticketElements.splice(30)\n    ticketElements.push(`<span class=\"block-ticket\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} tickets\">\n                                <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                            </span>`)\n  }\n  const revocationElements = (revocations || []).map(revocation => {\n    totalDCR += revocation.Total\n    return makeTxElement(revocation, 'block-rev', 'Revocation')\n  })\n\n  const ticketsAndRevocationElements = ticketElements.concat(revocationElements)\n\n  // append empty squares to tickets+revs\n  for (let i = ticketsAndRevocationElements.length; i < 20; i++) {\n    ticketsAndRevocationElements.push('<span title=\"Empty ticket slot\"></span>')\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-tickets\" style=\"flex-grow: ${totalDCR}\">\n                ${ticketsAndRevocationElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTransactionElements (transactions, blockHref) {\n  let totalDCR = 0\n  const transactionElements = (transactions || []).map(tx => {\n    totalDCR += tx.Total\n    return makeTxElement(tx, 'block-tx', 'Transaction', true)\n  })\n\n  if (transactionElements.length > 50) {\n    const total = transactionElements.length\n    transactionElements.splice(30)\n    transactionElements.push(`<span class=\"block-tx\" style=\"flex-grow: 10; flex-basis: 50px;\" title=\"Total of ${total} transactions\">\n                                    <a class=\"block-element-link\" href=\"${blockHref}\">+ ${total - 30}</a>\n                                </span>`)\n  }\n\n  // totalDCR = Math.round(totalDCR);\n  totalDCR = 1\n  return `<div class=\"block-transactions\" style=\"flex-grow: ${totalDCR}\">\n                ${transactionElements.join('\\n')}\n            </div>`\n}\n\nfunction makeTxElement (tx, className, type, appendFlexGrow) {\n  // const style = [ `opacity: ${(tx.VinCount + tx.VoutCount) / 10}` ];\n  const style = []\n  if (appendFlexGrow) {\n    style.push(`flex-grow: ${Math.round(tx.Total)}`)\n  }\n\n  return `<span class=\"${className}\" style=\"${style.join('; ')}\" data-visualBlocks-target=\"tooltip\"\n                title='{\"object\": \"${type}\", \"total\": \"${tx.Total}\", \"vout\": \"${tx.VoutCount}\", \"vin\": \"${tx.VinCount}\"}'>\n                <a class=\"block-element-link\" href=\"/tx/${tx.TxID}\"></a>\n            </span>`\n}\n\nexport default class extends Controller {\n  static get targets () {\n    return ['box', 'title', 'showmore', 'root', 'txs', 'tooltip', 'block']\n  }\n\n  connect () {\n    this.handleVisualBlocksUpdate = this._handleVisualBlocksUpdate.bind(this)\n    globalEventBus.on('BLOCK_RECEIVED', this.handleVisualBlocksUpdate)\n\n    ws.registerEvtHandler('getmempooltrimmedResp', (event) => {\n      console.log('received mempooltx response', event)\n      this.handleMempoolUpdate(event)\n    })\n\n    ws.registerEvtHandler('mempool', (event) => {\n      ws.send('getmempooltrimmed', '')\n    })\n\n    this.refreshBlocksDisplay = this._refreshBlocksDisplay.bind(this)\n    // on load (js file is loaded after loading html content)\n    window.addEventListener('resize', this.refreshBlocksDisplay)\n\n    // allow some ms for page to properly render blocks before refreshing display\n    setTimeout(this.refreshBlocksDisplay, 500)\n  }\n\n  disconnect () {\n    ws.deregisterEvtHandlers('getmempooltrimmedResp')\n    ws.deregisterEvtHandlers('mempool')\n    globalEventBus.off('BLOCK_RECEIVED', this.handleVisualBlocksUpdate)\n    window.removeEventListener('resize', this.refreshBlocksDisplay)\n  }\n\n  _handleVisualBlocksUpdate (newBlock) {\n    const block = newBlock.block\n    // show only regular tx in block.Transactions, exclude coinbase (reward) transactions\n    const transactions = block.Tx.filter(tx => !tx.Coinbase)\n    // trim unwanted data in this block\n    const trimmedBlockInfo = {\n      Time: block.time,\n      Height: block.height,\n      Total: block.TotalSent,\n      MiningFee: block.MiningFee,\n      Subsidy: block.Subsidy,\n      Votes: block.Votes,\n      Tickets: block.Tickets,\n      Revocations: block.Revs,\n      Transactions: transactions\n    }\n\n    const box = this.boxTarget\n    box.insertBefore(newBlockHtmlElement(trimmedBlockInfo), box.firstChild.nextSibling)\n    // hide last visible block as 1 more block is now visible\n    const vis = this.visibleBlocks()\n    vis[vis.length - 1].classList.remove('visible')\n    // remove last block from dom to maintain max of 30 blocks (hidden or visible) in dom at any time\n    box.removeChild(box.lastChild)\n    this.setupTooltips()\n  }\n\n  handleMempoolUpdate (evt) {\n    const mempool = JSON.parse(evt)\n    mempool.Time = Math.round((new Date()).getTime() / 1000)\n    this.boxTarget.replaceChild(makeMempoolBlock(mempool), this.boxTarget.firstChild)\n    this.setupTooltips()\n  }\n\n  _refreshBlocksDisplay () {\n    const visibleBlockElements = this.visibleBlocks()\n    const currentlyDisplayedBlockCount = visibleBlockElements.length\n    const maxBlockElements = this.calculateMaximumNumberOfBlocksToDisplay(visibleBlockElements[0])\n    if (currentlyDisplayedBlockCount > maxBlockElements) {\n      // remove the last x blocks\n      for (let i = currentlyDisplayedBlockCount; i >= maxBlockElements; i--) {\n        visibleBlockElements[i - 1].classList.remove('visible')\n      }\n    } else {\n      const allBlockElements = this.blockTargets\n      // add more blocks to fill display\n      for (let i = currentlyDisplayedBlockCount; i < maxBlockElements; i++) {\n        allBlockElements[i].classList.add('visible')\n      }\n    }\n    this.setupTooltips()\n  }\n\n  calculateMaximumNumberOfBlocksToDisplay (blockElement) {\n    const blocksSection = this.rootTarget.getBoundingClientRect()\n    const margin = 20\n    const blocksSectionFirstChildHeight = this.titleTarget.offsetHeight + margin\n    const blocksSectionLastChildHeight = this.showmoreTarget.offsetHeight + margin\n\n    // make blocks section fill available window height\n    const extraSpace = window.innerHeight - document.getElementById('mainContainer').offsetHeight\n    const blocksSectionHeight = blocksSection.height + extraSpace\n\n    const totalAvailableWidth = blocksSection.width\n    const totalAvailableHeight = blocksSectionHeight - blocksSectionFirstChildHeight - blocksSectionLastChildHeight\n\n    const rect = blockElement.getBoundingClientRect()\n    const blockWidth = rect.width\n    const blockHeight = rect.height + margin // for spacing between rows\n\n    const maxBlocksPerRow = Math.floor(totalAvailableWidth / blockWidth)\n    let maxBlockRows = Math.floor(totalAvailableHeight / blockHeight)\n    let maxBlockElements = maxBlocksPerRow * maxBlockRows\n\n    const totalBlocksDisplayable = this.boxTarget.childElementCount\n    while (maxBlockElements > totalBlocksDisplayable) {\n      maxBlockRows--\n      maxBlockElements = maxBlocksPerRow * maxBlockRows\n    }\n\n    return maxBlockElements\n  }\n\n  setupTooltips () {\n    // check for empty tx rows and set custom tooltip\n    this.txsTargets.forEach((div) => {\n      if (div.childeElementCount === 0) {\n        div.title = 'No regular transaction in block'\n      }\n    })\n\n    this.tooltipTargets.forEach((tooltipElement) => {\n      try {\n        // parse the content\n        const data = JSON.parse(tooltipElement.title)\n        let newContent\n        if (data.object === 'Vote') {\n          newContent = `<b>${data.object} (${data.voteValid ? 'Yes' : 'No'})</b>`\n        } else {\n          newContent = `<b>${data.object}</b><br>${data.total} DCR`\n        }\n\n        if (data.vin && data.vout) {\n          newContent += `<br>${data.vin} Inputs, ${data.vout} Outputs`\n        }\n\n        tooltipElement.title = newContent\n      } catch (error) {}\n    })\n\n    import(/* webpackChunkName: \"tippy\" */ '../vendor/tippy.all').then(module => {\n      const tippy = module.default\n      tippy('.block-rows [title]', {\n        allowTitleHTML: true,\n        animation: 'shift-away',\n        arrow: true,\n        createPopperInstanceOnInit: true,\n        dynamicTitle: true,\n        performance: true,\n        placement: 'top',\n        size: 'small',\n        sticky: true,\n        theme: 'light'\n      })\n    })\n  }\n\n  visibleBlocks () {\n    return this.boxTarget.querySelectorAll('.visible')\n  }\n}\n","// this place to put animation helper functions\n\nexport function animationFrame () {\n  let _resolve = null\n  const promise = new Promise(function (resolve) {\n    _resolve = resolve\n  })\n  window.requestAnimationFrame(_resolve)\n  return promise\n}\n\nexport async function fadeIn (element, duration) {\n  element.style.transition = 'none'\n  element.style.opacity = 0\n  await animationFrame()\n  element.style.transition = `opacity ${duration || 0.42}s ease-in-out`\n  element.style.opacity = 1\n}\n","// Check for the txid in the given block\nexport default function txInBlock (txid, block) {\n  const txTypes = [block.Tx, block.Tickets, block.Revs, block.Votes]\n  for (const txIdx in txTypes) {\n    const txs = txTypes[txIdx]\n    for (const idx in txs) {\n      if (txs[idx].TxID === txid) {\n        return true\n      }\n    }\n  }\n  return false\n}\n","// shared functions for related to charts\n\nexport function barChartPlotter (e) {\n  plotChart(e, findWidth(findMinSep(e.points, Infinity)))\n}\n\nfunction findWidth (sep) {\n  return Math.floor(2.0 / 3 * sep * 10000) / 10000 // to 4 decimal places\n}\n\nfunction findMinSep (points, minSep) {\n  for (let i = 1; i < points.length; i++) {\n    const sep = points[i].canvasx - points[i - 1].canvasx\n    if (sep < minSep) minSep = sep\n  }\n  return minSep\n}\n\nfunction findLineWidth (barWidth) {\n  const width = 0.2 + (0.08 * barWidth)\n  return width > 1 ? 1 : width\n}\n\nexport function sizedBarPlotter (binSize) {\n  return (e) => {\n    const canvasBin = e.dygraph.toDomXCoord(binSize) - e.dygraph.toDomXCoord(0)\n    plotChart(e, findWidth(canvasBin))\n  }\n}\n\nfunction plotChart (e, barWidth) {\n  const ctx = e.drawingContext\n  const yBottom = e.dygraph.toDomYCoord(0)\n\n  ctx.fillStyle = e.color\n  ctx.lineWidth = findLineWidth(barWidth)\n\n  e.points.map((p) => {\n    if (p.yval === 0) return\n    const x = p.canvasx - barWidth / 2\n    const height = yBottom - p.canvasy\n    ctx.fillRect(x, p.canvasy, barWidth, height)\n    ctx.strokeRect(x, p.canvasy, barWidth, height)\n  })\n}\n\nexport function multiColumnBarPlotter (e) {\n  if (e.seriesIndex !== 0) return\n\n  const g = e.dygraph\n  const ctx = e.drawingContext\n  const sets = e.allSeriesPoints\n  const yBottom = e.dygraph.toDomYCoord(0)\n\n  let minSep = Infinity\n  sets.map((bar) => { minSep = findMinSep(bar, minSep) })\n  const barWidth = findWidth(minSep)\n  const strokeColors = g.getColors()\n  const fillColors = g.getOption('fillColors')\n  ctx.lineWidth = findLineWidth(barWidth)\n\n  sets.map((bar, i) => {\n    ctx.fillStyle = fillColors[i]\n    ctx.strokeStyle = strokeColors[i]\n\n    bar.map((p) => {\n      if (p.yval === 0) return\n      const xLeft = p.canvasx - (barWidth / 2) * (1 - i / (sets.length - 1))\n      const height = yBottom - p.canvasy\n      const width = barWidth / sets.length\n\n      ctx.fillRect(xLeft, p.canvasy, width, height)\n      ctx.strokeRect(xLeft, p.canvasy, width, height)\n    })\n  })\n}\n\nexport function padPoints (pts, binSize, sustain) {\n  let pad = binSize / 2.0\n  const lastPt = pts[pts.length - 1]\n  const firstPt = pts[0]\n  const frontStamp = firstPt[0].getTime()\n  const backStamp = lastPt[0].getTime()\n  const duration = backStamp - frontStamp\n  if (duration < binSize) {\n    pad = Math.max(pad, (binSize - duration) / 2.0)\n  }\n  const front = [new Date(frontStamp - pad)]\n  const back = [new Date(backStamp + pad)]\n  for (let i = 1; i < firstPt.length; i++) {\n    front.push(0)\n    back.push(sustain ? lastPt[i] : 0)\n  }\n  pts.unshift(front)\n  pts.push(back)\n}\n\nexport function isEqual (a, b) {\n  if (!Array.isArray(a) || !Array.isArray(b)) return false\n  let i = a.length\n  if (i !== b.length) return false\n  while (i--) {\n    if (a[i] !== b[i]) return false\n  }\n  return true\n}\n\nfunction minViewValueRange (chartIndex) {\n  if (chartIndex === 0) {\n    return 70\n  } else if (chartIndex === 1) {\n    return 8400\n  }\n  return 0\n}\n\nfunction attachZoomHandlers (gs, prevCallbacks) {\n  let block = false\n  gs.map((g) => {\n    g.updateOptions({\n      drawCallback: function (me, initial) {\n        if (block || initial) return\n        block = true\n        const opts = { dateWindow: me.xAxisRange() }\n\n        gs.map((gCopy, j) => {\n          if (gCopy === me) {\n            if (prevCallbacks[j] && prevCallbacks[j].drawCallback) {\n              prevCallbacks[j].drawCallback.apply(this, arguments)\n            }\n            return\n          }\n\n          if (isEqual(opts.dateWindow, gCopy.getOption('dateWindow'))) {\n            return\n          }\n\n          const yMinRange = minViewValueRange(j)\n          if (yMinRange > 0) {\n            const yRange = gCopy.yAxisRange()\n            if (yRange && yMinRange > yRange[1]) {\n              opts.valueRange = [yRange[0], yMinRange]\n            } else if (yRange && yMinRange < yRange[1]) {\n              opts.valueRange = yRange\n            }\n          }\n\n          gCopy.updateOptions(opts)\n\n          delete opts.valueRange\n        })\n        block = false\n      }\n    }, true)\n  })\n}\n\nfunction attachSelectionHandlers (gs, prevCallbacks) {\n  let block = false\n  gs.map((g) => {\n    g.updateOptions({\n      highlightCallback: function (event, x, points, row, seriesName) {\n        if (block) return\n        block = true\n        const me = this\n        gs.map((gCopy, i) => {\n          if (me === gCopy) {\n            if (prevCallbacks[i] && prevCallbacks[i].highlightCallback) {\n              prevCallbacks[i].highlightCallback.apply(this, arguments)\n            }\n            return\n          }\n          const idx = gCopy.getRowForX(x)\n          if (idx !== null) {\n            gCopy.setSelection(idx, seriesName)\n          }\n        })\n        block = false\n      },\n      unhighlightCallback: function (event) {\n        if (block) return\n        block = true\n        const me = this\n        gs.map((gCopy, i) => {\n          if (me === gCopy) {\n            if (prevCallbacks[i] && prevCallbacks[i].unhighlightCallback) {\n              prevCallbacks[i].unhighlightCallback.apply(this, arguments)\n            }\n            return\n          }\n          gCopy.clearSelection()\n        })\n        block = false\n      }\n    }, true)\n  })\n}\n\nexport function synchronize (dygraphs, syncOptions) {\n  const prevCallbacks = []\n\n  dygraphs.map((g, index) => {\n    g.ready(() => {\n      const callBackTypes = ['drawCallback', 'highlightCallback', 'unhighlightCallback']\n      for (let j = 0; j < dygraphs.length; j++) {\n        if (!prevCallbacks[j]) {\n          prevCallbacks[j] = {}\n        }\n        for (let k = callBackTypes.length - 1; k >= 0; k--) {\n          prevCallbacks[j][callBackTypes[k]] = dygraphs[j].getFunctionOption(callBackTypes[k])\n        }\n      }\n\n      if (syncOptions.zoom) {\n        attachZoomHandlers(dygraphs, prevCallbacks)\n      }\n\n      if (syncOptions.selection) {\n        attachSelectionHandlers(dygraphs, prevCallbacks)\n      }\n\n      const yMinRange = minViewValueRange(index)\n      if (yMinRange === 0) {\n        return\n      }\n      const yRange = g.yAxisRange()\n      if (yRange && yMinRange > yRange[1]) {\n        g.updateOptions({ valueRange: [yRange[0], yMinRange] })\n      }\n    })\n  })\n}\n","\nexport async function requestJSON (url) {\n  const conf = {\n    headers: {\n      accept: 'application/json'\n    },\n    method: 'GET'\n  }\n  return await window.fetch(url, conf)\n    .then(async resp => {\n      if (resp.ok) {\n        return await resp.json()\n      }\n      const msg = await resp.text()\n      console.log(resp.statusText, msg)\n      throw new Error(msg)\n    })\n}\n","// For all your value formatting needs...\n\nfunction logn (n, b) {\n  return Math.log(n) / Math.log(b)\n}\nfunction round (value, precision) {\n  const multiplier = Math.pow(10, precision || 0)\n  return Math.round(value * multiplier) / multiplier\n}\n\nfunction hashParts (hash) {\n  const clipLen = 6\n  const hashLen = hash.length - clipLen\n  if (hashLen < 1) {\n    return ['', hash]\n  }\n  return [hash.substring(0, hashLen), hash.substring(hashLen)]\n}\n\nconst humanize = {\n  isEmpty: function (val) {\n    return !val || val == null || val === ''\n  },\n  commaWithDecimal: function (val, decimal) {\n    if (isNaN(val) || val === 0) return '0'\n    if (isNaN(decimal)) decimal = 2\n    else if (decimal > 8) decimal = 8\n    return val.toLocaleString('en-US', { minimumFractionDigits: decimal, maximumFractionDigits: decimal })\n  },\n  fmtPercentage: function (val) {\n    let sign = '+'\n    let cssClass = 'text-green'\n    if (val < 1) {\n      sign = ''\n      cssClass = 'text-danger'\n    }\n    sign = sign + val.toFixed(2)\n    return `<span class=\"${cssClass}\">${sign} % </span>`\n  },\n  decimalParts: function (v, useCommas, precision, lgDecimals) {\n    if (isNaN(precision) || precision > 8) {\n      precision = 8\n    }\n    const formattedVal = parseFloat(v).toFixed(precision)\n    const chunks = formattedVal.split('.')\n    const int = useCommas ? parseInt(chunks[0]).toLocaleString() : chunks[0]\n    const decimal = (chunks[1] || '')\n    let i = decimal.length\n    let numTrailingZeros = 0\n    while (i--) {\n      if (decimal[i] === '0') {\n        numTrailingZeros++\n      } else {\n        break\n      }\n    }\n    const decimalVals = decimal.slice(0, decimal.length - numTrailingZeros)\n    const trailingZeros = (numTrailingZeros === 0) ? '' : decimal.slice(-(numTrailingZeros))\n\n    let htmlString = '<div class=\"decimal-parts d-inline-block\">'\n\n    if (!isNaN(lgDecimals) && lgDecimals > 0) {\n      htmlString += `<span class=\"int\">${int}.${decimalVals.substring(0, lgDecimals)}</span>` +\n        `<span class=\"decimal\">${decimalVals.substring(lgDecimals, decimalVals.length)}</span>` +\n        `<span class=\"decimal trailing-zeroes\">${trailingZeros}</span>`\n    } else if (precision !== 0) {\n      htmlString += `<span class=\"int\">${int}</span>` +\n        '<span class=\"decimal dot\">.</span>' +\n        `<span class=\"decimal\">${decimalVals}</span>` +\n        `<span class=\"decimal trailing-zeroes\">${trailingZeros}</span>`\n    } else {\n      htmlString += `<span class=\"int\">${int}</span>`\n    }\n\n    htmlString += '</div>'\n\n    return htmlString\n  },\n  threeSigFigs: function (v) {\n    const sign = v >= 0 ? '' : '-'\n    v = Math.abs(v)\n    if (v === 0) return '0'\n    if (v >= 1e11) return `${sign}${Math.round(v / 1e9)}B`\n    if (v >= 1e10) return `${sign}${(v / 1e9).toFixed(1)}B`\n    if (v >= 1e9) return `${sign}${(v / 1e9).toFixed(2)}B`\n    if (v >= 1e8) return `${sign}${Math.round(v / 1e6)}M`\n    if (v >= 1e7) return `${sign}${(v / 1e6).toFixed(1)}M`\n    if (v >= 1e6) return `${sign}${(v / 1e6).toFixed(2)}M`\n    if (v >= 1e5) return `${sign}${Math.round(v / 1e3)}k`\n    if (v >= 1e4) return `${sign}${(v / 1e3).toFixed(1)}k`\n    if (v >= 1e3) return `${sign}${(v / 1e3).toFixed(2)}k`\n    if (v >= 1e2) return `${sign}${Math.round(v)}`\n    if (v >= 10) return `${sign}${v.toFixed(1)}`\n    if (v >= 1) return `${sign}${v.toFixed(2)}`\n    if (v >= 1e-1) return `${sign}${v.toFixed(3)}`\n    if (v >= 1e-2) return `${sign}${v.toFixed(4)}`\n    if (v >= 1e-3) return `${sign}${v.toFixed(5)}`\n    if (v >= 1e-4) return `${sign}${v.toFixed(6)}`\n    if (v >= 1e-5) return `${sign}${v.toFixed(7)}`\n    return `${sign}${v.toFixed(8)}`\n  },\n  twoDecimals: function (v) {\n    if (v === 0.0) return '0.00'\n    if (Math.abs(v) < 1.0) return parseFloat(v).toPrecision(3)\n    return parseFloat(v).toFixed(2)\n  },\n  subsidyToString: function (x, y = 1) {\n    return (x / 100000000 / y) + ' DCR'\n  },\n  toAmountFloatDisplay: function (x, y, tail) {\n    const floatAmount = x / 100000000\n    return (y < 0 ? floatAmount : floatAmount.toFixed(y)) + ' ' + tail\n  },\n  toAmountFloat: function (x) {\n    return parseFloat(x / 100000000)\n  },\n  bytes: function (s) { // from go-humanize\n    const sizes = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB']\n    if (s < 10) {\n      return s + 'B'\n    }\n    const e = Math.floor(logn(s, 1000))\n    const suffix = sizes[e]\n    const val = Math.floor(s / Math.pow(1000, e) * 10 + 0.5) / 10\n    const precision = (val < 10) ? 1 : 0\n    return round(val, precision) + ' ' + suffix\n  },\n  timeSince: function (unixTime, keepOnly) {\n    const seconds = Math.floor(((new Date().getTime() / 1000) - unixTime))\n    let interval = Math.floor(seconds / 31536000)\n    if (interval >= 1) {\n      const extra = Math.floor((seconds - interval * 31536000) / 2628000)\n      let result = interval + 'y'\n      if (extra > 0 && keepOnly !== 'years') {\n        result = result + ' ' + extra + 'mo'\n      }\n      return result\n    }\n    interval = Math.floor(seconds / 2628000)\n    if (interval >= 1) {\n      const extra = Math.floor((seconds - interval * 2628000) / 86400)\n      let result = interval + 'mo'\n      if (extra > 0 && keepOnly !== 'months') {\n        result = result + ' ' + extra + 'd'\n      }\n      return result\n    }\n    interval = Math.floor(seconds / 86400)\n    if (interval >= 1) {\n      const extra = Math.floor((seconds - interval * 86400) / 3600)\n      let result = interval + 'd'\n      if (extra > 0 && keepOnly !== 'days') {\n        result = result + ' ' + extra + 'h'\n      }\n      return result\n    }\n    const pad = function (x) {\n      return x.toString().padStart(2, '\\u00a0')\n    }\n    interval = Math.floor(seconds / 3600)\n    if (interval >= 1) {\n      const extra = Math.floor((seconds - interval * 3600) / 60)\n      let result = interval + 'h'\n      if (extra > 0) {\n        result = result + ' ' + pad(extra) + 'm'\n      }\n      return result\n    }\n    interval = Math.floor(seconds / 60)\n    if (interval >= 1) {\n      const extra = seconds - interval * 60\n      let result = pad(interval) + 'm'\n      if (extra > 0) {\n        result = result + ' ' + pad(extra) + 's'\n      }\n      return result\n    }\n    return pad(Math.floor(seconds)) + 's'\n  },\n  // from time (sec) to duration miliseconds with now\n  timeToDuration: function (time) {\n    const timestampMs = time * 1000\n    const now = Date.now()\n    return now - timestampMs\n  },\n  timeDuration: function (duration, endSymbol) {\n    const symbolStrength = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second']\n    let strength = endSymbol ? symbolStrength.indexOf(endSymbol) : 7\n    strength = strength < 0 ? 7 : strength\n    let seconds = parseInt(duration / 1000)\n    let result = ''\n    // calculate years\n    if (seconds > 31536000 && strength >= 0) {\n      const years = Math.floor(seconds / 31536000)\n      seconds %= 31536000\n      result += years + 'y '\n    }\n    // calculate months (est)\n    if (seconds > 2628000 && strength >= 1) {\n      const months = Math.floor(seconds / 2628000)\n      seconds %= 2628000\n      result += months + 'mo '\n    }\n    // calculate weeks\n    if (seconds > 604799 && strength >= 2) {\n      const weeks = Math.floor(seconds / 604799)\n      seconds %= 604799\n      result += weeks + 'w '\n    }\n    // calculate days\n    if (seconds > 86399 && strength >= 3) {\n      const days = Math.floor(seconds / 86399)\n      seconds %= 86399\n      result += days + 'd '\n    }\n    // calculate hours\n    if (seconds > 3599 && strength >= 4) {\n      const hours = Math.floor(seconds / 3599)\n      seconds %= 3599\n      result += hours + 'h '\n    }\n    // calculate minutes\n    if (seconds > 59 && strength >= 5) {\n      const minutes = Math.floor(seconds / 59)\n      seconds %= 59\n      result += minutes + 'm '\n    }\n    if (seconds > 0 && strength >= 6) {\n      result += seconds + 's'\n    }\n    return result.trim()\n  },\n  date: function (stamp, withTimezone, hideHisForMidnight) {\n    const d = new Date(stamp)\n    let dateStr = `${String(d.getUTCFullYear())}-${String(d.getUTCMonth() + 1).padStart(2, '0')}-${String(d.getUTCDate()).padStart(2, '0')}`\n    if (!hideHisForMidnight) {\n      dateStr += ` ${String(d.getUTCHours()).padStart(2, '0')}:${String(d.getUTCMinutes()).padStart(2, '0')}:${String(d.getUTCSeconds()).padStart(2, '0')}`\n    }\n    if (withTimezone) dateStr += ' (UTC)'\n    return dateStr\n  },\n  hashElide: function (hash, link, asNode) {\n    const div = document.createElement(link ? 'a' : 'div')\n    if (link) div.href = link\n    div.dataset.keynavePriority = 1\n    div.classList.add('elidedhash')\n    div.classList.add('mono')\n    const [head, tail] = hashParts(hash)\n    div.dataset.head = head\n    div.dataset.tail = tail\n    div.textContent = hash\n    if (asNode) {\n      return div\n    }\n    return div.outerHTML\n  },\n  capitalize: function (s) {\n    if (typeof s !== 'string') return ''\n    return s.charAt(0).toUpperCase() + s.slice(1)\n  },\n  formatToLocalString: function (number, minFracDigit, maxFracDigit) {\n    return number.toLocaleString('en-US', {\n      minimumFractionDigits: minFracDigit,\n      maximumFractionDigits: maxFracDigit\n    })\n  }\n}\n\nexport default humanize\n","// Utilities for keeping a shallow local copy of the mempool.\n\n// txhelpers.TxType*\nconst mpKeys = {\n  Regular: 'regular',\n  Vote: 'vote',\n  Ticket: 'ticket',\n  Revocation: 'rev',\n  'Treasury Spend': 'tspend',\n  'Treasury Add': 'tadd'\n}\n\n// explorer/types.MempoolInfo\nfunction txLists (mempool) {\n  return [mempool.tx, mempool.tickets, mempool.votes, mempool.revs, mempool.tspends, mempool.tadds]\n}\n\nfunction txList (mempool) {\n  const l = []\n  txLists(mempool).forEach(txs => {\n    if (!txs) return\n    txs.forEach(tx => {\n      l.push(tx)\n    })\n  })\n  return l\n}\n\nfunction makeTx (txid, txType, total, voteInfo, size, fees) {\n  return {\n    txid: txid,\n    type: txType,\n    total: total,\n    voteInfo: voteInfo, // null for all but votes\n    size: size,\n    fees: fees\n  }\n}\n\nfunction ticketSpent (vote) {\n  const vi = vote.voteInfo || vote.vote_info\n  return vi.ticket_spent\n}\n\nfunction reduceTx (tx) {\n  return makeTx(tx.txid, tx.Type, tx.total, tx.vote_info, tx.size, tx.fees)\n}\n\nexport default class Mempool {\n  constructor (d, tallyTargets) {\n    this.mempool = []\n    // Create dummy transactions. Since we're only looking at totals, this is\n    // okay for now and prevents an initial websocket call for the entire mempool.\n    const avgSize = parseFloat(d.size) / parseInt(d.count)\n    this.initType('Regular', parseFloat(d.regTotal), parseInt(d.regCount), avgSize)\n    this.initType('Ticket', parseFloat(d.ticketTotal), parseInt(d.ticketCount), avgSize)\n    this.initType('Revocation', parseFloat(d.revTotal), parseInt(d.revCount), avgSize)\n    this.initVotes(tallyTargets, parseFloat(d.voteTotal), parseInt(d.voteCount), avgSize)\n  }\n\n  initType (txType, total, count, avgSize) {\n    const fauxVal = count === 0 ? 0 : total / count\n    for (let i = 0; i < count; i++) {\n      this.mempool.push(makeTx('', txType, fauxVal, null, avgSize, 0))\n    }\n  }\n\n  initVotes (tallyTargets, total, count, avgSize) {\n    const fauxVal = count === 0 ? 0 : total / count\n    tallyTargets.forEach((span) => {\n      const affirmed = parseInt(span.dataset.affirmed)\n      for (let i = 0; i < parseInt(span.dataset.count); i++) {\n        this.mempool.push(makeTx('', 'Vote', fauxVal, {\n          block_validation: {\n            hash: span.dataset.hash,\n            validity: i < affirmed\n          },\n          ticket_spent: i\n        }, avgSize, 0))\n      }\n    })\n  }\n\n  // Replace the entire contents of mempool. m is a JSON representation of the\n  // explorertypes.MempoolInfo\n  replace (m) {\n    this.mempool = []\n    txList(m).forEach(tx => {\n      if (this.isQuestionableVote(tx)) return\n      this.mempool.push(reduceTx(tx))\n    })\n  }\n\n  // Merges the given explorertypes.MempoolInfo into the current mempool.\n  mergeMempool (m) {\n    this.mergeTxs(txList(m))\n  }\n\n  // Merges the []explorertypes.MempoolTx into the current mempool.\n  mergeTxs (txs) {\n    txs.forEach(tx => {\n      if (this.wantsTx(tx)) {\n        this.mempool.push(reduceTx(tx))\n      }\n    })\n  }\n\n  // Checks whether the transaction is new and likely to be included in a block.\n  wantsTx (newTx) {\n    if (this.isQuestionableVote(newTx)) return false\n    for (let i = 0; i < this.mempool.length; i++) {\n      if (this.mempool[i].txid === newTx.txid) return false\n    }\n    return true\n  }\n\n  // Some votes are for older blocks, or duplicates but with different agendas.\n  isQuestionableVote (tx) {\n    if (tx.Type !== 'Vote') return false\n    if (!tx.vote_info.last_block) return true\n    for (let i = 0; i < this.mempool.length; i++) {\n      const v = this.mempool[i]\n      if (v.type === 'Vote' && ticketSpent(v) === ticketSpent(tx)) return true\n    }\n  }\n\n  blockVoteTally (hash) {\n    return this.mempool.reduce((votes, tx) => {\n      if (tx.type !== 'Vote') return votes\n      const validation = tx.voteInfo.block_validation\n      if (validation.hash !== hash) return votes\n      if (validation.validity) {\n        votes.affirm++\n      } else {\n        votes.reject++\n      }\n      return votes\n    }, {\n      affirm: 0,\n      reject: 0\n    })\n  }\n\n  counts () {\n    return this.mempool.reduce((d, tx) => {\n      d.total += 1\n      if (tx.type === 'Vote') {\n        const validation = tx.voteInfo.block_validation\n        if (!d.vote[validation.hash]) {\n          d.vote[validation.hash] = this.blockVoteTally(validation.hash)\n        }\n      } else {\n        d[mpKeys[tx.type]] += 1\n      }\n      return d\n    }, { regular: 0, ticket: 0, vote: {}, rev: 0, total: 0 })\n  }\n\n  totals () {\n    return this.mempool.reduce((d, tx) => {\n      d.total += tx.total\n      d[mpKeys[tx.type]] += tx.total\n      d.size += tx.size\n      return d\n    }, { regular: 0, ticket: 0, vote: 0, rev: 0, total: 0, size: 0 })\n  }\n\n  fees () {\n    return this.mempool.reduce((d, tx) => {\n      d.fees += tx.fees\n      return d\n    }, { fees: 0 })\n  }\n\n  voteSpans (tallys) {\n    const spans = []\n    let joiner\n    for (const hash in tallys) {\n      if (joiner) spans.push(joiner)\n      const count = tallys[hash]\n      const span = document.createElement('span')\n      span.dataset.tooltip = `For block ${hash}`\n      span.className = 'position-relative d-inline-block'\n      span.textContent = count.affirm + count.reject\n      spans.push(span)\n      joiner = document.createElement('span')\n      joiner.textContent = ' + '\n    }\n    return spans\n  }\n}\n","const PIPI = 2 * Math.PI\n\nfunction makePt (x, y) { return { x, y } }\n\nfunction addOffset (pt, offset) {\n  return {\n    x: pt.x + offset.x,\n    y: pt.y + offset.y\n  }\n}\n\nfunction sleep (ms) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n\n// Meter provides basic drawing and math utilities for a meter object, which\n// has a circular strip shape with a gap. You can draw segments of the strip\n// using segment. Child classes should implement a draw method. The parent\n// parameter should be a block element with class .meter. CSS classes .large-gap\n// and .arch can also be applied for increasingly large gap angle, with .arch\n// being a semi-circle. Any contents of parent will be replaced with the Meter.\n// Apply class .lil for a smaller meter.\nclass Meter {\n  constructor (parent, opts) {\n    opts = opts || {}\n    this.options = opts\n    this.radius = opts.radius || 0.4\n    this.parent = parent\n    this.canvas = document.createElement('canvas')\n    opts.padding = opts.padding || 5\n    // Add a little padding around the drawing area by offsetting all drawing.\n    // This allows element like text to overflow the drawing area slightly\n    // without being cut off.\n    this.offset = makePt(opts.padding, opts.padding)\n    // Meter's API provides an assumed canvas size of 100 x 100\n    this.dimension = 100\n    this.canvas.width = this.dimension + 2 * opts.padding\n    this.canvas.height = this.dimension + 2 * opts.padding\n\n    // Keep track of any properties being animated\n    this.animationEnd = {}\n    this.animationRunning = {}\n    this.animationTarget = {}\n\n    this.ctx = this.canvas.getContext('2d')\n    this.ctx.textAlign = 'center'\n    this.ctx.textBaseline = 'middle'\n    while (parent.firstChild) parent.removeChild(parent.firstChild)\n    this.parent.appendChild(this.canvas)\n    this.middle = {\n      x: 50,\n      y: 50\n    }\n    this.offsetMiddle = addOffset(this.middle, this.offset)\n    this.startAngle = Math.PI / 2\n    let meterSpace = 0.5 // radians\n    if (parent.classList.contains('large-gap')) meterSpace = Math.PI / 1.5\n    if (parent.classList.contains('arch')) meterSpace = Math.PI\n    this.meterSpecs = {\n      meterSpace: meterSpace,\n      startTheta: this.startAngle + meterSpace / 2,\n      endTheta: this.startAngle + PIPI - meterSpace / 2\n    }\n    this.meterSpecs.range = this.meterSpecs.endTheta - this.meterSpecs.startTheta\n    this.meterSpecs.start = this.normedPolarToCartesian(this.radius, 0)\n    this.meterSpecs.end = this.normedPolarToCartesian(this.radius, 1)\n\n    // animation options\n    opts.fps = opts.fps || 60\n    opts.animationLength = opts.animationLength || 400\n\n    // A couple unicode characters\n    this.checkmark = String.fromCharCode(10004)\n    this.failmark = String.fromCharCode(10008)\n  }\n\n  roundCap () {\n    this.ctx.lineCap = 'round'\n  }\n\n  buttCap () {\n    this.ctx.lineCap = 'butt'\n  }\n\n  denorm (x) {\n    return x * this.dimension\n  }\n\n  norm (x) {\n    return x / this.dimension\n  }\n\n  normedPolarToCartesian (normed, normedTheta) {\n    // maps radius: [0,1] to [0,width], and angle: [0,1] to [0,2PI]\n    const r = this.denorm(normed)\n    const theta = this.denormTheta(normedTheta)\n    return {\n      y: this.middle.x - r * Math.cos(theta + this.startAngle),\n      x: this.middle.y + r * Math.sin(theta + this.startAngle)\n    }\n  }\n\n  denormTheta (theta) {\n    // [0, 1] to [this.meterSpecs.startTheta, this.meterSpecs.endTheta]\n    return this.meterSpecs.startTheta + theta * this.meterSpecs.range\n  }\n\n  denormThetaRange (start, end) {\n    return {\n      start: this.denormTheta(start),\n      end: this.denormTheta(end)\n    }\n  }\n\n  setDarkMode (nightMode) {\n    this.activeTheme = nightMode ? this.darkTheme : this.lightTheme\n    this.draw()\n  }\n\n  clear () {\n    this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)\n  }\n\n  dot (pt, color, radius) {\n    pt = addOffset(pt, this.offset)\n    const ctx = this.ctx\n    ctx.fillStyle = color\n    ctx.beginPath()\n    ctx.arc(pt.x, pt.y, radius, 0, PIPI)\n    ctx.fill()\n  }\n\n  segment (start, end, color) {\n    // A segment of the strip, where 0 <= start < end <= 1.\n    const ctx = this.ctx\n    ctx.strokeStyle = color\n    const range = this.denormThetaRange(start, end)\n    ctx.beginPath()\n    ctx.arc(this.offsetMiddle.x, this.offsetMiddle.y, this.denorm(this.radius), range.start, range.end)\n    ctx.stroke()\n  }\n\n  line (start, end) {\n    // set ctx.lineWidth and ctx.strokeStyle before drawing.\n    start = addOffset(start, this.offset)\n    end = addOffset(end, this.offset)\n    const ctx = this.ctx\n    ctx.beginPath()\n    ctx.moveTo(start.x, start.y)\n    ctx.lineTo(end.x, end.y)\n    ctx.stroke()\n  }\n\n  write (text, pt, maxWidth) {\n    // Set ctx.textAlign and ctx.textBaseline for additional alignment options.\n    pt = addOffset(pt, this.offset)\n    this.ctx.fillText(text, pt.x, pt.y, maxWidth)\n  }\n\n  drawIndicator (value, color) {\n    const ctx = this.ctx\n    const opts = this.options\n    const theme = this.activeTheme\n    const halfLen = this.norm(opts.meterWidth) * 0.5\n    const start = this.normedPolarToCartesian(this.radius - halfLen, value)\n    const end = this.normedPolarToCartesian(this.radius + halfLen, value)\n    ctx.lineWidth = 1.5\n    ctx.strokeStyle = color\n    this.dot(start, color, opts.dotSize)\n    this.dot(end, color, opts.dotSize)\n    ctx.strokeStyle = theme.text\n    this.line(start, end)\n  }\n\n  async animate (key, target) {\n    // key is a string referencing any property of Meter.data.\n    const opts = this.options\n    this.animationEnd[key] = new Date().getTime() + opts.animationLength\n    this.animationTarget[key] = target\n    if (this.animationRunning[key]) return\n    this.animationRunning[key] = true\n    const frameDuration = 1000 / opts.fps\n    let now = new Date().getTime()\n    while (now < this.animationEnd[key]) {\n      const remainingTime = this.animationEnd[key] - now\n      const progress = this.data[key]\n      const toGo = this.animationTarget[key] - progress\n      const step = toGo * frameDuration / remainingTime\n      await sleep(frameDuration)\n      this.data[key] = progress + step\n      this.draw()\n      now = new Date().getTime()\n    }\n    this.data[key] = this.animationTarget[key]\n    this.draw()\n    this.animationRunning[key] = false\n  }\n}\n\n// VoteMeter has three regions: reject, revote, and approve. The parent element\n// should have property parent.dataset.threshold set to the pass threshold [0,1],\n// and parent.dataset.approval set to the current approval rate.\nexport class VoteMeter extends Meter {\n  constructor (parent, opts) {\n    super(parent, opts)\n    this.writeCentralPercent = wcp.bind(this)\n    this.buttCap()\n    opts = this.options\n    const d = parent.dataset\n    this.data = {\n      approval: parseFloat(d.approval)\n    }\n    this.approveThreshold = d.threshold\n    this.rejectThreshold = 1 - d.threshold\n\n    // Options\n    opts.centralFontSize = opts.centralFontSize || 20\n    opts.meterColor = opts.meterColor || '#2dd8a3'\n    opts.meterWidth = opts.meterWidth || 12\n    opts.approveColor = opts.approveColor || '#2dd8a3'\n    opts.revoteColor = opts.revoteColor || '#ffe4a7'\n    opts.rejectColor = opts.rejectColor || '#ed6d47'\n    opts.dotColor = opts.dotColor || '#888'\n    if (opts.showIndicator === undefined) opts.showIndicator = true\n    this.darkTheme = opts.darkTheme || {\n      text: 'white',\n      tray: '#999'\n    }\n    this.lightTheme = opts.lightTheme || {\n      text: 'black',\n      tray: '#555'\n    }\n    this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n\n    // Set up a starting animation\n    const progress = this.data.approval\n    this.data.approval = 0.5\n    this.draw()\n    super.animate('approval', progress)\n  }\n\n  draw () {\n    super.clear()\n    const ctx = this.ctx\n    const opts = this.options\n    let indicatorColor\n    const strokeColor = this.activeTheme.text\n    const trayColor = this.activeTheme.tray\n\n    // Draw the three-color tray with border\n    const borderWidth = opts.meterWidth * 1.3\n    ctx.lineWidth = borderWidth\n    this.segment(0, 1, trayColor)\n    ctx.lineWidth = opts.meterWidth\n    this.segment(0, this.rejectThreshold, opts.rejectColor)\n    this.segment(this.rejectThreshold, this.approveThreshold, opts.revoteColor)\n    this.segment(this.approveThreshold, 1, opts.approveColor)\n    ctx.strokeStyle = trayColor\n    ctx.lineWidth = 2\n    super.line(super.normedPolarToCartesian(this.radius + this.norm(borderWidth / 2), 0),\n      super.normedPolarToCartesian(this.radius - this.norm(borderWidth / 2), 0))\n    super.line(super.normedPolarToCartesian(this.radius + this.norm(borderWidth / 2), 1),\n      super.normedPolarToCartesian(this.radius - this.norm(borderWidth / 2), 1))\n\n    // Draw the indicator icon, which is a checkmark if the measure is currently\n    // passing.\n    if (opts.showIndicator) {\n      ctx.font = `${super.denorm(0.2)}px sans-serif`\n      if (this.data.approval < this.rejectThreshold) {\n        ctx.fillStyle = indicatorColor = opts.rejectColor\n        super.write(this.failmark, makePt(this.middle.x, super.denorm(0.35)))\n      } else if (this.data.approval >= this.approveThreshold) {\n        ctx.fillStyle = indicatorColor = opts.approveColor\n        super.write(this.checkmark, makePt(this.middle.x, super.denorm(0.35)))\n      } else {\n        indicatorColor = opts.revoteColor\n        super.dot(makePt(this.middle.x, super.denorm(0.35)), opts.dotColor, super.denorm(0.03))\n      }\n    }\n\n    // The mark\n    const halfLen = this.norm(opts.meterWidth * 0.5)\n    const start = super.normedPolarToCartesian(this.radius - halfLen * 1.2, this.data.approval)\n    const end = super.normedPolarToCartesian(this.radius + halfLen * 1.6, this.data.approval)\n    ctx.lineWidth = 2.5\n    ctx.strokeStyle = strokeColor\n    super.line(start, end)\n    super.dot(start, strokeColor, 3)\n    super.dot(end, strokeColor, 3.5)\n    super.dot(end, indicatorColor, 3)\n\n    this.writeCentralPercent(this.data.approval)\n  }\n}\n\n// ProgressMeter has a single threshold. The parent element should have property\n// parent.dataset.threshold set to the progress threshold [0,1], and\n// parent.dataset.progress set to the current value.\nexport class ProgressMeter extends Meter {\n  constructor (parent, opts) {\n    super(parent, opts)\n    this.writeCentralPercent = wcp.bind(this)\n    this.buttCap()\n    opts = this.options\n    this.threshold = parseFloat(parent.dataset.threshold)\n    this.data = {\n      progress: parseFloat(parent.dataset.progress)\n    }\n\n    opts.meterColor = opts.meterColor || '#2970ff'\n    opts.meterWidth = opts.meterWidth || 14\n    opts.centralFontSize = opts.centralFontSize || 20\n    opts.successColor = opts.successColor = '#2dd8a3'\n    opts.dotSize = opts.dotSize || 3\n    if (opts.showIndicator === undefined) opts.showIndicator = false\n    this.darkTheme = opts.darkTheme || {\n      tray: '#777',\n      text: 'white'\n    }\n    this.lightTheme = opts.lightTheme || {\n      tray: '#999',\n      text: 'black'\n    }\n    this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n\n    const progress = this.data.progress\n    this.data.progress = 0\n    this.draw()\n    this.animate('progress', progress)\n  }\n\n  draw () {\n    super.clear()\n    const ctx = this.ctx\n    const opts = this.options\n    const theme = this.activeTheme\n\n    ctx.lineWidth = opts.meterWidth * 0.95 // Prevents rough looking edge\n    const c = this.data.progress >= this.threshold ? opts.successColor : theme.tray\n    super.segment(0, 1, c)\n\n    super.drawIndicator(this.threshold, c)\n\n    ctx.lineWidth = opts.meterWidth\n    super.segment(0, this.data.progress, opts.meterColor)\n\n    super.drawIndicator(this.data.progress, theme.text)\n\n    if (opts.showIndicator && this.data.progress >= this.threshold) {\n      ctx.fillStyle = opts.successColor\n      super.write(this.checkmark, makePt(this.middle.x, super.denorm(0.35)))\n    }\n\n    this.writeCentralPercent(this.data.progress)\n  }\n}\n\n// wcp is the writeCentralPercent method used by VoteMeter and ProgressMeter.\nfunction wcp (v) {\n  const [ctx, opts] = [this.ctx, this.options]\n  ctx.save()\n  const [whole, fraction] = (v * 100).toFixed(2).split('.')\n  // Shift the text up a little if the indicator is showing. Also shift it\n  // to the left slightly for aesthetics.\n  const offset = opts.showIndicator ? this.denorm(0.02) : -this.denorm(0.02)\n  ctx.fillStyle = this.activeTheme.text\n  // special handling for 100%\n  if (whole === '100') {\n    const center = makePt(this.middle.x, this.middle.y + offset)\n    ctx.font = `${opts.centralFontSize}px 'source-sans-pro-semibold', sans-serif`\n    this.write('100%', center, this.denorm(0.5))\n  } else {\n    const center = makePt(this.middle.x - this.denorm(0.05), this.middle.y + offset)\n    ctx.textAlign = 'right'\n    ctx.font = `${opts.centralFontSize}px 'source-sans-pro-semibold', sans-serif`\n    this.write(whole, center, this.denorm(0.5))\n    ctx.font = `${opts.centralFontSize * 0.7}px 'source-sans-pro-semibold', sans-serif`\n    ctx.textAlign = 'left'\n    this.write(`.${fraction}%`, center, this.denorm(0.5))\n  }\n  ctx.restore()\n}\n\n// Mini meter is a semi-circular meter with a needle. The segment definitions\n// must be passed as an array of objects with the structure\n// [{end: float, color: string}, {end: float, color: string}, ...], where end is\n// the end of the segments range on the scale [0, 1]. The first range is assumed\n// to start at 0, and each subsequent segment will start at the previous\n// segment's end. The MiniMeter is designed to work with the .arch.lil CSS\n// classes, but not limited to that particular class.\nexport class MiniMeter extends Meter {\n  constructor (parent, opts) {\n    super(parent, opts)\n    this.buttCap()\n    opts = this.options\n    this.radius = opts.radius || 0.475\n    this.darkTheme = opts.darkTheme || { text: 'white' }\n    this.lightTheme = opts.lightTheme || { text: '#333333' }\n    this.activeTheme = opts.darkMode ? this.darkTheme : this.lightTheme\n    opts.meterWidth = opts.meterWidth || 18\n    this.value = parseFloat(parent.dataset.value)\n    this.draw()\n  }\n\n  draw () {\n    super.clear()\n    const ctx = this.ctx\n    const opts = this.options\n    ctx.lineWidth = opts.meterWidth\n    const textColor = this.activeTheme.text\n\n    // Draw the segments.\n    let start = 0\n    opts.segments.forEach(segment => {\n      super.segment(start, segment.end, segment.color)\n      start = segment.end\n    })\n\n    // Draw the needle\n    const tipLen = this.norm(opts.meterWidth) * 0.75\n    const center = super.normedPolarToCartesian(0, 0)\n    const end = super.normedPolarToCartesian(this.radius + tipLen, this.value)\n    super.dot(center, textColor, 7)\n    ctx.strokeStyle = textColor\n    ctx.lineWidth = 5\n    super.line(center, end)\n  }\n}\n","// helpers for dynamic module imports\n\nexport async function getDefault (dynamicImportPromise) {\n  const module = await dynamicImportPromise\n  return new Promise(resolve => {\n    resolve(module.default)\n  })\n}\n","/* global Turbolinks */\nimport Url from 'url-parse'\n\nexport default class TurboQuery {\n  constructor (turbolinks) {\n    const tq = this\n    tq.replaceTimer = 0\n    tq.appendTimer = 0\n    tq.turbolinks = turbolinks || Turbolinks || false\n    if (!tq.turbolinks || !tq.turbolinks.supported) {\n      console.error('No passed or global Turbolinks instance detected. TurboQuery requires Turbolinks.')\n      return\n    }\n    // These are timer callbacks. Bind them to the TurboQuery instance.\n    tq.replaceHistory = tq._replaceHistory.bind(tq)\n    tq.appendHistory = tq._appendHistory.bind(tq)\n    tq.url = Url(window.location.href, true)\n  }\n\n  replaceHref () {\n    // Rerouting through timer to prevent spamming.\n    // Turbolinks blocks replacement if frequency too high.\n    if (this.replaceTimer === 0) {\n      this.replaceTimer = setTimeout(this.replaceHistory, 250)\n    }\n  }\n\n  toHref () {\n    if (this.appendTimer === 0) {\n      this.appendTimer = setTimeout(this.appendHistory, 250)\n    }\n  }\n\n  _replaceHistory () {\n    // see https://github.com/turbolinks/turbolinks/issues/219. This also works:\n    // window.history.replaceState(window.history.state, this.addr, this.url.href)\n    this.turbolinks.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.turbolinks.Location.wrap(this.url.href), this.turbolinks.uuid())\n    this.replaceTimer = 0\n  }\n\n  _appendHistory () {\n    // same as replaceHref, but creates a new entry in history for navigating\n    // with the browsers forward and back buttons. May still not work because of\n    // TurboLinks caching behavior, I think.\n    this.turbolinks.controller.pushHistoryWithLocationAndRestorationIdentifier(this.turbolinks.Location.wrap(this.url.href), this.turbolinks.uuid())\n    this.appendTimer = 0\n  }\n\n  replace (query) {\n    this.url.set('query', this.filteredQuery(query))\n    this.replaceHref()\n  }\n\n  to (query) {\n    this.url.set('query', this.filteredQuery(query))\n    this.toHref()\n  }\n\n  filteredQuery (query) {\n    const filtered = {}\n    Object.keys(query).forEach(function (key) {\n      const v = query[key]\n      if (typeof v === 'undefined' || v === null) return\n      filtered[key] = v\n    })\n    return filtered\n  }\n\n  update (target) {\n    // Update projects the current query parameters onto the given template.\n    return this.constructor.project(target, this.parsed)\n  }\n\n  get parsed () {\n    return this.url.query\n  }\n\n  // Not an ES5 getter.\n  get (key) {\n    if (Object.prototype.hasOwnProperty.call(this.url.query, key)) {\n      return TurboQuery.parseValue(this.url.query[key])\n    }\n    return null\n  }\n\n  static parseValue (v) {\n    switch (v) {\n      case 'null':\n        return null\n      case '':\n        return null\n      case 'undefined':\n        return null\n      case 'false':\n        return false\n      case 'true':\n        return true\n    }\n    if (!isNaN(parseFloat(v)) && isFinite(v)) {\n      if (String(v).includes('.')) {\n        return parseFloat(v)\n      } else {\n        return parseInt(v)\n      }\n    }\n    return v\n  }\n\n  static project (target, source) {\n    // project fills in the properties of the given template, if they exist in\n    // the source. Extraneous source properties are not added to the template.\n    const keys = Object.keys(target)\n    let idx\n    for (idx in keys) {\n      const k = keys[idx]\n      if (Object.prototype.hasOwnProperty.call(source, k)) {\n        target[k] = this.parseValue(source[k])\n      }\n    }\n    return target\n  }\n\n  static nullTemplate (keys) {\n    const d = {}\n    keys.forEach((key) => {\n      d[key] = null\n    })\n    return d\n  }\n}\n","// Utilities for working with chart zoom windows.\n\n// The keys in zoomMap can be passed directly to Zoom.validate.\nconst zoomMap = {\n  all: 0,\n  year: 3.154e+10,\n  month: 2.628e+9,\n  week: 6.048e+8,\n  day: 8.64e+7\n}\n\nfunction zoomObject (start, end) {\n  return { start, end }\n}\n\n// Attempts to decode a string of format start-end where start and end are\n// base 36 encoded unix timestamps in seconds.\nfunction decodeZoomString (encoded) {\n  const range = encoded.split('-')\n  if (range.length !== 2) {\n    return false\n  }\n  const start = parseInt(range[0], 36)\n  const end = parseInt(range[1], 36)\n  if (isNaN(start) || isNaN(end) || end - start <= 0) {\n    return false\n  }\n  return zoomObject(start, end)\n}\n\nfunction tryDecode (zoom) {\n  if (Array.isArray(zoom) && zoom.length === 2) {\n    return zoomObject(zoom[0], zoom[1])\n  } else if (typeof zoom === 'string' && zoom.indexOf('-') !== -1) {\n    return decodeZoomString(zoom)\n  }\n  return zoom\n}\n\n// Zoom is the exported class for dealing with Zoom windows. It is composed\n// entirely of static methods used for working with zoom ranges.\nexport default class Zoom {\n  static object (start, end) {\n    return zoomObject(start, end)\n  }\n\n  static mapValue (key, scale) {\n    scale = scale || 1\n    return zoomMap[key] / scale\n  }\n\n  // encode uses base 36 encoded unix timestamps to store the range in a\n  // short string.\n  static encode (start, end) {\n    // Can supply a single argument of zoomObject type, or two\n    // millisecond timestamps.\n    if (!end) {\n      const range = tryDecode(start)\n      end = range.end\n      start = range.start\n    }\n    return parseInt(start).toString(36) + '-' + parseInt(end).toString(36)\n  }\n\n  static decode (encoded, limits, scale) {\n    // decodes zoomString, such as from this.encode. zoomObjects pass through.\n    // If limits are provided, encoded can be a zoomMap key.\n    scale = scale || 1\n    const decoded = tryDecode(encoded)\n    const lims = tryDecode(limits)\n    if (lims && Object.prototype.hasOwnProperty.call(zoomMap, decoded)) {\n      const duration = zoomMap[decoded] / scale\n      if (duration === 0) return lims\n      return zoomObject(lims.end - duration, lims.end)\n    }\n    return decoded\n  }\n\n  // validate will shift and clamp the proposed zoom window to accommodate the\n  // range limits and minimum size.\n  static validate (proposal, limits, minSize, scale) {\n    // proposed: encoded zoom string || zoomMap key || zoomObject\n    // limits: zoomObject || array\n    scale = scale || 1\n    const lims = tryDecode(limits)\n    const proposed = tryDecode(proposal)\n    let zoom = lims\n    if (typeof proposed === 'string') {\n      zoom = this.decode(proposed, lims, scale)\n      if (!zoom) return false\n    } else if (proposed && typeof proposed === 'object') {\n      zoom = proposed\n    }\n    // Shift-Clamp\n    if (minSize && zoom.end - zoom.start < minSize) {\n      zoom.end = zoom.start + minSize\n    }\n    if (zoom.end > lims.end) {\n      const shift = zoom.end - lims.end\n      zoom.end -= shift\n      zoom.start = Math.max(zoom.start - shift, lims.start)\n    } else if (zoom.start < lims.start) {\n      const shift = lims.start - zoom.start\n      zoom.start += shift\n      zoom.end = Math.min(zoom.end + shift, lims.end)\n    }\n    return zoom\n  }\n\n  // mapKey returns the corresponding map key, if the zoom meets the correct\n  // range and position within the limits, else null.\n  static mapKey (zoom, limits, scale) {\n    scale = scale || 1\n    const lims = tryDecode(limits)\n    const decoded = this.decode(zoom, lims)\n    const range = decoded.end - decoded.start\n    if (decoded.start === lims.start && range === lims.end - lims.start) return 'all'\n    for (const k in zoomMap) {\n      const v = zoomMap[k]\n      if (v === 0) continue\n      // support an error of ±0.99 due to precision loss while dividing.\n      if (Math.abs(v / scale - range) < 0.99) return k\n    }\n    return null\n  }\n\n  // project proportionally translates the zoom from oldWindow to newWindow.\n  static project (zoom, oldWindow, newWindow) {\n    const decoded = tryDecode(zoom)\n    if (!decoded) return\n    const ow = tryDecode(oldWindow)\n    const nw = tryDecode(newWindow)\n    const oldRange = ow.end - ow.start\n    const newRange = nw.end - nw.start\n    const pStart = (decoded.start - ow.start) / oldRange\n    const pEnd = (decoded.end - ow.start) / oldRange\n    return zoomObject(nw.start + pStart * newRange, nw.start + pEnd * newRange)\n  }\n}\n","export function setCookie (cname, cvalue, exMins) {\n  const d = new Date()\n  d.setTime(d.getTime() + (exMins * 60 * 1000))\n  const expires = 'expires=' + d.toUTCString()\n  document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n","import { remove } from 'lodash-es'\n\nconst eventCallbacksPairs = []\n\nfunction findEventCallbacksPair (eventType) {\n  return eventCallbacksPairs.find(eventObject => eventObject.eventType === eventType)\n}\n\nfunction EventCallbacksPair (eventType, callback) {\n  this.eventType = eventType\n  this.callbacks = [callback]\n}\n\nclass EventBus {\n  on (eventType, callback) {\n    const eventCallbacksPair = findEventCallbacksPair(eventType)\n    if (eventCallbacksPair) {\n      eventCallbacksPair.callbacks.push(callback)\n    } else {\n      eventCallbacksPairs.push(new EventCallbacksPair(eventType, callback))\n    }\n  }\n\n  off (eventType, callback) {\n    const eventCallbacksPair = findEventCallbacksPair(eventType)\n    if (eventCallbacksPair) {\n      remove(eventCallbacksPair.callbacks, (cb) => {\n        return cb === callback\n      })\n    }\n  }\n\n  publish (eventType, args) {\n    const eventCallbacksPair = findEventCallbacksPair(eventType)\n    if (!eventCallbacksPair) return\n    eventCallbacksPair.callbacks.forEach(callback => callback(args))\n  }\n}\n\nconst eventBusInstance = new EventBus()\nexport default eventBusInstance\n","export function addPauseToMousetrap (Mousetrap) {\n  var _originalStopCallback = Mousetrap.prototype.stopCallback\n  Mousetrap.prototype.stopCallback = function (e, element, combo) {\n    var self = this\n\n    if (self.paused) {\n      return true\n    }\n\n    return _originalStopCallback.call(self, e, element, combo)\n  }\n\n  Mousetrap.prototype.pause = function () {\n    var self = this\n    self.paused = true\n  }\n\n  Mousetrap.prototype.unpause = function () {\n    var self = this\n    self.paused = false\n  }\n  Mousetrap.init()\n}\n","/* global Turbolinks */\nimport { toggleMenu, toggleSun, closeMenu } from '../services/theme_service'\nimport { setCookie } from './cookie_service'\nimport Mousetrap from 'mousetrap'\nimport { addPauseToMousetrap } from '../vendor/mousetrap-pause'\n\naddPauseToMousetrap(Mousetrap)\n\n// Keyboard Navigation\nlet targets\nlet targetsLength\nlet currentIndex = 0\nlet jumpToIndexOnLoad\nconst keyNavCookieName = 'dcrdataKeyNav'\nlet searchBar, keyNavToggle, menuToggle\n\nfunction bindElements () {\n  searchBar = document.getElementById('search')\n  keyNavToggle = document.getElementById('keynav-toggle')\n  const menuToggleObj = document.getElementById('menu-toggle')\n  if (menuToggleObj) {\n    menuToggle = menuToggleObj.querySelector('#common-menu-input')\n  }\n}\nbindElements()\n\nfunction keyNavEnabled () {\n  return document.cookie.includes(keyNavCookieName)\n}\n\nfunction setToggleText (txt) {\n  keyNavToggle.querySelector('.text').textContent = txt\n}\n\nfunction clearTargets () {\n  document.querySelectorAll('.keynav-target').forEach((el) => {\n    el.classList.remove('keynav-target', 'pulsate')\n  })\n}\n\nfunction enableKeyNav () {\n  setCookie(keyNavCookieName, 1, 525600)\n  Mousetrap.unpause()\n  setToggleText('Disable Hot Keys')\n  keyNav()\n}\n\nfunction disableKeyNav () {\n  setCookie(keyNavCookieName, '', 0)\n  clearTargets()\n  setToggleText('Enable Hot Keys')\n  Mousetrap.pause()\n}\n\nfunction toggleKeyNav () {\n  if (keyNavEnabled()) {\n    disableKeyNav()\n  } else {\n    enableKeyNav()\n  }\n}\n\nexport function keyNav (event, pulsate, preserveIndex) {\n  if (!keyNavEnabled()) return\n  bindElements()\n  if (menuToggle && menuToggle.checked) {\n    targets = Array.from(document.getElementById('hamburger-menu').querySelectorAll('a'))\n    currentIndex = 0\n  } else {\n    targets = []\n    document.querySelectorAll('a').forEach((link) => {\n      if (link.hasAttribute('data-keynav-skip')) return\n      targets.push(link)\n    })\n    targets.push(searchBar)\n\n    if (jumpToIndexOnLoad > 0) {\n      currentIndex = jumpToIndexOnLoad\n      jumpToIndexOnLoad = undefined\n    } else if (!preserveIndex) {\n      const priorityLink = document.querySelectorAll('[data-keynav-priority]')[0]\n      const i = targets.indexOf(priorityLink)\n      currentIndex = i > 0 ? i : 0\n    }\n  }\n  targetsLength = targets.length\n  clearTargets()\n  const currentTarget = targets[currentIndex]\n  currentTarget.classList.add('keynav-target')\n  currentTarget.focus()\n  currentTarget.blur()\n  if (pulsate) {\n    currentTarget.classList.add('pulsate')\n  }\n}\n\nMousetrap.bind(['left', '['], function () {\n  clearTargets()\n  currentIndex--\n  if (currentIndex < 0) {\n    currentIndex = targetsLength - 1\n  }\n  targets[currentIndex].classList.add('keynav-target')\n})\n\nMousetrap.bind(['right', ']'], function () {\n  clearTargets()\n  currentIndex++\n  if (currentIndex >= targetsLength) {\n    currentIndex = 0\n  }\n  targets[currentIndex].classList.add('keynav-target')\n})\n\nMousetrap.bind('enter', function (e) {\n  if (targets.length < currentIndex) {\n    return\n  }\n  const currentTarget = targets[currentIndex]\n  if (currentTarget.nodeName === 'INPUT') {\n    currentTarget.focus()\n    e.stopPropagation()\n    e.preventDefault()\n    return\n  }\n  if (currentTarget.id === 'keynav-toggle') {\n    toggleKeyNav()\n    return\n  }\n  const location = currentTarget.href\n  if (location !== undefined) {\n    if (currentTarget.dataset.preserveKeynavIndex) {\n      jumpToIndexOnLoad = currentIndex\n    }\n    currentTarget.classList.add('activated')\n    Turbolinks.visit(location)\n  }\n})\n\nMousetrap.bind('\\\\', function (e) {\n  e.preventDefault()\n  const topSearch = searchBar\n  if (topSearch.classList.contains('keynav-target')) {\n    topSearch.blur()\n    clearTargets()\n    keyNav(e, true, 0)\n  } else {\n    clearTargets()\n    topSearch.classList.add('keynav-target')\n    topSearch.focus()\n  }\n})\n\nMousetrap.bind('`', function () {\n  toggleSun()\n})\n\nMousetrap.bind('=', function (e) {\n  toggleMenu(e)\n  keyNav(e, true)\n})\n\nMousetrap.bind('q', function () {\n  clearTargets()\n})\n\nif (keyNavEnabled()) {\n  Mousetrap.unpause()\n} else {\n  Mousetrap.pause()\n}\n\nif (keyNavToggle) {\n  keyNavToggle.querySelector('.text').textContent = keyNavEnabled() ? 'Disable Hot Keys' : 'Enable Hot Keys'\n  keyNavToggle.addEventListener('click', (e) => {\n    if (e.offsetX === 0) {\n    // prevent duplicate click handling when turbolinks re-attaches handlers\n    // TODO find a more semantic way to deal with this\n      return\n    }\n    toggleKeyNav()\n  })\n}\n\ndocument.addEventListener('turbolinks:load', function (e) {\n  closeMenu(e)\n  if (keyNavEnabled()) {\n    keyNav(e, true)\n  }\n})\n\nif (menuToggle) {\n  menuToggle.addEventListener('change', (e) => {\n    if (keyNavEnabled()) {\n      keyNav(e, true)\n    }\n  })\n}\n","// MessageSocket is a WebSocket manager with an assumed JSON message format.\n//\n// JSON message format:\n// {\n//   event: name,\n//   message: your message data\n// }\n//\n// Functions for external use:\n// register(id, handler_function) -- register a function to handle events of\n//     the given type\n// send(id, data) -- create a JSON message in the above format and send it\n//\n// Copyright (c) 2017, Jonathan Chappelow\n// See LICENSE for details.\n//\n// Based on ws_events_dispatcher.js by Ismael Celis\n\nfunction forward (event, message, handlers) {\n  if (typeof handlers[event] === 'undefined') return\n  // call each handler\n  for (let i = 0; i < handlers[event].length; i++) {\n    handlers[event][i](message)\n  }\n}\n\nclass MessageSocket {\n  constructor () {\n    this.uri = undefined\n    this.connection = undefined\n    this.handlers = {}\n    this.queue = []\n    this.maxQlength = 5\n  }\n\n  registerEvtHandler (eventID, handler) {\n    this.handlers[eventID] = this.handlers[eventID] || []\n    this.handlers[eventID].push(handler)\n  }\n\n  deregisterEvtHandlers (eventID) {\n    this.handlers[eventID] = []\n  }\n\n  // send a message back to the server\n  send (eventID, message) {\n    if (this.connection === undefined) {\n      while (this.queue.length > this.maxQlength - 1) this.queue.shift()\n      this.queue.push([eventID, message])\n      return\n    }\n    const payload = JSON.stringify({\n      event: eventID,\n      message: message\n    })\n\n    if (window.loggingDebug) console.log('send', payload)\n    this.connection.send(payload)\n  }\n\n  connect (uri) {\n    this.uri = uri\n    this.connection = new window.WebSocket(uri)\n\n    this.close = (reason) => {\n      console.log('close, reason:', reason, this.handlers)\n      clearTimeout(pinger)\n      this.handlers = {}\n      this.connection.close()\n    }\n\n    // unmarshal message, and forward the message to registered handlers\n    this.connection.onmessage = (evt) => {\n      const json = JSON.parse(evt.data)\n      forward(json.event, json.message, this.handlers)\n    }\n\n    // Stub out standard functions\n    this.connection.onclose = () => {\n      forward('close', null, this.handlers)\n    }\n    this.connection.onopen = () => {\n      forward('open', null, this.handlers)\n      while (this.queue.length) {\n        const [eventID, message] = this.queue.shift()\n        this.send(eventID, message)\n      }\n    }\n    this.connection.onerror = (evt) => {\n      forward('error', evt, this.handlers)\n    }\n\n    // Start ping pong\n    const pinger = setInterval(() => {\n      this.send('ping', 'sup')\n    }, 7000)\n  }\n}\n\nconst ws = new MessageSocket()\nexport default ws\n","import { setCookie } from './cookie_service'\nimport globalEventBus from './event_bus_service'\n\nconst sunIcon = document.getElementById('sun-icon')\nconst darkBGCookieName = 'dcrdataDarkBG'\n\nexport function darkEnabled () {\n  return document.cookie.includes(darkBGCookieName)\n}\n\nfunction menuToggle () {\n  return document.querySelector('#menu-toggle #common-menu-input')\n}\n\nif (darkEnabled()) {\n  toggleToDarkClasses(document.body)\n} else {\n  toggleToLightClasses(document.body)\n}\nfunction toggleToDarkClasses (body) {\n  sunIcon.classList.remove('dcricon-sun-fill')\n  sunIcon.classList.add('dcricon-sun-stroke')\n  body.classList.add('darkBG')\n}\nfunction toggleToLightClasses (body) {\n  body.classList.remove('darkBG')\n  sunIcon.classList.remove('dcricon-sun-stroke')\n  sunIcon.classList.add('dcricon-sun-fill')\n}\nexport function toggleSun () {\n  if (darkEnabled()) {\n    setCookie(darkBGCookieName, '', 0)\n    toggleToLightClasses(document.body)\n    globalEventBus.publish('NIGHT_MODE', { nightMode: false })\n  } else {\n    setCookie(darkBGCookieName, 1, 525600)\n    toggleToDarkClasses(document.body)\n    globalEventBus.publish('NIGHT_MODE', { nightMode: true })\n  }\n}\n\ndocument.addEventListener('turbolinks:before-render', function (event) {\n  if (darkEnabled()) {\n    toggleToDarkClasses(event.data.newBody)\n  } else {\n    toggleToLightClasses(event.data.newBody)\n  }\n})\n\nexport function toggleMenu () {\n  const checkbox = menuToggle()\n  if (!checkbox) {\n    return\n  }\n  checkbox.checked = !checkbox.checked\n  checkbox.dispatchEvent(new window.Event('change'))\n}\n\nexport function closeMenu () {\n  const checkbox = menuToggle()\n  if (!checkbox) {\n    return\n  }\n  if (!checkbox.checked) return\n  checkbox.checked = false\n  checkbox.dispatchEvent(new window.Event('change'))\n}\n","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).mempoolJS=e()}}((function(){var e=function(e){var t;return function(n){return t||e(t={exports:{},parent:n},t.exports),t.exports}},t=e((function(e,t){(function(t){(function(){\"use strict\";var r={\"Content-Type\":\"application/x-www-form-urlencoded\"};function o(e,t){!l.isUndefined(e)&&l.isUndefined(e[\"Content-Type\"])&&(e[\"Content-Type\"]=t)}var i,a={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:((\"undefined\"!=typeof XMLHttpRequest||void 0!==t&&\"[object process]\"===Object.prototype.toString.call(t))&&(i=n({})),i),transformRequest:[function(e,t){return v(t,\"Accept\"),v(t,\"Content-Type\"),l.isFormData(e)||l.isArrayBuffer(e)||l.isBuffer(e)||l.isStream(e)||l.isFile(e)||l.isBlob(e)?e:l.isArrayBufferView(e)?e.buffer:l.isURLSearchParams(e)?(o(t,\"application/x-www-form-urlencoded;charset=utf-8\"),e.toString()):l.isObject(e)||t&&\"application/json\"===t[\"Content-Type\"]?(o(t,\"application/json\"),function(e,t,n){if(l.isString(e))try{return(0,JSON.parse)(e),l.trim(e)}catch(r){if(\"SyntaxError\"!==r.name)throw r}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||a.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&\"json\"===this.responseType;if(o||r&&l.isString(e)&&e.length)try{return JSON.parse(e)}catch(i){if(o){if(\"SyntaxError\"===i.name)throw b(i,this,\"E_JSON_PARSE\");throw i}}return e}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:\"application/json, text/plain, */*\"}}};l.forEach([\"delete\",\"get\",\"head\"],(function(e){a.headers[e]={}})),l.forEach([\"post\",\"put\",\"patch\"],(function(e){a.headers[e]=l.merge(r)})),e.exports=a}).call(this)}).call(this,A)})),n=e((function(e,n){\"use strict\";var r=t({});e.exports=function(e){return new Promise((function(t,n){var o,i=e.data,a=e.headers,u=e.responseType;function s(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener(\"abort\",o)}l.isFormData(i)&&delete a[\"Content-Type\"];var c=new XMLHttpRequest;if(e.auth){var f=e.auth.username||\"\",h=e.auth.password?unescape(encodeURIComponent(e.auth.password)):\"\";a.Authorization=\"Basic \"+btoa(f+\":\"+h)}var p=m(e.baseURL,e.url);function v(){if(c){var r=\"getAllResponseHeaders\"in c?k(c.getAllResponseHeaders()):null,o={data:u&&\"text\"!==u&&\"json\"!==u?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:r,config:e,request:c};w((function(e){t(e),s()}),(function(e){n(e),s()}),o),c=null}}if(c.open(e.method.toUpperCase(),d(p,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,\"onloadend\"in c?c.onloadend=v:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf(\"file:\"))&&setTimeout(v)},c.onabort=function(){c&&(n(y(\"Request aborted\",e,\"ECONNABORTED\",c)),c=null)},c.onerror=function(){n(y(\"Network Error\",e,null,c)),c=null},c.ontimeout=function(){var t=e.timeout?\"timeout of \"+e.timeout+\"ms exceeded\":\"timeout exceeded\",o=e.transitional||r.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(y(t,e,o.clarifyTimeoutError?\"ETIMEDOUT\":\"ECONNABORTED\",c)),c=null},l.isStandardBrowserEnv()){var b=(e.withCredentials||_(p))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;b&&(a[e.xsrfHeaderName]=b)}\"setRequestHeader\"in c&&l.forEach(a,(function(e,t){void 0===i&&\"content-type\"===t.toLowerCase()?delete a[t]:c.setRequestHeader(t,e)})),l.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),u&&\"json\"!==u&&(c.responseType=e.responseType),\"function\"==typeof e.onDownloadProgress&&c.addEventListener(\"progress\",e.onDownloadProgress),\"function\"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener(\"progress\",e.onUploadProgress),(e.cancelToken||e.signal)&&(o=function(e){c&&(n(!e||e&&e.type?new T(\"canceled\"):e),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener(\"abort\",o))),i||(i=null),c.send(i)}))}})),r=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},o=Object.prototype.toString;function i(e){return\"[object Array]\"===o.call(e)}function a(e){return void 0===e}function u(e){return null!==e&&\"object\"==typeof e}function s(e){if(\"[object Object]\"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e,t){if(null!=e)if(\"object\"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.call(null,e[o],o,e)}var l={isArray:i,isArrayBuffer:function(e){return\"[object ArrayBuffer]\"===o.call(e)},isBuffer:function(e){return null!==e&&!a(e)&&null!==e.constructor&&!a(e.constructor)&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return\"undefined\"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return\"string\"==typeof e},isNumber:function(e){return\"number\"==typeof e},isObject:u,isPlainObject:s,isUndefined:a,isDate:function(e){return\"[object Date]\"===o.call(e)},isFile:function(e){return\"[object File]\"===o.call(e)},isBlob:function(e){return\"[object Blob]\"===o.call(e)},isStream:function(e){return u(e)&&function(e){return\"[object Function]\"===o.call(e)}(e.pipe)},isURLSearchParams:function(e){return\"undefined\"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return(\"undefined\"==typeof navigator||\"ReactNative\"!==navigator.product&&\"NativeScript\"!==navigator.product&&\"NS\"!==navigator.product)&&\"undefined\"!=typeof window&&\"undefined\"!=typeof document},forEach:c,merge:function e(){var t={};function n(n,r){s(t[r])&&s(n)?t[r]=e(t[r],n):s(n)?t[r]=e({},n):i(n)?t[r]=n.slice():t[r]=n}for(var r=0,o=arguments.length;r<o;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,(function(t,o){e[o]=n&&\"function\"==typeof t?r(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}};function f(e){return encodeURIComponent(e).replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}var d=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(l.isURLSearchParams(t))r=t.toString();else{var o=[];l.forEach(t,(function(e,t){null!=e&&(l.isArray(e)?t+=\"[]\":e=[e],l.forEach(e,(function(e){l.isDate(e)?e=e.toISOString():l.isObject(e)&&(e=JSON.stringify(e)),o.push(f(t)+\"=\"+f(e))})))})),r=o.join(\"&\")}if(r){var i=e.indexOf(\"#\");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf(\"?\")?\"?\":\"&\")+r}return e},h={};function p(){this.handlers=[]}p.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},p.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},p.prototype.forEach=function(e){l.forEach(this.handlers,(function(t){null!==t&&e(t)}))},h=p;var v=function(e,t){l.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},b=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},y=function(e,t,n,r,o){var i=new Error(e);return b(i,t,n,r,o)},w=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(y(\"Request failed with status code \"+n.status,n.config,null,n.request,n)):e(n)},g=l.isStandardBrowserEnv()?{write:function(e,t,n,r,o,i){var a=[];a.push(e+\"=\"+encodeURIComponent(t)),l.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),l.isString(r)&&a.push(\"path=\"+r),l.isString(o)&&a.push(\"domain=\"+o),!0===i&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read:function(e){var t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},m=function(e,t){return e&&!/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)?function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}(e,t):t},x=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"],k=function(e){var t,n,r,o={};return e?(l.forEach(e.split(\"\\n\"),(function(e){if(r=e.indexOf(\":\"),t=l.trim(e.substr(0,r)).toLowerCase(),n=l.trim(e.substr(r+1)),t){if(o[t]&&x.indexOf(t)>=0)return;o[t]=\"set-cookie\"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+\", \"+n:n}})),o):o},_=l.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function r(e){var r=e;return t&&(n.setAttribute(\"href\",r),r=n.href),n.setAttribute(\"href\",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return e=r(window.location.href),function(t){var n=l.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0},T={};function S(e){this.message=e}S.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},S.prototype.__CANCEL__=!0,T=S;var P,E,A={},j=A={};function B(){throw new Error(\"setTimeout has not been defined\")}function O(){throw new Error(\"clearTimeout has not been defined\")}function M(e){if(P===setTimeout)return setTimeout(e,0);if((P===B||!P)&&setTimeout)return P=setTimeout,setTimeout(e,0);try{return P(e,0)}catch(t){try{return P.call(null,e,0)}catch(t){return P.call(this,e,0)}}}!function(){try{P=\"function\"==typeof setTimeout?setTimeout:B}catch(e){P=B}try{E=\"function\"==typeof clearTimeout?clearTimeout:O}catch(e){E=O}}();var R,C=[],L=!1,N=-1;function U(){L&&R&&(L=!1,R.length?C=R.concat(C):N=-1,C.length&&q())}function q(){if(!L){var e=M(U);L=!0;for(var t=C.length;t;){for(R=C,C=[];++N<t;)R&&R[N].run();N=-1,t=C.length}R=null,L=!1,function(e){if(E===clearTimeout)return clearTimeout(e);if((E===O||!E)&&clearTimeout)return E=clearTimeout,clearTimeout(e);try{E(e)}catch(t){try{return E.call(null,e)}catch(t){return E.call(this,e)}}}(e)}}function I(e,t){this.fun=e,this.array=t}function D(){}j.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];C.push(new I(e,t)),1!==C.length||L||M(q)},I.prototype.run=function(){this.fun.apply(null,this.array)},j.title=\"browser\",j.browser=!0,j.env={},j.argv=[],j.version=\"\",j.versions={},j.on=D,j.addListener=D,j.once=D,j.off=D,j.removeListener=D,j.removeAllListeners=D,j.emit=D,j.prependListener=D,j.prependOnceListener=D,j.listeners=function(e){return[]},j.binding=function(e){throw new Error(\"process.binding is not supported\")},j.cwd=function(){return\"/\"},j.chdir=function(e){throw new Error(\"process.chdir is not supported\")},j.umask=function(){return 0};var F=t({}),G=function(e,t,n){var r=this||F;return l.forEach(n,(function(n){e=n.call(r,e,t)})),e},H=function(e){return!(!e||!e.__CANCEL__)},J=t({});function W(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new T(\"canceled\")}var z,V=function(e){return W(e),e.headers=e.headers||{},e.data=G.call(e,e.data,e.headers,e.transformRequest),e.headers=l.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),l.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],(function(t){delete e.headers[t]})),(e.adapter||J.adapter)(e).then((function(t){return W(e),t.data=G.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return H(t)||(W(e),t&&t.response&&(t.response.data=G.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},X=function(e,t){t=t||{};var n={};function r(e,t){return l.isPlainObject(e)&&l.isPlainObject(t)?l.merge(e,t):l.isPlainObject(t)?l.merge({},t):l.isArray(t)?t.slice():t}function o(n){return l.isUndefined(t[n])?l.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function i(e){if(!l.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return l.isUndefined(t[n])?l.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function u(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var s={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:u};return l.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=s[e]||o,r=t(e);l.isUndefined(r)&&t!==u||(n[e]=r)})),n},$=\"0.24.0\",K=$,Q={};[\"object\",\"boolean\",\"number\",\"function\",\"string\",\"symbol\"].forEach((function(e,t){Q[e]=function(n){return typeof n===e||\"a\"+(t<1?\"n \":\" \")+e}}));var Y={};Q.transitional=function(e,t,n){function r(e,t){return\"[Axios v\"+K+\"] Transitional option '\"+e+\"'\"+t+(n?\". \"+n:\"\")}return function(n,o,i){if(!1===e)throw new Error(r(o,\" has been removed\"+(t?\" in \"+t:\"\")));return t&&!Y[o]&&(Y[o]=!0,console.warn(r(o,\" has been deprecated since v\"+t+\" and will be removed in the near future\"))),!e||e(n,o,i)}};var Z={},ee=(z={assertOptions:function(e,t,n){if(\"object\"!=typeof e)throw new TypeError(\"options must be an object\");for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new TypeError(\"option \"+i+\" must be \"+s)}else if(!0!==n)throw Error(\"Unknown option \"+i)}},validators:Q}).validators;function te(e){this.defaults=e,this.interceptors={request:new h,response:new h}}te.prototype.request=function(e){\"string\"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=X(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method=\"get\";var t=e.transitional;void 0!==t&&z.assertOptions(t,{silentJSONParsing:ee.transitional(ee.boolean),forcedJSONParsing:ee.transitional(ee.boolean),clarifyTimeoutError:ee.transitional(ee.boolean)},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){\"function\"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(e){i.push(e.fulfilled,e.rejected)})),!r){var a=[V,void 0];for(Array.prototype.unshift.apply(a,n),a=a.concat(i),o=Promise.resolve(e);a.length;)o=o.then(a.shift(),a.shift());return o}for(var u=e;n.length;){var s=n.shift(),c=n.shift();try{u=s(u)}catch(l){c(l);break}}try{o=V(u)}catch(l){return Promise.reject(l)}for(;i.length;)o=o.then(i.shift(),i.shift());return o},te.prototype.getUri=function(e){return e=X(this.defaults,e),d(e.url,e.params,e.paramsSerializer).replace(/^\\?/,\"\")},l.forEach([\"delete\",\"get\",\"head\",\"options\"],(function(e){te.prototype[e]=function(t,n){return this.request(X(n||{},{method:e,url:t,data:(n||{}).data}))}})),l.forEach([\"post\",\"put\",\"patch\"],(function(e){te.prototype[e]=function(t,n,r){return this.request(X(r||{},{method:e,url:t,data:n}))}})),Z=te;var ne;function re(e){if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new T(e),t(n.reason))}))}re.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},re.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},re.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},re.source=function(){var e;return{token:new re((function(t){e=t})),cancel:e}},ne=re;var oe={},ie=function e(t){var n=new Z(t),o=r(Z.prototype.request,n);return l.extend(o,Z.prototype,n),l.extend(o,n),o.create=function(n){return e(X(t,n))},o}(t({}));ie.Axios=Z,ie.Cancel=T,ie.CancelToken=ne,ie.isCancel=H,ie.VERSION=$,ie.all=function(e){return Promise.all(e)},ie.spread=function(e){return function(t){return e.apply(null,t)}},ie.isAxiosError=function(e){return\"object\"==typeof e&&!0===e.isAxiosError},(oe=ie).default=ie;var ae=oe,ue={},se=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ue,\"__esModule\",{value:!0}),ue.makeLiquidAPI=ue.makeBisqMarketsAPI=ue.makeBisqAPI=ue.makeBitcoinAPI=void 0;var ce=se(ae);ue.makeBitcoinAPI=function(e){var t=e.hostname,n=e.network;return n=n&&[\"testnet\",\"signet\"].includes(n)?\"/\"+n:\"\",(null==t?void 0:t.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+t+n+\"/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+t+n+\"/api/\"})}},ue.makeBisqAPI=function(e){return(null==e?void 0:e.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+e+\"/bisq/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+e+\"/bisq/api/\"})}},ue.makeBisqMarketsAPI=function(){return{api:ce.default.create({baseURL:\"https://bisq.markets/api/v1/markets/\"})}},ue.makeLiquidAPI=function(e){return(null==e?void 0:e.includes(\"localhost\"))?{api:ce.default.create({baseURL:\"http://\"+e+\"/liquid/api/\"})}:{api:ce.default.create({baseURL:\"https://\"+e+\"/liquid/api/\"})}},ue.makeBitcoinAPI,ue.makeBisqAPI,ue.makeBisqMarketsAPI,ue.makeLiquidAPI;var le={},fe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},de=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(le,\"__esModule\",{value:!0}),le.useAddresses=void 0,le.useAddresses=function(e){return{getAddress:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))},getAddressTxs:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsChain:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/chain\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsMempool:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/mempool\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsUtxo:function(t){return fe(void 0,void 0,void 0,(function(){return de(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/utxo\")];case 1:return[2,n.sent().data]}}))}))}}};var he={},pe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ve=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(he,\"__esModule\",{value:!0}),he.useBlocks=void 0,he.useBlocks=function(e){return{getBlock:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.start_height)];case 1:return[2,n.sent().data]}}))}))},getBlockStatus:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getBlockTxs:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txs/\"+t.start_index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxid:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txid/\"+t.index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxids:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txids\")];case 1:return[2,n.sent().data]}}))}))},getBlockRaw:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeader:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/header\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeight:function(t){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block-height/\"+t.height)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHash:function(){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/hash\")];case 1:return[2,t.sent().data]}}))}))},getBlocksTipHeight:function(){return pe(void 0,void 0,void 0,(function(){return ve(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var be={},ye=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},we=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(be,\"__esModule\",{value:!0}),be.useDifficulty=void 0,be.useDifficulty=function(e){return{getDifficultyAdjustment:function(){return ye(void 0,void 0,void 0,(function(){return we(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/difficulty-adjustment\")];case 1:return[2,t.sent().data]}}))}))}}};var ge={},me=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},xe=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ge,\"__esModule\",{value:!0}),ge.useFees=void 0,ge.useFees=function(e){return{getFeesRecommended:function(){return me(void 0,void 0,void 0,(function(){return xe(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/recommended\")];case 1:return[2,t.sent().data]}}))}))},getFeesMempoolBlocks:function(){return me(void 0,void 0,void 0,(function(){return xe(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/mempool-blocks\")];case 1:return[2,t.sent().data]}}))}))},getCPFP:function(t){return me(void 0,void 0,void 0,(function(){return xe(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/cpfp/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))}}};var ke={},_e=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Te=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ke,\"__esModule\",{value:!0}),ke.useMempool=void 0,ke.useMempool=function(e){return{getMempool:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool\")];case 1:return[2,t.sent().data]}}))}))},getMempoolTxids:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/txids\")];case 1:return[2,t.sent().data]}}))}))},getMempoolRecent:function(){return _e(void 0,void 0,void 0,(function(){return Te(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/recent\")];case 1:return[2,t.sent().data]}}))}))}}};var Se={},Pe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Ee=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Se,\"__esModule\",{value:!0}),Se.useTransactions=void 0,Se.useTransactions=function(e){return{getTx:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxStatus:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getTxHex:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/hex\")];case 1:return[2,n.sent().data]}}))}))},getTxRaw:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleBlockProof:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkleblock-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleProof:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkle-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxOutspend:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspend/\"+t.vout)];case 1:return[2,n.sent().data]}}))}))},getTxOutspends:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspends\")];case 1:return[2,n.sent().data]}}))}))},postTx:function(t){return Pe(void 0,void 0,void 0,(function(){return Ee(this,(function(n){switch(n.label){case 0:return[4,e.post(\"/tx\",{txhex:t.txhex})];case 1:return[2,n.sent().data]}}))}))}}};var Ae={},je=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Be=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ae,\"__esModule\",{value:!0});var Oe=function(e,t){var n=new WebSocket(t);return n.addEventListener(\"open\",(function(){n.send(JSON.stringify({action:\"want\",data:e}))})),n.addEventListener(\"close\",(function(){return je(this,void 0,void 0,(function(){return Be(this,(function(n){switch(n.label){case 0:return[4,Me(6e4)];case 1:return n.sent(),Oe(e,t),[2]}}))}))})),n},Me=function(e){return new Promise((function(t){setTimeout(t,e)}))};Ae.default=Oe;var Re={},Ce=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Le=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},Ne=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Re,\"__esModule\",{value:!0});var Ue=Ne((function(){throw new Error(\"ws does not work in the browser. Browser clients must use the native WebSocket object\")})),qe=function(e,t){var n=new Ue.default(t),r=setInterval((function(){n.ping()}),3e4);return n.on(\"open\",(function(){n.send(JSON.stringify({action:\"want\",data:e}))})),n.on(\"close\",(function(){return Ce(this,void 0,void 0,(function(){return Le(this,(function(o){switch(o.label){case 0:return clearInterval(r),n.terminate(),[4,Ie(6e4)];case 1:return o.sent(),qe(e,t),[2]}}))}))})),n},Ie=function(e){return new Promise((function(t){setTimeout(t,e)}))};Re.default=qe;var De={},Fe=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(De,\"__esModule\",{value:!0}),De.useWebsocket=void 0;var Ge=Fe(Ae),He=Fe(Re);De.useWebsocket=function(e,t){var n=\"wss://\"+e+(\"main\"===t?\"\":\"/\"+t)+\"/api/v1/ws\";return{initClient:function(e){var t=e.options;return Ge.default(t,n)},initServer:function(e){var t=e.options;return He.default(t,n)}}};var Je={},We=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ze=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Je,\"__esModule\",{value:!0}),Je.useAddresses=void 0,Je.useAddresses=function(e){return{getAddress:function(t){return We(void 0,void 0,void 0,(function(){return ze(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))}}};var Ve={},Xe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},$e=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ve,\"__esModule\",{value:!0}),Ve.useBlocks=void 0,Ve.useBlocks=function(e){return{getBlock:function(t){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.index+\"/\"+t.length)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHeight:function(){return Xe(void 0,void 0,void 0,(function(){return $e(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var Ke={},Qe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},Ye=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ke,\"__esModule\",{value:!0}),Ke.useStatistics=void 0,Ke.useStatistics=function(e){return{getStats:function(){return Qe(void 0,void 0,void 0,(function(){return Ye(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/stats\")];case 1:return[2,t.sent().data]}}))}))}}};var Ze={},et=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},tt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(Ze,\"__esModule\",{value:!0}),Ze.useTransactions=void 0,Ze.useTransactions=function(e){return{getTx:function(t){return et(void 0,void 0,void 0,(function(){return tt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxs:function(t){return et(void 0,void 0,void 0,(function(){return tt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/txs/\"+t.index+\"/\"+t.length)];case 1:return[2,n.sent().data]}}))}))}}};var nt={},rt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ot=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(nt,\"__esModule\",{value:!0}),nt.useMarkets=void 0,nt.useMarkets=function(e){return{getCurrencies:function(t){return void 0===t&&(t={basecurrency:\"BTC\",type:\"all\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/currencies\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getDepth:function(t){return void 0===t&&(t={market:\"xmr_btc\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/depth\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getHloc:function(t){return rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/hloc\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getMarkets:function(t){return void 0===t&&(t={format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/markets\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getOffers:function(t){return void 0===t&&(t={market:\"xmr_btc\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/offers\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getTicker:function(t){return void 0===t&&(t={format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/ticker\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getTrades:function(t){return void 0===t&&(t={market:\"all\",format:\"jsonpretty\",timestamp_from:\"2016-01-01\",timestamp_to:\"now\",limit:100,sort:\"desc\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/trades\",{params:t})];case 1:return[2,n.sent().data]}}))}))},getVolumes:function(t){return void 0===t&&(t={basecurrency:\"\",market:\"\",interval:\"auto\",timestamp_from:\"2016-01-01\",timestamp_to:\"now\",format:\"jsonpretty\"}),rt(void 0,void 0,void 0,(function(){return ot(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/trades\",{params:t})];case 1:return[2,n.sent().data]}}))}))}}};var it={},at=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ut=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(it,\"__esModule\",{value:!0}),it.useAssets=void 0,it.useAssets=function(e){return{getAsset:function(t){return at(void 0,void 0,void 0,(function(){return ut(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/asset/\"+t.asset_id)];case 1:return[2,n.sent().data]}}))}))},getAssetIcon:function(t){return at(void 0,void 0,void 0,(function(){return ut(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/asset/\"+t.asset_id+\"/icon\")];case 1:return[2,n.sent().data]}}))}))},getAssetTxs:function(t){return at(void 0,void 0,void 0,(function(){var n;return ut(this,(function(r){switch(r.label){case 0:return n=!0===t.is_mempool?\"/mempool\":\"/chain\",[4,e.get(\"/asset/\"+t.asset_id+\"/txs\"+n)];case 1:return[2,r.sent().data]}}))}))},getAssetSupply:function(t){return at(void 0,void 0,void 0,(function(){var n;return ut(this,(function(r){switch(r.label){case 0:return n=!0===t.decimal?\"/decimal\":\"\",[4,e.get(\"/asset/\"+t.asset_id+\"/supply\"+n)];case 1:return[2,r.sent().data]}}))}))},getAssetsIcons:function(){return at(void 0,void 0,void 0,(function(){return ut(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/assets/icons\")];case 1:return[2,t.sent().data]}}))}))}}};var st={},ct=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},lt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(st,\"__esModule\",{value:!0}),st.useAddresses=void 0,st.useAddresses=function(e){return{getAddress:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address)];case 1:return[2,n.sent().data]}}))}))},getAddressTxs:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsChain:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/chain\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsMempool:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/txs/mempool\")];case 1:return[2,n.sent().data]}}))}))},getAddressTxsUtxo:function(t){return ct(void 0,void 0,void 0,(function(){return lt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/address/\"+t.address+\"/utxo\")];case 1:return[2,n.sent().data]}}))}))}}};var ft={},dt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},ht=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(ft,\"__esModule\",{value:!0}),ft.useBlocks=void 0,ft.useBlocks=function(e){return{getBlock:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash)];case 1:return[2,n.sent().data]}}))}))},getBlocks:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/blocks/\"+t.start_height)];case 1:return[2,n.sent().data]}}))}))},getBlockStatus:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getBlockTxs:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txs/\"+t.start_index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxid:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txid/\"+t.index)];case 1:return[2,n.sent().data]}}))}))},getBlockTxids:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/txids\")];case 1:return[2,n.sent().data]}}))}))},getBlockRaw:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block/\"+t.hash+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getBlockHeight:function(t){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/block-height/\"+t.height)];case 1:return[2,n.sent().data]}}))}))},getBlocksTipHash:function(){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/hash\")];case 1:return[2,t.sent().data]}}))}))},getBlocksTipHeight:function(){return dt(void 0,void 0,void 0,(function(){return ht(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/blocks/tip/height\")];case 1:return[2,t.sent().data]}}))}))}}};var pt={},vt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},bt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(pt,\"__esModule\",{value:!0}),pt.useFees=void 0,pt.useFees=function(e){return{getFeesRecommended:function(){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/recommended\")];case 1:return[2,t.sent().data]}}))}))},getFeesMempoolBlocks:function(){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/v1/fees/mempool-blocks\")];case 1:return[2,t.sent().data]}}))}))},getCPFP:function(t){return vt(void 0,void 0,void 0,(function(){return bt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/v1/cpfp/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))}}};var yt={},wt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},gt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(yt,\"__esModule\",{value:!0}),yt.useMempool=void 0,yt.useMempool=function(e){return{getMempool:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool\")];case 1:return[2,t.sent().data]}}))}))},getMempoolTxids:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/txids\")];case 1:return[2,t.sent().data]}}))}))},getMempoolRecent:function(){return wt(void 0,void 0,void 0,(function(){return gt(this,(function(t){switch(t.label){case 0:return[4,e.get(\"/mempool/recent\")];case 1:return[2,t.sent().data]}}))}))}}};var mt={},xt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function u(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}s((r=r.apply(e,t||[])).next())}))},kt=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(u){i=[6,u],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(mt,\"__esModule\",{value:!0}),mt.useTransactions=void 0,mt.useTransactions=function(e){return{getTx:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid)];case 1:return[2,n.sent().data]}}))}))},getTxStatus:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/status\")];case 1:return[2,n.sent().data]}}))}))},getTxHex:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/hex\")];case 1:return[2,n.sent().data]}}))}))},getTxRaw:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/raw\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleBlockProof:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkleblock-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxMerkleProof:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/merkle-proof\")];case 1:return[2,n.sent().data]}}))}))},getTxOutspend:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspend/\"+t.vout)];case 1:return[2,n.sent().data]}}))}))},getTxOutspends:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.get(\"/tx/\"+t.txid+\"/outspends\")];case 1:return[2,n.sent().data]}}))}))},postTx:function(t){return xt(void 0,void 0,void 0,(function(){return kt(this,(function(n){switch(n.label){case 0:return[4,e.post(\"/tx\",{txid:t.txhex})];case 1:return[2,n.sent().data]}}))}))}}};var _t={},Tt=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_t,\"__esModule\",{value:!0}),_t.useWebsocket=void 0;var St=Tt(Ae),Pt=Tt(Re);_t.useWebsocket=function(e){var t=\"wss://\"+e+\"/liquid/api/v1/ws\";return{initClient:function(e){var n=e.options;return St.default(n,t)},initServer:function(e){var n=e.options;return Pt.default(n,t)}}};var Et=function(e){var t=void 0===e?{hostname:\"mempool.space\",network:\"main\"}:e,n=t.hostname,r=t.network;n||(n=\"mempool.space\"),r||(r=\"main\");var o=ue.makeBitcoinAPI({hostname:n,network:r}).api,i=ue.makeBisqAPI(n).api,a=ue.makeBisqMarketsAPI().api,u=ue.makeLiquidAPI(n).api;return{bitcoin:{addresses:le.useAddresses(o),blocks:he.useBlocks(o),difficulty:be.useDifficulty(o),fees:ge.useFees(o),mempool:ke.useMempool(o),transactions:Se.useTransactions(o),websocket:De.useWebsocket(n,r)},bisq:{statistics:Ke.useStatistics(i),addresses:Je.useAddresses(i),blocks:Ve.useBlocks(i),transactions:Ze.useTransactions(i),markets:nt.useMarkets(a)},liquid:{addresses:st.useAddresses(u),assets:it.useAssets(u),blocks:ft.useBlocks(u),fees:pt.useFees(u),mempool:yt.useMempool(u),transactions:mt.useTransactions(u),websocket:_t.useWebsocket(n)}}};return Et.default=Et,Et}));","var map = {\n\t\"./address_controller.js\": 4781,\n\t\"./agenda_controller.js\": 6147,\n\t\"./agendas_controller.js\": 3154,\n\t\"./atomicswaps_controller.js\": 7684,\n\t\"./attackcost_controller.js\": 8648,\n\t\"./blockdetail_controller.js\": 2385,\n\t\"./blocklist_controller.js\": 5878,\n\t\"./bwdash_controller.js\": 5946,\n\t\"./chainaddress_controller.js\": 3186,\n\t\"./chaincharts_controller.js\": 3789,\n\t\"./chainhome_controller.js\": 6007,\n\t\"./chainmarket_controller.js\": 7490,\n\t\"./chainmempool_controller.js\": 2823,\n\t\"./chainvisualBlocks_controller.js\": 1464,\n\t\"./charts_controller.js\": 9816,\n\t\"./clipboard_controller.js\": 8235,\n\t\"./common_controller.js\": 6896,\n\t\"./connection_controller.js\": 7323,\n\t\"./financebase_controller.js\": 6408,\n\t\"./financedetail_controller.js\": 3756,\n\t\"./financereport_controller.js\": 7245,\n\t\"./footer_controller.js\": 5082,\n\t\"./homecharts_controller.js\": 6765,\n\t\"./homepage_controller.js\": 7779,\n\t\"./market_controller.js\": 719,\n\t\"./mempool_controller.js\": 7628,\n\t\"./menu_controller.js\": 8014,\n\t\"./newblock_controller.js\": 2638,\n\t\"./pagenavigation_controller.js\": 6848,\n\t\"./proposal_controller.js\": 7745,\n\t\"./rawtx_controller.js\": 4943,\n\t\"./scroll_controller.js\": 968,\n\t\"./search_controller.js\": 4659,\n\t\"./stakingreward_controller.js\": 6779,\n\t\"./status_controller.js\": 1417,\n\t\"./supply_controller.js\": 5618,\n\t\"./ticketpool_controller.js\": 7669,\n\t\"./time_controller.js\": 2472,\n\t\"./top_controller.js\": 2120,\n\t\"./tx_controller.js\": 9663,\n\t\"./visualBlocks_controller.js\": 9245\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3943;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + {\"1\":\"dygraphs\",\"2\":\"qrcode\",\"3\":\"tippy\"}[chunkId] + \".\" + {\"1\":\"bf49455eb18c1649\",\"2\":\"43c58bbf0ce85aca\",\"3\":\"5efda461e6c9c8e8\"}[chunkId] + \".bundle.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/dist/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t0: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdcrdata\"] = self[\"webpackChunkdcrdata\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4], () => (__webpack_require__(1290)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","undefined","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","doneResult","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","require","window","darkEnabled","application","Application","start","getSocketURI","protocol","host","sleep","ms","setTimeout","_createWebSocket","_callee","uri","updateBlockData","updateSummaryData","update24hData","updateLtcBlockData","updateBtcBlockData","updateLtcMempoolData","updateBtcMempoolData","_context","ws","connect","event","newBlock","JSON","parse","loggingDebug","console","log","block","unixStamp","Date","time","getTime","globalEventBus","publish","summary","summary24h","newMempool","registerEvtHandler","e","args","arguments","apply","load","definitionsFromContext","document","addEventListener","querySelectorAll","el","classList","remove","localStorage","getItem","logDebug","yes","setItem","createWebSocket","location","on","Notification","permission","newBlockNtfn","body","concat","height","icon","notifyError","close","_asyncToGenerator","_defineProperties","target","props","descriptor","_toPropertyKey","input","prim","toPrimitive","res","hint","String","_toPrimitive","_setPrototypeOf","o","p","bind","_getPrototypeOf","Dygraph","commonOptions","typesGraphOptions","amountFlowGraphOptions","balanceGraphOptions","blockDuration","formatter","data","xHTML","humanize","date","x","html","this","getLabels","series","map","color","y","l","labelHTML","dashHTML","customizedFormatter","ctrl","_default","_Controller","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_fetchGraphData","_fetchTable","_fetchTableWithPeriod","_hideQRCode","_showQRCode","_connect","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","instance","_classCallCheck","settings","cdata","retrievedData","ajaxing","qrCode","requestedChart","zoomCallback","_zoomCallback","drawCallback","_drawCallback","lastEnd","confirmMempoolTxs","_confirmMempoolTxs","bindElements","bindEvents","query","TurboQuery","nullTemplate","assign","dcrAddress","get","paginationParams","offset","parseInt","count","balance","update","setChartType","flow","setFlowChecks","zoom","zoomButtons","button","bin","getBin","chart","validChartType","chartType","getDefault","initializeChart","drawGraph","graph","destroy","off","digitsAfterDecimal","showRangeSelector","rangeSelectorHeight","rangeSelectorForegroundStrokeColor","rangeSelectorBackgroundStrokeColor","legend","fillAlpha","labelsKMB","labelsUTC","stepPlot","rangeSelectorPlotFillColor","rangeSelectorPlotFillGradientColor","rangeSelectorPlotStrokeColor","rangeSelectorPlotLineWidth","labels","colors","ylabel","visibility","legendFormatter","stackedGraph","fillGraph","plotter","Plotters","linePlotter","fillPlotter","fetchGraphData","flowBoxes","flowTarget","pageSizeOptions","hasPagesizeTarget","pagesizeTarget","zoomTarget","binputs","intervalTarget","paginatorTargets","link","preventDefault","_callee2","QRCode","qrCodeImg","_context2","qrboxTarget","fadeIn","qrimgTarget","toDataURL","errorCorrectionLevel","scale","margin","innerHTML","resize","qriconTarget","add","_callee3","_context3","style","opacity","animationFrame","txType","root","fetchTableWithPeriod","txnType","pageSize","toPage","url","href","parser","URL","searchParams","pagesize","txntype","direction","params","requestedOffset","_callee4","requestCount","tableResponse","_context4","listLoaderTarget","requestJSON","makeTableUrl","tableTarget","dompurify","n","tx_count","replace","setPageability","indexOf","mergedMsgTarget","tablePaginationParams","pages","setTablePaginationLinks","_x","_x2","_x3","_x4","_callee5","_context5","_x5","_x6","_x7","rowMax","paginationheaderTarget","pagebuttonsTarget","setAbility","pageplusTarget","pageminusTarget","option","disabled","text","Math","min","suffix","rangeEnd","Number","rangeTarget","toLocaleString","processedData","otherOptions","chartTarget","_objectSpread","tablePagesLink","tablePaginationTarget","txCount","links","d","active","str","join","noconfirmsTarget","validGraphInterval","Zoom","decode","setZoom","end","_callee6","cacheKey","chartKey","graphDataResponse","_context6","chartLoaderTarget","popChartCache","processData","_x8","_x9","isEmpty","noDataAvailable","binSize","mapValue","sentRtx","receivedRtx","tickets","votes","revokeTx","padPoints","txTypesFunc","processed","flowData","balanceData","v","net","netReceived","netSent","received","amountFlowProcessor","options","sizedBarPlotter","createGraph","updateOptions","file","updateFlow","xRange","xAxisExtremes","validateZoom","optionsTarget","namedItem","interval","activeBin","b","setButtonVisibility","validate","activeZoomKey","setGraphQuery","srcElement","nodeName","setIntervalButton","bitmap","idx","setVisibility","box","checked","duration","activeZoomDuration","dateWindow","encode","view","viewTargets","zoomKey","first","_ctrl$graph$xAxisRang2","xAxisRange","setSelectedZoom","mapKey","chartDuration","buttonSet","dataset","fixed","blockData","_this","hasPendingTarget","pendingTargets","row","txInBlock","txid","confirms","querySelector","textContent","confirmationBlockHeight","age","timeSince","addressTarget","txnCountTarget","txnCount","formatted","setTxnCountText","numUnconfirmedTargets","tr","td","hashTargets","btn","expandoTarget","contains","bigchartTarget","appendChild","chartboxTarget","fullscreenTarget","putChartBack","littlechartTarget","activeButtons","getElementsByClassName","base10","txntypeTarget","selectedOptions","selected","Controller","chartLayout","total","reduce","percentage","toFixed","yHTML","labelsSeparateLines","cumulativeVoteChoicesData","Array","abstain","no","voteChoicesByBlockData","emptydata","cumulativeVoteChoicesChart","voteChoicesByBlockChart","agendaResponse","agendaId","element","agendaName","description","agendaNameTarget","changeToHTMLTag","extendDescriptionTarget","drawCharts","by_time","by_height","inText","substring","linkStart","linkEnd","htmlLink","drawChart","cumulativeVoteChoicesTarget","title","voteChoicesByBlockTarget","barChartPlotter","minerMeter","voterMeter","meters","opts","darkMode","hasMinerMeterTarget","ProgressMeter","minerMeterTarget","hasVoterMeterTarget","voterMeterTarget","meterDiv","VoteMeter","setNightMode","_setNightMode","meter","setDarkMode","nightMode","amountOptions","txCountOptions","isSearching","amountFormatter","_clearSearch","_clearSearchState","swapsData","pair","status","mode","getElementById","pairTarget","statusTarget","search","searchInputTarget","searchBtnTarget","clearSearchBtnTarget","fetchTable","resetPageSizeOptions","processDecredBlock","_processDecredSummaryInfo","processBtcBlock","_processBtcBlock","processLtcBlock","_processLtcBlock","summaryData","summary_info","updateAtomicSwapsFromSocket","GroupSwaps","swapsTotalAmount","swapsTotalContract","refundCount","extra","swapList","totalAmount","totalContracts","totalAmountTarget","decimalParts","toAmountFloat","totalContractsTarget","parseFloat","refundCountTarget","redeemCountTarget","insertedGroupTx","newSwaps","includes","groupTx","swap","handlerUpdateTable","keyCode","searchAtomicSwapContract","resHtml","hasTargetToken","targetToken","toUpperCase","isRefund","toAmountFloatDisplay","source","timeDuration","timeToDuration","contracts","contract","hashElide","timeDisp","results","fees","lockTimeDisp","clearSearchState","redeemRadioTarget","refundRadioTarget","createGridDataView","createDataTableView","amountData","txCountData","redeemAmount","refundAmount","redeemCount","amount","txcount","amountTxCountProcessor","swaps_list","currentcount","current_count","dispCount","topTablePaginationTarget","paginationHTML","dcrPrice","hashrate","tpSize","tpValue","tpPrice","graphData","currentPoint","coinSupply","digitformat","decimalPlaces","noComma","minimumFractionDigits","maximumFractionDigits","endsWith","toString","cutFrom","substr","removeTrailingZeros","rateCalculation","pow","deviceList","units","power","cost","externalAttackType","dashLabels","nodes","yVals","isVisible","precession","nightModeOptions","nightModeOn","rangeSelectorAlpha","gridLineColor","defaultSettings","attack_time","target_pow","kwh_rate","other_costs","target_pos","price","device","attack_type","attackPeriodTarget","targetPowTarget","kwhRateTarget","otherCostsTarget","setAllInputs","targetPosTargets","priceDCRTarget","setDevice","attackTypeTarget","attackPercentTarget","targetPosTarget","setDevicesDesc","updateSliderData","doZoomY_","lowY","highY","plotGraph","processNightMode","chartsView","that","ratioTable","Map","set","xlabel","axes","axisLabelWidth","highlightSeriesOpts","strokeWidth","hideOverlayOnMouseOut","labelsDiv","labelsTarget","logscale","interactionModel","click","highlightCallback","graphTarget","setAnnotations","shortText","setActivePoint","_ref","defaults","k","preserveTargetPow","targetPercentage","currentTarget","previousKey","previousValue","gap","abs","preGap","selectedDevice","selectedAttackType","preserveTargetPoS","updateQueryString","deviceTarget","deviceDescTargets","selectedVal","setOption","deviceTargets","getRowForX","setSelection","ticketPercentage","targetHashRate","powPercentage","setAllValues","internalHashTargets","newHashRateTargets","additionalHashRateTargets","projectedPriceDivTarget","display","internalAttackTextTarget","internalAttackPosTextTarget","showAll","externalAttackTextTargets","externalAttackPosTextTarget","hideAll","updateTargetHashRate","ticketsTarget","internalAttackPosTextTargets","externalAttackPosTextTargets","calculate","disableHashRateUpdate","ticketAttackSize","DCRNeed","deviceInfo","deviceCount","ceil","totalDeviceCost","totalKwh","totalElectricity","extraCost","totalPow","newTicketPoolValueTargets","additionalDcrTargets","ticketPoolAttackTargets","projectedTicketPrice","projectedTicketPriceIncreaseTarget","projectedTicketPriceSignTarget","ticketPoolValueTarget","totalDCRPos","totalPos","timeStr","hourStr","timeHourStr","devicePronounStr","deviceSuffixStr","ticketPoolSizeLabelTarget","commaWithDecimal","actualHashRateTargets","ticketPriceTarget","targetHashRateTargets","durationUnitTarget","durationLongDescTargets","countDeviceTargets","devicePronounTarget","deviceSuffixTarget","deviceNameTargets","totalDeviceCostTargets","totalKwhTargets","totalElectricityTargets","otherCostsValueTargets","totalPowTargets","ticketSizeAttackTargets","totalDCRPosTargets","totalPosTargets","ticketPoolValueTargets","ticketPoolSizeTargets","blockHeightTarget","totalTarget","projectedTicketPriceTarget","attackPosPercentAmountLabelTarget","totalDCRPosLabelTargets","dcrPriceLabelTargets","showPosCostWarning","targets","totalDCRInCirculation","coinSupplyTarget","totalAttackCostContainerTarget","cssText","attackNotPossibleWrapperDivTargets","setupTooltips","tooltipTargets","tooltipElement","newContent","voteValid","vin","vout","module","tippy","allowTitleHTML","animation","arrow","createPopperInstanceOnInit","dynamicTitle","performance","placement","size","sticky","theme","_arrayLikeToArray","arr","len","arr2","conversionRate","newBlockHtmlElement","_step","_iterator","allowArrayLike","it","isArray","minLen","from","test","_unsupportedIterableToArray","F","s","_e","f","normalCompletion","didErr","step","_e2","_createForOfIteratorHelper","Transactions","tx","Coinbase","TxID","subsidy","fee","voteCount","pos","fund","developer","dev","backgroundColorRelativeToVotes","makeRewardsElement","Subsidy","MiningFee","Votes","voteLen","voteElements","vote","Total","VoteValid","makeVoteElements","revocations","blockHref","ticketElements","revCount","ticketCount","ticket","makeTxElement","splice","revocationElements","revocation","ticketsAndRevocationElements","makeTicketAndRevocationElements","Tickets","Revocations","Height","transactions","transactionElements","makeTransactionElements","className","appendFlexGrow","round","VoutCount","VinCount","_initialize","vsdisp","processBlock","_processBlock","pageOffset","initTableColumn","updateVsHrefLink","_this2","navLinkTargets","navLinkTarget","txColHeaderTarget","voteColHeaderTarget","ticketColHeaderTarget","revColHeaderTarget","vsBlocksHeaderTarget","vsDescriptionTarget","txColDataTargets","txColDataTarget","voteColDataTargets","voteColDataTarget","ticketColDataTargets","ticketColDataTarget","revColDataTargets","revColDataTarget","vsSimulDataTargets","vsSimulDataTarget","txsTargets","div","childeElementCount","hasTableTarget","rows","lastHeight","removeChild","newRow","createElement","linkClass","tds","newTd","dataType","timeTarget","bytes","threeSigFigs","TotalSent","createNewVsBlock","insertBefore","firstChild","Tx","filter","Time","Revs","Url","q","pairList","pairColor","_getCsvContent","_fetchCsvDataFromUrl","selectorOptions","dailySelectorOptions","monthlyData","weeklyData","sumOfRow","lastDayData","lastDayArr","lastMonthName","lastMonthData","prevMonthData","prevMonthArr","prevMonthName","last90daysSum","_i","itemData","last6MonthsSum","_i2","_itemData","lastYearSum","_i3","_itemData2","curPercentArr","curLabels","curColors","prevPercentArr","prevLabels","prevColors","curBreakdownChartData","prevBreakdownChartData","pieLayout","pageLoaderTarget","hasData","chartData","weekChartData","dailyChartData","buttons","stepmode","label","layout","barmode","showlegend","xaxis","rangeselector","rangeslider","visible","orientation","xanchor","traceorder","dailyLayout","fetchCsvDataFromUrl","dailyData","groupMonthlyData","groupWeeklyData","sumVolOfBwRow","split","getMonthName","todayStrTarget","todayDataTarget","monthlyStrTarget","curMonthBreakdownTarget","currentMonthDataTarget","prevMonthStrTarget","prevMonthBreakdownTarget","prevMonthDataTarget","last90DaysDataTarget","last6MonthsDataTarget","lastYearDataTarget","index","hasDataBool","item","xLabel","yLabel","sum","itemValue","marker","width","xWeekLabel","yWeekLabel","weeklySum","xDailyLabel","yDailyLabel","dailySum","curValueFloat","prevValueFloat","sort","a","Plotly","monthNumStr","getMonthNumber","monthStr","startsWith","replaceAll","csvData","jsonObject","getCsvContent","trim","$","ajax","records","lastTime","curWeekData","curWeekDataNum","dateRec","weekDayNum","getDay","recordFloat","dataNum","_loop","nextDayInt","setDate","getDate","nextDay","currentMonth","currentYear","curMonthData","dateArray","curFloat","resItem","floatValue","chainType","selectedChart","premine","stakeValHeight","stakeShare","baseSubsidy","subsidyInterval","subsidyExponent","avgBlockTime","yFormatter","legendEntry","legendMarker","legendElement","aDay","atomsToDCR","windowScales","hybridScales","lineScales","modeScales","globalChainType","yValueRanges","hashrateUnits","usesWindowUnits","usesHybridUnits","isModeEnabled","intComma","addLegendEntryFmt","fmt","defaultYFormatter","addLegendEntry","dygraph","getOption","IN_PLACE","FORBID_TAGS","zip2D","ys","yMult","axis","zipIvY","heights","zipHvY","h","times","t","zipTvY","mapDygraphOptions","labelsVal","isDrawPoint","labelsMG","labelsMG2","merge","drawPoints","labelsKMG2","_validateZoom","_selectChart","supplyPage","lm","le","isHomepage","legendMarkerTarget","removeAttribute","node","cloneNode","legendEntryTarget","limits","lastZoom","drawInitialGraph","y2","pointSize","highlightCircleSize","y2label","axisLineColor","chartsViewTarget","chartSelectTarget","setAxis","setScale","setBin","setMode","ogLegendGenerator","Plugins","Legend","generateLegendHTML","g","pts","w","legendIndex","selectChart","chartName","gOptions","valueRange","inflation","diff","winSize","zipWindowHvY","powDiffFunc","supply","xFunc","hFunc","yMax","addDough","newHeight","floor","supplies","isHeightAxis","dailyBlocks","lastPt","xx","xIncrement","circulationFunc","y3label","strokePattern","change","predicted","unminted","rate","log10","baseURL","rawDataURLTarget","plotter_","clear","supportedYRange","yAxisRanges","selection","chartResponse","chartNameTarget","getChartName","chartTitleNameTarget","customLimits","chartWrapperTarget","scaleSelectorTarget","modeSelectorTarget","selectedBin","selectedAxis","binSizeTargets","setActiveOptionBtn","axisOptionTargets","chartValue","oldLimits","selectedZoom","project","isTimeAxis","ex","zoomOptionTargets","axesData","origYRange","newYRange","axesIndexes","isEqual","y1","axesToRestoreYRange","_this$chartsView$xAxi2","scaleTypeTargets","modeOptionTargets","opt","optTargets","li","selectedOption","_mempoolSocketInit","rateStr","_mempoolJS","websocket","wsHostName","exchangeRate","t0","processXcUpdate","_processXcUpdate","mempoolJS","hostname","bitcoin","initClient","mempoolSocketInit","xc","updater","chain_type","exchangeRateTarget","twoDecimals","hash","blockSizeTarget","blockTotalTarget","blockTimeTarget","blocktime_unix","totalTransactionsTarget","total_transactions","coin_value_supply","exchangeValue","convertedSupplyTarget","mempoolInfo","txCountTarget","totalFeeTarget","total_fee","totalSize","ltcTotalFee","minFeeRatevB","MAX_VALUE","maxFeeRatevB","memBlock","blockSize","totalFees","feeRange","feevB","minFeeRateTarget","maxFeeRateTarget","totalSizeTarget","extras","txOutCountTarget","totalOutputs","totalSentTarget","totalOutputAmt","blocks","txOutCount","totalSent","da","diffChange","difficultyChange","prevRetarget","previousRetarget","remainingBlocks","timeRemaining","remainingTime","timeAvg","diffChangeTarget","prevRetargetTarget","remainingBlocksTarget","timeRemaningTarget","setAttribute","blockTimeAvgTarget","_slicedToArray","_arrayWithHoles","_s","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","hidden","visibilityChange","candlestick","orders","depth","history","volume","aggregatedKey","minuteMap","PIPI","PI","prettyDurations","printNames","dcrdex","btc_coinex","msHidden","webkitHidden","availableCandlesticks","availableDepths","focused","aggStacking","refreshAvailable","screenIsBig","innerWidth","validDepthExchange","token","usesOrderbook","usesCandlesticks","requestCounter","responseCache","hasCache","expiration","btcPrice","fiatCode","lightStroke","darkStroke","chartStroke","conversionFactor","gridColor","binList","xcColors","colorNumerator","colorDenominator","btcPairUses","exchangeHues","binance","bittrex","poloniex","hsl","useBTCPair","exchange","useUSDPair","generateHue","hue","getHue","yAxisLabelWidth","isMobile","getAxisWidth","getYAxisLabel","commonChartOpts","underlayCallback","ctx","area","lineWidth","strokeStyle","strokeRect","foregroundStrokeColor","chartResetOpts","xRangePad","yRangePad","convertedThreeSigFigs","convertedEightDecimals","orderbookStats","bids","asks","bidEdge","askEdge","midGap","lowCut","highCut","dummyOrderbook","outliers","sizedArray","rangedPts","cutoff","pt","translateDepthSide","sorted","accumulator","quantity","translateDepthPoint","volumes","vol","translateAggregatedDepthSide","xcCount","zeroWidth","xcAccumulator","zeros","needsDummyPoint","translateOrderbookSide","translateAggregatedOrderbookSide","sumPt","processOrderbook","response","translator","tokens","warn","stats","buys","dupes","sells","sellIdx","sellPrice","buyPrice","buy","sell","findAggregateDupes","candlestickPlotter","seriesIndex","plotArea","drawingContext","sets","allSeriesPoints","open","high","low","barWidth","_sets","opens","closes","highs","lows","centerX","topY","bottomY","beginPath","moveTo","lineTo","stroke","top","yval","fillStyle","left","fillRect","drawOrderPt","drawPt","orderPtSize","bordered","arc","fill","makePt","canvasXY","orderPlotter","_e$dygraph$getColors2","getColors","buyColor","sellColor","_e$allSeriesPoints","stickZoom","orderZoom","samePair","exchangeStateMap","greekCapDelta","fromCharCode","depthPlotter","setName","dupeIdx","dupe","points","_loop4","misplacedVal","acc","subRatio","maxyval","y_stacked","yval_stacked","canvasy","fixAggregateStacking","dark","big","mg","toDomCoords","fontSize","textAlign","textBaseline","font","boxColor","midGapPrice","deltaPctTxt","fiatGapTxt","btcGapTxt","boxW","txt","measureText","rowHeight","rowPad","boxPad","ptSize","legW","boxH","rect","dims","fillText","write","cornerX","save","restore","drawLine","depthLegendPlotter","_fetchChart","_changePair","_fetchInitialData","_initMutilchainExchangeStates","hasBinance","defaultOption","setExchaneLinks","exchangesButtons","exchangesTarget","xcs","initMutilchainExchangeStates","processors","processOrders","processCandlesticks","processHistory","xchistory","processXcsHistory","processDepth","processVolume","xcvolume","processXcsVolume","legendTarget","converted","conversionTarget","factor","code","binButtons","binTarget","lastUrl","exchangeOptions","sticks","bins","chartOptions","pairSelectTarget","stack","handlerExchangesDisplay","setButtons","setExchangeName","_resize","tabVis","_tabVis","_processNightMode","setNameDisplay","fetchInitialData","chainState","exchanges","exchangeLinks","btc_binance","dragonex","huobi","kucoin","gemini","coinex","chainTypeSelectedTargets","cTypeTarget","fetchChart","volumnedExchanges","selectOptions","exchangeBefore","getSelectedExchanges","selectedExchange","State","Token","candlesticks","getExchangeDispName","exchangeBtnAreaTarget","validExchanges","isValidExchange","setActiveExchanges","getFirstExchangeButton","changeExchangeSetting","selectedExchanges","exBtn","btnGroup","firstSetted","lastSetted","lastBtn","activeExchanges","exchangeBtn","removeEventListener","xcNameTarget","refreshChart","dummyGraph","model","mousedown","mouseup","isPanning","initializeMouseDown","startPan","endPan","range","mousemove","movePan","touchstart","touchmove","touchend","spread","setZoomPct","isBTCPair","fiatLabelTarget","reorderExchanges","xcRowTargets","xcRow","activeExchange","afterActiveExchange","activeEx","containExchange","exc","firstBtn","isRefresh","thisRequest","oldZoom","xcResponseMap","xcList","itemXc","xcUrl","xcResponse","canvas","setLastBin","ageSpanTarget","ageTarget","getContext","clearRect","resetZoom","availBins","setBinSelection","upperFirstCase","halfDuration","stick","setMinutes","getMinutes","halfBin","calcStickWindow","axisLabelFormatter","dateAxisLabelFormatter","valueFormatter","responseMap","timeArray","timeDataMap","_step$value","setTime","setHours","avg","some","tmpTime","dataArr","timeInt","has","time1","time2","resArray","dataArray","hasZero","_toConsumableArray","_step2","_iterator2","_loop2","_step2$value","processAggregateDepth","_step4","sums","_iterator4","aggregateSums","idxKey","reorder","side","_step5","_iterator5","reorderAggregateData","getHistoryChartAvailableBins","itemBins","lastExchangeBtn","lastExchangeIndex","pairSelectorAreaTarget","exchangeindex","xsList","aggOptionTarget","lastBinIndex","firstBinIndex","indexOfBin","depthDisabled","depthOnlyTargets","aggStackTarget","handlerRadiusForBtnGroup","justifyBins","parentNode","handlerExchange","cLabel","xcLogoTarget","actionsTarget","getXcLogo","prettyName","capitalize","linkTarget","_loop3","fiat","_ret","pct","_this$graph$xAxisExtr2","max","xcIndexTargets","span","getExchangeRow","btc_price","fmtPrice","priceTarget","aggRow","_step3","_iterator3","totalFeesTarget","lastBlockSizeTarget","blockHeight","bestBlockTarget","bestBlockTimeTarget","timestamp","inner","txHash","totalOut","transListTarget","blockTargets","blockTarget","id","exist","firstBlockHeight","mempoolBlock","meminnerHtml","TotalSentSats","BlockReward","FeesSats","TotalInputs","TotalOutputs","theFirst","boxTarget","prepend","mempoolBox","memBlockReward","memFeeSpan","memTxCount","memInputCount","memOutputCount","getAttribute","memTotalSentTarget","inputsCount","outputsCount","memRewardBlockOuter","outerHTML","hasChange","totalInputs","txInCount","tempTotalSent","mempoolInnerTarget","theKid","ticketPoolSizeTarget","windowSize","rawCoinSupply","rawPoolValue","rangeUse","multiYAxisChart","chainworkUnits","rangeOption","chainwork","hasMultipleVisibility","useRange","withBigUnits","customYFormatter","hashrateTimePlotter","hashrateLegendPlotter","hashrateBlockPlotter","difficultyTimePlotter","difficultyBlockPlotter","midGapValue","startY","lines","direct","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","line","lineToX","zipWindowTvY","setSelectedChart","setRange","_this3","isHeightBlock","zs","zMult","zipWindowHvYZ","ticketPriceFunc","getTargetsChecked","ticketsPriceTargets","ticketsPurchaseTargets","out","poolSizeFunc","connectSeparatedPoints","circulation","poolval","percentStakedFunc","anonymitySet","anonymitySetTargets","mixed","mixedPercentage","anonymitySetFunc","work","missed","missedVotesFunc","_this4","getSelectedChart","hideMultiTargets","scaleSelectorTargets","showMultiTargets","vSelectorTargets","modeSelectorTargets","updateVSelector","selectedRange","rangeSelectorTargets","binSelectorTargets","exitCond","y1label","yAxis","yLabelWidth","y2Axis","y2LabelWidth","rangeOptionTargets","showWrapper","vSelectorItemTargets","show","charts","setVisibilityFromSettings","setTargetsChecked","ticketPriceChecked","ticketPurchaseChecked","selectedNormalOption","chartSelectTargets","select","copyIcon","controller","action","alertArea","clickEvent","navigator","clipboard","writeText","alertCopy","reason","originUrl","origin","toggleSun","indicatorTarget","updateConnectionStatus","evt","debug","msg","connected","requestPermission","FinanceReportController","_initReportTimeRange","timeRangeRes","reportMinYear","minYear","reportMinMonth","minMonth","reportMaxYear","maxYear","reportMaxMonth","maxMonth","createEvent","domainList","tokenList","ownerList","responseData","_FinanceReportControl","_yearMonthCalculate","_proposalCalculate","_initScrollerForTable","politeiaUrl","stype","order","showNoData","noDataTarget","reportAreaTarget","prevNextButtonsTarget","yearMonthCalculate","initScrollerForTable","proposalTopSummaryTarget","totalSpanRowTarget","proposalCalculate","$scroller","$container","$wrapper","ignoreScrollEvent","scrollbarPositioner","scrollTop","scrollingElement","wrapperTop","offsetTop","wrapperBottom","offsetHeight","innerHeight","bottom","requestAnimationFrame","cancelAnimationFrame","scrollLeft","tableWidthStr","css","tableWidth","parentContainerWidthStr","addClass","removeClass","currentValue","itemIndex","timeArr","year","month","handlerNextPrevButton","summaryReportTarget","createSummaryTable","proposalInfos","handlerScrollerTable","otherProposalInfos","proposalReportTarget","createProposalDetailReport","domainDisp","proposalName","remainingStr","yearBreadcumbTarget","currentDetailTarget","detailReportTitleTarget","toUpReportTarget","nextBtnTarget","prevBtnTarget","monthlyAreaTarget","yearlyAreaTarget","summaryAreaTarget","summaryTableTitleTarget","setDomainGeneralInfo","toVoteTarget","toDiscussionTarget","proposalInfo","proposalSumCardTarget","totalRemaining","formatToLocalString","proposalSpanRowTarget","author","domain","budget","totalSpent","yearlyReportTarget","createMonthYearTable","monthlyReportTarget","hideScroller","totalBudget","proposal","handlerList","indexOfNow","prevBtnShow","nextBtnShow","hideAuthor","hideDomain","thead","tbody","bodyList","totalAllSpent","summaryList","sortSummary","lengthInDays","getLengthInDay","monthlyAverage","yearDataMap","yearDataDcrMap","yearArr","monthData","monthArr","expense","expenseDcr","timeInput","splitChar","timeParam","handlerData","getYearDataFromMonthData","breakTable","createTableDetailForMonthYear","allTable","stepNum","dataMonth","isFuture","timeYearMonth","getYearMonthArray","nowDate","getUTCFullYear","getUTCMonth","getFullTimeParam","actualExpense","actualExpenseDcr","monthYearDisplay","reportType","myArr","monthNumber","initReportTimeRange","handlerYearMonthNextPrevButton","setMonth","proposalAreaTarget","proposalTotal","handlerSummaryArea","createDomainsSummaryTable","createYearMonthTopSummary","monthlyResultData","expendiduteValueTarget","reportDetail","totalSpentDCR","report","spentEst","totalSpentDcr","proposalSpentAreaTarget","proposalSpentTarget","treasurySpentAreaTarget","unaccountedValueAreaTarget","combinedUSD","treasurySummary","outvalueUSD","legacySummary","combinedDCR","outvalue","treasurySpentTarget","deltaUSD","deltaDCR","unaccountedValueTarget","domainMap","detail","invalue","innerHtml","invalueUSD","yearMonthInfoTableTarget","domainDataMap","getDomainsSummaryData","totalDCR","totalUSD","valueDCR","valueUSD","domainSummaryAreaTarget","domainSummaryTableTarget","proposalSort","yearMonthProposalListUpdate","proposalDetailsListUpdate","totalExpense","detailData","existData","sortSummaryByDomain","alength","blength","aData","bData","domainChartZoom","treasuryChartZoom","domainChartBin","treasuryChartBin","domainChartFlow","treasuryChartFlow","combinedChartZoom","combinedChartBin","combinedChartFlow","adminChartZoom","adminChartBin","adminChartFlow","detailMonthlySummary","yearList","responseDetailData","mainReportSettingsState","detailReportSettingsState","domainGraphOptions","proposalResponse","treasuryResponse","domainChartData","domainChartYearData","domainYearData","combinedChartData","combinedChartYearData","combinedData","combinedAvgData","combinedYearData","combineBalanceMap","combinedYearlyBalanceMap","treasuryBalanceMap","treasuryYearlyBalanceMap","adminBalanceMap","adminYearlyBalanceMap","treasurySummaryMap","redrawChart","responseDetailCache","requestDetailCounter","mainReportInitialized","proposalNote","treasuryNote","domainChartFormatter","_calculate","_proposalTypeChange","_reportTypeChange","_treasuryTypeChange","_initData","_initMainFinancialReport","_connectData","isTreasuryReport","getTreasuryZoomStatus","getTreasuryBinStatus","getTreasuryFlowStatus","isDomainType","isNullValue","currentTType","ttype","changedTType","setTreasuryZoomStatus","setTreasuryBinStatus","setTreasuryFlowStatus","treasuryUrl","legacyUrl","treasuryRes","legacyRes","devAddress","combinedDataHandler","t1","pgroup","combinedDataMap","dateTime","dateTimeStr","getStringFromDate","aTime","bTime","timeInsertArr","receivedArr","sentArr","netArr","getFullYear","getMonth","day","marketing","development","domainChartProcessor","handlerBinSelectorWhenChange","treasuryChart","handlerAllowChartSelector","handlerZoomDisabledBySelector","disabledTypes","handlerGroupDisabledBySelector","cintervalTarget","tsort","psort","ptype","usd","dtype","dtime","dtoken","dname","dstype","dorder","tavg","dinterval","initReportDetailData","connectData","initMainFinancialReport","tooltipElements","proposalTSort","treasuryTSort","isMonthDisplay","useMonthAvg","initData","isProposalMonthReport","isAuthorMonthGroup","popEl","isClickInside","tooltiptext","selectedYear","selectedMonth","yearOptions","topYearSelectTarget","topMonthSelectTarget","monthOptions","getMonthDisplay","timeIntArr","getDetailYearMonth","hidePrevBtn","hideNextBtn","isYearDetailReport","isAllYearTimeReport","isMonthDetailReport","reportTypeTargets","rTypeTarget","viewModeTarget","detailReportAreaTarget","mainReportTopAreaTarget","reportParentContainerTarget","proposalSelectTypeTarget","selectTreasuryTypeTarget","yearMonthSelectorTarget","now","initYearMonthSelector","noDetailDataTarget","ttypeTargets","ttypeTarget","proposalTypeTargets","proposalTypeTarget","searchProposal","isMain","reportDescriptionTarget","_callee7","_context7","_callee8","_context8","parseSettingsState","parseSettingsFromState","_callee9","_context9","isAuthorGroup","dintervalTargets","dintervalTarget","intervalTargets","treasuryToggleAreaTarget","createTreasuryTable","treasuryChartTarget","notChartZoom","isNotChartZoom","currentBalanceAreaTarget","chartDataTarget","balanceOptionTarget","activeProposalSwitchAreaTarget","isSummaryReport","isAuthorListGroup","outgoingExpTarget","groupByTarget","useMonthAvgToggleTarget","treasuryChartTitleTarget","treasuryTypeTitleTarget","typeSelectorTarget","weekGroupBtnTarget","dayGroupBtnTarget","weekZoomBtnTarget","dayZoomBtnTarget","sentRadioLabelTarget","receivedRadioLabelTarget","netSelectRadioTarget","reportTarget","createTableContent","widthFinal","searchBoxTarget","createProposalTable","createDomainTable","createAuthorTable","createMonthAuthorTable","createReportTable","sortByType","dataMap","monthInt","monthObj","difference","differenceUSD","outEstimate","outEstimateUsd","monthPrice","taddValue","taddValueUSD","creditLink","debitLink","balanceUSD","tempResultItem","allSpent","allBudget","proposalList","allData","domainData","expenseDCR","usdRate","treasurySpent","treasurySpentDCR","allDataItem","domainDataItem","getProposalYearlyData","nodataTarget","headList","proposalTokenMap","j","tindex","authorReport","getAuthorExpense","authorData","tmp","yearOption","authorList","sortSummaryByBudget","sortAuthorByTotalReceived","sortAuthorByRemaining","sortAuthorByProposalNum","sortSummaryByName","proposals","totalReceived","domainDataList","unaccounted","aDomainData","bDomainData","treasuryList","sortSummaryByAuthor","sortSummaryBySpent","sortSummaryByRemaining","sortSummaryByDays","sortSummaryByAvg","sortSummaryByDate","isStart","date1","date2","lengtha","lengthb","avga","avgb","array","index1","index2","temp","totalProposals","sortAuthorData","treasuryDataMap","getTreasuryMonthSpentMap","getTreasuryDomainCombined","futureLabelTarget","row2","domainsRateColumn","sortDomains","unaccountedTotal","unaccountedDcrTotal","totalAllDcr","totalAllValue","totalDevAll","totalDevAllDCR","domainDCRTotalMap","rowTotal","rowTotalDCR","compareDataTime","dcrValue","dcrDisp","devTotal","devTotalDCR","unaccountedDcr","unaccountedDcrDisp","unaccountedPercent","isZeroNumber","totalDcrDisp","rateTotalStr","unaccountedTotalPercent","expData","expDcrData","rateTotal","number","tooltipText","textElement","reportData","monthFormat","isCombinedReport","treasury","tmpTreasury","treasuryData","getTreasuryDataWithType","handlerDataForCombinedChart","getTreasuryYearlyData","yearSelectTitleTarget","yearSelectTarget","initYearSelectOptions","tmpData","initLegacyBalanceMap","initTreasuryBalanceMap","initCombinedBalanceMap","specialTreasuryTarget","treasuryTypeRateTarget","createTreasuryLegacyTableContent","_this5","spentMap","summaryMap","nowCompare","lowestArr","lowestYear","lowestMonth","lowestMonthStr","tempBalance","legacy","treasuryInvalue","legacyOutValue","treasuryInvalueUSD","legacyOutValueUSD","tmpLegacy","aTimeCompare","getTimeCompare","bTimeCompare","balanceTotal","dataItem","mainResult","legacyData","tempHasDataBalancemap","currentBalance","tempBalanceMap","combined","tmpCombineBalanceMap","timStr","aTimeSplit","_this6","isLegacy","isCombined","isDecentralized","usdDisp","lastTreasuryItem","lastAdminItem","incomeTotal","outTotal","estimateOutTotal","incomeUSDTotal","outUSDTotal","estimateOutUSDTotal","lastBalance","lastBalanceUSD","unaccountedUSDTotal","lastMonth","treasuryBalanceCardTarget","treasuryBalanceDisplayTarget","treasuryBalanceRateTarget","subTreasuryTitleTarget","balanceMap","tresury","legacyUSD","treasuryUSD","lastLegacyRate","lastTreasuryRate","treasuryLegacyPercentTarget","treasuryLegacyRateTarget","decentralizedDataTarget","decentralizedDataRateTarget","decentralizedTitleTarget","adminDataTarget","adminDataRateTarget","adminTitleTarget","sortTreasury","existTreasury","netNegative","incomDisplay","incomUSDDisplay","outcomeDisplay","outcomeUSDDisplay","differenceDisplay","differenceUSDDisplay","balanceDisplay","balanceUSDDisplay","incomeHref","outcomeHref","devSentPercent","unaccountedUSD","totalIncomDisplay","totalIncomUSDDisplay","totalOutcomeDisplay","totalOutcomeUSDDisplay","totalEstimateOutgoing","totalEstimateOutUSDgoing","lastBalanceDisplay","lastBalanceUSDDisplay","totalBalanceNegative","totalDevSentPercent","pResponse","treasurySum","treasuryYearlyData","treasuryMonthAvgMap","yearData","numOfMonth","countMonthOnYearData","tSummary","yearStr","tData","tResponse","legacySum","legacyYearlyData","legacyMonthAvgMap","taddMonthValueMap","taddYearValueMap","devSpentPercent","tadd","lSummary","_callee10","haveResponseData","_this7","_context10","setReportTitle","colorNoteRowTarget","colorLabelTarget","colorDescriptionTarget","domainFutureRowTarget","nameMatrixSwitchTarget","disabledGroupButton","getTreasuryResponse","getProposalResponse","handlerDomainYearlyData","handlerDataForDomainChart","enabledGroupButton","getApiUrlByType","getDataForCombinedChart","spentArr","getDataOfDomainChart","marketingArr","developmentArr","virtualNetArr","hasMarketing","hasDevelopment","switchCheck","idArr","createDetailSummaryTable","otherProposalSummaryTarget","sortDetailSummary","handlerDataInput","_handlerData","detailGroupByTarget","detailMonthlyDescTarget","spentUSD","spentDCR","actualSpentUSD","actualSpentDCR","detailMonthly","_callee11","_context11","proposalDetailSort","yearTotalData","spentYears","spentYear","countHasData","yData","spend","sortDetailSummaryByDomain","footerBarTarget","selectedType","decredChartOpts","mutilchainChartOpts","line1","line2","line3","line4","line5","isScaleDisabled","_chainTypeChange","zoomSelectorTarget","binSelectorTarget","scaleButtons","modeButtons","ticketsPriceTarget","ticketsPurchaseTarget","anonymitySetTarget","setSelectScale","setSelectZoom","setSelectBin","setSelectMode","vSelectorTarget","reinitChartType","getDecredChartOptsHtml","getMutilchainChartOptsHtml","rangeSelectorTarget","setActiveToggleBtn","hasChart","chartOpts","selectedButtons","btnTargets","makeMempoolBlock","Fees","_setAvgBlockTime","pageIndex","page","URLSearchParams","content","thumbs","snapPageContents","navBarHeight","newHomeMenuHeight","homeThumbnailHeight","viewHeight","contentHeights","updateContentHeight","moveToPageByIndex","currentHeight","thumb","getPageTitleName","getPageTitleIcon","src","menuItem","submenu","getBoundingClientRect","windowWidth","right","setMenuDropdownPos","dropdowns","maxTouchPoints","dropdown","menu","toggle","otherDropdown","exchangeIndex","ticketsPerBlock","mpVoteCountTarget","mempoolTotalSent","mempoolTarget","memsent","mempoolFees","mempoolFeesTarget","memfees","powReward","bsubsidyPowTarget","powreward","txFeeAvg","feeAvgTarget","feeavg","mempoolData","send","mempool","Mempool","voteTallyTargets","txs","mergeTxs","setMempoolFigures","keyNav","m","handleMempoolUpdate","processSummaryInfo","_processSummary","processSummary24hInfo","_process24hInfo","isDev","setAvgBlockTime","toScroll","scrollTo","behavior","pageContent","cHeight","section","cType","newPrice","syncExchangeAllPrice","hasConvertedMemSentTarget","convertedMemSentTarget","hasConvertedMempoolFeesTarget","convertedMempoolFeesTarget","hasExchangeRateTarget","hasExchangeRateBottomTarget","exchangeRateBottomTarget","hasPowConvertedTarget","powConvertedTarget","hasTxfeeConverted","txfeeConvertedTarget","resData","avgBlockTimeTarget","memBlockTarget","deregisterEvtHandlers","totals","counts","mpRegTotalTarget","regular","mpRegCountTarget","mpTicketTotalTarget","mpTicketCountTarget","mpVoteTotalTarget","ct","voteSpans","mpRevTotalTarget","rev","mpRevCountTarget","mempoolSizeTarget","setVotes","blockVotesTarget","blockVoteTally","firstElementChild","affirm","tooltip","threshold","consensusMsgTarget","poolType","poolName","poolLink","blocksPools","poolHtml","pool","blockheight","getPoolProviderInnerHtml","miner","minedby","poolsTableTarget","onlineNodesTarget","peerCount","totalTxsTarget","totalAddressesTarget","total_addresses","totalOutputsTarget","total_outputs","totalSwapsAmountTarget","bwTotalVolTarget","bisonWalletVol","last30DayBwVolTarget","bwLast30DaysVol","updateLastBlocksPools","poolDataList","hasMissedTicketsTarget","missedTicketsTarget","ticketsSummary","missedTickets","last1000BlocksMissedTarget","last1000BlocksMissed","ticketFeeTarget","last1000BlocksTicketFeeAvg","vspTableTarget","getVspTable","vspList","vsp","vspLink","voting","voted","feepercentage","summary_24h","mined24hBlocksTarget","txs24hCountTarget","numTx24h","sent24hTarget","sent24h","fees24hTarget","fees24h","vout24hTarget","numVout24h","activeAddr24hTarget","activeAddresses","powReward24hTarget","totalPowReward","supply24hTarget","dcrSupply","treasuryBal24hTarget","treasuryBalanceChange","staked24hTarget","stakedDCR","tickets24hTarget","numTickets","posReward24hTarget","posReward","voted24hTarget","missed24hTarget","swapAmount24hTarget","atomicSwapAmount","swapCount24hTarget","swapRedeemCount","swapRefundCount","swapPartCount24hTarget","bwVol24hTarget","hasSent24hUsdTarget","sent24hUsdTarget","hasFees24hUsdTarget","fees24hUsdTarget","hasPowReward24hUsdTarget","powReward24hUsdTarget","hasSupply24hUsdTarget","supply24hUsdTarget","hasPosReward24hUsdTarget","posReward24hUsdTarget","hasSwapAmount24hUsdTarget","swapAmount24hUsdTarget","hasTreasuryBal24hUsdTarget","treasuryBal24hUsdTarget","difficultyTarget","difficulty","bsubsidyPosTarget","bsubsidyDevTarget","tspentAmountTarget","treasury_bal","spent","tspentCountTarget","spend_count","coin_supply","mixedPctTarget","mixed_percent","blocksdiffTarget","sdiff","nextExpectedSdiffTarget","next_expected_sdiff","nextExpectedMinTarget","next_expected_min","nextExpectedMaxTarget","next_expected_max","windowIndexTarget","window_idx","posBarTarget","window_size","poolSizeTarget","pool_info","targetPctTarget","percent_target","rewardIdxTarget","reward_idx","powBarTarget","reward_window_size","blockRewardReduceDuration","target_block_time","rewardReduceRemainTarget","poolValueTarget","ticketRewardTarget","reward","poolSizePctTarget","percent","treasuryTotal","dev_fund","devFundTarget","hash_rate","hashrateTarget","hashrateDeltaTarget","fmtPercentage","hash_rate_change_month","blockchainSizeTarget","formatted_size","avgBlockSizeTarget","formattedAvgBlockSize","lastBlockTimeTarget","exchange_rate","xcRate","btcIndex","hasConvertedDevTarget","convertedDevTarget","hasConvertedSupplyTarget","hasConvertedDevSubTarget","convertedDevSubTarget","hasConvertedStakeTarget","convertedStakeTarget","hasMarketCap","hasMarketCapTarget","usdt","btc","dcrBtcPrice","dcrBtcVolume","dcrUsdtPrice","dcrUsdtVolume","depthZoomCallback","_depthZoomCallback","setAggRowData","updateMarketPriceBar","currentPrice","priceBarTarget","lowPrice","priceBarMarkerTarget","priceBarLabelTarget","isBtcPair","usdChangeHtml","dcr_usd_24h_change","usdChangeTarget","btcPriceTarget","dcr_btc_price","btcChangeHtml","dcr_btc_24h_change","btcChangeTarget","dcrVolTarget","usdVolTarget","volCapRateTarget","coinall","lowPriceTarget","low_price","highPriceTarget","high_price","dcrBtcVolum","dcr_btc_volume","rowNode","rowText","txTableRow","fee_rate","treasuryTxTableRow","voteTxTableRow","vote_info","block_validation","last_block","ticket_spent","mempool_ticket_index","vote_version","buildTable","txns","rowFn","txTargetMap","tspendTransactionsTarget","Vote","voteTransactionsTarget","Ticket","ticketTransactionsTarget","Revocation","revocationTransactionsTarget","Regular","regularTransactionsTarget","hasTaddTransactionsTarget","taddTransactionsTarget","countTargetMap","numVoteTarget","numTicketTarget","numRevocationTarget","numRegularTarget","renderNewTxns","labelVotes","sortVotesTable","updateBlock","handleTxsResp","block_height","block_hash","block_time","regTotalTarget","regCountTarget","ticketTotalTarget","ticketCountTarget","voteTotalTarget","voteCountTarget","revTotalTarget","revCountTarget","likelyTotalTarget","revs","tspends","tadds","each","Type","childElementCount","addTxRow","bestBlockHash","bestBlockHeight","voteValidationHash","blockhash","voteBlockHeight","best","ticketIndex","closest","clickout","_clickout","formTargets","form","closeMenu","toggleTarget","homeToggleTarget","refreshConfirmations","confirmationsTargets","confirmations","setConfirmationText","expHeight","confirmHeight","offsetkey","hasVotestatusTarget","byvotestatus","votestatusTarget","Turbolinks","visit","newPeriod","listviewTarget","pathname","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_defineProperty","getOwnPropertyDescriptors","defineProperties","percentData","cumulativeData","hourlyVotesData","common","symbol","labeledData","percentConfig","xVals","xl","xr","closePath","cumulativeConfig","hourlyVotesConfig","multiColumnBarPlotter","fillColors","gs","hasApprovalMeterTarget","approvalMeterTarget","segments","approvalMeter","MiniMeter","tokenTarget","setChartsData","_chartData","hourlyYes","hourlyNo","currentDate","currentHour","getHours","formatedDate","firstDate","lastDate","unshift","approvalLegendTarget","cumulativeLegendTarget","logLegendTarget","approvalTarget","cumulativeTarget","logTarget","synchronize","decodeHeaderTarget","decodedTransactionTarget","rawTransactionTarget","eventId","selectArea","is","multichainList","isMultichain","chain","isMutilchain","coinSelectTarget","currentChain","handlerScroll","chainArray","chainNameArr","img","attr","innerText","chainIndex","find","keepWithUrl","pageYOffset","navbarTarget","coin","indexOfParam","paramArr","param","paramV","removeUrlPostfixParam","oldChain","newHref","replaceChainFromURL","getParamFromURL","rpp","isSameChainChart","oldCoin","newCoin","replaceStr","_simulateStakingReward","rewardPeriod","targetTimePerBlock","ticketExpiry","ticketMaturity","coinbaseMaturity","ticketPrice","poolSize","poolValue","last3Months","startDateTarget","formatDateToString","endDateTarget","amountTarget","amountChanged","validateDate","startDateChanged","endDateChanged","startDate","endDate","getDaysOfRange","startDateErrTarget","days","tmpDate","setFullYear","today","setUTCHours","startingHeight","miliSecDiff","minutes","targetTimePerBlockMinutes","blockDiff","stakePerc","simulateStakingReward","numOfDays","startingBalance","currentStakePercent","actualCoinBase","startingBlockHeight","actualTicketPrice","blocksPerDay","numberOfBlocks","ticketsPurchased","coinAdjustmentFactor","meanVotingBlock","theoTicketPrice","ticketAdjustmentFactor","simblock","dcrBalance","simulationTable","simBlockMilestone","tmpSimblock","blockListParam","rewardMap","rewardMyMap","blocksPassed","daysPassed","simulationReward","stakingRward","overflow","maxCoinSupplyAtBlock","calcMeanVotingBlocks","theoreticalTicketPrice","simBlock","simDay","returnedFund","createResultTable","daysTextTarget","percentageRoiTarget","amountRoiTarget","tableBodyTarget","exRow","importNode","rowTemplateTarget","fields","getDateFromDays","blocknum","logPoolSizeM1","logPoolSize","exp","amountErrorTarget","handlerRewardCalculator","hasRedirected","progressBars","initTarget","additionInfo","searchResultTarget","bar","progress_bar_id","clean","progressVal","percentage_complete","secs","seconds_to_complete","years","months","weeks","hours","timeUnit","htmlString","bar_msg","subtitle","notifStr","messageTarget","ntfn","hasFutureBlockTarget","targetTimeStr","ticketTimeStr","targetDate","runTargetCountDown","ticketTime","runTicketTargetCountDown","getCountdown","setInterval","getTicketCountdown","secondsLeft","ticketDays","pad","ticketHours","ticketMinutes","ticketSeconds","ticketTilesTarget","numOfYears","numOfWeek","seconds","tileHtml","yearTileTarget","weekTileTarget","tilesTarget","origDate","Comparator","purchasesGraphData","items","memP","finalDate","immature","live","getWindow","retainDateWindow","_onBarsChange","_fetchAll","tipHeight","purchasesGraph","priceGraph","time_chart","price_chart","bars","chartCount","makePurchasesGraph","makePriceGraph","fetchAll","chartsResponse","wrapperTarget","mempl","mPrice","mCount","outputs_chart","outputsTarget","totalCount","tableData","outputs","populateOutputs","zoomTargets","ticketPoolResponse","barsTargets","barsTarget","startAgeRefresh","startDurationRefresh","targetBlockTime","blocktime","hasBlocktimeTarget","hasHeaderTarget","headerTargets","jstitle","stopAgeRefresh","stopDurationRefresh","blocktimeTarget","stamp","setAges","ageRefreshTimer","setDurations","durationRefreshTimer","clearInterval","hasDurationTarget","durationTargets","lbt","hasAgeTarget","ageTargets","activeChainStr","activeChainArr","activeChain","processLTCBlock","_processLTCBlock","processBTCBlock","_processBTCBlock","processMutilchainBlock","blockHeightObj","txCountObj","coinSupplyObj","isTSpend","tspendExpend","outputRowTargets","rowTarget","showMoreTextTarget","showMoreIconTarget","hasUnconfirmedTarget","unconfirmedTarget","confirmationsTarget","formattedAgeTarget","hasProgressBarTarget","progressBarTarget","txTarget","hasMempoolTdTarget","mempoolTdTargets","txBlockHeight","VoteInfo","spendingTxTarget","ticketStageTarget","expiry","ticketMsgTarget","expiryMsgTarget","barMsg","blocksLeft","pctChance","expiryChanceTarget","statusMsgTarget","scriptData","makeNode","rewardTxId","handleVisualBlocksUpdate","_handleVisualBlocksUpdate","refreshBlocksDisplay","_refreshBlocksDisplay","trimmedBlockInfo","nextSibling","vis","visibleBlocks","lastChild","replaceChild","visibleBlockElements","currentlyDisplayedBlockCount","maxBlockElements","calculateMaximumNumberOfBlocksToDisplay","allBlockElements","blockElement","blocksSection","rootTarget","blocksSectionFirstChildHeight","titleTarget","blocksSectionLastChildHeight","showmoreTarget","extraSpace","blocksSectionHeight","totalAvailableWidth","totalAvailableHeight","blockWidth","maxBlocksPerRow","maxBlockRows","totalBlocksDisplayable","_resolve","promise","_fadeIn","transition","txTypes","txIdx","plotChart","findWidth","findMinSep","Infinity","sep","minSep","canvasx","findLineWidth","canvasBin","toDomXCoord","yBottom","toDomYCoord","strokeColors","xLeft","sustain","firstPt","frontStamp","backStamp","front","back","minViewValueRange","chartIndex","dygraphs","syncOptions","prevCallbacks","ready","callBackTypes","getFunctionOption","me","initial","_arguments","gCopy","yMinRange","yRange","yAxisRange","attachZoomHandlers","seriesName","_arguments2","unhighlightCallback","_arguments3","clearSelection","attachSelectionHandlers","_requestJSON","conf","headers","accept","fetch","resp","ok","json","statusText","decimal","sign","cssClass","useCommas","precision","lgDecimals","chunks","int","numTrailingZeros","decimalVals","trailingZeros","toPrecision","subsidyToString","tail","floatAmount","multiplier","unixTime","keepOnly","padStart","timestampMs","endSymbol","strength","withTimezone","hideHisForMidnight","dateStr","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","asNode","keynavePriority","_hashParts","hashLen","hashParts","_hashParts2","head","minFracDigit","maxFracDigit","mpKeys","txList","txLists","makeTx","voteInfo","ticketSpent","reduceTx","tallyTargets","avgSize","initType","regTotal","regCount","ticketTotal","revTotal","initVotes","voteTotal","fauxVal","affirmed","validity","isQuestionableVote","wantsTx","newTx","validation","tallys","joiner","spans","_createClass","addOffset","Meter","parent","radius","padding","dimension","animationEnd","animationRunning","animationTarget","middle","offsetMiddle","startAngle","meterSpace","meterSpecs","startTheta","endTheta","normedPolarToCartesian","fps","animationLength","checkmark","failmark","_animate","lineCap","normed","normedTheta","r","denorm","theta","denormTheta","cos","sin","activeTheme","darkTheme","lightTheme","draw","denormThetaRange","maxWidth","halfLen","norm","meterWidth","dot","dotSize","frameDuration","progress","toGo","_Meter","_createSuper","_thisSuper","writeCentralPercent","wcp","buttCap","approval","approveThreshold","rejectThreshold","centralFontSize","meterColor","approveColor","revoteColor","rejectColor","dotColor","showIndicator","tray","_get","indicatorColor","strokeColor","trayColor","borderWidth","segment","_Meter2","_super2","successColor","animate","c","_toFixed$split2","whole","fraction","center","_Meter3","_super3","textColor","tipLen","_getDefault","dynamicImportPromise","turbolinks","tq","replaceTimer","appendTimer","supported","replaceHistory","_replaceHistory","appendHistory","_appendHistory","isFinite","parseValue","replaceHistoryWithLocationAndRestorationIdentifier","Location","uuid","pushHistoryWithLocationAndRestorationIdentifier","filteredQuery","replaceHref","toHref","filtered","parsed","zoomMap","all","week","zoomObject","tryDecode","encoded","decodeZoomString","decoded","lims","minSize","proposed","shift","oldWindow","newWindow","ow","nw","oldRange","newRange","pStart","pEnd","setCookie","cname","cvalue","exMins","expires","toUTCString","cookie","eventCallbacksPairs","findEventCallbacksPair","eventType","eventObject","EventCallbacksPair","callback","callbacks","EventBus","eventCallbacksPair","cb","Mousetrap","_originalStopCallback","targetsLength","stopCallback","combo","paused","pause","unpause","init","jumpToIndexOnLoad","searchBar","keyNavToggle","menuToggle","currentIndex","keyNavCookieName","menuToggleObj","keyNavEnabled","setToggleText","clearTargets","toggleKeyNav","pulsate","preserveIndex","hasAttribute","priorityLink","focus","blur","stopPropagation","preserveKeynavIndex","topSearch","toggleMenu","offsetX","forward","message","handlers","MessageSocket","connection","queue","maxQlength","eventID","handler","payload","stringify","WebSocket","clearTimeout","pinger","onmessage","onclose","onopen","_this$queue$shift2","onerror","sunIcon","darkBGCookieName","toggleToDarkClasses","toggleToLightClasses","checkbox","dispatchEvent","Event","newBody","isUndefined","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","XMLHttpRequest","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","isString","transformResponse","responseType","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","Accept","A","u","cancelToken","unsubscribe","signal","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","getAllResponseHeaders","responseText","config","request","paramsSerializer","onloadend","onreadystatechange","readyState","responseURL","onabort","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","withCredentials","_","read","toLowerCase","setRequestHeader","onDownloadProgress","onUploadProgress","upload","T","abort","subscribe","aborted","FormData","ArrayBuffer","isView","isNumber","isPlainObject","isDate","pipe","product","extend","toISOString","use","fulfilled","rejected","synchronous","runWhen","eject","isAxiosError","toJSON","fileName","lineNumber","columnNumber","toGMTString","match","RegExp","decodeURIComponent","userAgent","port","S","__CANCEL__","P","E","B","O","M","R","C","L","N","U","run","I","fun","D","nextTick","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","G","H","J","W","throwIfRequested","z","V","X","timeoutMessage","decompress","transport","httpAgent","httpsAgent","socketPath","responseEncoding","K","Q","Y","ne","Z","ee","assertOptions","validators","te","interceptors","re","_listeners","cancel","getUri","oe","ie","Axios","Cancel","CancelToken","isCancel","VERSION","ae","ue","se","__importDefault","__esModule","default","makeLiquidAPI","makeBisqMarketsAPI","makeBisqAPI","makeBitcoinAPI","ce","network","api","fe","__awaiter","de","__generator","trys","ops","throw","return","useAddresses","getAddress","address","getAddressTxs","getAddressTxsChain","getAddressTxsMempool","getAddressTxsUtxo","he","pe","ve","useBlocks","getBlock","getBlocks","start_height","getBlockStatus","getBlockTxs","start_index","getBlockTxid","getBlockTxids","getBlockRaw","getBlockHeader","getBlockHeight","getBlocksTipHash","getBlocksTipHeight","be","ye","we","useDifficulty","getDifficultyAdjustment","ge","xe","useFees","getFeesRecommended","getFeesMempoolBlocks","getCPFP","ke","Te","useMempool","getMempool","getMempoolTxids","getMempoolRecent","Se","Pe","Ee","useTransactions","getTx","getTxStatus","getTxHex","getTxRaw","getTxMerkleBlockProof","getTxMerkleProof","getTxOutspend","getTxOutspends","postTx","post","txhex","Ae","je","Be","Me","Oe","Re","Ce","Le","Ne","Ue","Ie","qe","ping","terminate","De","Fe","useWebsocket","Ge","He","initServer","Je","We","ze","Ve","Xe","$e","Ke","Qe","Ye","useStatistics","getStats","Ze","et","tt","getTxs","nt","rt","ot","useMarkets","getCurrencies","basecurrency","format","getDepth","market","getHloc","getMarkets","getOffers","getTicker","getTrades","timestamp_from","timestamp_to","limit","getVolumes","at","ut","useAssets","getAsset","asset_id","getAssetIcon","getAssetTxs","is_mempool","getAssetSupply","getAssetsIcons","st","lt","ft","dt","ht","vt","bt","yt","wt","gt","mt","xt","kt","_t","Tt","St","Pt","Et","addresses","bisq","statistics","markets","liquid","assets","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","chunkIds","priority","notFulfilled","every","getter","ns","def","current","getOwnPropertyNames","definition","chunkId","promises","miniCssF","globalThis","Function","prop","script","needAttach","scripts","getElementsByTagName","charset","nc","onScriptComplete","onload","doneFns","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}