PageSourceSearch

https://www.cyrela.com.br/themes/cyrela/dist/botao-flutuante.js?tm8tzc

js cyrela.com.br collected 2026-10-02 06:00:25 UTC 193,638 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1676],{65:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval('{/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   m: () => (/* binding */ getUtmValueFromCookie)\n/* harmony export */ });\nfunction getCookieValue(cookieName) {\n  var cookies = document.cookie.split(";");\n  for (var i = 0; i < cookies.length; i++) {\n    var cookie = cookies[i].trim();\n    if (cookie.startsWith(cookieName + "=")) {\n      return cookie.substring(cookieName.length + 1);\n    }\n  }\n  return null;\n}\nfunction getUtmValue(utmzValue, paramName) {\n  var paramStart = utmzValue.indexOf(paramName + "=");\n  if (paramStart !== -1) {\n    var paramEnd = utmzValue.indexOf("&", paramStart);\n    var paramValue = utmzValue.substring(paramStart + paramName.length + 1, paramEnd !== -1 ? paramEnd : undefined);\n    return decodeURIComponent(paramValue.replace(/\\+/g, " "));\n  }\n  return null;\n}\nfunction getUtmValueFromCookie() {\n  var utmzValue = getCookieValue("__utmz");\n  var arrayUtm = [];\n  if (utmzValue) {\n    var utmcsrValue = getUtmValue(utmzValue, "utmcsr");\n    if (utmcsrValue === "(direct)") {\n      var csr = "(none)";\n      var cmd = "(direct)";\n      return arrayUtm = [csr, cmd];\n    } else {\n      var utmcmdValue = getUtmValue(utmzValue, "utmcmd");\n      var _csr = utmcsrValue;\n      var _cmd = utmcmdValue;\n      return arrayUtm = [_csr, _cmd];\n    }\n  } else {\n    return arrayUtm = ["(none)", "(none)"];\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9nZXRDb29raWVzUGFyYW1zLmpzP2EyNWQiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZ2V0Q29va2llVmFsdWUoY29va2llTmFtZSkge1xuICBjb25zdCBjb29raWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY29va2llID0gY29va2llc1tpXS50cmltKCk7XG4gICAgaWYgKGNvb2tpZS5zdGFydHNXaXRoKGNvb2tpZU5hbWUgKyBcIj1cIikpIHtcbiAgICAgIHJldHVybiBjb29raWUuc3Vic3RyaW5nKGNvb2tpZU5hbWUubGVuZ3RoICsgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0VXRtVmFsdWUodXRtelZhbHVlLCBwYXJhbU5hbWUpIHtcbiAgY29uc3QgcGFyYW1TdGFydCA9IHV0bXpWYWx1ZS5pbmRleE9mKHBhcmFtTmFtZSArIFwiPVwiKTtcbiAgaWYgKHBhcmFtU3RhcnQgIT09IC0xKSB7XG4gICAgY29uc3QgcGFyYW1FbmQgPSB1dG16VmFsdWUuaW5kZXhPZihcIiZcIiwgcGFyYW1TdGFydCk7XG4gICAgY29uc3QgcGFyYW1WYWx1ZSA9IHV0bXpWYWx1ZS5zdWJzdHJpbmcoXG4gICAgICBwYXJhbVN0YXJ0ICsgcGFyYW1OYW1lLmxlbmd0aCArIDEsXG4gICAgICBwYXJhbUVuZCAhPT0gLTEgPyBwYXJhbUVuZCA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0VXRtVmFsdWVGcm9tQ29va2llKCkge1xuICBjb25zdCB1dG16VmFsdWUgPSBnZXRDb29raWVWYWx1ZShcIl9fdXRtelwiKTtcbiAgbGV0IGFycmF5VXRtID0gW107XG4gIGlmICh1dG16VmFsdWUpIHtcbiAgICBjb25zdCB1dG1jc3JWYWx1ZSA9IGdldFV0bVZhbHVlKHV0bXpWYWx1ZSwgXCJ1dG1jc3JcIik7XG4gICAgaWYgKHV0bWNzclZhbHVlID09PSBcIihkaXJlY3QpXCIpIHtcbiAgICAgIGxldCBjc3IgPSBcIihub25lKVwiO1xuICAgICAgbGV0IGNtZCA9IFwiKGRpcmVjdClcIjtcbiAgICAgcmV0dXJuIGFycmF5VXRtID0gW2NzciwgY21kXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdXRtY21kVmFsdWUgPSBnZXRVdG1WYWx1ZSh1dG16VmFsdWUsIFwidXRtY21kXCIpO1xuICAgICAgbGV0IGNzciA9IHV0bWNzclZhbHVlO1xuICAgICAgbGV0IGNtZCA9IHV0bWNtZFZhbHVlO1xuICAgICAgcmV0dXJuIGFycmF5VXRtID0gW2NzciwgY21kXTsgICAgIFxuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHJldHVybiBhcnJheVV0bSA9IFtcIihub25lKVwiLCBcIihub25lKVwiXTsgICAgIFxuICB9XG59XG5leHBvcnQgeyBnZXRVdG1WYWx1ZUZyb21Db29raWUgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n\n}')},3522:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{eval("{\n// EXTERNAL MODULE: ./node_modules/glightbox/dist/js/glightbox.min.js\nvar glightbox_min = __webpack_require__(6128);\nvar glightbox_min_default = /*#__PURE__*/__webpack_require__.n(glightbox_min);\n// EXTERNAL MODULE: ./src/js/fetchLocationInfo.js\nvar fetchLocationInfo = __webpack_require__(9917);\n// EXTERNAL MODULE: ./node_modules/localstorage-slim/dist/localstorage-slim.js\nvar localstorage_slim = __webpack_require__(2972);\nvar localstorage_slim_default = /*#__PURE__*/__webpack_require__.n(localstorage_slim);\n// EXTERNAL MODULE: ./src/js/fila-manutencao.js\nvar fila_manutencao = __webpack_require__(5504);\n;// ./src/js/botao-flutuante-parametros.js\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf;
1 var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n\n\n\nvar openLightBox = function openLightBox(hdn_idLog) {\n  // #chat_url value comes from 'Chat URL' settings at 'admin/config/development/mobi/configuration'\n  var iframeUrl = document.querySelector('#chat_url').value + hdn_idLog;\n  var lightbox = glightbox_min_default()({\n    closeOnOutsideClick: false\n  });\n  lightbox.setElements([{\n    'content': \"<iframe src=\\\"\".concat(iframeUrl, \"\\\" style=\\\"width: 100%;height: 100%;\\\"></iframe>\"),\n    'width': '900px'\n  }]);\n  lightbox.open();\n};\n\n/**\n/**\n * Shows the online chat button if available for the given guid.\n *\n * @typedef {Object} ChatAvailabilityParams\n * @property {string} [guid_empreendimento] - The GUID of the empreendimento.\n * @property {string} [guid_regional] - The GUID of the regional.\n *\n * @param {ChatAvailabilityParams}
1 params - An object containing either `guid_empreendimento` or `guid_regional`.\n */\nvar fetchChatAvailability = function fetchChatAvailability(_ref) {\n  var guid_empreendimento = _ref.guid_empreendimento,\n    guid_regional = _ref.guid_regional;\n  var cached = localstorage_slim_default().get('chat-availability');\n  if (cached) {\n    return Promise.resolve(cached);\n  }\n  var apiUrl = \"/api/chat-disponivel\";\n  var params = {};\n  if (guid_empreendimento) {\n    params.guid_empreendimento = guid_empreendimento;\n  } else if (guid_regional) {\n    params.guid_regional = guid_regional;\n  }\n  return fetch(apiUrl + \"?\" + new URLSearchParams(params), {\n    headers: {\n      'Content-Type': 'application/json'\n    }\n  }).then(function (data) {\n    return data.json();\n  }).then(function (data) {\n    var isOnline = data.corretor !== undefined && data.corretor.includes('ONLINE');\n    var result = {\n      online: isOnline,\n      data: data\n    };\n    localstorage_slim_default().set('chat-availability', result, {\n      ttl: 600\n    });\n    return result;\n  });\n};\nvar chatAvailabilityPromise;\nvar loadChatAvailability = function loadChatAvailability() {\n  if (!chatAvailabilityPromise) {\n    chatAvailabilityPromise = evaluateGuidRegional().then(function (params) {\n      if (!(params !== null && params !== void 0 && params.guid_empreendimento) && !(params !== null && params !== void 0 && params.guid_regional)) {\n        return {\n          online: false\n        };\n      }\n      return fetchChatAvailability(params);\n    });\n  }\n  return chatAvailabilityPromise;\n};\nDrupal.behaviors.formAjaxComplete = {\n  attach: function attach(context) {\n    once('webform_ajax', document.body, context).forEach(function () {\n      jQuery(document).ajaxComplete(function (event, xhr, settings) {\n        var formStatus = document.querySelector('[data-form-status]') ? document.querySelector('[data-form-status]').dataset.formStatus : false;\n        var mobiId = document.querySelector('[data-mobi-id]') ? document.querySelector('[data-mobi-id]').dataset.mobiId : false;\n        var formType = document.querySelector('[data-form-type]') ? document.querySelector('[data-form-type]').dataset.formType : false;\n        var tipoFormulario = Drupal.behaviors.formAjaxComplete.customValue;\n        var type = tipoFormulario !== null && tipoFormulario !== void 0 ? tipoFormulario : formType;\n        if (formStatus === 'queued' || formStatus === 'success') {\n          dataLayer.push({\n            'event': 'sendform',\n            'form': type\n          });\n          (0,fila_manutencao/* dadosDosLeads */.zT)(settings.data);\n        }\n        if (formStatus === 'success') {\n          dataLayer.push({\n            'event': 'mobi_success',\n            'form': type\n          });\n          if (type === 'chat') {\n            openLightBox(mobiId);\n            return;\n          }\n        }\n      });\n    });\n  }\n};\nfunction setClientId() {\n  var clientId = '(none)';\n  var cookieGA = document.cookie.split(';').filter(function (item) {\n    return item.includes('_ga=');\n  });\n  if (cookieGA.length > 0) {\n    clientId = cookieGA[0].split('=')[1];\n  }\n  var clientIdElements = document.querySelectorAll('input[name=\"client_id\"]');\n  var _iterator = _createForOfIteratorHelper(clientIdElements),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var element = _step.value;\n      element.value = clientId;\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nvar setGuidRegionalHidden = function setGuidRegionalHidden(guidRegional) {\n  var hiddenInputsGuidRegional = document.querySelectorAll('[name=\"guid_regional\"]');\n  hiddenInputsGuidRegional.forEach(function (element) {\n    element.value = guidRegional;\n  });\n};\nvar saveLocalDataUrlCampaignParams = function saveLocalDataUrlCampaignParams(urlSearchParams) {\n  var params = Object.fromEntries(urlSearchParams.entries());\n  if (!params) return;\n  localstorage_slim_default().set('campaign-params', params, {\n    ttl: 86400\n  }); // 1 dia de vida\n};\nvar changeUTMvalues = function changeUTMvalues() {\n  var paramsLS = localstorage_slim_default().get('campaign-params');\n  if (!paramsLS) return;\n  var utmSourceHidden = document.querySelectorAll(\"[name='utm_source']\");\n  var origem1Hidden = document.querySelectorAll(\"[name='origem1']\");\n  var origem3Hidden = document.querySelectorAll(\"[name='origem3']\");\n  var gclidHidden = document.querySelectorAll(\"[name='gclid']\");\n  var utm_source = paramsLS['scr'] || paramsLS['utm_source'];\n  var origem1 = paramsLS['md'] || paramsLS['utm_medium'];\n  var origem3 = paramsLS['trm'] || paramsLS['utm_term'];\n  var gclid = paramsLS['gclid'];\n  if (utmSourceHidden && utm_source) {\n    utmSourceHidden.forEac
1h(function (element) {\n      element.value = utm_source;\n    });\n  }\n  if (origem1Hidden && origem1) {\n    origem1Hidden.forEach(function (element) {\n      element.value = origem1;\n    });\n  }\n  if (origem3Hidden && origem3) {\n    origem3Hidden.forEach(function (element) {\n      element.value = origem3;\n    });\n  }\n  if (gclidHidden && gclid) {\n    gclidHidden.forEach(function (element) {\n      element.value = gclid;\n    });\n  }\n};\nvar campaignUrlValidate = function campaignUrlValidate() {\n  var searchTerms = window.location.search;\n  if (searchTerms) {\n    var urlSearchParams = new URLSearchParams(window.location.search);\n    saveLocalDataUrlCampaignParams(urlSearchParams);\n  }\n  changeUTMvalues();\n};\nfunction evaluateGuidRegional() {\n  return _evaluateGuidRegional.apply(this, arguments);\n}\nfunction _evaluateGuidRegional() {\n  _evaluateGuidRegional = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n    var _document$querySelect, _document$querySelect2;\n    var guidEmpreendimento, guidRegional, locationInfo;\n    return _regenerator().w(function (_context2) {\n      while (1) switch (_context2.n) {\n        case 0:\n          campaignUrlValidate();\n          setClientId();\n          guidEmpreendimento = (_document$querySelect = document.querySelector('[data-guid-empreendimento]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.dataset.guidEmpreendimento;\n          if (!guidEmpreendimento) {\n            _context2.n = 1;\n            break;\n          }\n          return _context2.a(2, {\n            guid_empreendimento: guidEmpreendimento\n          });\n        case 1:\n          guidRegional = (_document$querySelect2 = document.querySelector('[data-guid-regional]')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.dataset.guidRegional;\n          if (guidRegional) {\n            _context2.n = 3;\n            break;\n          }\n          _context2.n = 2;\n          return (0,fetchLocationInfo/* checkLocationInfo */.G_)();\n        case 2:\n          locationInfo = _context2.v;\n          // only do resquest if needed\n          guidRegional = locationInfo.guid_regional;\n        case 3:\n          if (!guidRegional) {\n            _context2.n = 4;\n            break;\n          }\n          setGuidRegionalHidden(guidRegional);\n          return _context2.a(2, {\n            guid_regional: guidRegional\n          });\n        case 4:\n          return _context2.a(2, {\n            online: false,\n            data: 'Não há guid-regional cadastrado para este produto.'\n          });\n        case 5:\n          return _context2.a(2);\n      }\n    }, _callee2);\n  }));\n  return _evaluateGuidRegional.apply(this, arguments);\n}\n;\nfunction allowContactMethodsForRegion() {\n  return _allowContactMethodsForRegion.apply(this, arguments);\n}\nfunction _allowContactMethodsForRegion() {\n  _allowContactMethodsForRegion = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n    var contactBtns, footerLinks, pdp, locationInfo;\n    return _regenerator().w(function (_context3) {\n      while (1) switch (_context3.n) {\n        case 0:\n          // if PDP, usar guid_regional\n          // else, usar geoloc\n          contactBtns = document.querySelectorAll('.floatContatos button[class*=btnCorretor]');\n          footerLinks = document.querySelectorAll('.links-contato li');\n          pdp = document.querySelector('.unique_immobile');\n          _context3.n = 1;\n          return (0,fetchLocationInfo/* checkLocationInfo */.G_)(pdp ? {\n            state: pdp.dataset.estado,\n            city: pdp.dataset.cidade\n          } : {});\n        case 1:\n          locationInfo = _context3.v;\n          if (locationInfo.state.trim().toLowerCase() == 'são paulo') {\n            // only show whatsapp as method of contact\n            contactBtns.forEach(function (t) {\n              if (!t.classList.contains('btnCorretorWhatsBtn')) t.remove();\n            });\n\n            // reflect the contact methods on footer\n            footerLinks.forEach(function (t) {\n              if (t.innerText.trim().toLowerCase() != 'whatsapp') t.remove();\n            });\n          }\n          contactBtns.forEach(function (b) {\n            return b.classList.remove('hidden');\n          });\n          footerLinks.forEach(function (b) {\n            return b.classList.remove('hidden');\n          });\n        case 2:\n          return _context3.a(2);\n      }\n    }, _callee3);\n  }));\n  return _allowContactMethodsForRegion.apply(this, arguments);\n}\njQuery(window).on('load', function () {\n  allowContactMethodsForRegion();\n});\n\n//Checa a disponibilidade do chat\nDrupal.behaviors.chatAvailable = {\n  attach: function attach(context) {\n    once('chat-available', '.floatBtnContatos', context).forEach(function (button) {\n      loadChatAvailability();\n      jQuery(button).on('mouseenter', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n        var btnCorretorChat, chatLinks, result;\n        return _regenerator().w(function (_context) {\n          while (1) switch (_context.n) {\n            case 0:\n              btnCorretorChat = document.querySelectorAll('.btnCorretorChat');\n              chatLinks = document.querySelectorAll('[href=\"#modal-contato-chat\"]');\n              _context.n = 1;\n              return loadChatAvailability();\n            case 1:\n              result = _context.v;\n              if (!result.online) {\n                _context.n = 2;\n                break;\n              }\n              btnCorretorChat.forEach(function (item) {\n                return item.classList.remove('hidden');\n              });\n              chatLinks.forEach(function (link) {\n                var parent = link.parentElement;\n                if ((parent === null || parent === void 0 ? void 0 : parent.tagName) === 'LI') {\n                  parent.classList.remove('hidden');\n                  return;\n                }\n                link.classList.remove('hidden');\n              });\n              return _context.a(2);\n            case 2:\n              btnCorretorChat.forEach(function (item) {\n                return item.classList.add('hidden');\n              });\n              chatLinks.forEach(function (link) {\n                var parent = link.parentElement;\n                if ((parent === null || parent === void 0 ? void 0 : parent.tagName) === 'LI') {\n                  parent.classList.add('hidden');\n                  return;\n                }\n                link.classList.add('hidden');\n              });\n            case 3:\n              return _context.a(2);\n          }\n        }, _callee);\n      })));\n    });\n  }\n};\n// EXTERNAL MODULE: ./src/js/buildWhatsAppURL.js\nvar buildWhatsAppURL = __webpack_require__(8023);\n// EXTERNAL MODULE: ./src/js/getCookiesParams.js\nvar getCookiesParams = __webpack_require__(65);\n;// ./src/js/sendUtmToForm.js\nfunction sendUtmToForm_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return sendUtmToForm_regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf;
1 var c = [][n] ? t(t([][n]())) : (sendUtmToForm_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, sendUtmToForm_regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, sendUtmToForm_regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), sendUtmToForm_regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", sendUtmToForm_regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), sendUtmToForm_regeneratorDefine2(u), sendUtmToForm_regeneratorDefine2(u, o, \"Generator\"), sendUtmToForm_regeneratorDefine2(u, n, function () { return this; }), sendUtmToForm_regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (sendUtmToForm_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction sendUtmToForm_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } sendUtmToForm_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { sendUtmToForm_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, sendUtmToForm_regeneratorDefine2(e, r, n, t); }\nfunction sendUtmToForm_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction sendUtmToForm_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { sendUtmToForm_asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { sendUtmToForm_asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\nfunction setCookieValueInForm() {\n  return _setCookieValueInForm.apply(this, arguments);\n}\nfunction _setCookieValueInForm() {\n  _setCookieValueInForm = sendUtmToForm_asyncToGenerator(/*#__PURE__*/sendUtmToForm_regenerator().m(function _callee() {\n    var modalBotao, inputCookieSourceList, inputCookieMediumList, utmzCookieValue;\n    return sendUtmToForm_regenerator().w(function (_context) {\n      while (1) switch (_context.n) {\n        case 0:\n          modalBotao = document.querySelector(\"div.floatContatos\");\n          inputCookieSourceList = modalBotao.querySelectorAll('input[data-drupal-selector=\"edit-cookie-source\"]');\n          inputCookieMediumList = modalBotao.querySelectorAll('input[data-drupal-selector=\"edit-cookie-medium\"]');\n          _context.n = 1;\n          return (0,getCookiesParams/* getUtmValueFromCookie */.m)();\n        case 1:\n          utmzCookieValue = _context.v;\n          Array.from(inputCookieSourceList).map(function (i) {\n            i.value = utmzCookieValue[0];\n          });\n          Array.from(inputCookieMediumList).map(function (i) {\n            i.value = utmzCookieValue[1];\n          });\n        case 2:\n          return _context.a(2);\n      }\n    }, _callee);\n  }));\n  return _setCookieValueInForm.apply(this, arguments);\n}\n\n;// ./src/js/botao-flutuante.js\nfunction botao_flutuante_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return botao_flutuante_regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf;
1 var c = [][n] ? t(t([][n]())) : (botao_flutuante_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, botao_flutuante_regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, botao_flutuante_regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), botao_flutuante_regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", botao_flutuante_regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), botao_flutuante_regeneratorDefine2(u), botao_flutuante_regeneratorDefine2(u, o, \"Generator\"), botao_flutuante_regeneratorDefine2(u, n, function () { return this; }), botao_flutuante_regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (botao_flutuante_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction botao_flutuante_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } botao_flutuante_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { botao_flutuante_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, botao_flutuante_regeneratorDefine2(e, r, n, t); }\nfunction botao_flutuante_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction botao_flutuante_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { botao_flutuante_asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { botao_flutuante_asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n\n\n\n\nvar $ = (/* unused pure expression or super */ null && (jQuery));\n\n/**\n * @typedef {Object} RemoteAction\n * @property {`#${string}`} hash - URL hash name to make modal open (must include # symbol)\n * @property {string} [footerLink] - Text to match with footer's link (label), to bind the given action\n * @property {Function} action - the action to me fired\n * */\n\n/**\n * Utility to enable multiple remote actions on contact modal\n *\n * A list of actions, and it's hash trigger\n *\n * @type {RemoteAction[]}\n *\n * */\nvar contactRemoteActions = [{\n  hash: '#modal-contato-whats',\n  footerLink: 'WhatsApp',\n  action: openCorretorWhats\n}, {\n  hash: '#modal-contato-chat',\n  footerLink: 'Chat Online',\n  action: openCorretorChat\n}, {\n  hash: '#modal-contato-tel',\n  footerLink: 'Receba uma ligação',\n  action: openCorretorTel\n}, {\n  hash: '#modal-contato-email',\n  footerLink: 'E-mail',\n  action: openCorretorEmail\n}, {\n  hash: '#modal-contato',\n  action: function action() {}\n}];\n\n// Valida se é um dispositivo mobile\nvar isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\nvar modalFlutuante, btnVoltar, btnFechar;\nvar tab_converse_com_um_corretor, tab_central_de_relacionamento, tab_outros_assuntos;\nvar contentCorretor, contentCentralRelacionamento, contentOutrosAssuntos;\nvar formCorretorWhatsForm, formWhatsappBotForm, formCorretorChat, formCorretorEmail, formCorretorTel;\nvar _elementsInitialized = false;\nvar initElements = function initElements() {\n  if (_elementsInitialized) return;\n  modalFlutuante = document.querySelector('.floatContatos');\n  if (!modalFlutuante) return;\n  btnVoltar = document.querySelector('.floatBtnContatosBack');\n  btnFechar = document.querySelector('.floatBtnContatosClose');\n  tab_converse_com_um_corretor = document.querySelector('.converse_com_um_corretor button');\n  tab_central_de_relacionamento = document.querySelector('.central_de_relacionamento button');\n  tab_outros_assuntos = document.querySelector('.outros_assuntos button');\n  contentCorretor = document.querySelector('.contentCorretor');\n  contentCentralRelacionamento = document.querySelector('.contentCentralRelacionamento');\n  contentOutrosAssuntos = document.querySelector('.contentOutrosAssuntos');\n  formCorretorWhatsForm = document.querySelector('.formCorretorWhatsForm');\n  formWhatsappBotForm = document.querySelector('.formWhatsappBot');\n  formCorretorChat = document.querySelector('.formCorretorChat');\n  formCorretorEmail = document.querySelector('.formCorretorEmail');\n  formCorretorTel = document.querySelector('.formCorretorTel');\n  var observerWebform = new MutationObserver(function () {\n    var webformConfirmation = document.querySelector('.webform-confirmation');\n    if (webformConfirmation) {\n      hideSubtitles();\n    } else {\n      showSubtitles();\n    }\n  });\n  observerWebform.observe(modalFlutuante, {\n    childList: true,\n    subtree: true\n  });\n  _elementsInitialized = true;\n};\nvar hideSubtitles = function hideSubtitles() {\n  var subtitulos = document.querySelectorAll('.subtitulo-form');\n  subtitulos.forEach(function (subtitulo) {\n    subtitulo.style.display = 'none';\n  });\n};\n\n/**\n * \"clicks\" to reset all recently submited lead forms\n */\nvar resetForms = function resetForms() {\n  /** @type NodeListOf<HTMLButtonElement> */\n  var formReseters = document.querySelectorAll(\".js-webform-confirmation-back-link-ajax\");
1\n  formReseters.forEach(function (reseter) {\n    return reseter.click();\n  });\n};\nvar showSubtitles = function showSubtitles() {\n  var subtitulos = document.querySelectorAll('.subtitulo-form');\n  subtitulos.forEach(function (subtitulo) {\n    subtitulo.style.display = null;\n  });\n};\nvar verificarExibicaoWebformConfirmation = function verificarExibicaoWebformConfirmation(val) {\n  var webformConfirmation = val.querySelector('.webform-confirmation');\n  var subtituloForm = val.querySelector('.subtitulo-form');\n  if (!webformConfirmation) {\n    if (subtituloForm) {\n      subtituloForm.style.display = null;\n    }\n  }\n};\nvar hideBackButton = function hideBackButton() {\n  if (!btnVoltar.classList.contains('invisible')) {\n    btnVoltar.classList.add('invisible');\n  }\n};\nvar closeCorretorContatos = function closeCorretorContatos() {\n  if (formCorretorWhatsForm && !formCorretorWhatsForm.classList.contains('hidden')) formCorretorWhatsForm.classList.add('hidden');\n  if (formWhatsappBotForm && !formWhatsappBotForm.classList.contains('hidden')) formWhatsappBotForm.classList.add('hidden');\n  if (formCorretorChat && !formCorretorChat.classList.contains('hidden')) formCorretorChat.classList.add('hidden');\n  if (formCorretorEmail && !formCorretorEmail.classList.contains('hidden')) formCorretorEmail.classList.add('hidden');\n  if (formCorretorTel && !formCorretorTel.classList.contains('hidden')) formCorretorTel.classList.add('hidden');\n  hideBackButton();\n  contentCorretor.classList.add('flex');\n  contentCorretor.classList.remove('hidden');\n  resetForms();\n};\nvar showContentCorretor = function showContentCorretor() {\n  var isInternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  closeCorretorContatos();\n  if (!tab_converse_com_um_corretor.classList.contains('is-active')) {\n    contentCorretor.classList.add('flex');\n    tab_converse_com_um_corretor.classList.add('is-active');\n    contentCorretor.classList.remove('hidden');\n  }\n  if (isInternal) {\n    contentCorretor.classList.add('hidden');\n    contentCorretor.classList.remove('flex');\n  } else {\n    var contactBtns = contentCorretor.querySelectorAll('button[class*=btnCorretor]');\n    if (contactBtns.length == 1) {\n      contactBtns[0].click();\n      btnVoltar.classList.add('!invisible');\n    }\n  }\n  contentCentralRelacionamento.classList.add('hidden');\n  contentCentralRelacionamento.classList.remove('flex');\n  tab_central_de_relacionamento.classList.remove('is-active');\n  contentOutrosAssuntos.classList.add('hidden');\n  contentOutrosAssuntos.classList.remove('flex');\n  tab_outros_assuntos.classList.remove('is-active');\n};\nvar showContentCentralRelacionamento = function showContentCentralRelacionamento() {\n  closeCorretorContatos();\n  hideBackButton();\n  if (!tab_central_de_relacionamento.classList.contains('is-active')) {\n    contentCentralRelacionamento.classList.add('flex');\n    tab_central_de_relacionamento.classList.add('is-active');\n    contentCentralRelacionamento.classList.remove('hidden');\n  } else if (!(tab_central_de_relacionamento.classList.contains('is-active') && contentCentralRelacionamento.classList.contains('flex'))) {\n    contentCentralRelacionamento.classList.add('hidden');\n    contentCentralRelacionamento.classList.remove('flex');\n    tab_central_de_relacionamento.classList.remove('is-active');\n  }\n  contentCorretor.classList.add('hidden');\n  contentCorretor.classList.remove('flex');\n  tab_converse_com_um_corretor.classList.remove('is-active');\n  contentOutrosAssuntos.classList.add('hidden');\n  contentOutrosAssuntos.classList.remove('flex');\n  tab_outros_assuntos.classList.remove('is-active');\n};\nvar showContentOutrosAssuntos = function showContentOutrosAssuntos() {\n  closeCorretorContatos();\n  hideBackButton();\n  if (!tab_outros_assuntos.classList.contains('is-active')) {\n    contentOutrosAssuntos.classList.add('flex');\n    tab_outros_assuntos.classList.add('is-active');\n    contentOutrosAssuntos.classList.remove('hidden');\n  } else if (!(tab_outros_assuntos.classList.contains('is-active') && contentOutrosAssuntos.classList.contains('flex'))) {\n    contentOutrosAssuntos.classList.add('hidden');\n    contentOutrosAssuntos.classList.remove('flex');\n    tab_outros_assuntos.classList.remove('is-active');\n  }\n  contentCorretor.classList.add('hidden');\n  contentCorretor.classList.remove('flex');\n  tab_converse_com_um_corretor.classList.remove('is-active');\n  contentCentralRelacionamento.classList.add('hidden');\n  contentCentralRelacionamento.classList.remove('flex');\n  tab_central_de_relacionamento.classList.remove('is-active');\n};\nvar modalIsOpen = function modalIsOpen() {\n  return !modalFlutuante.classList.contains('hidden');\n};\nvar openCloseModal = function openCloseModal() {\n  modalFlutuante.classList.toggle('hidden');\n  modalFlutuante.classList.toggle('flex');\n  closeCorretorContatos();\n  showContentCorretor();\n  if (isMobile) {\n    document.body.classList.toggle(\"overflow-hidden\");\n    document.body.classList.toggle(\"fixed\");\n  }\n  resetForms();\n};\nfunction openCorretorWhats(_x) {\n  return _openCorretorWhats.apply(this, arguments);\n}\nfunction _openCorretorWhats() {\n  _openCorretorWhats = botao_flutuante_asyncToGenerator(/*#__PURE__*/botao_flutuante_regenerator().m(function _callee3(e) {\n    var _region;\n    var locationInfo, guidElement, region, win, targetUrl;\n    return botao_flutuante_regenerator().w(function (_context3) {\n      while (1) switch (_context3.n) {\n        case 0:\n          _context3.n = 1;
1\n          return (0,fetchLocationInfo/* checkLocationInfo */.G_)();\n        case 1:\n          locationInfo = _context3.v;\n          guidElement = document.querySelector(\"[data-guid-crm]\");\n          region = (guidElement === null || guidElement === void 0 ? void 0 : guidElement.dataset.estado) || locationInfo.state;\n          region = (_region = region) === null || _region === void 0 ? void 0 : _region.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n          if (![\"rio de janeiro\", \"rio grande do sul\"].includes(region)) {\n            _context3.n = 2;\n            break;\n          }\n          openCorretorWhatsForm();\n          return _context3.a(2);\n        case 2:\n          if (!(region === \"sao paulo\")) {\n            _context3.n = 3;\n            break;\n          }\n          openWhatsappBotForm();\n          return _context3.a(2);\n        case 3:\n          win = window.open('about:blank', '_blank');\n          _context3.n = 4;\n          return (0,buildWhatsAppURL/* buildWhatsAppContactUrl */.g)();\n        case 4:\n          targetUrl = _context3.v;\n          openWhatsLink(targetUrl, win);\n        case 5:\n          return _context3.a(2);\n      }\n    }, _callee3);\n  }));\n  return _openCorretorWhats.apply(this, arguments);\n}\nfunction openWhatsLink(targetUrl, win) {\n  dataLayer.push({\n    'event': 'sendform',\n    'form': 'whatsapp'\n  });\n  if (!win) {\n    window.open(targetUrl, '_blank');\n  } else {\n    win.location.href = targetUrl;\n  }\n}\nfunction openCorretorWhatsForm() {\n  return _openCorretorWhatsForm.apply(this, arguments);\n}\nfunction _openCorretorWhatsForm() {\n  _openCorretorWhatsForm = botao_flutuante_asyncToGenerator(/*#__PURE__*/botao_flutuante_regenerator().m(function _callee4() {\n    return botao_flutuante_regenerator().w(function (_context4) {\n      while (1) switch (_context4.n) {\n        case 0:\n          verificarExibicaoWebformConfirmation(formCorretorWhatsForm);\n          setCookieValueInForm();\n          showContentCorretor(true);\n          formCorretorWhatsForm.classList.toggle('hidden');\n          formCorretorWhatsForm.classList.toggle('flex');\n          btnVoltar.classList.remove('invisible');\n          Drupal.behaviors.formAjaxComplete.customValue = 'whatsapp';\n        case 1:\n          return _context4.a(2);\n      }\n    }, _callee4);\n  }));\n  return _openCorretorWhatsForm.apply(this, arguments);\n}\nfunction openWhatsappBotForm() {\n  return _openWhatsappBotForm.apply(this, arguments);\n}\nfunction _openWhatsappBotForm() {\n  _openWhatsappBotForm = botao_flutuante_asyncToGenerator(/*#__PURE__*/botao_flutuante_regenerator().m(function _callee5() {\n    var linkInput, whatsTrackUrl;\n    return botao_flutuante_regenerator().w(function (_context5) {\n      while (1) switch (_context5.n) {\n        case 0:\n          verificarExibicaoWebformConfirmation(formWhatsappBotForm);\n          setCookieValueInForm();\n          showContentCorretor(true);\n          formWhatsappBotForm.classList.toggle('hidden');\n          formWhatsappBotForm.classList.toggle('flex');\n          btnVoltar.classList.remove('invisible');\n          linkInput = formWhatsappBotForm.querySelector('input[name=\"link_whatsapp\"]');\n          if (!linkInput) {\n            _context5.n = 2;\n            break;\n          }\n          _context5.n = 1;\n          return (0,buildWhatsAppURL/* buildParamnsUrl */.w)();\n        case 1:\n          whatsTrackUrl = _context5.v;\n          linkInput.value = decodeURIComponent(whatsTrackUrl);\n        case 2:\n          Drupal.behaviors.formAjaxComplete.customValue = 'whatsapp';\n        case 3:\n          return _context5.a(2);\n      }\n    }, _callee5);\n  }));\n  return _openWhatsappBotForm.apply(this, arguments);\n}\nfunction openCorretorChat(e) {\n  verificarExibicaoWebformConfirmation(formCorretorChat);\n  setCookieValueInForm();\n  showContentCorretor(true);\n  formCorretorChat.classList.toggle('hidden');\n  formCorretorChat.classList.toggle('flex');\n  btnVoltar.classList.remove('invisible');\n  Drupal.behaviors.formAjaxComplete.customValue = 'chat';\n}\nfunction openCorretorEmail(e) {\n  verificarExibicaoWebformConfirmation(formCorretorEmail);\n  setCookieValueInForm();\n  showContentCorretor(true);\n  formCorretorEmail.classList.toggle('hidden');\n  formCorretorEmail.classList.toggle('flex');\n  btnVoltar.classList.remove('invisible');\n  Drupal.behaviors.formAjaxComplete.customValue = 'email';\n}\nfunction openCorretorTel(e) {\n  verificarExibicaoWebformConfirmation(formCorretorTel);\n  setCookieValueInForm();\n  showContentCorretor(true);\n  formCorretorTel.classList.toggle('hidden');\n  formCorretorTel.classList.toggle('flex');\n  btnVoltar.classList.remove('invisible');\n  Drupal.behaviors.formAjaxComplete.customValue = 'telefone';\n}\n\n/** @argument {HashChangeEvent} e */\nvar openModalOnHash = function openModalOnHash(e) {\n  var openingHashes = contactRemoteActions.map(function (i) {\n    return i.hash;\n  });\n  for (var _i = 0, _contactRemoteActions = contactRemoteActions; _i < _contactRemoteActions.length;
1 _i++) {\n    var c = _contactRemoteActions[_i];\n    if (c.hash !== location.hash) continue;\n    if (!modalIsOpen()) openCloseModal();\n    c.action();\n\n    // is coming from same site?\n    if (e !== null && e !== void 0 && e.oldURL) {\n      history.back(); // HACK: don't clutter the history with modal openings/closings\n    } else {\n      history.replaceState(null, '', location.pathname + location.search);\n    }\n  }\n};\nDrupal.behaviors.floatBtnContatos = {\n  attach: function attach(context, settings) {\n    once(\"floatBtnContatos\", \".floatBtnContatos\", context).forEach(function (element) {\n      initElements();\n      element.addEventListener('click', function (e) {\n        openCloseModal();\n      });\n    });\n    once(\"floatBtnContatos\", \"body\", context).forEach(function (_) {\n      window.addEventListener('hashchange', openModalOnHash);\n      openModalOnHash();\n    });\n    once(\"floatBtnContatos\", \"footer .links-contato a\", context).forEach(function (link) {\n      var linkAction = contactRemoteActions.find(function (i) {\n        return i.footerLink === link.text;\n      });\n      link.addEventListener('click', function (e) {\n        e.preventDefault();\n        if (!modalIsOpen()) openCloseModal();\n        (linkAction === null || linkAction === void 0 ? void 0 : linkAction.action) && linkAction.action();\n      });\n    });\n  }\n};\nDrupal.behaviors.floatBtnContatosBack = {\n  attach: function attach(context, settings) {\n    if (!btnVoltar) return;\n    once(\"floatBtnContatosBack\", btnVoltar, context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        closeCorretorContatos();\n      });\n    });\n  }\n};\nDrupal.behaviors.floatBtnContatosClose = {\n  attach: function attach(context, settings) {\n    if (!btnFechar) return;\n    once(\"floatBtnContatosClose\", btnFechar, context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        openCloseModal();\n      });\n    });\n  }\n};\nDrupal.behaviors.btnConverseComCorretor = {\n  attach: function attach(context, settings) {\n    once(\"btnConverseComCorretor\", \".converse_com_um_corretor\", context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        if (!element.classList.contains('is-active')) {\n          showContentCorretor();\n        }\n      });\n    });\n  }\n};\nDrupal.behaviors.btnCentralRelacionamento = {\n  attach: function attach(context, settings) {\n    once(\"btnCentralRelacionamento\", \".central_de_relacionamento\", context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        if (!element.classList.contains('is-active')) {\n          showContentCentralRelacionamento();\n        }\n      });\n    });\n  }\n};\nDrupal.behaviors.btnOutrosAssuntos = {\n  attach: function attach(context, settings) {\n    once(\"btnOutrosAssuntos\", \".outros_assuntos\", context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        if (!element.classList.contains('is-active')) {\n          showContentOutrosAssuntos();\n        }\n      });\n    });\n  }\n};\nDrupal.behaviors.btnCorretorWhatsBtn = {\n  attach: function attach(context, settings) {\n    once(\"btnCorretorWhatsBtn\", \".btnCorretorWhatsBtn\", context).forEach(/*#__PURE__*/function () {\n      var _ref = botao_flutuante_asyncToGenerator(/*#__PURE__*/botao_flutuante_regenerator().m(function _callee(element) {\n        var _yield$checkLocationI, state, realStateCity;\n        return botao_flutuante_regenerator().w(function (_context) {\n          while (1) switch (_context.n) {\n            case 0:\n              _context.n = 1;\n              return (0,fetchLocationInfo/* checkLocationInfo */.G_)();\n            case 1:\n              _yield$checkLocationI = _context.v;\n              state = _yield$checkLocationI.state;\n              realStateCity = document.querySelector('[data-cidade]') ? document.querySelector('[data-cidade]').dataset.cidade : false;\n              element.addEventListener('click', openCorretorWhats);\n            case 2:\n              return _context.a(2);\n          }\n        }, _callee);\n      }));\n      return function (_x2) {\n        return _ref.apply(this, arguments);\n      };\n    }());\n  }\n};\nDrupal.behaviors.btnCorretorChat = {\n  attach: function attach(context, settings) {\n    once(\"btnCorretorChat\", \".btnCorretorChat\", context).forEach(function (element) {\n      element.addEventListener('click', openCorretorChat);\n    });\n  }\n};\nDrupal.behaviors.btnCorretorEmail = {\n  attach: function attach(context, settings) {\n    once(\"btnCorretorEmail\", \".btnCorretorEmail\", context).forEach(function (element) {\n      element.addEventListener('click', openCorretorEmail);\n    });\n  }\n};\nDrupal.behaviors.btnCorretorTel = {\n  attach: function attach(context, settings) {\n    once(\"btnCorretorTel\", \".btnCorretorTel\", context).forEach(function (element) {\n      element.addEventListener('click', openCorretorTel);\n    });\n  }\n};\n\n// botao do modulo de Home e PDC\nDrupal.behaviors.btnFaleComCorretor = {\n  attach: function attach(context, settings) {\n    once(\"btnFaleComCorretor\", \".btnFaleComCorretor\", context).forEach(function (element) {\n      element.addEventListener('click', function (e) {\n        e.preventDefault();\n        openCloseModal();\n      });\n    });\n  }\n};\nDrupal.behaviors.whatsappBotFormSend = {\n  attach: function attach(context) {\n    once('whatsappBotFormSend', document.body, context).forEach(function () {\n      jQuery(document).ajaxComplete(/*#__PURE__*/function () {\n        var _ref2 = botao_flutuante_asyncToGenerator(/*#__PURE__*/botao_flutuante_regenerator().m(function _callee2(event, xhr, settings) {\n          var _document$querySelect;\n          var isSubmitted, data, form_id, formElement, formStatus, win, targetUrl;\n          return botao_flutuante_regenerator().w(function (_context2) {\n            while (1) switch (_context2.n) {\n              case 0:\n                isSubmitted = Array.isArray(xhr.responseJSON) && xhr.responseJSON.some(function (cmd) {\n                  return cmd.command === 'insert' && cmd.data.includes('webform-confirmation');\n                });\n                data = new URLSearchParams(settings.data);\n                form_id = data.get('form_id');\n                if (!(!isSubmitted || !form_id.startsWith('webform_submission_bot_whatsapp'))) {\n                  _context2.n = 1;\n                  break;\n                }\n                return _context2.a(2);\n              case 1:\n                formElement = document.querySelector(\"form.\".concat(form_id.replaceAll('_', '-')));\n                formStatus = ((_document$querySelect = document.querySelector('[data-form-status]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.dataset.formStatus) || null;\n                win = window.open('about:blank', '_blank');\n                _context2.n = 2;\n                return (0,buildWhatsAppURL/* buildWhatsAppContactUrl */.g)();\n              case 2:\n                targetUrl = _context2.v;
1\n                formElement.querySelector('.link-contato').href = targetUrl;\n                openWhatsLink(targetUrl, win);\n              case 3:\n                return _context2.a(2);\n            }\n          }, _callee2);\n        }));\n        return function (_x3, _x4, _x5) {\n          return _ref2.apply(this, arguments);\n        };\n      }());\n    });\n  }\n};\nDrupal.behaviors.corretorWhatsFormSend = {\n  attach: function attach(context) {\n    once('corretorWhatsFormSend', document.body, context).forEach(function () {\n      jQuery(document).ajaxComplete(function (event, xhr, settings) {\n        var _formElement$querySel, _formElement$querySel2;\n        var isSubmitted = Array.isArray(xhr.responseJSON) && xhr.responseJSON.some(function (cmd) {\n          return cmd.command === 'insert' && cmd.data.includes('webform-confirmation');\n        });\n        var data = new URLSearchParams(settings.data);\n        var form_id = data.get('form_id');\n        if (!isSubmitted || !form_id.startsWith('webform_submission_whatsapp_corretor')) {\n          return;\n        }\n        var formElement = document.querySelector(\"form.\".concat(form_id.replaceAll('_', '-')));\n        var formMeta = formElement === null || formElement === void 0 ? void 0 : formElement.querySelector('[data-form-status]');\n        var formStatus = (formMeta === null || formMeta === void 0 ? void 0 : formMeta.dataset.formStatus) || null;\n        var linkElement = formElement === null || formElement === void 0 ? void 0 : formElement.querySelector('.link-contato');\n        var messageElement = formElement === null || formElement === void 0 ? void 0 : formElement.querySelector('p.confirmation-message');\n\n        // adjust message on processing fail\n        if (!['success', 'queued'].includes(formStatus)) {\n          var confirm = formElement.querySelector('.webform-confirmation__message');\n          if (confirm) {\n            confirm.style.display = 'none';\n          }\n          return;\n        }\n        var nomeCorretor = formElement === null || formElement === void 0 || (_formElement$querySel = formElement.querySelector('[data-nome-corretor]')) === null || _formElement$querySel === void 0 ? void 0 : _formElement$querySel.dataset.nomeCorretor;\n        var campoNome = formElement.querySelector('span.nome-corretor');\n        if (nomeCorretor && nomeCorretor != '[webform:handler:remote_post:completed:corretorNome]' && campoNome) {\n          campoNome.innerText = nomeCorretor;\n        } else if (campoNome) {\n          campoNome.classList.add('whitespace-pre');\n          campoNome.innerText = 'um corretor';\n        }\n        var linkContato = formElement === null || formElement === void 0 || (_formElement$querySel2 = formElement.querySelector('[data-link-contato]')) === null || _formElement$querySel2 === void 0 ? void 0 : _formElement$querySel2.dataset.linkContato;\n        if (!linkContato || linkContato == '[webform:handler:remote_post:completed:linkContato]') {\n          if (linkElement) {\n            linkElement.hidden = true;\n            linkElement.classList.add('hidden');\n          }\n          if (messageElement) {\n            messageElement.innerText = \"Em breve entraremos em contato.\";\n          }\n        } else {\n          if (linkElement) {\n            linkElement.href = linkContato;\n          }\n          setTimeout(function (_) {\n            linkElement === null || linkElement === void 0 || linkElement.click();\n          }, 1000);\n        }\n      });\n    });\n  }\n};\n\n// restore guid regional value from submited forms\nDrupal.behaviors.formReseter = {\n  attach: function attach(context, settings) {\n    var _context$classList, _formCorretorWhatsFor;\n    if (!((_context$classList = context.classList) !== null && _context$classList !== void 0 && _context$classList.contains(\"cyrela-contact\"))) {\n      return;\n    }\n    if (context.querySelector('.webform-confirmation__back')) {\n      return;\n    }\n    if (context == ((_formCorretorWhatsFor = formCorretorWhatsForm) === null || _formCorretorWhatsFor === void 0 ? void 0 : _formCorretorWhatsFor.querySelector('form'))) {\n      openCorretorWhatsForm();
1 // fill `link_whatsapp` field again\n    }\n    evaluateGuidRegional();\n    setCookieValueInForm();\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUyMi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQXhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7QUNuVEE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7OztBQ2xCQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7O0F
1BRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9ib3Rhby1mbHV0dWFudGUtcGFyYW1ldHJvcy5qcz9jYzc4Iiwid2VicGFjazovLy8uL3NyYy9qcy9zZW5kVXRtVG9Gb3JtLmpzPzUyMzgiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL2JvdGFvLWZsdXR1YW50ZS5qcz8wNWU3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHTGlnaHRib3ggZnJvbSBcImdsaWdodGJveFwiO1xuaW1wb3J0IHsgY2hlY2tMb2NhdGlvbkluZm8gfSBmcm9tICcuL2ZldGNoTG9jYXRpb25JbmZvJztcbmltcG9ydCBscyBmcm9tICdsb2NhbHN0b3JhZ2Utc2xpbSc7XG5pbXBvcnQgeyBkYWRvc0Rvc0xlYWRzIH0gZnJvbSAnLi9maWxhLW1hbnV0ZW5jYW8nO1xuXG5jb25zdCBvcGVuTGlnaHRCb3ggPSBmdW5jdGlvbiAoaGRuX2lkTG9nKSB7XG4gIC8vICNjaGF0X3VybCB2YWx1ZSBjb21lcyBmcm9tICdDaGF0IFVSTCcgc2V0dGluZ3MgYXQgJ2FkbWluL2NvbmZpZy9kZXZlbG9wbWVudC9tb2JpL2NvbmZpZ3VyYXRpb24nXG4gIGNvbnN0IGlmcmFtZVVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjaGF0X3VybCcpLnZhbHVlICsgaGRuX2lkTG9nXG5cbiAgY29uc3QgbGlnaHRib3ggPSBHTGlnaHRib3goe1xuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IGZhbHNlLFxuICB9KTtcblxuICBsaWdodGJveC5zZXRFbGVtZW50cyhbXG4gICAge1xuICAgICAgJ2NvbnRlbnQnOiBgPGlmcmFtZSBzcmM9XCIke2lmcmFtZVVybH1cIiBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIj48L2lmcmFtZT5gLFxuICAgICAgJ3dpZHRoJzogJzkwMHB4JyxcbiAgICB9XG4gIF0pO1xuXG4gIGxpZ2h0Ym94Lm9wZW4oKTtcbn1cblxuLyoqXG4vKipcbiAqIFNob3dzIHRoZSBvbmxpbmUgY2hhdCBidXR0b24gaWYgYXZhaWxhYmxlIGZvciB0aGUgZ2l2ZW4gZ3VpZC5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDaGF0QXZhaWxhYmlsaXR5UGFyYW1zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2d1aWRfZW1wcmVlbmRpbWVudG9dIC0gVGhlIEdVSUQgb2YgdGhlIGVtcHJlZW5kaW1lbn
1RvLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtndWlkX3JlZ2lvbmFsXSAtIFRoZSBHVUlEIG9mIHRoZSByZWdpb25hbC5cbiAqXG4gKiBAcGFyYW0ge0NoYXRBdmFpbGFiaWxpdHlQYXJhbXN9IHBhcmFtcyAtIEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciBgZ3VpZF9lbXByZWVuZGltZW50b2Agb3IgYGd1aWRfcmVnaW9uYWxgLlxuICovXG5jb25zdCBmZXRjaENoYXRBdmFpbGFiaWxpdHkgPSBmdW5jdGlvbiAoeyBndWlkX2VtcHJlZW5kaW1lbnRvLCBndWlkX3JlZ2lvbmFsIH0pIHtcbiAgY29uc3QgY2FjaGVkID0gbHMuZ2V0KCdjaGF0LWF2YWlsYWJpbGl0eScpO1xuXG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlZCk7XG4gIH1cblxuICBjb25zdCBhcGlVcmwgPSBgL2FwaS9jaGF0LWRpc3Bvbml2ZWxgO1xuXG4gIGNvbnN0IHBhcmFtcyA9IHt9O1xuICBpZiAoZ3VpZF9lbXByZWVuZGltZW50bykge1xuICAgIHBhcmFtcy5ndWlkX2VtcHJlZW5kaW1lbnRvID0gZ3VpZF9lbXByZWVuZGltZW50bztcbiAgfSBlbHNlIGlmIChndWlkX3JlZ2lvbmFsKSB7XG4gICAgcGFyYW1zLmd1aWRfcmVnaW9uYWwgPSBndWlkX3JlZ2lvbmFsO1xuICB9XG5cbiAgcmV0dXJuIGZldGNoKGFwaVVybCArIFwiP1wiICsgbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLCB7XG5cbiAgICBoZWFkZXJzOiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSxcbiAgICB9KVxuICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgcmV0dXJuIGRhdGEuanNvbigpO1xuICAgIH0pXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBpc09ubGluZSA9IGRhdGEuY29ycmV0b3IgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmNvcnJldG9yLmluY2x1ZGVzKCdPTkxJTkUnKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb25saW5lOiBpc09ubGluZSwgZGF0YSB9O1xuXG4gICAgICBscy5zZXQoJ2NoYXQtY
1XZhaWxhYmlsaXR5JywgcmVzdWx0LCB7IHR0bDogNjAwIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuXG5sZXQgY2hhdEF2YWlsYWJpbGl0eVByb21pc2U7XG5cbmNvbnN0IGxvYWRDaGF0QXZhaWxhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIWNoYXRBdmFpbGFiaWxpdHlQcm9taXNlKSB7XG4gICAgY2hhdEF2YWlsYWJpbGl0eVByb21pc2UgPSBldmFsdWF0ZUd1aWRSZWdpb25hbCgpLnRoZW4ocGFyYW1zID0+IHtcbiAgICAgIGlmICghcGFyYW1zPy5ndWlkX2VtcHJlZW5kaW1lbnRvICYmICFwYXJhbXM/Lmd1aWRfcmVnaW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIHsgb25saW5lOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmV0Y2hDaGF0QXZhaWxhYmlsaXR5KHBhcmFtcyk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY2hhdEF2YWlsYWJpbGl0eVByb21pc2U7XG59XG5cblxuXG5EcnVwYWwuYmVoYXZpb3JzLmZvcm1BamF4Q29tcGxldGUgPSB7XG4gIGF0dGFjaDogZnVuY3Rpb24gKGNvbnRleHQpIHtcblxuICAgIG9uY2UoJ3dlYmZvcm1fYWpheCcsIGRvY3VtZW50LmJvZHksIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgalF1ZXJ5KGRvY3VtZW50KS5hamF4Q29tcGxldGUoZnVuY3Rpb24gKGV2ZW50LCB4aHIsIHNldHRpbmdzKSB7XG4gICAgICAgIGNvbnN0IGZvcm1TdGF0dXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mb3JtLXN0YXR1c10nKSA/XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZm9ybS1zdGF0dXNdJykuZGF0YXNldC5mb3JtU3RhdHVzIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IG1vYmlJZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLW1vYmktaWRdJykgP1xuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLW1vYmktaWRdJykuZGF0YXNldC5tb2JpSWQgOiBmYWxzZTtcbiAgICAgICAgY29uc3QgZm9ybVR5cGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mb3JtLXR5cGVdJykgP1xuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZvcm0tdHlwZV0nKS5kYXRhc2V0LmZvcm1UeXBlIDogZmFsc2U7XG5cbiAgICAgICAgbGV0IHRpcG9Gb3JtdWxhcmlvID0gRHJ1cGFsLmJlaGF2aW9ycy5mb3JtQWpheENvbXBsZXRlLmN1c3RvbVZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aXBvRm9ybXVsYXJpbyA/PyBmb3JtVHlwZTtcblxuICAgICAgICBpZiAoZm9ybVN0YXR1cyA9PT0gJ3F1ZXVlZCcgfHwgZm9ybVN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgZGF0YUxheWVyLnB1c2goe1xuICAgICAgICAgICAgJ2V2ZW50JzogJ3NlbmRmb3JtJyxcbiAgICAgICAgICAgICdmb3JtJzogdHlwZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkYWRvc0Rvc0xlYWRzKHNldHRpbmdzLmRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1TdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIGRhdGFMYXllci5wdXNoKHtcbiAgICAgICAgICAgICdldmVudCc6ICdtb2JpX3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ2Zvcm0nOiB0eXBlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdjaGF0Jykge1xuICAgICAgICAgICAgb3BlbkxpZ2h0Qm94KG1vYmlJZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRDbGllbnRJZCgpIHtcbiAgbGV0IGNsaWVudElkID0gJyhub25lKSc7XG4gIGNvbnN0IGNvb2tpZUdBID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pbmNsdWRlcygnX2dhPScpKTtcblxuICBpZiAoY29va2llR0EubGVuZ3RoID4gMCkge1xuICAgIGNsaWVudElkID0gY29va2llR0FbMF0uc3BsaXQoJz0nKVsxXVxuICB9XG5cbiAgY29uc3QgY2xpZW50SWRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9XCJjbGllbnRfaWRcIl0nKTtcblxuICBmb3IgKGxldCBlbGVtZW50IG9mIGNsaWVudElkRWxlbWVudHMpIHtcbiAgICBlbGVtZW50LnZhbHVlID0gY2xpZW50SWQ7XG4gIH1cbn1cblxuY29uc3Qgc2V0R3VpZFJlZ2lvbmFsSGlkZGVuID0gZnVuY3Rpb24gKGd1aWRSZWdpb25hbCkge1xuICBsZXQgaGlkZGVuSW5wdXRzR3VpZFJlZ2lvbmFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW25hbWU9XCJndWlkX3JlZ2lvbmFsXCJdJylcblxuICBoaWRkZW5JbnB1dHNHdWlkUmVnaW9uYWwuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICBlbGVtZW50LnZhbHVlID0gZ3VpZFJlZ2lvbmFsXG4gIH0pO1xufVxuXG5jb25zdCBzYXZlTG9jYWxEYXRhVXJsQ2FtcGFpZ25QYXJhbXMgPSBmdW5jdGlvbiAodXJsU2VhcmNoUGFyYW1zKSB7XG4gIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKTtcblxuICBpZiAoIXBhcmFtcykgcmV0dXJuO1xuXG4gIGxzLnNldCgnY2FtcGFpZ24tcGFyYW1zJywgcGFyYW1zLCB7IHR0bDogODY0MDAgfSkgLy8gMSBkaWEgZGUgdmlkYVxufVxuXG5jb25zdCBjaGFuZ2VVVE12YWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHBhcmFtc0xTID0gbHMuZ2V0KCdjYW1wYWlnbi1wYXJhbXMnKTtcblxuICBpZiAoIXBhcmFtc0xTKSByZXR1cm47XG5cbiAgY29uc3QgdXRtU291cmNlSGlkZGVuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPSd1dG1fc291cmNlJ11cIilcbiAgY29uc3Qgb3JpZ2VtMUhpZGRlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT0nb3JpZ2VtMSddXCIpXG4gIGNvbnN0IG9yaWdlbTNIaWRkZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9J29yaWdlbTMnXVwiKVxuICBjb25zdCBnY2xpZEhpZGRlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT0nZ2NsaWQnXVwiKVxuXG4gIGNvbnN0IHV0bV9zb3VyY2UgPSBwYXJhbXNMU1snc2NyJ10gfHwgcGFyYW1zTFNbJ3V0bV9zb3VyY2UnXTtcbiAgY29uc3Qgb3JpZ2VtMSA9IHBhcmFtc0xTWydtZCddIHx8IHBhcmFtc0xTWyd1dG1fbWVkaXVtJ107XG4gIGNvbnN0IG9yaWdlbTMgPSBwYXJhbXNMU1sndHJtJ10gfHwgcGFyYW1zTFNbJ3V0bV90ZXJtJ107XG4gIGNvbnN0IGdjbGlkID0gcGFyYW1zTFNbJ2djbGlkJ107XG5cbiAgaWYgKHV0bVNvdXJjZUhpZGRlbiAmJiB1dG1fc291cmNlKSB7XG4gICAgdXRtU291cmNlSGlkZGVuLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBlbGVtZW50LnZhbHVlID0gdXRtX3NvdXJjZVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKG9yaWdlbTFIaWRkZW4gJiYgb3JpZ2VtMSkge1xuICAgIG9yaWdlbTFIaWRkZW4uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGVsZW1lbnQudmFsdWUgPSBvcmlnZW0xXG4gICAgfSk7XG4gIH1cblxuICBpZiAob3JpZ2VtM0hpZGRlbiAmJiBvcmlnZW0zKSB7XG4gICAgb3JpZ2VtM0hpZGRlbi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgZWxlbWVudC52YWx1ZSA9IG9yaWdlbTNcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChnY2xpZEhpZGRlbiAmJiBnY2xpZCkge1xuICAgIGdjbGlkSGlkZGVuLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBlbGVtZW50LnZhbHVlID0gZ2NsaWRcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBjYW1wYWlnblVybFZhbGlkYXRlID0gZnVuY3Rpb24gKCkge1xuICBjb25zdCBzZWFyY2hUZXJtcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG5cbiAgaWYgKHNlYXJjaFRlcm1zKSB7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBzYXZlTG9jYWxEYXRhVXJsQ2FtcGFpZ25QYXJhbXModXJsU2VhcmNoUGFyYW1zKVxuICB9XG4gIGNoYW5nZVVUTXZhbHVlcygpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBldmFsdWF0ZUd1aWRSZWdpb25hbCgpIHtcbiAgY2FtcGFpZ25VcmxWYWxpZGF0ZSgpO1xuICBzZXRDbGllbnRJZCgpO1xuXG4gIGNvbnN0IGd1aWRFbXByZWVuZGltZW50byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWd1aWQtZW1wcmVlbmRpbWVudG9dJyk/LmRhdGFzZXQuZ3VpZEVtcHJlZW5kaW1lbn
1RvXG4gIGlmIChndWlkRW1wcmVlbmRpbWVudG8pIHtcbiAgICByZXR1cm4geyBndWlkX2VtcHJlZW5kaW1lbnRvOiBndWlkRW1wcmVlbmRpbWVudG8gfTtcbiAgfVxuXG4gIGxldCBndWlkUmVnaW9uYWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1ndWlkLXJlZ2lvbmFsXScpPy5kYXRhc2V0Lmd1aWRSZWdpb25hbFxuICBpZiAoIWd1aWRSZWdpb25hbCkge1xuICAgIGxldCBsb2NhdGlvbkluZm8gPSBhd2FpdCBjaGVja0xvY2F0aW9uSW5mbygpOyAvLyBvbmx5IGRvIHJlc3F1ZXN0IGlmIG5lZWRlZFxuICAgIGd1aWRSZWdpb25hbCA9IGxvY2F0aW9uSW5mby5ndWlkX3JlZ2lvbmFsO1xuICB9XG5cbiAgaWYgKGd1aWRSZWdpb25hbCkge1xuICAgIHNldEd1aWRSZWdpb25hbEhpZGRlbihndWlkUmVnaW9uYWwpO1xuICAgIHJldHVybiB7IGd1aWRfcmVnaW9uYWw6IGd1aWRSZWdpb25hbCB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBvbmxpbmU6IGZhbHNlLFxuICAgICAgZGF0YTogJ07Do28gaMOhIGd1aWQtcmVnaW9uYWwgY2FkYXN0cmFkbyBwYXJhIGVzdGUgcHJvZHV0by4nXG4gICAgfTtcbiAgfVxufTtcblxuYXN5bmMgZnVuY3Rpb24gYWxsb3dDb250YWN0TWV0aG9kc0ZvclJlZ2lvbigpIHtcbiAgLy8gaWYgUERQLCB1c2FyIGd1aWRfcmVnaW9uYWxcbiAgLy8gZWxzZSwgdXNhciBnZW9sb2NcbiAgY29uc3QgY29udGFjdEJ0bnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmxvYXRDb250YXRvcyBidXR0b25bY2xhc3MqPWJ0bkNvcnJldG9yXScpXG4gIGNvbnN0IGZvb3RlckxpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxpbmtzLWNvbnRhdG8gbGknKVxuXG4gIGNvbnN0IHBkcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy51bmlxdWVfaW1tb2JpbGUnKVxuICBsZXQgbG9jYXRpb25JbmZvID0gYXdhaXQgY2hlY2tMb2NhdGlvbkluZm8oXG4gICAgcGRwID8geyBzdGF0ZTogcGRwLmRhdGFzZXQuZXN0YWRvLCBjaXR5OiBwZHAuZGF0YXNldC5jaWRhZGUgfSA6IHt9XG4gIClcblxuICBpZiAobG9jYXRpb25JbmZvLnN0YXRlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09ICdzw6NvIHBhdWxvJykge1xuICAgIC8vIG9ubHkgc2hvdyB3aGF0c2FwcCBhcyBtZXRob2Qgb2YgY29udGFjdFxuICAgIGNvbnRhY3RCdG5zLmZvckVhY2godCA9PiB7XG4gICAgICBpZiAoIXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdidG5Db3JyZXRvcldoYXRzQnRuJykpIHQucmVtb3ZlKClcbiAgICB9KTtcblxuICAgIC8vIHJlZmxlY3QgdGhlIGNvbnRhY3QgbWV0aG9kcyBvbiBmb290ZXJcbiAgICBmb290ZXJMaW5rcy5mb3JFYWNoKHQgPT4ge1xuICAgICAgaWYgKHQuaW5uZXJUZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9ICd3aGF0c2FwcCcpIHQucmVtb3ZlKClcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRhY3RCdG5zLmZvckVhY2goYiA9PiBiLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpKVxuICBmb290ZXJMaW5rcy5mb3JFYWNoKGIgPT4gYi5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKSlcblxufVxuXG5qUXVlcnkod2luZG93KS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgYWxsb3dDb250YWN0TWV0aG9kc0ZvclJlZ2lvbigpO1xufSk7XG5cbi8vQ2hlY2EgYSBkaXNwb25pYmlsaWRhZGUgZG8gY2hhdFxuRHJ1cGFsLmJlaGF2aW9ycy5jaGF0QXZhaWxhYmxlID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIG9uY2UoJ2NoYXQtY
1XZhaWxhYmxlJywnLmZsb2F0QnRuQ29udGF0b3MnLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHtcbiAgICAgIGxvYWRDaGF0QXZhaWxhYmlsaXR5KCk7XG5cbiAgICAgIGpRdWVyeShidXR0b24pLm9uKCdtb3VzZWVudGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnRuQ29ycmV0b3JDaGF0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ0bkNvcnJldG9yQ2hhdCcpO1xuICAgICAgY29uc3QgY2hhdExpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2hyZWY9XCIjbW9kYWwtY29udGF0by1jaGF0XCJdJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsb2FkQ2hhdEF2YWlsYWJpbGl0eSgpO1xuXG4gICAgICBpZiAocmVzdWx0Lm9ubGluZSkge1xuICAgICAgICBidG5Db3JyZXRvckNoYXQuZm9yRWFjaChpdGVtID0+IGl0ZW0uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJykpO1xuXG4gICAgICAgIGNoYXRMaW5rcy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGxpbmsucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgIGlmIChwYXJlbnQ/LnRhZ05hbWUgPT09ICdMSScpIHtcbiAgICAgICAgICAgIHBhcmVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5rLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGJ0bkNvcnJldG9yQ2hhdC5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKSk7XG5cbiAgICAgIGNoYXRMaW5rcy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBsaW5rLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHBhcmVudD8udGFnTmFtZSA9PT0gJ0xJJykge1xuICAgICAgICAgIHBhcmVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsaW5rLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgZ2V0VXRtVmFsdWVGcm9tQ29va2llIH0gZnJvbSBcIi4vZ2V0Q29va2llc1BhcmFtc1wiO1xuXG5hc3luYyBmdW5jdGlvbiBzZXRDb29raWVWYWx1ZUluRm9ybSgpIHtcbiAgdmFyIG1vZGFsQm90YW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiZGl2LmZsb2F0Q29udGF0b3NcIik7XG5cbiAgbGV0IGlucHV0Q29va2llU291cmNlTGlzdCA9IG1vZGFsQm90YW8ucXVlcnlTZWxlY3RvckFsbChcbiAgICAnaW5wdXRbZGF0YS1kcnVwYWwtc2VsZWN0b3I9XCJlZGl0LWNvb2tpZS1zb3VyY2VcIl0nXG4gICk7XG4gIGxldCBpbnB1dENvb2tpZU1lZGl1bUxpc3QgPSBtb2RhbEJvdGFvLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJ2lucHV0W2RhdGEtZHJ1cGFsLXNlbGVjdG9yPVwiZWRpdC1jb29raWUtbWVkaXVtXCJdJ1xuICApO1xuICBsZXQgdXRtekNvb2tpZVZhbHVlID0gYXdhaXQgZ2V0VXRtVmFsdWVGcm9tQ29va2llKCk7XG5cbiAgQXJyYXkuZnJvbShpbnB1dENvb2tpZVNvdXJjZUxpc3QpLm1hcCgoaSkgPT4ge1xuICAgIGkudmFsdWUgPSB1dG16Q29va2llVmFsdWVbMF07XG4gIH0pO1xuICBBcnJheS5mcm9tKGlucHV0Q29va2llTWVkaXVtTGlzdCkubWFwKChpKSA9PiB7XG4gICAgaS52YWx1ZSA9IHV0bXpDb29raWVWYWx1ZVsxXTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IHNldENvb2tpZVZhbHVlSW5Gb3JtIH07XG4iLCJpbXBvcnQgeyBldmFsdWF0ZUd1aWRSZWdpb25hbCB9IGZyb20gJy4vYm90YW8tZmx1dHVhbnRlLXBhcmFtZXRyb3MnO1xuaW1wb3J0IHsgY2hlY2tMb2NhdGlvbkluZm8gfSBmcm9tICcuL2ZldGNoTG9jYXRpb25JbmZvJztcbmltcG9ydCB7IGJ1aWxkUGFyYW1uc1VybCwgYnVpbGRXaGF0c0FwcENvbnRhY3RVcmwgfSBmcm9tIFwiLi9idWlsZFdoYXRzQXBwVVJMXCI7XG5pbXBvcnQgeyBzZXRDb29raWVWYWx1ZUluRm9ybSB9IGZyb20gXCIuL3NlbmRVdG1Ub0Zvcm1cIjtcblxuY29uc3QgJCA9IGpRdWVyeVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFJlbW90ZUFjdGlvblxuICogQHByb3BlcnR5IHtgIyR7c3RyaW5nfWB9IGhhc2ggLSBVUkwgaGFzaCBuYW1lIHRvIG1ha2UgbW9kYWwgb3BlbiAobXVzdCBpbmNsdWRlICMgc3ltYm9sKVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmb290ZXJMaW5rXSAtIFRleHQgdG8gbWF0Y2ggd2l0aCBmb290ZXIncyBsaW5rIChsYWJlbCksIHRvIGJpbmQgdGhlIGdpdmVuIGFjdGlvblxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gYWN0aW9uIC0gdGhlIGFjdGlvbiB0byBtZSBmaXJlZFxuICogKi9cblxuLyoqXG4gKiBVdGlsaXR5IHRvIGVuYWJsZSBtdWx0aXBsZSByZW1vdGUgYWN0aW9ucyBvbiBjb250YWN0IG1vZGFsXG4gKlxuICogQSBsaXN0IG9mIGFjdGlvbnMsIGFuZCBpdCdzIGhhc2ggdHJpZ2dlclxuICpcbiAqIEB0eXBlIHtSZW1vdGVBY3Rpb25bXX1cbiAqXG4gKiAqL1xuY29uc3QgY29udGFjdFJlbW90ZUFjdGlvbnMgPSBbXG4gIHtcbiAgICBoYXNoOiAnI21vZGFsLWNvbnRhdG8td2hhdHMnLFxuICAgIGZvb3Rlckxpbms6ICdXaGF0c0FwcCcsXG4gICAgYWN0aW9uOiBvcGVuQ29ycmV0b3JXaGF0c1xuICB9LFxuICB7XG4gICAgaGFzaDogJyNtb2RhbC1jb250YXRvLWNoYXQnLFxuICAgIGZvb3Rlckxpbms6ICdDaGF0IE9ubGluZScsXG4gICAgYWN0aW9uOiBvcGVuQ29ycmV0b3JDaGF0XG4gIH0sXG4gIHtcbiAgICBoYXNoOiAnI21vZGFsLWNvbnRhdG8tdGVsJyxcbiAgICBmb290ZXJMaW5rOiAnUmVjZWJhIHVtYSBsaWdhw6fDo28nLFxuICAgIGFjdGlvbjogb3BlbkNvcnJldG9yVGVsXG4gIH0sXG4gIHtcbiAgICBoYXNoOiAnI21vZGFsLWNvbnRhdG8tZW1haWwnLFxuICAgIGZvb3Rlckxpbms6ICdFLW1haWwnLFxuICAgIGFjdGlvbjogb3BlbkNvcnJldG9yRW1haWxcbiAgfSxcblxuICB7XG4gICAgaGFzaDogJyNtb2RhbC1jb250YXRvJyxcbiAgICBhY3Rpb246ICgpID0+IHsgfVxuICB9XG5dO1xuXG4vLyBWYWxpZGEgc2Ugw6kgdW0gZGlzcG9zaXRpdm8gbW9iaWxlXG5jb25zdCBpc01vYmlsZSA9IC9pUGhvbmV8aVBhZHxpUG9kfEFuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5s
1ZXQgbW9kYWxGbHV0dWFudGUsIGJ0blZvbHRhciwgYnRuRmVjaGFyO1xubGV0IHRhYl9jb252ZXJzZV9jb21fdW1fY29ycmV0b3IsIHRhYl9jZW50cmFsX2RlX3JlbGFjaW9uYW1lbnRvLCB0YWJfb3V0cm9zX2Fzc3VudG9zO1xubGV0IGNvbnRlbnRDb3JyZXRvciwgY29udGVudENlbnRyYWxSZWxhY2lvbmFtZW50bywgY29udGVudE91dHJvc0Fzc3VudG9zO1xubGV0IGZvcm1Db3JyZXRvcldoYXRzRm9ybSwgZm9ybVdoYXRzYXBwQm90Rm9ybSwgZm9ybUNvcnJldG9yQ2hhdCwgZm9ybUNvcnJldG9yRW1haWwsIGZvcm1Db3JyZXRvclRlbDtcblxubGV0IF9lbGVtZW50c0luaXRpYWxpemVkID0gZmFsc2U7XG5cbmNvbnN0IGluaXRFbGVtZW50cyA9ICgpID0+IHtcbiAgaWYgKF9lbGVtZW50c0luaXRpYWxpemVkKSByZXR1cm47XG4gIG1vZGFsRmx1dHVhbnRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZsb2F0Q29udGF0b3MnKTtcbiAgaWYgKCFtb2RhbEZsdXR1YW50ZSkgcmV0dXJuO1xuXG4gIGJ0blZvbHRhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mbG9hdEJ0bkNvbnRhdG9zQmFjaycpO1xuICBidG5GZWNoYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmxvYXRCdG5Db250YXRvc0Nsb3NlJyk7XG5cbiAgdGFiX2NvbnZlcnNlX2NvbV91bV9jb3JyZXRvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb252ZXJzZV9jb21fdW1fY29ycmV0b3IgYnV0dG9uJyk7XG4gIHRhYl9jZW50cmFsX2RlX3JlbGFjaW9uYW1lbnRvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNlbnRyYWxfZGVfcmVsYWNpb25hbWVudG8gYnV0dG9uJyk7XG4gIHRhYl9vdXRyb3NfYXNzdW50b3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub3V0cm9zX2Fzc3VudG9zIGJ1dHRvbicpO1xuXG4gIGNvbnRlbnRDb3JyZXRvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50Q29ycmV0b3InKTtcbiAgY29udGVudENlbnRyYWxSZWxhY2lvbmFtZW50byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvJyk7XG4gIGNvbnRlbnRPdXRyb3NBc3N1bnRvcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50T3V0cm9zQXNzdW50b3MnKTtcblxuICBmb3JtQ29ycmV0b3JXaGF0c0Zvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybUNvcnJldG9yV2hhdHNGb3JtJyk7XG4gIGZvcm1XaGF0c2FwcEJvdEZvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybVdoYXRzYXBwQm90Jyk7XG4gIGZvcm1Db3JyZXRvckNoYXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybUNvcnJldG9yQ2hhdCcpO1xuICBmb3JtQ29ycmV0b3JFbWFpbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtQ29ycmV0b3JFbWFpbCcpO1xuICBmb3JtQ29ycmV0b3JUZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybUNvcnJldG9yVGVsJyk7XG5cblxuICBjb25zdCBvYnNlcnZlcldlYmZvcm0gPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgY29uc3Qgd2ViZm9ybUNvbmZpcm1hdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53ZWJmb3JtLWNvbmZpcm1hdGlvbicpO1xuXG4gICAgaWYgKHdlYmZvcm1Db25maXJtYXRpb24pIHtcbiAgICAgIGhpZGVTdWJ0aXRsZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2hvd1N1YnRpdGxlcygpO1xuICAgIH1cbiAgfSk7XG4gIG9ic2VydmVyV2ViZm9ybS5vYnNlcnZlKG1vZGFsRmx1dHVhbnRlLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcblxuICBfZWxlbWVudHNJbml0aWFsaXplZCA9IHRydWU7XG59O1xuXG5jb25zdCBoaWRlU3VidGl0bGVzID0gKCkgPT4ge1xuICBjb25zdCBzdWJ0aXR1bG9zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN1YnRpdHVsby1mb3JtJyk7XG4gIHN1YnRpdHVsb3MuZm9yRWFjaChzdWJ0aXR1bG8gPT4ge1xuICAgIHN1YnRpdHVsby5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICB9KTtcbn07XG5cbi8qKlxuICogXCJjbGlja3NcIiB0byByZXNldCBhbGwgcmVjZW50bHkgc3VibWl0ZWQgbGVhZCBmb3Jtc1xuICovXG5jb25zdCByZXNldEZvcm1zID0gKCkgPT4ge1xuICAvKiogQHR5cGUgTm9kZUxpc3RPZjxIVE1MQnV0dG9uRWxlbWVudD4gKi9cbiAgY29uc3QgZm9ybVJlc2V0ZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5qcy13ZWJmb3JtLWNvbmZpcm1hdGlvbi1iYWNrLWxpbmstYWpheFwiKTtcbiAgZm9ybVJlc2V0ZXJzLmZvckVhY2gocmVzZXRlciA9PiByZXNldGVyLmNsaWNrKCkpO1xufVxuXG5jb25zdCBzaG93U3VidGl0bGVzID0gKCkgPT4ge1xuICBjb25zdCBzdWJ0aXR1bG9zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN1YnRpdHVsby1mb3JtJyk7XG4gIHN1YnRpdHVsb3MuZm9yRWFjaChzdWJ0aXR1bG8gPT4ge1xuICAgIHN1YnRpdHVsby5zdHlsZS5kaXNwbGF5ID0gbnVsbDtcbiAgfSk7XG59O1xuXG5cblxuY29uc3QgdmVyaWZpY2FyRXhpYmljYW9XZWJmb3JtQ29uZmlybWF0aW9uID0gKHZhbCkgPT4ge1xuICBjb25zdCB3ZWJmb3JtQ29uZmlybWF0aW9uID0gdmFsLnF1ZXJ5U2VsZWN0b3IoJy53ZWJmb3JtLWNvbmZpcm1hdGlvbicpO1xuICBjb25zdCBzdWJ0aXR1bG9Gb3JtID0gdmFsLnF1ZXJ5U2VsZWN0b3IoJy5zdWJ0aXR1bG8tZm9ybScpO1xuXG4gIGlmICghd2ViZm9ybUNvbmZpcm1hdGlvbikge1xuICAgIGlmIChzdWJ0aXR1bG9Gb3JtKSB7XG4gICAgICBzdWJ0aXR1bG9Gb3JtLnN0eWxlLmRpc3BsYXkgPSBudWxsO1xuXG4gICAgfVxuICB9XG59XG5cblxuY29uc3QgaGlkZUJhY2tCdXR0b24gPSAoKSA9PiB7XG4gIGlmICghYnRuVm9sdGFyLmNsYXNzTGlzdC5jb250YWlucygnaW52aXNpYmxlJykpIHtcbiAgICBidG5Wb2x0YXIuY2xhc3NMaXN0LmFkZCgnaW52aXNpYmxlJyk7XG4gIH1cbn1cblxuY29uc3QgY2xvc2VDb3JyZXRvckNvbnRhdG9zID0gKCkgPT4ge1xuICBpZiAoZm9ybUNvcnJldG9yV2hhdHNGb3JtICYmICFmb3JtQ29ycmV0b3JXaGF0c0Zvcm0uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSlcbiAgICBmb3JtQ29ycmV0b3JXaGF0c0Zvcm0uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcblxuICBpZiAoZm9ybVdoYXRzYXBwQm90Rm9ybSAmJiAhZm9ybVdoYXRzYXBwQm90Rm9ybS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKVxuICAgIGZvcm1XaGF0c2FwcEJvdEZvcm0uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcblxuICBpZiAoZm9ybUNvcnJldG9yQ2hhdCAmJiAhZm9ybUNvcnJldG9yQ2hhdC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKVxuICAgIGZvcm1Db3JyZXRvckNoYXQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcblxuICBpZiAoZm9ybUNvcnJldG9yRW1haWwgJiYgIWZvcm1
1Db3JyZXRvckVtYWlsLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpXG4gICAgZm9ybUNvcnJldG9yRW1haWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcblxuICBpZiAoZm9ybUNvcnJldG9yVGVsICYmICFmb3JtQ29ycmV0b3JUZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSlcbiAgICBmb3JtQ29ycmV0b3JUZWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcblxuICBoaWRlQmFja0J1dHRvbigpO1xuICBjb250ZW50Q29ycmV0b3IuY2xhc3NMaXN0LmFkZCgnZmxleCcpXG4gIGNvbnRlbnRDb3JyZXRvci5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKVxuXG4gIHJlc2V0Rm9ybXMoKTtcbn1cblxuY29uc3Qgc2hvd0NvbnRlbnRDb3JyZXRvciA9IChpc0ludGVybmFsID0gZmFsc2UpID0+IHtcbiAgY2xvc2VDb3JyZXRvckNvbnRhdG9zKCk7XG5cbiAgaWYgKCF0YWJfY29udmVyc2VfY29tX3VtX2NvcnJldG9yLmNsYXNzTGlzdC5jb250YWlucygnaXMtYWN0aXZlJykpIHtcbiAgICBjb250ZW50Q29ycmV0b3IuY2xhc3NMaXN0LmFkZCgnZmxleCcpXG4gICAgdGFiX2NvbnZlcnNlX2NvbV91bV9jb3JyZXRvci5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKVxuICAgIGNvbnRlbnRDb3JyZXRvci5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKVxuICB9XG4gIGlmIChpc0ludGVybmFsKSB7XG4gICAgY29udGVudENvcnJldG9yLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpXG4gICAgY29udGVudENvcnJldG9yLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRhY3RCdG5zID0gY29udGVudENvcnJldG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbltjbGFzcyo9YnRuQ29ycmV0b3JdJylcbiAgICBpZiAoY29udGFjdEJ0bnMubGVuZ3RoID09IDEpIHtcbiAgICAgIGNvbnRhY3RCdG5zWzBdLmNsaWNrKCk7XG4gICAgICBidG5Wb2x0YXIuY2xhc3NMaXN0LmFkZCgnIWludmlzaWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRlbnRDZW50cmFsUmVsYWNpb25hbWVudG8uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcbiAgY29udGVudENlbnRyYWxSZWxhY2lvbmFtZW50by5jbGFzc0xpc3QucmVtb3ZlKCdmbGV4JylcbiAgdGFiX2NlbnRyYWxfZGVfcmVsYWNpb25hbWVudG8uY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJylcblxuICBjb250ZW50T3V0cm9zQXNzdW50b3MuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcbiAgY29udGVudE91dHJvc0Fzc3VudG9zLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICB0YWJfb3V0cm9zX2Fzc3VudG9zLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXG59XG5cbmNvbnN0IHNob3dDb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvID0gKCkgPT4ge1xuICBjbG9zZUNvcnJldG9yQ29udGF0b3MoKTtcbiAgaGlkZUJhY2tCdXR0b24oKTtcblxuICBpZiAoIXRhYl9jZW50cmFsX2RlX3JlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5jb250YWlucygnaXMtYWN0aXZlJykpIHtcbiAgICBjb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5hZGQoJ2ZsZXgnKVxuICAgIHRhYl9jZW50cmFsX2RlX3JlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpXG4gICAgY29udGVudENlbnRyYWxSZWxhY2lvbmFtZW50by5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKVxuICB9IGVsc2UgaWYgKCEodGFiX2NlbnRyYWxfZGVfcmVsYWNpb25hbWVudG8uY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1hY3RpdmUnKSAmJiBjb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5jb250YWlucygnZmxleCcpKSkge1xuICAgIGNvbnRlbnRDZW50cmFsUmVsYWNpb25hbWVudG8uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcbiAgICBjb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICAgIHRhYl9jZW50cmFsX2RlX3JlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXG4gIH1cblxuICBjb250ZW50Q29ycmV0b3IuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcbiAgY29udGVudENvcnJldG9yLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICB0YWJfY29udmVyc2VfY29tX3VtX2NvcnJldG9yLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXG5cbiAgY29udGVudE91dHJvc0Fzc3VudG9zLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpXG4gIGNvbnRlbnRPdXRyb3NBc3N1bnRvcy5jbGFzc0xpc3QucmVtb3ZlKCdmbGV4JylcbiAgdGFiX291dHJvc19hc3N1bnRvcy5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKVxufVxuXG5jb25zdCBzaG93Q29udGVudE91dHJvc0Fzc3VudG9zID0gKCkgPT4ge1xuICBjbG9zZUNvcnJldG9yQ29udGF0b3MoKTtcbiAgaGlkZUJhY2tCdXR0b24oKTtcblxuICBpZiAoIXRhYl9vdXRyb3NfYXNzdW50b3MuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1hY3RpdmUnKSkge1xuICAgIGNvbnRlbnRPdXRyb3NBc3N1bnRvcy5jbGFzc0xpc3QuYWRkKCdmbGV4JylcbiAgICB0YWJfb3V0cm9zX2Fzc3VudG9zLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpXG4gICAgY29udGVudE91dHJvc0Fzc3VudG9zLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpXG4gIH0gZWxzZSBpZiAoISh0YWJfb3V0cm9zX2Fzc3VudG9zLmNsYXNzTGlzdC5jb250YWlucygnaXMtYWN0aXZlJykgJiYgY29udGVudE91dHJvc0Fzc3VudG9zLmNsYXNzTGlzdC5jb250YWlucygnZmxleCcpKSkge1xuICAgIGNvbnRlbnRPdXRyb3NBc3N1bnRvcy5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKVxuICAgIGNvbnRlbnRPdXRyb3NBc3N1bnRvcy5jbGFzc0xpc3QucmVtb3ZlKCdmbGV4JylcbiAgICB0YWJfb3V0cm9zX2Fzc3VudG9zLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXG4gIH1cblxuICBjb250ZW50Q29ycmV0b3IuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJylcbiAgY29udGVudENvcnJldG9yLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICB0YWJfY29udmVyc2VfY29tX3VtX2NvcnJldG9yLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXG5cbiAgY29udGVudENlbnRyYWxSZWxhY2lvbmFtZW50by5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKVxuICBjb250ZW50Q2VudHJhbFJlbGFjaW9uYW1lbnRvLmNsYXNzTGlzdC5yZW1vdmUoJ2ZsZXgnKVxuICB0YWJfY2VudHJhbF9kZV9yZWxhY2lvbmFtZW50by5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKVxufVxuXG5cbmNvbnN0IG1vZGFsSXNPcGVuID0gKCkgPT4ge1xuICByZXR1cm4gIW1vZGFsRmx1dHVhbnRlLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJyk7XG59XG5cbmNvbnN0IG9wZW5DbG9zZU1vZGFsID0gKCkgPT4ge1xuXG4gIG1vZGFsRmx1dHVhbnRlLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicpO1xuICBtb2RhbEZsdXR1YW50ZS5jbGFzc0xpc3QudG9nZ2xlKCdmbGV4Jyk7XG5cbiAgY2xvc2VDb3JyZXRvckNvbnRhdG9zKCk7XG4gIHNob3dDb250ZW50Q29ycmV0b3IoKTtcblxuICBpZiAoaXNNb2JpbGUpIHtcbiAgICBkb2
1N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoXCJvdmVyZmxvdy1oaWRkZW5cIik7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKFwiZml4ZWRcIik7XG4gIH1cblxuICByZXNldEZvcm1zKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG9wZW5Db3JyZXRvcldoYXRzKGUpIHtcbiAgY29uc3QgbG9jYXRpb25JbmZvID0gYXdhaXQgY2hlY2tMb2NhdGlvbkluZm8oKTtcbiAgY29uc3QgZ3VpZEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtZ3VpZC1jcm1dXCIpO1xuXG4gIGxldCByZWdpb24gPSBndWlkRWxlbWVudD8uZGF0YXNldC5lc3RhZG8gfHwgbG9jYXRpb25JbmZvLnN0YXRlO1xuICByZWdpb24gPSByZWdpb24/LnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKFwiTkZEXCIpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXG5cbiAgaWYgKFtcInJpbyBkZSBqYW5laXJvXCIsIFwicmlvIGdyYW5kZSBkbyBzdWxcIl0uaW5jbHVkZXMocmVnaW9uKSkge1xuICAgIG9wZW5Db3JyZXRvcldoYXRzRm9ybSgpO1xuICAgIHJldHVyblxuICB9XG4gIGlmIChyZWdpb24gPT09IFwic2FvIHBhdWxvXCIpIHtcbiAgICBvcGVuV2hhdHNhcHBCb3RGb3JtKCk7XG4gICAgcmV0dXJuXG4gIH1cblxuXG4gIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKCdhYm91dDpibGFuaycsICdfYmxhbmsnKTtcbiAgY29uc3QgdGFyZ2V0VXJsID0gYXdhaXQgYnVpbGRXaGF0c0FwcENvbnRhY3RVcmwoKTtcbiAgb3BlbldoYXRzTGluayh0YXJnZXRVcmwsIHdpbik7XG59XG5cblxuZnVuY3Rpb24gb3BlbldoYXRzTGluayh0YXJnZXRVcmwsIHdpbikge1xuXG4gIGRhdGFMYXllci5wdXNoKHtcbiAgICAnZXZlbnQnOiAnc2VuZGZvcm0nLFxuICAgICdmb3JtJzogJ3doYXRzYXBwJyxcbiAgfSk7XG5cbiAgaWYgKCF3aW4pIHtcbiAgICB3aW5kb3cub3Blbih0YXJnZXRVcmwsICdfYmxhbmsnKTtcbiAgfSBlbHNlIHtcbiAgICB3aW4ubG9jYXRpb24uaHJlZiA9IHRhcmdldFVybDtcbiAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIG9wZW5Db3JyZXRvcldoYXRzRm9ybSgpIHtcbiAgdmVyaWZpY2FyRXhpYmljYW9XZWJmb3JtQ29uZmlybWF0aW9uKGZvcm1Db3JyZXRvcldoYXRzRm9ybSk7XG4gIHNldENvb2tpZVZhbHVlSW5Gb3JtKCk7XG4gIHNob3dDb250ZW50Q29ycmV0b3IodHJ1ZSk7XG4gIGZvcm1Db3JyZXRvcldoYXRzRm9ybS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKVxuICBmb3JtQ29ycmV0b3JXaGF0c0Zvcm0uY2xhc3NMaXN0LnRvZ2dsZSgnZmxleCcpXG4gIGJ0blZvbHRhci5jbGFzc0xpc3QucmVtb3ZlKCdpbnZpc2libGUnKTtcblxuICBEcnVwYWwuYmVoYXZpb3JzLmZvcm1BamF4Q29tcGxldGUuY3VzdG9tVmFsdWUgPSAnd2hhdHNhcHAnO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvcGVuV2hhdHNhcHBCb3RGb3JtKCkge1xuICB2ZXJpZmljYXJFeGliaWNhb1dlYmZvcm1Db25maXJtYXRpb24oZm9ybVdoYXRzYXBwQm90Rm9ybSk7XG4gIHNldENvb2tpZVZhbHVlSW5Gb3JtKCk7XG4gIHNob3dDb250ZW50Q29ycmV0b3IodHJ1ZSk7XG4gIGZvcm1XaGF0c2FwcEJvdEZvcm0uY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJylcbiAgZm9ybVdoYXRzYXBwQm90Rm9ybS5jbGFzc0xpc3QudG9nZ2xlKCdmbGV4JylcbiAgYnRuVm9sdGFyLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmlzaWJsZScpO1xuXG4gIGNvbnN0IGxpbmtJbnB1dCA9IGZvcm1XaGF0c2FwcEJvdEZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT1cImxpbmtfd2hhdHNhcHBcIl0nKTtcbiAgaWYgKGxpbmtJbnB1dCkge1xuICAgIGNvbnN0IHdoYXRzVHJhY2tVcmwgPSBhd2FpdCBidWlsZFBhcmFtbnNVcmwoKTtcbiAgICBsaW5rSW5wdXQudmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQod2hhdHNUcmFja1VybCk7XG4gIH1cblxuICBEcnVwYWwuYmVoYXZpb3JzLmZvcm1BamF4Q29tcGxldGUuY3VzdG9tVmFsdWUgPSAnd2hhdHNhcHAnO1xufVxuXG5mdW5jdGlvbiBvcGVuQ29ycmV0b3JDaGF0KGUpIHtcbiAgdmVyaWZpY2FyRXhpYmljYW9XZWJmb3JtQ29uZmlybWF0aW9uKGZvcm1Db3JyZXRvckNoYXQpO1xuICBzZXRDb29raWVWYWx1ZUluRm9ybSgpO1xuICBzaG93Q29udGVudENvcnJldG9yKHRydWUpO1xuICBmb3JtQ29ycmV0b3JDaGF0LmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicpXG4gIGZvcm1Db3JyZXRvckNoYXQuY2xhc3NMaXN0LnRvZ2dsZSgnZmxleCcpXG4gIGJ0blZvbHRhci5jbGFzc0xpc3QucmVtb3ZlKCdpbnZpc2libGUnKTtcblxuICBEcnVwYWwuYmVoYXZpb3JzLmZvcm1BamF4Q29tcGxldGUuY3VzdG9tVmFsdWUgPSAnY2hhdCc7XG59XG5cbmZ1bmN0aW9uIG9wZW5Db3JyZXRvckVtYWlsKGUpIHtcbiAgdmVyaWZpY2FyRXhpYmljYW9XZWJmb3JtQ29uZmlybWF0aW9uKGZvcm1Db3JyZXRvckVtYWlsKTtcbiAgc2V0Q29va2llVmFsdWVJbkZvcm0oKTtcbiAgc2hvd0NvbnRlbnRDb3JyZXRvcih0cnVlKVxuICBmb3JtQ29ycmV0b3JFbWFpbC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKVxuICBmb3JtQ29ycmV0b3JFbWFpbC5jbGFzc0xpc3QudG9nZ2xlKCdmbGV4JylcbiAgYnRuVm9sdGFyLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmlzaWJsZScpO1xuXG4gIERydXBhbC5iZWhhdmlvcnMuZm9ybUFqYXhDb21wbGV0ZS5jdXN0b21WYWx1ZSA9ICdlbWFpbCc7XG59XG5cbmZ1bmN0aW9uIG9wZW5Db3JyZXRvclRlbChlKSB7XG4gIHZlcmlmaWNhckV4aWJpY2FvV2ViZm9ybUNvbmZpcm1hdGlvbihmb3JtQ29ycmV0b3JUZWwpO1xuICBzZXRDb29raWVWYWx1ZUluRm9ybSgpO1xuICBzaG93Q29udGVudENvcnJldG9yKHRydWUpXG4gIGZvcm1Db3JyZXRvclRlbC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKVxuICBmb3JtQ29ycmV0b3JUZWwuY2xhc3NMaXN0LnRvZ2dsZSgnZmxleCcpXG4gIGJ0blZvbHRhci5jbGFzc0xpc3QucmVtb3ZlKCdpbnZpc2libGUnKTtcblxuICBEcnVwYWwuYmVoYXZpb3JzLmZvcm1BamF4Q29tcGxldGUuY3VzdG9tVmFsdWUgPSAndGVsZWZvbmUnO1xufVxuXG4vKiogQGFyZ3VtZW50IHtIYXNoQ2hhbmdlRXZlbnR9IGUgKi9cbmNvbnN0IG9wZW5Nb2RhbE9uSGFzaCA9IChlKSA9PiB7XG4gIGNvbnN0IG9wZW5pbmdIYXNoZXMgPSBjb250YWN0UmVtb3RlQWN0aW9ucy5tYXAoaSA9PiBpLmhhc2gpO1xuXG4gIGZvciAobGV0IGMgb2YgY29udGFjdFJlbW90ZU
1FjdGlvbnMpIHtcbiAgICBpZiAoYy5oYXNoICE9PSBsb2NhdGlvbi5oYXNoKSBjb250aW51ZTtcblxuICAgIGlmICghbW9kYWxJc09wZW4oKSkgb3BlbkNsb3NlTW9kYWwoKTtcbiAgICBjLmFjdGlvbigpO1xuXG4gICAgLy8gaXMgY29taW5nIGZyb20gc2FtZSBzaXRlP1xuICAgIGlmIChlPy5vbGRVUkwpIHtcbiAgICAgIGhpc3RvcnkuYmFjaygpIC8vIEhBQ0s6IGRvbid0IGNsdXR0ZXIgdGhlIGhpc3Rvcnkgd2l0aCBtb2RhbCBvcGVuaW5ncy9jbG9zaW5nc1xuICAgIH0gZWxzZSB7XG4gICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgbG9jYXRpb24ucGF0aG5hbWUgKyBsb2NhdGlvbi5zZWFyY2gpXG4gICAgfVxuICB9XG59XG5cbkRydXBhbC5iZWhhdmlvcnMuZmxvYXRCdG5Db250YXRvcyA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICBvbmNlKFwiZmxvYXRCdG5Db250YXRvc1wiLCBcIi5mbG9hdEJ0bkNvbnRhdG9zXCIsIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGluaXRFbGVtZW50cygpO1xuXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgb3BlbkNsb3NlTW9kYWwoKTtcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIG9uY2UoXCJmbG9hdEJ0bkNvbnRhdG9zXCIsIFwiYm9keVwiLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChfKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIG9wZW5Nb2RhbE9uSGFzaCk7XG4gICAgICBvcGVuTW9kYWxPbkhhc2goKTtcbiAgICB9KTtcblxuICAgIG9uY2UoXCJmbG9hdEJ0bkNvbnRhdG9zXCIsIFwiZm9vdGVyIC5saW5rcy1jb250YXRvIGFcIiwgY29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAobGluaykge1xuXG4gICAgICBjb25zdCBsaW5rQWN0aW9uID0gY29udGFjdFJlbW90ZUFjdGlvbnMuZmluZChpID0+IGkuZm9vdGVyTGluayA9PT0gbGluay50ZXh0KTtcblxuICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIW1vZGFsSXNPcGVuKCkpIG9wZW5DbG9zZU1vZGFsKCk7XG5cbiAgICAgICAgbGlua0FjdGlvbj8uYWN0aW9uICYmIGxpbmtBY3Rpb24uYWN0aW9uKCk7XG4gICAgICB9KVxuICAgIH0pO1xuXG4gIH1cbn07XG5cbkRydXBhbC5iZWhhdmlvcnMuZmxvYXRCdG5Db250YXRvc0JhY2sgPSB7XG4gIGF0dGFjaDogZnVuY3Rpb24gKGNvbnRleHQsIHNldHRpbmdzKSB7XG4gICAgaWYgKCFidG5Wb2x0YXIpIHJldHVybjtcbiAgICBvbmNlKFwiZmxvYXRCdG5Db250YXRvc0JhY2tcIiwgYnRuVm9sdGFyLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgY2xvc2VDb3JyZXRvckNvbnRhdG9zKCk7XG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn07XG5cbkRydXBhbC5iZWhhdmlvcnMuZmxvYXRCdG5Db250YXRvc0Nsb3NlID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuICAgIGlmICghYnRuRmVjaGFyKSByZXR1cm47XG4gICAgb25jZShcImZsb2F0QnRuQ29udGF0b3NDbG9zZVwiLCBidG5GZWNoYXIsIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBvcGVuQ2xvc2VNb2RhbCgpO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59O1xuXG5EcnVwYWwuYmVoYXZpb3JzLmJ0bkNvbnZlcnNlQ29tQ29ycmV0b3IgPSB7XG4gIGF0dGFjaDogZnVuY3Rpb24gKGNvbnRleHQsIHNldHRpbmdzKSB7XG4gICAgb25jZShcImJ0bkNvbnZlcnNlQ29tQ29ycmV0b3JcIiwgXCIuY29udmVyc2VfY29tX3VtX2NvcnJldG9yXCIsIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1hY3RpdmUnKSkge1xuICAgICAgICAgIHNob3dDb250ZW50Q29ycmV0b3IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59O1xuXG5EcnVwYWwuYmVoYXZpb3JzLmJ0bkNlbnRyYWxSZWxhY2lvbmFtZW50byA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICBvbmNlKFwiYnRuQ2VudHJhbFJlbGFjaW9uYW1lbnRvXCIsIFwiLmNlbnRyYWxfZGVfcmVsYWNpb25hbWVudG9cIiwgY29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICghZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWFjdGl2ZScpKSB7XG4gICAgICAgICAgc2hvd0NvbnRlbnRDZW50cmFsUmVsYWNpb25hbWVudG8oKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59O1xuXG5EcnVwYWwuYmVoYXZpb3JzLmJ0bk91dHJvc0Fzc3VudG9zID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuICAgIG9uY2UoXCJidG5PdXRyb3NBc3N1bnRvc1wiLCBcIi5vdXRyb3NfYXNzdW50b3NcIiwgY29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICghZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWFjdGl2ZScpKSB7XG4gICAgICAgICAgc2hvd0NvbnRlbnRPdXRyb3NBc3N1bnRvcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn07XG5cbkRydXBhbC5iZWhhdmlvcnMuYnRuQ29ycmV0b3JXaGF0c0J0biA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICBvbmNlKFwiYnRuQ29ycmV0b3JXaGF0c0J0blwiLCBcIi5idG5Db3JyZXRvcldoYXRzQnRuXCIsIGNvbnRleHQpLmZvckVhY2goYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgbGV0IHsgc3Rh
1dGUgfSA9IGF3YWl0IGNoZWNrTG9jYXRpb25JbmZvKCk7XG4gICAgICBsZXQgcmVhbFN0YXRlQ2l0eSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNpZGFkZV0nKSA/XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNpZGFkZV0nKS5kYXRhc2V0LmNpZGFkZSA6IGZhbHNlO1xuXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb3BlbkNvcnJldG9yV2hhdHMpO1xuICAgIH0pXG4gIH1cbn07XG5cbkRydXBhbC5iZWhhdmlvcnMuYnRuQ29ycmV0b3JDaGF0ID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuICAgIG9uY2UoXCJidG5Db3JyZXRvckNoYXRcIiwgXCIuYnRuQ29ycmV0b3JDaGF0XCIsIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvcGVuQ29ycmV0b3JDaGF0KVxuICAgIH0pXG4gIH1cbn07XG5cbkRydXBhbC5iZWhhdmlvcnMuYnRuQ29ycmV0b3JFbWFpbCA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICBvbmNlKFwiYnRuQ29ycmV0b3JFbWFpbFwiLCBcIi5idG5Db3JyZXRvckVtYWlsXCIsIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvcGVuQ29ycmV0b3JFbWFpbClcbiAgICB9KVxuICB9XG59O1xuXG5EcnVwYWwuYmVoYXZpb3JzLmJ0bkNvcnJldG9yVGVsID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuICAgIG9uY2UoXCJidG5Db3JyZXRvclRlbFwiLCBcIi5idG5Db3JyZXRvclRlbFwiLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb3BlbkNvcnJldG9yVGVsKVxuICAgIH0pXG4gIH1cbn07XG5cbi8vIGJvdGFvIGRvIG1vZHVsbyBkZSBIb21lIGUgUERDXG5EcnVwYWwuYmVoYXZpb3JzLmJ0bkZhbGVDb21Db3JyZXRvciA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICBvbmNlKFwiYnRuRmFsZUNvbUNvcnJldG9yXCIsIFwiLmJ0bkZhbGVDb21Db3JyZXRvclwiLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvcGVuQ2xvc2VNb2RhbCgpO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59O1xuXG5EcnVwYWwuYmVoYXZpb3JzLndoYXRzYXBwQm90Rm9ybVNlbmQgPSB7XG4gIGF0dGFjaDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBvbmNlKCd3aGF0c2FwcEJvdEZvcm1TZW5kJywgZG9jdW1lbnQuYm9keSwgY29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBqUXVlcnkoZG9jdW1lbnQpLmFqYXhDb21wbGV0ZShhc3luYyBmdW5jdGlvbiAoZXZlbnQsIHhociwgc2V0dGluZ3MpIHtcblxuICAgICAgICBjb25zdCBpc1N1Ym1pdHRlZCA9IEFycmF5LmlzQXJyYXkoeGhyLnJlc3BvbnNlSlNPTikgJiYgeGhyLnJlc3BvbnNlSlNPTi5zb21lKGNtZCA9PlxuICAgICAgICAgIGNtZC5jb21tYW5kID09PSAnaW5zZXJ0JyAmJlxuICAgICAgICAgIGNtZC5kYXRhLmluY2x1ZGVzKCd3ZWJmb3JtLWNvbmZpcm1hdGlvbicpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNldHRpbmdzLmRhdGEpXG4gICAgICAgIGNvbnN0IGZvcm1faWQgPSBkYXRhLmdldCgnZm9ybV9pZCcpXG5cbiAgICAgICAgaWYgKCFpc1N1Ym1pdHRlZCB8fCAhZm9ybV9pZC5zdGFydHNXaXRoKCd3ZWJmb3JtX3N1Ym1pc3Npb25fYm90X3doYXRzYXBwJykpIHsgcmV0dXJuOyB9XG5cblxuICAgICAgICBjb25zdCBmb3JtRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcm0uJHtmb3JtX2lkLnJlcGxhY2VBbGwoJ18nLCAnLScpfWApO1xuICAgICAgICBjb25zdCBmb3JtU3RhdHVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZm9ybS1zdGF0dXNdJyk/LmRhdGFzZXQuZm9ybVN0YXR1cyB8fCBudWxsO1xuXG5cbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4oJ2Fib3V0OmJsYW5rJywgJ19ibGFuaycpO1xuICAgICAgICBjb25zdCB0YXJnZXRVcmwgPSBhd2FpdCBidWlsZFdoYXRzQXBwQ29udGFjdFVybCgpO1xuICAgICAgICBmb3JtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubGluay1jb250YXRvJykuaHJlZiA9IHRhcmdldFVybDtcbiAgICAgICAgb3BlbldoYXRzTGluayh0YXJnZXRVcmwsIHdpbik7XG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cblxuRHJ1cGFsLmJlaGF2aW9ycy5jb3JyZXRvcldoYXRzRm9ybVNlbmQgPSB7XG4gIGF0dGFjaDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBvbmNlKCdjb3JyZXRvcldoYXRzRm9ybVNlbmQnLCBkb2N1bWVudC5ib2R5LCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGpRdWVyeShkb2N1bWVudCkuYWpheENvbXBsZXRlKGZ1bmN0aW9uIChldmVudCwgeGhyLCBzZXR0aW5ncykge1xuXG4gICAgICAgIGNvbnN0IGlzU3VibWl0dGVkID0gQXJyYXkuaXNBcnJheSh4aHIucmVzcG9uc2VKU09OKSAmJiB4aHIucmVzcG9uc2VKU09OLnNvbWUoY21kID0+XG4gICAgICAgICAgY21kLmNvbW1hbmQgPT09ICdpbnNlcnQnICYmXG4gICAgICAgICAgY21kLmRhdGEuaW5jbHVkZXMoJ3dlYmZvcm0tY29uZmlybWF0aW9uJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2V0dGluZ3MuZGF0YSlcbiAgICAgICAgY29uc3QgZm9ybV9pZCA9IGRhdGEuZ2V0KCdmb3JtX2lkJylcblxuICAgICAgICBpZiAoIWlzU3VibWl0dGVkIHx8ICFmb3JtX2lkLnN0YXJ0c1dpdGgoJ3dlYmZvcm1fc3VibWlzc2lvbl93aGF0c2FwcF9jb3JyZXRvcicpKSB7IHJldHVybjsgfVxuXG5cbiAgICAgICAgY29uc3QgZm9ybUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBmb3JtLiR7Zm9ybV9pZC5yZXBsYWNlQWxsKCdfJywgJy0nKX1gKTtcbiAgICAgICAgY29uc3QgZm9ybU1ldGEgPSBmb3JtRWxlbWVudD8ucXVlcnlTZWxlY3RvcignW2RhdGEtZm9ybS1zdGF0dXNdJyk7XG4gICAgICAgIGNvbnN0IGZvcm1TdGF0dXMgPSBmb3JtTWV0YT8uZGF0YXNldC5mb3JtU3RhdHVzIHx8IG51bGw7XG4gICAgICAgIGNvbnN0IGxpbmtFbGVtZW50ID0gZm9ybUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5saW5rLWNvbnRhdG8nKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZUVsZW1lbnQgPSBmb3JtRWxlbWVudD8ucXVlcnlTZWxlY3RvcigncC5jb25maXJtYXRpb24tbWVzc2FnZScpO1xuXG4gICAgICAgIC8vIGFkanVzdCBtZXNzYWdlIG9uIHByb2Nlc3NpbmcgZmFpbFxuICAgICAgICBpZiAoIVsnc3VjY2VzcycsICdxdWV1ZWQnXS5pbmNsdWRlcyhmb3JtU3RhdHVzKSkge1xuICAgICAgICAgIGNvbnN0IGNvbmZpcm0gPSBmb3JtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcud2ViZm9ybS1jb25maXJtYXRpb25fX21lc3NhZ2UnKTtcbiAgICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgICAgY29uZmlybS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgI
1H1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub21lQ29ycmV0b3IgPSBmb3JtRWxlbWVudD8ucXVlcnlTZWxlY3RvcignW2RhdGEtbm9tZS1jb3JyZXRvcl0nKT8uZGF0YXNldC5ub21lQ29ycmV0b3I7XG4gICAgICAgIGNvbnN0IGNhbXBvTm9tZSA9IGZvcm1FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4ubm9tZS1jb3JyZXRvcicpO1xuICAgICAgICBpZiAobm9tZUNvcnJldG9yICYmIG5vbWVDb3JyZXRvciAhPSAnW3dlYmZvcm06aGFuZGxlcjpyZW1vdGVfcG9zdDpjb21wbGV0ZWQ6Y29ycmV0b3JOb21lXScgJiYgY2FtcG9Ob21lKSB7XG4gICAgICAgICAgY2FtcG9Ob21lLmlubmVyVGV4dCA9IG5vbWVDb3JyZXRvcjtcbiAgICAgICAgfSBlbHNlIGlmIChjYW1wb05vbWUpIHtcbiAgICAgICAgICBjYW1wb05vbWUuY2xhc3NMaXN0LmFkZCgnd2hpdGVzcGFjZS1wcmUnKVxuICAgICAgICAgIGNhbXBvTm9tZS5pbm5lclRleHQgPSAndW0gY29ycmV0b3InO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGlua0NvbnRhdG8gPSBmb3JtRWxlbWVudD8ucXVlcnlTZWxlY3RvcignW2RhdGEtbGluay1jb250YXRvXScpPy5kYXRhc2V0LmxpbmtDb250YXRvO1xuICAgICAgICBpZiAoIWxpbmtDb250YXRvIHx8IGxpbmtDb250YXRvID09ICdbd2ViZm9ybTpoYW5kbGVyOnJlbW90ZV9wb3N0OmNvbXBsZXRlZDpsaW5rQ29udGF0b10nKSB7XG4gICAgICAgICAgaWYgKGxpbmtFbGVtZW50KSB7XG4gICAgICAgICAgICBsaW5rRWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgbGlua0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZXNzYWdlRWxlbWVudCkge1xuICAgICAgICAgICAgbWVzc2FnZUVsZW1lbnQuaW5uZXJUZXh0ID0gXCJFbSBicmV2ZSBlbnRyYXJlbW9zIGVtIGNvbnRhdG8uXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChsaW5rRWxlbWVudCkge1xuICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9IGxpbmtDb250YXRvO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4ge1xuICAgICAgICAgICAgbGlua0VsZW1lbnQ/LmNsaWNrKCk7XG4gICAgICAgICAgfSwgMTAwMClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5cbi8vIHJlc3RvcmUgZ3VpZCByZWdpb25hbCB2YWx1ZSBmcm9tIHN1Ym1pdGVkIGZvcm1zXG5EcnVwYWwuYmVoYXZpb3JzLmZvcm1SZXNldGVyID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuXG4gICAgaWYgKCFjb250ZXh0LmNsYXNzTGlzdD8uY29udGFpbnMoXCJjeXJlbGEtY29udGFjdFwiKSkgeyByZXR1cm47IH1cblxuICAgIGlmIChjb250ZXh0LnF1
1ZXJ5U2VsZWN0b3IoJy53ZWJmb3JtLWNvbmZpcm1hdGlvbl9fYmFjaycpKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKGNvbnRleHQgPT0gZm9ybUNvcnJldG9yV2hhdHNGb3JtPy5xdWVyeVNlbGVjdG9yKCdmb3JtJykpIHtcbiAgICAgIG9wZW5Db3JyZXRvcldoYXRzRm9ybSgpOyAvLyBmaWxsIGBsaW5rX3doYXRzYXBwYCBmaWVsZCBhZ2FpblxuICAgIH1cblxuICAgIGV2YWx1YXRlR3VpZFJlZ2lvbmFsKCk7XG4gICAgc2V0Q29va2llVmFsdWVJbkZvcm0oKTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3522\n\n}")},5504:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval('{/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   zT: () => (/* binding */ dadosDosLeads)\n/* harmony export */ });\n/* unused harmony exports resolveUtmSourceMedium, validarTempoDadosLead */\n/* harmony import */ var _getCookiesParams__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);\nfunction _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a \'" + o + "\' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to de
1structure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }\nfunction _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }\n\nvar storageDadosLead = {};\nvar storageUltimoAtrelado = {};\nvar storageListaPdp = [];\n\n// Obtém o guid_regional do params\nfunction getGuidRegional(params) {\n  var input = document.querySelector(\'[name="guid_regional"]\');\n  if (input) {\n    var formGuidValue = (input.value || input.getAttribute(\'value\') || \'\').trim();\n    if (formGuidValue) return formGuidValue;\n  }\n  try {\n    var geolocationInfoStr = localStorage.getItem(\'geolocation_info\');\n    if (!geolocationInfoStr) return \'\';\n    var geolocationInfo = JSON.parse(geolocationInfoStr);\n    var geolocationPayload = geolocationInfo && (geolocationInfo.payload || geolocationInfo.data || geolocationInfo["\\0"] || (Array.isArray(geolocationInfo) ? geolocationInfo[0] : geolocationInfo)) || {};\n    var guid = geolocationPayload && geolocationPayload.guid_regional != null ? String(geolocationPayload.guid_regional).trim() : \'\';\n    return guid;\n  } catch (_e) {\n    return \'\';\n  }\n}\n\n/**\n * Salva os dados do lead no localStorage.\n * @param {Object}
1 data - Objeto contendo os dados do lead\n */\n\n//Salva os dados e data do primeiro registro de lead.\nfunction dadosDosLeads(data) {\n  var params = new URLSearchParams(data);\n  // Captura UTMs da URL atual\n  var qs = new URLSearchParams(window.location.search);\n  var utm_source = qs.get(\'utm_source\') || null;\n  var utm_medium = qs.get(\'utm_medium\') || null;\n  var utm_campaign = qs.get(\'utm_campaign\') || null;\n  var dadosLead = {\n    nome: params.get(\'nome\'),\n    telefone: params.get(\'celular_com_ddd\'),\n    e_mail: params.get(\'e_mail\'),\n    guid_regional: params.get(\'guid_regional\') || getGuidRegional(params),\n    timestamp: new Date(),\n    utm_source: utm_source,\n    utm_medium: utm_medium,\n    utm_campaign: utm_campaign\n  };\n  localStorage.setItem(\'dadosLeadUsuario\', JSON.stringify(dadosLead));\n}\nfunction diaDeHoje() {\n  var d = new Date();\n  var mm = String(d.getMonth() + 1).padStart(2, \'0\');\n  var dd = String(d.getDate()).padStart(2, \'0\');\n  return "".concat(d.getFullYear(), "-").concat(mm, "-").concat(dd);\n}\nfunction resolveUtmSourceMedium() {\n  return _resolveUtmSourceMedium.apply(this, arguments);\n}\n\n// Função que valida tempo de 1 dia e dados para enviar para o mobi.\nfunction _resolveUtmSourceMedium() {\n  _resolveUtmSourceMedium = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n    var utm_source, utm_medium, _ref, _ref2, srcCk, medCk, strip;\n    return _regenerator().w(function (_context) {\n      while (1) switch (_context.n) {\n        case 0:\n          utm_source = null;\n          utm_medium = null;\n          try {\n            if (storageDadosLead) {\n              utm_source = storageDadosLead.utm_source;\n              utm_medium = storageDadosLead.utm_medium;\n            }\n            if (!utm_source || !utm_medium) {\n              try {\n                _ref = (0,_getCookiesParams__WEBPACK_IMPORTED_MODULE_0__/* .getUtmValueFromCookie */ .m)() || [], _ref2 = _slicedToArray(_ref, 2), srcCk = _ref2[0], medCk = _ref2[1];\n                if (!utm_source) utm_source = srcCk;\n                if (!utm_medium) utm_medium = medCk;\n              } catch (_unused) {}\n            }\n          } catch (_unused2) {}\n          strip = function strip(v) {\n            return v ? v.replace(/^\\(|\\)$/g, "") : v;\n          };\n          return _context.a(2, {\n            utm_source: strip(utm_source) || \'(none)\',\n            utm_medium: strip(utm_medium) || \'(none)\'\n          });\n      }\n    }, _callee);\n  }));\n  return _resolveUtmSourceMedium.apply(this, arguments);\n}\nfunction validarTempoDadosLead() {\n  return _validarTempoDadosLead.apply(this, arguments);\n}\n\n// Envio para o mobi.\nfunction _validarTempoDadosLead() {\n  _validarTempoDadosLead = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n    var dadosLead, ultimoAtrelado, listaEmpreendimentos, _yield$resolveUtmSour, utmcsrValue, utmcmdValue, diffEmDias, timestampLead, timestampPrimeiroLead, timestampUltimoAtrelado, nomesEmpreendimentos, guid, dia, lastKey, sendingKey, dadosSendMobi, formData, _i, _Object$entries, _Object$entries$_i, key, value, _t;\n    return _regenerator().w(function (_context2) {\n      while (1) switch (_context2.p = _context2.n) {\n        case 0:\n          dadosLead = storageDadosLead || {};\n          ultimoAtrelado = storageUltimoAtrelado || {};\n          listaEmpreendimentos = storageListaPdp || [];\n          _context2.n = 1;\n          return resolveUtmSourceMedium();\n        case 1:\n          _yield$resolveUtmSour = _context2.v;\n          utmcsrValue = _yield$resolveUtmSour.utm_source;\n          utmcmdValue = _yield$resolveUtmSour.utm_medium;\n          if (!dadosLead) {\n            _context2.n = 9;\n            break;\n          }\n          diffEmDias = 0; // Calcula a diferença de dias dos dados do lead\n          if (dadosLead.timestamp) {\n            timestampLead = new Date(dadosLead.timestamp);\n            diffEmDias = Math.ceil((Date.now() - timestampLead) / (1000 * 60 * 60 * 24));\n          }\n\n          // Valida se tem empreendimento\n          if (listaEmpreendimentos.length > 0) {\n            timestampPrimeiroLead = new Date(listaEmpreendimentos[0].timestamp);\n            diffEmDias = Math.ceil((Date.now() - timestampPrimeiroLead) / (1000 * 60 * 60 * 24));\n          }
1 else if (ultimoAtrelado.timestamp) {\n            timestampUltimoAtrelado = new Date(ultimoAtrelado.timestamp);\n            diffEmDias = Math.ceil((Date.now() - timestampUltimoAtrelado) / (1000 * 60 * 60 * 24));\n          }\n\n          // Se o lead tiver mais de 1 dia.\n          if (!(diffEmDias > 1)) {\n            _context2.n = 9;\n            break;\n          }\n          nomesEmpreendimentos = listaEmpreendimentos.length > 0 ? listaEmpreendimentos.map(function (emp) {\n            return emp.nome.split(\'|\')[0].trim();\n          }).join(", ") : \'\';\n          guid = dadosLead.guid_regional || getGuidRegional();\n          if (guid) {\n            _context2.n = 2;\n            break;\n          }\n          return _context2.a(2);\n        case 2:\n          dia = diaDeHoje();\n          lastKey = "manutencao_last_sent:".concat(guid);\n          if (!(localStorage.getItem(lastKey) === dia)) {\n            _context2.n = 3;\n            break;\n          }\n          return _context2.a(2);\n        case 3:\n          sendingKey = "manutencao_sending:".concat(guid);\n          if (!(sessionStorage.getItem(sendingKey) === \'1\')) {\n            _context2.n = 4;\n            break;\n          }\n          return _context2.a(2);\n        case 4:\n          sessionStorage.setItem(sendingKey, \'1\');\n          dadosSendMobi = {\n            utm_source: utmcsrValue,\n            origem1: utmcmdValue,\n            nome: dadosLead.nome,\n            celular_com_ddd: dadosLead.telefone,\n            e_mail: dadosLead.e_mail,\n            type: \'manutencao\',\n            empreendimento: nomesEmpreendimentos,\n            guid_regional: guid,\n            nid: ultimoAtrelado.id || \'\',\n            permalink: ultimoAtrelado.permalink || \'\',\n            dataPrimeiroLead: new Date().toLocaleDateString(\'pt-BR\')\n            // Atualiza para a data do momento atual que o usuario esta acessando o site\n          };\n          formData = new FormData();\n          for (_i = 0, _Object$entries = Object.entries(dadosSendMobi); _i < _Object$entries.length;
1 _i++) {\n            _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1];\n            formData.append(key, value);\n          }\n          _context2.p = 5;\n          if (!formData.get(\'guid_regional\')) formData.set(\'guid_regional\', guid);\n          _context2.n = 6;\n          return sendToManutencao(formData);\n        case 6:\n          localStorage.removeItem(\'listaPdp\');\n          localStorage.removeItem(\'ultimoAtrelado\');\n          storageListaPdp = [];\n          storageUltimoAtrelado = {};\n\n          // Atualiza o timestamp de dadosLeadUsuario para o tempo atual do ultimo envio.\n          dadosLead.timestamp = new Date();\n          if (!dadosLead.guid_regional) dadosLead.guid_regional = guid;\n          localStorage.setItem(\'dadosLeadUsuario\', JSON.stringify(dadosLead));\n          storageDadosLead = dadosLead;\n          localStorage.setItem(lastKey, dia);\n          return _context2.a(2, true);\n        case 7:\n          _context2.p = 7;\n          _t = _context2.v;\n          throw _t;\n        case 8:\n          _context2.p = 8;\n          sessionStorage.removeItem(sendingKey);\n          return _context2.f(8);\n        case 9:\n          return _context2.a(2);\n      }\n    }, _callee2, null, [[5, 7, 8, 9]]);\n  }));\n  return _validarTempoDadosLead.apply(this, arguments);\n}\nfunction sendToManutencao(_x) {\n  return _sendToManutencao.apply(this, arguments);\n} // Salva os 3 últimos empreendimentos visualizados.\nfunction _sendToManutencao() {\n  _sendToManutencao = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(data) {\n    var response, _t2;\n    return _regenerator().w(function (_context3) {\n      while (1) switch (_context3.p = _context3.n) {\n        case 0:\n          if (!(!(data instanceof FormData) || !data.get(\'guid_regional\'))) {\n            _context3.n = 1;\n            break;\n          }\n          throw new Error(\'guid_regional ausente.\');\n        case 1:\n          _context3.p = 1;\n          _context3.n = 2;\n          return fetch("/api/soap-handler/manutencao", {\n            method: "POST",\n            body: data\n          });\n        case 2:\n          response = _context3.v;\n          return _context3.a(2, response.ok);\n        case 3:\n          _context3.p = 3;\n          _t2 = _context3.v;\n          throw new Error(\'Erro na requisição para manutenção\');\n        case 4:\n          return _context3.a(2);\n      }\n    }, _callee3, null, [[1, 3]]);\n  }));\n  return _sendToManutencao.apply(this, arguments);\n}\nDrupal.behaviors.saveEmpreendimentos = {\n  attach: function attach(context, settings) {\n    once(\'saveEmpreendimentos\', document.body, context).forEach(function () {\n      jQuery(window).on(\'load\', function () {\n        if (!storageDadosLead || Object.keys(storageDadosLead).length === 0) {\n          return;\n        }\n        var uniqueImmobile = jQuery(\'.unique_immobile\');\n\n        // Confere quando entra na pdp\n        if (uniqueImmobile.length) {\n          var label = uniqueImmobile.data(\'label\');\n          var idProduto = uniqueImmobile.data(\'id\');\n          var timestamp = new Date().getTime();\n\n          // Recupera os empreendimentos salvos anteriormente do localStorage.\n          var listaPdp = storageListaPdp || [];\n\n          // Valida se o empreendimento já existe na lista pelo id.\n          var empreendimentoExistenteIndex = listaPdp.findIndex(function (emp) {\n            return emp.id === idProduto;\n          });\n\n          // Se o empreendimento não existir na lista, adiciona.\n          if (empreendimentoExistenteIndex === -1) {\n            var novoEmpreendimento = {\n              nome: label,\n              id: idProduto,\n              timestamp: timestamp\n            };\n            listaPdp.push(novoEmpreendimento);\n\n            // Salva os 3 empreendimentos.\n            if (listaPdp.length > 3) {\n              listaPdp.shift();\n            }\n\n            // Salvar a lista atualizada.\n            localStorage.setItem(\'listaPdp\', JSON.stringify(listaPdp));\n            storageListaPdp = listaPdp;\n\n            // Pega o permalink do empreendimento atual\n            var permalink = document.getElementById(\'permalink\').value;\n\n            // Salvar o último empreendimento a ser atrelado ao lead\n            var ultimoAtrelado = _objectSpread(_objectSpread({}, novoEmpreendimento), {}, {\n              permalink: permalink\n            });\n            localStorage.setItem(\'ultimoAtrelado\', JSON.stringify(ultimoAtrelado));\n            storageUltimoAtrelado = ultimoAtrelado;\n          }\n        }\n      });\n    });\n  }\n};\njQuery(window).on(\'load\', function () {\n  storageDadosLead = JSON.parse(localStorage.getItem(\'dadosLeadUsuario\') || \'{}\');\n  storageUltimoAtrelado = JSON.parse(localStorage.getItem(\'ultimoAtrelado\') || \'{}\');\n  storageListaPdp = JSON.parse(localStorage.getItem(\'listaPdp\') || \'[]\');\n  var temLead = Object.keys(storageDadosLead).length > 0;\n  var temAtrelado = Object.keys(storageUltimoAtrelado).length > 0;\n  if (temLead && temAtrelado) {\n    validarTempoDadosLead()["catch"](function (err) {\n      console.error(\'Falha ao enviar fila de manutenção:\', err);\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUwNC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFRQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0F
1BRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTs7QUE4QkE7QUFBQTtBQUFBO0FBOUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFBQTtBQUFBOztBQWdHQTtBQUFBO0FBQUE7QUFoR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBaUJBO0FBQUE7QUFqQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUhBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUFBO0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvZmlsYS1tYW51dGVuY2FvLmpzPzJhMWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VXRtVmFsdWVGcm9tQ29va2llIH0gZnJvbSBcIi4vZ2V0Q29va2llc1BhcmFtc1wiO1xuXG5sZXQgc3RvcmFnZURhZG9zTGVhZCA9IHt9O1xubGV0IHN0b3JhZ2VVbHRpbW9BdHJlbGFkbyA9IHt9O1xubGV0IHN0b3JhZ2VMaXN0YVBkcCA9IFtdO1xuXG4vLyBPYnTDqW0gbyBndWlkX3JlZ2lvbmFsIGRvIHBhcmFtc1xuZnVuY3Rpb24gZ2V0R3VpZFJlZ2lvbmFsKHBhcmFtcykge1xuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJndWlkX3JlZ2lvbmFsXCJdJyk7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IGZvcm1HdWlkVmFsdWUgPSAoaW5wdXQudmFsdWUgfHwgaW5wdXQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIHx8ICcnKS50cmltKCk7XG4gICAgICAgIGlmIChmb3JtR3VpZFZhbHVlKSByZXR1cm4gZm9ybUd1aWRWYWx1ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZ2VvbG9jYXRpb25JbmZvU3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2dlb2xvY2F0aW9uX2luZm8nKTtcbiAgICAgICAgaWYgKCFnZW9sb2NhdGlvbkluZm9TdHIpIHJldHVybiAnJztcblxuICAgICAgICBjb25zdCBnZW9sb2NhdGlvbkluZm8gPSBKU09OLnBhcnNlKGdlb2xvY2F0aW9uSW5mb1N0cik7XG5cbiAgICAgICAgY29uc3QgZ2VvbG9jYXRpb25QYXlsb2FkID1cbiAgICAgICAgICAgIChnZW9sb2NhdGlvbkluZm8gJiYgKFxuICAgICAgICAgICAgICAgIGdlb2xvY2F0aW9uSW5mby5wYXlsb2FkIHx8XG4gICAgICAgICAgICAgICAgZ2VvbG9jYXRpb25JbmZvLmRhdGEgfHxcbiAgICAgICAgICAgICAgICBnZW9sb2NhdGlvbkluZm9bJ1xcdTAwMDAnXSB8fFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGdlb2xvY2F0aW9uSW5mbykgPyBnZW9sb2NhdGlvbkluZm9bMF0gOiBnZW9sb2NhdGlvbkluZm8pXG4gICAgICAgICAgICApKSB8fCB7fTtcblxuICAgICAgICBjb25zdCBndWlkID0gZ2VvbG9jYXRpb25QYXlsb2FkICYmIGdlb2xvY2F0aW9uUGF5bG9hZC5ndWlkX3JlZ2lvbmFsICE9IG51bGxcbiAgICAgICAgICAgID8gU3RyaW5nKGdlb2xvY2F0aW9uUGF5bG9hZC5ndWlkX3JlZ2lvbmFsKS50cmltKCkgOiAnJztcblxuICAgICAgICByZXR1cm4gZ3VpZDtcbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG59XG5cbi8qKlxuICogU2FsdmEgb3MgZGFkb3MgZG8gbGVhZCBubyBsb2NhbFN0b3JhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIE9iamV0byBjb250ZW5kbyBvcyBkYWRvcyBkbyBsZWFkXG4gKi9cblxuLy9TYWx2YSBvcyBkYWRvcyBlIGRhdGEgZG8gcHJpbWVpcm8gcmVnaXN0cm8gZGUgbGVhZC5cbmV4cG9ydCBmdW5jdGlvbiBkYWRvc0Rvc0xlYWRzKGRhdGEpIHtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZGF0YSk7XG4gICAgLy8gQ2FwdHVyYSBVVE1zIGRhIFVSTCBhdHVhbFxuICAgIGNvbnN0IHFzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCB1dG1fc291cmNlID0gcXMuZ2V0KCd1dG1fc291cmNlJykgfHwgbnVsbDtcbiAgICBjb25zdCB1dG1fbWVkaXVtID0gcXMuZ2V0KCd1dG1fbWVkaXVtJykgfHwgbnVsbDtcbiAgICBjb25zdCB1dG1fY2FtcGFpZ24gPSBxcy5nZXQoJ3V0bV9jYW1wYWlnbicpIHx8IG51bGw7XG5cbiAgICBsZXQgZGFkb3NMZWFkID0ge1xuICAgICAgICBub21lOiBwYXJhbXMuZ2V0KCdub21lJyksXG4gICAgICAgI
1HRlbGVmb25lOiBwYXJhbXMuZ2V0KCdjZWx1bGFyX2NvbV9kZGQnKSxcbiAgICAgICAgZV9tYWlsOiBwYXJhbXMuZ2V0KCdlX21haWwnKSxcbiAgICAgICAgZ3VpZF9yZWdpb25hbDogcGFyYW1zLmdldCgnZ3VpZF9yZWdpb25hbCcpIHx8IGdldEd1aWRSZWdpb25hbChwYXJhbXMpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgIHV0bV9zb3VyY2UsXG4gICAgICAgIHV0bV9tZWRpdW0sXG4gICAgICAgIHV0bV9jYW1wYWlnblxuXG4gICAgfTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFkb3NMZWFkVXN1YXJpbycsIEpTT04uc3RyaW5naWZ5KGRhZG9zTGVhZCkpO1xuXG5cbn1cblxuXG5mdW5jdGlvbiBkaWFEZUhvamUoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbW0gPSBTdHJpbmcoZC5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBkZCA9IFN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke21tfS0ke2RkfWA7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlVXRtU291cmNlTWVkaXVtKCkge1xuICAgIGxldCB1dG1fc291cmNlID0gbnVsbDtcbiAgICBsZXQgdXRtX21lZGl1bSA9IG51bGw7XG5cblxuICAgIHRyeSB7XG4gICAgICAgIGlmIChzdG9yYWdlRGFkb3NMZWFkKSB7XG4gICAgICAgICAgICB1dG1fc291cmNlID0gc3RvcmFnZURhZG9zTGVhZC51dG1fc291cmNlO1xuICAgICAgICAgICAgdXRtX21lZGl1bSA9IHN0b3JhZ2VEYWRvc0xlYWQudXRtX21lZGl1bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXV0bV9zb3VyY2UgfHwgIXV0bV9tZWRpdW0pIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3NyY0NrLCBtZWRDa10gPSBnZXRVdG1WYWx1ZUZyb21Db29raWUoKSB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAoIXV0bV9zb3VyY2UpIHV0bV9zb3VyY2UgPSBzcmNDaztcbiAgICAgICAgICAgICAgICBpZiAoIXV0bV9tZWRpdW0pIHV0bV9tZWRpdW0gP
1SBtZWRDaztcbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgIH1cblxuICAgIH0gY2F0Y2ggeyB9XG5cbiAgICBjb25zdCBzdHJpcCA9ICh2KSA9PiAodiA/IHYucmVwbGFjZSgvXlxcKHxcXCkkL2csIFwiXCIpIDogdik7XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICAgIHV0bV9zb3VyY2U6IHN0cmlwKHV0bV9zb3VyY2UpIHx8ICcobm9uZSknLFxuICAgICAgICB1dG1fbWVkaXVtOiBzdHJpcCh1dG1fbWVkaXVtKSB8fCAnKG5vbmUpJyxcbiAgICB9O1xufVxuXG5cbi8vIEZ1bsOnw6NvIHF1ZSB2YWxpZGEgdGVtcG8gZGUgMSBkaWEgZSBkYWRvcyBwYXJhIGVudmlhciBwYXJhIG8gbW9iaS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGFyVGVtcG9EYWRvc0xlYWQoKSB7XG5cbiAgICBjb25zdCBkYWRvc0xlYWQgPSBzdG9yYWdlRGFkb3NMZWFkIHx8IHt9O1xuICAgIGNvbnN0IHVsdGltb0F0cmVsYWRvID0gc3RvcmFnZVVsdGltb0F0cmVsYWRvIHx8IHt9O1xuICAgIGNvbnN0IGxpc3RhRW1wcmVlbmRpbWVudG9zID0gc3RvcmFnZUxpc3RhUGRwIHx8IFtdO1xuXG4gICAgY29uc3QgeyB1dG1fc291cmNlOiB1dG1jc3JWYWx1ZSwgdXRtX21lZGl1bTogdXRtY21kVmFsdWUgfSA9IGF3YWl0IHJlc29sdmVVdG1Tb3VyY2VNZWRpdW0oKTtcblxuICAgIC8vIFZhbGlkYXIgbyB0ZW1wbyBzZSBleGlzdGUgZGFkb3MgZGUgbGVhZCBow6EgbWFpcyBkZSAxIGRpYVxuICAgIGlmIChkYWRvc0xlYWQpIHtcbiAgICAgICAgbGV0IGRpZmZFbURpYXMgPSAwO1xuXG4gICAgICAgIC8vIENhbGN1bGEgYSBkaWZlcmVuw6dhIGRlIGRpYXMgZG9zIGRhZG9zIGRvIGxlYWRcbiAgICAgICAgaWYgKGRhZG9zTGVhZC50aW1lc3RhbXApIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcExlYWQgPSBuZXcgRGF0ZShkYWRvc0xlYWQudGltZXN0YW1wKTtcbiAgICAgICAgICAgIGRpZmZFbURpYXMgPSBNYXRoLmNlaWwoKERhdGUubm93KCkgLSB0aW1lc3RhbXBMZWFkKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGEgc2UgdGVtIGVtcHJlZW5kaW1lbn
1RvXG4gICAgICAgIGlmIChsaXN0YUVtcHJlZW5kaW1lbnRvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXBQcmltZWlyb0xlYWQgPSBuZXcgRGF0ZShsaXN0YUVtcHJlZW5kaW1lbnRvc1swXS50aW1lc3RhbXApO1xuICAgICAgICAgICAgZGlmZkVtRGlhcyA9IE1hdGguY2VpbCgoRGF0ZS5ub3coKSAtIHRpbWVzdGFtcFByaW1laXJvTGVhZCkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHVsdGltb0F0cmVsYWRvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wVWx0aW1vQXRyZWxhZG8gPSBuZXcgRGF0ZSh1bHRpbW9BdHJlbGFkby50aW1lc3RhbXApO1xuICAgICAgICAgICAgZGlmZkVtRGlhcyA9IE1hdGguY2VpbCgoRGF0ZS5ub3coKSAtIHRpbWVzdGFtcFVsdGltb0F0cmVsYWRvKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZSBvIGxlYWQgdGl2ZXIgbWFpcyBkZSAxIGRpYS5cbiAgICAgICAgaWYgKGRpZmZFbURpYXMgPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBub21lc0VtcHJlZW5kaW1lbnRvcyA9IGxpc3RhRW1wcmVlbmRpbWVudG9zLmxlbmd0aCA+IDAgPyBsaXN0YUVtcHJlZW5kaW1lbnRvcy5tYXAoZW1wID0+IGVtcC5ub21lLnNwbGl0KCd8JylbMF0udHJpbSgpKS5qb2luKFwiLCBcIikgOiAnJztcblxuICAgICAgICAgICAgY29uc3QgZ3VpZCA9IGRhZG9zTGVhZC5ndWlkX3JlZ2lvbmFsIHx8IGdldEd1aWRSZWdpb25hbCgpO1xuICAgICAgICAgICAgaWYgKCFndWlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlhID0gZGlhRGVIb2plKCk7XG4gICAgICAgICAgICBjb25zdCBsYXN0S2V5ID0gYG1hbnV0ZW5jYW9fbGFzdF9zZW50OiR7Z3VpZH1gO1xuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxhc3RLZXkpID09PSBkaWEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZW5kaW5nS2V5ID0gYG1hbnV0ZW5jYW9fc2VuZGluZzoke2d1aWR9YDtcbiAgICAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlbmRpbmdLZXkpID09PSAnMScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHNlbmRpbmdLZXksICcxJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRhZG9zU2VuZE1vYmkgPSB7XG4gICAgICAgICAgICAgICAgdXRtX3NvdXJjZTogdXRtY3NyVmFsdWUsXG4gICAgICAgICAgICAgICAgb3JpZ2VtMTogdXRtY21kVmFsdWUsXG4gICAgICAgICAgICAgICAgbm9tZTogZGFkb3NMZWFkLm5vbWUsXG4gICAgICAgICAgICAgICAgY2VsdWxhcl9jb21fZGRkOiBkYWRvc0xlYWQudGVsZWZvbmUsXG4gICAgICAgICAgICAgICAgZV9tYWlsOiBkYWRvc0xlYWQuZV9tYWlsLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdtYW51dGVuY2FvJyxcbiAgICAgICAgICAgICAgICBlbXByZWVuZGltZW50bzogbm9tZXNFbXByZWVuZGltZW50b3MsXG4gICAgICAgICAgICAgICAgZ3VpZF9yZWdpb25hbDogZ3VpZCxcbiAgICAgICAgICAgICAgICBuaWQ6IHVsdGltb0F0cmVsYWRvLmlkIHx8ICcnLFxuICAgICAgICAgICAgICAgIHBlcm1hbGluazogdWx0aW1vQXRyZWxhZG8ucGVybWFsaW5rIHx8ICcnLFxuICAgICAgICAgICAgICAgIGRhdGFQcmltZWlyb0xlYWQ6IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdwdC1CUicpLFxuICAgICAgICAgICAgICAgIC8vIEF0dWFsaXphIHBhcmEgYSBkYXRhIGRvIG1vbWVudG8gYXR1YWwgcXVlIG8gdXN1YXJpbyBlc3RhIGFjZXNzYW5kbyBvIHNpdGVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYWRvc1NlbmRNb2JpKSkge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1EYXRhLmdldCgnZ3VpZF9yZWdpb25hbCcpKSBmb3JtRGF0YS5zZXQoJ2d1aWRfcmVnaW9uYWwnLCBndWlkKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBzZW5kVG9NYW51dGVuY2FvKGZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGlzdGFQZHAnKTtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndWx0aW1vQXRyZWxhZG8nKTtcbiAgICAgICAgICAgICAgICBzdG9yYWdlTGlzdGFQZHAgPSBbXTtcbiAgICAgICAgICAgICAgICBzdG9yYWdlVWx0aW1vQXRyZWxhZG8gPSB7fTtcblxuICAgICAgICAgICAgICAgIC8vIEF0dWFsaXphIG8gdGltZXN0YW1wIGRlIGRhZG9zTGVhZFVzdWFyaW8gcGFyYSBvIHRlbXBvIGF0dWFsIGRvIHVsdGltbyBlbnZpby5cbiAgICAgICAgICAgICAgICBkYWRvc0xlYWQudGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhZG9zTGVhZC5ndWlkX3JlZ2lvbmFsKSBkYWRvc0xlYWQuZ3VpZF9yZWdpb25hbCA9IGd1aWQ7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhZG9zTGVhZFVzdWFyaW8nLCBKU09OLnN0cmluZ2lmeShkYWRvc0xlYWQpKTtcbiAgICAgICAgICAgICAgICBzdG9yYWdlRGFkb3NMZWFkID0gZGFkb3NMZWFkO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxhc3RLZXksIGRpYSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG5cbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHNlbmRpbmdLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbn1cblxuLy8gRW52aW8gcGFyYSBvIG1vYmkuXG5hc3luYyBmdW5jdGlvbiBzZW5kVG9NYW51dGVuY2FvKGRhdGEpIHtcblxuICAgIGlmICghKGRhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSkgfHwgIWRhdGEuZ2V0KCdndWlkX3JlZ2lvbmFsJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdndWlkX3JlZ2lvbmFsIGF1c2VudGUuJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9hcGkvc29hcC1oYW5kbGVyL21hbnV0ZW5jYW9gLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm9rXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvIG5hIHJlcXVpc2nDp8OjbyBwYXJhIG1hbnV0ZW7Dp8OjbycpO1xuICAgIH1cblxufVxuXG4vLyBTYWx2YSBvcyAzIMO6bHRpbW9zIGVtcHJlZW5kaW1lbn
1RvcyB2aXN1YWxpemFkb3MuXG5EcnVwYWwuYmVoYXZpb3JzLnNhdmVFbXByZWVuZGltZW50b3MgPSB7XG4gICAgYXR0YWNoOiBmdW5jdGlvbiAoY29udGV4dCwgc2V0dGluZ3MpIHtcbiAgICAgICAgb25jZSgnc2F2ZUVtcHJlZW5kaW1lbnRvcycsIGRvY3VtZW50LmJvZHksIGNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN0b3JhZ2VEYWRvc0xlYWQgfHwgT2JqZWN0LmtleXMoc3RvcmFnZURhZG9zTGVhZCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJbW1vYmlsZSA9IGpRdWVyeSgnLnVuaXF1ZV9pbW1vYmlsZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29uZmVyZSBxdWFuZG8gZW50cmEgbmEgcGRwXG4gICAgICAgICAgICAgICAgaWYgKHVuaXF1ZUltbW9iaWxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHVuaXF1ZUltbW9iaWxlLmRhdGEoJ2xhYmVsJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkUHJvZHV0byA9IHVuaXF1ZUltbW9iaWxlLmRhdGEoJ2lkJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlY3VwZXJhIG9zIGVtcHJlZW5kaW1lbn
1RvcyBzYWx2b3MgYW50ZXJpb3JtZW50ZSBkbyBsb2NhbFN0b3JhZ2UuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RhUGRwID0gc3RvcmFnZUxpc3RhUGRwIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFZhbGlkYSBzZSBvIGVtcHJlZW5kaW1lbnRvIGrDoSBleGlzdGUgbmEgbGlzdGEgcGVsbyBpZC5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1wcmVlbmRpbWVudG9FeGlzdGVudGVJbmRleCA9IGxpc3RhUGRwLmZpbmRJbmRleChlbXAgPT4gZW1wLmlkID09PSBpZFByb2R1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNlIG8gZW1wcmVlbmRpbWVudG8gbsOjbyBleGlzdGlyIG5hIGxpc3RhLCBhZGljaW9uYS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHJlZW5kaW1lbnRvRXhpc3RlbnRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3ZvRW1wcmVlbmRpbWVudG8gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tZTogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkUHJvZHV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RhUGRwLnB1c2gobm92b0VtcHJlZW5kaW1lbnRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FsdmEgb3MgMyBlbXByZWVuZGltZW50b3MuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdGFQZHAubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RhUGRwLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbHZhciBhIGxpc3RhIGF0dWFsaXphZGEuXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGlzdGFQZHAnLCBKU09OLnN0cmluZ2lmeShsaXN0YVBkcCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUxpc3RhUGRwID0gbGlzdGFQZHA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlZ2EgbyBwZXJtYWxpbmsgZG8gZW1wcmVlbmRpbWVudG8gYXR1YWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1hbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZXJtYWxpbmsnKS52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FsdmFyIG8gw7psdGltbyBlbXByZWVuZGltZW50byBhIHNlciBhdHJlbGFkbyBhbyBsZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bHRpbW9BdHJlbGFkbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ub3ZvRW1wcmVlbmRpbWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiBwZXJtYWxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1bHRpbW9BdHJlbGFkbycsIEpTT04uc3RyaW5naWZ5KHVsdGltb0F0cmVsYWRvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlVWx0aW1vQXRyZWxhZG8gPSB1bHRpbW9BdHJlbGFkbztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5qUXVlcnkod2luZG93KS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIHN0b3JhZ2VEYWRvc0xlYWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYWRvc0xlYWRVc3VhcmlvJykgfHwgJ3t9Jyk7XG4gICAgc3RvcmFnZVVsdGltb0F0cmVsYWRvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndWx0aW1vQXRyZWxhZG8nKSB8fCAne30nKTtcbiAgICBzdG9yYWdlTGlzdGFQZHAgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsaXN0YVBkcCcpIHx8ICdbXScpO1xuICAgIFxuICAgIGNvbnN0IHRlbUxlYWQgPSBPYmplY3Qua2V5cyhzdG9yYWdlRGFkb3NMZWFkKS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHRlbUF0cmVsYWRvID0gT2JqZWN0LmtleXMoc3RvcmFnZVVsdGltb0F0cmVsYWRvKS5sZW5ndGggPiAwO1xuXG4gICAgaWYgKHRlbUxlYWQgJiYgdGVtQXRyZWxhZG8pIHtcbiAgICAgICAgdmFsaWRhclRlbXBvRGFkb3NMZWFkKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFsaGEgYW8gZW52aWFyIGZpbGEgZGUgbWFudXRlbsOnw6NvOicsIGVycik7XG4gICAgICAgIH0pO1xuICAgIH1cbn0pO1xuXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///5504\n\n}')},6167:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval('{/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   SP: () => (/* binding */ normalizeToDataLayer),\n/* harmony export */   V8: () => (/* binding */ WEEK),\n/* harmony export */   qy: () => (/* binding */ html),\n/* harmony export */   ty: () => (/* binding */ nativeShare)\n/* harmony export */ });\n/* unused harmony exports MILLISECOND, SECOND, MINUTE, HOUR, DAY, MONTH, getFileNameFromUrl */\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a \'" + o + "\' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf;
1 var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }\nvar MILLISECOND = 1;\nvar SECOND = MILLISECOND * 1000;\nvar MINUTE = SECOND * 60;\nvar HOUR = MINUTE * 60;\nvar DAY = HOUR * 24;\nvar WEEK = DAY * 7;\n/** rounded do 30 */\nvar MONTH = DAY * 30;\nfunction getFileNameFromUrl(url) {\n  // Split the URL by \'/\' to get the individual path segments\n  var pathSegments = url.split(\'/\');\n\n  // Get the last path segment, which should be the image name\n  var imageNameWithExtension = pathSegments[pathSegments.length - 1];\n\n  // If there\'s no image name (e.g., the URL ends with a \'/\'), return an empty string\n  if (!imageNameWithExtension) {\n    return \'\';\n  }\n\n  // Remove any query parameters or hash fragments from the image name\n  var imageName = imageNameWithExtension.split(\'?\')[0].split(\'#\')[0];\n  return imageName;\n}\n\n/**\n * Compartilha **imagem** com o Sistema Operacional, via a API [navigator.share](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share)\n * Essa funcionalidade só pode ser executada em ambinete seguro.\n *\n * @argument {string} shareimg - URL da imagem que será compartilhada\n * A imagem até pode ser externa, mas o site precisa ter acesso a ela (aka: CORS).\n * @argument {string} [sharelink] - Link que será compartilhado\n * @argument {string} [sharetitle] - Titulo da imagem\n *\n * @throws Se algo no fluxo de compartilhamento falhar, lança uma exceção. Mas não o faz se o próprio usuario cancelar a ação.\n * Exemplos comuns para falha:\n * - Dispositivo não ter suporte à API de compartilhamento.\n * - Imagem não estar disponível no contexto do site.\n *\n * @returns boolean - `true` se imagem foi compartilhada com sucesso, `false` caso compartilhamento seja cancelado\n *\n * BUG: https://stackoverflow.com/questions/76076190/sharing-an-image-using-the-webshare-api-in-ios-is-failing\n * */\nfunction nativeShare(_x) {\n  return _nativeShare.apply(this, arguments);\n}\nfunction _nativeShare() {\n  _nativeShare = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(shareimg) {\n    var sharelink,\n      sharetitle,\n      response,\n      blob,\n      file,\n      _args = arguments,\n      _t;\n    return _regenerator().w(function (_context) {\n      while (1) switch (_context.p = _context.n) {\n        case 0:\n          sharelink = _args.length > 1 && _args[1] !== undefined ? _args[1] : \'\';\n          sharetitle = _args.length > 2 && _args[2] !== undefined ? _args[2] : \'\';\n          _context.p = 1;\n          if (\'share\' in navigator) {\n            _context.n = 2;\n            break;\n          }\n          throw TypeError("navigator.share is not supported");\n        case 2:\n          _context.n = 3;\n          return fetch(shareimg);\n        case 3:\n          response = _context.v;\n          _context.n = 4;\n          return response.blob();\n        case 4:\n          blob = _context.v;\n          file = new File([blob], getFileNameFromUrl(shareimg), {\n            type: blob.type\n          });\n          _context.n = 5;\n          return navigator.share({\n            url: sharelink,\n            title: sharetitle,\n            files: [file]\n          });\n        case 5:\n          _context.n = 8;\n          break;\n        case 6:\n          _context.p = 6;\n          _t = _context.v;\n          if (!String(_t).startsWith("AbortError")) {\n            _context.n = 7;\n            break;\n          }\n          return _context.a(2, false);\n        case 7:\n          throw _t;\n        case 8:\n          return _context.a(2, true);\n      }\n    }, _callee, null, [[1, 6]]);\n  }));\n  return _nativeShare.apply(this, arguments);\n}\n;\nfunction normalizeToDataLayer(txt) {\n  return txt.trim().normalize(\'NFD\').replace(/[\\u0300-\\u036f]/g, "").toLowerCase().replace(/\\s+/g, \'_\');\n}\n\n/**\n * Tagged template literal para HTML dentro de string\n *\n * Não executa nenhuma funcionalidade extra à template literal comum,\n * mas com isso, IDEs mostram syntax highlight e recomendações LSP dentro da string\n */\nvar html = String.raw;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjE2Ny5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0F
1BRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBeUJBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUtBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3V0aWxzLmpzPzRmZGQiXSwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgY29uc3QgTUlMTElTRUNPTkQgPSAxO1xuZXhwb3J0IGNvbnN0IFNFQ09ORCA9IE1JTExJU0VDT05EICogMTAwMDtcbmV4cG9ydCBjb25zdCBNSU5VVEUgPSBTRUNPTkQgKiA2MDtcbmV4cG9ydCBjb25zdCBIT1VSID0gTUlOVVRFICogNjA7XG5leHBvcnQgY29uc3QgREFZID0gSE9VUiAqIDI0O1xuZXhwb3J0IGNvbnN0IFdFRUsgPSBEQVkgKiA3O1xuLyoqIHJvdW5kZWQgZG8gMzAgKi9cbmV4cG9ydCBjb25zdCBNT05USCA9IERBWSAqIDMwO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTmFtZUZyb21VcmwodXJsKSB7XG4gIC8vIFNwbGl0IHRoZSBVUkwgYnkgJy8nIHRvIGdldCB0aGUgaW5kaXZpZHVhbCBwYXRoIHNlZ21lbnRzXG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IHVybC5zcGxpdCgnLycpO1xuXG4gIC8vIEdldCB0aGUgbGFzdCBwYXRoIHNlZ21lbnQsIHdoaWNoIHNob3VsZCBiZSB0aGUgaW1hZ2UgbmFtZVxuICBjb25zdCBpbWFnZU5hbWVXaXRoRXh0ZW5zaW9uID0gcGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXTtcblxuICAvLyBJZiB0aGVyZSdzIG5vIGltYWdlIG5hbWUgKGUuZy4sIHRoZSBVUkwgZW5kcyB3aXRoIGEgJy8nKSwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZ1xuICBpZiAoIWltYWdlTmFtZVdpdGhFeHRlbnNpb24pIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBSZW1vdmUgYW55IHF1ZXJ5IHBhcmFtZXRlcnMgb3IgaGFzaCBmcmFnbWVudHMgZnJvbSB0aGUgaW1hZ2UgbmFtZVxuICBjb25zdCBpbWFnZU5hbWUgPSBpbWFnZU5hbWVXaXRoRXh0ZW5zaW9uLnNwbGl0KCc/JylbMF0uc3BsaXQoJyMnKVswXTtcblxuICByZXR1cm4gaW1hZ2VOYW1lO1xufVxuXG5cbi8qKlxuICogQ29tcGFydGlsaGEgKippbWFnZW0qKiBjb20gbyBTaXN0ZW1hIE9wZXJhY2lvbmFsLCB2aWEgYSBBUEkgW25hdmlnYXRvci5zaGFyZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9zaGFyZSlcbiAqIEVzc2EgZnVuY2lvbmFsaWRhZGUgc8OzIHBvZGUgc2VyIGV4ZWN1dGFkYSBlbSBhbWJpbmV0ZSBzZWd1cm8uXG4gKlxuICogQGFyZ3VtZW50IHtzdHJpbmd9IHNoYXJlaW1nIC0gVVJMIGRhIGltYWdlbSBxdWUgc2Vyw6EgY29tcGFydGlsaGFkYVxuICogQSBpbWFnZW0gYXTDqSBwb2RlIHNlciBleHRlcm5hLCBtYXMgbyBzaXRlIHByZWNpc2EgdGVyIGFjZXNzbyBhIGVsYSAoYWthOiBDT1JTKS5cbiAqIEBhcmd1bWVudCB7c3RyaW5nfSBbc2hhcmVsaW5rXSAtIExpbmsgcXVlIHNlcsOhIGNvbXBhcnRpbGhhZG9cbiAqIEBhcmd1bWVudCB7c3RyaW5nfSBbc2hhcmV0aXRsZV0gLSBUaXR1bG8gZGEgaW1hZ2VtXG4gKlxuICogQHRocm93cyBTZSBhbGdvIG5vIGZsdXhvIGRlIGNvbXBhcnRpbGhhbWVudG8gZmFsaGFyLCBsYW7Dp2EgdW1hIGV4Y2XDp8Ojby4gTWFzIG7Do28gbyBmYXogc2UgbyBwcsOzcHJpbyB1c3VhcmlvIGNhbmNlbGFyIGEgYcOnw6NvLlxuICogRXhlbXBsb3MgY29tdW5zIHBhcmEgZmFsaGE6XG4gKiAtIERpc3Bvc2l0aXZvIG7Do28gdGVyIHN1cG9ydGUgw6AgQVBJIGRlIGNvbXBhcnRpbGhhbWVudG8uXG4gKiAtIEltYWdlbSBuw6NvIGVzdGFyIGRpc3BvbsOtdmVsIG5vIGNvbnRleHRvIGRvIHNpdGUuXG4gKlxuICogQHJldHVybnMgYm9vbGVhbiAtIGB0cnVlYCBzZSBpbWFnZW0gZm9pIGNvbXBhcnRpbGhhZGEgY29tIHN1Y2Vzc28sIGBmYWxzZWAgY2FzbyBjb21wYXJ0aWxoYW1lbnRvIHNlamEgY2FuY2VsYWRvXG4gKlxuICogQlVHOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NjA3NjE5MC9zaGFyaW5nLWFuLWltYWdlLXVzaW5nLXRoZS13ZWJzaGFyZS1hcGktaW4taW9zLWlzLWZhaWxpbmdcbiAqICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbmF0aXZlU2hhcmUoc2hhcmVpbWcsIHNoYXJlbGluayA9ICcnLCBzaGFyZXRpdGxlID0gJycpIHtcblxuICB0cnkge1xuICAgIGlmICghKCdzaGFyZScgaW4gbmF2aWdhdG9yKSkgdGhyb3cgVHlwZUVycm9yKFwibmF2aWdhdG9yLnNoYXJlIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG5cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goc2hhcmVpbWcpO1xuICAgIGNvbnN0IGJsb2IgPSBhd2FpdCByZXNwb25zZS5ibG9iKCk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZ2V0RmlsZU5hbWVGcm9tVXJsKHNoYXJlaW1nKSwgeyB0eXBlOiBibG9iLnR5cGUgfSk7XG5cbiAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe1xuICAgICAgdXJsOiBzaGFyZWxpbmssXG4gICAgICB0aXRsZTogc2hhcmV0aXRsZSxcbiAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIFNlIHVzdcOhcmlvIGNhbmNlbGFyIGNvbXBhcnRpbGhhbWVudG8sIG7Do28gaW50ZXJmaXJpclxuICAgIGlmIChTdHJpbmcoZXJyKS5zdGFydHNXaXRoKFwiQWJvcnRFcnJvclwiKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgI
1HRocm93IGVycjtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVG9EYXRhTGF5ZXIodHh0KSB7XG4gIHJldHVybiB0eHQudHJpbSgpXG4gICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csICdfJylcbn1cblxuLyoqXG4gKiBUYWdnZWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJhIEhUTUwgZGVudHJvIGRlIHN0cmluZ1xuICpcbiAqIE7Do28gZXhlY3V0YSBuZW5odW1hIGZ1bmNpb25hbGlkYWRlIGV4dHJhIMOgIHRlbXBsYXRlIGxpdGVyYWwgY29tdW0sXG4gKiBtYXMgY29tIGlzc28sIElERXMgbW9zdHJhbSBzeW50YXggaGlnaGxpZ2h0IGUgcmVjb21lbmRhw6fDtWVzIExTUCBkZW50cm8gZGEgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBodG1sID0gU3RyaW5nLnJhdztcblxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6167\n\n}')},8023:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval('{/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   g: () => (/* binding */ buildWhatsAppContactUrl),\n/* harmony export */   w: () => (/* binding */ buildParamnsUrl)\n/* harmony export */ });\n/* harmony import */ var _fetchLocationInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9917);\n/* harmony import */ var _getCookiesParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a \'" + o + "\' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }\n\n\nfunction buildParamnsUrl() {\n  return _buildParamnsUrl.apply(this, arguments);\n}\nfunction _buildParamnsUrl() {\n  _buildParamnsUrl = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n    var _cookieGA$;\n    var arrayUtm, urlWithParams, urlSearchParams, params, guidElement, utmcsrValue, utmcmdValue, cookieGA;\n    return _regenerator().w(function (_context) {\n      while (1) switch (_context.n) {\n        case 0:\n          _context.n = 1;\n          return (0,_getCookiesParams__WEBPACK_IMPORTED_MODULE_1__/* .getUtmValueFromCookie */ .m)();\n        case 1:\n          arrayUtm = _context.v;\n          urlWithParams = new URL(window.location.origin);\n          urlWithParams.pathname = window.location.pathname;\n          urlSearchParams = new URLSearchParams(window.location.search);
1\n          params = Object.fromEntries(urlSearchParams.entries());\n          guidElement = document.querySelector("[data-guid-crm]");\n          urlWithParams.searchParams.append("guid", guidElement ? guidElement.dataset.guidCrm : 0);\n          utmcsrValue = arrayUtm[0] || \'(none)\';\n          urlWithParams.searchParams.append("utm_source", utmcsrValue || params.scr || "(direct)");\n          utmcmdValue = arrayUtm[1] || \'(none)\';\n          urlWithParams.searchParams.append("utm_medium", utmcmdValue || params.md || "(none)");\n          urlWithParams.searchParams.append("utm_gclid", params.gclid || "(none)");\n          cookieGA = document.cookie.split(";").filter(function (item) {\n            return item.includes("_ga=");\n          });\n          urlWithParams.searchParams.append("clientid", ((_cookieGA$ = cookieGA[0]) === null || _cookieGA$ === void 0 ? void 0 : _cookieGA$.split("=")[1]) || \'(none)\');\n          return _context.a(2, urlWithParams);\n      }\n    }, _callee);\n  }));\n  return _buildParamnsUrl.apply(this, arguments);\n}\nfunction buildWhatsAppContactUrl() {\n  return _buildWhatsAppContactUrl.apply(this, arguments);\n}\nfunction _buildWhatsAppContactUrl() {\n  _buildWhatsAppContactUrl = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n    var _region;\n    var locationInfo, phoneElement, phone, link, guidElement, region, urlWithParams, _t;\n    return _regenerator().w(function (_context2) {\n      while (1) switch (_context2.n) {\n        case 0:\n          _context2.n = 1;\n          return (0,_fetchLocationInfo__WEBPACK_IMPORTED_MODULE_0__/* .checkLocationInfo */ .G_)();\n        case 1:\n          locationInfo = _context2.v;\n          phoneElement = document.querySelector("[data-whatsapp]");\n          if (!phoneElement) {\n            _context2.n = 2;\n            break;\n          }\n          _t = phoneElement.dataset.whatsapp;\n          _context2.n = 4;\n          break;\n        case 2:\n          _context2.n = 3;\n          return locationInfo.phone;\n        case 3:\n          _t = _context2.v;\n        case 4:\n          phone = _t;\n          link = new URL("https://api.whatsapp.com/send");\n          link.searchParams.set("phone", phone);\n          guidElement = document.querySelector("[data-guid-crm]");\n          region = (guidElement === null || guidElement === void 0 ? void 0 : guidElement.dataset.estado) || locationInfo.state;\n          region = (_region = region) === null || _region === void 0 ? void 0 : _region.toLowerCase().normalize("NFD").replace(/[\\u0300-\\u036f]/g, "");\n          if (!(region !== "sao paulo")) {\n            _context2.n = 6;\n            break;\n          }\n          _context2.n = 5;\n          return buildParamnsUrl();\n        case 5:\n          urlWithParams = _context2.v;\n          link.searchParams.set("text", decodeURIComponent(urlWithParams) + "\\nOlá, gostaria de mais informações sobre o imóvel.\\n");\n        case 6:\n          return _context2.a(2, link.href);\n      }\n    }, _callee2);\n  }));\n  return _buildWhatsAppContactUrl.apply(this, arguments);\n}\nfunction getWhatsLeadCode(_x) {\n  return _getWhatsLeadCode.apply(this, arguments);\n}\nfunction _getWhatsLeadCode() {\n  _getWhatsLeadCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(leadData) {\n    var res, data;\n    return _regenerator().w(function (_context3) {\n      while (1) switch (_context3.n) {\n        case 0:\n          _context3.n = 1;\n          return fetch("/api/whatsapp-lead", {\n            method: "POST",\n            body: JSON.stringify({\n              url: leadData\n            })\n          });\n        case 1:\n          res = _context3.v;\n          _context3.n = 2;\n          return res.json();\n        case 2:\n          data = _context3.v;\n          return _context3.a(2, data.id);\n      }\n    }, _callee3);\n  }));\n  return _getWhatsLeadCode.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAyMy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFIQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL2pzL2J1aWxkV2hhdHNBcHBVUkwuanM/Njk4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja0xvY2F0aW9uSW5mbyB9IGZyb20gXCIuL2ZldGNoTG9jYXRpb25JbmZvXCI7XG5pbXBvcnQgeyBnZXRVdG1WYWx1ZUZyb21Db29raWUgfSBmcm9tIFwiLi9nZXRDb29raWVzUGFyYW1zXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkUGFyYW1uc1VybCgpIHtcbiAgbGV0IGFycmF5VXRtID0gYXdhaXQgZ2V0VXRtVmFsdWVGcm9tQ29va2llKCk7XG4gIGNvbnN0IHVybFdpdGhQYXJhbXMgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICB1cmxXaXRoUGFyYW1zLnBhdGhuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuXG5cbiAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmZyb21FbnRyaWVzKHVybFNlYXJjaFBhcmFtcy5lbn
1RyaWVzKCkpO1xuXG4gIGNvbnN0IGd1aWRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLWd1aWQtY3JtXVwiKTtcbiAgdXJsV2l0aFBhcmFtcy5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiZ3VpZFwiLCBndWlkRWxlbWVudCA/IGd1aWRFbGVtZW50LmRhdGFzZXQuZ3VpZENybSA6IDApO1xuXG4gIGNvbnN0IHV0bWNzclZhbHVlID0gYXJyYXlVdG1bMF0gfHwgJyhub25lKSc7XG4gIHVybFdpdGhQYXJhbXMuc2VhcmNoUGFyYW1zLmFwcGVuZChcInV0bV9zb3VyY2VcIiwgdXRtY3NyVmFsdWUgfHwgcGFyYW1zLnNjciB8fCBcIihkaXJlY3QpXCIpO1xuXG4gIGNvbnN0IHV0bWNtZFZhbHVlID0gYXJyYXlVdG1bMV0gfHwgJyhub25lKSc7XG4gIHVybFdpdGhQYXJhbXMuc2VhcmNoUGFyYW1zLmFwcGVuZChcInV0bV9tZWRpdW1cIiwgdXRtY21kVmFsdWUgfHwgcGFyYW1zLm1kIHx8IFwiKG5vbmUpXCIpO1xuXG4gIHVybFdpdGhQYXJhbXMuc2VhcmNoUGFyYW1zLmFwcGVuZChcInV0bV9nY2xpZFwiLCBwYXJhbXMuZ2NsaWQgfHwgXCIobm9uZSlcIik7XG5cbiAgY29uc3QgY29va2llR0EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pbmNsdWRlcyhcIl9nYT1cIikpO1xuICB1cmxXaXRoUGFyYW1zLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJjbGllbnRpZFwiLCBjb29raWVHQVswXT8uc3BsaXQoXCI9XCIpWzFdIHx8ICcobm9uZSknKTtcblxuICByZXR1cm4gdXJsV2l0aFBhcmFtcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRXaGF0c0FwcENvbnRhY3RVcmwoKSB7XG4gIGxldCBsb2NhdGlvbkluZm8gPSBhd2FpdCBjaGVja0xvY2F0aW9uSW5mbygpO1xuXG4gIGNvbnN0IHBob25lRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS13aGF0c2FwcF1cIik7XG4gIGNvbnN0IHBob25lID0gcGhvbmVFbGVtZW50XG4gICAgPyBwaG9uZUVsZW1lbnQuZGF0YXNldC53aGF0c2FwcFxuICAgIDogYXdhaXQgbG9jYXRpb25JbmZvLnBob25lO1xuXG4gIGNvbnN0IGxpbmsgPSBuZXcgVVJMKFwiaHR0cHM6Ly9hcGkud2hhdHNhcHAuY29tL3NlbmRcIilcbiAgbGluay5zZWFyY2hQYXJhbXMuc2V0KFwicGhvbmVcIiwgcGhvbmUpO1xuXG4gIGNvbnN0IGd1aWRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLWd1aWQtY3JtXVwiKTtcbiAgbGV0IHJlZ2lvbiA9IGd1aWRFbGVtZW50Py5kYXRhc2V0LmVzdGFkbyB8fCBsb2NhdGlvbkluZm8uc3RhdGU7XG4gIHJlZ2lvbiA9IHJlZ2lvbj8udG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoXCJORkRcIikucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcblxuICBpZiAocmVnaW9uICE9PSBcInNhbyBwYXVsb1wiKSB7XG4gICAgbGV0IHVybFdpdGhQYXJhbXMgPSBhd2FpdCBidWlsZFBhcmFtbnNVcmwoKTtcbiAgICBsaW5rLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICBcInRleHRcIixcbiAgICAgIGRlY29kZVVSSUNvbXBvbmVudCh1cmxXaXRoUGFyYW1zKSArIFwiXFxuT2zDoSwgZ29zdGFyaWEgZGUgbWFpcyBpbmZvcm1hw6fDtWVzIHNvYnJlIG8gaW3Ds3ZlbC5cXG5cIlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbGluay5ocmVmXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFdoYXRzTGVhZENvZGUobGVhZERhdGEpIHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXCIvYXBpL3doYXRzYXBwLWxlYWRcIiwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB1cmw6IGxlYWREYXRhIH0pLFxuICB9KTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gIHJldHVybiBkYXRhLmlkXG59XG5cblxuZXhwb3J0IHsgYnVpbGRQYXJhbW5zVXJsLCBidWlsZFdoYXRzQXBwQ29udGFjdFVybCB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8023\n\n}')},9917:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval('{/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   G_: () => (/* binding */ checkLocationInfo),\n/* harmony export */   TP: () => (/* binding */ getUserGeoloc)\n/* harmony export */ });\n/* unused harmony exports getLocationFromQueries, fetchRegionalInfo */\n/* harmony import */ var localstorage_slim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2972);\n/* harmony import */ var localstorage_slim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(localstorage_slim__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6167);\nfunction _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {};
1 r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }\nfunction _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }\nfunction _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a \'" + o + "\' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf;
1 var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }\n\n\nvar apiKey = "AIzaSyByZ5Skag2Sh1LkVPclh49YM4I5P77TZNg";\nvar promiseCache = new Map();\nvar memoizePromise = function memoizePromise(fn) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var key = JSON.stringify(args);\n    if (promiseCache.has(key)) {\n      return promiseCache.get(key);\n    }\n    var promise = fn.apply(void 0, args);\n    promiseCache.set(key, promise);\n    return promise;\n  };\n};\nvar findLatLon = memoizePromise(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n  var res, json;\n  return _regenerator().w(function (_context) {\n    while (1) switch (_context.n) {\n      case 0:\n        _context.n = 1;\n        return fetch("https://www.googleapis.com/geolocation/v1/geolocate?key=".concat(apiKey), {\n          method: "POST",\n          data: JSON.stringify({\n            considerIp: true\n          }),\n          contentType: \'application/json; charset=utf-8\',\n          dataType: \'json\'\n        });\n      case 1:\n        res = _context.v;\n        _context.n = 2;\n        return res.json();\n      case 2:\n        json = _context.v;\n        if (!(json && json.location)) {\n          _context.n = 3;\n          break;\n        }\n        return _context.a(2, {\n          lat: json.location.lat,\n          lng: json.location.lng,\n          acc: json.accuracy\n        });\n      case 3:\n        return _context.a(2, {\n          error: \'No location object in geolocate API response.\'\n        });\n      case 4:\n        return _context.a(2);\n    }\n  }, _callee);\n})));\n\n/** TODO: criar cache em memória, para previnir multiplas requisicoes */\nvar getAddressFromLatLng = memoizePromise(/*#__PURE__*/function () {\n  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(lat, lng) {\n    var res, json, locationData, address, _iterator, _step, component, types;\n    return _regenerator().w(function (_context2) {\n      while (1) switch (_context2.n) {\n        case 0:\n          _context2.n = 1;
1\n          return fetch("https://maps.googleapis.com/maps/api/geocode/json?language=pt-br&latlng=".concat(lat, ",").concat(lng, "&key=").concat(apiKey), {\n            method: "GET",\n            data: JSON.stringify({\n              considerIp: true\n            }),\n            contentType: \'application/json; charset=utf-8\',\n            dataType: \'json\'\n          });\n        case 1:\n          res = _context2.v;\n          _context2.n = 2;\n          return res.json();\n        case 2:\n          json = _context2.v;\n          locationData = [];\n          if (!(res.ok && json.results && json.results.length > 0)) {\n            _context2.n = 3;\n            break;\n          }\n          address = json.results[0];\n          _iterator = _createForOfIteratorHelper(address.address_components);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              component = _step.value;\n              types = component.types;\n              if (types.includes(\'country\')) {\n                locationData.country = component.long_name;\n                locationData.country_code = component.short_name;\n              } else if (types.includes(\'administrative_area_level_1\')) {\n                locationData.state = component.long_name;\n                locationData.state_code = component.short_name;\n              } else if (types.includes(\'administrative_area_level_2\')) {\n                locationData.city = component.long_name;\n              } else if (types.includes(\'sublocality_level_1\')) {\n                locationData.sublocality = component.long_name;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          return _context2.a(2, locationData);\n        case 3:\n          return _context2.a(2, results);\n      }\n    }, _callee2);\n  }));\n  return function (_x, _x2) {\n    return _ref2.apply(this, arguments);\n  };\n}());\nfunction getUserGeoloc() {\n  return _getUserGeoloc.apply(this, arguments);\n}\nfunction _getUserGeoloc() {\n  _getUserGeoloc = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {\n    var cacheKey, userGeoloc, res, isError, geolocInfo, locationInfo;\n    return _regenerator().w(function (_context4) {\n      while (1) switch (_context4.n) {\n        case 0:\n          cacheKey = \'geolocation_info\';\n          userGeoloc = localstorage_slim__WEBPACK_IMPORTED_MODULE_0___default().get(cacheKey);\n          if (!userGeoloc) {\n            _context4.n = 1;\n            break;\n          }\n          return _context4.a(2, userGeoloc);\n        case 1:\n          _context4.n = 2;\n          return findLatLon();\n        case 2:\n          res = _context4.v;\n          isError = res.hasOwnProperty(\'error\');\n          if (!isError) {\n            _context4.n = 3;\n            break;\n          }\n          return _context4.a(2, {});\n        case 3:\n          _context4.n = 4;\n          return getAddressFromLatLng(res.lat, res.lng);\n        case 4:\n          geolocInfo = _context4.v;\n          locationInfo = _objectSpread(_objectSpread(_objectSpread({}, res), geolocInfo), {}, {\n            timestamp: new Date().toISOString()\n          });\n          localstorage_slim__WEBPACK_IMPORTED_MODULE_0___default().set(cacheKey, locationInfo, {\n            ttl: 2 * _utils__WEBPACK_IMPORTED_MODULE_1__/* .WEEK */ .V8\n          });\n          return _context4.a(2, locationInfo);\n      }\n    }, _callee4);\n  }));\n  return _getUserGeoloc.apply(this, arguments);\n}\nfunction getLocationFromQueries() {\n  var queryString = window.location.search;\n  var query = new URLSearchParams(queryString);\n  return {\n    state: query.get("state"),\n    city: query.get("city")\n  };\n}\nvar fetchRegionalInfo = memoizePromise(/*#__PURE__*/function () {\n  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(cityName, stateUfOrName) {\n    var res, json;\n    return _regenerator().w(function (_context3) {\n      while (1) switch (_context3.n) {\n        case 0:\n          _context3.n = 1;\n          return fetch("/api/geolocalizacao?city=".concat(cityName, "&state=").concat(stateUfOrName), {\n            method: "POST"\n          });\n        case 1:\n          res = _context3.v;\n          _context3.n = 2;\n          return res.json();\n        case 2:\n          json = _context3.v;\n          return _context3.a(2, json);\n      }\n    }, _callee3);\n  }));\n  return function (_x3, _x4) {\n    return _ref3.apply(this, arguments);\n  };\n}());\nfunction checkLocationInfo() {\n  return _checkLocationInfo.apply(this, arguments);\n}\nfunction _checkLocationInfo() {\n  _checkLocationInfo = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {\n    var _ref4,\n      _ref4$allowParamnOver,\n      allowParamnOverride,\n      state,\n      city,\n      _getLocationFromQueri,\
1n      _yield$getUserGeoloc,\n      _city,\n      _state,\n      locationInfo,\n      _args5 = arguments;\n    return _regenerator().w(function (_context5) {\n      while (1) switch (_context5.n) {\n        case 0:\n          _ref4 = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {}, _ref4$allowParamnOver = _ref4.allowParamnOverride, allowParamnOverride = _ref4$allowParamnOver === void 0 ? true : _ref4$allowParamnOver, state = _ref4.state, city = _ref4.city;\n          if (!state && !city && allowParamnOverride) {\n            _getLocationFromQueri = getLocationFromQueries();\n            state = _getLocationFromQueri.state;\n            city = _getLocationFromQueri.city;\n          }\n          if (!(state || city)) {\n            _context5.n = 2;\n            break;\n          }\n          _context5.n = 1;\n          return fetchRegionalInfo(city, state);\n        case 1:\n          return _context5.a(2, _context5.v);\n        case 2:\n          _context5.n = 3;\n          return getUserGeoloc();\n        case 3:\n          _yield$getUserGeoloc = _context5.v;\n          _city = _yield$getUserGeoloc.city;\n          _state = _yield$getUserGeoloc.state;\n          _context5.n = 4;\n          return fetchRegionalInfo(_city, _state);\n        case 4:\n          locationInfo = _context5.v;\n          return _context5.a(2, locationInfo);\n        case 5:\n          return _context5.a(2);\n      }\n    }, _callee5);\n  }));\n  return _checkLocationInfo.apply(this, arguments);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkxNy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTEE7QUFBQTtBQUFBO0FBT0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTEE7QUFBQTtBQUFBO0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFxQkE7QUFBQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBYUE7QUFBQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvanMvZmV0Y2hMb2NhdGlvbkluZm8uanM/ZWFkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbHMgZnJvbSAnbG9jYWxzdG9yYWdlLXNsaW0nO1xuaW1wb3J0IHsgV0VFSyB9IGZyb20gJy4vdXRpbHMnO1xuXG5cbmNvbnN0IGFwaUtleSA9IFwiQUl6YVN5QnlaNVNrYWcyU2gxTGtWUGNsaDQ5WU00STVQNzdUWk5nXCI7XG5cbmNvbnN0IHByb21pc2VDYWNoZSA9IG5ldyBNYXAoKVxuXG5jb25zdCBtZW1vaXplUHJvbWlzZSA9IChmbikgPT4ge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShhcmdzKTtcbiAgICBpZiAocHJvbWlzZUNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZUNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICBjb25zdCBwcm9taXNlID0gZm4oLi4uYXJncylcbiAgICBwcm9taXNlQ2FjaGUuc2V0KGtleSwgcHJvbWlzZSlcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufVxuXG5jb25zdCBmaW5kTGF0TG9uID0gbWVtb2l6ZVByb21pc2UoYXN5bmMgZnVuY3Rpb24gKCkge1xuICBsZXQgcmVzID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2dlb2xvY2F0aW9uL3YxL2dlb2xvY2F0ZT9rZXk9JHthcGlLZXl9YCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyBjb25zaWRlcklwOiB0cnVlIH0pLFxuICAgIGNvbnRlbn
1RUeXBlOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgfSk7XG5cbiAgbGV0IGpzb24gPSBhd2FpdCByZXMuanNvbigpO1xuXG4gIGlmIChqc29uICYmIGpzb24ubG9jYXRpb24pIHtcbiAgICByZXR1cm4geyBsYXQ6IGpzb24ubG9jYXRpb24ubGF0LCBsbmc6IGpzb24ubG9jYXRpb24ubG5nLCBhY2M6IGpzb24uYWNjdXJhY3kgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBlcnJvcjogJ05vIGxvY2F0aW9uIG9iamVjdCBpbiBnZW9sb2NhdGUgQVBJIHJlc3BvbnNlLicgfTtcbiAgfVxufSlcblxuLyoqIFRPRE86IGNyaWFyIGNhY2hlIGVtIG1lbcOzcmlhLCBwYXJhIHByZXZpbmlyIG11bHRpcGxhcyByZXF1aXNpY29lcyAqL1xuY29uc3QgZ2V0QWRkcmVzc0Zyb21MYXRMbmcgPSBtZW1vaXplUHJvbWlzZShhc3luYyBmdW5jdGlvbiAobGF0LCBsbmcpIHtcblxuICBsZXQgcmVzID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24/bGFuZ3VhZ2U9cHQtYnImbGF0bG5nPSR7bGF0fSwke2xuZ30ma2V5PSR7YXBpS2V5fWAsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyBjb25zaWRlcklwOiB0cnVlIH0pLFxuICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgfSk7XG5cbiAgbGV0IGpzb24gPSBhd2FpdCByZXMuanNvbigpO1xuICBsZXQgbG9jYXRpb25EYXRhID0gW107XG5cbiAgaWYgKHJlcy5vayAmJiBqc29uLnJlc3VsdHMgJiYganNvbi5yZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhZGRyZXNzID0ganNvbi5yZXN1bHRzWzBdO1xuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGFkZHJlc3MuYWRkcmVzc19jb21wb25lbnRzKSB7XG4gICAgICBjb25zdCB0eXBlcyA9IGNvbXBvbmVudC50eXBlcztcbiAgICAgIGlmICh0eXBlcy5pbmNsdWRlcygnY291bnRyeScpKSB7XG4gICAgICAgIGxvY2F0aW9uRGF0YS5jb3VudHJ5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcbiAgICAgICAgbG9jYXRpb25EYXRhLmNvdW50cnlfY29kZSA9IGNvbXBvbmVudC5zaG9ydF9uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlcy5pbmNsdWRlcygnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJykpIHtcbiAgICAgICAgbG9jYXRpb25EYXRhLnN0YXRlID0gY29tcG9uZW50LmxvbmdfbmFtZTtcbiAgICAgICAgbG9jYXRpb25EYXRhLnN0YXRlX2NvZGUgPSBjb21wb25lbnQuc2hvcnRfbmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZXMuaW5jbHVkZXMoJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMicpKSB7XG4gICAgICAgIGxvY2F0aW9uRGF0YS5jaXR5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZXMuaW5jbHVkZXMoJ3N1YmxvY2FsaXR5X2xldmVsXzEnKSkge1xuICAgICAgICBsb2NhdGlvbkRhdGEuc3VibG9jYWxpdHkgPSBjb21wb25lbnQubG9uZ19uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbG9jYXRpb25EYXRhO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufSlcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFVzZXJHZW9sb2MoKSB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gJ2dlb2xvY2F0aW9uX2luZm8nXG5cbiAgbGV0IHVzZXJHZW9sb2MgPSBscy5nZXQoY2FjaGVLZXkpO1xuICBpZiAodXNlckdlb2xvYykge1xuICAgIHJldHVybiB1c2VyR2VvbG9jXG4gIH1cblxuICBsZXQgcmVzID0gYXdhaXQgZmluZExhdExvbigpO1xuICBjb25zdCBpc0Vycm9yID0gcmVzLmhhc093blByb3BlcnR5KCdlcnJvcicpXG5cbiAgaWYgKGlzRXJyb3IpIHJldHVybiB7fVxuXG4gIGNvbnN0IGdlb2xvY0luZm8gPSBhd2FpdCBnZXRBZGRyZXNzRnJvbUxhdExuZyhyZXMubGF0LCByZXMubG5nKTtcbiAgY29uc3QgbG9jYXRpb25JbmZvID0ge1xuICAgIC4uLnJlcyxcbiAgICAuLi5nZW9sb2NJbmZvLFxuICAgIHRpbWVzdGFtcDogKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCksXG4gIH1cbiAgbHMuc2V0KGNhY2hlS2V5LCBsb2NhdGlvbkluZm8sIHsgdHRsOiAyICogV0VFSyB9KTtcbiAgcmV0dXJuIGxvY2F0aW9uSW5mb1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYXRpb25Gcm9tUXVlcmllcygpIHtcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IHF1ZXJ5LmdldChcInN0YXRlXCIpLFxuICAgIGNpdHk6IHF1ZXJ5LmdldChcImNpdHlcIilcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZmV0Y2hSZWdpb25hbEluZm8gPSBtZW1vaXplUHJvbWlzZShhc3luYyBmdW5jdGlvbiAoY2l0eU5hbWUsIHN0YXRlVWZPck5hbWUpIHtcbiAgbGV0IHJlcyA9IGF3YWl0IGZldGNoKGAvYXBpL2dlb2xvY2FsaXphY2FvP2NpdHk9JHtjaXR5TmFtZX0mc3RhdGU9JHtzdGF0ZVVmT3JOYW1lfWAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICB9KTtcblxuICBsZXQganNvbiA9IGF3YWl0IHJlcy5qc29uKCk7XG4gIHJldHVybiBqc29uO1xufSlcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrTG9jYXRpb25JbmZvKHsgYWxsb3dQYXJhbW5PdmVycmlkZSA9IHRydWUsIHN0YXRlLCBjaXR5IH0gPSB7fSkge1xuICBpZiAoIXN0YXRlICYmICFjaXR5ICYmIGFsbG93UGFyYW1uT3ZlcnJpZGUpIHtcbiAgICAoeyBzdGF0ZSwgY2l0eSB9ID0gZ2V0TG9jYXRpb25Gcm9tUXVlcmllcygpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZSB8fCBjaXR5KSB7XG4gICAgLy8gdXNhciBkYWRvcyBkYSBjYXBpdGFsIGRvIGVzdGFkbyBuYSBxdWVyaWVcbiAgICByZXR1cm4gYXdhaXQgZmV0Y2hSZWdpb25hbEluZm8oY2l0eSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIGxldCB7IGNpdHksIHN0YXRlIH0gPSBhd2FpdCBnZXRVc2VyR2VvbG9jKCk7XG4gICAgY29uc3QgbG9jYXRpb25JbmZvID0gYXdhaXQgZmV0Y2hSZWdpb25hbEluZm8oY2l0eSwgc3RhdGUpO1xuICAgIHJldHVybi
1Bsb2NhdGlvbkluZm87XG4gIH1cbn1cblxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9917\n\n}')}},n=>{n.O(0,[1332],()=>{return t=3522,n(n.s=t);var t});n.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.