{"version":3,"sources":["newslistbefore.js"],"sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 21);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports) {\n\njQuery.noConflict();\r\n; (function ($) {\r\n var StockHK = {\r\n init: function () {\r\n StockHK.videoPlay();\r\n },\r\n videoPlay: function () {\r\n if ($(\".roll\").length > 0) {\r\n $(\".rollimglist li\").each(function () {\r\n $(this).addClass(\"rollimg\");\r\n var thisindex = $(this).index();\r\n $(this).attr(\"nowpo\", thisindex);\r\n if (thisindex > 2) {\r\n $(this).addClass(\"ldsn\");\r\n }\r\n else {\r\n $(this).addClass(\"l\" + (thisindex + 1));\r\n }\r\n });\r\n $(\".rollimg:not(:eq(1))\").css(\"opacity\", \"0.2\");\r\n function rollimgto(i) {\r\n $(\".rollimgtxt\").remove();\r\n $(\".rollimglist a img\").unwrap(); // 删除a标签\r\n var rollimgpo = [{ \"left\": 10, \"top\": 19, \"zindex\": 9, \"width\": 164, \"height\": 92, \"opacity\": 0.2 }, { \"left\": 45, \"top\": 12, \"zindex\": 10, \"width\": 191, \"height\": 107, \"opacity\": 1 }, { \"left\": 106, \"top\": 19, \"zindex\": 9, \"width\": 164, \"height\": 92, \"opacity\": 0.2 }];\r\n var rollimglenght = $(\".rollimg\").length;\r\n $(\".rollimg\").each(function () {\r\n var qindex = parseInt($(this).attr(\"nowpo\")); //目前位置\r\n var toindex = (qindex + i + rollimglenght) % rollimglenght; //目标位置\r\n var thisimg = $(this).children(\"img\"); //下面的图片\r\n $(this).attr(\"nowpo\", toindex);\r\n if (toindex > 2) {\r\n $(this).css(\"display\", \"none\");\r\n }\r\n else {\r\n $(this).css(\"display\", \"block\");\r\n $(this).animate({\r\n left: rollimgpo[toindex].left,\r\n top: rollimgpo[toindex].top,\r\n opacity: rollimgpo[toindex].opacity\r\n }, 300, function () {\r\n $(this).css(\"z-index\", rollimgpo[toindex].zindex);\r\n if (toindex == 1) {\r\n thisimg.after('
' + thisimg.attr('alt') + '
');\r\n $(this).wrapInner(\"\");\r\n }\r\n });\r\n thisimg.animate({\r\n width: rollimgpo[toindex].width,\r\n height: rollimgpo[toindex].height\r\n }, 300);\r\n }\r\n });\r\n }\r\n $(\".rollimg\").eq(1).append('
' + $(\".rollimg\").eq(1).children(\"img\").attr('alt') + '
');\r\n $(\".rollimg\").eq(1).wrapInner('');\r\n $(\".rollimg\").click(function () {\r\n var qcindex = parseInt($(this).attr(\"nowpo\"));\r\n if (qcindex == 0) {\r\n rollimgto(1);\r\n }\r\n else if (qcindex == 2) {\r\n rollimgto(-1);\r\n }\r\n });\r\n var timeroll;\r\n timeroll = setInterval(function () {\r\n rollimgto(-1);\r\n }, 5000);\r\n\r\n $(\".roll\").mouseenter(function () {\r\n clearInterval(timeroll);\r\n });\r\n $(\".roll\").mouseleave(function () {\r\n timeroll = setInterval(function () {\r\n rollimgto(-1);\r\n }, 5000);\r\n });\r\n }\r\n }\r\n }\r\n StockHK.init();\r\n})(jQuery);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n// 港股行情\r\n(function () {\r\n var _gghq = document.getElementById(\"Gghq1\");\r\n if (!!_gghq) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=100.HSI&fields=f43,f48,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n\r\n var html = '
  • ' + json.data.f58 + '
  • ' + json.data.f43 + '
  • ' + zdfInfo._data + '
  • ' + getGSHNum(json.data.f48, \"\" , 2) + '
  • ';\r\n \r\n jQuery(\"#GgHszs\").append(html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 比价\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=3&po=1&np=1&fltt=2&invt=2&fid=f3&fs=b:MK0101&fields=f1,f2,f3,f4,f12,f13,f14,f152,f185,f186,f187,f188,f189,f191,f192,f193&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var html = '';\r\n for (var i = 0; i < 3; i++) {\r\n var zdfInfoA = getZDFInfo(json.data.diff[i].f187);//A股涨跌幅判断\r\n var zdfInfoG = getZDFInfo(json.data.diff[i].f4);//港股涨跌额判断\r\n var yjbInfo = getZDFInfo(json.data.diff[i].f188);//溢价比\r\n html += '';\r\n }\r\n jQuery(\"#Ggbj\").append(html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 资金\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/kamt/get?fields1=f1,f2,f3,f4&fields2=f51,f52&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n //hk2sh沪股通\r\n var hgtLR = getGSHNum(parseFloat(json.data.hk2sh.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#hgtInflow\").html(hgtLR);\r\n var hgtInfo = getZDFInfo(json.data.hk2sh.dayNetAmtIn);\r\n if (hgtInfo._class != \"\") {\r\n jQuery(\"#hgtInflow\").addClass(hgtInfo._class);\r\n if (hgtInfo._class == \"green\") {\r\n jQuery(\"#hgtInflow\").before(\"资金净流出\");\r\n jQuery(\"#hgtInflow\").html(hgtLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#hgtInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#hgtInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".hgtstatus\").html(getHSGTStatus(json.data.hk2sh.status));\r\n if (json.data.hk2sh.status == 4) {\r\n jQuery(\"#hgtInflow\").parent().html(\"-\");\r\n }\r\n\r\n //sh2hk港股通(沪)\r\n var ggthLR = getGSHNum(parseFloat(json.data.sh2hk.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#ggthInflow\").html(ggthLR);\r\n var ggthInfo = getZDFInfo(json.data.sh2hk.dayNetAmtIn);\r\n if (ggthInfo._class != \"\") {\r\n jQuery(\"#ggthInflow\").addClass(ggthInfo._class);\r\n if (ggthInfo._class == \"green\") {\r\n jQuery(\"#ggthInflow\").before(\"资金净流出\");\r\n jQuery(\"#ggthInflow\").html(ggthLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#ggthInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#ggthInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".ggthstatus\").html(getHSGTStatus(json.data.sh2hk.status));\r\n if (json.data.sh2hk.status == 4) {\r\n jQuery(\"#ggthInflow\").parent().html(\"-\");\r\n }\r\n\r\n //hk2sz深股通\r\n var sgtLR = getGSHNum(parseFloat(json.data.hk2sz.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#sgtInflow\").html(sgtLR);\r\n var sgtInfo = getZDFInfo(json.data.hk2sz.dayNetAmtIn);\r\n if (sgtInfo._class != \"\") {\r\n jQuery(\"#sgtInflow\").addClass(sgtInfo._class);\r\n if (sgtInfo._class == \"green\") {\r\n jQuery(\"#sgtInflow\").before(\"资金净流出\");\r\n jQuery(\"#sgtInflow\").html(sgtLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#sgtInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#sgtInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".sgtstatus\").html(getHSGTStatus(json.data.hk2sz.status));\r\n if (json.data.hk2sz.status == 4) {\r\n jQuery(\"#sgtInflow\").parent().html(\"-\");\r\n }\r\n\r\n //sz2hk港股通(深)\r\n var ggtsLR = getGSHNum(parseFloat(json.data.sz2hk.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#ggtsInflow\").html(ggtsLR);\r\n var ggtsInfo = getZDFInfo(json.data.sz2hk.dayNetAmtIn);\r\n if (ggtsInfo._class != \"\") {\r\n jQuery(\"#ggtsInflow\").addClass(ggtsInfo._class);\r\n if (ggtsInfo._class == \"green\") {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流出\");\r\n jQuery(\"#ggtsInflow\").html(ggtsLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".ggtsstatus\").html(getHSGTStatus(json.data.sz2hk.status));\r\n if (json.data.sz2hk.status == 4) {\r\n jQuery(\"#ggtsInflow\").parent().html(\"-\");\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n } \r\n }\r\n });\r\n }\r\n function getHSGTStatus(_hsgtstatus) {\r\n switch (_hsgtstatus) {\r\n case 1:\r\n return \"有额度\";\r\n case 2:\r\n return \"无额度\";\r\n case 3:\r\n return \"收盘\";\r\n case 4:\r\n return \"休市\";\r\n default:\r\n return \"-\";\r\n }\r\n }\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n function getGSHNum(str, fix, num) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var result;\r\n var intStr = Math.abs(parseInt(str));\r\n if (intStr.toString().length > 12) {\r\n result = (parseFloat(str) / 1000000000000).toFixed(num) + '万亿' + fix;\r\n } else if (intStr.toString().length > 8) {\r\n result = (parseFloat(str) / 100000000).toFixed(num) + '亿' + fix;\r\n } else if (intStr.toString().length > 4) {\r\n result = (parseFloat(str) / 10000).toFixed(num) + '万' + fix;\r\n } else {\r\n if (parseFloat(str) === parseInt(str)) {\r\n result = parseFloat(str) + fix;\r\n } else {\r\n result = parseFloat(str).toFixed(num) + fix;\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// 黄金行情\r\n(function () {\r\n var _hjhq = document.getElementById(\"Hjhq1\");\r\n if (!!_hjhq) {\r\n // 国际\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=101.GC00Y,101.SI00Y&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var html = '';\r\n jQuery(\"#Hjgj\").append(html);\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 国内\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=113.aum,113.agm&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var html = '';\r\n jQuery(\"#Hjgn\").append(html);\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n }\r\n}());\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n(function () { //EM_Hqzx_1\r\n\r\n $ = function (s) {\r\n return (typeof (s) == \"string\") ? document.getElementById(s) : s;\r\n }\r\n if (typeof $ == \"undefined\") { $ = function (a) { return document.getElementById(a) } }\r\n if (typeof $C == \"undefined\") { $C = function (a) { return document.createElement(a) } }\r\n Function.prototype.Bind = function () {\r\n var d = this,\r\n b = arguments[0],\r\n a = new Array();\r\n for (var c = 1; c < arguments.length; c++) {\r\n a.push(arguments[c]);\r\n }\r\n return function () {\r\n return d.apply(b, a);\r\n }\r\n };\r\n\r\n window.amineWidth = function (obj, num) {\r\n obj.style.width = num + \"px\";\r\n };\r\n var tabsItemId,\r\n tabsState = false;\r\n var MutualTab = function () {\r\n this.init.apply(this, arguments);\r\n };\r\n MutualTab.prototype = {\r\n init: function (tabs, targets, type, callbackObjArr, subTargets) {\r\n this.tabs = [];\r\n\r\n var tempTabs = tabs.childNodes;\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1 && tempTabs[i].nodeName.toLowerCase() != 'dd') {\r\n this.tabs.push(tempTabs[i]);\r\n }\r\n }\r\n\r\n if (targets) {\r\n this.targets = [];\r\n var tempTargets = targets.childNodes;\r\n for (var j = 0; j < tempTargets.length; j++) {\r\n if (tempTargets[j].nodeType == 1) {\r\n this.targets.push(tempTargets[j]);\r\n }\r\n }\r\n this.activeTab = this.tabs[0];\r\n this.activeTarget = this.targets[0];\r\n }\r\n if (!targets && !subTargets) this.activeTab = this.tabs[0];\r\n if (subTargets) this.activeTab = null;//this.tabs[0];\r\n if (type != \"mouseover\") {\r\n for (var k = 0; k < this.tabs.length; k++) {\r\n this.tabs[k].onclick = this.showTab.Bind(this, k, callbackObjArr ? callbackObjArr[k] : null);\r\n }\r\n } else {\r\n tabsItemId = 0;\r\n for (var k = 0; k < this.tabs.length; k++) {\r\n this.tabs[k].onmouseout = this._hide.Bind(this, k);\r\n this.tabs[k].onmouseover = this._over.Bind(this, k, callbackObjArr ? callbackObjArr[k] : null);\r\n }\r\n }\r\n \r\n },\r\n showTab: function (_index, callback) {\r\n this.tabIndex = _index;\r\n if (this.tabs[_index] == this.activeTab) return;\r\n\r\n if (this.activeTab) this.activeTab.className = \"\";\r\n \r\n this.activeTab = this.tabs[_index];\r\n this.activeTab.className = \"at\";\r\n \r\n if (this.targets) {\r\n if (this.activeTarget) {\r\n this.activeTarget.style.display = \"none\";\r\n }\r\n this.activeTarget = this.targets[_index];\r\n this.activeTarget.style.display = \"\";\r\n \r\n }\r\n if (callback) {\r\n this.activeCallback = callback;\r\n callback();\r\n }\r\n\r\n },\r\n _over: function (obj, _index, callback) {\r\n tabsState = true;\r\n this._timeout = window.setTimeout(this.showTab.Bind(this, obj, _index, callback), 150);\r\n },\r\n _hide: function () {\r\n if (this._timeout) {\r\n window.clearTimeout(this._timeout);\r\n }\r\n }\r\n };\r\n //window.MutualTab = MutualTab;\r\n var hqData = {\r\n CSI: {//沪深\r\n id: \"CSI\",\r\n set: [\r\n ['0000011', '沪A', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000001', 'http://quote.eastmoney.com/zs000001.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3990012', '深A', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399001', 'http://quote.eastmoney.com/zs399001.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3990062', '创业板', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399006', 'http://quote.eastmoney.com/zs399006.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['0003001', '300', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000300', 'http://quote.eastmoney.com/zs000300.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3000592', '东方财富', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.300059', 'http://quote.eastmoney.com/sz300059.html', '
  • F10
  • 公告
  • 研报
  • 股吧
  • ']\r\n ]\r\n },\r\n HK: {//香港\r\n id: \"HK\",\r\n set: [\r\n ['1100005', '恒生', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.HSI', 'http://quote.eastmoney.com/hk/zs110000.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100305', '红筹', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=124.HSCCI', 'http://quote.eastmoney.com/hk/zs110030.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100105', '国企', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.HSCEI', 'http://quote.eastmoney.com/hk/zs110010.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100505', '创业板', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=125.SPHKG', 'http://quote.eastmoney.com/hk/zs110050.html', '
  • 涨幅
  • 成交
  • 比价
  • ']\r\n ]\r\n },\r\n OCCIDENT: {//欧美\r\n id: \"OCCIDENT\",\r\n set: [\r\n ['INDU7', '道琼斯', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.DJIA', 'http://quote.eastmoney.com/gb/zsindu.html', '
  • 排行
  • 概念
  • 科技
  • '],\r\n ['CCMP7', '纳斯达克', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.NDX', 'http://quote.eastmoney.com/gb/zsCCMP.html', '
  • 排行
  • 概念
  • 科技
  • '],\r\n ['UKX7', '英国FT', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.FTSE', 'http://quote.eastmoney.com/gb/zsUKX.html', '
  • 排行
  • 概念
  • 科技
  • ']\r\n ]\r\n },\r\n FUND: {//基金\r\n id: \"FUND\",\r\n set: [\r\n ['0000111', '沪基', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000011', 'http://quote.eastmoney.com/zs000011.html', '
  • 封基
  • 开基
  • ETF
  • LOF
  • '],\r\n ['3991032', '深基', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399103', 'http://quote.eastmoney.com/zs399103.html', '
  • 封基
  • 开基
  • ETF
  • LOF
  • ']\r\n ]\r\n },\r\n FUTURES: {//期货\r\n id: \"FUTURES\",\r\n set: [\r\n ['IFDYLX1', '股指期货', '//delaywebquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=220.IFM0', 'http://quote.eastmoney.com/unify/r/220.IFM0', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['TFGZDJ1', '国债期货', '//delaywebquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=220.TFS0', 'http://quote.eastmoney.com/unify/r/220.TFS0', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['CONC0', '美原油', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=102.CL00Y', 'http://quote.eastmoney.com/unify/r/102.CL00Y', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['GLNC0', '美黄金', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=101.GC00Y', 'http://quote.eastmoney.com/unify/r/101.GC00Y', '
  • 期指
  • 内盘
  • 外盘
  • ']\r\n ]\r\n },\r\n FOREX: {//外汇\r\n id: \"FOREX\",\r\n set: [\r\n ['DINI0', '美元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.UDI', 'http://quote.eastmoney.com/unify/r/100.UDI', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['EURUSD0', '欧元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.EURUSD', 'http://quote.eastmoney.com/forex/EURUSD.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['GBPUSD0', '英镑', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.GBPUSD', 'http://quote.eastmoney.com/forex/GBPUSD.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['USDJPY0', '日元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.USDJPY', 'http://quote.eastmoney.com/forex/USDJPY.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['USDCNY0', '人民币', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=133.USDCNH', 'http://quote.eastmoney.com/unify/r/133.USDCNH', '
  • 利率
  • 兑换
  • 日历
  • ']\r\n ]\r\n }\r\n };\r\n\r\n var StockIndex = {\r\n tabObjs: [],\r\n\r\n tabsItemId:0, //二级标签页导航索引值\r\n tabsIndex: 0, //一级标签页导航索引值\r\n tabshqDataId: \"\", //hqData数据中对应的属性id\r\n\r\n imgFqc: 120000,\r\n activeImg: 0,\r\n apply: function (tabId, contentId, refBtn) {\r\n if (window[\"_IFCode\"]) {\r\n hqData[\"FUTURES\"].set[0][0] = window[\"_IFCode\"];\r\n hqData[\"FUTURES\"].set[0][2] = 'http://hqgnqhpic.eastmoney.com/EM_Futures2010PictureProducter/Picture/' + _IFCode + '1RSIndex.png';\r\n hqData[\"FUTURES\"].set[0][3] = 'http://quote.eastmoney.com/gzqh/' + _IFCode + '.html';\r\n }\r\n if (window[\"_TFCode\"]) {\r\n hqData[\"FUTURES\"].set[1][0] = window[\"_TFCode\"];\r\n hqData[\"FUTURES\"].set[1][2] = 'http://hqgnqhpic.eastmoney.com/EM_Futures2010PictureProducter/Index.aspx?imagetype=RSIndex&ID=' + _TFCode + '1';\r\n hqData[\"FUTURES\"].set[1][3] = 'http://quote.eastmoney.com/gzqh/' + _TFCode + '.html';\r\n }\r\n this._tabsElement = $(tabId);\r\n this._contentElement = $(contentId);\r\n if (refBtn) this._refreshElement = $(refBtn);\r\n this._initContent();\r\n this._tabCtrl = new MutualTab(this._tabsElement, this._contentElement, \"mouseover\", this.tabObjs, true);\r\n this.tabsSelect();\r\n this._start(this.tabsIndex,this.tabshqDataId);\r\n },\r\n _initContent: function () {//初始化主体结构\r\n var tabs = this._tabsElement;\r\n var tabContent = this._contentElement;\r\n var tempTabs = tabs.childNodes;\r\n var setArr = null, showStyle = '', innerContent = '', _active = '';\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1) {\r\n this.tabObjs.push(this.show.Bind(this, hqData[tempTabs[i].id]));\r\n innerContent += '
    ';\r\n if (showStyle == '') showStyle = ' style=\"display:none;\"';\r\n\r\n setArr = hqData[tempTabs[i].id].set;\r\n innerContent += '
    ';\r\n for (var j in setArr) {\r\n _active = '';\r\n if (j == 0) _active = ' class=\"at\"';\r\n if (setArr[j][1] != undefined) {\r\n innerContent += '' + setArr[j][1] + '';\r\n }\r\n if (j < setArr.length - 1) innerContent += '
    |
    ';\r\n }\r\n\r\n innerContent += '
    ';\r\n innerContent += '
    ';\r\n innerContent += '';\r\n innerContent += '
    ';\r\n }\r\n }\r\n tabContent.innerHTML = innerContent;\r\n },\r\n tabsSelect:function(){\r\n var input = $(\"hqzx_tabId\"), // 获取页面中隐藏标签的元素\r\n tabs = this._tabsElement.childNodes,\r\n tabsArr = [],\r\n tabsDicArr = [],\r\n i,\r\n tabId = input.getAttribute(\"data-hqzx-id1\"),\r\n tabItemIdName = input.getAttribute(\"data-hqzx-id2\");\r\n var tabsDictionary = [ //标签页各级导航对应字典\r\n { //沪深CSI\r\n id:\"hqzx_CSI\",\r\n itemNavId:[\"CSI_hA\", \"CSI_sA\", \"CSI_300\", \"CSI_cyb\", \"CSI_em\"]\r\n }, \r\n { //香港HK\r\n id: \"hqzx_HK\",\r\n itemNavId: [\"HK_hs\", \"HK_hc\", \"HK_gj\", \"HK_cyb\"]\r\n }, \r\n { //欧美OCCIDENT\r\n id: \"hqzx_OCCIDENT\",\r\n itemNavId: [\"OCCIDENT_dqs\", \"OCCIDENT_nsdk\", \"OCCIDENT_UAFT\"]\r\n }, \r\n { //基金FUND\r\n id:\"hqzx_FUND\",\r\n itemNavId: [\"FUND_hj\", \"FUND_sj\"]\r\n }, \r\n { //期货FUTURES\r\n id:\"hqzx_FUTURES\",\r\n itemNavId: [\"FUTURES_guzqh\", \"FUTURES_guozqh\", \"FUTURES_myy\", \"FUTURES_mhj\"]\r\n }, \r\n { //外汇FOREX\r\n id: \"hqzx_FOREX\",\r\n itemNavId: [\"FOREX_dollar\", \"FOREX_Euro\", \"FOREX_pound\", \"FOREX_yen\", \"FOREX_RMB\"]\r\n } \r\n ];\r\n if (!tabId) {\r\n this.tabsIndex = 0;\r\n this.tabsItemId = 0;\r\n this.tabshqDataId = hqData.CSI;\r\n } else {\r\n for (i = 0; i < tabsDictionary.length; i++) {\r\n if (tabId == tabsDictionary[i].id) {\r\n this.tabsIndex = i;\r\n this.tabshqDataId = hqData[tabsDictionary[i].id.slice(5)];\r\n tabsDicArr = tabsDictionary[i].itemNavId;\r\n break;\r\n } else {\r\n this.tabsIndex = 0;\r\n this.tabsItemId = 0;\r\n this.tabshqDataId = hqData.CSI;\r\n }\r\n }\r\n }\r\n\r\n if (!tabItemIdName) {\r\n this.tabsItemId = 0;\r\n } else if (tabsDicArr) {\r\n for (i = 0; i < tabsDicArr.length; i++) {\r\n if (tabItemIdName == tabsDicArr[i]) {\r\n this.tabsItemId = i;\r\n break;\r\n } else {\r\n this.tabsItemId = 0;\r\n }\r\n }\r\n }\r\n \r\n for (i = 0; i < tabs.length; i++) {\r\n if (tabs[i].nodeType == 1) {\r\n tabsArr.push(hqData[tabs[i].id]);\r\n }\r\n }\r\n var tabsItemNav = $(\"hq_\" + tabsArr[this.tabsIndex].id).getElementsByTagName(\"dt\"),\r\n len = tabsItemNav.length;\r\n for (i = 0; i < len; i++) {\r\n tabsItemNav[i].className = \"\";\r\n }\r\n tabsItemNav[this.tabsItemId].className = \"at\";\r\n\r\n },\r\n _start: function (i, hqDataId) {\r\n this._tabCtrl.showTab(i, this.show.Bind(this, hqDataId));\r\n },\r\n show: function (aData) {\r\n this._sMarket = aData.id;\r\n this._oSetNow = aData.set;\r\n var _imgCallback = [];\r\n var _hqcodeNow = [];\r\n\r\n for (var i = 0; i < this._oSetNow.length; i++) {\r\n _imgCallback.push(this._loadImg.Bind(this, i));\r\n _hqcodeNow.push(this._oSetNow[i][0]);\r\n }\r\n if (!hqData[this._sMarket]._containersNow) {\r\n hqData[this._sMarket]._containersNow = [];\r\n var _tmpchilds = $(\"hq_\" + aData.id).firstChild.childNodes;\r\n var _tmpFirst = null;\r\n for (var i = 0; i < _tmpchilds.length; i++) {\r\n if (_tmpchilds[i].nodeType == 1) {\r\n _tmpFirst = _tmpchilds[i].firstChild;\r\n hqData[this._sMarket]._containersNow.push(_tmpFirst.nodeType == 1 ? _tmpFirst : _tmpFirst.nextSibling);\r\n }\r\n }\r\n }\r\n if (!aData.hasscroll) {\r\n aData.hasscroll = new MutualTab($(\"hq_\" + aData.id).firstChild, null, \"mouseover\", _imgCallback, true);\r\n //console.log(aData.hasscroll.getIndex());\r\n if (tabsState) {\r\n this.tabsItemId = tabsItemId;\r\n }\r\n aData.hasscroll.showTab(this.tabsItemId, this._loadImg.Bind(this));\r\n }\r\n },\r\n _loadImg: function (sID) {//加载并开启自刷新图片\r\n sID = !sID ? 0 : sID;\r\n //console.log(sID);\r\n if (!hqData[this._sMarket].activeImg) {\r\n hqData[this._sMarket].activeImg = 0;\r\n }\r\n //滑动时回调,传sID进来,若图已初始化,则不强行读取,由更新线程更新\r\n if (sID != undefined) {\r\n hqData[this._sMarket].activeImg = sID;\r\n //if(this._oSetNow[hqData[this._sMarket].activeImg].imgLoaded) return;\r\n }\r\n if (this._refreshElement) {\r\n //if(sID != undefined)\r\n this._refreshElement.onclick = this._loadImg.Bind(this, sID);\r\n //else\r\n //\tthis._refreshElement.onclick = this._loadImg.Bind(this, 0);\r\n }\r\n\r\n if (this._imgtimeout) {\r\n window.clearTimeout(this._imgtimeout);\r\n }\r\n this._imgtimeout = window.setTimeout(this._loadImg.Bind(this, sID), this.imgFqc);\r\n\r\n $(\"hq_\" + this._sMarket).lastChild.innerHTML = this._oSetNow[!sID ? 0 : sID][4];\r\n\r\n var _index = hqData[this._sMarket].activeImg;\r\n\r\n if (this._oSetNow[_index][2] != \"\") {\r\n this._fillImg(this._oSetNow[_index], _index)\r\n }\r\n\r\n //表明已初始化\r\n if (!this._oSetNow[_index].imgLoaded) {\r\n this._oSetNow[_index].imgLoaded = true;\r\n }\r\n },\r\n _fillImg: function (aSet, index) {//加载图片\r\n var _container = $(\"hq_\" + hqData[this._sMarket].id).firstChild.nextSibling;\r\n var _img = new Image();\r\n _img.src = [aSet[2], aSet[2].indexOf('?') >= 0 ? '&' : \"?\", 'r=' + (new Date()).getTime()].join(\"\");\r\n if (_img.onreadystatechange) {\r\n _img.onreadystatechange = this.insertBc.Bind(this, _container, _img, aSet[3]);\r\n } else {\r\n _img.onload = this.insertBc.Bind(this, _container, _img, aSet[3]);\r\n }\r\n },\r\n insertBc: function (_container, _img, _haslink) {//像目标容器填充图片\r\n if (_img.onreadystatechange) {\r\n if (_img.readyState != 'loaded' && _img.readyState != 'complete') return;\r\n }\r\n _container.innerHTML = \"\";\r\n if (_haslink != \"\") {\r\n var _link = $C(\"A\");\r\n _link.target = \"_blank\";\r\n _link.className = \"piclink\";\r\n _link.href = _haslink;\r\n _link.setAttribute(\"hideFocus\", true);\r\n _link.appendChild(_img);\r\n _container.appendChild(_link);\r\n } else {\r\n _container.appendChild(_img);\r\n }\r\n _img.height = 123;\r\n _img.width = 220;\r\n }\r\n };\r\n //window.StockIndex = StockIndex;\r\n \r\n/*\r\n var zjlxData = {\r\n CF_CSI: {//沪深\r\n id: \"CF_CSI\",\r\n set: ['http://data.eastmoney.com/zjlx/dpzjlx.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_ls_min.png']\r\n },\r\n CF_SHA: {//沪市\r\n id: \"CF_SHA\",\r\n set: ['http://data.eastmoney.com/zjlx/zs000001.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_sha_min.png']\r\n },\r\n CF_SZA: {//深市\r\n id: \"CF_SZA\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399001.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_sza_min.png']\r\n },\r\n CF_CYB: {//创业板\r\n id: \"CF_CYB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399006.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_cyb_min.png']\r\n },\r\n CF_SHB: {//沪B\r\n id: \"CF_SHB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs000003.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_shb_min.png']\r\n },\r\n CF_SZB: {//深B\r\n id: \"CF_SZB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399003.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_szb_min.png']\r\n }\r\n };\r\n var CapitalFlows = {//资金流向\r\n tabObjs: [],\r\n imgFqc: 180000,\r\n activeImg: 0,\r\n apply: function (tabId, contentId, refBtn) {\r\n this._tabsElement = $(tabId);\r\n this._contentElement = $(contentId);\r\n if (refBtn) this._refreshElement = $(refBtn);\r\n this._initContent();\r\n this._tabCtrl = new MutualTab(this._tabsElement, this._contentElement, \"mouseover\", this.tabObjs, true);\r\n this._start();\r\n },\r\n _initContent: function () {//初始化主体结构\r\n var tabs = this._tabsElement;\r\n var tabContent = this._contentElement;\r\n var tempTabs = tabs.childNodes;\r\n\r\n var showStyle = '', innerContent = '';\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1) {\r\n this.tabObjs.push(this.show.Bind(this, zjlxData[tempTabs[i].id]));\r\n\r\n innerContent += '
    ';\r\n if (showStyle == '') showStyle = ' style=\"display:none;\"';\r\n innerContent += '';\r\n innerContent += '';\r\n innerContent += '
    ';\r\n }\r\n }\r\n tabContent.innerHTML = innerContent;\r\n },\r\n _start: function () {\r\n this._tabCtrl.showTab(0, this.show.Bind(this, zjlxData.CF_CSI));\r\n },\r\n show: function (aData) {\r\n this._sMarket = aData.id;\r\n this._oSetNow = aData.set;\r\n var _imgCallback = [];\r\n\r\n this._loadImg();\r\n //$(\"zjlx_\" + aData.id).lastChild.innerHTML = this._oSetNow[2];\r\n },\r\n _loadImg: function (sID) {//加载并开启自刷新图片\r\n if (this._refreshElement) {\r\n if (sID != undefined)\r\n this._refreshElement.onclick = this._loadImg.Bind(this, sID);\r\n else\r\n this._refreshElement.onclick = this._loadImg.Bind(this, 0);\r\n }\r\n\r\n if (this._imgtimeout) {\r\n window.clearTimeout(this._imgtimeout);\r\n }\r\n this._imgtimeout = window.setTimeout(this._loadImg.Bind(this), this.imgFqc);\r\n\r\n if (this._oSetNow[1] != \"\") {\r\n this._fillImg(this._oSetNow, sID)\r\n }\r\n },\r\n _fillImg: function (aSet, index) {\r\n var _container = $(\"zjlx_\" + this._sMarket).firstChild;\r\n var _img = new Image();\r\n _img.src = [aSet[1], aSet[1].indexOf('?') >= 0 ? '&' : \"?\", 'r=' + (new Date()).getTime()].join(\"\");\r\n if (_img.onreadystatechange) {\r\n _img.onreadystatechange = this.insertBc.Bind(this, _container, _img, aSet[0]);\r\n } else {\r\n _img.onload = this.insertBc.Bind(this, _container, _img, aSet[0]);\r\n }\r\n },\r\n insertBc: function (_container, _img, _haslink) {\r\n if (_img.onreadystatechange) {\r\n if (_img.readyState != 'loaded' && _img.readyState != 'complete') return;\r\n }\r\n _container.innerHTML = \"\";\r\n if (_haslink != \"\") {\r\n var _link = _container;\r\n _link.target = \"_blank\";\r\n _link.className = \"piclink\";\r\n _link.href = _haslink;\r\n _link.appendChild(_img);\r\n //_container.appendChild(_link);\r\n } else {\r\n _container.appendChild(_img);\r\n }\r\n\r\n //if(_haslink != \"\") {\r\n // var _link = $C(\"A\");\r\n // _link.target = \"_blank\";\r\n // _link.href = _haslink;\r\n // _link.setAttribute(\"hideFocus\",true);\r\n // _link.appendChild(_img);\r\n // _container.appendChild(_link);\r\n // } else {\r\n // _container.appendChild(_img);\r\n // }\r\n\r\n _img.height = 123;\r\n _img.width = 220;\r\n }\r\n };\r\n window.CapitalFlows = CapitalFlows;\r\n*/\r\n\r\n if (document.getElementById(\"hqzx\")) {\r\n StockIndex.apply('stockTabs', 'stockContent', 'refbtn_stock');\r\n }\r\n})();\r\n\r\n\r\n\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n//沪深股市\r\n(function () {\r\n var _hsgs = document.getElementById(\"Hsgs1\");\r\n if (!!_hsgs) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=1.000001,0.399001&fields=f1,f2,f3,f4,f12,f13,f14,f104,f105,f106&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var shsz = \"上证\";\r\n var shszLinkUp = \"http://quote.eastmoney.com/center/list.html#10_0_0_u?sortType=C&sortRule=-1\";\r\n var shszLinkDown = \"http://quote.eastmoney.com/center/list.html#10_0_0_d?sortType=C&sortRule=1\";\r\n if (i == 1) {\r\n shsz = \"深证\";\r\n shszLinkUp = \"http://quote.eastmoney.com/center/list.html#20_0_0_u?sortType=C&sortRule=-1\";\r\n shszLinkDown = \"http://quote.eastmoney.com/center/list.html#20_0_0_d?sortType=C&sortRule=1\";\r\n }\r\n _html += '';\r\n }\r\n jQuery('#pointR').html(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 个股\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=3&po=1&np=1&fltt=2&invt=2&fid=f62&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2&fields=f1,f2,f3,f8,f12,f13,f14,f152,f62&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var _html = '';\r\n for (var i = 0; i < 3; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var zjlInfo = getZDFInfo(json.data.diff[i].f62);\r\n var cjl = \"-\";\r\n if (zjlInfo._class != \"\") {\r\n cjl = (parseFloat(json.data.diff[i].f62) / 10000).toFixed(0) + '万';\r\n }\r\n _html += '';\r\n }\r\n jQuery('#hsgsPStock').append(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n },\r\n error: function () {\r\n return false;\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n// 期权行情\r\n(function () {\r\n var _qqhq = document.getElementById(\"Qqhq1\");\r\n if (!!_qqhq) {\r\n // 标的\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=1.510050&fields=f43,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n var _html = '
  • ' + json.data.f58 + '
  • ' + gshNum(json.data.f43, 3) + '
  • ' + gshNum(json.data.f169,3) + '
  • ' + zdfInfo._data + '
  • ';\r\n jQuery(\"#Qqbd\").append(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 认购\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=2&po=1&np=1&fltt=2&invt=2&fid=f6&fs=m:10+t:173&fields=f1,f2,f3,f4,f5,f12,f13,f14&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#Qqrengou\").append(_html);\r\n }\r\n });\r\n\r\n // 认沽\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=2&po=1&np=1&fltt=2&invt=2&fid=f6&fs=m:10+t:174&fields=f1,f2,f3,f4,f5,f12,f13,f14&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#Qqrengu\").append(_html);\r\n }\r\n });\r\n\r\n function gshNum(str,strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n// 全球主要指数\r\n(function () {\r\n var _zyzs = document.getElementById(\"Qqzyzs1\");\r\n if (!!_zyzs) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=1.000001,100.HSI,100.DJIA,100.N225,100.FTSE,101.GC00Y,102.CL00Y,100.UDI&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 8; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#QqzyzsCon\").append(_html);\r\n\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n(function () {\r\n if (jQuery(\"#StockCode_bar\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar',\r\n offset: { left: 0, top: 0 },\r\n shownewtips: true,\r\n newtipsoffset: { left: 0, top: 0 }\r\n });\r\n }\r\n}());\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n(function () {\r\n if (jQuery(\"#StockCode_bar_sm_content\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar_sm_content',\r\n offset: { left: -107, top: 0 },\r\n shownewtips: true,\r\n newtipsoffset: { left: -5, top: -4 }\r\n });\r\n }\r\n\r\n if (jQuery(\"#StockCode_bar_sm_list\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar_sm_list',\r\n offset: { left: -107, top: 0 },\r\n shownewtips: false,\r\n newtipsoffset: { left: 0, top: 0 }\r\n });\r\n }\r\n \r\n}());\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n// 外汇行情\r\n(function () {\r\n var _whhq = document.getElementById(\"Whhq1\");\r\n if(!!_whhq){\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=100.UDI&fields=f43,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n var _html = '
  • ' + json.data.f58 + '
  • ' + gshNum(json.data.f43, json.data.f59) + '
  • ' + gshNum(json.data.f169, json.data.f59) + '
  • ' + zdfInfo._data + '
  • ';\r\n jQuery(\"#Whzs\").html(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n(function () {\r\n var len = 4; // 记录条数\r\n\r\n // 获取cookie\r\n this.GetCookie = function (name) {\r\n var dc = document.cookie;\r\n var prefix = name + \"=\";\r\n var begin = dc.indexOf(\"; \" + prefix);\r\n if (begin == -1) {\r\n begin = dc.indexOf(prefix);\r\n if (begin != 0) { return null };\r\n }\r\n else {\r\n begin += 2;\r\n }\r\n var end = document.cookie.indexOf(\";\", begin);\r\n if (end == -1) {\r\n end = dc.length;\r\n }\r\n return unescape(dc.substring(begin + prefix.length, end));\r\n };\r\n\r\n var def = [\"a-sh-600000-浦发银行\", \"a-sz-300017-网宿科技\", \"a-sh-600020-中原高速\", \"a-sh-600005-武钢股份\"];\r\n\r\n this.mb = { \"a\": \"http://quote.eastmoney.com/[#MARKET#][#CODE#].html\", \"b\": \"http://guba.eastmoney.com/topic,[#CODE#].html\", \"c\": \"http://fund.eastmoney.com/[#CODE#].html\", \"d\": \"http://quote.eastmoney.com/hk/[#CODE#].html\", \"e\": \"http://quote.eastmoney.com/gzqh/[#CODE#].html\", \"f\": \"http://quote.eastmoney.com/zs[#CODE#].html\", \"g\": \"http://quote.eastmoney.com/qihuo/[#CODE#].html\", \"h\": \"http://quote.eastmoney.com/hk/[#CODE#].html\", \"i\": \"http://quote.eastmoney.com/hk/zs[#CODE#].html\", \"j\": \"http://quote.eastmoney.com/us/[#CODE#].html\", \"k\": \"http://quote.eastmoney.com/forex/[#CODE#].html\", \"l\": \"http://quote.eastmoney.com/[#MARKET#][#CODE#].html\", \"m\": \"http://quote.eastmoney.com/gb/zs[#CODE#].html\", \"n\": \"http://quote.eastmoney.com/gjqh/[#CODE#].html\", \"o\": \"http://quote.eastmoney.com/qiquan/[#CODE#]_[#MARKET#].html\", \"p\": \"http://quote.eastmoney.com/3ban/[#MARKET#][#CODE#].html\" };\r\n if (this.GetCookie(\"em_hq_fls\") == \"new\") {\r\n this.mb.a = \"http://quote.eastmoney.com/flash/[#MARKET#][#CODE#].html\";\r\n }\r\n //[类型(a:行情,b:股吧,c:基金,d:港股,e:股指期货,f:大盘指数,g:期货,h:港股,i:港股指数,j:美股,k:外汇,l:债券,m:全球指数,n:国际期货,o:期权,p:3板),市场(没有为0),代码,名称]\r\n this.len = len;\r\n this.addlen = 0;\r\n this.ret = [];\r\n\r\n this.init = function () {\r\n this.ReadInfo();\r\n };\r\n this.ReadInfo = function () {\r\n try {\r\n var Str = \"
    最近访问股:
    \";\r\n if (document.getElementById(\"Zjfw1\")) {\r\n document.getElementById(\"Zjfw1\").innerHTML = Str;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n }\r\n this.init();\r\n})(jQuery);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\r\n//美元兑指定货币缓存\r\nvar ExRate = {\r\n USD: 1, //美元\r\n EUR: 0, //欧元\r\n GBP: 0, //英镑\r\n AUD: 0, //澳元\r\n JPY: 0, //日元\r\n CHF: 0, //瑞郎\r\n CAD: 0, //加元\r\n HKD: 0, //港币\r\n CNY: 0 //人民币 \r\n};\r\n\r\n/*\r\n\tf\t- 原货币\r\n\tt\t- 兑换货币\r\n\tfn\t- 回调函数\r\n*/\r\nfunction getExRate(f, t, fn) {\r\n var i = 0;\r\n var update = function (r, b) {\r\n i++;\r\n if (i > 3) return false;\r\n var mod = r + \"USD\";\r\n if (b == null || b == false) {\r\n b = false;\r\n mod = \"USD\" + r;\r\n } else {\r\n b = true;\r\n mod = r + \"USD\";\r\n }\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?fltt=2&fields=f43,f57,f58,f107&secid=133.\" + mod + \"&ut=fa5fd1943c7b386f172d6893dbfba10b&cb=?\",\r\n dataType: \"jsonp\",\r\n success: function (json) {\r\n try {\r\n var val = json.data.f43;\r\n if (typeof val != \"undefined\" && !isNaN(val) && val != 0) {\r\n val = (b == false) ? val : parseFloat(1 / val);\r\n eval(\"ExRate.\" + r + \" =\" + val);\r\n cal();\r\n } else {\r\n if (b == null || b == false) {\r\n update(r, true);\r\n } else {\r\n cal(false);\r\n }\r\n }\r\n } catch (e) { }\r\n }\r\n });\r\n }\r\n var cal = function (state) {\r\n if (state != null) { //没有取到汇率\r\n obj.value = \"...\";\r\n return false;\r\n }\r\n var rate1 = eval(\"ExRate.\" + f);\r\n var rate2 = eval(\"ExRate.\" + t);\r\n var rate = 1;\r\n if (isNaN(rate1) || rate1 == 0) {\r\n update(f);\r\n } else if (isNaN(rate2) || rate2 == 0) {\r\n update(t);\r\n } else {\r\n rate = parseFloat(rate2) / parseFloat(rate1);\r\n fn(rate);\r\n }\r\n };\r\n cal();\r\n}\r\n\r\nfunction glodconv(obj1, obj2, t) {\r\n var val = obj1.value;\r\n obj2.value = \"\";\r\n if (val == null || val == \"\") {\r\n alert(\"请输入需要换算的金额!\");\r\n return false;\r\n } else if (isNaN(val)) {\r\n alert(\"换算的金额必须是数字!\");\r\n return false;\r\n } else if (val < 0) {\r\n alert(\"金额必须大于等于0!\");\r\n return false;\r\n }\r\n var fn = function (x) {\r\n obj2.value = val * x;\r\n }\r\n if (t == 0) {\r\n getExRate(\"USD\", \"CNH\", function (r) {\r\n obj2.value = (val * r / 31.1035).toFixed(2);\r\n });\r\n } else {\r\n getExRate(\"CNH\", \"USD\", function (r) {\r\n obj2.value = (val * r * 31.1035).toFixed(2);\r\n\r\n });\r\n }\r\n}\r\n\r\njQuery(\".gold_calc1\").on(\"click\",function(){\r\n glodconv(document.getElementById(\"usprice_1\"),document.getElementById(\"cnprice_1\"),0);\r\n});\r\n\r\njQuery(\".gold_calc2\").on(\"click\",function(){\r\n glodconv(document.getElementById(\"cnprice_2\"),document.getElementById(\"usprice_2\"),1);\r\n});\n\n/***/ }),\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(8);//沪深股市\r\n__webpack_require__(13);//外汇行情\r\n__webpack_require__(6);//黄金行情\r\n__webpack_require__(9);//期权行情\r\n__webpack_require__(10);//全球主要指数\r\n__webpack_require__(7);//行情中心\r\n__webpack_require__(11);//小搜索框\r\n__webpack_require__(12);//大搜索框\r\n__webpack_require__(14);//最近访问股\r\n__webpack_require__(5);//港股行情\r\n__webpack_require__(4);//财经视频\r\n__webpack_require__(15);//黄金计算器\r\n\r\n\r\nfunction getElementsByClassName(fatherId, tagName, cName) {\r\n var node = fatherId && document.getElementById(fatherId) || document;\r\n tagName = tagName || \"*\";\r\n cName = cName.split(\" \");\r\n var classNameLength = cName.length;\r\n var len = null;\r\n var i = null;\r\n for (i = 0, len = classNameLength; i < len; i++) {\r\n //创建匹配类名的正则\r\n cName[i] = new RegExp(\"(^|\\\\s)\" + cName[i].replace(/\\-/g, \"\\\\-\") + \"(\\\\s|$)\");\r\n }\r\n var elements = node.getElementsByTagName(tagName);\r\n var result = [];\r\n var n = 0;\r\n for (i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i];\r\n while (cName[n++].test(element.className)) { //优化循环\r\n if (n === classNameLength) {\r\n result[result.length] = element;\r\n break;\r\n }\r\n }\r\n n = 0;\r\n }\r\n return result;\r\n}\r\n\r\nfunction newsListMouseover() {\r\n var parentElement = document.getElementById(\"newsListContent\"),\r\n lis = parentElement.getElementsByTagName(\"li\"),\r\n len = lis.length,\r\n i;\r\n len = lis.length;\r\n //每个li 的鼠标移入事件\r\n for (i = 0; i < len; i++) {\r\n lis[i].onmouseover = function () {\r\n this.style.backgroundColor = \"#f7f7f7\";\r\n };\r\n lis[i].onmouseout = function () {\r\n this.style.backgroundColor = \"\";\r\n };\r\n }\r\n}\r\n\r\nfunction initPaging(totleCount){\r\n console.log(totleCount);\r\n if (totleCount > 1000) {\r\n totleCount = 1000;\r\n }\r\n var totlePage = parseInt(totleCount / __PageSize);\r\n if (totleCount % __PageSize != 0) {\r\n totlePage++;\r\n }\r\n console.log(\"totlePage\",totlePage);\r\n var pagesLinks = \"\";\r\n if (__PageIndex != 1) {\r\n // pagesLinks += \"上一页\";\r\n pagesLinks += \"上一页\";\r\n }\r\n else {\r\n pagesLinks += \"上一页\";\r\n }\r\n var startPage = 1;\r\n var endPage = totlePage;\r\n if (endPage > 5) {\r\n if (__PageIndex > 3) {\r\n startPage = __PageIndex - 2;\r\n endPage = __PageIndex + 2;\r\n }\r\n else {\r\n endPage = 5;\r\n }\r\n if (endPage > totlePage) {\r\n startPage = totlePage - 4;\r\n endPage = totlePage;\r\n }\r\n }\r\n if (startPage > 1) {\r\n // pagesLinks += \"1\";\r\n pagesLinks += \"1\";\r\n if(startPage > 2){\r\n pagesLinks += \"...\";\r\n }\r\n }\r\n for (var i = startPage; i <= endPage; i++) {\r\n if (__PageIndex == i) {\r\n pagesLinks += \"\" + i + \"\";\r\n }\r\n else {\r\n // pagesLinks += \"\" + i + \"\";\r\n pagesLinks += \"\" + i + \"\";\r\n }\r\n }\r\n if (endPage < totlePage) {\r\n if(endPage < totlePage - 1){\r\n pagesLinks += \"...\";\r\n }\r\n // pagesLinks += \"\" + totlePage + \"\";\r\n pagesLinks += \"\" + totlePage + \"\";\r\n\r\n }\r\n if (__PageIndex < totlePage) {\r\n // pagesLinks += \"下一页\";\r\n pagesLinks += \"下一页\";\r\n }\r\n else {\r\n pagesLinks += \"下一页\";\r\n }\r\n\r\n jQuery(\"#pagerNoDiv\").html(pagesLinks);\r\n\r\n}\r\n\r\nfunction convertToNewsListDate(_date) {\r\n var reg =/(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2}:\\d{2})/;\r\n // console.log(_date,_date.match(reg));\r\n // console.log(_date,_date.replace(reg,\"$1年$2月$3日 $4\"));\r\n if(_date.length > 16){\r\n _date = _date.substr(0, 16).replace(reg,\"$1年$2月$3日 $4\");\r\n }\r\n return _date;\r\n}\r\n\r\nfunction initColumnList(_json){\r\n var _html = \"\";\r\n if(_json && _json.data && _json.data.list){\r\n for (var i = 0; i < _json.data.list.length; i++) {\r\n var item = _json.data.list[i];\r\n\r\n var charsize = 100;\r\n var style = \"text text-no-img\";\r\n\r\n var _url = \"https://finance.eastmoney.com/a/\"+item.code+\".html\";\r\n if(item.np_dst == \"CFH\"){\r\n _url = \"http://caifuhao.eastmoney.com/news/\"+item.code;\r\n }\r\n _html += '
  • '\r\n if(item.image && item.image != \"\"){\r\n _html += '
    ';\r\n _html += '';\r\n _html += '';\r\n _html += '';\r\n _html += '
    ';\r\n charsize = 80;\r\n style = \"text\";\r\n }\r\n\r\n var _des_all = (item.summary && item.summary != \"\") ? item.summary : \"\";\r\n var _des = _des_all;\r\n if(_des.length > charsize){\r\n _des = _des.substr(0,charsize) + \"...\";\r\n }\r\n\r\n _html += '
    ';\r\n _html += '

    ';\r\n _html += '' + item.title + '';\r\n _html += '

    ';\r\n _html += '

    '+_des+'

    ';\r\n _html += '

    '+convertToNewsListDate(item.showTime)+'

    ';\r\n _html += '
    ';\r\n _html += '
  • ';\r\n }\r\n\r\n initPaging(_json.data.totle_hits);\r\n }\r\n\r\n jQuery(\"#newsListContent\").html(_html);\r\n \r\n newsListMouseover();\r\n}\r\n\r\nfunction initSCColumnList(_json){\r\n var _html = \"\";\r\n if(_json && _json.data && _json.data.list){\r\n for (var i = 0; i < _json.data.list.length; i++) {\r\n var item = _json.data.list[i];\r\n\r\n var _url = \"https://finance.eastmoney.com/a/\"+item.code+\".html\";\r\n if(item.np_dst == \"CFH\"){\r\n _url = \"http://caifuhao.eastmoney.com/news/\"+item.code;\r\n }\r\n if(i % 10 == 0){\r\n _html += '
  • ';\r\n } else if(i % 10 == 9){\r\n _html += '
  • ';\r\n }else{\r\n _html += '
  • ';\r\n }\r\n _html += '';\r\n _html += ''+item.title+'';\r\n _html += ''+convertToNewsListDate(item.showTime)+'';\r\n _html += '';\r\n _html += '
  • ';\r\n \r\n }\r\n\r\n initPaging(_json.data.totle_hits);\r\n }\r\n\r\n jQuery(\"#newsListContent\").html(_html);\r\n \r\n newsListMouseover();\r\n}\r\n\r\nfunction getQueryString(name) {\r\n var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')\r\n var r = window.location.search.substr(1).match(reg)\r\n if (r != null) return unescape(r[2])\r\n return null;\r\n }\r\nwindow.initNewsList = function (){\r\n window.scrollTo( 0, 0 );\r\n if(__PageIndex < 1 || __PageIndex > 50){\r\n __PageIndex = 1;\r\n }\r\n var _URL = \"https://np-listapi.eastmoney.com/comm/web/getNewsByColumns?client=web&biz=web_news_col&column=#id#&order=1&needInteractData=0&page_index=#pageindex#&page_size=#pagesize#&req_trace=#guid#&fields=code,showTime,title,mediaName,summary,image,url,uniqueUrl,Np_dst&types=1,20&callback=?\";\r\n if(__Type === \"2\"){\r\n _URL = \"https://np-listapi.eastmoney.com/comm/web/getNewsByScColumns?client=web&biz=web_news_sccol&scColumns=#id#&order=1&page_index=#pageindex#&page_size=#pagesize#&req_trace=#guid#&fields=code,showTime,title,mediaName,summary,realSort,image,url,uniqueUrl,Np_dst&types=1,20&callback=?\";\r\n }\r\n\r\n\r\n if(getQueryString(\"env\") == \"uat\"){\r\n _URL = _URL.replace(\"//np-listapi.eastmoney.com\",\"//np-listapi-uat.eastmoney.com\");\r\n }\r\n\r\n _URL = _URL.replace(\"#id#\",__ColumnId);\r\n _URL = _URL.replace(\"#pageindex#\",__PageIndex);\r\n _URL = _URL.replace(\"#pagesize#\",__PageSize);\r\n _URL = _URL.replace(\"#guid#\",(new Date()).getTime());\r\n\r\n console.log(_URL);\r\n\r\n jQuery.ajax({\r\n url: _URL,\r\n dataType: 'jsonp',\r\n success: function(_json){\r\n console.log(_json);\r\n if(__Type === \"1\"){\r\n initColumnList(_json);\r\n }else{\r\n initSCColumnList(_json);\r\n }\r\n }\r\n });\r\n}\r\n\r\njQuery(document).ready(function(){ \r\n try {\r\n initNewsList();\r\n } catch (error) {\r\n \r\n }\r\n});\r\n \r\n\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZGNlYzc4ZWFkZGIzMzI1ZDc0NTMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX0Nqc3BfMS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fR2docV8xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9IamhxXzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX0hxenhfMS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHNnc18xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9RcWhxXzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX1Fxenl6c18xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfbGcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX1NlYXJjaF9zbS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fV2hocV8xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9aamZ3XzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L2dvbGRfY2FsYy5qcyIsIndlYnBhY2s6Ly8vLi9qcy9uZXdzbGlzdGJlZm9yZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBLDJDQUEyQyxjQUFjOztRQUV6RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBOztRQUVBO1FBQ0E7UUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDRCQUE0QjtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxrQztBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsQ0FBQyIsImZpbGUiOiJuZXdzbGlzdGJlZm9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjEpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGRjZWM3OGVhZGRiMzMyNWQ3NDUzIiwi77u/alF1ZXJ5Lm5vQ29uZmxpY3QoKTtcclxuOyAoZnVuY3Rpb24gKCQpIHtcclxuICAgIHZhciBTdG9ja0hLID0ge1xyXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgU3RvY2tISy52aWRlb1BsYXkoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZpZGVvUGxheTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoJChcIi5yb2xsXCIpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ2xpc3QgbGlcIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcInJvbGxpbWdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXNpbmRleCA9ICQodGhpcykuaW5kZXgoKTtcclxuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoXCJub3dwb1wiLCB0aGlzaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzaW5kZXggPiAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJsZHNuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcImxcIiArICh0aGlzaW5kZXggKyAxKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLnJvbGxpbWc6bm90KDplcSgxKSlcIikuY3NzKFwib3BhY2l0eVwiLCBcIjAuMlwiKTtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJvbGxpbWd0byhpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5yb2xsaW1ndHh0XCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ2xpc3QgYSBpbWdcIikudW53cmFwKCk7ICAgLy8g5Yig6ZmkYeagh+etvlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb2xsaW1ncG8gPSBbeyBcImxlZnRcIjogMTAsIFwidG9wXCI6IDE5LCBcInppbmRleFwiOiA5LCBcIndpZHRoXCI6IDE2NCwgXCJoZWlnaHRcIjogOTIsIFwib3BhY2l0eVwiOiAwLjIgfSwgeyBcImxlZnRcIjogNDUsIFwidG9wXCI6IDEyLCBcInppbmRleFwiOiAxMCwgXCJ3aWR0aFwiOiAxOTEsIFwiaGVpZ2h0XCI6IDEwNywgXCJvcGFjaXR5XCI6IDEgfSwgeyBcImxlZnRcIjogMTA2LCBcInRvcFwiOiAxOSwgXCJ6aW5kZXhcIjogOSwgXCJ3aWR0aFwiOiAxNjQsIFwiaGVpZ2h0XCI6IDkyLCBcIm9wYWNpdHlcIjogMC4yIH1dO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb2xsaW1nbGVuZ2h0ID0gJChcIi5yb2xsaW1nXCIpLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnJvbGxpbWdcIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxaW5kZXggPSBwYXJzZUludCgkKHRoaXMpLmF0dHIoXCJub3dwb1wiKSk7IC8v55uu5YmN5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2luZGV4ID0gKHFpbmRleCArIGkgKyByb2xsaW1nbGVuZ2h0KSAlIHJvbGxpbWdsZW5naHQ7IC8v55uu5qCH5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGlzaW1nID0gJCh0aGlzKS5jaGlsZHJlbihcImltZ1wiKTsgLy/kuIvpnaLnmoTlm77niYdcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKFwibm93cG9cIiwgdG9pbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2luZGV4ID4gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jc3MoXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY3NzKFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hbmltYXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByb2xsaW1ncG9bdG9pbmRleF0ubGVmdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHJvbGxpbWdwb1t0b2luZGV4XS50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogcm9sbGltZ3BvW3RvaW5kZXhdLm9wYWNpdHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY3NzKFwiei1pbmRleFwiLCByb2xsaW1ncG9bdG9pbmRleF0uemluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9pbmRleCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNpbWcuYWZ0ZXIoJzxkaXYgY2xhc3M9XCJyb2xsaW1ndHh0XCI+JyArIHRoaXNpbWcuYXR0cignYWx0JykgKyAnPC9kaXY+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykud3JhcElubmVyKFwiPGEgaHJlZj0nXCIgKyB0aGlzaW1nLmF0dHIoJ2lsaW5rJykgKyBcIicgdGFyZ2V0PSdfYmxhbmsnPjwvYT5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzaW1nLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiByb2xsaW1ncG9bdG9pbmRleF0ud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiByb2xsaW1ncG9bdG9pbmRleF0uaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkKFwiLnJvbGxpbWdcIikuZXEoMSkuYXBwZW5kKCc8ZGl2IGNsYXNzPVwicm9sbGltZ3R4dFwiPicgKyAkKFwiLnJvbGxpbWdcIikuZXEoMSkuY2hpbGRyZW4oXCJpbWdcIikuYXR0cignYWx0JykgKyAnPC9kaXY+Jyk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLnJvbGxpbWdcIikuZXEoMSkud3JhcElubmVyKCc8YSBocmVmPVwiJyArICQoXCIucm9sbGltZ1wiKS5lcSgxKS5jaGlsZHJlbihcImltZ1wiKS5hdHRyKCdpbGluaycpICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPjwvYT4nKTtcclxuICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ1wiKS5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHFjaW5kZXggPSBwYXJzZUludCgkKHRoaXMpLmF0dHIoXCJub3dwb1wiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHFjaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xsaW1ndG8oMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFjaW5kZXggPT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xsaW1ndG8oLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVyb2xsO1xyXG4gICAgICAgICAgICAgICAgdGltZXJvbGwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sbGltZ3RvKC0xKTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xyXG5cclxuICAgICAgICAgICAgICAgICQoXCIucm9sbFwiKS5tb3VzZWVudGVyKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyb2xsKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgJChcIi5yb2xsXCIpLm1vdXNlbGVhdmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVyb2xsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xsaW1ndG8oLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBTdG9ja0hLLmluaXQoKTtcclxufSkoalF1ZXJ5KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9DanNwXzEuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/Ly8g5riv6IKh6KGM5oOFXHJcbihmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgX2dnaHEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkdnaHExXCIpO1xyXG4gICAgaWYgKCEhX2dnaHEpIHtcclxuICAgICAgICAvLyDmjIfmlbBcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3N0b2NrL2dldD9zZWNpZD0xMDAuSFNJJmZpZWxkcz1mNDMsZjQ4LGY1OSxmMTUyLGY1NyxmNTgsZjEwNyxmMTY5LGYxNzAmZmx0dD0yJmludnQ9MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogJ2NiJyxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmYxNzApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGxpPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZjEwNyArICcuJyArIGpzb24uZGF0YS5mNTcgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5mNTggKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZjQzICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJyB0aGlyZFwiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PGxpPicgKyBnZXRHU0hOdW0oanNvbi5kYXRhLmY0OCwgXCJcIiAsIDIpICsgJzwvbGk+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNHZ0hzenNcIikuYXBwZW5kKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOavlOS7t1xyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvY2xpc3QvZ2V0P3BuPTEmcHo9MyZwbz0xJm5wPTEmZmx0dD0yJmludnQ9MiZmaWQ9ZjMmZnM9YjpNSzAxMDEmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0LGYxNTIsZjE4NSxmMTg2LGYxODcsZjE4OCxmMTg5LGYxOTEsZjE5MixmMTkzJnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiAnY2InLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IDAgJiYganNvbi5kYXRhICYmIGpzb24uZGF0YS5kaWZmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mb0EgPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYxODcpOy8vQeiCoea2qOi3jOW5heWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm9HID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mNCk7Ly/muK/ogqHmtqjot4zpop3liKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5amJJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMTg4KTsvL+a6ouS7t+avlFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHVsPjxsaSBjbGFzcz1cImZpcnN0XCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE5MyArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mb0EuX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTg2ICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm9HLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjIgKyAnPC9saT48bGk+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxODkgKyAnPC9saT48bGkgY2xhc3M9XCInICsgeWpiSW5mby5fY2xhc3MgKyAnXCI+JyArIHlqYkluZm8uX2RhdGEgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI0dnYmpcIikuYXBwZW5kKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOi1hOmHkVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQva2FtdC9nZXQ/ZmllbGRzMT1mMSxmMixmMyxmNCZmaWVsZHMyPWY1MSxmNTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6ICdjYicsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uICYmIGpzb24ucmMgPT0gMCAmJiBqc29uLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9oazJzaOayquiCoemAmlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGd0TFIgPSBnZXRHU0hOdW0ocGFyc2VGbG9hdChqc29uLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjaGd0SW5mbG93XCIpLmh0bWwoaGd0TFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGd0SW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmhrMnNoLmRheU5ldEFtdEluKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuYWRkQ2xhc3MoaGd0SW5mby5fY2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhndEluZm8uX2NsYXNzID09IFwiZ3JlZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5Ye6PC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjaGd0SW5mbG93XCIpLmh0bWwoaGd0TFIucmVwbGFjZShcIi1cIiwgXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjaGd0SW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjaGd0SW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiLmhndHN0YXR1c1wiKS5odG1sKGdldEhTR1RTdGF0dXMoanNvbi5kYXRhLmhrMnNoLnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5kYXRhLmhrMnNoLnN0YXR1cyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjaGd0SW5mbG93XCIpLnBhcmVudCgpLmh0bWwoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NoMmhr5riv6IKh6YCaKOayqilcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdndGhMUiA9IGdldEdTSE51bShwYXJzZUZsb2F0KGpzb24uZGF0YS5zaDJoay5kYXlOZXRBbXRJbikgKiAxMDAwMCwgXCJcIiwgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RoSW5mbG93XCIpLmh0bWwoZ2d0aExSKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdndGhJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuc2gyaGsuZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2d0aEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RoSW5mbG93XCIpLmFkZENsYXNzKGdndGhJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2d0aEluZm8uX2NsYXNzID09IFwiZ3JlZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RoSW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWHujwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndGhJbmZsb3dcIikuaHRtbChnZ3RoTFIucmVwbGFjZShcIi1cIiwgXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0aEluZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlhaU8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndGhJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIuZ2d0aHN0YXR1c1wiKS5odG1sKGdldEhTR1RTdGF0dXMoanNvbi5kYXRhLnNoMmhrLnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5kYXRhLnNoMmhrLnN0YXR1cyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0aEluZmxvd1wiKS5wYXJlbnQoKS5odG1sKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9oazJzeua3seiCoemAmlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2d0TFIgPSBnZXRHU0hOdW0ocGFyc2VGbG9hdChqc29uLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pICogMTAwMDAsIFwiXCIsIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjc2d0SW5mbG93XCIpLmh0bWwoc2d0TFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2d0SW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmhrMnN6LmRheU5ldEFtdEluKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNndEluZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuYWRkQ2xhc3Moc2d0SW5mby5fY2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNndEluZm8uX2NsYXNzID09IFwiZ3JlZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5Ye6PC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjc2d0SW5mbG93XCIpLmh0bWwoc2d0TFIucmVwbGFjZShcIi1cIiwgXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjc2d0SW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjc2d0SW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiLnNndHN0YXR1c1wiKS5odG1sKGdldEhTR1RTdGF0dXMoanNvbi5kYXRhLmhrMnN6LnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5kYXRhLmhrMnN6LnN0YXR1cyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjc2d0SW5mbG93XCIpLnBhcmVudCgpLmh0bWwoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3N6Mmhr5riv6IKh6YCaKOa3sSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdndHNMUiA9IGdldEdTSE51bShwYXJzZUZsb2F0KGpzb24uZGF0YS5zejJoay5kYXlOZXRBbXRJbikgKiAxMDAwMCwgXCJcIiwgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RzSW5mbG93XCIpLmh0bWwoZ2d0c0xSKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdndHNJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuc3oyaGsuZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2d0c0luZm8uX2NsYXNzICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RzSW5mbG93XCIpLmFkZENsYXNzKGdndHNJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2d0c0luZm8uX2NsYXNzID09IFwiZ3JlZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RzSW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWHujwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndHNJbmZsb3dcIikuaHRtbChnZ3RzTFIucmVwbGFjZShcIi1cIiwgXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0c0luZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlhaU8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndHNJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIuZ2d0c3N0YXR1c1wiKS5odG1sKGdldEhTR1RTdGF0dXMoanNvbi5kYXRhLnN6MmhrLnN0YXR1cykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5kYXRhLnN6MmhrLnN0YXR1cyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0c0luZmxvd1wiKS5wYXJlbnQoKS5odG1sKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2V0SFNHVFN0YXR1cyhfaHNndHN0YXR1cykge1xyXG4gICAgICAgIHN3aXRjaCAoX2hzZ3RzdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5pyJ6aKd5bqmXCI7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuaXoOmineW6plwiO1xyXG4gICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLmlLbnm5hcIjtcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5LyR5biCXCI7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICBpZiAoc3RyID09PSBcIlwiIHx8IHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBkWmRmID0gcGFyc2VGbG9hdChzdHIpO1xyXG4gICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZFpkZiA8IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRHU0hOdW0oc3RyLCBmaXgsIG51bSkge1xyXG4gICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIi1cIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0O1xyXG4gICAgICAgICAgICB2YXIgaW50U3RyID0gTWF0aC5hYnMocGFyc2VJbnQoc3RyKSk7XHJcbiAgICAgICAgICAgIGlmIChpbnRTdHIudG9TdHJpbmcoKS5sZW5ndGggPiAxMikge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHBhcnNlRmxvYXQoc3RyKSAvIDEwMDAwMDAwMDAwMDApLnRvRml4ZWQobnVtKSArICfkuIfkur8nICsgZml4O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludFN0ci50b1N0cmluZygpLmxlbmd0aCA+IDgpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IChwYXJzZUZsb2F0KHN0cikgLyAxMDAwMDAwMDApLnRvRml4ZWQobnVtKSArICfkur8nICsgZml4O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludFN0ci50b1N0cmluZygpLmxlbmd0aCA+IDQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IChwYXJzZUZsb2F0KHN0cikgLyAxMDAwMCkudG9GaXhlZChudW0pICsgJ+S4hycgKyBmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VGbG9hdChzdHIpID09PSBwYXJzZUludChzdHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGbG9hdChzdHIpICsgZml4O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZsb2F0KHN0cikudG9GaXhlZChudW0pICsgZml4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KShqUXVlcnkpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9saXN0L0VNX0dnaHFfMS5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCLvu78vLyDpu4Tph5HooYzmg4VcclxuKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBfaGpocSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiSGpocTFcIik7XHJcbiAgICBpZiAoISFfaGpocSkge1xyXG4gICAgICAgIC8vIOWbvemZhVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvdWxpc3QubnAvZ2V0P3NlY2lkcz0xMDEuR0MwMFksMTAxLlNJMDBZJmZpZWxkcz1mMSxmMixmMyxmNCxmMTIsZjEzLGYxNCZmbHR0PTImaW52dD0yJnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiBcImNiXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uICYmIGpzb24ucmMgPT0gMCAmJiBqc29uLmRhdGEgJiYganNvbi5kYXRhLmRpZmYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICc8dWw+PGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwic2Vjb25kXCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE0ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjIgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmY0ICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI0hqZ2pcIikuYXBwZW5kKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g5Zu95YaFXHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC91bGlzdC5ucC9nZXQ/c2VjaWRzPTExMy5hdW0sMTEzLmFnbSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQmZmx0dD0yJmludnQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSAmJiBqc29uLmRhdGEuZGlmZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJzx1bD48bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMi50b1VwcGVyQ2FzZSgpICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cInNlY29uZFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxNCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYyICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mNCArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgemRmSW5mby5fZGF0YSArICc8L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNIamduXCIpLmFwcGVuZChodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFpERkluZm8oc3RyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwicmVkXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSgpKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9IamhxXzEuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/KGZ1bmN0aW9uICgpIHsgICAgICAvL0VNX0hxenhfMVxyXG5cclxuICAgICQgPSBmdW5jdGlvbiAocykge1xyXG4gICAgICAgIHJldHVybiAodHlwZW9mIChzKSA9PSBcInN0cmluZ1wiKSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHMpIDogcztcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgJCA9PSBcInVuZGVmaW5lZFwiKSB7ICQgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkgfSB9XHJcbiAgICBpZiAodHlwZW9mICRDID09IFwidW5kZWZpbmVkXCIpIHsgJEMgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhKSB9IH1cclxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5CaW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkID0gdGhpcyxcclxuICAgICAgICAgICAgYiA9IGFyZ3VtZW50c1swXSxcclxuICAgICAgICAgICAgYSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgIGZvciAodmFyIGMgPSAxOyBjIDwgYXJndW1lbnRzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgIGEucHVzaChhcmd1bWVudHNbY10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZC5hcHBseShiLCBhKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5hbWluZVdpZHRoID0gZnVuY3Rpb24gKG9iaiwgbnVtKSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLndpZHRoID0gbnVtICsgXCJweFwiO1xyXG4gICAgfTtcclxuICAgIHZhciB0YWJzSXRlbUlkLFxyXG4gICAgICAgIHRhYnNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgdmFyIE11dHVhbFRhYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbiAgICBNdXR1YWxUYWIucHJvdG90eXBlID0ge1xyXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uICh0YWJzLCB0YXJnZXRzLCB0eXBlLCBjYWxsYmFja09iakFyciwgc3ViVGFyZ2V0cykge1xyXG4gICAgICAgICAgICB0aGlzLnRhYnMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHZhciB0ZW1wVGFicyA9IHRhYnMuY2hpbGROb2RlcztcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZW1wVGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBUYWJzW2ldLm5vZGVUeXBlID09IDEgJiYgdGVtcFRhYnNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSAnZGQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzLnB1c2godGVtcFRhYnNbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRzID0gW107XHJcbiAgICAgICAgICAgICAgICB2YXIgdGVtcFRhcmdldHMgPSB0YXJnZXRzLmNoaWxkTm9kZXM7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRlbXBUYXJnZXRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBUYXJnZXRzW2pdLm5vZGVUeXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2godGVtcFRhcmdldHNbal0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYXJnZXQgPSB0aGlzLnRhcmdldHNbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0YXJnZXRzICYmICFzdWJUYXJnZXRzKSB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFic1swXTtcclxuICAgICAgICAgICAgaWYgKHN1YlRhcmdldHMpIHRoaXMuYWN0aXZlVGFiID0gbnVsbDsvL3RoaXMudGFic1swXTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgIT0gXCJtb3VzZW92ZXJcIikge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLnRhYnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNba10ub25jbGljayA9IHRoaXMuc2hvd1RhYi5CaW5kKHRoaXMsIGssIGNhbGxiYWNrT2JqQXJyID8gY2FsbGJhY2tPYmpBcnJba10gOiBudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRhYnNJdGVtSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLnRhYnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNba10ub25tb3VzZW91dCA9IHRoaXMuX2hpZGUuQmluZCh0aGlzLCBrKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNba10ub25tb3VzZW92ZXIgPSB0aGlzLl9vdmVyLkJpbmQodGhpcywgaywgY2FsbGJhY2tPYmpBcnIgPyBjYWxsYmFja09iakFycltrXSA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1RhYjogZnVuY3Rpb24gKF9pbmRleCwgY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy50YWJJbmRleCA9IF9pbmRleDtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tfaW5kZXhdID09IHRoaXMuYWN0aXZlVGFiKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWIpIHRoaXMuYWN0aXZlVGFiLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFic1tfaW5kZXhdO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYi5jbGFzc05hbWUgPSBcImF0XCI7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVUYXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhcmdldC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhcmdldCA9IHRoaXMudGFyZ2V0c1tfaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYXJnZXQuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2FsbGJhY2sgPSBjYWxsYmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfb3ZlcjogZnVuY3Rpb24gKG9iaiwgX2luZGV4LCBjYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0YWJzU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl90aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5zaG93VGFiLkJpbmQodGhpcywgb2JqLCBfaW5kZXgsIGNhbGxiYWNrKSwgMTUwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9oaWRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vd2luZG93Lk11dHVhbFRhYiA9IE11dHVhbFRhYjtcclxuICAgIHZhciBocURhdGEgPSB7XHJcbiAgICAgICAgQ1NJOiB7Ly/msqrmt7FcclxuICAgICAgICAgICAgaWQ6IFwiQ1NJXCIsXHJcbiAgICAgICAgICAgIHNldDogW1xyXG4gICAgICAgICAgICAgICAgWycwMDAwMDExJywgJ+ayqkEnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xLjAwMDAwMScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS96czAwMDAwMS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMxMFwiPua2qOW5hTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVZvbHVtZVJhdGUmc3I9LTEjc2hfYV9ib2FyZFwiPumHj+avlDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVR1cm5vdmVyUmF0ZSZzcj0tMSNzaF9hX2JvYXJkXCI+5o2i5omLPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9UEVSYXRpb24mc3I9LTEjc2hfYV9ib2FyZFwiPuW4guebiDwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWyczOTkwMDEyJywgJ+a3sUEnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0wLjM5OTAwMScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS96czM5OTAwMS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyMFwiPua2qOW5hTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVZvbHVtZVJhdGUmc3I9LTEjc3pfYV9ib2FyZFwiPumHj+avlDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVR1cm5vdmVyUmF0ZSZzcj0tMSNzel9hX2JvYXJkXCI+5o2i5omLPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9UEVSYXRpb24mc3I9LTEjc3pfYV9ib2FyZFwiPuW4guebiDwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWyczOTkwMDYyJywgJ+WIm+S4muadvycsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTAuMzk5MDA2JywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3pzMzk5MDA2Lmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI3XCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9Vm9sdW1lUmF0ZSZzcj0tMSNnZW1fYm9hcmRcIj7ph4/mr5Q8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbD9zdD1UdXJub3ZlclJhdGUmc3I9LTEjZ2VtX2JvYXJkXCI+5o2i5omLPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9UEVSYXRpb24mc3I9LTEjZ2VtX2JvYXJkXCI+5biC55uIPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzAwMDMwMDEnLCAnMzAwJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MS4wMDAzMDAnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20venMwMDAzMDAuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjgwMDM1MDBfMF8yXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9Vm9sdW1lUmF0ZSZzcj0tMSNib2FyZHMyLTkwLkJLMDUwMFwiPumHj+avlDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVR1cm5vdmVyUmF0ZSZzcj0tMSNib2FyZHMyLTkwLkJLMDUwMFwiPuaNouaJizwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVBFUmF0aW9uJnNyPS0xI2JvYXJkczItOTAuQkswNTAwXCI+5biC55uIPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzMwMDA1OTInLCAn5Lic5pa56LSi5a+MJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MC4zMDAwNTknLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vc3ozMDAwNTkuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZW13ZWIuc2VjdXJpdGllcy5lYXN0bW9uZXkuY29tL3BjX2hzZjEwL3BhZ2VzL2luZGV4Lmh0bWw/dHlwZT13ZWImY29kZT1TWjMwMDA1OSZjb2xvcj1iIy9jcGJkXCI+RjEwPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL25vdGljZS8zMDAwNTkuaHRtbFwiPuWFrOWRijwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS9yZXBvcnQvMzAwMDU5Lmh0bWxcIj7noJTmiqU8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9ndWJhLmVhc3Rtb25leS5jb20vbGlzdCwzMDAwNTkuaHRtbFwiPuiCoeWQpzwvYT48L2xpPiddXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIEhLOiB7Ly/pppnmuK9cclxuICAgICAgICAgICAgaWQ6IFwiSEtcIixcclxuICAgICAgICAgICAgc2V0OiBbXHJcbiAgICAgICAgICAgICAgICBbJzExMDAwMDUnLCAn5oGS55SfJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAwLkhTSScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9oay96czExMDAwMC5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCM1MF8xXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzUwXzE/c29ydFR5cGU9RiZzb3J0UnVsZT0tMVwiPuaIkOS6pDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCNhaF8xXCI+5q+U5Lu3PC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzExMDAzMDUnLCAn57qi5625JywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTI0LkhTQ0NJJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL3pzMTEwMDMwLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4SFNDQ0lfMVwiPua2qOW5hTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOEhTQ0NJXzE/c29ydFR5cGU9RiZzb3J0UnVsZT0tMVwiPuaIkOS6pDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCNhaF8xXCI+5q+U5Lu3PC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzExMDAxMDUnLCAn5Zu95LyBJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAwLkhTQ0VJJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL3pzMTEwMDEwLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4SFNDRUlfMVwiPua2qOW5hTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOEhTQ0VJXzE/c29ydFR5cGU9RiZzb3J0UnVsZT0tMVwiPuaIkOS6pDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCNhaF8xXCI+5q+U5Lu3PC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzExMDA1MDUnLCAn5Yib5Lia5p2/JywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTI1LlNQSEtHJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL3pzMTEwMDUwLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4R0VNXzFcIj7mtqjluYU8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjhHRU1fMT9zb3J0VHlwZT1GJnNvcnRSdWxlPS0xXCI+5oiQ5LqkPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sI2FoXzFcIj7mr5Tku7c8L2E+PC9saT4nXVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBPQ0NJREVOVDogey8v5qyn576OXHJcbiAgICAgICAgICAgIGlkOiBcIk9DQ0lERU5UXCIsXHJcbiAgICAgICAgICAgIHNldDogW1xyXG4gICAgICAgICAgICAgICAgWydJTkRVNycsICfpgZPnkLzmlq8nLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMDAuREpJQScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9nYi96c2luZHUuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjNzBfMlwiPuaOkuihjDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOENISU5BXzJcIj7mpoLlv7U8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg2XzJcIj7np5HmioA8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnQ0NNUDcnLCAn57qz5pav6L6+5YWLJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAwLk5EWCcsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9nYi96c0NDTVAuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjNzBfMlwiPuaOkuihjDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOENISU5BXzJcIj7mpoLlv7U8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg2XzJcIj7np5HmioA8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnVUtYNycsICfoi7Hlm71GVCcsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMC5GVFNFJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2diL3pzVUtYLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzcwXzJcIj7mjpLooYw8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjhDSElOQV8yXCI+5qaC5b+1PC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4Nl8yXCI+56eR5oqAPC9hPjwvbGk+J11cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRlVORDogey8v5Z+66YeRXHJcbiAgICAgICAgICAgIGlkOiBcIkZVTkRcIixcclxuICAgICAgICAgICAgc2V0OiBbXHJcbiAgICAgICAgICAgICAgICBbJzAwMDAxMTEnLCAn5rKq5Z+6JywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MS4wMDAwMTEnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20venMwMDAwMTEuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg1MDAyXzRcIj7lsIHln7o8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9mdW5kbGlzdC5odG1sIzMsXzRcIj7lvIDln7o8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg1MDAxM180XCI+RVRGPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4NTAwMTRfNFwiPkxPRjwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWyczOTkxMDMyJywgJ+a3seWfuicsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTAuMzk5MTAzJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3pzMzk5MTAzLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4NTAwMl80XCI+5bCB5Z+6PC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZnVuZGxpc3QuaHRtbCMzLF80XCI+5byA5Z+6PC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4NTAwMTNfNFwiPkVURjwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODUwMDE0XzRcIj5MT0Y8L2E+PC9saT4nXVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBGVVRVUkVTOiB7Ly/mnJ/otKdcclxuICAgICAgICAgICAgaWQ6IFwiRlVUVVJFU1wiLFxyXG4gICAgICAgICAgICBzZXQ6IFtcclxuICAgICAgICAgICAgICAgIFsnSUZEWUxYMScsICfogqHmjIfmnJ/otKcnLCAnLy9kZWxheXdlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTIyMC5JRk0wJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvMjIwLklGTTAnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWwjZnV0dXJlc19jZmZleFwiPuacn+aMhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9ncmlkbGlzdC5odG1sP3N0PVNlbGxPcmRlciZzcj0tMSNmdXR1cmVzX2NmZmV4XCI+5YaF55uYPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9QnV5T3JkZXImc3I9LTEjZnV0dXJlc19jZmZleFwiPuWkluebmDwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydURkdaREoxJywgJ+WbveWAuuacn+i0pycsICcvL2RlbGF5d2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MjIwLlRGUzAnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8yMjAuVEZTMCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbCNmdXR1cmVzX2NmZmV4XCI+5pyf5oyHPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9U2VsbE9yZGVyJnNyPS0xI2Z1dHVyZXNfY2ZmZXhcIj7lhoXnm5g8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbD9zdD1CdXlPcmRlciZzcj0tMSNmdXR1cmVzX2NmZmV4XCI+5aSW55uYPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ0NPTkMwJywgJ+e+juWOn+ayuScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMi5DTDAwWScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLzEwMi5DTDAwWScsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbCNmdXR1cmVzX2NmZmV4XCI+5pyf5oyHPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9U2VsbE9yZGVyJnNyPS0xI2Z1dHVyZXNfY2ZmZXhcIj7lhoXnm5g8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbD9zdD1CdXlPcmRlciZzcj0tMSNmdXR1cmVzX2NmZmV4XCI+5aSW55uYPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ0dMTkMwJywgJ+e+jum7hOmHkScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMS5HQzAwWScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLzEwMS5HQzAwWScsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbCNmdXR1cmVzX2NmZmV4XCI+5pyf5oyHPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWw/c3Q9U2VsbE9yZGVyJnNyPS0xI2Z1dHVyZXNfY2ZmZXhcIj7lhoXnm5g8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZ3JpZGxpc3QuaHRtbD9zdD1CdXlPcmRlciZzcj0tMSNmdXR1cmVzX2NmZmV4XCI+5aSW55uYPC9hPjwvbGk+J11cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRk9SRVg6IHsvL+Wkluaxh1xyXG4gICAgICAgICAgICBpZDogXCJGT1JFWFwiLFxyXG4gICAgICAgICAgICBzZXQ6IFtcclxuICAgICAgICAgICAgICAgIFsnRElOSTAnLCAn576O5YWDJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAwLlVESScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLzEwMC5VREknLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9CYW5rUmF0ZS5odG1sXCI+5Yip546HPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL21vbmV5L2NhbGMvRm9yZXhFeGNoYW5nZS5odG1sXCI+5YWR5o2iPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9GQy5odG1sXCI+5pel5Y6GPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ0VVUlVTRDAnLCAn5qyn5YWDJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTE5LkVVUlVTRCcsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9mb3JleC9FVVJVU0QuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JleC5lYXN0bW9uZXkuY29tL0JhbmtSYXRlLmh0bWxcIj7liKnnjoc8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vbW9uZXkvY2FsYy9Gb3JleEV4Y2hhbmdlLmh0bWxcIj7lhZHmjaI8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JleC5lYXN0bW9uZXkuY29tL0ZDLmh0bWxcIj7ml6XljoY8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnR0JQVVNEMCcsICfoi7HplZEnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMTkuR0JQVVNEJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2ZvcmV4L0dCUFVTRC5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vQmFua1JhdGUuaHRtbFwiPuWIqeeOhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS9tb25leS9jYWxjL0ZvcmV4RXhjaGFuZ2UuaHRtbFwiPuWFkeaNojwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vRkMuaHRtbFwiPuaXpeWOhjwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydVU0RKUFkwJywgJ+aXpeWFgycsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTExOS5VU0RKUFknLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZm9yZXgvVVNESlBZLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9CYW5rUmF0ZS5odG1sXCI+5Yip546HPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL21vbmV5L2NhbGMvRm9yZXhFeGNoYW5nZS5odG1sXCI+5YWR5o2iPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9GQy5odG1sXCI+5pel5Y6GPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ1VTRENOWTAnLCAn5Lq65rCR5biBJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTMzLlVTRENOSCcsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLzEzMy5VU0RDTkgnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9CYW5rUmF0ZS5odG1sXCI+5Yip546HPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL21vbmV5L2NhbGMvRm9yZXhFeGNoYW5nZS5odG1sXCI+5YWR5o2iPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9GQy5odG1sXCI+5pel5Y6GPC9hPjwvbGk+J11cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdmFyIFN0b2NrSW5kZXggPSB7XHJcbiAgICAgICAgdGFiT2JqczogW10sXHJcblxyXG4gICAgICAgIHRhYnNJdGVtSWQ6MCwgICAgICAgICAgIC8v5LqM57qn5qCH562+6aG15a+86Iiq57Si5byV5YC8XHJcbiAgICAgICAgdGFic0luZGV4OiAwLCAgICAgICAgICAgLy/kuIDnuqfmoIfnrb7pobXlr7zoiKrntKLlvJXlgLxcclxuICAgICAgICB0YWJzaHFEYXRhSWQ6IFwiXCIsICAgICAgIC8vaHFEYXRh5pWw5o2u5Lit5a+55bqU55qE5bGe5oCnaWRcclxuXHJcbiAgICAgICAgaW1nRnFjOiAxMjAwMDAsXHJcbiAgICAgICAgYWN0aXZlSW1nOiAwLFxyXG4gICAgICAgIGFwcGx5OiBmdW5jdGlvbiAodGFiSWQsIGNvbnRlbnRJZCwgcmVmQnRuKSB7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3dbXCJfSUZDb2RlXCJdKSB7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFswXVswXSA9IHdpbmRvd1tcIl9JRkNvZGVcIl07XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFswXVsyXSA9ICdodHRwOi8vaHFnbnFocGljLmVhc3Rtb25leS5jb20vRU1fRnV0dXJlczIwMTBQaWN0dXJlUHJvZHVjdGVyL1BpY3R1cmUvJyArIF9JRkNvZGUgKyAnMVJTSW5kZXgucG5nJztcclxuICAgICAgICAgICAgICAgIGhxRGF0YVtcIkZVVFVSRVNcIl0uc2V0WzBdWzNdID0gJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2d6cWgvJyArIF9JRkNvZGUgKyAnLmh0bWwnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3dbXCJfVEZDb2RlXCJdKSB7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFsxXVswXSA9IHdpbmRvd1tcIl9URkNvZGVcIl07XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFsxXVsyXSA9ICdodHRwOi8vaHFnbnFocGljLmVhc3Rtb25leS5jb20vRU1fRnV0dXJlczIwMTBQaWN0dXJlUHJvZHVjdGVyL0luZGV4LmFzcHg/aW1hZ2V0eXBlPVJTSW5kZXgmSUQ9JyArIF9URkNvZGUgKyAnMSc7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFsxXVszXSA9ICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9nenFoLycgKyBfVEZDb2RlICsgJy5odG1sJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl90YWJzRWxlbWVudCA9ICQodGFiSWQpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9ICQoY29udGVudElkKTtcclxuICAgICAgICAgICAgaWYgKHJlZkJ0bikgdGhpcy5fcmVmcmVzaEVsZW1lbnQgPSAkKHJlZkJ0bik7XHJcbiAgICAgICAgICAgIHRoaXMuX2luaXRDb250ZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYkN0cmwgPSBuZXcgTXV0dWFsVGFiKHRoaXMuX3RhYnNFbGVtZW50LCB0aGlzLl9jb250ZW50RWxlbWVudCwgXCJtb3VzZW92ZXJcIiwgdGhpcy50YWJPYmpzLCB0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy50YWJzU2VsZWN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0KHRoaXMudGFic0luZGV4LHRoaXMudGFic2hxRGF0YUlkKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9pbml0Q29udGVudDogZnVuY3Rpb24gKCkgey8v5Yid5aeL5YyW5Li75L2T57uT5p6EXHJcbiAgICAgICAgICAgIHZhciB0YWJzID0gdGhpcy5fdGFic0VsZW1lbnQ7XHJcbiAgICAgICAgICAgIHZhciB0YWJDb250ZW50ID0gdGhpcy5fY29udGVudEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wVGFicyA9IHRhYnMuY2hpbGROb2RlcztcclxuICAgICAgICAgICAgdmFyIHNldEFyciA9IG51bGwsIHNob3dTdHlsZSA9ICcnLCBpbm5lckNvbnRlbnQgPSAnJywgX2FjdGl2ZSA9ICcnO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXBUYWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGVtcFRhYnNbaV0ubm9kZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiT2Jqcy5wdXNoKHRoaXMuc2hvdy5CaW5kKHRoaXMsIGhxRGF0YVt0ZW1wVGFic1tpXS5pZF0pKTtcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzxkaXYgaWQ9XCJocV8nICsgdGVtcFRhYnNbaV0uaWQgKyAnXCInICsgc2hvd1N0eWxlICsgJz4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93U3R5bGUgPT0gJycpIHNob3dTdHlsZSA9ICcgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCInO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZXRBcnIgPSBocURhdGFbdGVtcFRhYnNbaV0uaWRdLnNldDtcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzxkbCBjbGFzcz1cInNjLWNvbnQtdGFic1wiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBzZXRBcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2FjdGl2ZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKSBfYWN0aXZlID0gJyBjbGFzcz1cImF0XCInO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0QXJyW2pdWzFdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8ZHQnICsgX2FjdGl2ZSArICc+PHNwYW4+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyBzZXRBcnJbal1bM10gKyAnXCI+JyArIHNldEFycltqXVsxXSArICc8L2E+PC9zcGFuPjwvZHQ+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IHNldEFyci5sZW5ndGggLSAxKSBpbm5lckNvbnRlbnQgKz0gJzxkZD58PC9kZD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8L2RsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8ZGl2IGNsYXNzPVwic2MtY29udC1pbWdcIj48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPHVsIGNsYXNzPVwic2MtY29udC1pbWdsaW5rXCI+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPC9kaXY+JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0YWJDb250ZW50LmlubmVySFRNTCA9IGlubmVyQ29udGVudDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRhYnNTZWxlY3Q6ZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdmFyIGlucHV0ID0gJChcImhxenhfdGFiSWRcIiksICAgICAgICAvLyAg6I635Y+W6aG16Z2i5Lit6ZqQ6JeP5qCH562+55qE5YWD57SgXHJcbiAgICAgICAgICAgICAgICB0YWJzID0gdGhpcy5fdGFic0VsZW1lbnQuY2hpbGROb2RlcyxcclxuICAgICAgICAgICAgICAgIHRhYnNBcnIgPSBbXSxcclxuICAgICAgICAgICAgICAgIHRhYnNEaWNBcnIgPSBbXSxcclxuICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICB0YWJJZCA9IGlucHV0LmdldEF0dHJpYnV0ZShcImRhdGEtaHF6eC1pZDFcIiksXHJcbiAgICAgICAgICAgICAgICB0YWJJdGVtSWROYW1lID0gaW5wdXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1ocXp4LWlkMlwiKTtcclxuICAgICAgICAgICAgdmFyIHRhYnNEaWN0aW9uYXJ5ID0gWyAgICAgICAgICAvL+agh+etvumhteWQhOe6p+WvvOiIquWvueW6lOWtl+WFuFxyXG4gICAgICAgICAgICAgICAgeyAgIC8v5rKq5rexQ1NJXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6XCJocXp4X0NTSVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OYXZJZDpbXCJDU0lfaEFcIiwgXCJDU0lfc0FcIiwgXCJDU0lfMzAwXCIsIFwiQ1NJX2N5YlwiLCBcIkNTSV9lbVwiXVxyXG4gICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7ICAgLy/pppnmuK9IS1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImhxenhfSEtcIixcclxuICAgICAgICAgICAgICAgICAgICBpdGVtTmF2SWQ6IFtcIkhLX2hzXCIsIFwiSEtfaGNcIiwgXCJIS19nalwiLCBcIkhLX2N5YlwiXVxyXG4gICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgeyAgIC8v5qyn576OT0NDSURFTlRcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJocXp4X09DQ0lERU5UXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbU5hdklkOiBbXCJPQ0NJREVOVF9kcXNcIiwgXCJPQ0NJREVOVF9uc2RrXCIsIFwiT0NDSURFTlRfVUFGVFwiXVxyXG4gICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7ICAgLy/ln7rph5FGVU5EXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6XCJocXp4X0ZVTkRcIixcclxuICAgICAgICAgICAgICAgICAgICBpdGVtTmF2SWQ6IFtcIkZVTkRfaGpcIiwgXCJGVU5EX3NqXCJdXHJcbiAgICAgICAgICAgICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7ICAgLy/mnJ/otKdGVVRVUkVTXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6XCJocXp4X0ZVVFVSRVNcIixcclxuICAgICAgICAgICAgICAgICAgICBpdGVtTmF2SWQ6IFtcIkZVVFVSRVNfZ3V6cWhcIiwgXCJGVVRVUkVTX2d1b3pxaFwiLCBcIkZVVFVSRVNfbXl5XCIsIFwiRlVUVVJFU19taGpcIl1cclxuICAgICAgICAgICAgICAgIH0sICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHsgICAvL+Wkluaxh0ZPUkVYXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiaHF6eF9GT1JFWFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OYXZJZDogW1wiRk9SRVhfZG9sbGFyXCIsIFwiRk9SRVhfRXVyb1wiLCBcIkZPUkVYX3BvdW5kXCIsIFwiRk9SRVhfeWVuXCIsIFwiRk9SRVhfUk1CXCJdXHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICBcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKCF0YWJJZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJzSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJzSXRlbUlkID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFic2hxRGF0YUlkID0gaHFEYXRhLkNTSTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJzRGljdGlvbmFyeS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWJJZCA9PSB0YWJzRGljdGlvbmFyeVtpXS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic2hxRGF0YUlkID0gaHFEYXRhW3RhYnNEaWN0aW9uYXJ5W2ldLmlkLnNsaWNlKDUpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFic0RpY0FyciA9IHRhYnNEaWN0aW9uYXJ5W2ldLml0ZW1OYXZJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNJdGVtSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNocURhdGFJZCA9IGhxRGF0YS5DU0k7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRhYkl0ZW1JZE5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFic0l0ZW1JZCA9IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGFic0RpY0Fycikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYnNEaWNBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFiSXRlbUlkTmFtZSA9PSB0YWJzRGljQXJyW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0l0ZW1JZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0l0ZW1JZCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhYnNbaV0ubm9kZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYnNBcnIucHVzaChocURhdGFbdGFic1tpXS5pZF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciB0YWJzSXRlbU5hdiA9ICQoXCJocV9cIiArIHRhYnNBcnJbdGhpcy50YWJzSW5kZXhdLmlkKS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImR0XCIpLFxyXG4gICAgICAgICAgICAgICAgbGVuID0gdGFic0l0ZW1OYXYubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRhYnNJdGVtTmF2W2ldLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGFic0l0ZW1OYXZbdGhpcy50YWJzSXRlbUlkXS5jbGFzc05hbWUgPSBcImF0XCI7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX3N0YXJ0OiBmdW5jdGlvbiAoaSwgaHFEYXRhSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGFiQ3RybC5zaG93VGFiKGksIHRoaXMuc2hvdy5CaW5kKHRoaXMsIGhxRGF0YUlkKSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93OiBmdW5jdGlvbiAoYURhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5fc01hcmtldCA9IGFEYXRhLmlkO1xyXG4gICAgICAgICAgICB0aGlzLl9vU2V0Tm93ID0gYURhdGEuc2V0O1xyXG4gICAgICAgICAgICB2YXIgX2ltZ0NhbGxiYWNrID0gW107XHJcbiAgICAgICAgICAgIHZhciBfaHFjb2RlTm93ID0gW107XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX29TZXROb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIF9pbWdDYWxsYmFjay5wdXNoKHRoaXMuX2xvYWRJbWcuQmluZCh0aGlzLCBpKSk7XHJcbiAgICAgICAgICAgICAgICBfaHFjb2RlTm93LnB1c2godGhpcy5fb1NldE5vd1tpXVswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFocURhdGFbdGhpcy5fc01hcmtldF0uX2NvbnRhaW5lcnNOb3cpIHtcclxuICAgICAgICAgICAgICAgIGhxRGF0YVt0aGlzLl9zTWFya2V0XS5fY29udGFpbmVyc05vdyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIF90bXBjaGlsZHMgPSAkKFwiaHFfXCIgKyBhRGF0YS5pZCkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzO1xyXG4gICAgICAgICAgICAgICAgdmFyIF90bXBGaXJzdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90bXBjaGlsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3RtcGNoaWxkc1tpXS5ub2RlVHlwZSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90bXBGaXJzdCA9IF90bXBjaGlsZHNbaV0uZmlyc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHFEYXRhW3RoaXMuX3NNYXJrZXRdLl9jb250YWluZXJzTm93LnB1c2goX3RtcEZpcnN0Lm5vZGVUeXBlID09IDEgPyBfdG1wRmlyc3QgOiBfdG1wRmlyc3QubmV4dFNpYmxpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWFEYXRhLmhhc3Njcm9sbCkge1xyXG4gICAgICAgICAgICAgICAgYURhdGEuaGFzc2Nyb2xsID0gbmV3IE11dHVhbFRhYigkKFwiaHFfXCIgKyBhRGF0YS5pZCkuZmlyc3RDaGlsZCwgbnVsbCwgXCJtb3VzZW92ZXJcIiwgX2ltZ0NhbGxiYWNrLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYURhdGEuaGFzc2Nyb2xsLmdldEluZGV4KCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhYnNTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0l0ZW1JZCA9IHRhYnNJdGVtSWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhRGF0YS5oYXNzY3JvbGwuc2hvd1RhYih0aGlzLnRhYnNJdGVtSWQsIHRoaXMuX2xvYWRJbWcuQmluZCh0aGlzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9sb2FkSW1nOiBmdW5jdGlvbiAoc0lEKSB7Ly/liqDovb3lubblvIDlkK/oh6rliLfmlrDlm77niYdcclxuICAgICAgICAgICAgc0lEID0gIXNJRCA/IDAgOiBzSUQ7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coc0lEKTtcclxuICAgICAgICAgICAgaWYgKCFocURhdGFbdGhpcy5fc01hcmtldF0uYWN0aXZlSW1nKSB7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbdGhpcy5fc01hcmtldF0uYWN0aXZlSW1nID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+a7keWKqOaXtuWbnuiwg++8jOS8oHNJROi/m+adpe+8jOiLpeWbvuW3suWIneWni+WMlu+8jOWImeS4jeW8uuihjOivu+WPlu+8jOeUseabtOaWsOe6v+eoi+abtOaWsFxyXG4gICAgICAgICAgICBpZiAoc0lEICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW3RoaXMuX3NNYXJrZXRdLmFjdGl2ZUltZyA9IHNJRDtcclxuICAgICAgICAgICAgICAgIC8vaWYodGhpcy5fb1NldE5vd1tocURhdGFbdGhpcy5fc01hcmtldF0uYWN0aXZlSW1nXS5pbWdMb2FkZWQpIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcmVmcmVzaEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vaWYoc0lEICE9IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hFbGVtZW50Lm9uY2xpY2sgPSB0aGlzLl9sb2FkSW1nLkJpbmQodGhpcywgc0lEKTtcclxuICAgICAgICAgICAgICAgIC8vZWxzZVxyXG4gICAgICAgICAgICAgICAgLy9cdHRoaXMuX3JlZnJlc2hFbGVtZW50Lm9uY2xpY2sgPSB0aGlzLl9sb2FkSW1nLkJpbmQodGhpcywgMCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbWd0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2ltZ3RpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2ltZ3RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLl9sb2FkSW1nLkJpbmQodGhpcywgc0lEKSwgdGhpcy5pbWdGcWMpO1xyXG5cclxuICAgICAgICAgICAgJChcImhxX1wiICsgdGhpcy5fc01hcmtldCkubGFzdENoaWxkLmlubmVySFRNTCA9IHRoaXMuX29TZXROb3dbIXNJRCA/IDAgOiBzSURdWzRdO1xyXG5cclxuICAgICAgICAgICAgdmFyIF9pbmRleCA9IGhxRGF0YVt0aGlzLl9zTWFya2V0XS5hY3RpdmVJbWc7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fb1NldE5vd1tfaW5kZXhdWzJdICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGxJbWcodGhpcy5fb1NldE5vd1tfaW5kZXhdLCBfaW5kZXgpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8v6KGo5piO5bey5Yid5aeL5YyWXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fb1NldE5vd1tfaW5kZXhdLmltZ0xvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb1NldE5vd1tfaW5kZXhdLmltZ0xvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9maWxsSW1nOiBmdW5jdGlvbiAoYVNldCwgaW5kZXgpIHsvL+WKoOi9veWbvueJh1xyXG4gICAgICAgICAgICB2YXIgX2NvbnRhaW5lciA9ICQoXCJocV9cIiArIGhxRGF0YVt0aGlzLl9zTWFya2V0XS5pZCkuZmlyc3RDaGlsZC5uZXh0U2libGluZztcclxuICAgICAgICAgICAgdmFyIF9pbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICAgICAgX2ltZy5zcmMgPSBbYVNldFsyXSwgYVNldFsyXS5pbmRleE9mKCc/JykgPj0gMCA/ICcmJyA6IFwiP1wiLCAncj0nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKV0uam9pbihcIlwiKTtcclxuICAgICAgICAgICAgaWYgKF9pbWcub25yZWFkeXN0YXRlY2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMuaW5zZXJ0QmMuQmluZCh0aGlzLCBfY29udGFpbmVyLCBfaW1nLCBhU2V0WzNdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF9pbWcub25sb2FkID0gdGhpcy5pbnNlcnRCYy5CaW5kKHRoaXMsIF9jb250YWluZXIsIF9pbWcsIGFTZXRbM10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbnNlcnRCYzogZnVuY3Rpb24gKF9jb250YWluZXIsIF9pbWcsIF9oYXNsaW5rKSB7Ly/lg4/nm67moIflrrnlmajloavlhYXlm77niYdcclxuICAgICAgICAgICAgaWYgKF9pbWcub25yZWFkeXN0YXRlY2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX2ltZy5yZWFkeVN0YXRlICE9ICdsb2FkZWQnICYmIF9pbWcucmVhZHlTdGF0ZSAhPSAnY29tcGxldGUnKSByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2NvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoX2hhc2xpbmsgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9saW5rID0gJEMoXCJBXCIpO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsudGFyZ2V0ID0gXCJfYmxhbmtcIjtcclxuICAgICAgICAgICAgICAgIF9saW5rLmNsYXNzTmFtZSA9IFwicGljbGlua1wiO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuaHJlZiA9IF9oYXNsaW5rO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuc2V0QXR0cmlidXRlKFwiaGlkZUZvY3VzXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuYXBwZW5kQ2hpbGQoX2ltZyk7XHJcbiAgICAgICAgICAgICAgICBfY29udGFpbmVyLmFwcGVuZENoaWxkKF9saW5rKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF9jb250YWluZXIuYXBwZW5kQ2hpbGQoX2ltZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2ltZy5oZWlnaHQgPSAxMjM7XHJcbiAgICAgICAgICAgIF9pbWcud2lkdGggPSAyMjA7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vd2luZG93LlN0b2NrSW5kZXggPSBTdG9ja0luZGV4O1xyXG4gICAgXHJcbi8qXHJcbiAgICB2YXIgempseERhdGEgPSB7XHJcbiAgICAgICAgQ0ZfQ1NJOiB7Ly/msqrmt7FcclxuICAgICAgICAgICAgaWQ6IFwiQ0ZfQ1NJXCIsXHJcbiAgICAgICAgICAgIHNldDogWydodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvZHB6amx4Lmh0bWwnLCAnLy9jbXNqcy5lYXN0bW9uZXkuY29tL2RhdGEvempseGltZy96amx4X2xzX21pbi5wbmcnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ0ZfU0hBOiB7Ly/msqrluIJcclxuICAgICAgICAgICAgaWQ6IFwiQ0ZfU0hBXCIsXHJcbiAgICAgICAgICAgIHNldDogWydodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvenMwMDAwMDEuaHRtbCcsICcvL2Ntc2pzLmVhc3Rtb25leS5jb20vZGF0YS96amx4aW1nL3pqbHhfc2hhX21pbi5wbmcnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ0ZfU1pBOiB7Ly/mt7HluIJcclxuICAgICAgICAgICAgaWQ6IFwiQ0ZfU1pBXCIsXHJcbiAgICAgICAgICAgIHNldDogWydodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvenMzOTkwMDEuaHRtbCcsICcvL2Ntc2pzLmVhc3Rtb25leS5jb20vZGF0YS96amx4aW1nL3pqbHhfc3phX21pbi5wbmcnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ0ZfQ1lCOiB7Ly/liJvkuJrmnb9cclxuICAgICAgICAgICAgaWQ6IFwiQ0ZfQ1lCXCIsXHJcbiAgICAgICAgICAgIHNldDogWydodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvenMzOTkwMDYuaHRtbCcsICcvL2Ntc2pzLmVhc3Rtb25leS5jb20vZGF0YS96amx4aW1nL3pqbHhfY3liX21pbi5wbmcnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ0ZfU0hCOiB7Ly/msqpCXHJcbiAgICAgICAgICAgIGlkOiBcIkNGX1NIQlwiLFxyXG4gICAgICAgICAgICBzZXQ6IFsnaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L3pzMDAwMDAzLmh0bWwnLCAnLy9jbXNqcy5lYXN0bW9uZXkuY29tL2RhdGEvempseGltZy96amx4X3NoYl9taW4ucG5nJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIENGX1NaQjogey8v5rexQlxyXG4gICAgICAgICAgICBpZDogXCJDRl9TWkJcIixcclxuICAgICAgICAgICAgc2V0OiBbJ2h0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vempseC96czM5OTAwMy5odG1sJywgJy8vY21zanMuZWFzdG1vbmV5LmNvbS9kYXRhL3pqbHhpbWcvempseF9zemJfbWluLnBuZyddXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZhciBDYXBpdGFsRmxvd3MgPSB7Ly/otYTph5HmtYHlkJFcclxuICAgICAgICB0YWJPYmpzOiBbXSxcclxuICAgICAgICBpbWdGcWM6IDE4MDAwMCxcclxuICAgICAgICBhY3RpdmVJbWc6IDAsXHJcbiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uICh0YWJJZCwgY29udGVudElkLCByZWZCdG4pIHtcclxuICAgICAgICAgICAgdGhpcy5fdGFic0VsZW1lbnQgPSAkKHRhYklkKTtcclxuICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSAkKGNvbnRlbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChyZWZCdG4pIHRoaXMuX3JlZnJlc2hFbGVtZW50ID0gJChyZWZCdG4pO1xyXG4gICAgICAgICAgICB0aGlzLl9pbml0Q29udGVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLl90YWJDdHJsID0gbmV3IE11dHVhbFRhYih0aGlzLl90YWJzRWxlbWVudCwgdGhpcy5fY29udGVudEVsZW1lbnQsIFwibW91c2VvdmVyXCIsIHRoaXMudGFiT2JqcywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfaW5pdENvbnRlbnQ6IGZ1bmN0aW9uICgpIHsvL+WIneWni+WMluS4u+S9k+e7k+aehFxyXG4gICAgICAgICAgICB2YXIgdGFicyA9IHRoaXMuX3RhYnNFbGVtZW50O1xyXG4gICAgICAgICAgICB2YXIgdGFiQ29udGVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50O1xyXG4gICAgICAgICAgICB2YXIgdGVtcFRhYnMgPSB0YWJzLmNoaWxkTm9kZXM7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2hvd1N0eWxlID0gJycsIGlubmVyQ29udGVudCA9ICcnO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXBUYWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGVtcFRhYnNbaV0ubm9kZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiT2Jqcy5wdXNoKHRoaXMuc2hvdy5CaW5kKHRoaXMsIHpqbHhEYXRhW3RlbXBUYWJzW2ldLmlkXSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzxkaXYgY2xhc3M9XCJzYy1jb250LWltZyBwMTAyMFwiIGlkPVwiempseF8nICsgdGVtcFRhYnNbaV0uaWQgKyAnXCInICsgc2hvd1N0eWxlICsgJz4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93U3R5bGUgPT0gJycpIHNob3dTdHlsZSA9ICcgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCInO1xyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPGEgaGlkZWZvY3VzPVwidHJ1ZVwiPjwvYT4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPHVsIGNsYXNzPVwic2MtY29udC1pbWdsaW5rXCI+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvZGV0YWlsLmh0bWxcIj7mjpLooYw8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vempseC9saXN0Lmh0bWxcIj7kuLvlips8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vYmt6ai9qbHIuaHRtbFwiPuebkea1izwvYT48L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGFiQ29udGVudC5pbm5lckhUTUwgPSBpbm5lckNvbnRlbnQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfc3RhcnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGFiQ3RybC5zaG93VGFiKDAsIHRoaXMuc2hvdy5CaW5kKHRoaXMsIHpqbHhEYXRhLkNGX0NTSSkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvdzogZnVuY3Rpb24gKGFEYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NNYXJrZXQgPSBhRGF0YS5pZDtcclxuICAgICAgICAgICAgdGhpcy5fb1NldE5vdyA9IGFEYXRhLnNldDtcclxuICAgICAgICAgICAgdmFyIF9pbWdDYWxsYmFjayA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fbG9hZEltZygpO1xyXG4gICAgICAgICAgICAvLyQoXCJ6amx4X1wiICsgYURhdGEuaWQpLmxhc3RDaGlsZC5pbm5lckhUTUwgPSB0aGlzLl9vU2V0Tm93WzJdO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2xvYWRJbWc6IGZ1bmN0aW9uIChzSUQpIHsvL+WKoOi9veW5tuW8gOWQr+iHquWIt+aWsOWbvueJh1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fcmVmcmVzaEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzSUQgIT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hFbGVtZW50Lm9uY2xpY2sgPSB0aGlzLl9sb2FkSW1nLkJpbmQodGhpcywgc0lEKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoRWxlbWVudC5vbmNsaWNrID0gdGhpcy5fbG9hZEltZy5CaW5kKHRoaXMsIDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW1ndGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9pbWd0aW1lb3V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9pbWd0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5fbG9hZEltZy5CaW5kKHRoaXMpLCB0aGlzLmltZ0ZxYyk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fb1NldE5vd1sxXSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maWxsSW1nKHRoaXMuX29TZXROb3csIHNJRClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2ZpbGxJbWc6IGZ1bmN0aW9uIChhU2V0LCBpbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgX2NvbnRhaW5lciA9ICQoXCJ6amx4X1wiICsgdGhpcy5fc01hcmtldCkuZmlyc3RDaGlsZDtcclxuICAgICAgICAgICAgdmFyIF9pbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICAgICAgX2ltZy5zcmMgPSBbYVNldFsxXSwgYVNldFsxXS5pbmRleE9mKCc/JykgPj0gMCA/ICcmJyA6IFwiP1wiLCAncj0nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKV0uam9pbihcIlwiKTtcclxuICAgICAgICAgICAgaWYgKF9pbWcub25yZWFkeXN0YXRlY2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMuaW5zZXJ0QmMuQmluZCh0aGlzLCBfY29udGFpbmVyLCBfaW1nLCBhU2V0WzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF9pbWcub25sb2FkID0gdGhpcy5pbnNlcnRCYy5CaW5kKHRoaXMsIF9jb250YWluZXIsIF9pbWcsIGFTZXRbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbnNlcnRCYzogZnVuY3Rpb24gKF9jb250YWluZXIsIF9pbWcsIF9oYXNsaW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9pbWcucmVhZHlTdGF0ZSAhPSAnbG9hZGVkJyAmJiBfaW1nLnJlYWR5U3RhdGUgIT0gJ2NvbXBsZXRlJykgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9jb250YWluZXIuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKF9oYXNsaW5rICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfbGluayA9IF9jb250YWluZXI7XHJcbiAgICAgICAgICAgICAgICBfbGluay50YXJnZXQgPSBcIl9ibGFua1wiO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuY2xhc3NOYW1lID0gXCJwaWNsaW5rXCI7XHJcbiAgICAgICAgICAgICAgICBfbGluay5ocmVmID0gX2hhc2xpbms7XHJcbiAgICAgICAgICAgICAgICBfbGluay5hcHBlbmRDaGlsZChfaW1nKTtcclxuICAgICAgICAgICAgICAgIC8vX2NvbnRhaW5lci5hcHBlbmRDaGlsZChfbGluayk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfY29udGFpbmVyLmFwcGVuZENoaWxkKF9pbWcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2lmKF9oYXNsaW5rICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgLy8gdmFyIF9saW5rID0gJEMoXCJBXCIpO1xyXG4gICAgICAgICAgICAvLyBfbGluay50YXJnZXQgPSBcIl9ibGFua1wiO1xyXG4gICAgICAgICAgICAvLyBfbGluay5ocmVmID0gX2hhc2xpbms7XHJcbiAgICAgICAgICAgIC8vIF9saW5rLnNldEF0dHJpYnV0ZShcImhpZGVGb2N1c1wiLHRydWUpO1xyXG4gICAgICAgICAgICAvLyBfbGluay5hcHBlbmRDaGlsZChfaW1nKTtcclxuICAgICAgICAgICAgLy8gX2NvbnRhaW5lci5hcHBlbmRDaGlsZChfbGluayk7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIF9jb250YWluZXIuYXBwZW5kQ2hpbGQoX2ltZyk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgIF9pbWcuaGVpZ2h0ID0gMTIzO1xyXG4gICAgICAgICAgICBfaW1nLndpZHRoID0gMjIwO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB3aW5kb3cuQ2FwaXRhbEZsb3dzID0gQ2FwaXRhbEZsb3dzO1xyXG4qL1xyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhxenhcIikpIHtcclxuICAgICAgICBTdG9ja0luZGV4LmFwcGx5KCdzdG9ja1RhYnMnLCAnc3RvY2tDb250ZW50JywgJ3JlZmJ0bl9zdG9jaycpO1xyXG4gICAgfVxyXG59KSgpO1xyXG5cclxuXHJcblxyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9IcXp4XzEuanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/Ly/msqrmt7HogqHluIJcclxuKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBfaHNncyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiSHNnczFcIik7XHJcbiAgICBpZiAoISFfaHNncykge1xyXG4gICAgICAgIC8vIOaMh+aVsFxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvdWxpc3QubnAvZ2V0P3NlY2lkcz0xLjAwMDAwMSwwLjM5OTAwMSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQsZjEwNCxmMTA1LGYxMDYmZmx0dD0yJmludnQ9MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogXCJjYlwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IDAgJiYganNvbi5kYXRhICYmIGpzb24uZGF0YS5kaWZmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaHN6ID0gXCLkuIror4FcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaHN6TGlua1VwID0gXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwXzBfMF91P3NvcnRUeXBlPUMmc29ydFJ1bGU9LTFcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaHN6TGlua0Rvd24gPSBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMTBfMF8wX2Q/c29ydFR5cGU9QyZzb3J0UnVsZT0xXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hzeiA9IFwi5rex6K+BXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hzekxpbmtVcCA9IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyMF8wXzBfdT9zb3J0VHlwZT1DJnNvcnRSdWxlPS0xXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hzekxpbmtEb3duID0gXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwXzBfMF9kP3NvcnRUeXBlPUMmc29ydFJ1bGU9MVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzx1bD48bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIHNoc3ogKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwic2Vjb25kICcgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5kaWZmW2ldLmYyLCBqc29uLmRhdGEuZGlmZltpXS5mMSkgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48bGk+5raoPGEgaHJlZj1cIicgKyBzaHN6TGlua1VwICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwienMtdXBcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEwNCArICc8L2E+PC9saT48bGk+5bmzJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMDYgKyAnPC9saT48bGk+6LeMPGEgaHJlZj1cIicgKyBzaHN6TGlua0Rvd24gKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJ6cy1kb3duXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMDUgKyAnPC9hPjwvbGk+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3BvaW50UicpLmh0bWwoX2h0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOS4quiCoVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvY2xpc3QvZ2V0P3BuPTEmcHo9MyZwbz0xJm5wPTEmZmx0dD0yJmludnQ9MiZmaWQ9ZjYyJmZzPW06MCt0OjYsbTowK3Q6MTMsbTowK3Q6ODAsbToxK3Q6MiZmaWVsZHM9ZjEsZjIsZjMsZjgsZjEyLGYxMyxmMTQsZjE1MixmNjImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSAmJiBqc29uLmRhdGEuZGlmZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgempsSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjYyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjamwgPSBcIi1cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6amxJbmZvLl9jbGFzcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2psID0gKHBhcnNlRmxvYXQoanNvbi5kYXRhLmRpZmZbaV0uZjYyKSAvIDEwMDAwKS50b0ZpeGVkKDApICsgJ+S4hyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPHVsPjxsaSBjbGFzcz1cImZpcnN0XCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE0ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5kaWZmW2ldLmYyLCBqc29uLmRhdGEuZGlmZltpXS5mMSkgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48bGk+JyArIGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjgpLl9kYXRhICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpqbEluZm8uX2NsYXNzICsgJ1wiPicgKyBjamwgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjaHNnc1BTdG9jaycpLmFwcGVuZChfaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ3NoTnVtKHN0ciwgc3RybGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkWmRmLnRvRml4ZWQoc3RybGVuZ3RoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRaZGYgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSkoalF1ZXJ5KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9Ic2dzXzEuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/Ly8g5pyf5p2D6KGM5oOFXHJcbihmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgX3FxaHEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlFxaHExXCIpO1xyXG4gICAgaWYgKCEhX3FxaHEpIHtcclxuICAgICAgICAvLyDmoIfnmoRcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3N0b2NrL2dldD9zZWNpZD0xLjUxMDA1MCZmaWVsZHM9ZjQzLGY1OSxmMTUyLGY1NyxmNTgsZjEwNyxmMTY5LGYxNzAmZmx0dD0yJmludnQ9MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogXCJjYlwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IDAgJiYganNvbi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZjE3MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaHRtbCA9ICc8bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZjEwNyArICcuJyArIGpzb24uZGF0YS5mNTcgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5mNTggKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBnc2hOdW0oanNvbi5kYXRhLmY0MywgMykgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGdzaE51bShqc29uLmRhdGEuZjE2OSwzKSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgemRmSW5mby5fZGF0YSArICc8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNRcWJkXCIpLmFwcGVuZChfaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g6K6k6LStXHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9jbGlzdC9nZXQ/cG49MSZwej0yJnBvPTEmbnA9MSZmbHR0PTImaW52dD0yJmZpZD1mNiZmcz1tOjEwK3Q6MTczJmZpZWxkcz1mMSxmMixmMyxmNCxmNSxmMTIsZjEzLGYxNCZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogXCJjYlwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9odG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzx1bD48bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxNCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYyICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mNCArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgemRmSW5mby5fZGF0YSArICc8L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGpRdWVyeShcIiNRcXJlbmdvdVwiKS5hcHBlbmQoX2h0bWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOiupOayvVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvY2xpc3QvZ2V0P3BuPTEmcHo9MiZwbz0xJm5wPTEmZmx0dD0yJmludnQ9MiZmaWQ9ZjYmZnM9bToxMCt0OjE3NCZmaWVsZHM9ZjEsZjIsZjMsZjQsZjUsZjEyLGYxMyxmMTQmdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8dWw+PGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTQgKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMiArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjQgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoXCIjUXFyZW5ndVwiKS5hcHBlbmQoX2h0bWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdzaE51bShzdHIsc3RybGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkWmRmLnRvRml4ZWQoc3RybGVuZ3RoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRaZGYgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSkoalF1ZXJ5KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9RcWhxXzEuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/Ly8g5YWo55CD5Li76KaB5oyH5pWwXHJcbihmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgX3p5enMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlFxenl6czFcIik7XHJcbiAgICBpZiAoISFfenl6cykge1xyXG4gICAgICAgIC8vIOaMh+aVsFxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvdWxpc3QubnAvZ2V0P3NlY2lkcz0xLjAwMDAwMSwxMDAuSFNJLDEwMC5ESklBLDEwMC5OMjI1LDEwMC5GVFNFLDEwMS5HQzAwWSwxMDIuQ0wwMFksMTAwLlVESSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQmZmx0dD0yJmludnQ9MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogXCJjYlwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9odG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzx1bD48bGkgY2xhc3M9XCJuYW1lXCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE0ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICcgenhqXCI+JyArIGdzaE51bShqc29uLmRhdGEuZGlmZltpXS5mMiwganNvbi5kYXRhLmRpZmZbaV0uZjEpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBnc2hOdW0oanNvbi5kYXRhLmRpZmZbaV0uZjQsIGpzb24uZGF0YS5kaWZmW2ldLmYxKSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgemRmSW5mby5fZGF0YSArICc8L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGpRdWVyeShcIiNRcXp5enNDb25cIikuYXBwZW5kKF9odG1sKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ3NoTnVtKHN0ciwgc3RybGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkWmRmLnRvRml4ZWQoc3RybGVuZ3RoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRaZGYgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSkoalF1ZXJ5KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9RcXp5enNfMS5qc1xuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/KGZ1bmN0aW9uICgpIHtcclxuICAgIGlmIChqUXVlcnkoXCIjU3RvY2tDb2RlX2JhclwiKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgd2luZG93Lm5ld3N1Z2dlc3QgPSBuZXcgc3VnZ2VzdDIwMTcoe1xyXG4gICAgICAgICAgICBpbnB1dGlkOiAnU3RvY2tDb2RlX2JhcicsXHJcbiAgICAgICAgICAgIG9mZnNldDogeyBsZWZ0OiAwLCB0b3A6IDAgfSxcclxuICAgICAgICAgICAgc2hvd25ld3RpcHM6IHRydWUsXHJcbiAgICAgICAgICAgIG5ld3RpcHNvZmZzZXQ6IHsgbGVmdDogMCwgdG9wOiAwIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSgpKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfbGcuanNcbi8vIG1vZHVsZSBpZCA9IDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vyhmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoalF1ZXJ5KFwiI1N0b2NrQ29kZV9iYXJfc21fY29udGVudFwiKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgd2luZG93Lm5ld3N1Z2dlc3QgPSBuZXcgc3VnZ2VzdDIwMTcoe1xyXG4gICAgICAgICAgICBpbnB1dGlkOiAnU3RvY2tDb2RlX2Jhcl9zbV9jb250ZW50JyxcclxuICAgICAgICAgICAgb2Zmc2V0OiB7IGxlZnQ6IC0xMDcsIHRvcDogMCB9LFxyXG4gICAgICAgICAgICBzaG93bmV3dGlwczogdHJ1ZSxcclxuICAgICAgICAgICAgbmV3dGlwc29mZnNldDogeyBsZWZ0OiAtNSwgdG9wOiAtNCB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGpRdWVyeShcIiNTdG9ja0NvZGVfYmFyX3NtX2xpc3RcIikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHdpbmRvdy5uZXdzdWdnZXN0ID0gbmV3IHN1Z2dlc3QyMDE3KHtcclxuICAgICAgICAgICAgaW5wdXRpZDogJ1N0b2NrQ29kZV9iYXJfc21fbGlzdCcsXHJcbiAgICAgICAgICAgIG9mZnNldDogeyBsZWZ0OiAtMTA3LCB0b3A6IDAgfSxcclxuICAgICAgICAgICAgc2hvd25ld3RpcHM6IGZhbHNlLFxyXG4gICAgICAgICAgICBuZXd0aXBzb2Zmc2V0OiB7IGxlZnQ6IDAsIHRvcDogMCB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxufSgpKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfc20uanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vy8vIOWkluaxh+ihjOaDhVxyXG4oZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIF93aGhxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJXaGhxMVwiKTtcclxuICAgIGlmKCEhX3doaHEpe1xyXG4gICAgICAgIC8vIOaMh+aVsFxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvc3RvY2svZ2V0P3NlY2lkPTEwMC5VREkmZmllbGRzPWY0MyxmNTksZjE1MixmNTcsZjU4LGYxMDcsZjE2OSxmMTcwJmZsdHQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmYxNzApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnPGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmYxMDcgKyAnLicgKyBqc29uLmRhdGEuZjU3ICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZjU4ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5mNDMsIGpzb24uZGF0YS5mNTkpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBnc2hOdW0oanNvbi5kYXRhLmYxNjksIGpzb24uZGF0YS5mNTkpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI1doenNcIikuaHRtbChfaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ3NoTnVtKHN0ciwgc3RybGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkWmRmLnRvRml4ZWQoc3RybGVuZ3RoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRaZGYgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KShqUXVlcnkpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9saXN0L0VNX1doaHFfMS5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi77u/KGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBsZW4gPSA0OyAgICAvLyDorrDlvZXmnaHmlbBcclxuXHJcbiAgICAvLyDojrflj5Zjb29raWVcclxuICAgIHRoaXMuR2V0Q29va2llID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB2YXIgZGMgPSBkb2N1bWVudC5jb29raWU7XHJcbiAgICAgICAgdmFyIHByZWZpeCA9IG5hbWUgKyBcIj1cIjtcclxuICAgICAgICB2YXIgYmVnaW4gPSBkYy5pbmRleE9mKFwiOyBcIiArIHByZWZpeCk7XHJcbiAgICAgICAgaWYgKGJlZ2luID09IC0xKSB7XHJcbiAgICAgICAgICAgIGJlZ2luID0gZGMuaW5kZXhPZihwcmVmaXgpO1xyXG4gICAgICAgICAgICBpZiAoYmVnaW4gIT0gMCkgeyByZXR1cm4gbnVsbCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgYmVnaW4gKz0gMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGVuZCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKFwiO1wiLCBiZWdpbik7XHJcbiAgICAgICAgaWYgKGVuZCA9PSAtMSkge1xyXG4gICAgICAgICAgICBlbmQgPSBkYy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmVzY2FwZShkYy5zdWJzdHJpbmcoYmVnaW4gKyBwcmVmaXgubGVuZ3RoLCBlbmQpKTtcclxuICAgIH07XHJcblxyXG4gICAgdmFyIGRlZiA9IFtcImEtc2gtNjAwMDAwLea1puWPkemTtuihjFwiLCBcImEtc3otMzAwMDE3Lee9keWuv+enkeaKgFwiLCBcImEtc2gtNjAwMDIwLeS4reWOn+mrmOmAn1wiLCBcImEtc2gtNjAwMDA1LeatpumSouiCoeS7vVwiXTtcclxuXHJcbiAgICB0aGlzLm1iID0geyBcImFcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9bI01BUktFVCNdWyNDT0RFI10uaHRtbFwiLCBcImJcIjogXCJodHRwOi8vZ3ViYS5lYXN0bW9uZXkuY29tL3RvcGljLFsjQ09ERSNdLmh0bWxcIiwgXCJjXCI6IFwiaHR0cDovL2Z1bmQuZWFzdG1vbmV5LmNvbS9bI0NPREUjXS5odG1sXCIsIFwiZFwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL1sjQ09ERSNdLmh0bWxcIiwgXCJlXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZ3pxaC9bI0NPREUjXS5odG1sXCIsIFwiZlwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3pzWyNDT0RFI10uaHRtbFwiLCBcImdcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9xaWh1by9bI0NPREUjXS5odG1sXCIsIFwiaFwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL1sjQ09ERSNdLmh0bWxcIiwgXCJpXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vaGsvenNbI0NPREUjXS5odG1sXCIsIFwialwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VzL1sjQ09ERSNdLmh0bWxcIiwgXCJrXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZm9yZXgvWyNDT0RFI10uaHRtbFwiLCBcImxcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9bI01BUktFVCNdWyNDT0RFI10uaHRtbFwiLCBcIm1cIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9nYi96c1sjQ09ERSNdLmh0bWxcIiwgXCJuXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZ2pxaC9bI0NPREUjXS5odG1sXCIsIFwib1wiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3FpcXVhbi9bI0NPREUjXV9bI01BUktFVCNdLmh0bWxcIiwgXCJwXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vM2Jhbi9bI01BUktFVCNdWyNDT0RFI10uaHRtbFwiIH07XHJcbiAgICBpZiAodGhpcy5HZXRDb29raWUoXCJlbV9ocV9mbHNcIikgPT0gXCJuZXdcIikge1xyXG4gICAgICAgIHRoaXMubWIuYSA9IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZmxhc2gvWyNNQVJLRVQjXVsjQ09ERSNdLmh0bWxcIjtcclxuICAgIH1cclxuICAgIC8vW+exu+WeiyhhOuihjOaDhSxiOuiCoeWQpyxjOuWfuumHkSxkOua4r+iCoSxlOuiCoeaMh+acn+i0pyxmOuWkp+ebmOaMh+aVsCxnOuacn+i0pyxoOua4r+iCoSxpOua4r+iCoeaMh+aVsCxqOue+juiCoSxrOuWkluaxhyxsOuWAuuWIuCxtOuWFqOeQg+aMh+aVsCxuOuWbvemZheacn+i0pyxvOuacn+adgyxwOjPmnb8pLOW4guWcuijmsqHmnInkuLowKSzku6PnoIEs5ZCN56ewXVxyXG4gICAgdGhpcy5sZW4gPSBsZW47XHJcbiAgICB0aGlzLmFkZGxlbiA9IDA7XHJcbiAgICB0aGlzLnJldCA9IFtdO1xyXG5cclxuICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLlJlYWRJbmZvKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5SZWFkSW5mbyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgU3RyID0gXCI8ZGl2IGNsYXNzPVxcXCJ0aXRsZVxcXCI+5pyA6L+R6K6/6Zeu6IKh77yaPC9kaXY+PHVsPlwiO1xyXG4gICAgICAgICAgICB2YXIgc2hvd2xpc3QgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgICAgdmFyIF9ja3YgPSB0aGlzLkdldENvb2tpZShcIkhBTGlzdFwiKTtcclxuICAgICAgICAgICAgdmFyIGNrdjtcclxuICAgICAgICAgICAgaWYgKF9ja3YgIT0gXCJcIiAmJiBfY2t2ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBja3YgPSBfY2t2LnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2t2Lmxlbmd0aCA8IGxlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkbGVuID0gbGVuIC0gY2t2Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNrdi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID49IGxlbikgeyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBfdG1jbiA9IGNrdltpXTsgc2hvd2xpc3QucHVzaChja3ZbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0bWNuID0gX3RtY24uc3BsaXQoJy0nKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodG1jbi5sZW5ndGggPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHAgPSB0bWNuWzBdOyB2YXIgbWsgPSB0bWNuWzFdOyB2YXIgY2QgPSB0bWNuWzJdOyB2YXIgbm0gPSB0bWNuWzNdOyB2YXIgbGsgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xrID0gZXZhbChcInRoaXMubWIuXCIgKyB0cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsayA9IF9say5yZXBsYWNlKFwiWyNNQVJLRVQjXVwiLCBtaykucmVwbGFjZShcIlsjQ09ERSNdXCIsIGNkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgU3RyICs9IFwiPGxpPjxhIGhyZWY9XFxcIlwiICsgbGsgKyBcIlxcXCIgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiPlwiICsgbm0gKyBcIjwvYT48L2xpPlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJldC5wdXNoKG1rICsgXCItXCIgKyBjZCArIFwiLVwiICsgbm0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd2xpc3QudG9TdHJpbmcoKS5pbmRleE9mKGRlZltpXSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtY24gPSBkZWZbaV0uc3BsaXQoJy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtY24ubGVuZ3RoID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cCA9IHRtY25bMF07IHZhciBtayA9IHRtY25bMV07IHZhciBjZCA9IHRtY25bMl07IHZhciBubSA9IHRtY25bM107IHZhciBsayA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xrID0gZXZhbChcInRoaXMubWIuXCIgKyB0cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGsgPSBfbGsucmVwbGFjZShcIlsjTUFSS0VUI11cIiwgbWspLnJlcGxhY2UoXCJbI0NPREUjXVwiLCBjZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgKz0gXCI8bGk+PGEgaHJlZj1cXFwiXCIgKyBsayArIFwiXFxcIiB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+XCIgKyBubSArIFwiPC9hPjwvbGk+XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJldC5wdXNoKG1rICsgXCItXCIgKyBjZCArIFwiLVwiICsgbm0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFN0ciArPSBcIjwvdWw+XCI7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlpqZncxXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIlpqZncxXCIpLmlubmVySFRNTCA9IFN0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0KCk7XHJcbn0pKGpRdWVyeSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fWmpmd18xLmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcclxuLy/nvo7lhYPlhZHmjIflrprotKfluIHnvJPlrZhcclxudmFyIEV4UmF0ZSA9IHtcclxuICAgIFVTRDogMSwgIC8v576O5YWDXHJcbiAgICBFVVI6IDAsICAvL+asp+WFg1xyXG4gICAgR0JQOiAwLCAgLy/oi7HplZFcclxuICAgIEFVRDogMCwgIC8v5r6z5YWDXHJcbiAgICBKUFk6IDAsICAvL+aXpeWFg1xyXG4gICAgQ0hGOiAwLCAgLy/nkZ7pg45cclxuICAgIENBRDogMCwgIC8v5Yqg5YWDXHJcbiAgICBIS0Q6IDAsICAvL+a4r+W4gVxyXG4gICAgQ05ZOiAwICAgLy/kurrmsJHluIEgIFxyXG59O1xyXG5cclxuLypcclxuXHRmXHQtIOWOn+i0p+W4gVxyXG5cdHRcdC0g5YWR5o2i6LSn5biBXHJcblx0Zm5cdC0g5Zue6LCD5Ye95pWwXHJcbiovXHJcbmZ1bmN0aW9uIGdldEV4UmF0ZShmLCB0LCBmbikge1xyXG4gICAgdmFyIGkgPSAwO1xyXG4gICAgdmFyIHVwZGF0ZSA9IGZ1bmN0aW9uIChyLCBiKSB7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICAgIGlmIChpID4gMykgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHZhciBtb2QgPSByICsgXCJVU0RcIjtcclxuICAgICAgICBpZiAoYiA9PSBudWxsIHx8IGIgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgYiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBtb2QgPSBcIlVTRFwiICsgcjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBiID0gdHJ1ZTtcclxuICAgICAgICAgICAgbW9kID0gciArIFwiVVNEXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvc3RvY2svZ2V0P2ZsdHQ9MiZmaWVsZHM9ZjQzLGY1NyxmNTgsZjEwNyZzZWNpZD0xMzMuXCIgKyBtb2QgKyBcIiZ1dD1mYTVmZDE5NDNjN2IzODZmMTcyZDY4OTNkYmZiYTEwYiZjYj0/XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBqc29uLmRhdGEuZjQzO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsICE9IFwidW5kZWZpbmVkXCIgJiYgIWlzTmFOKHZhbCkgJiYgdmFsICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gKGIgPT0gZmFsc2UpID8gdmFsIDogcGFyc2VGbG9hdCgxIC8gdmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcIkV4UmF0ZS5cIiArIHIgKyBcIiA9XCIgKyB2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWwoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA9PSBudWxsIHx8IGIgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZShyLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdmFyIGNhbCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xyXG4gICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7IC8v5rKh5pyJ5Y+W5Yiw5rGH546HXHJcbiAgICAgICAgICAgIG9iai52YWx1ZSA9IFwiLi4uXCI7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJhdGUxID0gZXZhbChcIkV4UmF0ZS5cIiArIGYpO1xyXG4gICAgICAgIHZhciByYXRlMiA9IGV2YWwoXCJFeFJhdGUuXCIgKyB0KTtcclxuICAgICAgICB2YXIgcmF0ZSA9IDE7XHJcbiAgICAgICAgaWYgKGlzTmFOKHJhdGUxKSB8fCByYXRlMSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZShmKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHJhdGUyKSB8fCByYXRlMiA9PSAwKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZSh0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByYXRlID0gcGFyc2VGbG9hdChyYXRlMikgLyBwYXJzZUZsb2F0KHJhdGUxKTtcclxuICAgICAgICAgICAgZm4ocmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNhbCgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnbG9kY29udihvYmoxLCBvYmoyLCB0KSB7XHJcbiAgICB2YXIgdmFsID0gb2JqMS52YWx1ZTtcclxuICAgIG9iajIudmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKHZhbCA9PSBudWxsIHx8IHZhbCA9PSBcIlwiKSB7XHJcbiAgICAgICAgYWxlcnQoXCLor7fovpPlhaXpnIDopoHmjaLnrpfnmoTph5Hpop3vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XHJcbiAgICAgICAgYWxlcnQoXCLmjaLnrpfnmoTph5Hpop3lv4XpobvmmK/mlbDlrZfvvIFcIik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh2YWwgPCAwKSB7XHJcbiAgICAgICAgYWxlcnQoXCLph5Hpop3lv4XpobvlpKfkuo7nrYnkuo4w77yBXCIpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHZhciBmbiA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgb2JqMi52YWx1ZSA9IHZhbCAqIHg7XHJcbiAgICB9XHJcbiAgICBpZiAodCA9PSAwKSB7XHJcbiAgICAgICAgZ2V0RXhSYXRlKFwiVVNEXCIsIFwiQ05IXCIsIGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgICAgIG9iajIudmFsdWUgPSAodmFsICogciAvIDMxLjEwMzUpLnRvRml4ZWQoMik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGdldEV4UmF0ZShcIkNOSFwiLCBcIlVTRFwiLCBmdW5jdGlvbiAocikge1xyXG4gICAgICAgICAgICBvYmoyLnZhbHVlID0gKHZhbCAqIHIgKiAzMS4xMDM1KS50b0ZpeGVkKDIpO1xyXG5cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxualF1ZXJ5KFwiLmdvbGRfY2FsYzFcIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCl7XHJcbiAgICBnbG9kY29udihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInVzcHJpY2VfMVwiKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNucHJpY2VfMVwiKSwwKTtcclxufSk7XHJcblxyXG5qUXVlcnkoXCIuZ29sZF9jYWxjMlwiKS5vbihcImNsaWNrXCIsZnVuY3Rpb24oKXtcclxuICAgIGdsb2Rjb252KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY25wcmljZV8yXCIpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidXNwcmljZV8yXCIpLDEpO1xyXG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9nb2xkX2NhbGMuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9Ic2dzXzEnKTsvL+ayqua3seiCoeW4glxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fV2hocV8xJyk7Ly/lpJbmsYfooYzmg4VcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX0hqaHFfMScpOy8v6buE6YeR6KGM5oOFXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9RcWhxXzEnKTsvL+acn+adg+ihjOaDhVxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fUXF6eXpzXzEnKTsvL+WFqOeQg+S4u+imgeaMh+aVsFxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHF6eF8xJyk7Ly/ooYzmg4XkuK3lv4NcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX1NlYXJjaF9sZycpOy8v5bCP5pCc57Si5qGGXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfc20nKTsvL+Wkp+aQnOe0ouahhlxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fWmpmd18xJyk7Ly/mnIDov5Horr/pl67ogqFcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX0dnaHFfMScpOy8v5riv6IKh6KGM5oOFXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9DanNwXzEnKTsvL+i0oue7j+inhumikVxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvZ29sZF9jYWxjJyk7Ly/pu4Tph5HorqHnrpflmahcclxuXHJcblxyXG5mdW5jdGlvbiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGZhdGhlcklkLCB0YWdOYW1lLCBjTmFtZSkge1xyXG4gICAgdmFyIG5vZGUgPSBmYXRoZXJJZCAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmYXRoZXJJZCkgfHwgZG9jdW1lbnQ7XHJcbiAgICB0YWdOYW1lID0gdGFnTmFtZSB8fCBcIipcIjtcclxuICAgIGNOYW1lID0gY05hbWUuc3BsaXQoXCIgXCIpO1xyXG4gICAgdmFyIGNsYXNzTmFtZUxlbmd0aCA9IGNOYW1lLmxlbmd0aDtcclxuICAgIHZhciBsZW4gPSBudWxsO1xyXG4gICAgdmFyIGkgPSBudWxsO1xyXG4gICAgZm9yIChpID0gMCwgbGVuID0gY2xhc3NOYW1lTGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAvL+WIm+W7uuWMuemFjeexu+WQjeeahOato+WImVxyXG4gICAgICAgIGNOYW1lW2ldID0gbmV3IFJlZ0V4cChcIihefFxcXFxzKVwiICsgY05hbWVbaV0ucmVwbGFjZSgvXFwtL2csIFwiXFxcXC1cIikgKyBcIihcXFxcc3wkKVwiKTtcclxuICAgIH1cclxuICAgIHZhciBlbGVtZW50cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSk7XHJcbiAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICB2YXIgbiA9IDA7XHJcbiAgICBmb3IgKGkgPSAwLCBsZW4gPSBlbGVtZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNbaV07XHJcbiAgICAgICAgd2hpbGUgKGNOYW1lW24rK10udGVzdChlbGVtZW50LmNsYXNzTmFtZSkpIHsgICAgLy/kvJjljJblvqrnjq9cclxuICAgICAgICAgICAgaWYgKG4gPT09IGNsYXNzTmFtZUxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gZWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG4gPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gbmV3c0xpc3RNb3VzZW92ZXIoKSB7XHJcbiAgICB2YXIgcGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibmV3c0xpc3RDb250ZW50XCIpLFxyXG4gICAgICAgIGxpcyA9IHBhcmVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaVwiKSxcclxuICAgICAgICBsZW4gPSBsaXMubGVuZ3RoLFxyXG4gICAgICAgIGk7XHJcbiAgICBsZW4gPSBsaXMubGVuZ3RoO1xyXG4gICAgLy/mr4/kuKpsaSDnmoTpvKDmoIfnp7vlhaXkuovku7ZcclxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIGxpc1tpXS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmN2Y3ZjdcIjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxpc1tpXS5vbm1vdXNlb3V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiXCI7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFBhZ2luZyh0b3RsZUNvdW50KXtcclxuICAgIGNvbnNvbGUubG9nKHRvdGxlQ291bnQpO1xyXG4gICAgaWYgKHRvdGxlQ291bnQgPiAxMDAwKSB7XHJcbiAgICAgICAgdG90bGVDb3VudCA9IDEwMDA7XHJcbiAgICB9XHJcbiAgICB2YXIgdG90bGVQYWdlID0gcGFyc2VJbnQodG90bGVDb3VudCAvIF9fUGFnZVNpemUpO1xyXG4gICAgaWYgKHRvdGxlQ291bnQgJSBfX1BhZ2VTaXplICE9IDApIHtcclxuICAgICAgICB0b3RsZVBhZ2UrKztcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwidG90bGVQYWdlXCIsdG90bGVQYWdlKTtcclxuICAgIHZhciBwYWdlc0xpbmtzID0gXCJcIjtcclxuICAgIGlmIChfX1BhZ2VJbmRleCAhPSAxKSB7XHJcbiAgICAgICAgLy8gcGFnZXNMaW5rcyArPSBcIjxhIG9uY2xpY2s9XFxcImphdmFzY3JpcHQ6X19QYWdlSW5kZXggPSBfX1BhZ2VJbmRleCAtIDE7aW5pdE5ld3NMaXN0KCk7XFxcIiBjbGFzcz1cXFwicHJldlxcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPuS4iuS4gOmhtTwvYT5cIjtcclxuICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgaHJlZj1cXFwiXCIrX19FbkNvZGUgK1wiX1wiKyhfX1BhZ2VJbmRleCAtIDEpK1wiLmh0bWxcXFwiIHRhcmdldD1cXFwiX3NlbGZcXFwiIGNsYXNzPVxcXCJwcmV2XFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+5LiK5LiA6aG1PC9hPlwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcGFnZXNMaW5rcyArPSBcIjxhIGNsYXNzPVxcXCJwYWdlLXByZXYgdW5jbGlja1xcXCI+5LiK5LiA6aG1PC9hPlwiO1xyXG4gICAgfVxyXG4gICAgdmFyIHN0YXJ0UGFnZSA9IDE7XHJcbiAgICB2YXIgZW5kUGFnZSA9IHRvdGxlUGFnZTtcclxuICAgIGlmIChlbmRQYWdlID4gNSkge1xyXG4gICAgICAgIGlmIChfX1BhZ2VJbmRleCA+IDMpIHtcclxuICAgICAgICAgICAgc3RhcnRQYWdlID0gX19QYWdlSW5kZXggLSAyO1xyXG4gICAgICAgICAgICBlbmRQYWdlID0gX19QYWdlSW5kZXggKyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZW5kUGFnZSA9IDU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmRQYWdlID4gdG90bGVQYWdlKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0UGFnZSA9IHRvdGxlUGFnZSAtIDQ7XHJcbiAgICAgICAgICAgIGVuZFBhZ2UgPSB0b3RsZVBhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXJ0UGFnZSA+IDEpIHtcclxuICAgICAgICAvLyBwYWdlc0xpbmtzICs9IFwiPGEgb25jbGljaz1cXFwiamF2YXNjcmlwdDpfX1BhZ2VJbmRleCA9IDE7aW5pdE5ld3NMaXN0KCk7XFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+MTwvYT5cIjtcclxuICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgaHJlZj1cXFwiXCIrX19FbkNvZGUrXCIuaHRtbFxcXCIgdGFyZ2V0PVxcXCJfc2VsZlxcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPjE8L2E+XCI7XHJcbiAgICAgICAgaWYoc3RhcnRQYWdlID4gMil7XHJcbiAgICAgICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8c3Bhbj4uLi48L3NwYW4+XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcclxuICAgICAgICBpZiAoX19QYWdlSW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgY2xhc3M9XFxcIm9uXFxcIj5cIiArIGkgKyBcIjwvYT5cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHBhZ2VzTGlua3MgKz0gXCI8YSBvbmNsaWNrPVxcXCJqYXZhc2NyaXB0Ol9fUGFnZUluZGV4ID0gXCIgKyBpICsgXCI7aW5pdE5ld3NMaXN0KCk7XFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+XCIgKyBpICsgXCI8L2E+XCI7XHJcbiAgICAgICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8YSBocmVmPVxcXCJcIitfX0VuQ29kZSArXCJfXCIraStcIi5odG1sXFxcIiB0YXJnZXQ9XFxcIl9zZWxmXFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+XCIgKyBpICsgXCI8L2E+XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGVuZFBhZ2UgPCB0b3RsZVBhZ2UpIHtcclxuICAgICAgICBpZihlbmRQYWdlIDwgdG90bGVQYWdlIC0gMSl7XHJcbiAgICAgICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8c3Bhbj4uLi48L3NwYW4+XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhZ2VzTGlua3MgKz0gXCI8YSBvbmNsaWNrPVxcXCJqYXZhc2NyaXB0Ol9fUGFnZUluZGV4ID0gXCIgKyB0b3RsZVBhZ2UgKyBcIjtpbml0TmV3c0xpc3QoKTtcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj5cIiArIHRvdGxlUGFnZSArIFwiPC9hPlwiO1xyXG4gICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8YSBocmVmPVxcXCJcIitfX0VuQ29kZSArXCJfXCIrdG90bGVQYWdlK1wiLmh0bWxcXFwiIHRhcmdldD1cXFwiX3NlbGZcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj5cIiArIHRvdGxlUGFnZSArIFwiPC9hPlwiO1xyXG5cclxuICAgIH1cclxuICAgIGlmIChfX1BhZ2VJbmRleCA8IHRvdGxlUGFnZSkge1xyXG4gICAgICAgIC8vIHBhZ2VzTGlua3MgKz0gXCI8YSBvbmNsaWNrPVxcXCJqYXZhc2NyaXB0Ol9fUGFnZUluZGV4ID0gX19QYWdlSW5kZXggKyAxO2luaXROZXdzTGlzdCgpO1xcXCIgY2xhc3M9XFxcIm5leHRcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj7kuIvkuIDpobU8L2E+XCI7XHJcbiAgICAgICAgcGFnZXNMaW5rcyArPSBcIjxhIGhyZWY9XFxcIlwiK19fRW5Db2RlICtcIl9cIisoX19QYWdlSW5kZXggKyAxKStcIi5odG1sXFxcIiB0YXJnZXQ9XFxcIl9zZWxmXFxcIiBjbGFzcz1cXFwibmV4dFxcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPuS4i+S4gOmhtTwvYT5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8YSBjbGFzcz1cXFwibmV4dCB1bmNsaWNrXFxcIj7kuIvkuIDpobU8L2E+XCI7XHJcbiAgICB9XHJcblxyXG4gICAgalF1ZXJ5KFwiI3BhZ2VyTm9EaXZcIikuaHRtbChwYWdlc0xpbmtzKTtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbnZlcnRUb05ld3NMaXN0RGF0ZShfZGF0ZSkge1xyXG4gICAgdmFyIHJlZyA9LyhcXGR7NH0pXFwtKFxcZHsyfSlcXC0oXFxkezJ9KSAoXFxkezJ9OlxcZHsyfSkvO1xyXG4gICAgLy8gY29uc29sZS5sb2coX2RhdGUsX2RhdGUubWF0Y2gocmVnKSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhfZGF0ZSxfZGF0ZS5yZXBsYWNlKHJlZyxcIiQx5bm0JDLmnIgkM+aXpSAkNFwiKSk7XHJcbiAgICBpZihfZGF0ZS5sZW5ndGggPiAxNil7XHJcbiAgICAgICAgX2RhdGUgPSBfZGF0ZS5zdWJzdHIoMCwgMTYpLnJlcGxhY2UocmVnLFwiJDHlubQkMuaciCQz5pelICQ0XCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9kYXRlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0Q29sdW1uTGlzdChfanNvbil7XHJcbiAgICB2YXIgX2h0bWwgPSBcIlwiO1xyXG4gICAgaWYoX2pzb24gJiYgX2pzb24uZGF0YSAmJiBfanNvbi5kYXRhLmxpc3Qpe1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2pzb24uZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gX2pzb24uZGF0YS5saXN0W2ldO1xyXG5cclxuICAgICAgICAgICAgdmFyIGNoYXJzaXplID0gMTAwO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGUgPSBcInRleHQgdGV4dC1uby1pbWdcIjtcclxuXHJcbiAgICAgICAgICAgIHZhciBfdXJsID0gXCJodHRwczovL2ZpbmFuY2UuZWFzdG1vbmV5LmNvbS9hL1wiK2l0ZW0uY29kZStcIi5odG1sXCI7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0ubnBfZHN0ID09IFwiQ0ZIXCIpe1xyXG4gICAgICAgICAgICAgICAgX3VybCA9IFwiaHR0cDovL2NhaWZ1aGFvLmVhc3Rtb25leS5jb20vbmV3cy9cIitpdGVtLmNvZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxsaSBpZD1cIm5ld3NUcicraSsnXCI+J1xyXG4gICAgICAgICAgICBpZihpdGVtLmltYWdlICYmIGl0ZW0uaW1hZ2UgIT0gXCJcIil7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGRpdiBjbGFzcz1cImltYWdlXCI+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJytfdXJsKydcIj4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxpbWcgc3JjPVwiJytpdGVtLmltYWdlKydcIiAvPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPC9hPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPC9kaXY+JztcclxuICAgICAgICAgICAgICAgIGNoYXJzaXplID0gODA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZSA9IFwidGV4dFwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgX2Rlc19hbGwgPSAoaXRlbS5zdW1tYXJ5ICYmIGl0ZW0uc3VtbWFyeSAhPSBcIlwiKSA/IGl0ZW0uc3VtbWFyeSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHZhciBfZGVzID0gX2Rlc19hbGw7XHJcbiAgICAgICAgICAgIGlmKF9kZXMubGVuZ3RoID4gY2hhcnNpemUpe1xyXG4gICAgICAgICAgICAgICAgX2RlcyA9IF9kZXMuc3Vic3RyKDAsY2hhcnNpemUpICsgXCIuLi5cIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxkaXYgY2xhc3M9XCInK3N0eWxlKydcIj4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPHAgY2xhc3M9XCJ0aXRsZVwiPic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8YSBocmVmPVwiJytfdXJsKydcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsgaXRlbS50aXRsZSArICc8L2E+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzwvcD4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPHAgY2xhc3M9XCJpbmZvXCIgdGl0bGU9XCInK19kZXNfYWxsKydcIj4nK19kZXMrJzwvcD4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPHAgY2xhc3M9XCJ0aW1lXCI+Jytjb252ZXJ0VG9OZXdzTGlzdERhdGUoaXRlbS5zaG93VGltZSkrJzwvcD4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPC9kaXY+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzwvbGk+JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXRQYWdpbmcoX2pzb24uZGF0YS50b3RsZV9oaXRzKTtcclxuICAgIH1cclxuXHJcbiAgICBqUXVlcnkoXCIjbmV3c0xpc3RDb250ZW50XCIpLmh0bWwoX2h0bWwpO1xyXG4gICAgXHJcbiAgICBuZXdzTGlzdE1vdXNlb3ZlcigpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0U0NDb2x1bW5MaXN0KF9qc29uKXtcclxuICAgIHZhciBfaHRtbCA9IFwiXCI7XHJcbiAgICBpZihfanNvbiAmJiBfanNvbi5kYXRhICYmIF9qc29uLmRhdGEubGlzdCl7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfanNvbi5kYXRhLmxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGl0ZW0gPSBfanNvbi5kYXRhLmxpc3RbaV07XHJcblxyXG4gICAgICAgICAgICB2YXIgX3VybCA9IFwiaHR0cHM6Ly9maW5hbmNlLmVhc3Rtb25leS5jb20vYS9cIitpdGVtLmNvZGUrXCIuaHRtbFwiO1xyXG4gICAgICAgICAgICBpZihpdGVtLm5wX2RzdCA9PSBcIkNGSFwiKXtcclxuICAgICAgICAgICAgICAgIF91cmwgPSBcImh0dHA6Ly9jYWlmdWhhby5lYXN0bW9uZXkuY29tL25ld3MvXCIraXRlbS5jb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGkgJSAxMCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8bGkgY2xhc3M9XCJsaXN0LXR3byBsaXN0LXRvcFwiPic7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZihpICUgMTAgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwibGlzdC10d28gbGlzdC1saW5lLTFcIj4nO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8bGkgY2xhc3M9XCJsaXN0LXR3b1wiPic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxhIGhyZWY9XCInK191cmwrJ1wiIHRhcmdldD1cIl9ibGFua1wiPic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8c3BhbiBjbGFzcz1cImxpc3QtY29udGVudFwiPicraXRlbS50aXRsZSsnPC9zcGFuPic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8c3BhbiBjbGFzcz1cImxpc3QtdGltZVwiPicrY29udmVydFRvTmV3c0xpc3REYXRlKGl0ZW0uc2hvd1RpbWUpKyc8L3NwYW4+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzwvYT4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPC9saT4nO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXRQYWdpbmcoX2pzb24uZGF0YS50b3RsZV9oaXRzKTtcclxuICAgIH1cclxuXHJcbiAgICBqUXVlcnkoXCIjbmV3c0xpc3RDb250ZW50XCIpLmh0bWwoX2h0bWwpO1xyXG4gICAgXHJcbiAgICBuZXdzTGlzdE1vdXNlb3ZlcigpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRRdWVyeVN0cmluZyhuYW1lKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cCgnKF58JiknICsgbmFtZSArICc9KFteJl0qKSgmfCQpJywgJ2knKVxyXG4gICAgdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5tYXRjaChyZWcpXHJcbiAgICBpZiAociAhPSBudWxsKSByZXR1cm4gdW5lc2NhcGUoclsyXSlcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxud2luZG93LmluaXROZXdzTGlzdCA9IGZ1bmN0aW9uICgpe1xyXG4gICAgd2luZG93LnNjcm9sbFRvKCAwLCAwICk7XHJcbiAgICBpZihfX1BhZ2VJbmRleCA8IDEgfHwgX19QYWdlSW5kZXggPiA1MCl7XHJcbiAgICAgICAgX19QYWdlSW5kZXggPSAxO1xyXG4gICAgfVxyXG4gICAgdmFyIF9VUkwgPSBcImh0dHBzOi8vbnAtbGlzdGFwaS5lYXN0bW9uZXkuY29tL2NvbW0vd2ViL2dldE5ld3NCeUNvbHVtbnM/Y2xpZW50PXdlYiZiaXo9d2ViX25ld3NfY29sJmNvbHVtbj0jaWQjJm9yZGVyPTEmbmVlZEludGVyYWN0RGF0YT0wJnBhZ2VfaW5kZXg9I3BhZ2VpbmRleCMmcGFnZV9zaXplPSNwYWdlc2l6ZSMmcmVxX3RyYWNlPSNndWlkIyZmaWVsZHM9Y29kZSxzaG93VGltZSx0aXRsZSxtZWRpYU5hbWUsc3VtbWFyeSxpbWFnZSx1cmwsdW5pcXVlVXJsLE5wX2RzdCZ0eXBlcz0xLDIwJmNhbGxiYWNrPT9cIjtcclxuICAgIGlmKF9fVHlwZSA9PT0gXCIyXCIpe1xyXG4gICAgICAgIF9VUkwgPSBcImh0dHBzOi8vbnAtbGlzdGFwaS5lYXN0bW9uZXkuY29tL2NvbW0vd2ViL2dldE5ld3NCeVNjQ29sdW1ucz9jbGllbnQ9d2ViJmJpej13ZWJfbmV3c19zY2NvbCZzY0NvbHVtbnM9I2lkIyZvcmRlcj0xJnBhZ2VfaW5kZXg9I3BhZ2VpbmRleCMmcGFnZV9zaXplPSNwYWdlc2l6ZSMmcmVxX3RyYWNlPSNndWlkIyZmaWVsZHM9Y29kZSxzaG93VGltZSx0aXRsZSxtZWRpYU5hbWUsc3VtbWFyeSxyZWFsU29ydCxpbWFnZSx1cmwsdW5pcXVlVXJsLE5wX2RzdCZ0eXBlcz0xLDIwJmNhbGxiYWNrPT9cIjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYoZ2V0UXVlcnlTdHJpbmcoXCJlbnZcIikgPT0gXCJ1YXRcIil7XHJcbiAgICAgICAgX1VSTCA9IF9VUkwucmVwbGFjZShcIi8vbnAtbGlzdGFwaS5lYXN0bW9uZXkuY29tXCIsXCIvL25wLWxpc3RhcGktdWF0LmVhc3Rtb25leS5jb21cIik7XHJcbiAgICB9XHJcblxyXG4gICAgX1VSTCA9IF9VUkwucmVwbGFjZShcIiNpZCNcIixfX0NvbHVtbklkKTtcclxuICAgIF9VUkwgPSBfVVJMLnJlcGxhY2UoXCIjcGFnZWluZGV4I1wiLF9fUGFnZUluZGV4KTtcclxuICAgIF9VUkwgPSBfVVJMLnJlcGxhY2UoXCIjcGFnZXNpemUjXCIsX19QYWdlU2l6ZSk7XHJcbiAgICBfVVJMID0gX1VSTC5yZXBsYWNlKFwiI2d1aWQjXCIsKG5ldyBEYXRlKCkpLmdldFRpbWUoKSk7XHJcblxyXG4gICAgY29uc29sZS5sb2coX1VSTCk7XHJcblxyXG4gICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgIHVybDogX1VSTCxcclxuICAgICAgICBkYXRhVHlwZTogJ2pzb25wJyxcclxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihfanNvbil7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKF9qc29uKTtcclxuICAgICAgICAgICAgaWYoX19UeXBlID09PSBcIjFcIil7XHJcbiAgICAgICAgICAgICAgICBpbml0Q29sdW1uTGlzdChfanNvbik7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaW5pdFNDQ29sdW1uTGlzdChfanNvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyBcclxuICAgIHRyeSB7XHJcbiAgICAgICAgaW5pdE5ld3NMaXN0KCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG59KTtcclxuICAgIFxyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL25ld3NsaXN0YmVmb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9"],"names":["modules","installedModules","__webpack_require__","moduleId","module","i","l","exports","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","$","StockHK","jQuery","noConflict","init","videoPlay","rollimgto","remove","unwrap","rollimgpo","left","top","zindex","width","height","opacity","rollimglenght","length","each","toindex","parseInt","this","attr","thisimg","children","css","animate","after","wrapInner","timeroll","addClass","thisindex","index","eq","append","click","qcindex","setInterval","mouseenter","clearInterval","mouseleave","getHSGTStatus","_hsgtstatus","getZDFInfo","str","_class","_data","dZdf","parseFloat","toFixed","getGSHNum","fix","num","intStr","Math","abs","toString","document","getElementById","ajax","type","url","dataType","jsonp","success","json","zdfInfo","html","rc","data","f170","f107","f57","f58","f43","f48","error","diff","zdfInfoA","f187","zdfInfoG","f4","yjbInfo","f188","f13","f12","f193","f186","f2","f189","hgtLR","hgtInfo","ggthLR","ggthInfo","sgtLR","sgtInfo","ggtsLR","ggtsInfo","hk2sh","dayNetAmtIn","before","replace","status","parent","sh2hk","hk2sz","sz2hk","f3","f14","toUpperCase","tabsItemId","tabsState","MutualTab","hqData","StockIndex","a","$C","createElement","Function","Bind","b","arguments","Array","push","apply","window","amineWidth","obj","style","tabs","targets","callbackObjArr","subTargets","tempTabs","childNodes","nodeType","nodeName","toLowerCase","tempTargets","j","activeTab","activeTarget","k","onclick","showTab","onmouseout","_hide","onmouseover","_over","_index","callback","tabIndex","className","display","activeCallback","_timeout","setTimeout","clearTimeout","CSI","id","set","HK","OCCIDENT","FUND","FUTURES","FOREX","tabObjs","tabsIndex","tabshqDataId","imgFqc","activeImg","tabId","contentId","refBtn","_IFCode","_TFCode","_tabsElement","_contentElement","_refreshElement","_initContent","_tabCtrl","tabsSelect","_start","setArr","tabContent","showStyle","innerContent","_active","show","undefined","innerHTML","input","tabsArr","tabsDicArr","getAttribute","tabItemIdName","tabsDictionary","itemNavId","slice","tabsItemNav","getElementsByTagName","len","hqDataId","aData","_sMarket","_oSetNow","_imgCallback","_hqcodeNow","_loadImg","_containersNow","_tmpFirst","_tmpchilds","firstChild","nextSibling","hasscroll","sID","_imgtimeout","lastChild","_fillImg","imgLoaded","aSet","_container","_img","Image","src","indexOf","Date","getTime","join","onreadystatechange","insertBc","onload","_haslink","_link","readyState","target","href","setAttribute","appendChild","gshNum","strlength","_html","shsz","shszLinkUp","shszLinkDown","f1","f104","f106","f105","zjlInfo","f62","cjl","f8","f169","newsuggest","suggest2017","inputid","offset","shownewtips","newtipsoffset","f59","def","GetCookie","dc","cookie","prefix","begin","end","unescape","substring","mb","e","f","g","h","addlen","ret","ReadInfo","Str","showlist","_ckv","ckv","split","_tmcn","tmcn","tp","mk","cd","nm","lk","_lk","eval","ExRate","USD","EUR","GBP","AUD","JPY","CHF","CAD","HKD","CNY","getExRate","t","fn","update","r","mod","val","isNaN","cal","state","rate1","rate2","rate","glodconv","obj1","obj2","alert","on","newsListMouseover","lis","backgroundColor","initPaging","totleCount","totlePage","__PageSize","pagesLinks","startPage","__PageIndex","__EnCode","endPage","convertToNewsListDate","_date","substr","initNewsList","scrollTo","_URL","__Type","reg","RegExp","location","search","match","__ColumnId","_json","initColumnList","list","item","charsize","_url","code","_des_all","np_dst","image","summary","_des","title","showTime","totle_hits","initSCColumnList","ready"],"mappings":"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"}