{"mappings":"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B,IAAK,IAAI4F,EAAQvf,UAAUpC,OAAQuG,EAAO,IAAI8L,MAAMsP,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGrb,EAAKqb,EAAQ,GAAKxf,UAAUwf,GAG9B,OAAO5R,GAAO+L,EAAOxV,GAAM,KAG7Bmb,ICpEA,IAAIG,IAA2B,EAG/B,SAASC,GAAe7Q,GAIjB4Q,KACH,IAAAE,EAAiB9Q,EAAK+Q,OAAQ,CAK5B1f,OAAS4F,IAIP,MAAM+Z,EAAO,oCAAmCC,UAAUha,KAE1D,OAAO,IAAI9C,SAASC,IAClB,GAAI6C,EAAMlI,OAAS,EACjB,OAAOqF,EAAQ,IAGjB8c,MAAMF,GACHlgB,MAAMqgB,GAAaA,EAASC,SAC5BtgB,MAAMmT,IACL7P,EAAQ6P,UAOhBrN,aAAc,CAAC3D,EAAQpE,IAAW,iBAC1BA,qDAEAoE,EAAOoe,0EAGPpe,EAAOqe,+CAcf3a,eAAiB1D,GAAWA,EAAOoe,MAInCtf,SAAWkB,IACThF,OAAOsjB,KAAKte,EAAO+d,QAGvBJ,IAA2B,GAoI/Bd,GAAO,iBAjIe,CACpBxgB,MAAO,EACPyhB,OAAQ,EAAGX,OAAAA,KACMA,IACDzc,cAAc,iBAE9Byc,OAAQ,EAAG9gB,MAAAA,KAAYkiB,EAAK;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;mBAiHXX","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/@parcel/scope-hoisting/lib/prelude.js","./node_modules/@trevoreyre/autocomplete-js/dist/autocomplete.esm.js","./node_modules/hybrids/esm/utils.js","./node_modules/hybrids/esm/property.js","./node_modules/hybrids/esm/render.js","./node_modules/hybrids/esm/emitter.js","./node_modules/hybrids/esm/cache.js","./node_modules/hybrids/esm/define.js","./node_modules/hybrids/esm/template/utils.js","./node_modules/hybrids/esm/template/resolvers/array.js","./node_modules/hybrids/esm/template/resolvers/value.js","./node_modules/hybrids/esm/template/resolvers/event.js","./node_modules/hybrids/esm/template/resolvers/class.js","./node_modules/hybrids/esm/template/resolvers/style.js","./node_modules/hybrids/esm/template/resolvers/property.js","./node_modules/hybrids/esm/template/core.js","./node_modules/hybrids/esm/template/helpers.js","./node_modules/hybrids/esm/template/index.js","./src/searchbox.js"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","var $parcel$modules = {};\nvar $parcel$bundles = {};\n\nif (parcelRequire == null) {\n parcelRequire = function(name) {\n // Execute the bundle wrapper function if there is one registered.\n if (name in $parcel$bundles) {\n $parcel$bundles[name]();\n delete $parcel$bundles[name];\n }\n\n if (name in $parcel$modules) {\n return $parcel$modules[name];\n }\n\n // Try the node require function if it exists.\n // Do not use `require` to prevent Webpack from trying to bundle this call\n if (typeof module !== 'undefined' && typeof module.require === 'function') {\n return module.require(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, exports) {\n $parcel$modules[id] = exports;\n };\n\n parcelRequire.registerBundle = function registerBundle(id, fn) {\n $parcel$bundles[id] = fn;\n $parcel$modules[id] = {};\n };\n\n $parcel$global[parcelRequireName] = parcelRequire;\n}\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\n// Polyfill for element.matches, to support Internet Explorer. It's a relatively\n// simple polyfill, so we'll just include it rather than require the user to\n// include the polyfill themselves. Adapted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nvar matches = function matches(element, selector) {\n return element.matches ? element.matches(selector) : element.msMatchesSelector ? element.msMatchesSelector(selector) : element.webkitMatchesSelector ? element.webkitMatchesSelector(selector) : null;\n};\n\n// Polyfill for element.closest, to support Internet Explorer. It's a relatively\n\nvar closestPolyfill = function closestPolyfill(el, selector) {\n var element = el;\n\n while (element && element.nodeType === 1) {\n if (matches(element, selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n\n return null;\n};\n\nvar closest = function closest(element, selector) {\n return element.closest ? element.closest(selector) : closestPolyfill(element, selector);\n};\n\n// Returns true if the value has a \"then\" function. Adapted from\n// https://github.com/graphql/graphql-js/blob/499a75939f70c4863d44149371d6a99d57ff7c35/src/jsutils/isPromise.js\nvar isPromise = function isPromise(value) {\n return Boolean(value && typeof value.then === 'function');\n};\n\nvar AutocompleteCore = function AutocompleteCore() {\n var _this = this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n search = _ref.search,\n _ref$autoSelect = _ref.autoSelect,\n autoSelect = _ref$autoSelect === void 0 ? false : _ref$autoSelect,\n _ref$setValue = _ref.setValue,\n setValue = _ref$setValue === void 0 ? function () {} : _ref$setValue,\n _ref$setAttribute = _ref.setAttribute,\n setAttribute = _ref$setAttribute === void 0 ? function () {} : _ref$setAttribute,\n _ref$onUpdate = _ref.onUpdate,\n onUpdate = _ref$onUpdate === void 0 ? function () {} : _ref$onUpdate,\n _ref$onSubmit = _ref.onSubmit,\n onSubmit = _ref$onSubmit === void 0 ? function () {} : _ref$onSubmit,\n _ref$onShow = _ref.onShow,\n onShow = _ref$onShow === void 0 ? function () {} : _ref$onShow,\n _ref$onHide = _ref.onHide,\n onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n _ref$onLoading = _ref.onLoading,\n onLoading = _ref$onLoading === void 0 ? function () {} : _ref$onLoading,\n _ref$onLoaded = _ref.onLoaded,\n onLoaded = _ref$onLoaded === void 0 ? function () {} : _ref$onLoaded;\n\n _classCallCheck(this, AutocompleteCore);\n\n _defineProperty(this, \"value\", '');\n\n _defineProperty(this, \"searchCounter\", 0);\n\n _defineProperty(this, \"results\", []);\n\n _defineProperty(this, \"selectedIndex\", -1);\n\n _defineProperty(this, \"handleInput\", function (event) {\n var value = event.target.value;\n\n _this.updateResults(value);\n\n _this.value = value;\n });\n\n _defineProperty(this, \"handleKeyDown\", function (event) {\n var key = event.key;\n\n switch (key) {\n case 'Up': // IE/Edge\n\n case 'Down': // IE/Edge\n\n case 'ArrowUp':\n case 'ArrowDown':\n {\n var selectedIndex = key === 'ArrowUp' || key === 'Up' ? _this.selectedIndex - 1 : _this.selectedIndex + 1;\n event.preventDefault();\n\n _this.handleArrows(selectedIndex);\n\n break;\n }\n\n case 'Tab':\n {\n _this.selectResult();\n\n break;\n }\n\n case 'Enter':\n {\n var selectedResult = _this.results[_this.selectedIndex];\n\n _this.selectResult();\n\n _this.onSubmit(selectedResult);\n\n break;\n }\n\n case 'Esc': // IE/Edge\n\n case 'Escape':\n {\n _this.hideResults();\n\n _this.setValue();\n\n break;\n }\n\n default:\n return;\n }\n });\n\n _defineProperty(this, \"handleFocus\", function (event) {\n var value = event.target.value;\n\n _this.updateResults(value);\n\n _this.value = value;\n });\n\n _defineProperty(this, \"handleBlur\", function () {\n _this.hideResults();\n });\n\n _defineProperty(this, \"handleResultMouseDown\", function (event) {\n event.preventDefault();\n });\n\n _defineProperty(this, \"handleResultClick\", function (event) {\n var target = event.target;\n var result = closest(target, '[data-result-index]');\n\n if (result) {\n _this.selectedIndex = parseInt(result.dataset.resultIndex, 10);\n var selectedResult = _this.results[_this.selectedIndex];\n\n _this.selectResult();\n\n _this.onSubmit(selectedResult);\n }\n });\n\n _defineProperty(this, \"handleArrows\", function (selectedIndex) {\n // Loop selectedIndex back to first or last result if out of bounds\n var resultsCount = _this.results.length;\n _this.selectedIndex = (selectedIndex % resultsCount + resultsCount) % resultsCount; // Update results and aria attributes\n\n _this.onUpdate(_this.results, _this.selectedIndex);\n });\n\n _defineProperty(this, \"selectResult\", function () {\n var selectedResult = _this.results[_this.selectedIndex];\n\n if (selectedResult) {\n _this.setValue(selectedResult);\n }\n\n _this.hideResults();\n });\n\n _defineProperty(this, \"updateResults\", function (value) {\n var currentSearch = ++_this.searchCounter;\n\n _this.onLoading();\n\n _this.search(value).then(function (results) {\n if (currentSearch !== _this.searchCounter) {\n return;\n }\n\n _this.results = results;\n\n _this.onLoaded();\n\n if (_this.results.length === 0) {\n _this.hideResults();\n\n return;\n }\n\n _this.selectedIndex = _this.autoSelect ? 0 : -1;\n\n _this.onUpdate(_this.results, _this.selectedIndex);\n\n _this.showResults();\n });\n });\n\n _defineProperty(this, \"showResults\", function () {\n _this.setAttribute('aria-expanded', true);\n\n _this.onShow();\n });\n\n _defineProperty(this, \"hideResults\", function () {\n _this.selectedIndex = -1;\n _this.results = [];\n\n _this.setAttribute('aria-expanded', false);\n\n _this.setAttribute('aria-activedescendant', '');\n\n _this.onUpdate(_this.results, _this.selectedIndex);\n\n _this.onHide();\n });\n\n _defineProperty(this, \"checkSelectedResultVisible\", function (resultsElement) {\n var selectedResultElement = resultsElement.querySelector(\"[data-result-index=\\\"\".concat(_this.selectedIndex, \"\\\"]\"));\n\n if (!selectedResultElement) {\n return;\n }\n\n var resultsPosition = resultsElement.getBoundingClientRect();\n var selectedPosition = selectedResultElement.getBoundingClientRect();\n\n if (selectedPosition.top < resultsPosition.top) {\n // Element is above viewable area\n resultsElement.scrollTop -= resultsPosition.top - selectedPosition.top;\n } else if (selectedPosition.bottom > resultsPosition.bottom) {\n // Element is below viewable area\n resultsElement.scrollTop += selectedPosition.bottom - resultsPosition.bottom;\n }\n });\n\n this.search = isPromise(search) ? search : function (value) {\n return Promise.resolve(search(value));\n };\n this.autoSelect = autoSelect;\n this.setValue = setValue;\n this.setAttribute = setAttribute;\n this.onUpdate = onUpdate;\n this.onSubmit = onSubmit;\n this.onShow = onShow;\n this.onHide = onHide;\n this.onLoading = onLoading;\n this.onLoaded = onLoaded;\n};\n\n// Generates a unique ID, with optional prefix. Adapted from\n// https://github.com/lodash/lodash/blob/61acdd0c295e4447c9c10da04e287b1ebffe452c/uniqueId.js\nvar idCounter = 0;\n\nvar uniqueId = function uniqueId() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return \"\".concat(prefix).concat(++idCounter);\n};\n\n// Calculates whether element2 should be above or below element1. Always\n// places element2 below unless all of the following:\n// 1. There isn't enough visible viewport below to fit element2\n// 2. There is more room above element1 than there is below\n// 3. Placing elemen2 above 1 won't overflow window\nvar getRelativePosition = function getRelativePosition(element1, element2) {\n var position1 = element1.getBoundingClientRect();\n var position2 = element2.getBoundingClientRect();\n var positionAbove =\n /* 1 */\n position1.bottom + position2.height > window.innerHeight &&\n /* 2 */\n window.innerHeight - position1.bottom < position1.top &&\n /* 3 */\n window.pageYOffset + position1.top - position2.height > 0;\n return positionAbove ? 'above' : 'below';\n};\n\n// Credit David Walsh (https://davidwalsh.name/javascript-debounce-function)\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nvar debounce = function debounce(func, wait, immediate) {\n var timeout;\n return function executedFunction() {\n var context = this;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n// string in the format: `key1=\"value1\" key2=\"value2\"` for easy use in an HTML string.\n\nvar Props =\n/*#__PURE__*/\nfunction () {\n function Props(index, selectedIndex, baseClass) {\n _classCallCheck(this, Props);\n\n this.id = \"\".concat(baseClass, \"-result-\").concat(index);\n this[\"class\"] = \"\".concat(baseClass, \"-result\");\n this['data-result-index'] = index;\n this.role = 'option';\n\n if (index === selectedIndex) {\n this['aria-selected'] = 'true';\n }\n }\n\n _createClass(Props, [{\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this).reduce(function (str, key) {\n return \"\".concat(str, \" \").concat(key, \"=\\\"\").concat(_this[key], \"\\\"\");\n }, '');\n }\n }]);\n\n return Props;\n}();\n\nvar Autocomplete = function Autocomplete(root) {\n var _this2 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n search = _ref.search,\n _ref$onSubmit = _ref.onSubmit,\n onSubmit = _ref$onSubmit === void 0 ? function () {} : _ref$onSubmit,\n _ref$onUpdate = _ref.onUpdate,\n onUpdate = _ref$onUpdate === void 0 ? function () {} : _ref$onUpdate,\n _ref$baseClass = _ref.baseClass,\n baseClass = _ref$baseClass === void 0 ? 'autocomplete' : _ref$baseClass,\n autoSelect = _ref.autoSelect,\n _ref$getResultValue = _ref.getResultValue,\n getResultValue = _ref$getResultValue === void 0 ? function (result) {\n return result;\n } : _ref$getResultValue,\n renderResult = _ref.renderResult,\n _ref$debounceTime = _ref.debounceTime,\n debounceTime = _ref$debounceTime === void 0 ? 0 : _ref$debounceTime;\n\n _classCallCheck(this, Autocomplete);\n\n _defineProperty(this, \"expanded\", false);\n\n _defineProperty(this, \"loading\", false);\n\n _defineProperty(this, \"position\", {});\n\n _defineProperty(this, \"resetPosition\", true);\n\n _defineProperty(this, \"initialize\", function () {\n _this2.root.style.position = 'relative';\n\n _this2.input.setAttribute('role', 'combobox');\n\n _this2.input.setAttribute('autocomplete', 'off');\n\n _this2.input.setAttribute('autocapitalize', 'off');\n\n _this2.input.setAttribute('autocorrect', 'off');\n\n _this2.input.setAttribute('spellcheck', 'false');\n\n _this2.input.setAttribute('aria-autocomplete', 'list');\n\n _this2.input.setAttribute('aria-haspopup', 'listbox');\n\n _this2.input.setAttribute('aria-expanded', 'false');\n\n _this2.resultList.setAttribute('role', 'listbox');\n\n _this2.resultList.style.position = 'absolute';\n _this2.resultList.style.zIndex = '1';\n _this2.resultList.style.width = '100%';\n _this2.resultList.style.boxSizing = 'border-box'; // Generate ID for results list if it doesn't have one\n\n if (!_this2.resultList.id) {\n _this2.resultList.id = uniqueId(\"\".concat(_this2.baseClass, \"-result-list-\"));\n }\n\n _this2.input.setAttribute('aria-owns', _this2.resultList.id);\n\n document.body.addEventListener('click', _this2.handleDocumentClick);\n\n _this2.input.addEventListener('input', _this2.core.handleInput);\n\n _this2.input.addEventListener('keydown', _this2.core.handleKeyDown);\n\n _this2.input.addEventListener('focus', _this2.core.handleFocus);\n\n _this2.input.addEventListener('blur', _this2.core.handleBlur);\n\n _this2.resultList.addEventListener('mousedown', _this2.core.handleResultMouseDown);\n\n _this2.resultList.addEventListener('click', _this2.core.handleResultClick);\n\n _this2.updateStyle();\n });\n\n _defineProperty(this, \"setAttribute\", function (attribute, value) {\n _this2.input.setAttribute(attribute, value);\n });\n\n _defineProperty(this, \"setValue\", function (result) {\n _this2.input.value = result ? _this2.getResultValue(result) : '';\n });\n\n _defineProperty(this, \"renderResult\", function (result, props) {\n return \"
  • \").concat(_this2.getResultValue(result), \"
  • \");\n });\n\n _defineProperty(this, \"handleUpdate\", function (results, selectedIndex) {\n _this2.resultList.innerHTML = '';\n results.forEach(function (result, index) {\n var props = new Props(index, selectedIndex, _this2.baseClass);\n\n var resultHTML = _this2.renderResult(result, props);\n\n if (typeof resultHTML === 'string') {\n _this2.resultList.insertAdjacentHTML('beforeend', resultHTML);\n } else {\n _this2.resultList.insertAdjacentElement('beforeend', resultHTML);\n }\n });\n\n _this2.input.setAttribute('aria-activedescendant', selectedIndex > -1 ? \"\".concat(_this2.baseClass, \"-result-\").concat(selectedIndex) : '');\n\n if (_this2.resetPosition) {\n _this2.resetPosition = false;\n _this2.position = getRelativePosition(_this2.input, _this2.resultList);\n\n _this2.updateStyle();\n }\n\n _this2.core.checkSelectedResultVisible(_this2.resultList);\n\n _this2.onUpdate(results, selectedIndex);\n });\n\n _defineProperty(this, \"handleShow\", function () {\n _this2.expanded = true;\n\n _this2.updateStyle();\n });\n\n _defineProperty(this, \"handleHide\", function () {\n _this2.expanded = false;\n _this2.resetPosition = true;\n\n _this2.updateStyle();\n });\n\n _defineProperty(this, \"handleLoading\", function () {\n _this2.loading = true;\n\n _this2.updateStyle();\n });\n\n _defineProperty(this, \"handleLoaded\", function () {\n _this2.loading = false;\n\n _this2.updateStyle();\n });\n\n _defineProperty(this, \"handleDocumentClick\", function (event) {\n if (_this2.root.contains(event.target)) {\n return;\n }\n\n _this2.core.hideResults();\n });\n\n _defineProperty(this, \"updateStyle\", function () {\n _this2.root.dataset.expanded = _this2.expanded;\n _this2.root.dataset.loading = _this2.loading;\n _this2.root.dataset.position = _this2.position;\n _this2.resultList.style.visibility = _this2.expanded ? 'visible' : 'hidden';\n _this2.resultList.style.pointerEvents = _this2.expanded ? 'auto' : 'none';\n\n if (_this2.position === 'below') {\n _this2.resultList.style.bottom = null;\n _this2.resultList.style.top = '100%';\n } else {\n _this2.resultList.style.top = null;\n _this2.resultList.style.bottom = '100%';\n }\n });\n\n this.root = typeof root === 'string' ? document.querySelector(root) : root;\n this.input = this.root.querySelector('input');\n this.resultList = this.root.querySelector('ul');\n this.baseClass = baseClass;\n this.getResultValue = getResultValue;\n this.onUpdate = onUpdate;\n\n if (typeof renderResult === 'function') {\n this.renderResult = renderResult;\n }\n\n var core = new AutocompleteCore({\n search: search,\n autoSelect: autoSelect,\n setValue: this.setValue,\n setAttribute: this.setAttribute,\n onUpdate: this.handleUpdate,\n onSubmit: onSubmit,\n onShow: this.handleShow,\n onHide: this.handleHide,\n onLoading: this.handleLoading,\n onLoaded: this.handleLoaded\n });\n\n if (debounceTime > 0) {\n core.handleInput = debounce(core.handleInput, debounceTime);\n }\n\n this.core = core;\n this.initialize();\n} // Set up aria attributes and events\n;\n\nexport default Autocomplete;\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar camelToDashMap = new Map();\nexport function camelToDash(str) {\n var result = camelToDashMap.get(str);\n\n if (result === undefined) {\n result = str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n camelToDashMap.set(str, result);\n }\n\n return result;\n}\nexport function pascalToDash(str) {\n return camelToDash(str.replace(/((?!([A-Z]{2}|^))[A-Z])/g, \"-$1\"));\n}\nexport function dispatch(host, eventType) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return host.dispatchEvent(new CustomEvent(eventType, _objectSpread({\n bubbles: false\n }, options)));\n}\nexport function shadyCSS(fn, fallback) {\n var shady = window.ShadyCSS;\n /* istanbul ignore next */\n\n if (shady && !shady.nativeShadow) {\n return fn(shady);\n }\n\n return fallback;\n}\nexport function stringifyElement(target) {\n return \"<\".concat(String(target.tagName).toLowerCase(), \">\");\n}\nexport var IS_IE = (\"ActiveXObject\" in window);\nexport var deferred = Promise.resolve();\nexport var storePointer = new WeakMap();\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaE1hcCIsIk1hcCIsImNhbWVsVG9EYXNoIiwic3RyIiwicmVzdWx0IiwiZ2V0IiwidW5kZWZpbmVkIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwic2V0IiwicGFzY2FsVG9EYXNoIiwiZGlzcGF0Y2giLCJob3N0IiwiZXZlbnRUeXBlIiwib3B0aW9ucyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJzaGFkeUNTUyIsImZuIiwiZmFsbGJhY2siLCJzaGFkeSIsIndpbmRvdyIsIlNoYWR5Q1NTIiwibmF0aXZlU2hhZG93Iiwic3RyaW5naWZ5RWxlbWVudCIsInRhcmdldCIsIlN0cmluZyIsInRhZ05hbWUiLCJJU19JRSIsImRlZmVycmVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzdG9yZVBvaW50ZXIiLCJXZWFrTWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFNQSxjQUFjLEdBQUcsSUFBSUMsR0FBSixFQUF2QjtBQUNBLE9BQU8sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEI7QUFDL0IsTUFBSUMsTUFBTSxHQUFHSixjQUFjLENBQUNLLEdBQWYsQ0FBbUJGLEdBQW5CLENBQWI7O0FBQ0EsTUFBSUMsTUFBTSxLQUFLRSxTQUFmLEVBQTBCO0FBQ3hCRixJQUFBQSxNQUFNLEdBQUdELEdBQUcsQ0FBQ0ksT0FBSixDQUFZLGlCQUFaLEVBQStCLE9BQS9CLEVBQXdDQyxXQUF4QyxFQUFUO0FBQ0FSLElBQUFBLGNBQWMsQ0FBQ1MsR0FBZixDQUFtQk4sR0FBbkIsRUFBd0JDLE1BQXhCO0FBQ0Q7O0FBQ0QsU0FBT0EsTUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTTSxZQUFULENBQXNCUCxHQUF0QixFQUEyQjtBQUNoQyxTQUFPRCxXQUFXLENBQUNDLEdBQUcsQ0FBQ0ksT0FBSixDQUFZLDBCQUFaLEVBQXdDLEtBQXhDLENBQUQsQ0FBbEI7QUFDRDtBQUVELE9BQU8sU0FBU0ksUUFBVCxDQUFrQkMsSUFBbEIsRUFBd0JDLFNBQXhCLEVBQWlEO0FBQUEsTUFBZEMsT0FBYyx1RUFBSixFQUFJO0FBQ3RELFNBQU9GLElBQUksQ0FBQ0csYUFBTCxDQUNMLElBQUlDLFdBQUosQ0FBZ0JILFNBQWhCO0FBQTZCSSxJQUFBQSxPQUFPLEVBQUU7QUFBdEMsS0FBZ0RILE9BQWhELEVBREssQ0FBUDtBQUdEO0FBRUQsT0FBTyxTQUFTSSxRQUFULENBQWtCQyxFQUFsQixFQUFzQkMsUUFBdEIsRUFBZ0M7QUFDckMsTUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLFFBQXJCO0FBRUE7O0FBQ0EsTUFBSUYsS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQ0csWUFBcEIsRUFBa0M7QUFDaEMsV0FBT0wsRUFBRSxDQUFDRSxLQUFELENBQVQ7QUFDRDs7QUFFRCxTQUFPRCxRQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNLLGdCQUFULENBQTBCQyxNQUExQixFQUFrQztBQUN2QyxvQkFBV0MsTUFBTSxDQUFDRCxNQUFNLENBQUNFLE9BQVIsQ0FBTixDQUF1QnBCLFdBQXZCLEVBQVg7QUFDRDtBQUVELE9BQU8sSUFBTXFCLEtBQUssSUFBRyxtQkFBbUJQLE1BQXRCLENBQVg7QUFDUCxPQUFPLElBQU1RLFFBQVEsR0FBR0MsT0FBTyxDQUFDQyxPQUFSLEVBQWpCO0FBRVAsT0FBTyxJQUFNQyxZQUFZLEdBQUcsSUFBSUMsT0FBSixFQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNhbWVsVG9EYXNoTWFwID0gbmV3IE1hcCgpO1xuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsVG9EYXNoKHN0cikge1xuICBsZXQgcmVzdWx0ID0gY2FtZWxUb0Rhc2hNYXAuZ2V0KHN0cik7XG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlc3VsdCA9IHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgY2FtZWxUb0Rhc2hNYXAuc2V0KHN0ciwgcmVzdWx0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsVG9EYXNoKHN0cikge1xuICByZXR1cm4gY2FtZWxUb0Rhc2goc3RyLnJlcGxhY2UoLygoPyEoW0EtWl17Mn18XikpW0EtWl0pL2csIFwiLSQxXCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoKGhvc3QsIGV2ZW50VHlwZSwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBob3N0LmRpc3BhdGNoRXZlbnQoXG4gICAgbmV3IEN1c3RvbUV2ZW50KGV2ZW50VHlwZSwgeyBidWJibGVzOiBmYWxzZSwgLi4ub3B0aW9ucyB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWR5Q1NTKGZuLCBmYWxsYmFjaykge1xuICBjb25zdCBzaGFkeSA9IHdpbmRvdy5TaGFkeUNTUztcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoc2hhZHkgJiYgIXNoYWR5Lm5hdGl2ZVNoYWRvdykge1xuICAgIHJldHVybiBmbihzaGFkeSk7XG4gIH1cblxuICByZXR1cm4gZmFsbGJhY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlFbGVtZW50KHRhcmdldCkge1xuICByZXR1cm4gYDwke1N0cmluZyh0YXJnZXQudGFnTmFtZSkudG9Mb3dlckNhc2UoKX0+YDtcbn1cblxuZXhwb3J0IGNvbnN0IElTX0lFID0gXCJBY3RpdmVYT2JqZWN0XCIgaW4gd2luZG93O1xuZXhwb3J0IGNvbnN0IGRlZmVycmVkID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbmV4cG9ydCBjb25zdCBzdG9yZVBvaW50ZXIgPSBuZXcgV2Vha01hcCgpO1xuIl19","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { camelToDash } from \"./utils.js\";\n\nvar defaultTransform = function defaultTransform(v) {\n return v;\n};\n\nvar objectTransform = function objectTransform(value) {\n if (_typeof(value) !== \"object\") {\n throw TypeError(\"Assigned value must be an object: \".concat(_typeof(value)));\n }\n\n return value && Object.freeze(value);\n};\n\nexport default function property(value, connect) {\n var type = _typeof(value);\n\n var transform = defaultTransform;\n\n switch (type) {\n case \"string\":\n transform = String;\n break;\n\n case \"number\":\n transform = Number;\n break;\n\n case \"boolean\":\n transform = Boolean;\n break;\n\n case \"function\":\n transform = value;\n value = transform();\n break;\n\n case \"object\":\n if (value) Object.freeze(value);\n transform = objectTransform;\n break;\n\n default:\n break;\n }\n\n return {\n get: function get(host) {\n var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : value;\n return val;\n },\n set: function set(host, val, oldValue) {\n return transform(val, oldValue);\n },\n connect: type !== \"object\" && type !== \"undefined\" ? function (host, key, invalidate) {\n if (host[key] === value) {\n var attrName = camelToDash(key);\n\n if (host.hasAttribute(attrName)) {\n var attrValue = host.getAttribute(attrName);\n host[key] = attrValue === \"\" && transform === Boolean ? true : attrValue;\n }\n }\n\n return connect && connect(host, key, invalidate);\n } : connect\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9wZXJ0eS5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaCIsImRlZmF1bHRUcmFuc2Zvcm0iLCJ2Iiwib2JqZWN0VHJhbnNmb3JtIiwidmFsdWUiLCJUeXBlRXJyb3IiLCJPYmplY3QiLCJmcmVlemUiLCJwcm9wZXJ0eSIsImNvbm5lY3QiLCJ0eXBlIiwidHJhbnNmb3JtIiwiU3RyaW5nIiwiTnVtYmVyIiwiQm9vbGVhbiIsImdldCIsImhvc3QiLCJ2YWwiLCJzZXQiLCJvbGRWYWx1ZSIsImtleSIsImludmFsaWRhdGUiLCJhdHRyTmFtZSIsImhhc0F0dHJpYnV0ZSIsImF0dHJWYWx1ZSIsImdldEF0dHJpYnV0ZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxXQUFULFFBQTRCLFlBQTVCOztBQUVBLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUExQjs7QUFFQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUFDLEtBQUssRUFBSTtBQUMvQixNQUFJLFFBQU9BLEtBQVAsTUFBaUIsUUFBckIsRUFBK0I7QUFDN0IsVUFBTUMsU0FBUyxxREFBNkNELEtBQTdDLEdBQWY7QUFDRDs7QUFDRCxTQUFPQSxLQUFLLElBQUlFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjSCxLQUFkLENBQWhCO0FBQ0QsQ0FMRDs7QUFPQSxlQUFlLFNBQVNJLFFBQVQsQ0FBa0JKLEtBQWxCLEVBQXlCSyxPQUF6QixFQUFrQztBQUMvQyxNQUFNQyxJQUFJLFdBQVVOLEtBQVYsQ0FBVjs7QUFDQSxNQUFJTyxTQUFTLEdBQUdWLGdCQUFoQjs7QUFFQSxVQUFRUyxJQUFSO0FBQ0UsU0FBSyxRQUFMO0FBQ0VDLE1BQUFBLFNBQVMsR0FBR0MsTUFBWjtBQUNBOztBQUNGLFNBQUssUUFBTDtBQUNFRCxNQUFBQSxTQUFTLEdBQUdFLE1BQVo7QUFDQTs7QUFDRixTQUFLLFNBQUw7QUFDRUYsTUFBQUEsU0FBUyxHQUFHRyxPQUFaO0FBQ0E7O0FBQ0YsU0FBSyxVQUFMO0FBQ0VILE1BQUFBLFNBQVMsR0FBR1AsS0FBWjtBQUNBQSxNQUFBQSxLQUFLLEdBQUdPLFNBQVMsRUFBakI7QUFDQTs7QUFDRixTQUFLLFFBQUw7QUFDRSxVQUFJUCxLQUFKLEVBQVdFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjSCxLQUFkO0FBQ1hPLE1BQUFBLFNBQVMsR0FBR1IsZUFBWjtBQUNBOztBQUNGO0FBQ0U7QUFuQko7O0FBc0JBLFNBQU87QUFDTFksSUFBQUEsR0FBRyxFQUFFLGFBQUNDLElBQUQ7QUFBQSxVQUFPQyxHQUFQLHVFQUFhYixLQUFiO0FBQUEsYUFBdUJhLEdBQXZCO0FBQUEsS0FEQTtBQUVMQyxJQUFBQSxHQUFHLEVBQUUsYUFBQ0YsSUFBRCxFQUFPQyxHQUFQLEVBQVlFLFFBQVo7QUFBQSxhQUF5QlIsU0FBUyxDQUFDTSxHQUFELEVBQU1FLFFBQU4sQ0FBbEM7QUFBQSxLQUZBO0FBR0xWLElBQUFBLE9BQU8sRUFDTEMsSUFBSSxLQUFLLFFBQVQsSUFBcUJBLElBQUksS0FBSyxXQUE5QixHQUNJLFVBQUNNLElBQUQsRUFBT0ksR0FBUCxFQUFZQyxVQUFaLEVBQTJCO0FBQ3pCLFVBQUlMLElBQUksQ0FBQ0ksR0FBRCxDQUFKLEtBQWNoQixLQUFsQixFQUF5QjtBQUN2QixZQUFNa0IsUUFBUSxHQUFHdEIsV0FBVyxDQUFDb0IsR0FBRCxDQUE1Qjs7QUFFQSxZQUFJSixJQUFJLENBQUNPLFlBQUwsQ0FBa0JELFFBQWxCLENBQUosRUFBaUM7QUFDL0IsY0FBTUUsU0FBUyxHQUFHUixJQUFJLENBQUNTLFlBQUwsQ0FBa0JILFFBQWxCLENBQWxCO0FBQ0FOLFVBQUFBLElBQUksQ0FBQ0ksR0FBRCxDQUFKLEdBQ0VJLFNBQVMsS0FBSyxFQUFkLElBQW9CYixTQUFTLEtBQUtHLE9BQWxDLEdBQTRDLElBQTVDLEdBQW1EVSxTQURyRDtBQUVEO0FBQ0Y7O0FBRUQsYUFBT2YsT0FBTyxJQUFJQSxPQUFPLENBQUNPLElBQUQsRUFBT0ksR0FBUCxFQUFZQyxVQUFaLENBQXpCO0FBQ0QsS0FiTCxHQWNJWjtBQWxCRCxHQUFQO0FBb0JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FtZWxUb0Rhc2ggfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG5jb25zdCBkZWZhdWx0VHJhbnNmb3JtID0gdiA9PiB2O1xuXG5jb25zdCBvYmplY3RUcmFuc2Zvcm0gPSB2YWx1ZSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoYEFzc2lnbmVkIHZhbHVlIG11c3QgYmUgYW4gb2JqZWN0OiAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gdmFsdWUgJiYgT2JqZWN0LmZyZWV6ZSh2YWx1ZSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcm9wZXJ0eSh2YWx1ZSwgY29ubmVjdCkge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZXQgdHJhbnNmb3JtID0gZGVmYXVsdFRyYW5zZm9ybTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICB0cmFuc2Zvcm0gPSBTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICB0cmFuc2Zvcm0gPSBOdW1iZXI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgdHJhbnNmb3JtID0gQm9vbGVhbjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgdHJhbnNmb3JtID0gdmFsdWU7XG4gICAgICB2YWx1ZSA9IHRyYW5zZm9ybSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgaWYgKHZhbHVlKSBPYmplY3QuZnJlZXplKHZhbHVlKTtcbiAgICAgIHRyYW5zZm9ybSA9IG9iamVjdFRyYW5zZm9ybTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoaG9zdCwgdmFsID0gdmFsdWUpID0+IHZhbCxcbiAgICBzZXQ6IChob3N0LCB2YWwsIG9sZFZhbHVlKSA9PiB0cmFuc2Zvcm0odmFsLCBvbGRWYWx1ZSksXG4gICAgY29ubmVjdDpcbiAgICAgIHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICA/IChob3N0LCBrZXksIGludmFsaWRhdGUpID0+IHtcbiAgICAgICAgICAgIGlmIChob3N0W2tleV0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gY2FtZWxUb0Rhc2goa2V5KTtcblxuICAgICAgICAgICAgICBpZiAoaG9zdC5oYXNBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gaG9zdC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgICAgICAgICAgICAgIGhvc3Rba2V5XSA9XG4gICAgICAgICAgICAgICAgICBhdHRyVmFsdWUgPT09IFwiXCIgJiYgdHJhbnNmb3JtID09PSBCb29sZWFuID8gdHJ1ZSA6IGF0dHJWYWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29ubmVjdCAmJiBjb25uZWN0KGhvc3QsIGtleSwgaW52YWxpZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICA6IGNvbm5lY3QsXG4gIH07XG59XG4iXX0=","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport default function render(fn) {\n var customOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof fn !== \"function\") {\n throw TypeError(\"The first argument must be a function: \".concat(_typeof(fn)));\n }\n\n var options = _objectSpread({\n shadowRoot: true\n }, customOptions);\n\n var shadowRootInit = {\n mode: \"open\"\n };\n\n if (_typeof(options.shadowRoot) === \"object\") {\n Object.assign(shadowRootInit, options.shadowRoot);\n }\n\n return {\n get: function get(host) {\n var update = fn(host);\n var target = host;\n\n if (options.shadowRoot) {\n if (!host.shadowRoot) host.attachShadow(shadowRootInit);\n target = host.shadowRoot;\n }\n\n return function flush() {\n update(host, target);\n return target;\n };\n },\n observe: function observe(host, flush) {\n flush();\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsicmVuZGVyIiwiZm4iLCJjdXN0b21PcHRpb25zIiwiVHlwZUVycm9yIiwib3B0aW9ucyIsInNoYWRvd1Jvb3QiLCJzaGFkb3dSb290SW5pdCIsIm1vZGUiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXQiLCJob3N0IiwidXBkYXRlIiwidGFyZ2V0IiwiYXR0YWNoU2hhZG93IiwiZmx1c2giLCJvYnNlcnZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLGVBQWUsU0FBU0EsTUFBVCxDQUFnQkMsRUFBaEIsRUFBd0M7QUFBQSxNQUFwQkMsYUFBb0IsdUVBQUosRUFBSTs7QUFDckQsTUFBSSxPQUFPRCxFQUFQLEtBQWMsVUFBbEIsRUFBOEI7QUFDNUIsVUFBTUUsU0FBUywwREFBa0RGLEVBQWxELEdBQWY7QUFDRDs7QUFFRCxNQUFNRyxPQUFPO0FBQUtDLElBQUFBLFVBQVUsRUFBRTtBQUFqQixLQUEwQkgsYUFBMUIsQ0FBYjs7QUFDQSxNQUFNSSxjQUFjLEdBQUc7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBdkI7O0FBRUEsTUFBSSxRQUFPSCxPQUFPLENBQUNDLFVBQWYsTUFBOEIsUUFBbEMsRUFBNEM7QUFDMUNHLElBQUFBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjSCxjQUFkLEVBQThCRixPQUFPLENBQUNDLFVBQXRDO0FBQ0Q7O0FBRUQsU0FBTztBQUNMSyxJQUFBQSxHQURLLGVBQ0RDLElBREMsRUFDSztBQUNSLFVBQU1DLE1BQU0sR0FBR1gsRUFBRSxDQUFDVSxJQUFELENBQWpCO0FBQ0EsVUFBSUUsTUFBTSxHQUFHRixJQUFiOztBQUVBLFVBQUlQLE9BQU8sQ0FBQ0MsVUFBWixFQUF3QjtBQUN0QixZQUFJLENBQUNNLElBQUksQ0FBQ04sVUFBVixFQUFzQk0sSUFBSSxDQUFDRyxZQUFMLENBQWtCUixjQUFsQjtBQUN0Qk8sUUFBQUEsTUFBTSxHQUFHRixJQUFJLENBQUNOLFVBQWQ7QUFDRDs7QUFFRCxhQUFPLFNBQVNVLEtBQVQsR0FBaUI7QUFDdEJILFFBQUFBLE1BQU0sQ0FBQ0QsSUFBRCxFQUFPRSxNQUFQLENBQU47QUFDQSxlQUFPQSxNQUFQO0FBQ0QsT0FIRDtBQUlELEtBZEk7QUFlTEcsSUFBQUEsT0FmSyxtQkFlR0wsSUFmSCxFQWVTSSxLQWZULEVBZWdCO0FBQ25CQSxNQUFBQSxLQUFLO0FBQ047QUFqQkksR0FBUDtBQW1CRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbmRlcihmbiwgY3VzdG9tT3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgZm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHRocm93IFR5cGVFcnJvcihgVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbjogJHt0eXBlb2YgZm59YCk7XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0geyBzaGFkb3dSb290OiB0cnVlLCAuLi5jdXN0b21PcHRpb25zIH07XG4gIGNvbnN0IHNoYWRvd1Jvb3RJbml0ID0geyBtb2RlOiBcIm9wZW5cIiB9O1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5zaGFkb3dSb290ID09PSBcIm9iamVjdFwiKSB7XG4gICAgT2JqZWN0LmFzc2lnbihzaGFkb3dSb290SW5pdCwgb3B0aW9ucy5zaGFkb3dSb290KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0KGhvc3QpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IGZuKGhvc3QpO1xuICAgICAgbGV0IHRhcmdldCA9IGhvc3Q7XG5cbiAgICAgIGlmIChvcHRpb25zLnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgaWYgKCFob3N0LnNoYWRvd1Jvb3QpIGhvc3QuYXR0YWNoU2hhZG93KHNoYWRvd1Jvb3RJbml0KTtcbiAgICAgICAgdGFyZ2V0ID0gaG9zdC5zaGFkb3dSb290O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHVwZGF0ZShob3N0LCB0YXJnZXQpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfTtcbiAgICB9LFxuICAgIG9ic2VydmUoaG9zdCwgZmx1c2gpIHtcbiAgICAgIGZsdXNoKCk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==","var callbacks = new WeakMap();\nvar queue = new Set();\n\nfunction execute() {\n try {\n queue.forEach(function (target) {\n try {\n callbacks.get(target)();\n queue.delete(target);\n } catch (e) {\n queue.delete(target);\n throw e;\n }\n });\n } catch (e) {\n if (queue.size) execute();\n throw e;\n }\n}\n\nexport function dispatch(target) {\n if (!queue.size) {\n requestAnimationFrame(execute);\n }\n\n queue.add(target);\n}\nexport function subscribe(target, cb) {\n callbacks.set(target, cb);\n dispatch(target);\n return function unsubscribe() {\n queue.delete(target);\n callbacks.delete(target);\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbWl0dGVyLmpzIl0sIm5hbWVzIjpbImNhbGxiYWNrcyIsIldlYWtNYXAiLCJxdWV1ZSIsIlNldCIsImV4ZWN1dGUiLCJmb3JFYWNoIiwidGFyZ2V0IiwiZ2V0IiwiZGVsZXRlIiwiZSIsInNpemUiLCJkaXNwYXRjaCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFkZCIsInN1YnNjcmliZSIsImNiIiwic2V0IiwidW5zdWJzY3JpYmUiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLFNBQVMsR0FBRyxJQUFJQyxPQUFKLEVBQWxCO0FBQ0EsSUFBTUMsS0FBSyxHQUFHLElBQUlDLEdBQUosRUFBZDs7QUFFQSxTQUFTQyxPQUFULEdBQW1CO0FBQ2pCLE1BQUk7QUFDRkYsSUFBQUEsS0FBSyxDQUFDRyxPQUFOLENBQWMsVUFBQUMsTUFBTSxFQUFJO0FBQ3RCLFVBQUk7QUFDRk4sUUFBQUEsU0FBUyxDQUFDTyxHQUFWLENBQWNELE1BQWQ7QUFDQUosUUFBQUEsS0FBSyxDQUFDTSxNQUFOLENBQWFGLE1BQWI7QUFDRCxPQUhELENBR0UsT0FBT0csQ0FBUCxFQUFVO0FBQ1ZQLFFBQUFBLEtBQUssQ0FBQ00sTUFBTixDQUFhRixNQUFiO0FBQ0EsY0FBTUcsQ0FBTjtBQUNEO0FBQ0YsS0FSRDtBQVNELEdBVkQsQ0FVRSxPQUFPQSxDQUFQLEVBQVU7QUFDVixRQUFJUCxLQUFLLENBQUNRLElBQVYsRUFBZ0JOLE9BQU87QUFDdkIsVUFBTUssQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsT0FBTyxTQUFTRSxRQUFULENBQWtCTCxNQUFsQixFQUEwQjtBQUMvQixNQUFJLENBQUNKLEtBQUssQ0FBQ1EsSUFBWCxFQUFpQjtBQUNmRSxJQUFBQSxxQkFBcUIsQ0FBQ1IsT0FBRCxDQUFyQjtBQUNEOztBQUNERixFQUFBQSxLQUFLLENBQUNXLEdBQU4sQ0FBVVAsTUFBVjtBQUNEO0FBRUQsT0FBTyxTQUFTUSxTQUFULENBQW1CUixNQUFuQixFQUEyQlMsRUFBM0IsRUFBK0I7QUFDcENmLEVBQUFBLFNBQVMsQ0FBQ2dCLEdBQVYsQ0FBY1YsTUFBZCxFQUFzQlMsRUFBdEI7QUFDQUosRUFBQUEsUUFBUSxDQUFDTCxNQUFELENBQVI7QUFFQSxTQUFPLFNBQVNXLFdBQVQsR0FBdUI7QUFDNUJmLElBQUFBLEtBQUssQ0FBQ00sTUFBTixDQUFhRixNQUFiO0FBQ0FOLElBQUFBLFNBQVMsQ0FBQ1EsTUFBVixDQUFpQkYsTUFBakI7QUFDRCxHQUhEO0FBSUQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjYWxsYmFja3MgPSBuZXcgV2Vha01hcCgpO1xuY29uc3QgcXVldWUgPSBuZXcgU2V0KCk7XG5cbmZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gIHRyeSB7XG4gICAgcXVldWUuZm9yRWFjaCh0YXJnZXQgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2tzLmdldCh0YXJnZXQpKCk7XG4gICAgICAgIHF1ZXVlLmRlbGV0ZSh0YXJnZXQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBxdWV1ZS5kZWxldGUodGFyZ2V0KTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChxdWV1ZS5zaXplKSBleGVjdXRlKCk7XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0KSB7XG4gIGlmICghcXVldWUuc2l6ZSkge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShleGVjdXRlKTtcbiAgfVxuICBxdWV1ZS5hZGQodGFyZ2V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZSh0YXJnZXQsIGNiKSB7XG4gIGNhbGxiYWNrcy5zZXQodGFyZ2V0LCBjYik7XG4gIGRpc3BhdGNoKHRhcmdldCk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIHF1ZXVlLmRlbGV0ZSh0YXJnZXQpO1xuICAgIGNhbGxiYWNrcy5kZWxldGUodGFyZ2V0KTtcbiAgfTtcbn1cbiJdfQ==","import * as emitter from \"./emitter.js\";\nvar entries = new WeakMap();\nexport function getEntry(target, key) {\n var targetMap = entries.get(target);\n\n if (!targetMap) {\n targetMap = new Map();\n entries.set(target, targetMap);\n }\n\n var entry = targetMap.get(key);\n\n if (!entry) {\n entry = {\n target: target,\n key: key,\n value: undefined,\n contexts: undefined,\n deps: undefined,\n state: 0,\n checksum: 0,\n observed: false\n };\n targetMap.set(key, entry);\n }\n\n return entry;\n}\nexport function getEntries(target) {\n var result = [];\n var targetMap = entries.get(target);\n\n if (targetMap) {\n targetMap.forEach(function (entry) {\n result.push(entry);\n });\n }\n\n return result;\n}\n\nfunction calculateChecksum(entry) {\n var checksum = entry.state;\n\n if (entry.deps) {\n entry.deps.forEach(function (depEntry) {\n checksum += depEntry.state;\n });\n }\n\n return checksum;\n}\n\nfunction dispatchDeep(entry) {\n if (entry.observed) emitter.dispatch(entry);\n if (entry.contexts) entry.contexts.forEach(dispatchDeep);\n}\n\nfunction restoreDeepDeps(entry, deps) {\n if (deps) {\n deps.forEach(function (depEntry) {\n entry.deps.add(depEntry);\n\n if (entry.observed) {\n /* istanbul ignore if */\n if (!depEntry.contexts) depEntry.contexts = new Set();\n depEntry.contexts.add(entry);\n }\n\n restoreDeepDeps(entry, depEntry.deps);\n });\n }\n}\n\nvar contextStack = new Set();\nexport function get(target, key, getter, validate) {\n var entry = getEntry(target, key);\n\n if (contextStack.size && contextStack.has(entry)) {\n throw Error(\"Circular get invocation is forbidden: '\".concat(key, \"'\"));\n }\n\n contextStack.forEach(function (context) {\n if (!context.deps) context.deps = new Set();\n context.deps.add(entry);\n\n if (context.observed) {\n if (!entry.contexts) entry.contexts = new Set();\n entry.contexts.add(context);\n }\n });\n\n if ((validate && validate(entry.value) || !validate) && entry.checksum && entry.checksum === calculateChecksum(entry)) {\n return entry.value;\n }\n\n try {\n contextStack.add(entry);\n\n if (entry.observed && entry.deps && entry.deps.size) {\n entry.deps.forEach(function (depEntry) {\n /* istanbul ignore else */\n if (depEntry.contexts) depEntry.contexts.delete(entry);\n });\n }\n\n entry.deps = undefined;\n var nextValue = getter(target, entry.value);\n\n if (entry.deps) {\n entry.deps.forEach(function (depEntry) {\n restoreDeepDeps(entry, depEntry.deps);\n });\n }\n\n if (nextValue !== entry.value) {\n entry.state += 1;\n entry.value = nextValue;\n dispatchDeep(entry);\n }\n\n entry.checksum = calculateChecksum(entry);\n contextStack.delete(entry);\n } catch (e) {\n entry.checksum = 0;\n contextStack.delete(entry);\n contextStack.forEach(function (context) {\n context.deps.delete(entry);\n if (context.observed) entry.contexts.delete(context);\n });\n throw e;\n }\n\n return entry.value;\n}\nexport function set(target, key, setter, value) {\n var entry = getEntry(target, key);\n var newValue = setter(target, value, entry.value);\n\n if (newValue !== entry.value) {\n entry.checksum = 0;\n entry.state += 1;\n entry.value = newValue;\n dispatchDeep(entry);\n }\n}\nvar gcList = new Set();\n\nfunction deleteEntry(entry) {\n if (!gcList.size) {\n requestAnimationFrame(function () {\n gcList.forEach(function (e) {\n if (!e.contexts || e.contexts && e.contexts.size === 0) {\n var targetMap = entries.get(e.target);\n targetMap.delete(e.key);\n }\n });\n gcList.clear();\n });\n }\n\n gcList.add(entry);\n}\n\nfunction invalidateEntry(entry, clearValue, deleteValue) {\n entry.checksum = 0;\n entry.state += 1;\n dispatchDeep(entry);\n if (deleteValue) deleteEntry(entry);\n\n if (clearValue) {\n entry.value = undefined;\n }\n}\n\nexport function invalidate(target, key, clearValue, deleteValue) {\n if (contextStack.size) {\n throw Error(\"Invalidating property in chain of get calls is forbidden: '\".concat(key, \"'\"));\n }\n\n var entry = getEntry(target, key);\n invalidateEntry(entry, clearValue, deleteValue);\n}\nexport function invalidateAll(target, clearValue, deleteValue) {\n if (contextStack.size) {\n throw Error(\"Invalidating all properties in chain of get calls is forbidden\");\n }\n\n var targetMap = entries.get(target);\n\n if (targetMap) {\n targetMap.forEach(function (entry) {\n invalidateEntry(entry, clearValue, deleteValue);\n });\n }\n}\nexport function observe(target, key, getter, fn) {\n var entry = getEntry(target, key);\n entry.observed = true;\n var lastValue;\n var unsubscribe = emitter.subscribe(entry, function () {\n var value = get(target, key, getter);\n\n if (value !== lastValue) {\n fn(target, value, lastValue);\n lastValue = value;\n }\n });\n\n if (entry.deps) {\n entry.deps.forEach(function (depEntry) {\n /* istanbul ignore else */\n if (!depEntry.contexts) depEntry.contexts = new Set();\n depEntry.contexts.add(entry);\n });\n }\n\n return function unobserve() {\n unsubscribe();\n entry.observed = false;\n\n if (entry.deps && entry.deps.size) {\n entry.deps.forEach(function (depEntry) {\n /* istanbul ignore else */\n if (depEntry.contexts) depEntry.contexts.delete(entry);\n });\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWNoZS5qcyJdLCJuYW1lcyI6WyJlbWl0dGVyIiwiZW50cmllcyIsIldlYWtNYXAiLCJnZXRFbnRyeSIsInRhcmdldCIsImtleSIsInRhcmdldE1hcCIsImdldCIsIk1hcCIsInNldCIsImVudHJ5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJjb250ZXh0cyIsImRlcHMiLCJzdGF0ZSIsImNoZWNrc3VtIiwib2JzZXJ2ZWQiLCJnZXRFbnRyaWVzIiwicmVzdWx0IiwiZm9yRWFjaCIsInB1c2giLCJjYWxjdWxhdGVDaGVja3N1bSIsImRlcEVudHJ5IiwiZGlzcGF0Y2hEZWVwIiwiZGlzcGF0Y2giLCJyZXN0b3JlRGVlcERlcHMiLCJhZGQiLCJTZXQiLCJjb250ZXh0U3RhY2siLCJnZXR0ZXIiLCJ2YWxpZGF0ZSIsInNpemUiLCJoYXMiLCJFcnJvciIsImNvbnRleHQiLCJkZWxldGUiLCJuZXh0VmFsdWUiLCJlIiwic2V0dGVyIiwibmV3VmFsdWUiLCJnY0xpc3QiLCJkZWxldGVFbnRyeSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNsZWFyIiwiaW52YWxpZGF0ZUVudHJ5IiwiY2xlYXJWYWx1ZSIsImRlbGV0ZVZhbHVlIiwiaW52YWxpZGF0ZSIsImludmFsaWRhdGVBbGwiLCJvYnNlcnZlIiwiZm4iLCJsYXN0VmFsdWUiLCJ1bnN1YnNjcmliZSIsInN1YnNjcmliZSIsInVub2JzZXJ2ZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxPQUFaLE1BQXlCLGNBQXpCO0FBRUEsSUFBTUMsT0FBTyxHQUFHLElBQUlDLE9BQUosRUFBaEI7QUFDQSxPQUFPLFNBQVNDLFFBQVQsQ0FBa0JDLE1BQWxCLEVBQTBCQyxHQUExQixFQUErQjtBQUNwQyxNQUFJQyxTQUFTLEdBQUdMLE9BQU8sQ0FBQ00sR0FBUixDQUFZSCxNQUFaLENBQWhCOztBQUNBLE1BQUksQ0FBQ0UsU0FBTCxFQUFnQjtBQUNkQSxJQUFBQSxTQUFTLEdBQUcsSUFBSUUsR0FBSixF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QXRCO0FBQ0QsS0FKRDtBQUtEOztBQUVELFNBQU8sU0FBUzZDLFNBQVQsR0FBcUI7QUFDMUJGLElBQUFBLFdBQVc7QUFDWDNDLElBQUFBLEtBQUssQ0FBQ08sUUFBTixHQUFpQixLQUFqQjs7QUFDQSxRQUFJUCxLQUFLLENBQUNJLElBQU4sSUFBY0osS0FBSyxDQUFDSSxJQUFOLENBQVdrQixJQUE3QixFQUFtQztBQUNqQ3RCLE1BQUFBLEtBQUssQ0FBQ0ksSUFBTixDQUFXTSxPQUFYLENBQW1CLFVBQUFHLFFBQVEsRUFBSTtBQUM3QjtBQUNBLFlBQUlBLFFBQVEsQ0FBQ1YsUUFBYixFQUF1QlUsUUFBUSxDQUFDVixRQUFULENBQWtCdUIsTUFBbEIsQ0FBeUIxQixLQUF6QjtBQUN4QixPQUhEO0FBSUQ7QUFDRixHQVREO0FBVUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlbWl0dGVyIGZyb20gXCIuL2VtaXR0ZXIuanNcIjtcblxuY29uc3QgZW50cmllcyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnkodGFyZ2V0LCBrZXkpIHtcbiAgbGV0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWFwKSB7XG4gICAgdGFyZ2V0TWFwID0gbmV3IE1hcCgpO1xuICAgIGVudHJpZXMuc2V0KHRhcmdldCwgdGFyZ2V0TWFwKTtcbiAgfVxuXG4gIGxldCBlbnRyeSA9IHRhcmdldE1hcC5nZXQoa2V5KTtcblxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW50cnkgPSB7XG4gICAgICB0YXJnZXQsXG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY29udGV4dHM6IHVuZGVmaW5lZCxcbiAgICAgIGRlcHM6IHVuZGVmaW5lZCxcbiAgICAgIHN0YXRlOiAwLFxuICAgICAgY2hlY2tzdW06IDAsXG4gICAgICBvYnNlcnZlZDogZmFsc2UsXG4gICAgfTtcbiAgICB0YXJnZXRNYXAuc2V0KGtleSwgZW50cnkpO1xuICB9XG5cbiAgcmV0dXJuIGVudHJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cmllcyh0YXJnZXQpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGNvbnN0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICh0YXJnZXRNYXApIHtcbiAgICB0YXJnZXRNYXAuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICByZXN1bHQucHVzaChlbnRyeSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tzdW0oZW50cnkpIHtcbiAgbGV0IGNoZWNrc3VtID0gZW50cnkuc3RhdGU7XG4gIGlmIChlbnRyeS5kZXBzKSB7XG4gICAgZW50cnkuZGVwcy5mb3JFYWNoKGRlcEVudHJ5ID0+IHtcbiAgICAgIGNoZWNrc3VtICs9IGRlcEVudHJ5LnN0YXRlO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrc3VtO1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaERlZXAoZW50cnkpIHtcbiAgaWYgKGVudHJ5Lm9ic2VydmVkKSBlbWl0dGVyLmRpc3BhdGNoKGVudHJ5KTtcbiAgaWYgKGVudHJ5LmNvbnRleHRzKSBlbnRyeS5jb250ZXh0cy5mb3JFYWNoKGRpc3BhdGNoRGVlcCk7XG59XG5cbmZ1bmN0aW9uIHJlc3RvcmVEZWVwRGVwcyhlbnRyeSwgZGVwcykge1xuICBpZiAoZGVwcykge1xuICAgIGRlcHMuZm9yRWFjaChkZXBFbnRyeSA9PiB7XG4gICAgICBlbnRyeS5kZXBzLmFkZChkZXBFbnRyeSk7XG5cbiAgICAgIGlmIChlbnRyeS5vYnNlcnZlZCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKCFkZXBFbnRyeS5jb250ZXh0cykgZGVwRW50cnkuY29udGV4dHMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGRlcEVudHJ5LmNvbnRleHRzLmFkZChlbnRyeSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3RvcmVEZWVwRGVwcyhlbnRyeSwgZGVwRW50cnkuZGVwcyk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgY29udGV4dFN0YWNrID0gbmV3IFNldCgpO1xuZXhwb3J0IGZ1bmN0aW9uIGdldCh0YXJnZXQsIGtleSwgZ2V0dGVyLCB2YWxpZGF0ZSkge1xuICBjb25zdCBlbnRyeSA9IGdldEVudHJ5KHRhcmdldCwga2V5KTtcblxuICBpZiAoY29udGV4dFN0YWNrLnNpemUgJiYgY29udGV4dFN0YWNrLmhhcyhlbnRyeSkpIHtcbiAgICB0aHJvdyBFcnJvcihgQ2lyY3VsYXIgZ2V0IGludm9jYXRpb24gaXMgZm9yYmlkZGVuOiAnJHtrZXl9J2ApO1xuICB9XG5cbiAgY29udGV4dFN0YWNrLmZvckVhY2goY29udGV4dCA9PiB7XG4gICAgaWYgKCFjb250ZXh0LmRlcHMpIGNvbnRleHQuZGVwcyA9IG5ldyBTZXQoKTtcbiAgICBjb250ZXh0LmRlcHMuYWRkKGVudHJ5KTtcblxuICAgIGlmIChjb250ZXh0Lm9ic2VydmVkKSB7XG4gICAgICBpZiAoIWVudHJ5LmNvbnRleHRzKSBlbnRyeS5jb250ZXh0cyA9IG5ldyBTZXQoKTtcbiAgICAgIGVudHJ5LmNvbnRleHRzLmFkZChjb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChcbiAgICAoKHZhbGlkYXRlICYmIHZhbGlkYXRlKGVudHJ5LnZhbHVlKSkgfHwgIXZhbGlkYXRlKSAmJlxuICAgIGVudHJ5LmNoZWNrc3VtICYmXG4gICAgZW50cnkuY2hlY2tzdW0gPT09IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KVxuICApIHtcbiAgICByZXR1cm4gZW50cnkudmFsdWU7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnRleHRTdGFjay5hZGQoZW50cnkpO1xuXG4gICAgaWYgKGVudHJ5Lm9ic2VydmVkICYmIGVudHJ5LmRlcHMgJiYgZW50cnkuZGVwcy5zaXplKSB7XG4gICAgICBlbnRyeS5kZXBzLmZvckVhY2goZGVwRW50cnkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZGVwRW50cnkuY29udGV4dHMpIGRlcEVudHJ5LmNvbnRleHRzLmRlbGV0ZShlbnRyeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBlbnRyeS5kZXBzID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHRWYWx1ZSA9IGdldHRlcih0YXJnZXQsIGVudHJ5LnZhbHVlKTtcblxuICAgIGlmIChlbnRyeS5kZXBzKSB7XG4gICAgICBlbnRyeS5kZXBzLmZvckVhY2goZGVwRW50cnkgPT4ge1xuICAgICAgICByZXN0b3JlRGVlcERlcHMoZW50cnksIGRlcEVudHJ5LmRlcHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRWYWx1ZSAhPT0gZW50cnkudmFsdWUpIHtcbiAgICAgIGVudHJ5LnN0YXRlICs9IDE7XG4gICAgICBlbnRyeS52YWx1ZSA9IG5leHRWYWx1ZTtcblxuICAgICAgZGlzcGF0Y2hEZWVwKGVudHJ5KTtcbiAgICB9XG5cbiAgICBlbnRyeS5jaGVja3N1bSA9IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KTtcbiAgICBjb250ZXh0U3RhY2suZGVsZXRlKGVudHJ5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVudHJ5LmNoZWNrc3VtID0gMDtcblxuICAgIGNvbnRleHRTdGFjay5kZWxldGUoZW50cnkpO1xuICAgIGNvbnRleHRTdGFjay5mb3JFYWNoKGNvbnRleHQgPT4ge1xuICAgICAgY29udGV4dC5kZXBzLmRlbGV0ZShlbnRyeSk7XG4gICAgICBpZiAoY29udGV4dC5vYnNlcnZlZCkgZW50cnkuY29udGV4dHMuZGVsZXRlKGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeS52YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldCh0YXJnZXQsIGtleSwgc2V0dGVyLCB2YWx1ZSkge1xuICBjb25zdCBlbnRyeSA9IGdldEVudHJ5KHRhcmdldCwga2V5KTtcbiAgY29uc3QgbmV3VmFsdWUgPSBzZXR0ZXIodGFyZ2V0LCB2YWx1ZSwgZW50cnkudmFsdWUpO1xuXG4gIGlmIChuZXdWYWx1ZSAhPT0gZW50cnkudmFsdWUpIHtcbiAgICBlbnRyeS5jaGVja3N1bSA9IDA7XG4gICAgZW50cnkuc3RhdGUgKz0gMTtcbiAgICBlbnRyeS52YWx1ZSA9IG5ld1ZhbHVlO1xuXG4gICAgZGlzcGF0Y2hEZWVwKGVudHJ5KTtcbiAgfVxufVxuXG5jb25zdCBnY0xpc3QgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBkZWxldGVFbnRyeShlbnRyeSkge1xuICBpZiAoIWdjTGlzdC5zaXplKSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGdjTGlzdC5mb3JFYWNoKGUgPT4ge1xuICAgICAgICBpZiAoIWUuY29udGV4dHMgfHwgKGUuY29udGV4dHMgJiYgZS5jb250ZXh0cy5zaXplID09PSAwKSkge1xuICAgICAgICAgIGNvbnN0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KGUudGFyZ2V0KTtcbiAgICAgICAgICB0YXJnZXRNYXAuZGVsZXRlKGUua2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBnY0xpc3QuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdjTGlzdC5hZGQoZW50cnkpO1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkYXRlRW50cnkoZW50cnksIGNsZWFyVmFsdWUsIGRlbGV0ZVZhbHVlKSB7XG4gIGVudHJ5LmNoZWNrc3VtID0gMDtcbiAgZW50cnkuc3RhdGUgKz0gMTtcblxuICBkaXNwYXRjaERlZXAoZW50cnkpO1xuICBpZiAoZGVsZXRlVmFsdWUpIGRlbGV0ZUVudHJ5KGVudHJ5KTtcblxuICBpZiAoY2xlYXJWYWx1ZSkge1xuICAgIGVudHJ5LnZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlKHRhcmdldCwga2V5LCBjbGVhclZhbHVlLCBkZWxldGVWYWx1ZSkge1xuICBpZiAoY29udGV4dFN0YWNrLnNpemUpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGBJbnZhbGlkYXRpbmcgcHJvcGVydHkgaW4gY2hhaW4gb2YgZ2V0IGNhbGxzIGlzIGZvcmJpZGRlbjogJyR7a2V5fSdgLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBlbnRyeSA9IGdldEVudHJ5KHRhcmdldCwga2V5KTtcbiAgaW52YWxpZGF0ZUVudHJ5KGVudHJ5LCBjbGVhclZhbHVlLCBkZWxldGVWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlQWxsKHRhcmdldCwgY2xlYXJWYWx1ZSwgZGVsZXRlVmFsdWUpIHtcbiAgaWYgKGNvbnRleHRTdGFjay5zaXplKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIkludmFsaWRhdGluZyBhbGwgcHJvcGVydGllcyBpbiBjaGFpbiBvZiBnZXQgY2FsbHMgaXMgZm9yYmlkZGVuXCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICh0YXJnZXRNYXApIHtcbiAgICB0YXJnZXRNYXAuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICBpbnZhbGlkYXRlRW50cnkoZW50cnksIGNsZWFyVmFsdWUsIGRlbGV0ZVZhbHVlKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZSh0YXJnZXQsIGtleSwgZ2V0dGVyLCBmbikge1xuICBjb25zdCBlbnRyeSA9IGdldEVudHJ5KHRhcmdldCwga2V5KTtcbiAgZW50cnkub2JzZXJ2ZWQgPSB0cnVlO1xuXG4gIGxldCBsYXN0VmFsdWU7XG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gZW1pdHRlci5zdWJzY3JpYmUoZW50cnksICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldCh0YXJnZXQsIGtleSwgZ2V0dGVyKTtcbiAgICBpZiAodmFsdWUgIT09IGxhc3RWYWx1ZSkge1xuICAgICAgZm4odGFyZ2V0LCB2YWx1ZSwgbGFzdFZhbHVlKTtcbiAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGVudHJ5LmRlcHMpIHtcbiAgICBlbnRyeS5kZXBzLmZvckVhY2goZGVwRW50cnkgPT4ge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICghZGVwRW50cnkuY29udGV4dHMpIGRlcEVudHJ5LmNvbnRleHRzID0gbmV3IFNldCgpO1xuICAgICAgZGVwRW50cnkuY29udGV4dHMuYWRkKGVudHJ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiB1bm9ic2VydmUoKSB7XG4gICAgdW5zdWJzY3JpYmUoKTtcbiAgICBlbnRyeS5vYnNlcnZlZCA9IGZhbHNlO1xuICAgIGlmIChlbnRyeS5kZXBzICYmIGVudHJ5LmRlcHMuc2l6ZSkge1xuICAgICAgZW50cnkuZGVwcy5mb3JFYWNoKGRlcEVudHJ5ID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGRlcEVudHJ5LmNvbnRleHRzKSBkZXBFbnRyeS5jb250ZXh0cy5kZWxldGUoZW50cnkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl19","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport property from \"./property.js\";\nimport render from \"./render.js\";\nimport * as cache from \"./cache.js\";\nimport { pascalToDash, deferred } from \"./utils.js\";\n/* istanbul ignore next */\n\ntry {\n process.env.NODE_ENV;\n} catch (e) {\n var process = {\n env: {\n NODE_ENV: 'production'\n }\n };\n} // eslint-disable-line\n\n\nvar defaultMethod = function defaultMethod(host, value) {\n return value;\n};\n\nvar callbacksMap = new WeakMap();\nvar propsMap = new WeakMap();\n\nfunction compile(Hybrid, descriptors) {\n Hybrid.hybrids = descriptors;\n var callbacks = [];\n var props = Object.keys(descriptors);\n callbacksMap.set(Hybrid, callbacks);\n propsMap.set(Hybrid, props);\n props.forEach(function (key) {\n var desc = descriptors[key];\n\n var type = _typeof(desc);\n\n var config;\n\n if (type === \"function\") {\n config = key === \"render\" ? render(desc) : {\n get: desc\n };\n } else if (type !== \"object\" || desc === null || Array.isArray(desc)) {\n config = property(desc);\n } else {\n config = {\n get: desc.get || defaultMethod,\n set: desc.set || !desc.get && defaultMethod || undefined,\n connect: desc.connect,\n observe: desc.observe\n };\n }\n\n Object.defineProperty(Hybrid.prototype, key, {\n get: function get() {\n return cache.get(this, key, config.get);\n },\n set: config.set && function set(newValue) {\n cache.set(this, key, config.set, newValue);\n },\n enumerable: true,\n configurable: process.env.NODE_ENV !== \"production\"\n });\n\n if (config.observe) {\n callbacks.unshift(function (host) {\n return cache.observe(host, key, config.get, config.observe);\n });\n }\n\n if (config.connect) {\n callbacks.push(function (host) {\n return config.connect(host, key, function () {\n cache.invalidate(host, key);\n });\n });\n }\n });\n}\n\nvar update;\n/* istanbul ignore else */\n\nif (process.env.NODE_ENV !== \"production\") {\n var walkInShadow = function walkInShadow(node, fn) {\n fn(node);\n Array.from(node.children).forEach(function (el) {\n return walkInShadow(el, fn);\n });\n\n if (node.shadowRoot) {\n Array.from(node.shadowRoot.children).forEach(function (el) {\n return walkInShadow(el, fn);\n });\n }\n };\n\n var updateQueue = new Map();\n\n update = function update(Hybrid, lastHybrids) {\n if (!updateQueue.size) {\n deferred.then(function () {\n walkInShadow(document.body, function (node) {\n if (updateQueue.has(node.constructor)) {\n var hybrids = updateQueue.get(node.constructor);\n node.disconnectedCallback();\n Object.keys(node.constructor.hybrids).forEach(function (key) {\n cache.invalidate(node, key, node.constructor.hybrids[key] !== hybrids[key]);\n });\n node.connectedCallback();\n }\n });\n updateQueue.clear();\n });\n }\n\n updateQueue.set(Hybrid, lastHybrids);\n };\n}\n\nvar disconnects = new WeakMap();\n\nfunction defineElement(tagName, hybridsOrConstructor) {\n var type = _typeof(hybridsOrConstructor);\n\n if (type !== \"object\" && type !== \"function\") {\n throw TypeError(\"Second argument must be an object or a function: \".concat(type));\n }\n\n if (tagName !== null) {\n var CustomElement = window.customElements.get(tagName);\n\n if (type === \"function\") {\n if (CustomElement !== hybridsOrConstructor) {\n return window.customElements.define(tagName, hybridsOrConstructor);\n }\n\n return CustomElement;\n }\n\n if (CustomElement) {\n if (CustomElement.hybrids === hybridsOrConstructor) {\n return CustomElement;\n }\n\n if (process.env.NODE_ENV !== \"production\" && CustomElement.hybrids) {\n Object.keys(CustomElement.hybrids).forEach(function (key) {\n delete CustomElement.prototype[key];\n });\n var lastHybrids = CustomElement.hybrids;\n compile(CustomElement, hybridsOrConstructor);\n update(CustomElement, lastHybrids);\n return CustomElement;\n }\n\n throw Error(\"Element '\".concat(tagName, \"' already defined\"));\n }\n }\n\n var Hybrid = /*#__PURE__*/function (_HTMLElement) {\n _inherits(Hybrid, _HTMLElement);\n\n var _super = _createSuper(Hybrid);\n\n function Hybrid() {\n var _this;\n\n _classCallCheck(this, Hybrid);\n\n _this = _super.call(this);\n var props = propsMap.get(Hybrid);\n\n for (var index = 0; index < props.length; index += 1) {\n var key = props[index];\n\n if (Object.prototype.hasOwnProperty.call(_assertThisInitialized(_this), key)) {\n var value = _this[key];\n delete _this[key];\n _this[key] = value;\n }\n }\n\n return _this;\n }\n\n _createClass(Hybrid, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n var callbacks = callbacksMap.get(Hybrid);\n var list = [];\n\n for (var index = 0; index < callbacks.length; index += 1) {\n var cb = callbacks[index](this);\n if (cb) list.push(cb);\n }\n\n disconnects.set(this, list);\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n var list = disconnects.get(this);\n\n for (var index = 0; index < list.length; index += 1) {\n list[index]();\n }\n }\n }]);\n\n return Hybrid;\n }( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\n compile(Hybrid, hybridsOrConstructor);\n\n if (tagName !== null) {\n Object.defineProperty(Hybrid, \"name\", {\n get: function get() {\n return tagName;\n }\n });\n customElements.define(tagName, Hybrid);\n }\n\n return Hybrid;\n}\n\nfunction defineMap(elements) {\n return Object.keys(elements).reduce(function (acc, key) {\n var tagName = pascalToDash(key);\n acc[key] = defineElement(tagName, elements[key]);\n return acc;\n }, {});\n}\n\nexport default function define() {\n if (_typeof(arguments.length <= 0 ? undefined : arguments[0]) === \"object\" && (arguments.length <= 0 ? undefined : arguments[0]) !== null) {\n return defineMap(arguments.length <= 0 ? undefined : arguments[0]);\n }\n\n return defineElement.apply(void 0, arguments);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbmUuanMiXSwibmFtZXMiOlsicHJvcGVydHkiLCJyZW5kZXIiLCJjYWNoZSIsInBhc2NhbFRvRGFzaCIsImRlZmVycmVkIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZSIsImRlZmF1bHRNZXRob2QiLCJob3N0IiwidmFsdWUiLCJjYWxsYmFja3NNYXAiLCJXZWFrTWFwIiwicHJvcHNNYXAiLCJjb21waWxlIiwiSHlicmlkIiwiZGVzY3JpcHRvcnMiLCJoeWJyaWRzIiwiY2FsbGJhY2tzIiwicHJvcHMiLCJPYmplY3QiLCJrZXlzIiwic2V0IiwiZm9yRWFjaCIsImtleSIsImRlc2MiLCJ0eXBlIiwiY29uZmlnIiwiZ2V0IiwiQXJyYXkiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwiY29ubmVjdCIsIm9ic2VydmUiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInVuc2hpZnQiLCJwdXNoIiwiaW52YWxpZGF0ZSIsInVwZGF0ZSIsIndhbGtJblNoYWRvdyIsIm5vZGUiLCJmbiIsImZyb20iLCJjaGlsZHJlbiIsImVsIiwic2hhZG93Um9vdCIsInVwZGF0ZVF1ZXVlIiwiTWFwIiwibGFzdEh5YnJpZHMiLCJzaXplIiwidGhlbiIsImRvY3VtZW50IiwiYm9keSIsImhhcyIsImNvbnN0cnVjdG9yIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJjb25uZWN0ZWRDYWxsYmFjayIsImNsZWFyIiwiZGlzY29ubmVjdHMiLCJkZWZpbmVFbGVtZW50IiwidGFnTmFtZSIsImh5YnJpZHNPckNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiQ3VzdG9tRWxlbWVudCIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIiwiRXJyb3IiLCJpbmRleCIsImxlbmd0aCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImxpc3QiLCJjYiIsIkhUTUxFbGVtZW50IiwiZGVmaW5lTWFwIiwiZWxlbWVudHMiLCJyZWR1Y2UiLCJhY2MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxRQUFQLE1BQXFCLGVBQXJCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixhQUFuQjtBQUVBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixZQUF2QjtBQUNBLFNBQVNDLFlBQVQsRUFBdUJDLFFBQXZCLFFBQXVDLFlBQXZDO0FBRUE7O0FBQ0EsSUFBSTtBQUFFQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWjtBQUFzQixDQUE1QixDQUE2QixPQUFNQyxDQUFOLEVBQVM7QUFBRSxNQUFJSCxPQUFPLEdBQUc7QUFBRUMsSUFBQUEsR0FBRyxFQUFFO0FBQUVDLE1BQUFBLFFBQVEsRUFBRTtBQUFaO0FBQVAsR0FBZDtBQUFvRCxDLENBQUM7OztBQUU3RixJQUFNRSxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUNDLElBQUQsRUFBT0MsS0FBUDtBQUFBLFNBQWlCQSxLQUFqQjtBQUFBLENBQXRCOztBQUVBLElBQU1DLFlBQVksR0FBRyxJQUFJQyxPQUFKLEVBQXJCO0FBQ0EsSUFBTUMsUUFBUSxHQUFHLElBQUlELE9BQUosRUFBakI7O0FBRUEsU0FBU0UsT0FBVCxDQUFpQkMsTUFBakIsRUFBeUJDLFdBQXpCLEVBQXNDO0FBQ3BDRCxFQUFBQSxNQUFNLENBQUNFLE9BQVAsR0FBaUJELFdBQWpCO0FBRUEsTUFBTUUsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUwsV0FBWixDQUFkO0FBRUFMLEVBQUFBLFlBQVksQ0FBQ1csR0FBYixDQUFpQlAsTUFBakIsRUFBeUJHLFNBQXpCO0FBQ0FMLEVBQUFBLFFBQVEsQ0FBQ1MsR0FBVCxDQUFhUCxNQUFiLEVBQXFCSSxLQUFyQjtBQUVBQSxFQUFBQSxLQUFLLENBQUNJLE9BQU4sQ0FBYyxVQUFBQyxHQUFHLEVBQUk7QUFDbkIsUUFBTUMsSUFBSSxHQUFHVCxXQUFXLENBQUNRLEdBQUQsQ0FBeEI7O0FBQ0EsUUFBTUUsSUFBSSxXQUFVRCxJQUFWLENBQVY7O0FBRUEsUUFBSUUsTUFBSjs7QUFFQSxRQUFJRCxJQUFJLEtBQUssVUFBYixFQUF5QjtBQUN2QkMsTUFBQUEsTUFBTSxHQUFHSCxHQUFHLEtBQUssUUFBUixHQUFtQnhCLE1BQU0sQ0FBQ3lCLElBQUQsQ0FBekIsR0FBa0M7QUFBRUcsUUFBQUEsR0FBRyxFQUFFSDtBQUFQLE9BQTNDO0FBQ0QsS0FGRCxNQUVPLElBQUlDLElBQUksS0FBSyxRQUFULElBQXFCRCxJQUFJLEtBQUssSUFBOUIsSUFBc0NJLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxJQUFkLENBQTFDLEVBQStEO0FBQ3BFRSxNQUFBQSxNQUFNLEdBQUc1QixRQUFRLENBQUMwQixJQUFELENBQWpCO0FBQ0QsS0FGTSxNQUVBO0FBQ0xFLE1BQUFBLE1BQU0sR0FBRztBQUNQQyxRQUFBQSxHQUFHLEVBQUVILElBQUksQ0FBQ0csR0FBTCxJQUFZcEIsYUFEVjtBQUVQYyxRQUFBQSxHQUFHLEVBQUVHLElBQUksQ0FBQ0gsR0FBTCxJQUFhLENBQUNHLElBQUksQ0FBQ0csR0FBTixJQUFhcEIsYUFBMUIsSUFBNEN1QixTQUYxQztBQUdQQyxRQUFBQSxPQUFPLEVBQUVQLElBQUksQ0FBQ08sT0FIUDtBQUlQQyxRQUFBQSxPQUFPLEVBQUVSLElBQUksQ0FBQ1E7QUFKUCxPQUFUO0FBTUQ7O0FBRURiLElBQUFBLE1BQU0sQ0FBQ2MsY0FBUCxDQUFzQm5CLE1BQU0sQ0FBQ29CLFNBQTdCLEVBQXdDWCxHQUF4QyxFQUE2QztBQUMzQ0ksTUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsR0FBZTtBQUNsQixlQUFPM0IsS0FBSyxDQUFDMkIsR0FBTixDQUFVLElBQVYsRUFBZ0JKLEdBQWhCLEVBQXFCRyxNQUFNLENBQUNDLEdBQTVCLENBQVA7QUFDRCxPQUgwQztBQUkzQ04sTUFBQUEsR0FBRyxFQUNESyxNQUFNLENBQUNMLEdBQVAsSUFDQSxTQUFTQSxHQUFULENBQWFjLFFBQWIsRUFBdUI7QUFDckJuQyxRQUFBQSxLQUFLLENBQUNxQixHQUFOLENBQVUsSUFBVixFQUFnQkUsR0FBaEIsRUFBcUJHLE1BQU0sQ0FBQ0wsR0FBNUIsRUFBaUNjLFFBQWpDO0FBQ0QsT0FSd0M7QUFTM0NDLE1BQUFBLFVBQVUsRUFBRSxJQVQrQjtBQVUzQ0MsTUFBQUEsWUFBWSxFQUFFbEMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUI7QUFWSSxLQUE3Qzs7QUFhQSxRQUFJcUIsTUFBTSxDQUFDTSxPQUFYLEVBQW9CO0FBQ2xCZixNQUFBQSxTQUFTLENBQUNxQixPQUFWLENBQWtCLFVBQUE5QixJQUFJO0FBQUEsZUFDcEJSLEtBQUssQ0FBQ2dDLE9BQU4sQ0FBY3hCLElBQWQsRUFBb0JlLEdBQXBCLEVBQXlCRyxNQUFNLENBQUNDLEdBQWhDLEVBQXFDRCxNQUFNLENBQUNNLE9BQTVDLENBRG9CO0FBQUEsT0FBdEI7QUFHRDs7QUFFRCxRQUFJTixNQUFNLENBQUNLLE9BQVgsRUFBb0I7QUFDbEJkLE1BQUFBLFNBQVMsQ0FBQ3NCLElBQVYsQ0FBZSxVQUFBL0IsSUFBSTtBQUFBLGVBQ2pCa0IsTUFBTSxDQUFDSyxPQUFQLENBQWV2QixJQUFmLEVBQXFCZSxHQUFyQixFQUEwQixZQUFNO0FBQzlCdkIsVUFBQUEsS0FBSyxDQUFDd0MsVUFBTixDQUFpQmhDLElBQWpCLEVBQXVCZSxHQUF2QjtBQUNELFNBRkQsQ0FEaUI7QUFBQSxPQUFuQjtBQUtEO0FBQ0YsR0E3Q0Q7QUE4Q0Q7O0FBRUQsSUFBSWtCLE1BQUo7QUFDQTs7QUFDQSxJQUFJdEMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsTUFBTXFDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLElBQUQsRUFBT0MsRUFBUCxFQUFjO0FBQ2pDQSxJQUFBQSxFQUFFLENBQUNELElBQUQsQ0FBRjtBQUVBZixJQUFBQSxLQUFLLENBQUNpQixJQUFOLENBQVdGLElBQUksQ0FBQ0csUUFBaEIsRUFBMEJ4QixPQUExQixDQUFrQyxVQUFBeUIsRUFBRTtBQUFBLGFBQUlMLFlBQVksQ0FBQ0ssRUFBRCxFQUFLSCxFQUFMLENBQWhCO0FBQUEsS0FBcEM7O0FBRUEsUUFBSUQsSUFBSSxDQUFDSyxVQUFULEVBQXFCO0FBQ25CcEIsTUFBQUEsS0FBSyxDQUFDaUIsSUFBTixDQUFXRixJQUFJLENBQUNLLFVBQUwsQ0FBZ0JGLFFBQTNCLEVBQXFDeEIsT0FBckMsQ0FBNkMsVUFBQXlCLEVBQUU7QUFBQSxlQUFJTCxZQUFZLENBQUNLLEVBQUQsRUFBS0gsRUFBTCxDQUFoQjtBQUFBLE9BQS9DO0FBQ0Q7QUFDRixHQVJEOztBQVVBLE1BQU1LLFdBQVcsR0FBRyxJQUFJQyxHQUFKLEVBQXBCOztBQUNBVCxFQUFBQSxNQUFNLEdBQUcsZ0JBQUMzQixNQUFELEVBQVNxQyxXQUFULEVBQXlCO0FBQ2hDLFFBQUksQ0FBQ0YsV0FBVyxDQUFDRyxJQUFqQixFQUF1QjtBQUNyQmxELE1BQUFBLFFBQVEsQ0FBQ21ELElBQVQsQ0FBYyxZQUFNO0FBQ2xCWCxRQUFBQSxZQUFZLENBQUNZLFFBQVEsQ0FBQ0MsSUFBVixFQUFnQixVQUFBWixJQUFJLEVBQUk7QUFDbEMsY0FBSU0sV0FBVyxDQUFDTyxHQUFaLENBQWdCYixJQUFJLENBQUNjLFdBQXJCLENBQUosRUFBdUM7QUFDckMsZ0JBQU16QyxPQUFPLEdBQUdpQyxXQUFXLENBQUN0QixHQUFaLENBQWdCZ0IsSUFBSSxDQUFDYyxXQUFyQixDQUFoQjtBQUNBZCxZQUFBQSxJQUFJLENBQUNlLG9CQUFMO0FBRUF2QyxZQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWXVCLElBQUksQ0FBQ2MsV0FBTCxDQUFpQnpDLE9BQTdCLEVBQXNDTSxPQUF0QyxDQUE4QyxVQUFBQyxHQUFHLEVBQUk7QUFDbkR2QixjQUFBQSxLQUFLLENBQUN3QyxVQUFOLENBQ0VHLElBREYsRUFFRXBCLEdBRkYsRUFHRW9CLElBQUksQ0FBQ2MsV0FBTCxDQUFpQnpDLE9BQWpCLENBQXlCTyxHQUF6QixNQUFrQ1AsT0FBTyxDQUFDTyxHQUFELENBSDNDO0FBS0QsYUFORDtBQVFBb0IsWUFBQUEsSUFBSSxDQUFDZ0IsaUJBQUw7QUFDRDtBQUNGLFNBZlcsQ0FBWjtBQWdCQVYsUUFBQUEsV0FBVyxDQUFDVyxLQUFaO0FBQ0QsT0FsQkQ7QUFtQkQ7O0FBQ0RYLElBQUFBLFdBQVcsQ0FBQzVCLEdBQVosQ0FBZ0JQLE1BQWhCLEVBQXdCcUMsV0FBeEI7QUFDRCxHQXZCRDtBQXdCRDs7QUFFRCxJQUFNVSxXQUFXLEdBQUcsSUFBSWxELE9BQUosRUFBcEI7O0FBRUEsU0FBU21ELGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxvQkFBaEMsRUFBc0Q7QUFDcEQsTUFBTXZDLElBQUksV0FBVXVDLG9CQUFWLENBQVY7O0FBQ0EsTUFBSXZDLElBQUksS0FBSyxRQUFULElBQXFCQSxJQUFJLEtBQUssVUFBbEMsRUFBOEM7QUFDNUMsVUFBTXdDLFNBQVMsNERBQXFEeEMsSUFBckQsRUFBZjtBQUNEOztBQUVELE1BQUlzQyxPQUFPLEtBQUssSUFBaEIsRUFBc0I7QUFDcEIsUUFBTUcsYUFBYSxHQUFHQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0J6QyxHQUF0QixDQUEwQm9DLE9BQTFCLENBQXRCOztBQUVBLFFBQUl0QyxJQUFJLEtBQUssVUFBYixFQUF5QjtBQUN2QixVQUFJeUMsYUFBYSxLQUFLRixvQkFBdEIsRUFBNEM7QUFDMUMsZUFBT0csTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2Qk4sT0FBN0IsRUFBc0NDLG9CQUF0QyxDQUFQO0FBQ0Q7O0FBQ0QsYUFBT0UsYUFBUDtBQUNEOztBQUVELFFBQUlBLGFBQUosRUFBbUI7QUFDakIsVUFBSUEsYUFBYSxDQUFDbEQsT0FBZCxLQUEwQmdELG9CQUE5QixFQUFvRDtBQUNsRCxlQUFPRSxhQUFQO0FBQ0Q7O0FBQ0QsVUFBSS9ELE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLElBQXlDNkQsYUFBYSxDQUFDbEQsT0FBM0QsRUFBb0U7QUFDbEVHLFFBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZOEMsYUFBYSxDQUFDbEQsT0FBMUIsRUFBbUNNLE9BQW5DLENBQTJDLFVBQUFDLEdBQUcsRUFBSTtBQUNoRCxpQkFBTzJDLGFBQWEsQ0FBQ2hDLFNBQWQsQ0FBd0JYLEdBQXhCLENBQVA7QUFDRCxTQUZEO0FBSUEsWUFBTTRCLFdBQVcsR0FBR2UsYUFBYSxDQUFDbEQsT0FBbEM7QUFFQUgsUUFBQUEsT0FBTyxDQUFDcUQsYUFBRCxFQUFnQkYsb0JBQWhCLENBQVA7QUFDQXZCLFFBQUFBLE1BQU0sQ0FBQ3lCLGFBQUQsRUFBZ0JmLFdBQWhCLENBQU47QUFFQSxlQUFPZSxhQUFQO0FBQ0Q7O0FBRUQsWUFBTUksS0FBSyxvQkFBYVAsT0FBYix1QkFBWDtBQUNEO0FBQ0Y7O0FBbkNtRCxNQXFDOUNqRCxNQXJDOEM7QUFBQTs7QUFBQTs7QUFzQ2xELHNCQUFjO0FBQUE7O0FBQUE7O0FBQ1o7QUFFQSxVQUFNSSxLQUFLLEdBQUdOLFFBQVEsQ0FBQ2UsR0FBVCxDQUFhYixNQUFiLENBQWQ7O0FBRUEsV0FBSyxJQUFJeUQsS0FBSyxHQUFHLENBQWpCLEVBQW9CQSxLQUFLLEdBQUdyRCxLQUFLLENBQUNzRCxNQUFsQyxFQUEwQ0QsS0FBSyxJQUFJLENBQW5ELEVBQXNEO0FBQ3BELFlBQU1oRCxHQUFHLEdBQUdMLEtBQUssQ0FBQ3FELEtBQUQsQ0FBakI7O0FBQ0EsWUFBSXBELE1BQU0sQ0FBQ2UsU0FBUCxDQUFpQnVDLGNBQWpCLENBQWdDQyxJQUFoQyxnQ0FBMkNuRCxHQUEzQyxDQUFKLEVBQXFEO0FBQ25ELGNBQU1kLEtBQUssR0FBRyxNQUFLYyxHQUFMLENBQWQ7QUFDQSxpQkFBTyxNQUFLQSxHQUFMLENBQVA7QUFDQSxnQkFBS0EsR0FBTCxJQUFZZCxLQUFaO0FBQ0Q7QUFDRjs7QUFaVztBQWFiOztBQW5EaUQ7QUFBQTtBQUFBLDBDQXFEOUI7QUFDbEIsWUFBTVEsU0FBUyxHQUFHUCxZQUFZLENBQUNpQixHQUFiLENBQWlCYixNQUFqQixDQUFsQjtBQUNBLFlBQU02RCxJQUFJLEdBQUcsRUFBYjs7QUFFQSxhQUFLLElBQUlKLEtBQUssR0FBRyxDQUFqQixFQUFvQkEsS0FBSyxHQUFHdEQsU0FBUyxDQUFDdUQsTUFBdEMsRUFBOENELEtBQUssSUFBSSxDQUF2RCxFQUEwRDtBQUN4RCxjQUFNSyxFQUFFLEdBQUczRCxTQUFTLENBQUNzRCxLQUFELENBQVQsQ0FBaUIsSUFBakIsQ0FBWDtBQUNBLGNBQUlLLEVBQUosRUFBUUQsSUFBSSxDQUFDcEMsSUFBTCxDQUFVcUMsRUFBVjtBQUNUOztBQUVEZixRQUFBQSxXQUFXLENBQUN4QyxHQUFaLENBQWdCLElBQWhCLEVBQXNCc0QsSUFBdEI7QUFDRDtBQS9EaUQ7QUFBQTtBQUFBLDZDQWlFM0I7QUFDckIsWUFBTUEsSUFBSSxHQUFHZCxXQUFXLENBQUNsQyxHQUFaLENBQWdCLElBQWhCLENBQWI7O0FBQ0EsYUFBSyxJQUFJNEMsS0FBSyxHQUFHLENBQWpCLEVBQW9CQSxLQUFLLEdBQUdJLElBQUksQ0FBQ0gsTUFBakMsRUFBeUNELEtBQUssSUFBSSxDQUFsRCxFQUFxRDtBQUNuREksVUFBQUEsSUFBSSxDQUFDSixLQUFELENBQUo7QUFDRDtBQUNGO0FBdEVpRDs7QUFBQTtBQUFBLG1DQXFDL0JNLFdBckMrQjs7QUF5RXBEaEUsRUFBQUEsT0FBTyxDQUFDQyxNQUFELEVBQVNrRCxvQkFBVCxDQUFQOztBQUVBLE1BQUlELE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNwQjVDLElBQUFBLE1BQU0sQ0FBQ2MsY0FBUCxDQUFzQm5CLE1BQXRCLEVBQThCLE1BQTlCLEVBQXNDO0FBQ3BDYSxNQUFBQSxHQUFHLEVBQUU7QUFBQSxlQUFNb0MsT0FBTjtBQUFBO0FBRCtCLEtBQXRDO0FBR0FLLElBQUFBLGNBQWMsQ0FBQ0MsTUFBZixDQUFzQk4sT0FBdEIsRUFBK0JqRCxNQUEvQjtBQUNEOztBQUVELFNBQU9BLE1BQVA7QUFDRDs7QUFFRCxTQUFTZ0UsU0FBVCxDQUFtQkMsUUFBbkIsRUFBNkI7QUFDM0IsU0FBTzVELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZMkQsUUFBWixFQUFzQkMsTUFBdEIsQ0FBNkIsVUFBQ0MsR0FBRCxFQUFNMUQsR0FBTixFQUFjO0FBQ2hELFFBQU13QyxPQUFPLEdBQUc5RCxZQUFZLENBQUNzQixHQUFELENBQTVCO0FBQ0EwRCxJQUFBQSxHQUFHLENBQUMxRCxHQUFELENBQUgsR0FBV3VDLGFBQWEsQ0FBQ0MsT0FBRCxFQUFVZ0IsUUFBUSxDQUFDeEQsR0FBRCxDQUFsQixDQUF4QjtBQUVBLFdBQU8wRCxHQUFQO0FBQ0QsR0FMTSxFQUtKLEVBTEksQ0FBUDtBQU1EOztBQUVELGVBQWUsU0FBU1osTUFBVCxHQUF5QjtBQUN0QyxNQUFJLDhEQUFtQixRQUFuQixJQUErQix1REFBWSxJQUEvQyxFQUFxRDtBQUNuRCxXQUFPUyxTQUFTLGtEQUFoQjtBQUNEOztBQUVELFNBQU9oQixhQUFhLE1BQWIsbUJBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9wZXJ0eSBmcm9tIFwiLi9wcm9wZXJ0eS5qc1wiO1xuaW1wb3J0IHJlbmRlciBmcm9tIFwiLi9yZW5kZXIuanNcIjtcblxuaW1wb3J0ICogYXMgY2FjaGUgZnJvbSBcIi4vY2FjaGUuanNcIjtcbmltcG9ydCB7IHBhc2NhbFRvRGFzaCwgZGVmZXJyZWQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudHJ5IHsgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfSBjYXRjaChlKSB7IHZhciBwcm9jZXNzID0geyBlbnY6IHsgTk9ERV9FTlY6ICdwcm9kdWN0aW9uJyB9IH07IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG5jb25zdCBkZWZhdWx0TWV0aG9kID0gKGhvc3QsIHZhbHVlKSA9PiB2YWx1ZTtcblxuY29uc3QgY2FsbGJhY2tzTWFwID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IHByb3BzTWFwID0gbmV3IFdlYWtNYXAoKTtcblxuZnVuY3Rpb24gY29tcGlsZShIeWJyaWQsIGRlc2NyaXB0b3JzKSB7XG4gIEh5YnJpZC5oeWJyaWRzID0gZGVzY3JpcHRvcnM7XG5cbiAgY29uc3QgY2FsbGJhY2tzID0gW107XG4gIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMoZGVzY3JpcHRvcnMpO1xuXG4gIGNhbGxiYWNrc01hcC5zZXQoSHlicmlkLCBjYWxsYmFja3MpO1xuICBwcm9wc01hcC5zZXQoSHlicmlkLCBwcm9wcyk7XG5cbiAgcHJvcHMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGRlc2MgPSBkZXNjcmlwdG9yc1trZXldO1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgZGVzYztcblxuICAgIGxldCBjb25maWc7XG5cbiAgICBpZiAodHlwZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25maWcgPSBrZXkgPT09IFwicmVuZGVyXCIgPyByZW5kZXIoZGVzYykgOiB7IGdldDogZGVzYyB9O1xuICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gXCJvYmplY3RcIiB8fCBkZXNjID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoZGVzYykpIHtcbiAgICAgIGNvbmZpZyA9IHByb3BlcnR5KGRlc2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcgPSB7XG4gICAgICAgIGdldDogZGVzYy5nZXQgfHwgZGVmYXVsdE1ldGhvZCxcbiAgICAgICAgc2V0OiBkZXNjLnNldCB8fCAoIWRlc2MuZ2V0ICYmIGRlZmF1bHRNZXRob2QpIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgY29ubmVjdDogZGVzYy5jb25uZWN0LFxuICAgICAgICBvYnNlcnZlOiBkZXNjLm9ic2VydmUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIeWJyaWQucHJvdG90eXBlLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KHRoaXMsIGtleSwgY29uZmlnLmdldCk7XG4gICAgICB9LFxuICAgICAgc2V0OlxuICAgICAgICBjb25maWcuc2V0ICYmXG4gICAgICAgIGZ1bmN0aW9uIHNldChuZXdWYWx1ZSkge1xuICAgICAgICAgIGNhY2hlLnNldCh0aGlzLCBrZXksIGNvbmZpZy5zZXQsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIixcbiAgICB9KTtcblxuICAgIGlmIChjb25maWcub2JzZXJ2ZSkge1xuICAgICAgY2FsbGJhY2tzLnVuc2hpZnQoaG9zdCA9PlxuICAgICAgICBjYWNoZS5vYnNlcnZlKGhvc3QsIGtleSwgY29uZmlnLmdldCwgY29uZmlnLm9ic2VydmUpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNvbm5lY3QpIHtcbiAgICAgIGNhbGxiYWNrcy5wdXNoKGhvc3QgPT5cbiAgICAgICAgY29uZmlnLmNvbm5lY3QoaG9zdCwga2V5LCAoKSA9PiB7XG4gICAgICAgICAgY2FjaGUuaW52YWxpZGF0ZShob3N0LCBrZXkpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbn1cblxubGV0IHVwZGF0ZTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIGNvbnN0IHdhbGtJblNoYWRvdyA9IChub2RlLCBmbikgPT4ge1xuICAgIGZuKG5vZGUpO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKS5mb3JFYWNoKGVsID0+IHdhbGtJblNoYWRvdyhlbCwgZm4pKTtcblxuICAgIGlmIChub2RlLnNoYWRvd1Jvb3QpIHtcbiAgICAgIEFycmF5LmZyb20obm9kZS5zaGFkb3dSb290LmNoaWxkcmVuKS5mb3JFYWNoKGVsID0+IHdhbGtJblNoYWRvdyhlbCwgZm4pKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlUXVldWUgPSBuZXcgTWFwKCk7XG4gIHVwZGF0ZSA9IChIeWJyaWQsIGxhc3RIeWJyaWRzKSA9PiB7XG4gICAgaWYgKCF1cGRhdGVRdWV1ZS5zaXplKSB7XG4gICAgICBkZWZlcnJlZC50aGVuKCgpID0+IHtcbiAgICAgICAgd2Fsa0luU2hhZG93KGRvY3VtZW50LmJvZHksIG5vZGUgPT4ge1xuICAgICAgICAgIGlmICh1cGRhdGVRdWV1ZS5oYXMobm9kZS5jb25zdHJ1Y3RvcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGh5YnJpZHMgPSB1cGRhdGVRdWV1ZS5nZXQobm9kZS5jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICBub2RlLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG5vZGUuY29uc3RydWN0b3IuaHlicmlkcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICBjYWNoZS5pbnZhbGlkYXRlKFxuICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIG5vZGUuY29uc3RydWN0b3IuaHlicmlkc1trZXldICE9PSBoeWJyaWRzW2tleV0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbm9kZS5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHVwZGF0ZVF1ZXVlLmNsZWFyKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdXBkYXRlUXVldWUuc2V0KEh5YnJpZCwgbGFzdEh5YnJpZHMpO1xuICB9O1xufVxuXG5jb25zdCBkaXNjb25uZWN0cyA9IG5ldyBXZWFrTWFwKCk7XG5cbmZ1bmN0aW9uIGRlZmluZUVsZW1lbnQodGFnTmFtZSwgaHlicmlkc09yQ29uc3RydWN0b3IpIHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBoeWJyaWRzT3JDb25zdHJ1Y3RvcjtcbiAgaWYgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKGBTZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbjogJHt0eXBlfWApO1xuICB9XG5cbiAgaWYgKHRhZ05hbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBDdXN0b21FbGVtZW50ID0gd2luZG93LmN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKTtcblxuICAgIGlmICh0eXBlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGlmIChDdXN0b21FbGVtZW50ICE9PSBoeWJyaWRzT3JDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBoeWJyaWRzT3JDb25zdHJ1Y3Rvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ3VzdG9tRWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAoQ3VzdG9tRWxlbWVudCkge1xuICAgICAgaWYgKEN1c3RvbUVsZW1lbnQuaHlicmlkcyA9PT0gaHlicmlkc09yQ29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiICYmIEN1c3RvbUVsZW1lbnQuaHlicmlkcykge1xuICAgICAgICBPYmplY3Qua2V5cyhDdXN0b21FbGVtZW50Lmh5YnJpZHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBkZWxldGUgQ3VzdG9tRWxlbWVudC5wcm90b3R5cGVba2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGFzdEh5YnJpZHMgPSBDdXN0b21FbGVtZW50Lmh5YnJpZHM7XG5cbiAgICAgICAgY29tcGlsZShDdXN0b21FbGVtZW50LCBoeWJyaWRzT3JDb25zdHJ1Y3Rvcik7XG4gICAgICAgIHVwZGF0ZShDdXN0b21FbGVtZW50LCBsYXN0SHlicmlkcyk7XG5cbiAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRocm93IEVycm9yKGBFbGVtZW50ICcke3RhZ05hbWV9JyBhbHJlYWR5IGRlZmluZWRgKTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBIeWJyaWQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuXG4gICAgICBjb25zdCBwcm9wcyA9IHByb3BzTWFwLmdldChIeWJyaWQpO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcHJvcHMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHByb3BzW2luZGV4XTtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLCBrZXkpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tleV07XG4gICAgICAgICAgZGVsZXRlIHRoaXNba2V5XTtcbiAgICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgY29uc3QgY2FsbGJhY2tzID0gY2FsbGJhY2tzTWFwLmdldChIeWJyaWQpO1xuICAgICAgY29uc3QgbGlzdCA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2FsbGJhY2tzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICBjb25zdCBjYiA9IGNhbGxiYWNrc1tpbmRleF0odGhpcyk7XG4gICAgICAgIGlmIChjYikgbGlzdC5wdXNoKGNiKTtcbiAgICAgIH1cblxuICAgICAgZGlzY29ubmVjdHMuc2V0KHRoaXMsIGxpc3QpO1xuICAgIH1cblxuICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgY29uc3QgbGlzdCA9IGRpc2Nvbm5lY3RzLmdldCh0aGlzKTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaXN0Lmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICBsaXN0W2luZGV4XSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbXBpbGUoSHlicmlkLCBoeWJyaWRzT3JDb25zdHJ1Y3Rvcik7XG5cbiAgaWYgKHRhZ05hbWUgIT09IG51bGwpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSHlicmlkLCBcIm5hbWVcIiwge1xuICAgICAgZ2V0OiAoKSA9PiB0YWdOYW1lLFxuICAgIH0pO1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBIeWJyaWQpO1xuICB9XG5cbiAgcmV0dXJuIEh5YnJpZDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lTWFwKGVsZW1lbnRzKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhlbGVtZW50cykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgIGNvbnN0IHRhZ05hbWUgPSBwYXNjYWxUb0Rhc2goa2V5KTtcbiAgICBhY2Nba2V5XSA9IGRlZmluZUVsZW1lbnQodGFnTmFtZSwgZWxlbWVudHNba2V5XSk7XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmluZSguLi5hcmdzKSB7XG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJvYmplY3RcIiAmJiBhcmdzWzBdICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGRlZmluZU1hcChhcmdzWzBdKTtcbiAgfVxuXG4gIHJldHVybiBkZWZpbmVFbGVtZW50KC4uLmFyZ3MpO1xufVxuIl19","var map = new WeakMap();\nexport var dataMap = {\n get: function get(key, defaultValue) {\n var value = map.get(key);\n if (value) return value;\n\n if (defaultValue) {\n map.set(key, defaultValue);\n }\n\n return defaultValue;\n },\n set: function set(key, value) {\n map.set(key, value);\n return value;\n }\n};\nexport function getTemplateEnd(node) {\n var data; // eslint-disable-next-line no-cond-assign\n\n while (node && (data = dataMap.get(node)) && data.endNode) {\n node = data.endNode;\n }\n\n return node;\n}\nexport function removeTemplate(target) {\n if (target.nodeType !== Node.TEXT_NODE) {\n var child = target.childNodes[0];\n\n while (child) {\n target.removeChild(child);\n child = target.childNodes[0];\n }\n } else {\n var data = dataMap.get(target);\n\n if (data.startNode) {\n var endNode = getTemplateEnd(data.endNode);\n var node = data.startNode;\n var lastNextSibling = endNode.nextSibling;\n\n while (node) {\n var nextSibling = node.nextSibling;\n node.parentNode.removeChild(node);\n node = nextSibling !== lastNextSibling && nextSibling;\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS91dGlscy5qcyJdLCJuYW1lcyI6WyJtYXAiLCJXZWFrTWFwIiwiZGF0YU1hcCIsImdldCIsImtleSIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwic2V0IiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImNoaWxkIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwic3RhcnROb2RlIiwibGFzdE5leHRTaWJsaW5nIiwibmV4dFNpYmxpbmciLCJwYXJlbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxHQUFHLEdBQUcsSUFBSUMsT0FBSixFQUFaO0FBQ0EsT0FBTyxJQUFNQyxPQUFPLEdBQUc7QUFDckJDLEVBQUFBLEdBRHFCLGVBQ2pCQyxHQURpQixFQUNaQyxZQURZLEVBQ0U7QUFDckIsUUFBTUMsS0FBSyxHQUFHTixHQUFHLENBQUNHLEdBQUosQ0FBUUMsR0FBUixDQUFkO0FBQ0EsUUFBSUUsS0FBSixFQUFXLE9BQU9BLEtBQVA7O0FBRVgsUUFBSUQsWUFBSixFQUFrQjtBQUNoQkwsTUFBQUEsR0FBRyxDQUFDTyxHQUFKLENBQVFILEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELFdBQU9BLFlBQVA7QUFDRCxHQVZvQjtBQVdyQkUsRUFBQUEsR0FYcUIsZUFXakJILEdBWGlCLEVBV1pFLEtBWFksRUFXTDtBQUNkTixJQUFBQSxHQUFHLENBQUNPLEdBQUosQ0FBUUgsR0FBUixFQUFhRSxLQUFiO0FBQ0EsV0FBT0EsS0FBUDtBQUNEO0FBZG9CLENBQWhCO0FBaUJQLE9BQU8sU0FBU0UsY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFDbkMsTUFBSUMsSUFBSixDQURtQyxDQUVuQzs7QUFDQSxTQUFPRCxJQUFJLEtBQUtDLElBQUksR0FBR1IsT0FBTyxDQUFDQyxHQUFSLENBQVlNLElBQVosQ0FBWixDQUFKLElBQXNDQyxJQUFJLENBQUNDLE9BQWxELEVBQTJEO0FBQ3pERixJQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsT0FBWjtBQUNEOztBQUVELFNBQU9GLElBQVA7QUFDRDtBQUVELE9BQU8sU0FBU0csY0FBVCxDQUF3QkMsTUFBeEIsRUFBZ0M7QUFDckMsTUFBSUEsTUFBTSxDQUFDQyxRQUFQLEtBQW9CQyxJQUFJLENBQUNDLFNBQTdCLEVBQXdDO0FBQ3RDLFFBQUlDLEtBQUssR0FBR0osTUFBTSxDQUFDSyxVQUFQLENBQWtCLENBQWxCLENBQVo7O0FBQ0EsV0FBT0QsS0FBUCxFQUFjO0FBQ1pKLE1BQUFBLE1BQU0sQ0FBQ00sV0FBUCxDQUFtQkYsS0FBbkI7QUFDQUEsTUFBQUEsS0FBSyxHQUFHSixNQUFNLENBQUNLLFVBQVAsQ0FBa0IsQ0FBbEIsQ0FBUjtBQUNEO0FBQ0YsR0FORCxNQU1PO0FBQ0wsUUFBTVIsSUFBSSxHQUFHUixPQUFPLENBQUNDLEdBQVIsQ0FBWVUsTUFBWixDQUFiOztBQUVBLFFBQUlILElBQUksQ0FBQ1UsU0FBVCxFQUFvQjtBQUNsQixVQUFNVCxPQUFPLEdBQUdILGNBQWMsQ0FBQ0UsSUFBSSxDQUFDQyxPQUFOLENBQTlCO0FBRUEsVUFBSUYsSUFBSSxHQUFHQyxJQUFJLENBQUNVLFNBQWhCO0FBQ0EsVUFBTUMsZUFBZSxHQUFHVixPQUFPLENBQUNXLFdBQWhDOztBQUVBLGFBQU9iLElBQVAsRUFBYTtBQUNYLFlBQU1hLFdBQVcsR0FBR2IsSUFBSSxDQUFDYSxXQUF6QjtBQUNBYixRQUFBQSxJQUFJLENBQUNjLFVBQUwsQ0FBZ0JKLFdBQWhCLENBQTRCVixJQUE1QjtBQUNBQSxRQUFBQSxJQUFJLEdBQUdhLFdBQVcsS0FBS0QsZUFBaEIsSUFBbUNDLFdBQTFDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IGRhdGFNYXAgPSB7XG4gIGdldChrZXksIGRlZmF1bHRWYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlID0gbWFwLmdldChrZXkpO1xuICAgIGlmICh2YWx1ZSkgcmV0dXJuIHZhbHVlO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgbWFwLnNldChrZXksIGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfSxcbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wbGF0ZUVuZChub2RlKSB7XG4gIGxldCBkYXRhO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgJiYgKGRhdGEgPSBkYXRhTWFwLmdldChub2RlKSkgJiYgZGF0YS5lbmROb2RlKSB7XG4gICAgbm9kZSA9IGRhdGEuZW5kTm9kZTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KSB7XG4gIGlmICh0YXJnZXQubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgbGV0IGNoaWxkID0gdGFyZ2V0LmNoaWxkTm9kZXNbMF07XG4gICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgY2hpbGQgPSB0YXJnZXQuY2hpbGROb2Rlc1swXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG5cbiAgICBpZiAoZGF0YS5zdGFydE5vZGUpIHtcbiAgICAgIGNvbnN0IGVuZE5vZGUgPSBnZXRUZW1wbGF0ZUVuZChkYXRhLmVuZE5vZGUpO1xuXG4gICAgICBsZXQgbm9kZSA9IGRhdGEuc3RhcnROb2RlO1xuICAgICAgY29uc3QgbGFzdE5leHRTaWJsaW5nID0gZW5kTm9kZS5uZXh0U2libGluZztcblxuICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBuZXh0U2libGluZyAhPT0gbGFzdE5leHRTaWJsaW5nICYmIG5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { dataMap, removeTemplate, getTemplateEnd } from \"../utils.js\";\nexport var arrayMap = new WeakMap();\n\nfunction movePlaceholder(target, previousSibling) {\n var data = dataMap.get(target);\n var startNode = data.startNode;\n var endNode = getTemplateEnd(data.endNode);\n previousSibling.parentNode.insertBefore(target, previousSibling.nextSibling);\n var prevNode = target;\n var node = startNode;\n\n while (node) {\n var nextNode = node.nextSibling;\n prevNode.parentNode.insertBefore(node, prevNode.nextSibling);\n prevNode = node;\n node = nextNode !== endNode.nextSibling && nextNode;\n }\n}\n\nexport default function resolveArray(host, target, value, resolveValue) {\n var lastEntries = arrayMap.get(target);\n var entries = value.map(function (item, index) {\n return {\n id: Object.prototype.hasOwnProperty.call(item, \"id\") ? item.id : index,\n value: item,\n placeholder: null,\n available: true\n };\n });\n arrayMap.set(target, entries);\n\n if (lastEntries) {\n var ids = new Set();\n entries.forEach(function (entry) {\n return ids.add(entry.id);\n });\n lastEntries = lastEntries.filter(function (entry) {\n if (!ids.has(entry.id)) {\n removeTemplate(entry.placeholder);\n entry.placeholder.parentNode.removeChild(entry.placeholder);\n return false;\n }\n\n return true;\n });\n }\n\n var previousSibling = target;\n var lastIndex = value.length - 1;\n var data = dataMap.get(target);\n\n for (var index = 0; index < entries.length; index += 1) {\n var entry = entries[index];\n var matchedEntry = void 0;\n\n if (lastEntries) {\n for (var i = 0; i < lastEntries.length; i += 1) {\n if (lastEntries[i].available && lastEntries[i].id === entry.id) {\n matchedEntry = lastEntries[i];\n break;\n }\n }\n }\n\n if (matchedEntry) {\n matchedEntry.available = false;\n entry.placeholder = matchedEntry.placeholder;\n\n if (entry.placeholder.previousSibling !== previousSibling) {\n movePlaceholder(entry.placeholder, previousSibling);\n }\n\n if (matchedEntry.value !== entry.value) {\n resolveValue(host, entry.placeholder, entry.value);\n }\n } else {\n entry.placeholder = document.createTextNode(\"\");\n previousSibling.parentNode.insertBefore(entry.placeholder, previousSibling.nextSibling);\n resolveValue(host, entry.placeholder, entry.value);\n }\n\n previousSibling = getTemplateEnd(dataMap.get(entry.placeholder).endNode || entry.placeholder);\n if (index === 0) data.startNode = entry.placeholder;\n if (index === lastIndex) data.endNode = previousSibling;\n }\n\n if (lastEntries) {\n lastEntries.forEach(function (entry) {\n if (entry.available) {\n removeTemplate(entry.placeholder);\n entry.placeholder.parentNode.removeChild(entry.placeholder);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvYXJyYXkuanMiXSwibmFtZXMiOlsiZGF0YU1hcCIsInJlbW92ZVRlbXBsYXRlIiwiZ2V0VGVtcGxhdGVFbmQiLCJhcnJheU1hcCIsIldlYWtNYXAiLCJtb3ZlUGxhY2Vob2xkZXIiLCJ0YXJnZXQiLCJwcmV2aW91c1NpYmxpbmciLCJkYXRhIiwiZ2V0Iiwic3RhcnROb2RlIiwiZW5kTm9kZSIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsInByZXZOb2RlIiwibm9kZSIsIm5leHROb2RlIiwicmVzb2x2ZUFycmF5IiwiaG9zdCIsInZhbHVlIiwicmVzb2x2ZVZhbHVlIiwibGFzdEVudHJpZXMiLCJlbnRyaWVzIiwibWFwIiwiaXRlbSIsImluZGV4IiwiaWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwbGFjZWhvbGRlciIsImF2YWlsYWJsZSIsInNldCIsImlkcyIsIlNldCIsImZvckVhY2giLCJlbnRyeSIsImFkZCIsImZpbHRlciIsImhhcyIsInJlbW92ZUNoaWxkIiwibGFzdEluZGV4IiwibGVuZ3RoIiwibWF0Y2hlZEVudHJ5IiwiaSIsImRvY3VtZW50IiwiY3JlYXRlVGV4dE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQVQsRUFBa0JDLGNBQWxCLEVBQWtDQyxjQUFsQyxRQUF3RCxhQUF4RDtBQUVBLE9BQU8sSUFBTUMsUUFBUSxHQUFHLElBQUlDLE9BQUosRUFBakI7O0FBRVAsU0FBU0MsZUFBVCxDQUF5QkMsTUFBekIsRUFBaUNDLGVBQWpDLEVBQWtEO0FBQ2hELE1BQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDUyxHQUFSLENBQVlILE1BQVosQ0FBYjtBQUNBLE1BQU1JLFNBQVMsR0FBR0YsSUFBSSxDQUFDRSxTQUF2QjtBQUNBLE1BQU1DLE9BQU8sR0FBR1QsY0FBYyxDQUFDTSxJQUFJLENBQUNHLE9BQU4s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QUNOLFdBQWxCLEVBQStCckIsT0FBL0IsSUFBMEMyQixLQUFLLENBQUNOLFdBRGxCLENBQWhDO0FBSUEsUUFBSU4sS0FBSyxLQUFLLENBQWQsRUFBaUJsQixJQUFJLENBQUNFLFNBQUwsR0FBaUI0QixLQUFLLENBQUNOLFdBQXZCO0FBQ2pCLFFBQUlOLEtBQUssS0FBS2lCLFNBQWQsRUFBeUJuQyxJQUFJLENBQUNHLE9BQUwsR0FBZUosZUFBZjtBQUMxQjs7QUFFRCxNQUFJZSxXQUFKLEVBQWlCO0FBQ2ZBLElBQUFBLFdBQVcsQ0FBQ2UsT0FBWixDQUFvQixVQUFBQyxLQUFLLEVBQUk7QUFDM0IsVUFBSUEsS0FBSyxDQUFDTCxTQUFWLEVBQXFCO0FBQ25CaEMsUUFBQUEsY0FBYyxDQUFDcUMsS0FBSyxDQUFDTixXQUFQLENBQWQ7QUFDQU0sUUFBQUEsS0FBSyxDQUFDTixXQUFOLENBQWtCcEIsVUFBbEIsQ0FBNkI4QixXQUE3QixDQUF5Q0osS0FBSyxDQUFDTixXQUEvQztBQUNEO0FBQ0YsS0FMRDtBQU1EO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkYXRhTWFwLCByZW1vdmVUZW1wbGF0ZSwgZ2V0VGVtcGxhdGVFbmQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IGFycmF5TWFwID0gbmV3IFdlYWtNYXAoKTtcblxuZnVuY3Rpb24gbW92ZVBsYWNlaG9sZGVyKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nKSB7XG4gIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCBzdGFydE5vZGUgPSBkYXRhLnN0YXJ0Tm9kZTtcbiAgY29uc3QgZW5kTm9kZSA9IGdldFRlbXBsYXRlRW5kKGRhdGEuZW5kTm9kZSk7XG5cbiAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nKTtcblxuICBsZXQgcHJldk5vZGUgPSB0YXJnZXQ7XG4gIGxldCBub2RlID0gc3RhcnROb2RlO1xuICB3aGlsZSAobm9kZSkge1xuICAgIGNvbnN0IG5leHROb2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwcmV2Tm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBwcmV2Tm9kZS5uZXh0U2libGluZyk7XG4gICAgcHJldk5vZGUgPSBub2RlO1xuICAgIG5vZGUgPSBuZXh0Tm9kZSAhPT0gZW5kTm9kZS5uZXh0U2libGluZyAmJiBuZXh0Tm9kZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXNvbHZlQXJyYXkoaG9zdCwgdGFyZ2V0LCB2YWx1ZSwgcmVzb2x2ZVZhbHVlKSB7XG4gIGxldCBsYXN0RW50cmllcyA9IGFycmF5TWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCBlbnRyaWVzID0gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICBpZDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGl0ZW0sIFwiaWRcIikgPyBpdGVtLmlkIDogaW5kZXgsXG4gICAgdmFsdWU6IGl0ZW0sXG4gICAgcGxhY2Vob2xkZXI6IG51bGwsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICB9KSk7XG5cbiAgYXJyYXlNYXAuc2V0KHRhcmdldCwgZW50cmllcyk7XG5cbiAgaWYgKGxhc3RFbnRyaWVzKSB7XG4gICAgY29uc3QgaWRzID0gbmV3IFNldCgpO1xuICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiBpZHMuYWRkKGVudHJ5LmlkKSk7XG5cbiAgICBsYXN0RW50cmllcyA9IGxhc3RFbnRyaWVzLmZpbHRlcihlbnRyeSA9PiB7XG4gICAgICBpZiAoIWlkcy5oYXMoZW50cnkuaWQpKSB7XG4gICAgICAgIHJlbW92ZVRlbXBsYXRlKGVudHJ5LnBsYWNlaG9sZGVyKTtcbiAgICAgICAgZW50cnkucGxhY2Vob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbnRyeS5wbGFjZWhvbGRlcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGFyZ2V0O1xuICBjb25zdCBsYXN0SW5kZXggPSB2YWx1ZS5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIGxldCBtYXRjaGVkRW50cnk7XG4gICAgaWYgKGxhc3RFbnRyaWVzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3RFbnRyaWVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChsYXN0RW50cmllc1tpXS5hdmFpbGFibGUgJiYgbGFzdEVudHJpZXNbaV0uaWQgPT09IGVudHJ5LmlkKSB7XG4gICAgICAgICAgbWF0Y2hlZEVudHJ5ID0gbGFzdEVudHJpZXNbaV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2hlZEVudHJ5KSB7XG4gICAgICBtYXRjaGVkRW50cnkuYXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICBlbnRyeS5wbGFjZWhvbGRlciA9IG1hdGNoZWRFbnRyeS5wbGFjZWhvbGRlcjtcblxuICAgICAgaWYgKGVudHJ5LnBsYWNlaG9sZGVyLnByZXZpb3VzU2libGluZyAhPT0gcHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG1vdmVQbGFjZWhvbGRlcihlbnRyeS5wbGFjZWhvbGRlciwgcHJldmlvdXNTaWJsaW5nKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaGVkRW50cnkudmFsdWUgIT09IGVudHJ5LnZhbHVlKSB7XG4gICAgICAgIHJlc29sdmVWYWx1ZShob3N0LCBlbnRyeS5wbGFjZWhvbGRlciwgZW50cnkudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbnRyeS5wbGFjZWhvbGRlciA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xuICAgICAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKFxuICAgICAgICBlbnRyeS5wbGFjZWhvbGRlcixcbiAgICAgICAgcHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nLFxuICAgICAgKTtcbiAgICAgIHJlc29sdmVWYWx1ZShob3N0LCBlbnRyeS5wbGFjZWhvbGRlciwgZW50cnkudmFsdWUpO1xuICAgIH1cblxuICAgIHByZXZpb3VzU2libGluZyA9IGdldFRlbXBsYXRlRW5kKFxuICAgICAgZGF0YU1hcC5nZXQoZW50cnkucGxhY2Vob2xkZXIpLmVuZE5vZGUgfHwgZW50cnkucGxhY2Vob2xkZXIsXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA9PT0gMCkgZGF0YS5zdGFydE5vZGUgPSBlbnRyeS5wbGFjZWhvbGRlcjtcbiAgICBpZiAoaW5kZXggPT09IGxhc3RJbmRleCkgZGF0YS5lbmROb2RlID0gcHJldmlvdXNTaWJsaW5nO1xuICB9XG5cbiAgaWYgKGxhc3RFbnRyaWVzKSB7XG4gICAgbGFzdEVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICBpZiAoZW50cnkuYXZhaWxhYmxlKSB7XG4gICAgICAgIHJlbW92ZVRlbXBsYXRlKGVudHJ5LnBsYWNlaG9sZGVyKTtcbiAgICAgICAgZW50cnkucGxhY2Vob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbnRyeS5wbGFjZWhvbGRlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { dataMap, removeTemplate } from \"../utils.js\";\nimport resolveArray, { arrayMap } from \"./array.js\";\nexport default function resolveValue(host, target, value) {\n var type = Array.isArray(value) ? \"array\" : _typeof(value);\n var data = dataMap.get(target, {});\n\n if (data.type !== type) {\n removeTemplate(target);\n if (type === \"array\") arrayMap.delete(target);\n data = dataMap.set(target, {\n type: type\n });\n\n if (target.textContent !== \"\") {\n target.textContent = \"\";\n }\n }\n\n switch (type) {\n case \"function\":\n value(host, target);\n break;\n\n case \"array\":\n resolveArray(host, target, value, resolveValue);\n break;\n\n default:\n target.textContent = type === \"number\" || value ? value : \"\";\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvdmFsdWUuanMiXSwibmFtZXMiOlsiZGF0YU1hcCIsInJlbW92ZVRlbXBsYXRlIiwicmVzb2x2ZUFycmF5IiwiYXJyYXlNYXAiLCJyZXNvbHZlVmFsdWUiLCJob3N0IiwidGFyZ2V0IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiZGF0YSIsImdldCIsImRlbGV0ZSIsInNldCIsInRleHRDb250ZW50Il0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLE9BQVQsRUFBa0JDLGNBQWxCLFFBQXdDLGFBQXhDO0FBQ0EsT0FBT0MsWUFBUCxJQUF1QkMsUUFBdkIsUUFBdUMsWUFBdkM7QUFFQSxlQUFlLFNBQVNDLFlBQVQsQ0FBc0JDLElBQXRCLEVBQTRCQyxNQUE1QixFQUFvQ0MsS0FBcEMsRUFBMkM7QUFDeEQsTUFBTUMsSUFBSSxHQUFHQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsS0FBZCxJQUF1QixPQUF2QixXQUF3Q0EsS0FBeEMsQ0FBYjtBQUNBLE1BQUlJLElBQUksR0FBR1gsT0FBTyxDQUFDWSxHQUFSLENBQVlOLE1BQVosRUFBb0IsRUFBcEIsQ0FBWDs7QUFFQSxNQUFJSyxJQUFJLENBQUNILElBQUwsS0FBY0EsSUFBbEIsRUFBd0I7QUFDdEJQLElBQUFBLGNBQWMsQ0FBQ0ssTUFBRCxDQUFkO0FBQ0EsUUFBSUUsSUFBSSxLQUFLLE9BQWIsRUFBc0JMLFFBQVEsQ0FBQ1UsTUFBVCxDQUFnQlAsTUFBaEI7QUFFdEJLLElBQUFBLElBQUksR0FBR1gsT0FBTyxDQUFDYyxHQUFSLENBQVlSLE1BQVosRUFBb0I7QUFBRUUsTUFBQUEsSUFBSSxFQUFKQTtBQUFGLEtBQXBCLENBQVA7O0FBRUEsUUFBSUYsTUFBTSxDQUFDUyxXQUFQLEtBQXVCLEVBQTNCLEVBQStCO0FBQzdCVCxNQUFBQSxNQUFNLENBQUNTLFdBQVAsR0FBcUIsRUFBckI7QUFDRDtBQUNGOztBQUVELFVBQVFQLElBQVI7QUFDRSxTQUFLLFVBQUw7QUFDRUQsTUFBQUEsS0FBSyxDQUFDRixJQUFELEVBQU9DLE1BQVAsQ0FBTDtBQUNBOztBQUNGLFNBQUssT0FBTDtBQUNFSixNQUFBQSxZQUFZLENBQUNHLElBQUQsRUFBT0MsTUFBUCxFQUFlQyxLQUFmLEVBQXNCSCxZQUF0QixDQUFaO0FBQ0E7O0FBQ0Y7QUFDRUUsTUFBQUEsTUFBTSxDQUFDUyxXQUFQLEdBQXFCUCxJQUFJLEtBQUssUUFBVCxJQUFxQkQsS0FBckIsR0FBNkJBLEtBQTdCLEdBQXFDLEVBQTFEO0FBUko7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRhdGFNYXAsIHJlbW92ZVRlbXBsYXRlIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgcmVzb2x2ZUFycmF5LCB7IGFycmF5TWFwIH0gZnJvbSBcIi4vYXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKGhvc3QsIHRhcmdldCwgdmFsdWUpIHtcbiAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gXCJhcnJheVwiIDogdHlwZW9mIHZhbHVlO1xuICBsZXQgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCwge30pO1xuXG4gIGlmIChkYXRhLnR5cGUgIT09IHR5cGUpIHtcbiAgICByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpO1xuICAgIGlmICh0eXBlID09PSBcImFycmF5XCIpIGFycmF5TWFwLmRlbGV0ZSh0YXJnZXQpO1xuXG4gICAgZGF0YSA9IGRhdGFNYXAuc2V0KHRhcmdldCwgeyB0eXBlIH0pO1xuXG4gICAgaWYgKHRhcmdldC50ZXh0Q29udGVudCAhPT0gXCJcIikge1xuICAgICAgdGFyZ2V0LnRleHRDb250ZW50ID0gXCJcIjtcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHZhbHVlKGhvc3QsIHRhcmdldCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgIHJlc29sdmVBcnJheShob3N0LCB0YXJnZXQsIHZhbHVlLCByZXNvbHZlVmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRhcmdldC50ZXh0Q29udGVudCA9IHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdmFsdWUgPyB2YWx1ZSA6IFwiXCI7XG4gIH1cbn1cbiJdfQ==","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar targets = new WeakMap();\nexport default function resolveEventListener(eventType) {\n return function (host, target, value, lastValue) {\n if (lastValue) {\n var eventMap = targets.get(target);\n\n if (eventMap) {\n target.removeEventListener(eventType, eventMap.get(lastValue), lastValue.options !== undefined ? lastValue.options : false);\n }\n }\n\n if (value) {\n if (typeof value !== \"function\") {\n throw Error(\"Event listener must be a function: \".concat(_typeof(value)));\n }\n\n var _eventMap = targets.get(target);\n\n if (!_eventMap) {\n _eventMap = new WeakMap();\n targets.set(target, _eventMap);\n }\n\n var callback = value.bind(null, host);\n\n _eventMap.set(value, callback);\n\n target.addEventListener(eventType, callback, value.options !== undefined ? value.options : false);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvZXZlbnQuanMiXSwibmFtZXMiOlsidGFyZ2V0cyIsIldlYWtNYXAiLCJyZXNvbHZlRXZlbnRMaXN0ZW5lciIsImV2ZW50VHlwZSIsImhvc3QiLCJ0YXJnZXQiLCJ2YWx1ZSIsImxhc3RWYWx1ZSIsImV2ZW50TWFwIiwiZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJFcnJvciIsInNldCIsImNhbGxiYWNrIiwiYmluZCIsImFkZEV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBTUEsT0FBTyxHQUFHLElBQUlDLE9BQUosRUFBaEI7QUFFQSxlQUFlLFNBQVNDLG9CQUFULENBQThCQyxTQUE5QixFQUF5QztBQUN0RCxTQUFPLFVBQUNDLElBQUQsRUFBT0MsTUFBUCxFQUFlQyxLQUFmLEVBQXNCQyxTQUF0QixFQUFvQztBQUN6QyxRQUFJQSxTQUFKLEVBQWU7QUFDYixVQUFNQyxRQUFRLEdBQUdSLE9BQU8sQ0FBQ1MsR0FBUixDQUFZSixNQUFaLENBQWpCOztBQUNBLFVBQUlHLFFBQUosRUFBYztBQUNaSCxRQUFBQSxNQUFNLENBQUNLLG1CQUFQLENBQ0VQLFNBREYsRUFFRUssUUFBUSxDQUFDQyxHQUFULENBQWFGLFNBQWIsQ0FGRixFQUdFQSxTQUFTLENBQUNJLE9BQVYsS0FBc0JDLFNBQXRCLEdBQWtDTCxTQUFTLENBQUNJLE9BQTVDLEdBQXNELEtBSHhEO0FBS0Q7QUFDRjs7QUFFRCxRQUFJTCxLQUFKLEVBQVc7QUFDVCxVQUFJLE9BQU9BLEtBQVAsS0FBaUIsVUFBckIsRUFBaUM7QUFDL0IsY0FBTU8sS0FBSyxzREFBOENQLEtBQTlDLEdBQVg7QUFDRDs7QUFFRCxVQUFJRSxTQUFRLEdBQUdSLE9BQU8sQ0FBQ1MsR0FBUixDQUFZSixNQUFaLENBQWY7O0FBQ0EsVUFBSSxDQUFDRyxTQUFMLEVBQWU7QUFDYkEsUUFBQUEsU0FBUSxHQUFHLElBQUlQLE9BQUosRUFBWDtBQUNBRCxRQUFBQSxPQUFPLENBQUNjLEdBQVIsQ0FBWVQsTUFBWixFQUFvQkcsU0FBcEI7QUFDRDs7QUFFRCxVQUFNTyxRQUFRLEdBQUdULEtBQUssQ0FBQ1UsSUFBTixDQUFXLElBQVgsRUFBaUJaLElBQWpCLENBQWpCOztBQUNBSSxNQUFBQSxTQUFRLENBQUNNLEdBQVQsQ0FBYVIsS0FBYixFQUFvQlMsUUFBcEI7O0FBRUFWLE1BQUFBLE1BQU0sQ0FBQ1ksZ0JBQVAsQ0FDRWQsU0FERixFQUVFWSxRQUZGLEVBR0VULEtBQUssQ0FBQ0ssT0FBTixLQUFrQkMsU0FBbEIsR0FBOEJOLEtBQUssQ0FBQ0ssT0FBcEMsR0FBOEMsS0FIaEQ7QUFLRDtBQUNGLEdBaENEO0FBaUNEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdGFyZ2V0cyA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSkge1xuICByZXR1cm4gKGhvc3QsIHRhcmdldCwgdmFsdWUsIGxhc3RWYWx1ZSkgPT4ge1xuICAgIGlmIChsYXN0VmFsdWUpIHtcbiAgICAgIGNvbnN0IGV2ZW50TWFwID0gdGFyZ2V0cy5nZXQodGFyZ2V0KTtcbiAgICAgIGlmIChldmVudE1hcCkge1xuICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgZXZlbnRNYXAuZ2V0KGxhc3RWYWx1ZSksXG4gICAgICAgICAgbGFzdFZhbHVlLm9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IGxhc3RWYWx1ZS5vcHRpb25zIDogZmFsc2UsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEV2ZW50IGxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbjogJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBldmVudE1hcCA9IHRhcmdldHMuZ2V0KHRhcmdldCk7XG4gICAgICBpZiAoIWV2ZW50TWFwKSB7XG4gICAgICAgIGV2ZW50TWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGFyZ2V0cy5zZXQodGFyZ2V0LCBldmVudE1hcCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gdmFsdWUuYmluZChudWxsLCBob3N0KTtcbiAgICAgIGV2ZW50TWFwLnNldCh2YWx1ZSwgY2FsbGJhY2spO1xuXG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgZXZlbnRUeXBlLFxuICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgdmFsdWUub3B0aW9ucyAhPT0gdW5kZWZpbmVkID8gdmFsdWUub3B0aW9ucyA6IGZhbHNlLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction normalizeValue(value) {\n var set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();\n\n if (Array.isArray(value)) {\n value.forEach(function (className) {\n return set.add(className);\n });\n } else if (value !== null && _typeof(value) === \"object\") {\n Object.keys(value).forEach(function (key) {\n return value[key] && set.add(key);\n });\n } else {\n set.add(value);\n }\n\n return set;\n}\n\nvar classMap = new WeakMap();\nexport default function resolveClassList(host, target, value) {\n var previousList = classMap.get(target) || new Set();\n var list = normalizeValue(value);\n classMap.set(target, list);\n list.forEach(function (className) {\n target.classList.add(className);\n previousList.delete(className);\n });\n previousList.forEach(function (className) {\n target.classList.remove(className);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvY2xhc3MuanMiXSwibmFtZXMiOlsibm9ybWFsaXplVmFsdWUiLCJ2YWx1ZSIsInNldCIsIlNldCIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJjbGFzc05hbWUiLCJhZGQiLCJPYmplY3QiLCJrZXlzIiwia2V5IiwiY2xhc3NNYXAiLCJXZWFrTWFwIiwicmVzb2x2ZUNsYXNzTGlzdCIsImhvc3QiLCJ0YXJnZXQiLCJwcmV2aW91c0xpc3QiLCJnZXQiLCJsaXN0IiwiY2xhc3NMaXN0IiwiZGVsZXRlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLGNBQVQsQ0FBd0JDLEtBQXhCLEVBQWdEO0FBQUEsTUFBakJDLEdBQWlCLHVFQUFYLElBQUlDLEdBQUosRUFBVzs7QUFDOUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNKLEtBQWQsQ0FBSixFQUEwQjtBQUN4QkEsSUFBQUEsS0FBSyxDQUFDSyxPQUFOLENBQWMsVUFBQUMsU0FBUztBQUFBLGFBQUlMLEdBQUcsQ0FBQ00sR0FBSixDQUFRRCxTQUFSLENBQUo7QUFBQSxLQUF2QjtBQUNELEdBRkQsTUFFTyxJQUFJTixLQUFLLEtBQUssSUFBVixJQUFrQixRQUFPQSxLQUFQLE1BQWlCLFFBQXZDLEVBQWlEO0FBQ3REUSxJQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVQsS0FBWixFQUFtQkssT0FBbkIsQ0FBMkIsVUFBQUssR0FBRztBQUFBLGFBQUlWLEtBQUssQ0FBQ1UsR0FBRCxDQUFMLElBQWNULEdBQUcsQ0FBQ00sR0FBSixDQUFRRyxHQUFSLENBQWxCO0FBQUEsS0FBOUI7QUFDRCxHQUZNLE1BRUE7QUFDTFQsSUFBQUEsR0FBRyxDQUFDTSxHQUFKLENBQVFQLEtBQVI7QUFDRDs7QUFFRCxTQUFPQyxHQUFQO0FBQ0Q7O0FBRUQsSUFBTVUsUUFBUSxHQUFHLElBQUlDLE9BQUosRUFBakI7QUFFQSxlQUFlLFNBQVNDLGdCQUFULENBQTBCQyxJQUExQixFQUFnQ0MsTUFBaEMsRUFBd0NmLEtBQXhDLEVBQStDO0FBQzVELE1BQU1nQixZQUFZLEdBQUdMLFFBQVEsQ0FBQ00sR0FBVCxDQUFhRixNQUFiLEtBQXdCLElBQUliLEdBQUosRUFBN0M7QUFDQSxNQUFNZ0IsSUFBSSxHQUFHbkIsY0FBYyxDQUFDQyxLQUFELENBQTNCO0FBRUFXLEVBQUFBLFFBQVEsQ0FBQ1YsR0FBVCxDQUFhYyxNQUFiLEVBQXFCRyxJQUFyQjtBQUVBQSxFQUFBQSxJQUFJLENBQUNiLE9BQUwsQ0FBYSxVQUFBQyxTQUFTLEVBQUk7QUFDeEJTLElBQUFBLE1BQU0sQ0FBQ0ksU0FBUCxDQUFpQlosR0FBakIsQ0FBcUJELFNBQXJCO0FBQ0FVLElBQUFBLFlBQVksQ0FBQ0ksTUFBYixDQUFvQmQsU0FBcEI7QUFDRCxHQUhEO0FBS0FVLEVBQUFBLFlBQVksQ0FBQ1gsT0FBYixDQUFxQixVQUFBQyxTQUFTLEVBQUk7QUFDaENTLElBQUFBLE1BQU0sQ0FBQ0ksU0FBUCxDQUFpQkUsTUFBakIsQ0FBd0JmLFNBQXhCO0FBQ0QsR0FGRDtBQUdEIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUsIHNldCA9IG5ldyBTZXQoKSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGNsYXNzTmFtZSA9PiBzZXQuYWRkKGNsYXNzTmFtZSkpO1xuICB9IGVsc2UgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKGtleSA9PiB2YWx1ZVtrZXldICYmIHNldC5hZGQoa2V5KSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0LmFkZCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gc2V0O1xufVxuXG5jb25zdCBjbGFzc01hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVDbGFzc0xpc3QoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkge1xuICBjb25zdCBwcmV2aW91c0xpc3QgPSBjbGFzc01hcC5nZXQodGFyZ2V0KSB8fCBuZXcgU2V0KCk7XG4gIGNvbnN0IGxpc3QgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSk7XG5cbiAgY2xhc3NNYXAuc2V0KHRhcmdldCwgbGlzdCk7XG5cbiAgbGlzdC5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICBwcmV2aW91c0xpc3QuZGVsZXRlKGNsYXNzTmFtZSk7XG4gIH0pO1xuXG4gIHByZXZpb3VzTGlzdC5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfSk7XG59XG4iXX0=","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { camelToDash, stringifyElement } from \"../../utils.js\";\nvar styleMap = new WeakMap();\nexport default function resolveStyle(host, target, value) {\n if (value === null || _typeof(value) !== \"object\") {\n throw TypeError(\"Style value must be an object in \".concat(stringifyElement(target), \":\"), value);\n }\n\n var previousMap = styleMap.get(target) || new Map();\n var nextMap = Object.keys(value).reduce(function (map, key) {\n var dashKey = camelToDash(key);\n var styleValue = value[key];\n\n if (!styleValue && styleValue !== 0) {\n target.style.removeProperty(dashKey);\n } else {\n target.style.setProperty(dashKey, styleValue);\n }\n\n map.set(dashKey, styleValue);\n previousMap.delete(dashKey);\n return map;\n }, new Map());\n previousMap.forEach(function (styleValue, key) {\n target.style[key] = \"\";\n });\n styleMap.set(target, nextMap);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvc3R5bGUuanMiXSwibmFtZXMiOlsiY2FtZWxUb0Rhc2giLCJzdHJpbmdpZnlFbGVtZW50Iiwic3R5bGVNYXAiLCJXZWFrTWFwIiwicmVzb2x2ZVN0eWxlIiwiaG9zdCIsInRhcmdldCIsInZhbHVlIiwiVHlwZUVycm9yIiwicHJldmlvdXNNYXAiLCJnZXQiLCJNYXAiLCJuZXh0TWFwIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm1hcCIsImtleSIsImRhc2hLZXkiLCJzdHlsZVZhbHVlIiwic3R5bGUiLCJyZW1vdmVQcm9wZXJ0eSIsInNldFByb3BlcnR5Iiwic2V0IiwiZGVsZXRlIiwiZm9yRWFjaCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxXQUFULEVBQXNCQyxnQkFBdEIsUUFBOEMsZ0JBQTlDO0FBRUEsSUFBTUMsUUFBUSxHQUFHLElBQUlDLE9BQUosRUFBakI7QUFFQSxlQUFlLFNBQVNDLFlBQVQsQ0FBc0JDLElBQXRCLEVBQTRCQyxNQUE1QixFQUFvQ0MsS0FBcEMsRUFBMkM7QUFDeEQsTUFBSUEsS0FBSyxLQUFLLElBQVYsSUFBa0IsUUFBT0EsS0FBUCxNQUFpQixRQUF2QyxFQUFpRDtBQUMvQyxVQUFNQyxTQUFTLDRDQUN1QlAsZ0JBQWdCLENBQUNLLE1BQUQsQ0FEdkMsUUFFYkMsS0FGYSxDQUFmO0FBSUQ7O0FBRUQsTUFBTUUsV0FBVyxHQUFHUCxRQUFRLENBQUNRLEdBQVQsQ0FBYUosTUFBYixLQUF3QixJQUFJSyxHQUFKLEVBQTVDO0FBRUEsTUFBTUMsT0FBTyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWVAsS0FBWixFQUFtQlEsTUFBbkIsQ0FBMEIsVUFBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQWM7QUFDdEQsUUFBTUMsT0FBTyxHQUFHbEIsV0FBVyxDQUFDaUIsR0FBRCxDQUEzQjtBQUNBLFFBQU1FLFVBQVUsR0FBR1osS0FBSyxDQUFDVSxHQUFELENBQXhCOztBQUVBLFFBQUksQ0FBQ0UsVUFBRCxJQUFlQSxVQUFVLEtBQUssQ0FBbEMsRUFBcUM7QUFDbkNiLE1BQUFBLE1BQU0sQ0FBQ2MsS0FBUCxDQUFhQyxjQUFiLENBQTRCSCxPQUE1QjtBQUNELEtBRkQsTUFFTztBQUNMWixNQUFBQSxNQUFNLENBQUNjLEtBQVAsQ0FBYUUsV0FBYixDQUF5QkosT0FBekIsRUFBa0NDLFVBQWxDO0FBQ0Q7O0FBRURILElBQUFBLEdBQUcsQ0FBQ08sR0FBSixDQUFRTCxPQUFSLEVBQWlCQyxVQUFqQjtBQUNBVixJQUFBQSxXQUFXLENBQUNlLE1BQVosQ0FBbUJOLE9BQW5CO0FBRUEsV0FBT0YsR0FBUDtBQUNELEdBZGUsRUFjYixJQUFJTCxHQUFKLEVBZGEsQ0FBaEI7QUFnQkFGLEVBQUFBLFdBQVcsQ0FBQ2dCLE9BQVosQ0FBb0IsVUFBQ04sVUFBRCxFQUFhRixHQUFiLEVBQXFCO0FBQ3ZDWCxJQUFBQSxNQUFNLENBQUNjLEtBQVAsQ0FBYUgsR0FBYixJQUFvQixFQUFwQjtBQUNELEdBRkQ7QUFJQWYsRUFBQUEsUUFBUSxDQUFDcUIsR0FBVCxDQUFhakIsTUFBYixFQUFxQk0sT0FBckI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbWVsVG9EYXNoLCBzdHJpbmdpZnlFbGVtZW50IH0gZnJvbSBcIi4uLy4uL3V0aWxzLmpzXCI7XG5cbmNvbnN0IHN0eWxlTWFwID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZVN0eWxlKGhvc3QsIHRhcmdldCwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IFR5cGVFcnJvcihcbiAgICAgIGBTdHlsZSB2YWx1ZSBtdXN0IGJlIGFuIG9iamVjdCBpbiAke3N0cmluZ2lmeUVsZW1lbnQodGFyZ2V0KX06YCxcbiAgICAgIHZhbHVlLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwcmV2aW91c01hcCA9IHN0eWxlTWFwLmdldCh0YXJnZXQpIHx8IG5ldyBNYXAoKTtcblxuICBjb25zdCBuZXh0TWFwID0gT2JqZWN0LmtleXModmFsdWUpLnJlZHVjZSgobWFwLCBrZXkpID0+IHtcbiAgICBjb25zdCBkYXNoS2V5ID0gY2FtZWxUb0Rhc2goa2V5KTtcbiAgICBjb25zdCBzdHlsZVZhbHVlID0gdmFsdWVba2V5XTtcblxuICAgIGlmICghc3R5bGVWYWx1ZSAmJiBzdHlsZVZhbHVlICE9PSAwKSB7XG4gICAgICB0YXJnZXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoZGFzaEtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldC5zdHlsZS5zZXRQcm9wZXJ0eShkYXNoS2V5LCBzdHlsZVZhbHVlKTtcbiAgICB9XG5cbiAgICBtYXAuc2V0KGRhc2hLZXksIHN0eWxlVmFsdWUpO1xuICAgIHByZXZpb3VzTWFwLmRlbGV0ZShkYXNoS2V5KTtcblxuICAgIHJldHVybiBtYXA7XG4gIH0sIG5ldyBNYXAoKSk7XG5cbiAgcHJldmlvdXNNYXAuZm9yRWFjaCgoc3R5bGVWYWx1ZSwga2V5KSA9PiB7XG4gICAgdGFyZ2V0LnN0eWxlW2tleV0gPSBcIlwiO1xuICB9KTtcblxuICBzdHlsZU1hcC5zZXQodGFyZ2V0LCBuZXh0TWFwKTtcbn1cbiJdfQ==","import resolveEventListener from \"./event.js\";\nimport resolveClassList from \"./class.js\";\nimport resolveStyleList from \"./style.js\";\nexport default function resolveProperty(attrName, propertyName, isSVG) {\n if (propertyName.substr(0, 2) === \"on\") {\n var eventType = propertyName.substr(2);\n return resolveEventListener(eventType);\n }\n\n switch (attrName) {\n case \"class\":\n return resolveClassList;\n\n case \"style\":\n return resolveStyleList;\n\n default:\n return function (host, target, value) {\n if (!isSVG && !(target instanceof SVGElement) && propertyName in target) {\n if (target[propertyName] !== value) {\n target[propertyName] = value;\n }\n } else if (value === false || value === undefined || value === null) {\n target.removeAttribute(attrName);\n } else {\n var attrValue = value === true ? \"\" : String(value);\n target.setAttribute(attrName, attrValue);\n }\n };\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9yZXNvbHZlcnMvcHJvcGVydHkuanMiXSwibmFtZXMiOlsicmVzb2x2ZUV2ZW50TGlzdGVuZXIiLCJyZXNvbHZlQ2xhc3NMaXN0IiwicmVzb2x2ZVN0eWxlTGlzdCIsInJlc29sdmVQcm9wZXJ0eSIsImF0dHJOYW1lIiwicHJvcGVydHlOYW1lIiwiaXNTVkciLCJzdWJzdHIiLCJldmVudFR5cGUiLCJob3N0IiwidGFyZ2V0IiwidmFsdWUiLCJTVkdFbGVtZW50IiwidW5kZWZpbmVkIiwicmVtb3ZlQXR0cmlidXRlIiwiYXR0clZhbHVlIiwiU3RyaW5nIiwic2V0QXR0cmlidXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxvQkFBUCxNQUFpQyxZQUFqQztBQUNBLE9BQU9DLGdCQUFQLE1BQTZCLFlBQTdCO0FBQ0EsT0FBT0MsZ0JBQVAsTUFBNkIsWUFBN0I7QUFFQSxlQUFlLFNBQVNDLGVBQVQsQ0FBeUJDLFFBQXpCLEVBQW1DQyxZQUFuQyxFQUFpREMsS0FBakQsRUFBd0Q7QUFDckUsTUFBSUQsWUFBWSxDQUFDRSxNQUFiLENBQW9CLENBQXBCLEVBQXVCLENBQXZCLE1BQThCLElBQWxDLEVBQXdDO0FBQ3RDLFFBQU1DLFNBQVMsR0FBR0gsWUFBWSxDQUFDRSxNQUFiLENBQW9CLENBQXBCLENBQWxCO0FBQ0EsV0FBT1Asb0JBQW9CLENBQUNRLFNBQUQsQ0FBM0I7QUFDRDs7QUFFRCxVQUFRSixRQUFSO0FBQ0UsU0FBSyxPQUFMO0FBQ0UsYUFBT0gsZ0JBQVA7O0FBQ0YsU0FBSyxPQUFMO0FBQ0UsYUFBT0MsZ0JBQVA7O0FBQ0Y7QUFDRSxhQUFPLFVBQUNPLElBQUQsRUFBT0MsTUFBUCxFQUFlQyxLQUFmLEVBQXlCO0FBQzlCLFlBQ0UsQ0FBQ0wsS0FBRCxJQUNBLEVBQUVJLE1BQU0sWUFBWUUsVUFBcEIsQ0FEQSxJQUVBUCxZQUFZLElBQUlLLE1BSGxCLEVBSUU7QUFDQSxjQUFJQSxNQUFNLENBQUNMLFlBQUQsQ0FBTixLQUF5Qk0sS0FBN0IsRUFBb0M7QUFDbENELFlBQUFBLE1BQU0sQ0FBQ0wsWUFBRCxDQUFOLEdBQXVCTSxLQUF2QjtBQUNEO0FBQ0YsU0FSRCxNQVFPLElBQUlBLEtBQUssS0FBSyxLQUFWLElBQW1CQSxLQUFLLEtBQUtFLFNBQTdCLElBQTBDRixLQUFLLEtBQUssSUFBeEQsRUFBOEQ7QUFDbkVELFVBQUFBLE1BQU0sQ0FBQ0ksZUFBUCxDQUF1QlYsUUFBdkI7QUFDRCxTQUZNLE1BRUE7QUFDTCxjQUFNVyxTQUFTLEdBQUdKLEtBQUssS0FBSyxJQUFWLEdBQWlCLEVBQWpCLEdBQXNCSyxNQUFNLENBQUNMLEtBQUQsQ0FBOUM7QUFDQUQsVUFBQUEsTUFBTSxDQUFDTyxZQUFQLENBQW9CYixRQUFwQixFQUE4QlcsU0FBOUI7QUFDRDtBQUNGLE9BZkQ7QUFOSjtBQXVCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXNvbHZlRXZlbnRMaXN0ZW5lciBmcm9tIFwiLi9ldmVudC5qc1wiO1xuaW1wb3J0IHJlc29sdmVDbGFzc0xpc3QgZnJvbSBcIi4vY2xhc3MuanNcIjtcbmltcG9ydCByZXNvbHZlU3R5bGVMaXN0IGZyb20gXCIuL3N0eWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVQcm9wZXJ0eShhdHRyTmFtZSwgcHJvcGVydHlOYW1lLCBpc1NWRykge1xuICBpZiAocHJvcGVydHlOYW1lLnN1YnN0cigwLCAyKSA9PT0gXCJvblwiKSB7XG4gICAgY29uc3QgZXZlbnRUeXBlID0gcHJvcGVydHlOYW1lLnN1YnN0cigyKTtcbiAgICByZXR1cm4gcmVzb2x2ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAoYXR0ck5hbWUpIHtcbiAgICBjYXNlIFwiY2xhc3NcIjpcbiAgICAgIHJldHVybiByZXNvbHZlQ2xhc3NMaXN0O1xuICAgIGNhc2UgXCJzdHlsZVwiOlxuICAgICAgcmV0dXJuIHJlc29sdmVTdHlsZUxpc3Q7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWlzU1ZHICYmXG4gICAgICAgICAgISh0YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSAmJlxuICAgICAgICAgIHByb3BlcnR5TmFtZSBpbiB0YXJnZXRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRhcmdldFtwcm9wZXJ0eU5hbWVdICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhdHRyVmFsdWUgPSB2YWx1ZSA9PT0gdHJ1ZSA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gIH1cbn1cbiJdfQ==","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { stringifyElement, shadyCSS, IS_IE } from \"../utils.js\";\nimport { dataMap, removeTemplate } from \"./utils.js\";\nimport resolveValue from \"./resolvers/value.js\";\nimport resolveProperty from \"./resolvers/property.js\";\n/* istanbul ignore next */\n\ntry {\n process.env.NODE_ENV;\n} catch (e) {\n var process = {\n env: {\n NODE_ENV: 'production'\n }\n };\n} // eslint-disable-line\n\n\nvar TIMESTAMP = Date.now();\nexport var getPlaceholder = function getPlaceholder() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return \"{{h-\".concat(TIMESTAMP, \"-\").concat(id, \"}}\");\n};\nvar PLACEHOLDER_REGEXP_TEXT = getPlaceholder(\"(\\\\d+)\");\nvar PLACEHOLDER_REGEXP_EQUAL = new RegExp(\"^\".concat(PLACEHOLDER_REGEXP_TEXT, \"$\"));\nvar PLACEHOLDER_REGEXP_ALL = new RegExp(PLACEHOLDER_REGEXP_TEXT, \"g\");\nvar ATTR_PREFIX = \"--\".concat(TIMESTAMP, \"--\");\nvar ATTR_REGEXP = new RegExp(ATTR_PREFIX, \"g\");\nvar preparedTemplates = new WeakMap();\n/* istanbul ignore next */\n\nfunction applyShadyCSS(template, tagName) {\n if (!tagName) return template;\n return shadyCSS(function (shady) {\n var map = preparedTemplates.get(template);\n\n if (!map) {\n map = new Map();\n preparedTemplates.set(template, map);\n }\n\n var clone = map.get(tagName);\n\n if (!clone) {\n clone = document.createElement(\"template\");\n clone.content.appendChild(template.content.cloneNode(true));\n map.set(tagName, clone);\n var styles = clone.content.querySelectorAll(\"style\");\n Array.from(styles).forEach(function (style) {\n var count = style.childNodes.length + 1;\n\n for (var i = 0; i < count; i += 1) {\n style.parentNode.insertBefore(document.createTextNode(getPlaceholder()), style);\n }\n });\n shady.prepareTemplate(clone, tagName.toLowerCase());\n }\n\n return clone;\n }, template);\n}\n\nfunction createSignature(parts, styles) {\n var signature = parts.reduce(function (acc, part, index) {\n if (index === 0) {\n return part;\n }\n\n if (parts.slice(index).join(\"\").match(/^\\s*<\\/\\s*(table|tr|thead|tbody|tfoot|colgroup)>/)) {\n return \"\".concat(acc, \"\").concat(part);\n }\n\n return acc + getPlaceholder(index - 1) + part;\n }, \"\");\n\n if (styles) {\n signature += \"\");\n }\n /* istanbul ignore if */\n\n\n if (IS_IE) {\n return signature.replace(/style\\s*=\\s*([\"][^\"]+[\"]|['][^']+[']|[^\\s\"'<>/]+)/g, function (match) {\n return \"\".concat(ATTR_PREFIX).concat(match);\n });\n }\n\n return signature;\n}\n\nfunction getPropertyName(string) {\n return string.replace(/\\s*=\\s*['\"]*$/g, \"\").split(/\\s+/).pop();\n}\n\nfunction replaceComments(fragment) {\n var iterator = document.createNodeIterator(fragment, NodeFilter.SHOW_COMMENT, null, false);\n var node; // eslint-disable-next-line no-cond-assign\n\n while (node = iterator.nextNode()) {\n if (PLACEHOLDER_REGEXP_EQUAL.test(node.textContent)) {\n node.parentNode.insertBefore(document.createTextNode(node.textContent), node);\n node.parentNode.removeChild(node);\n }\n }\n}\n\nexport function createInternalWalker(context) {\n var node;\n return {\n get currentNode() {\n return node;\n },\n\n nextNode: function nextNode() {\n if (node === undefined) {\n node = context.childNodes[0];\n } else if (node.childNodes.length) {\n node = node.childNodes[0];\n } else if (node.nextSibling) {\n node = node.nextSibling;\n } else {\n var parentNode = node.parentNode;\n node = parentNode.nextSibling;\n\n while (!node && parentNode !== context) {\n parentNode = parentNode.parentNode;\n node = parentNode.nextSibling;\n }\n }\n\n return !!node;\n }\n };\n}\n\nfunction createExternalWalker(context) {\n return document.createTreeWalker(context, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);\n}\n/* istanbul ignore next */\n\n\nvar createWalker = _typeof(window.ShadyDOM) === \"object\" && window.ShadyDOM.inUse ? createInternalWalker : createExternalWalker;\nvar container = document.createElement(\"div\");\nvar styleSheetsMap = new Map();\n\nfunction normalizeWhitespace(input) {\n var startIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n input = input.replace(/(^[\\n\\s\\t ]+)|([\\n\\s\\t ]+$)+/g, \"\");\n var i = input.indexOf(\"\\n\");\n\n if (i > -1) {\n var indent = 0 - startIndent - 2;\n\n for (i += 1; input[i] === \" \" && i < input.length; i += 1) {\n indent += 1;\n }\n\n return input.replace(/\\n +/g, function (t) {\n return t.substr(0, Math.max(t.length - indent, 1));\n });\n }\n\n return input;\n}\n\nfunction beautifyTemplateLog(input, index) {\n var placeholder = getPlaceholder(index);\n var output = normalizeWhitespace(input).split(\"\\n\").filter(function (i) {\n return i;\n }).map(function (line) {\n var startIndex = line.indexOf(placeholder);\n\n if (startIndex > -1) {\n return \"| \".concat(line, \"\\n--\").concat(\"-\".repeat(startIndex)).concat(\"^\".repeat(6));\n }\n\n return \"| \".concat(line);\n }).join(\"\\n\") // eslint-disable-next-line no-template-curly-in-string\n .replace(PLACEHOLDER_REGEXP_ALL, \"${...}\");\n return \"\".concat(output);\n}\n\nexport function compileTemplate(rawParts, isSVG, styles) {\n var template = document.createElement(\"template\");\n var parts = [];\n var signature = createSignature(rawParts, styles);\n if (isSVG) signature = \"\".concat(signature, \"\");\n /* istanbul ignore if */\n\n if (IS_IE) {\n template.innerHTML = signature;\n } else {\n container.innerHTML = \"\");\n template.content.appendChild(container.children[0].content);\n }\n\n if (isSVG) {\n var svgRoot = template.content.firstChild;\n template.content.removeChild(svgRoot);\n Array.from(svgRoot.childNodes).forEach(function (node) {\n return template.content.appendChild(node);\n });\n }\n\n replaceComments(template.content);\n var compileWalker = createWalker(template.content);\n var compileIndex = 0;\n\n var _loop = function _loop() {\n var node = compileWalker.currentNode;\n\n if (node.nodeType === Node.TEXT_NODE) {\n var text = node.textContent;\n\n if (!text.match(PLACEHOLDER_REGEXP_EQUAL)) {\n var results = text.match(PLACEHOLDER_REGEXP_ALL);\n\n if (results) {\n var currentNode = node;\n results.reduce(function (acc, placeholder) {\n var _acc$pop$split = acc.pop().split(placeholder),\n _acc$pop$split2 = _slicedToArray(_acc$pop$split, 2),\n before = _acc$pop$split2[0],\n next = _acc$pop$split2[1];\n\n if (before) acc.push(before);\n acc.push(placeholder);\n if (next) acc.push(next);\n return acc;\n }, [text]).forEach(function (part, index) {\n if (index === 0) {\n currentNode.textContent = part;\n } else {\n currentNode = currentNode.parentNode.insertBefore(document.createTextNode(part), currentNode.nextSibling);\n }\n });\n }\n }\n\n var equal = node.textContent.match(PLACEHOLDER_REGEXP_EQUAL);\n\n if (equal) {\n /* istanbul ignore else */\n if (!IS_IE) node.textContent = \"\";\n parts[equal[1]] = [compileIndex, resolveValue];\n }\n } else {\n /* istanbul ignore else */\n // eslint-disable-next-line no-lonely-if\n if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.attributes).forEach(function (attr) {\n var value = attr.value.trim();\n /* istanbul ignore next */\n\n var name = IS_IE ? attr.name.replace(ATTR_PREFIX, \"\") : attr.name;\n var equal = value.match(PLACEHOLDER_REGEXP_EQUAL);\n\n if (equal) {\n var propertyName = getPropertyName(rawParts[equal[1]]);\n parts[equal[1]] = [compileIndex, resolveProperty(name, propertyName, isSVG)];\n node.removeAttribute(attr.name);\n } else {\n var _results = value.match(PLACEHOLDER_REGEXP_ALL);\n\n if (_results) {\n var partialName = \"attr__\".concat(name);\n\n _results.forEach(function (placeholder, index) {\n var _placeholder$match = placeholder.match(PLACEHOLDER_REGEXP_EQUAL),\n _placeholder$match2 = _slicedToArray(_placeholder$match, 2),\n id = _placeholder$match2[1];\n\n parts[id] = [compileIndex, function (host, target, attrValue) {\n var data = dataMap.get(target, {});\n data[partialName] = (data[partialName] || value).replace(placeholder, attrValue == null ? \"\" : attrValue);\n\n if (_results.length === 1 || index + 1 === _results.length) {\n target.setAttribute(name, data[partialName]);\n data[partialName] = undefined;\n }\n }];\n });\n\n attr.value = \"\";\n /* istanbul ignore next */\n\n if (IS_IE && name !== attr.name) {\n node.removeAttribute(attr.name);\n node.setAttribute(name, \"\");\n }\n }\n }\n });\n }\n }\n\n compileIndex += 1;\n };\n\n while (compileWalker.nextNode()) {\n _loop();\n }\n\n return function updateTemplateInstance(host, target, args, styleSheets) {\n var data = dataMap.get(target, {\n type: \"function\"\n });\n\n if (template !== data.template) {\n if (data.template || target.nodeType === Node.ELEMENT_NODE) {\n removeTemplate(target);\n }\n\n data.prevArgs = null;\n var fragment = document.importNode(applyShadyCSS(template, host.tagName).content, true);\n var renderWalker = createWalker(fragment);\n var clonedParts = parts.slice(0);\n var renderIndex = 0;\n var currentPart = clonedParts.shift();\n var markers = [];\n data.template = template;\n data.markers = markers;\n\n while (renderWalker.nextNode()) {\n var node = renderWalker.currentNode;\n\n if (node.nodeType === Node.TEXT_NODE) {\n /* istanbul ignore next */\n if (PLACEHOLDER_REGEXP_EQUAL.test(node.textContent)) {\n node.textContent = \"\";\n } else if (IS_IE) {\n node.textContent = node.textContent.replace(ATTR_REGEXP, \"\");\n }\n } else if (process.env.NODE_ENV !== \"production\" && node.nodeType === Node.ELEMENT_NODE) {\n if (node.tagName.indexOf(\"-\") > -1 && !customElements.get(node.tagName.toLowerCase())) {\n throw Error(\"Missing \".concat(stringifyElement(node), \" element definition in \").concat(stringifyElement(host)));\n }\n }\n\n while (currentPart && currentPart[0] === renderIndex) {\n markers.push([node, currentPart[1]]);\n currentPart = clonedParts.shift();\n }\n\n renderIndex += 1;\n }\n\n if (target.nodeType === Node.TEXT_NODE) {\n data.startNode = fragment.childNodes[0];\n data.endNode = fragment.childNodes[fragment.childNodes.length - 1];\n var previousChild = target;\n var child = fragment.childNodes[0];\n\n while (child) {\n target.parentNode.insertBefore(child, previousChild.nextSibling);\n previousChild = child;\n child = fragment.childNodes[0];\n }\n } else {\n target.appendChild(fragment);\n }\n }\n\n var adoptedStyleSheets = target.adoptedStyleSheets;\n\n if (styleSheets) {\n var isEqual = false;\n styleSheets = styleSheets.map(function (style) {\n if (style instanceof CSSStyleSheet) return style;\n var styleSheet = styleSheetsMap.get(style);\n\n if (!styleSheet) {\n styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(style);\n styleSheetsMap.set(style, styleSheet);\n }\n\n return styleSheet;\n });\n\n if (styleSheets.length === adoptedStyleSheets.length) {\n isEqual = true;\n\n for (var i = 0; i < styleSheets.length; i += 1) {\n if (styleSheets[i] !== adoptedStyleSheets[i]) {\n isEqual = false;\n break;\n }\n }\n }\n\n if (!isEqual) target.adoptedStyleSheets = styleSheets;\n } else if (adoptedStyleSheets && adoptedStyleSheets.length) {\n target.adoptedStyleSheets = [];\n }\n\n var prevArgs = data.prevArgs;\n data.prevArgs = args;\n\n for (var index = 0; index < data.markers.length; index += 1) {\n var _data$markers$index = _slicedToArray(data.markers[index], 2),\n _node = _data$markers$index[0],\n marker = _data$markers$index[1];\n\n if (!prevArgs || prevArgs[index] !== args[index]) {\n try {\n marker(host, _node, args[index], prevArgs ? prevArgs[index] : undefined);\n } catch (error) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.error(\"Following error was thrown when updating a template expression in \".concat(stringifyElement(host), \"\\n\").concat(beautifyTemplateLog(signature, index)));\n }\n\n throw error;\n }\n }\n }\n\n if (target.nodeType !== Node.TEXT_NODE) {\n shadyCSS(function (shady) {\n if (host.shadowRoot) {\n if (prevArgs) {\n shady.styleSubtree(host);\n } else {\n shady.styleElement(host);\n }\n }\n });\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9jb3JlLmpzIl0sIm5hbWVzIjpbInN0cmluZ2lmeUVsZW1lbnQiLCJzaGFkeUNTUyIsIklTX0lFIiwiZGF0YU1hcCIsInJlbW92ZVRlbXBsYXRlIiwicmVzb2x2ZVZhbHVlIiwicmVzb2x2ZVByb3BlcnR5IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZSIsIlRJTUVTVEFNUCIsIkRhdGUiLCJub3ciLCJnZXRQbGFjZWhvbGRlciIsImlkIiwiUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQiLCJQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwiLCJSZWdFeHAiLCJQTEFDRUhPTERFUl9SRUdFWFBfQUxMIiwiQVRUUl9QUkVGSVgiLCJBVFRSX1JFR0VYUCIsInByZXBhcmVkVGVtcGxhdGVzIiwiV2Vha01hcCIsImFwcGx5U2hhZHlDU1MiLCJ0ZW1wbGF0ZSIsInRhZ05hbWUiLCJzaGFkeSIsIm1hcCIsImdldCIsIk1hcCIsInNldCIsImNsb25lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGVudCIsImFwcGVuZENoaWxkIiwiY2xvbmVOb2RlIiwic3R5bGVzIiwicXVlcnlTZWxlY3RvckFsbCIsIkFycmF5IiwiZnJvbSIsImZvckVhY2giLCJzdHlsZSIsImNvdW50IiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImkiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiY3JlYXRlVGV4dE5vZGUiLCJwcmVwYXJlVGVtcGxhdGUiLCJ0b0xvd2VyQ2FzZSIsImNyZWF0ZVNpZ25hdHVyZSIsInBhcnRzIiwic2lnbmF0dXJlIiwicmVkdWNlIiwiYWNjIiwicGFydCIsImluZGV4Iiwic2xpY2UiLCJqb2luIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiTm9kZUZpbHRlciIsIlNIT1dfQ09NTUVOVCIsIm5vZGUiLCJuZXh0Tm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlSW50ZXJuYWxXYWxrZXIiLCJjb250ZXh0IiwiY3VycmVudE5vZGUiLCJ1bmRlZmluZWQiLCJuZXh0U2libGluZyIsImNyZWF0ZUV4dGVybmFsV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsImNyZWF0ZVdhbGtlciIsIndpbmRvdyIsIlNoYWR5RE9NIiwiaW5Vc2UiLCJjb250YWluZXIiLCJzdHlsZVNoZWV0c01hcCIsIm5vcm1hbGl6ZVdoaXRlc3BhY2UiLCJpbnB1dCIsInN0YXJ0SW5kZW50IiwiaW5kZXhPZiIsImluZGVudCIsInQiLCJzdWJzdHIiLCJNYXRoIiwibWF4IiwiYmVhdXRpZnlUZW1wbGF0ZUxvZyIsInBsYWNlaG9sZGVyIiwib3V0cHV0IiwiZmlsdGVyIiwibGluZSIsInN0YXJ0SW5kZXgiLCJyZXBlYXQiLCJjb21waWxlVGVtcGxhdGUiLCJyYXdQYXJ0cyIsImlzU1ZHIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJ0ZXh0IiwicmVzdWx0cyIsImJlZm9yZSIsIm5leHQiLCJwdXNoIiwiZXF1YWwiLCJFTEVNRU5UX05PREUiLCJhdHRyaWJ1dGVzIiwiYXR0ciIsInZhbHVlIiwidHJpbSIsIm5hbWUiLCJwcm9wZXJ0eU5hbWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJwYXJ0aWFsTmFtZSIsImhvc3QiLCJ0YXJnZXQiLCJhdHRyVmFsdWUiLCJkYXRhIiwic2V0QXR0cmlidXRlIiwidXBkYXRlVGVtcGxhdGVJbnN0YW5jZSIsImFyZ3MiLCJzdHlsZVNoZWV0cyIsInR5cGUiLCJwcmV2QXJncyIsImltcG9ydE5vZGUiLCJyZW5kZXJXYWxrZXIiLCJjbG9uZWRQYXJ0cyIsInJlbmRlckluZGV4IiwiY3VycmVudFBhcnQiLCJzaGlmdCIsIm1hcmtlcnMiLCJjdXN0b21FbGVtZW50cyIsIkVycm9yIiwic3RhcnROb2RlIiwiZW5kTm9kZSIsInByZXZpb3VzQ2hpbGQiLCJjaGlsZCIsImFkb3B0ZWRTdHlsZVNoZWV0cyIsImlzRXF1YWwiLCJDU1NTdHlsZVNoZWV0Iiwic3R5bGVTaGVldCIsInJlcGxhY2VTeW5jIiwibWFya2VyIiwiZXJyb3IiLCJjb25zb2xlIiwic2hhZG93Um9vdCIsInN0eWxlU3VidHJlZSIsInN0eWxlRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxnQkFBVCxFQUEyQkMsUUFBM0IsRUFBcUNDLEtBQXJDLFFBQWtELGFBQWxEO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsY0FBbEIsUUFBd0MsWUFBeEM7QUFFQSxPQUFPQyxZQUFQLE1BQXlCLHNCQUF6QjtBQUNBLE9BQU9DLGVBQVAsTUFBNEIseUJBQTVCO0FBRUE7O0FBQ0EsSUFBSTtBQUFFQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWjtBQUFzQixDQUE1QixDQUE2QixPQUFNQyxDQUFOLEVBQVM7QUFBRSxNQUFJSCxPQUFPLEdBQUc7QUFBRUMsSUFBQUEsR0FBRyxFQUFFO0FBQUVDLE1BQUFBLFFBQVEsRUFBRTtBQUFaO0FBQVAsR0FBZDtBQUFvRCxDLENBQUM7OztBQUU3RixJQUFNRSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxFQUFsQjtBQUVBLE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQjtBQUFBLE1BQUNDLEVBQUQsdUVBQU0sQ0FBTjtBQUFBLHVCQUFtQkosU0FBbkIsY0FBZ0NJLEVBQWhDO0FBQUEsQ0FBdkI7QUFFUCxJQUFNQyx1QkFBdUIsR0FBR0YsY0FBYyxDQUFDLFFBQUQsQ0FBOUM7QUFDQSxJQUFNRyx3QkFBd0IsR0FBRyxJQUFJQyxNQUFKLFlBQWVGLHVCQUFmLE9BQWpDO0FBQ0Es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LFVBQ3BEZSxLQURvRDtBQUFBLFVBQzlDMkYsTUFEOEM7O0FBRTNELFVBQUksQ0FBQ25CLFFBQUQsSUFBYUEsUUFBUSxDQUFDdkYsS0FBRCxDQUFSLEtBQW9Cb0YsSUFBSSxDQUFDcEYsS0FBRCxDQUF6QyxFQUFrRDtBQUNoRCxZQUFJO0FBQ0YwRyxVQUFBQSxNQUFNLENBQ0o1QixJQURJLEVBRUovRCxLQUZJLEVBR0pxRSxJQUFJLENBQUNwRixLQUFELENBSEEsRUFJSnVGLFFBQVEsR0FBR0EsUUFBUSxDQUFDdkYsS0FBRCxDQUFYLEdBQXFCdUIsU0FKekIsQ0FBTjtBQU1ELFNBUEQsQ0FPRSxPQUFPb0YsS0FBUCxFQUFjO0FBQ2QsY0FBSS9KLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDO0FBQ0E4SixZQUFBQSxPQUFPLENBQUNELEtBQVIsNkVBQ3VFdEssZ0JBQWdCLENBQ25GeUksSUFEbUYsQ0FEdkYsZUFHUWxDLG1CQUFtQixDQUFDaEQsU0FBRCxFQUFZSSxLQUFaLENBSDNCO0FBS0Q7O0FBQ0QsZ0JBQU0yRyxLQUFOO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFFBQUk1QixNQUFNLENBQUNuQixRQUFQLEtBQW9CQyxJQUFJLENBQUNDLFNBQTdCLEVBQXdDO0FBQ3RDeEgsTUFBQUEsUUFBUSxDQUFDLFVBQUEwQixLQUFLLEVBQUk7QUFDaEIsWUFBSThHLElBQUksQ0FBQytCLFVBQVQsRUFBcUI7QUFDbkIsY0FBSXRCLFFBQUosRUFBYztBQUNadkgsWUFBQUEsS0FBSyxDQUFDOEksWUFBTixDQUFtQmhDLElBQW5CO0FBQ0QsV0FGRCxNQUVPO0FBQ0w5RyxZQUFBQSxLQUFLLENBQUMrSSxZQUFOLENBQW1CakMsSUFBbkI7QUFDRDtBQUNGO0FBQ0YsT0FSTyxDQUFSO0FBU0Q7QUFDRixHQWxKRDtBQW1KRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ2lmeUVsZW1lbnQsIHNoYWR5Q1NTLCBJU19JRSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgZGF0YU1hcCwgcmVtb3ZlVGVtcGxhdGUgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG5pbXBvcnQgcmVzb2x2ZVZhbHVlIGZyb20gXCIuL3Jlc29sdmVycy92YWx1ZS5qc1wiO1xuaW1wb3J0IHJlc29sdmVQcm9wZXJ0eSBmcm9tIFwiLi9yZXNvbHZlcnMvcHJvcGVydHkuanNcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnRyeSB7IHByb2Nlc3MuZW52Lk5PREVfRU5WIH0gY2F0Y2goZSkgeyB2YXIgcHJvY2VzcyA9IHsgZW52OiB7IE5PREVfRU5WOiAncHJvZHVjdGlvbicgfSB9OyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuY29uc3QgVElNRVNUQU1QID0gRGF0ZS5ub3coKTtcblxuZXhwb3J0IGNvbnN0IGdldFBsYWNlaG9sZGVyID0gKGlkID0gMCkgPT4gYHt7aC0ke1RJTUVTVEFNUH0tJHtpZH19fWA7XG5cbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9URVhUID0gZ2V0UGxhY2Vob2xkZXIoXCIoXFxcXGQrKVwiKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCA9IG5ldyBSZWdFeHAoYF4ke1BMQUNFSE9MREVSX1JFR0VYUF9URVhUfSRgKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9BTEwgPSBuZXcgUmVnRXhwKFBMQUNFSE9MREVSX1JFR0VYUF9URVhULCBcImdcIik7XG5cbmNvbnN0IEFUVFJfUFJFRklYID0gYC0tJHtUSU1FU1RBTVB9LS1gO1xuY29uc3QgQVRUUl9SRUdFWFAgPSBuZXcgUmVnRXhwKEFUVFJfUFJFRklYLCBcImdcIik7XG5cbmNvbnN0IHByZXBhcmVkVGVtcGxhdGVzID0gbmV3IFdlYWtNYXAoKTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGFwcGx5U2hhZHlDU1ModGVtcGxhdGUsIHRhZ05hbWUpIHtcbiAgaWYgKCF0YWdOYW1lKSByZXR1cm4gdGVtcGxhdGU7XG5cbiAgcmV0dXJuIHNoYWR5Q1NTKHNoYWR5ID0+IHtcbiAgICBsZXQgbWFwID0gcHJlcGFyZWRUZW1wbGF0ZXMuZ2V0KHRlbXBsYXRlKTtcbiAgICBpZiAoIW1hcCkge1xuICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgcHJlcGFyZWRUZW1wbGF0ZXMuc2V0KHRlbXBsYXRlLCBtYXApO1xuICAgIH1cblxuICAgIGxldCBjbG9uZSA9IG1hcC5nZXQodGFnTmFtZSk7XG5cbiAgICBpZiAoIWNsb25lKSB7XG4gICAgICBjbG9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKTtcbiAgICAgIGNsb25lLmNvbnRlbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuXG4gICAgICBtYXAuc2V0KHRhZ05hbWUsIGNsb25lKTtcblxuICAgICAgY29uc3Qgc3R5bGVzID0gY2xvbmUuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVcIik7XG5cbiAgICAgIEFycmF5LmZyb20oc3R5bGVzKS5mb3JFYWNoKHN0eWxlID0+IHtcbiAgICAgICAgY29uc3QgY291bnQgPSBzdHlsZS5jaGlsZE5vZGVzLmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkgKz0gMSkge1xuICAgICAgICAgIHN0eWxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2V0UGxhY2Vob2xkZXIoKSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2hhZHkucHJlcGFyZVRlbXBsYXRlKGNsb25lLCB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmU7XG4gIH0sIHRlbXBsYXRlKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbmF0dXJlKHBhcnRzLCBzdHlsZXMpIHtcbiAgbGV0IHNpZ25hdHVyZSA9IHBhcnRzLnJlZHVjZSgoYWNjLCBwYXJ0LCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFydHNcbiAgICAgICAgLnNsaWNlKGluZGV4KVxuICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAubWF0Y2goL15cXHMqPFxcL1xccyoodGFibGV8dHJ8dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3JvdXApPi8pXG4gICAgKSB7XG4gICAgICByZXR1cm4gYCR7YWNjfTwhLS0ke2dldFBsYWNlaG9sZGVyKGluZGV4IC0gMSl9LS0+JHtwYXJ0fWA7XG4gICAgfVxuICAgIHJldHVybiBhY2MgKyBnZXRQbGFjZWhvbGRlcihpbmRleCAtIDEpICsgcGFydDtcbiAgfSwgXCJcIik7XG5cbiAgaWYgKHN0eWxlcykge1xuICAgIHNpZ25hdHVyZSArPSBgPHN0eWxlPlxcbiR7c3R5bGVzLmpvaW4oXCJcXG4vKi0tLS0tLSovXFxuXCIpfVxcbjwvc3R5bGU+YDtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoSVNfSUUpIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlcGxhY2UoXG4gICAgICAvc3R5bGVcXHMqPVxccyooW1wiXVteXCJdK1tcIl18WyddW14nXStbJ118W15cXHNcIic8Pi9dKykvZyxcbiAgICAgIG1hdGNoID0+IGAke0FUVFJfUFJFRklYfSR7bWF0Y2h9YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgLnJlcGxhY2UoL1xccyo9XFxzKlsnXCJdKiQvZywgXCJcIilcbiAgICAuc3BsaXQoL1xccysvKVxuICAgIC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvbW1lbnRzKGZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKFxuICAgIGZyYWdtZW50LFxuICAgIE5vZGVGaWx0ZXIuU0hPV19DT01NRU5ULFxuICAgIG51bGwsXG4gICAgZmFsc2UsXG4gICk7XG4gIGxldCBub2RlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkpIHtcbiAgICBpZiAoUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMLnRlc3Qobm9kZS50ZXh0Q29udGVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoXG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUudGV4dENvbnRlbnQpLFxuICAgICAgICBub2RlLFxuICAgICAgKTtcbiAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGVybmFsV2Fsa2VyKGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQgY3VycmVudE5vZGUoKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIG5leHROb2RlKCkge1xuICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2RlID0gY29udGV4dC5jaGlsZE5vZGVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLmNoaWxkTm9kZXNbMF07XG4gICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgbm9kZSA9IHBhcmVudE5vZGUubmV4dFNpYmxpbmc7XG5cbiAgICAgICAgd2hpbGUgKCFub2RlICYmIHBhcmVudE5vZGUgIT09IGNvbnRleHQpIHtcbiAgICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgIG5vZGUgPSBwYXJlbnROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhIW5vZGU7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXh0ZXJuYWxXYWxrZXIoY29udGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihcbiAgICBjb250ZXh0LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQgfCBOb2RlRmlsdGVyLlNIT1dfVEVYVCxcbiAgICBudWxsLFxuICAgIGZhbHNlLFxuICApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgY3JlYXRlV2Fsa2VyID1cbiAgdHlwZW9mIHdpbmRvdy5TaGFkeURPTSA9PT0gXCJvYmplY3RcIiAmJiB3aW5kb3cuU2hhZHlET00uaW5Vc2VcbiAgICA/IGNyZWF0ZUludGVybmFsV2Fsa2VyXG4gICAgOiBjcmVhdGVFeHRlcm5hbFdhbGtlcjtcblxuY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbmNvbnN0IHN0eWxlU2hlZXRzTWFwID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVXaGl0ZXNwYWNlKGlucHV0LCBzdGFydEluZGVudCA9IDApIHtcbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC8oXltcXG5cXHNcXHQgXSspfChbXFxuXFxzXFx0IF0rJCkrL2csIFwiXCIpO1xuXG4gIGxldCBpID0gaW5wdXQuaW5kZXhPZihcIlxcblwiKTtcbiAgaWYgKGkgPiAtMSkge1xuICAgIGxldCBpbmRlbnQgPSAwIC0gc3RhcnRJbmRlbnQgLSAyO1xuICAgIGZvciAoaSArPSAxOyBpbnB1dFtpXSA9PT0gXCIgXCIgJiYgaSA8IGlucHV0Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpbmRlbnQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcbiArL2csIHQgPT5cbiAgICAgIHQuc3Vic3RyKDAsIE1hdGgubWF4KHQubGVuZ3RoIC0gaW5kZW50LCAxKSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gYmVhdXRpZnlUZW1wbGF0ZUxvZyhpbnB1dCwgaW5kZXgpIHtcbiAgY29uc3QgcGxhY2Vob2xkZXIgPSBnZXRQbGFjZWhvbGRlcihpbmRleCk7XG5cbiAgY29uc3Qgb3V0cHV0ID0gbm9ybWFsaXplV2hpdGVzcGFjZShpbnB1dClcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKGkgPT4gaSlcbiAgICAubWFwKGxpbmUgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGxpbmUuaW5kZXhPZihwbGFjZWhvbGRlcik7XG5cbiAgICAgIGlmIChzdGFydEluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIGB8ICR7bGluZX1cXG4tLSR7XCItXCIucmVwZWF0KHN0YXJ0SW5kZXgpfSR7XCJeXCIucmVwZWF0KDYpfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgfCAke2xpbmV9YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuICAgIC5yZXBsYWNlKFBMQUNFSE9MREVSX1JFR0VYUF9BTEwsIFwiJHsuLi59XCIpO1xuXG4gIHJldHVybiBgJHtvdXRwdXR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVUZW1wbGF0ZShyYXdQYXJ0cywgaXNTVkcsIHN0eWxlcykge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKTtcbiAgY29uc3QgcGFydHMgPSBbXTtcblxuICBsZXQgc2lnbmF0dXJlID0gY3JlYXRlU2lnbmF0dXJlKHJhd1BhcnRzLCBzdHlsZXMpO1xuICBpZiAoaXNTVkcpIHNpZ25hdHVyZSA9IGA8c3ZnPiR7c2lnbmF0dXJlfTwvc3ZnPmA7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChJU19JRSkge1xuICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IHNpZ25hdHVyZTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDx0ZW1wbGF0ZT4ke3NpZ25hdHVyZX08L3RlbXBsYXRlPmA7XG4gICAgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChjb250YWluZXIuY2hpbGRyZW5bMF0uY29udGVudCk7XG4gIH1cblxuICBpZiAoaXNTVkcpIHtcbiAgICBjb25zdCBzdmdSb290ID0gdGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkO1xuICAgIHRlbXBsYXRlLmNvbnRlbnQucmVtb3ZlQ2hpbGQoc3ZnUm9vdCk7XG4gICAgQXJyYXkuZnJvbShzdmdSb290LmNoaWxkTm9kZXMpLmZvckVhY2gobm9kZSA9PlxuICAgICAgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChub2RlKSxcbiAgICApO1xuICB9XG5cbiAgcmVwbGFjZUNvbW1lbnRzKHRlbXBsYXRlLmNvbnRlbnQpO1xuXG4gIGNvbnN0IGNvbXBpbGVXYWxrZXIgPSBjcmVhdGVXYWxrZXIodGVtcGxhdGUuY29udGVudCk7XG4gIGxldCBjb21waWxlSW5kZXggPSAwO1xuXG4gIHdoaWxlIChjb21waWxlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICBjb25zdCBub2RlID0gY29tcGlsZVdhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAgIGlmICghdGV4dC5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0ZXh0Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9BTEwpO1xuICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgcmVzdWx0c1xuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgcGxhY2Vob2xkZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbYmVmb3JlLCBuZXh0XSA9IGFjYy5wb3AoKS5zcGxpdChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgaWYgKGJlZm9yZSkgYWNjLnB1c2goYmVmb3JlKTtcbiAgICAgICAgICAgICAgICBhY2MucHVzaChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQpIGFjYy5wdXNoKG5leHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFt0ZXh0XSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChwYXJ0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS50ZXh0Q29udGVudCA9IHBhcnQ7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcnQpLFxuICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXF1YWwgPSBub2RlLnRleHRDb250ZW50Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICAgIHBhcnRzW2VxdWFsWzFdXSA9IFtjb21waWxlSW5kZXgsIHJlc29sdmVWYWx1ZV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBBcnJheS5mcm9tKG5vZGUuYXR0cmlidXRlcykuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgY29uc3QgbmFtZSA9IElTX0lFID8gYXR0ci5uYW1lLnJlcGxhY2UoQVRUUl9QUkVGSVgsIFwiXCIpIDogYXR0ci5uYW1lO1xuICAgICAgICAgIGNvbnN0IGVxdWFsID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMKTtcbiAgICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGdldFByb3BlcnR5TmFtZShyYXdQYXJ0c1tlcXVhbFsxXV0pO1xuICAgICAgICAgICAgcGFydHNbZXF1YWxbMV1dID0gW1xuICAgICAgICAgICAgICBjb21waWxlSW5kZXgsXG4gICAgICAgICAgICAgIHJlc29sdmVQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0FMTCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0aWFsTmFtZSA9IGBhdHRyX18ke25hbWV9YDtcblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHBsYWNlaG9sZGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIGlkXSA9IHBsYWNlaG9sZGVyLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgICAgICAgcGFydHNbaWRdID0gW1xuICAgICAgICAgICAgICAgICAgY29tcGlsZUluZGV4LFxuICAgICAgICAgICAgICAgICAgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJ0aWFsTmFtZV0gPSAoZGF0YVtwYXJ0aWFsTmFtZV0gfHwgdmFsdWUpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0clZhbHVlID09IG51bGwgPyBcIlwiIDogYXR0clZhbHVlLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMSB8fCBpbmRleCArIDEgPT09IHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZShuYW1lLCBkYXRhW3BhcnRpYWxOYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJ0aWFsTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgYXR0ci52YWx1ZSA9IFwiXCI7XG5cbiAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgaWYgKElTX0lFICYmIG5hbWUgIT09IGF0dHIubmFtZSkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIubmFtZSk7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgXCJcIik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVRlbXBsYXRlSW5zdGFuY2UoaG9zdCwgdGFyZ2V0LCBhcmdzLCBzdHlsZVNoZWV0cykge1xuICAgIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHsgdHlwZTogXCJmdW5jdGlvblwiIH0pO1xuXG4gICAgaWYgKHRlbXBsYXRlICE9PSBkYXRhLnRlbXBsYXRlKSB7XG4gICAgICBpZiAoZGF0YS50ZW1wbGF0ZSB8fCB0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIHJlbW92ZVRlbXBsYXRlKHRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGEucHJldkFyZ3MgPSBudWxsO1xuXG4gICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmltcG9ydE5vZGUoXG4gICAgICAgIGFwcGx5U2hhZHlDU1ModGVtcGxhdGUsIGhvc3QudGFnTmFtZSkuY29udGVudCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlbmRlcldhbGtlciA9IGNyZWF0ZVdhbGtlcihmcmFnbWVudCk7XG4gICAgICBjb25zdCBjbG9uZWRQYXJ0cyA9IHBhcnRzLnNsaWNlKDApO1xuXG4gICAgICBsZXQgcmVuZGVySW5kZXggPSAwO1xuICAgICAgbGV0IGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcblxuICAgICAgY29uc3QgbWFya2VycyA9IFtdO1xuXG4gICAgICBkYXRhLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICBkYXRhLm1hcmtlcnMgPSBtYXJrZXJzO1xuXG4gICAgICB3aGlsZSAocmVuZGVyV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlbmRlcldhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwudGVzdChub2RlLnRleHRDb250ZW50KSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICAgICAgfSBlbHNlIGlmIChJU19JRSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShBVFRSX1JFR0VYUCwgXCJcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJlxuICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5vZGUudGFnTmFtZS5pbmRleE9mKFwiLVwiKSA+IC0xICYmXG4gICAgICAgICAgICAhY3VzdG9tRWxlbWVudHMuZ2V0KG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBNaXNzaW5nICR7c3RyaW5naWZ5RWxlbWVudChcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICApfSBlbGVtZW50IGRlZmluaXRpb24gaW4gJHtzdHJpbmdpZnlFbGVtZW50KGhvc3QpfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChjdXJyZW50UGFydCAmJiBjdXJyZW50UGFydFswXSA9PT0gcmVuZGVySW5kZXgpIHtcbiAgICAgICAgICBtYXJrZXJzLnB1c2goW25vZGUsIGN1cnJlbnRQYXJ0WzFdXSk7XG4gICAgICAgICAgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVuZGVySW5kZXggKz0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgZGF0YS5zdGFydE5vZGUgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICBkYXRhLmVuZE5vZGUgPSBmcmFnbWVudC5jaGlsZE5vZGVzW2ZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG5cbiAgICAgICAgbGV0IGNoaWxkID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgICAgY2hpbGQgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFkb3B0ZWRTdHlsZVNoZWV0cyA9IHRhcmdldC5hZG9wdGVkU3R5bGVTaGVldHM7XG4gICAgaWYgKHN0eWxlU2hlZXRzKSB7XG4gICAgICBsZXQgaXNFcXVhbCA9IGZhbHNlO1xuXG4gICAgICBzdHlsZVNoZWV0cyA9IHN0eWxlU2hlZXRzLm1hcChzdHlsZSA9PiB7XG4gICAgICAgIGlmIChzdHlsZSBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQpIHJldHVybiBzdHlsZTtcblxuICAgICAgICBsZXQgc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzTWFwLmdldChzdHlsZSk7XG4gICAgICAgIGlmICghc3R5bGVTaGVldCkge1xuICAgICAgICAgIHN0eWxlU2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldCgpO1xuICAgICAgICAgIHN0eWxlU2hlZXQucmVwbGFjZVN5bmMoc3R5bGUpO1xuICAgICAgICAgIHN0eWxlU2hlZXRzTWFwLnNldChzdHlsZSwgc3R5bGVTaGVldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gYWRvcHRlZFN0eWxlU2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBpc0VxdWFsID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgIGlmIChzdHlsZVNoZWV0c1tpXSAhPT0gYWRvcHRlZFN0eWxlU2hlZXRzW2ldKSB7XG4gICAgICAgICAgICBpc0VxdWFsID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0VxdWFsKSB0YXJnZXQuYWRvcHRlZFN0eWxlU2hlZXRzID0gc3R5bGVTaGVldHM7XG4gICAgfSBlbHNlIGlmIChhZG9wdGVkU3R5bGVTaGVldHMgJiYgYWRvcHRlZFN0eWxlU2hlZXRzLmxlbmd0aCkge1xuICAgICAgdGFyZ2V0LmFkb3B0ZWRTdHlsZVNoZWV0cyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZBcmdzID0gZGF0YS5wcmV2QXJncztcbiAgICBkYXRhLnByZXZBcmdzID0gYXJncztcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLm1hcmtlcnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBjb25zdCBbbm9kZSwgbWFya2VyXSA9IGRhdGEubWFya2Vyc1tpbmRleF07XG4gICAgICBpZiAoIXByZXZBcmdzIHx8IHByZXZBcmdzW2luZGV4XSAhPT0gYXJnc1tpbmRleF0pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtYXJrZXIoXG4gICAgICAgICAgICBob3N0LFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGFyZ3NbaW5kZXhdLFxuICAgICAgICAgICAgcHJldkFyZ3MgPyBwcmV2QXJnc1tpbmRleF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYEZvbGxvd2luZyBlcnJvciB3YXMgdGhyb3duIHdoZW4gdXBkYXRpbmcgYSB0ZW1wbGF0ZSBleHByZXNzaW9uIGluICR7c3RyaW5naWZ5RWxlbWVudChcbiAgICAgICAgICAgICAgICBob3N0LFxuICAgICAgICAgICAgICApfVxcbiR7YmVhdXRpZnlUZW1wbGF0ZUxvZyhzaWduYXR1cmUsIGluZGV4KX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgc2hhZHlDU1Moc2hhZHkgPT4ge1xuICAgICAgICBpZiAoaG9zdC5zaGFkb3dSb290KSB7XG4gICAgICAgICAgaWYgKHByZXZBcmdzKSB7XG4gICAgICAgICAgICBzaGFkeS5zdHlsZVN1YnRyZWUoaG9zdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNoYWR5LnN0eWxlRWxlbWVudChob3N0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { storePointer } from \"../utils.js\";\n\nfunction resolveValue(_ref, setter) {\n var target = _ref.target;\n var value;\n\n switch (target.type) {\n case \"radio\":\n case \"checkbox\":\n value = target.checked && target.value;\n break;\n\n case \"file\":\n value = target.files;\n break;\n\n default:\n value = target.value;\n }\n\n setter(value);\n}\n\nfunction getPartialObject(name, value) {\n return name.split(\".\").reverse().reduce(function (acc, key) {\n if (!acc) return _defineProperty({}, key, value);\n return _defineProperty({}, key, acc);\n }, null);\n}\n\nvar stringCache = new Map();\nexport function set(property, valueOrPath) {\n if (!property) {\n throw Error(\"The first argument must be a property name or an object instance: \".concat(property));\n }\n\n if (_typeof(property) === \"object\") {\n if (valueOrPath === undefined) {\n throw Error(\"For model instance property the second argument must be defined\");\n }\n\n var store = storePointer.get(property);\n\n if (!store) {\n throw Error(\"Provided object must be a model instance of the store\");\n }\n\n return function (host, event) {\n resolveValue(event, function (value) {\n store.set(property, valueOrPath !== null ? getPartialObject(valueOrPath, value) : valueOrPath);\n });\n };\n }\n\n if (arguments.length === 2) {\n return function (host) {\n host[property] = valueOrPath;\n };\n }\n\n var fn = stringCache.get(property);\n\n if (!fn) {\n fn = function fn(host, event) {\n resolveValue(event, function (value) {\n host[property] = value;\n });\n };\n\n stringCache.set(property, fn);\n }\n\n return fn;\n}\nvar promiseMap = new WeakMap();\nexport function resolve(promise, placeholder) {\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n return function (host, target) {\n var timeout;\n\n if (placeholder) {\n timeout = setTimeout(function () {\n timeout = undefined;\n requestAnimationFrame(function () {\n placeholder(host, target);\n });\n }, delay);\n }\n\n promiseMap.set(target, promise);\n promise.then(function (template) {\n if (timeout) clearTimeout(timeout);\n\n if (promiseMap.get(target) === promise) {\n template(host, target);\n promiseMap.set(target, null);\n }\n });\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbInN0b3JlUG9pbnRlciIsInJlc29sdmVWYWx1ZSIsInNldHRlciIsInRhcmdldCIsInZhbHVlIiwidHlwZSIsImNoZWNrZWQiLCJmaWxlcyIsImdldFBhcnRpYWxPYmplY3QiLCJuYW1lIiwic3BsaXQiLCJyZXZlcnNlIiwicmVkdWNlIiwiYWNjIiwia2V5Iiwic3RyaW5nQ2FjaGUiLCJNYXAiLCJzZXQiLCJwcm9wZXJ0eSIsInZhbHVlT3JQYXRoIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJzdG9yZSIsImdldCIsImhvc3QiLCJldmVudCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZuIiwicHJvbWlzZU1hcCIsIldlYWtNYXAiLCJyZXNvbHZlIiwicHJvbWlzZSIsInBsYWNlaG9sZGVyIiwiZGVsYXkiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInRoZW4iLCJ0ZW1wbGF0ZSIsImNsZWFyVGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFlBQVQsUUFBNkIsYUFBN0I7O0FBRUEsU0FBU0MsWUFBVCxPQUFrQ0MsTUFBbEMsRUFBMEM7QUFBQSxNQUFsQkMsTUFBa0IsUUFBbEJBLE1BQWtCO0FBQ3hDLE1BQUlDLEtBQUo7O0FBRUEsVUFBUUQsTUFBTSxDQUFDRSxJQUFmO0FBQ0UsU0FBSyxPQUFMO0FBQ0EsU0FBSyxVQUFMO0FBQ0VELE1BQUFBLEtBQUssR0FBR0QsTUFBTSxDQUFDRyxPQUFQLElBQWtCSCxNQUFNLENBQUNDLEtBQWpDO0FBQ0E7O0FBQ0YsU0FBSyxNQUFMO0FBQ0VBLE1BQUFBLEtBQUssR0FBR0QsTUFBTSxDQUFDSSxLQUFmO0FBQ0E7O0FBQ0Y7QUFDRUgsTUFBQUEsS0FBSyxHQUFHRCxNQUFNLENBQUNDLEtBQWY7QUFUSjs7QUFZQUYsRUFBQUEsTUFBTSxDQUFDRSxLQUFELENBQU47QUFDRDs7QUFFRCxTQUFTSSxnQkFBVCxDQUEwQkMsSUFBMUIsRUFBZ0NMLEtBQWhDLEVBQXVDO0FBQ3JDLFNBQU9LLElBQUksQ0FDUkMsS0FESSxDQUNFLEdBREYsRUFFSkMsT0FGSSxHQUdKQyxNQUhJLENBR0csVUFBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQWM7QUFDcEIsUUFBSSxDQUFDRCxHQUFMLEVBQVUsMkJBQVVDLEdBQVYsRUFBZ0JWLEtBQWhCO0FBQ1YsK0JBQVVVLEdBQVYsRUFBZ0JELEdBQWhCO0FBQ0QsR0FOSSxFQU1GLElBTkUsQ0FBUDtBQU9EOztBQUVELElBQU1FLFdBQVcsR0FBRyxJQUFJQyxHQUFKLEVBQXBCO0FBRUEsT0FBTyxTQUFTQyxHQUFULENBQWFDLFFBQWIsRUFBdUJDLFdBQXZCLEVBQW9DO0FBQ3pDLE1BQUksQ0FBQ0QsUUFBTCxFQUFlO0FBQ2IsVUFBTUUsS0FBSyw2RUFDNERGLFFBRDVELEVBQVg7QUFHRDs7QUFFRCxNQUFJLFFBQU9BLFFBQVAsTUFBb0IsUUFBeEIsRUFBa0M7QUFDaEMsUUFBSUMsV0FBVyxLQUFLRSxTQUFwQixFQUErQjtBQUM3QixZQUFNRCxLQUFLLENBQ1QsaUVBRFMsQ0FBWDtBQUdEOztBQUVELFFBQU1FLEtBQUssR0FBR3RCLFlBQVksQ0FBQ3VCLEdBQWIsQ0FBaUJMLFFBQWpCLENBQWQ7O0FBRUEsUUFBSSxDQUFDSSxLQUFMLEVBQVk7QUFDVixZQUFNRixLQUFLLENBQUMsdURBQUQsQ0FBWDtBQUNEOztBQUVELFdBQU8sVUFBQ0ksSUFBRCxFQUFPQyxLQUFQLEVBQWlCO0FBQ3RCeEIsTUFBQUEsWUFBWSxDQUFDd0IsS0FBRCxFQUFRLFVBQUFyQixLQUFLLEVBQUk7QUFDM0JrQixRQUFBQSxLQUFLLENBQUNMLEdBQU4sQ0FDRUMsUUFERixFQUVFQyxXQUFXLEtBQUssSUFBaEIsR0FDSVgsZ0JBQWdCLENBQUNXLFdBQUQsRUFBY2YsS0FBZCxDQURwQixHQUVJZSxXQUpOO0FBTUQsT0FQVyxDQUFaO0FBUUQsS0FURDtBQVVEOztBQUVELE1BQUlPLFNBQVMsQ0FBQ0MsTUFBVixLQUFxQixDQUF6QixFQUE0QjtBQUMxQixXQUFPLFVBQUFILElBQUksRUFBSTtBQUNiQSxNQUFBQSxJQUFJLENBQUNOLFFBQUQsQ0FBSixHQUFpQkMsV0FBakI7QUFDRCxLQUZEO0FBR0Q7O0FBRUQsTUFBSVMsRUFBRSxHQUFHYixXQUFXLENBQUNRLEdBQVosQ0FBZ0JMLFFBQWhCLENBQVQ7O0FBRUEsTUFBSSxDQUFDVSxFQUFMLEVBQVM7QUFDUEEsSUFBQUEsRUFBRSxHQUFHLFlBQUNKLElBQUQsRUFBT0MsS0FBUCxFQUFpQjtBQUNwQnhCLE1BQUFBLFlBQVksQ0FBQ3dCLEtBQUQsRUFBUSxVQUFBckIsS0FBSyxFQUFJO0FBQzNCb0IsUUFBQUEsSUFBSSxDQUFDTixRQUFELENBQUosR0FBaUJkLEtBQWpCO0FBQ0QsT0FGVyxDQUFaO0FBR0QsS0FKRDs7QUFNQVcsSUFBQUEsV0FBVyxDQUFDRSxHQUFaLENBQWdCQyxRQUFoQixFQUEwQlUsRUFBMUI7QUFDRDs7QUFFRCxTQUFPQSxFQUFQO0FBQ0Q7QUFFRCxJQUFNQyxVQUFVLEdBQUcsSUFBSUMsT0FBSixFQUFuQjtBQUNBLE9BQU8sU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBMEJDLFdBQTFCLEVBQW9EO0FBQUEsTUFBYkMsS0FBYSx1RUFBTCxHQUFLO0FBQ3pELFNBQU8sVUFBQ1YsSUFBRCxFQUFPckIsTUFBUCxFQUFrQjtBQUN2QixRQUFJZ0MsT0FBSjs7QUFFQSxRQUFJRixXQUFKLEVBQWlCO0FBQ2ZFLE1BQUFBLE9BQU8sR0FBR0MsVUFBVSxDQUFDLFlBQU07QUFDekJELFFBQUFBLE9BQU8sR0FBR2QsU0FBVjtBQUVBZ0IsUUFBQUEscUJBQXFCLENBQUMsWUFBTTtBQUMxQkosVUFBQUEsV0FBVyxDQUFDVCxJQUFELEVBQU9yQixNQUFQLENBQVg7QUFDRCxTQUZvQixDQUFyQjtBQUdELE9BTm1CLEVBTWpCK0IsS0FOaUIsQ0FBcEI7QUFPRDs7QUFFREwsSUFBQUEsVUFBVSxDQUFDWixHQUFYLENBQWVkLE1BQWYsRUFBdUI2QixPQUF2QjtBQUVBQSxJQUFBQSxPQUFPLENBQUNNLElBQVIsQ0FBYSxVQUFBQyxRQUFRLEVBQUk7QUFDdkIsVUFBSUosT0FBSixFQUFhSyxZQUFZLENBQUNMLE9BQUQsQ0FBWjs7QUFFYixVQUFJTixVQUFVLENBQUNOLEdBQVgsQ0FBZXBCLE1BQWYsTUFBMkI2QixPQUEvQixFQUF3QztBQUN0Q08sUUFBQUEsUUFBUSxDQUFDZixJQUFELEVBQU9yQixNQUFQLENBQVI7QUFDQTBCLFFBQUFBLFVBQVUsQ0FBQ1osR0FBWCxDQUFlZCxNQUFmLEVBQXVCLElBQXZCO0FBQ0Q7QUFDRixLQVBEO0FBUUQsR0F2QkQ7QUF3QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdG9yZVBvaW50ZXIgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKHsgdGFyZ2V0IH0sIHNldHRlcikge1xuICBsZXQgdmFsdWU7XG5cbiAgc3dpdGNoICh0YXJnZXQudHlwZSkge1xuICAgIGNhc2UgXCJyYWRpb1wiOlxuICAgIGNhc2UgXCJjaGVja2JveFwiOlxuICAgICAgdmFsdWUgPSB0YXJnZXQuY2hlY2tlZCAmJiB0YXJnZXQudmFsdWU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZmlsZVwiOlxuICAgICAgdmFsdWUgPSB0YXJnZXQuZmlsZXM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdmFsdWUgPSB0YXJnZXQudmFsdWU7XG4gIH1cblxuICBzZXR0ZXIodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJ0aWFsT2JqZWN0KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBuYW1lXG4gICAgLnNwbGl0KFwiLlwiKVxuICAgIC5yZXZlcnNlKClcbiAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgaWYgKCFhY2MpIHJldHVybiB7IFtrZXldOiB2YWx1ZSB9O1xuICAgICAgcmV0dXJuIHsgW2tleV06IGFjYyB9O1xuICAgIH0sIG51bGwpO1xufVxuXG5jb25zdCBzdHJpbmdDYWNoZSA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldChwcm9wZXJ0eSwgdmFsdWVPclBhdGgpIHtcbiAgaWYgKCFwcm9wZXJ0eSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgcHJvcGVydHkgbmFtZSBvciBhbiBvYmplY3QgaW5zdGFuY2U6ICR7cHJvcGVydHl9YCxcbiAgICApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gXCJvYmplY3RcIikge1xuICAgIGlmICh2YWx1ZU9yUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJGb3IgbW9kZWwgaW5zdGFuY2UgcHJvcGVydHkgdGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGRlZmluZWRcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmUgPSBzdG9yZVBvaW50ZXIuZ2V0KHByb3BlcnR5KTtcblxuICAgIGlmICghc3RvcmUpIHtcbiAgICAgIHRocm93IEVycm9yKFwiUHJvdmlkZWQgb2JqZWN0IG11c3QgYmUgYSBtb2RlbCBpbnN0YW5jZSBvZiB0aGUgc3RvcmVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIChob3N0LCBldmVudCkgPT4ge1xuICAgICAgcmVzb2x2ZVZhbHVlKGV2ZW50LCB2YWx1ZSA9PiB7XG4gICAgICAgIHN0b3JlLnNldChcbiAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICB2YWx1ZU9yUGF0aCAhPT0gbnVsbFxuICAgICAgICAgICAgPyBnZXRQYXJ0aWFsT2JqZWN0KHZhbHVlT3JQYXRoLCB2YWx1ZSlcbiAgICAgICAgICAgIDogdmFsdWVPclBhdGgsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICByZXR1cm4gaG9zdCA9PiB7XG4gICAgICBob3N0W3Byb3BlcnR5XSA9IHZhbHVlT3JQYXRoO1xuICAgIH07XG4gIH1cblxuICBsZXQgZm4gPSBzdHJpbmdDYWNoZS5nZXQocHJvcGVydHkpO1xuXG4gIGlmICghZm4pIHtcbiAgICBmbiA9IChob3N0LCBldmVudCkgPT4ge1xuICAgICAgcmVzb2x2ZVZhbHVlKGV2ZW50LCB2YWx1ZSA9PiB7XG4gICAgICAgIGhvc3RbcHJvcGVydHldID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgc3RyaW5nQ2FjaGUuc2V0KHByb3BlcnR5LCBmbik7XG4gIH1cblxuICByZXR1cm4gZm47XG59XG5cbmNvbnN0IHByb21pc2VNYXAgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUocHJvbWlzZSwgcGxhY2Vob2xkZXIsIGRlbGF5ID0gMjAwKSB7XG4gIHJldHVybiAoaG9zdCwgdGFyZ2V0KSA9PiB7XG4gICAgbGV0IHRpbWVvdXQ7XG5cbiAgICBpZiAocGxhY2Vob2xkZXIpIHtcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGltZW91dCA9IHVuZGVmaW5lZDtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHBsYWNlaG9sZGVyKGhvc3QsIHRhcmdldCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIHByb21pc2VNYXAuc2V0KHRhcmdldCwgcHJvbWlzZSk7XG5cbiAgICBwcm9taXNlLnRoZW4odGVtcGxhdGUgPT4ge1xuICAgICAgaWYgKHRpbWVvdXQpIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblxuICAgICAgaWYgKHByb21pc2VNYXAuZ2V0KHRhcmdldCkgPT09IHByb21pc2UpIHtcbiAgICAgICAgdGVtcGxhdGUoaG9zdCwgdGFyZ2V0KTtcbiAgICAgICAgcHJvbWlzZU1hcC5zZXQodGFyZ2V0LCBudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==","import defineElements from \"../define.js\";\nimport { compileTemplate, getPlaceholder } from \"./core.js\";\nimport * as helpers from \"./helpers.js\";\nvar PLACEHOLDER = getPlaceholder();\nvar SVG_PLACEHOLDER = getPlaceholder(\"svg\");\nvar STYLE_IMPORT_REGEXP = /@import/;\nvar templatesMap = new Map();\nvar stylesMap = new WeakMap();\nvar methods = {\n define: function define(elements) {\n defineElements(elements);\n return this;\n },\n key: function key(id) {\n this.id = id;\n return this;\n },\n style: function style() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n stylesMap.set(this, styles.filter(function (style) {\n return style;\n }));\n return this;\n }\n};\n\nfunction create(parts, args, isSVG) {\n var createTemplate = function createTemplate(host) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : host;\n var styles = stylesMap.get(createTemplate);\n var hasAdoptedStyleSheets;\n var id = parts.join(PLACEHOLDER);\n\n if (styles) {\n var joinedStyles = styles.join(PLACEHOLDER);\n hasAdoptedStyleSheets = !!target.adoptedStyleSheets && !STYLE_IMPORT_REGEXP.test(joinedStyles);\n if (!hasAdoptedStyleSheets) id += joinedStyles;\n }\n\n if (isSVG) id += SVG_PLACEHOLDER;\n var render = templatesMap.get(id);\n\n if (!render) {\n render = compileTemplate(parts, isSVG, !hasAdoptedStyleSheets && styles);\n templatesMap.set(id, render);\n }\n\n render(host, target, args, hasAdoptedStyleSheets && styles);\n };\n\n return Object.assign(createTemplate, methods);\n}\n\nexport function html(parts) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return create(parts, args);\n}\nexport function svg(parts) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return create(parts, args, true);\n}\nObject.assign(html, helpers);\nObject.assign(svg, helpers);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZpbmVFbGVtZW50cyIsImNvbXBpbGVUZW1wbGF0ZSIsImdldFBsYWNlaG9sZGVyIiwiaGVscGVycyIsIlBMQUNFSE9MREVSIiwiU1ZHX1BMQUNFSE9MREVSIiwiU1RZTEVfSU1QT1JUX1JFR0VYUCIsInRlbXBsYXRlc01hcCIsIk1hcCIsInN0eWxlc01hcCIsIldlYWtNYXAiLCJtZXRob2RzIiwiZGVmaW5lIiwiZWxlbWVudHMiLCJrZXkiLCJpZCIsInN0eWxlIiwic3R5bGVzIiwic2V0IiwiZmlsdGVyIiwiY3JlYXRlIiwicGFydHMiLCJhcmdzIiwiaXNTVkciLCJjcmVhdGVUZW1wbGF0ZSIsImhvc3QiLCJ0YXJnZXQiLCJnZXQiLCJoYXNBZG9wdGVkU3R5bGVTaGVldHMiLCJqb2luIiwiam9pbmVkU3R5bGVzIiwiYWRvcHRlZFN0eWxlU2hlZXRzIiwidGVzdCIsInJlbmRlciIsIk9iamVjdCIsImFzc2lnbiIsImh0bWwiLCJzdmciXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGNBQVAsTUFBMkIsY0FBM0I7QUFFQSxTQUFTQyxlQUFULEVBQTBCQyxjQUExQixRQUFnRCxXQUFoRDtBQUNBLE9BQU8sS0FBS0MsT0FBWixNQUF5QixjQUF6QjtBQUVBLElBQU1DLFdBQVcsR0FBR0YsY0FBYyxFQUFsQztBQUNBLElBQU1HLGVBQWUsR0FBR0gsY0FBYyxDQUFDLEtBQUQsQ0FBdEM7QUFDQSxJQUFNSSxtQkFBbUIsR0FBRyxTQUE1QjtBQUVBLElBQU1DLFlBQVksR0FBRyxJQUFJQyxHQUFKLEVBQXJCO0FBQ0EsSUFBTUMsU0FBUyxHQUFHLElBQUlDLE9BQUosRUFBbEI7QUFFQSxJQUFNQyxPQUFPLEdBQUc7QUFDZEMsRUFBQUEsTUFEYyxrQkFDUEMsUUFETyxFQUNHO0FBQ2ZiLElBQUFBLGNBQWMsQ0FBQ2EsUUFBRCxDQUFkO0FBQ0EsV0FBTyxJQUFQO0FBQ0QsR0FKYTtBQUtkQyxFQUFBQSxHQUxjLGVBS1ZDLEVBTFUsRUFLTjtBQUNOLFNBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNBLFdBQU8sSUFBUDtBQUNELEdBUmE7QUFTZEMsRUFBQUEsS0FUYyxtQkFTRztBQUFBLHNDQUFSQyxNQUFRO0FBQVJBLE1BQUFBLE1BQVE7QUFBQTs7QUFDZlIsSUFBQUEsU0FBUyxDQUFDUyxHQUFWLENBQ0UsSUFERixFQUVFRCxNQUFNLENBQUNFLE1BQVAsQ0FBYyxVQUFBSCxLQUFLO0FBQUEsYUFBSUEsS0FBSjtBQUFBLEtBQW5CLENBRkY7QUFJQSxXQUFPLElBQVA7QUFDRDtBQWZhLENBQWhCOztBQWtCQSxTQUFTSSxNQUFULENBQWdCQyxLQUFoQixFQUF1QkMsSUFBdkIsRUFBNkJDLEtBQTdCLEVBQW9DO0FBQ2xDLE1BQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsSUFBRCxFQUF5QjtBQUFBLFFBQWxCQyxNQUFrQix1RUFBVEQsSUFBUztBQUM5QyxRQUFNUixNQUFNLEdBQUdSLFNBQVMsQ0FBQ2tCLEdBQVYsQ0FBY0gsY0FBZCxDQUFmO0FBQ0EsUUFBSUkscUJBQUo7QUFDQSxRQUFJYixFQUFFLEdBQUdNLEtBQUssQ0FBQ1EsSUFBTixDQUFXekIsV0FBWCxDQUFUOztBQUVBLFFBQUlhLE1BQUosRUFBWTtBQUNWLFVBQU1hLFlBQVksR0FBR2IsTUFBTSxDQUFDWSxJQUFQLENBQVl6QixXQUFaLENBQXJCO0FBQ0F3QixNQUFBQSxxQkFBcUIsR0FDbkIsQ0FBQyxDQUFDRixNQUFNLENBQUNLLGtCQUFULElBQStCLENBQUN6QixtQkFBbUIsQ0FBQzBCLElBQXBCLENBQXlCRixZQUF6QixDQURsQztBQUVBLFVBQUksQ0FBQ0YscUJBQUwsRUFBNEJiLEVBQUUsSUFBSWUsWUFBTjtBQUM3Qjs7QUFFRCxRQUFJUCxLQUFKLEVBQVdSLEVBQUUsSUFBSVYsZUFBTjtBQUVYLFFBQUk0QixNQUFNLEdBQUcxQixZQUFZLENBQUNvQixHQUFiLENBQWlCWixFQUFqQixDQUFiOztBQUNBLFFBQUksQ0FBQ2tCLE1BQUwsRUFBYTtBQUNYQSxNQUFBQSxNQUFNLEdBQUdoQyxlQUFlLENBQUNvQixLQUFELEVBQVFFLEtBQVIsRUFBZSxDQUFDSyxxQkFBRCxJQUEwQlgsTUFBekMsQ0FBeEI7QUFDQVYsTUFBQUEsWUFBWSxDQUFDVyxHQUFiLENBQWlCSCxFQUFqQixFQUFxQmtCLE1BQXJCO0FBQ0Q7O0FBRURBLElBQUFBLE1BQU0sQ0FBQ1IsSUFBRCxFQUFPQyxNQUFQLEVBQWVKLElBQWYsRUFBcUJNLHFCQUFxQixJQUFJWCxNQUE5QyxDQUFOO0FBQ0QsR0FyQkQ7O0FBdUJBLFNBQU9pQixNQUFNLENBQUNDLE1BQVAsQ0FBY1gsY0FBZCxFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEOztBQUVELE9BQU8sU0FBU3lCLElBQVQsQ0FBY2YsS0FBZCxFQUE4QjtBQUFBLHFDQUFOQyxJQUFNO0FBQU5BLElBQUFBLElBQU07QUFBQTs7QUFDbkMsU0FBT0YsTUFBTSxDQUFDQyxLQUFELEVBQVFDLElBQVIsQ0FBYjtBQUNEO0FBRUQsT0FBTyxTQUFTZSxHQUFULENBQWFoQixLQUFiLEVBQTZCO0FBQUEscUNBQU5DLElBQU07QUFBTkEsSUFBQUEsSUFBTTtBQUFBOztBQUNsQyxTQUFPRixNQUFNLENBQUNDLEtBQUQsRUFBUUMsSUFBUixFQUFjLElBQWQsQ0FBYjtBQUNEO0FBRURZLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjQyxJQUFkLEVBQW9CakMsT0FBcEI7QUFDQStCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRSxHQUFkLEVBQW1CbEMsT0FBbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lRWxlbWVudHMgZnJvbSBcIi4uL2RlZmluZS5qc1wiO1xuXG5pbXBvcnQgeyBjb21waWxlVGVtcGxhdGUsIGdldFBsYWNlaG9sZGVyIH0gZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5cbmNvbnN0IFBMQUNFSE9MREVSID0gZ2V0UGxhY2Vob2xkZXIoKTtcbmNvbnN0IFNWR19QTEFDRUhPTERFUiA9IGdldFBsYWNlaG9sZGVyKFwic3ZnXCIpO1xuY29uc3QgU1RZTEVfSU1QT1JUX1JFR0VYUCA9IC9AaW1wb3J0LztcblxuY29uc3QgdGVtcGxhdGVzTWFwID0gbmV3IE1hcCgpO1xuY29uc3Qgc3R5bGVzTWFwID0gbmV3IFdlYWtNYXAoKTtcblxuY29uc3QgbWV0aG9kcyA9IHtcbiAgZGVmaW5lKGVsZW1lbnRzKSB7XG4gICAgZGVmaW5lRWxlbWVudHMoZWxlbWVudHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBrZXkoaWQpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHN0eWxlKC4uLnN0eWxlcykge1xuICAgIHN0eWxlc01hcC5zZXQoXG4gICAgICB0aGlzLFxuICAgICAgc3R5bGVzLmZpbHRlcihzdHlsZSA9PiBzdHlsZSksXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZShwYXJ0cywgYXJncywgaXNTVkcpIHtcbiAgY29uc3QgY3JlYXRlVGVtcGxhdGUgPSAoaG9zdCwgdGFyZ2V0ID0gaG9zdCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc01hcC5nZXQoY3JlYXRlVGVtcGxhdGUpO1xuICAgIGxldCBoYXNBZG9wdGVkU3R5bGVTaGVldHM7XG4gICAgbGV0IGlkID0gcGFydHMuam9pbihQTEFDRUhPTERFUik7XG5cbiAgICBpZiAoc3R5bGVzKSB7XG4gICAgICBjb25zdCBqb2luZWRTdHlsZXMgPSBzdHlsZXMuam9pbihQTEFDRUhPTERFUik7XG4gICAgICBoYXNBZG9wdGVkU3R5bGVTaGVldHMgPVxuICAgICAgICAhIXRhcmdldC5hZG9wdGVkU3R5bGVTaGVldHMgJiYgIVNUWUxFX0lNUE9SVF9SRUdFWFAudGVzdChqb2luZWRTdHlsZXMpO1xuICAgICAgaWYgKCFoYXNBZG9wdGVkU3R5bGVTaGVldHMpIGlkICs9IGpvaW5lZFN0eWxlcztcbiAgICB9XG5cbiAgICBpZiAoaXNTVkcpIGlkICs9IFNWR19QTEFDRUhPTERFUjtcblxuICAgIGxldCByZW5kZXIgPSB0ZW1wbGF0ZXNNYXAuZ2V0KGlkKTtcbiAgICBpZiAoIXJlbmRlcikge1xuICAgICAgcmVuZGVyID0gY29tcGlsZVRlbXBsYXRlKHBhcnRzLCBpc1NWRywgIWhhc0Fkb3B0ZWRTdHlsZVNoZWV0cyAmJiBzdHlsZXMpO1xuICAgICAgdGVtcGxhdGVzTWFwLnNldChpZCwgcmVuZGVyKTtcbiAgICB9XG5cbiAgICByZW5kZXIoaG9zdCwgdGFyZ2V0LCBhcmdzLCBoYXNBZG9wdGVkU3R5bGVTaGVldHMgJiYgc3R5bGVzKTtcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihjcmVhdGVUZW1wbGF0ZSwgbWV0aG9kcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodG1sKHBhcnRzLCAuLi5hcmdzKSB7XG4gIHJldHVybiBjcmVhdGUocGFydHMsIGFyZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3ZnKHBhcnRzLCAuLi5hcmdzKSB7XG4gIHJldHVybiBjcmVhdGUocGFydHMsIGFyZ3MsIHRydWUpO1xufVxuXG5PYmplY3QuYXNzaWduKGh0bWwsIGhlbHBlcnMpO1xuT2JqZWN0LmFzc2lnbihzdmcsIGhlbHBlcnMpO1xuIl19","import Autocomplete from \"@trevoreyre/autocomplete-js\";\nimport { define, html } from \"hybrids\";\n\nvar autocomplete_initialized = false;\n\n\nfunction doAutocomplete(host) {\n const wikiUrl = \"https://en.wikipedia.org\";\n const params = \"action=query&list=search&format=json&origin=*\";\n\n if (!autocomplete_initialized) {\n new Autocomplete(host.divref, {\n // Search function can return a promise\n // which resolves with an array of\n // results. In this case we're using\n // the Wikipedia search API.\n search: (input) => { \n\n// const url = `${wikiUrl}/w/api.php?${params}&srsearch=${encodeURI(input)}`;\n\n const url = `https://tovare.com/search/api/?q=${encodeURI(input)}`\n\n return new Promise((resolve) => {\n if (input.length < 3) {\n return resolve([]);\n }\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n resolve(data); \n });\n });\n },\n // Control the rendering of result items.\n // Let's show the title and snippet\n // from the Wikipedia results\n renderResult: (result, props) => `\n
  • \n
    \n ${result.title}\n
    \n
    \n ${result.summary}\n
    \n
  • \n `,\n\n // Wikipedia returns a format like this:\n //\n // {\n // pageid: 12345,\n // title: 'Article title',\n // ...\n // }\n //\n // We want to display the title\n getResultValue: (result) => result.title,\n\n // Open the selected article in\n // a new window\n onSubmit: (result) => {\n window.open(result.url);\n },\n });\n autocomplete_initialized = true;\n }\n}\nconst SearchElement = {\n value: 1,\n divref: ({ render }) => {\n const target = render();\n return target.querySelector(\"#autocomplete\");\n },\n render: ({ value }) => html`\n \n
    \n \n \n
    \n `,\n};\n\ndefine(\"search-element\", SearchElement);\n"],"names":["$parcel$export","e","n","v","Object","defineProperty","get","enumerable","$parcel$global","globalThis","self","window","global","parcelRequire","parcelRequiree227","$parcel$modules","$parcel$bundles","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","configurable","writable","key","_defineProperty","obj","value","name","module","require","err","Error","code","register","id","exports","registerBundle","fn","matches","element","selector","msMatchesSelector","webkitMatchesSelector","closest","el","nodeType","parentNode","closestPolyfill","isPromise","Boolean","then","AutocompleteCore","_this","this","_ref","arguments","undefined","search","_ref$autoSelect","autoSelect","_ref$setValue","setValue","_ref$setAttribute","setAttribute","_ref$onUpdate","onUpdate","_ref$onSubmit","onSubmit","_ref$onShow","onShow","_ref$onHide","onHide","_ref$onLoading","onLoading","_ref$onLoaded","onLoaded","event","updateResults","selectedIndex","preventDefault","handleArrows","selectResult","selectedResult","results","hideResults","result","parseInt","dataset","resultIndex","resultsCount","currentSearch","searchCounter","showResults","resultsElement","selectedResultElement","querySelector","concat","resultsPosition","getBoundingClientRect","selectedPosition","top","scrollTop","bottom","Promise","resolve","idCounter","uniqueId","prefix","getRelativePosition","element1","element2","position1","position2","height","innerHeight","pageYOffset","debounce","func","wait","immediate","timeout","context","args","later","apply","callNow","clearTimeout","setTimeout","Props","index","baseClass","role","protoProps","staticProps","keys","reduce","str","prototype","Autocomplete","root","_this2","_ref$baseClass","_ref$getResultValue","getResultValue","renderResult","_ref$debounceTime","debounceTime","style","position","input","resultList","zIndex","width","boxSizing","document","body","addEventListener","handleDocumentClick","core","handleInput","handleKeyDown","handleFocus","handleBlur","handleResultMouseDown","handleResultClick","updateStyle","attribute","innerHTML","forEach","resultHTML","insertAdjacentHTML","insertAdjacentElement","resetPosition","checkSelectedResultVisible","expanded","loading","contains","visibility","pointerEvents","handleUpdate","handleShow","handleHide","handleLoading","handleLoaded","initialize","camelToDashMap","Map","camelToDash","replace","toLowerCase","set","shadyCSS","fallback","shady","ShadyCSS","nativeShadow","stringifyElement","String","tagName","IS_IE","storePointer","WeakMap","_typeof","Symbol","iterator","constructor","defaultTransform","objectTransform","freeze","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","callbacks","queue","Set","execute","delete","size","dispatch","requestAnimationFrame","add","entries","getEntry","targetMap","entry","contexts","deps","state","checksum","observed","calculateChecksum","depEntry","dispatchDeep","$844e451069b1253d3129df068a996d80$export$dispatch","restoreDeepDeps","contextStack","getter","validate","has","nextValue","gcList","invalidateEntry","clearValue","deleteValue","clear","deleteEntry","invalidate","observe","lastValue","unsubscribe","cb","$844e451069b1253d3129df068a996d80$export$subscribe","_possibleConstructorReturn","call","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Function","toString","indexOf","Wrapper","_construct","_getPrototypeOf","create","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","a","bind","sham","Proxy","Date","o","p","setPrototypeOf","__proto__","getPrototypeOf","defaultMethod","host","callbacksMap","propsMap","compile","Hybrid","descriptors","hybrids","config","desc","type","customOptions","options","shadowRoot","shadowRootInit","mode","assign","update","attachShadow","flush","$325aa78b9b2c57c854f3e8f4475219c6$export$default","Array","isArray","connect","transform","Number","val","oldValue","attrName","$869305155edd8089e11ddf0413749991$export$camelToDash","hasAttribute","attrValue","getAttribute","$105e66b00437c384b1ab7e2bcfed1770$export$default","$61bab781cd0afcc9ec3dcf3b2c44321f$export$get","newValue","setter","$61bab781cd0afcc9ec3dcf3b2c44321f$export$set","unshift","$61bab781cd0afcc9ec3dcf3b2c44321f$export$observe","$61bab781cd0afcc9ec3dcf3b2c44321f$export$invalidate","disconnects","defineElement","hybridsOrConstructor","CustomElement","customElements","define","_HTMLElement","subClass","superClass","_inherits","Derived","_super","Super","NewTarget","hasOwnProperty","list","HTMLElement","defineMap","elements","acc","map","dataMap","defaultValue","getTemplateEnd","node","data","endNode","removeTemplate","Node","TEXT_NODE","child","childNodes","removeChild","startNode","lastNextSibling","nextSibling","arrayMap","movePlaceholder","previousSibling","$20929cd7d03ee399a03be6dc1f5bacf8$export$dataMap","$20929cd7d03ee399a03be6dc1f5bacf8$export$getTemplateEnd","insertBefore","prevNode","nextNode","resolveValue","$20929cd7d03ee399a03be6dc1f5bacf8$export$removeTemplate","$debc51183093f7a5ef020136551dfff5$export$arrayMap","textContent","lastEntries","item","placeholder","available","ids","lastIndex","matchedEntry","createTextNode","$debc51183093f7a5ef020136551dfff5$export$default","targets","classMap","resolveClassList","previousList","className","normalizeValue","classList","remove","styleMap","resolveStyle","$869305155edd8089e11ddf0413749991$export$stringifyElement","previousMap","nextMap","dashKey","styleValue","setProperty","removeProperty","resolveProperty","propertyName","isSVG","substr","eventType","eventMap","removeEventListener","_eventMap","callback","$ae83d02a22d20519205ae9c90ef3efd8$export$default","$c185258b4889e013b1a3c0b7e20347ee$export$default","$e5e7eb752e11254f3ac3a1fc5528156d$export$default","SVGElement","removeAttribute","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","next","done","_iterableToArrayLimit","minLen","_arrayLikeToArray","slice","from","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","TIMESTAMP","now","getPlaceholder","PLACEHOLDER_REGEXP_TEXT","PLACEHOLDER_REGEXP_EQUAL","RegExp","PLACEHOLDER_REGEXP_ALL","ATTR_PREFIX","ATTR_REGEXP","preparedTemplates","createWalker","ShadyDOM","inUse","currentNode","createTreeWalker","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","container","createElement","styleSheetsMap","compileTemplate","rawParts","styles","template","parts","signature","part","join","match","$869305155edd8089e11ddf0413749991$export$IS_IE","createSignature","content","appendChild","children","svgRoot","firstChild","fragment","createNodeIterator","SHOW_COMMENT","replaceComments","compileWalker","compileIndex","_loop","text","_acc$pop$split2","pop","split","before","equal","$8e9238a58d97c027de7d5a97019bd3b4$export$default","ELEMENT_NODE","attributes","attr","trim","$c4052bb07b7fb3e7df30fdce152660ef$export$default","_results","partialName","styleSheets","prevArgs","importNode","$869305155edd8089e11ddf0413749991$export$shadyCSS","clone","cloneNode","querySelectorAll","count","prepareTemplate","applyShadyCSS","renderWalker","clonedParts","renderIndex","currentPart","shift","markers","previousChild","adoptedStyleSheets","isEqual","CSSStyleSheet","styleSheet","replaceSync","_data$markers$index","_node","marker","error","styleSubtree","styleElement","checked","files","getPartialObject","reverse","stringCache","property","valueOrPath","store","$869305155edd8089e11ddf0413749991$export$storePointer","promiseMap","promise","delay","PLACEHOLDER","$ff7a4bd1b35aaf5a86462e6cac471fe9$export$getPlaceholder","SVG_PLACEHOLDER","STYLE_IMPORT_REGEXP","templatesMap","stylesMap","methods","$1d85de21be0285132cfd3aacf9021153$export$default","_len","_key","createTemplate","hasAdoptedStyleSheets","joinedStyles","render","$ff7a4bd1b35aaf5a86462e6cac471fe9$export$compileTemplate","html","_len2","_key2","$aea07d3b7f28309621b155cdffda3d7e$exports","_len3","_key3","autocomplete_initialized","doAutocomplete","$fec565ab9165d5b5490d62511da3fc83$export$default","divref","url","encodeURI","fetch","response","json","title","summary","open","$ccfcc82a043dc2bc8e90e0a345d42280$export$html"],"version":3,"file":"searchbox.js.map"}