budibase/packages/server/builder/bundle.js.map

1 line
2.7 MiB

{"version":3,"file":"bundle.js","sources":["../../builder/node_modules/svelte/internal/index.mjs","../../builder/src/common/Button.svelte","../../builder/node_modules/budibase-core/budibase-core.esm.mjs","../../builder/src/common/core.js","../../builder/node_modules/svelte/store/index.mjs","../../builder/src/userInterface/pagesParsing/defaultPagesObject.js","../../builder/src/builderStore/api.js","../../builder/src/builderStore/store.js","../../builder/src/builderStore/index.js","../../builder/src/NoPackage.svelte","../../builder/node_modules/feather-icons/dist/feather.js","../../builder/src/common/icon.js","../../builder/src/nav/NavItem.svelte","../../builder/src/nav/Nav.svelte","../../builder/src/database/HierarchyRow.svelte","../../builder/src/common/Textbox.svelte","../../builder/src/common/Dropdown.svelte","../../builder/src/common/ButtonGroup.svelte","../../builder/src/common/NumberBox.svelte","../../builder/src/common/ValuesList.svelte","../../builder/src/common/ErrorsBox.svelte","../../builder/src/common/Checkbox.svelte","../../builder/node_modules/flatpickr/dist/flatpickr.js","../../builder/src/common/DatePicker.svelte","../../builder/src/database/FieldView.svelte","../../builder/node_modules/uikit/dist/js/uikit.js","../../builder/src/common/Modal.svelte","../../builder/src/database/RecordView.svelte","../../builder/src/common/CodeArea.svelte","../../builder/src/database/IndexView.svelte","../../builder/src/database/ActionsHeader.svelte","../../builder/src/common/DropdownButton.svelte","../../builder/src/database/DatabaseRoot.svelte","../../builder/src/actionsAndTriggers/ActionView.svelte","../../builder/src/actionsAndTriggers/Actions.svelte","../../builder/src/actionsAndTriggers/TriggerView.svelte","../../builder/src/actionsAndTriggers/Triggers.svelte","../../builder/src/actionsAndTriggers/ActionsAndTriggersRoot.svelte","../../builder/src/accessLevels/AccessLevelView.svelte","../../builder/src/accessLevels/AccessLevelsRoot.svelte","../../builder/src/PackageRoot.svelte","../../builder/src/App.svelte","../../builder/node_modules/uikit/dist/js/uikit.min.js","../../builder/src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n object.tabIndex = -1;\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_update);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nconst globals = (typeof window !== 'undefined' ? window : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '&#34;')\n .replace(/'/g, '&#39;');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '&quot;',\n \"'\": '&#39;',\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n * @param store readable\n */\nfunction get_store_value(store) {\n let value;\n const unsubscribe = store.subscribe(_ => value = _);\n if (unsubscribe.unsubscribe)\n unsubscribe.unsubscribe();\n else\n unsubscribe();\n return value;\n}\nfunction add_attribute(name, value) {\n if (!value)\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(value) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : ``;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment.m(target, anchor);\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n component.$$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_update);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { SvelteComponent, SvelteComponentDev, SvelteElement, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, assign, attr, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_element, claim_text, clear_loops, createEventDispatcher, create_animation, create_bidirectional_transition, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, debug, destroy_block, destroy_component, destroy_each, detach, detach_after, detach_before, detach_between, dirty_components, each, element, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_slot_changes, get_slot_context, get_spread_update, get_store_value, globals, group_outros, handle_promise, identity, init, insert, intros, invalid_attribute_name_character, is_client, is_function, is_promise, listen, loop, measure, missing_component, mount_component, noop, not_equal, now, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_input_type, set_now, set_raf, set_style, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, validate_component, validate_store, xlink_attr };\n","<script>\r\n\r\nexport let color = \"primary\";\r\nexport let className = \"\";\r\nexport let style = \"\";\r\nexport let groupPosition = \"\";\r\nexport let grouped = false;\r\n\r\n$: borderClass = grouped \r\n ? \"\"\r\n : \"border-normal\";\r\n\r\n</script>\r\n\r\n<button class=\"{color} {className} {borderClass} {grouped ? \"grouped\" : \"\"}\" \r\n style=\"{style}\"\r\n on:click>\r\n <slot/>\r\n</button>\r\n\r\n<style>\r\n\r\n.border-normal { border-radius: var(--borderradiusall); }\r\n.border-left { border-radius: var(--borderradius) 0 0 var(--borderradius); }\r\n.border-right { border-radius: 0 var(--borderradius) var(--borderradius) 0; }\r\n.border-middle { border-radius: 0; }\r\n\r\nbutton { \r\n border-style: solid; \r\n padding: 7px 15px;\r\n cursor:pointer;\r\n}\r\n\r\n/* ---- PRIMARY ----*/\r\n.primary {\r\n background-color: var(--primary100);\r\n border-color: var(--primary100);\r\n color: var(--white);\r\n}\r\n\r\n.primary:hover {\r\n background-color: var(--primary75);\r\n border-color: var(--primary75);\r\n}\r\n\r\n.primary:active {\r\n background-color: var(--primarydark);\r\n border-color: var(--primarydark);\r\n}\r\n\r\n.primary-outline {\r\n background-color: var(--white);\r\n border-color: var(--primary100);\r\n color: var(--primary100);\r\n}\r\n\r\n.primary-outline:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\n.primary-outline:pressed {\r\n background-color: var(--primary25);\r\n}\r\n\r\n/* ---- secondary ----*/\r\n\r\n.secondary {\r\n background-color: var(--secondary100);\r\n border-color: var(--secondary100);\r\n color: var(--white);\r\n}\r\n\r\n.secondary:hover {\r\n background-color: var(--secondary75);\r\n border-color: var(--secondary75);\r\n}\r\n\r\n.secondary:pressed {\r\n background-color: var(--secondarydark);\r\n border-color: var(--secondarydark);\r\n}\r\n\r\n.secondary-outline {\r\n background-color: var(--white);\r\n border-color: var(--secondary100);\r\n color: var(--secondary100);\r\n}\r\n\r\n.secondary-outline:hover {\r\n background-color: var(--secondary10);\r\n}\r\n\r\n.secondary-outline:pressed {\r\n background-color: var(--secondary25);\r\n}\r\n\r\n\r\n/* ---- success ----*/\r\n.success {\r\n background-color: var(--success100);\r\n border-color: var(--success100);\r\n color: var(--white);\r\n}\r\n\r\n.success:hover {\r\n background-color: var(--success75);\r\n border-color: var(--success75);\r\n}\r\n\r\n.success:pressed {\r\n background-color: var(--successdark);\r\n border-color: var(--successdark);\r\n}\r\n\r\n.success-outline {\r\n background-color: var(--white);\r\n border-color: var(--success100);\r\n color: var(--success100);\r\n}\r\n\r\n.success-outline:hover {\r\n background-color: var(--success10);\r\n}\r\n\r\n.success-outline:pressed {\r\n background-color: var(--success25);\r\n}\r\n\r\n/* ---- deletion ----*/\r\n.deletion {\r\n background-color: var(--deletion100);\r\n border-color: var(--deletion100);\r\n color: var(--white);\r\n}\r\n\r\n.deletion:hover {\r\n background-color: var(--deletion75);\r\n border-color: var(--deletion75);\r\n}\r\n\r\n.deletion:pressed {\r\n background-color: var(--deletiondark);\r\n border-color: var(--deletiondark);\r\n}\r\n\r\n.deletion-outline {\r\n background-color: var(--white);\r\n border-color: var(--deletion100);\r\n color: var(--deletion100);\r\n}\r\n\r\n.deletion-outline:hover {\r\n background-color: var(--deletion10);\r\n}\r\n\r\n.deletion-outline:pressed {\r\n background-color: var(--deletion25);\r\n}\r\n\r\n\r\n</style>","import { union, reduce, isUndefined, cloneDeep, split, some, map, filter, isEmpty as isEmpty$1, countBy, includes as includes$1, last, find, constant as constant$1, take, first, intersection, mapValues, isNull as isNull$1, has as has$1, isNumber as isNumber$1, isString as isString$1, isBoolean as isBoolean$1, isDate as isDate$1, isArray as isArray$2, isObject, clone, values, keyBy, keys as keys$1, orderBy, concat, reverse, difference, merge as merge$1, flatten, each, pull, join as join$2, max, defaultCase as defaultCase$1, uniqBy, every, uniqWith, isFunction as isFunction$1, groupBy, differenceBy, intersectionBy, isEqual } from 'lodash/fp';\nimport { generate } from 'shortid';\nimport _, { toNumber, flow, isArray as isArray$1, join as join$1, replace, trim, dropRight, head, takeRight, isUndefined as isUndefined$1, isNull, isNaN as isNaN$1, reduce as reduce$1, isEmpty, constant, tail, includes, startsWith, findIndex, isInteger, isDate, isString, split as split$1, cloneDeep as cloneDeep$1, keys, isFunction, merge, has, isBoolean, isNumber, isObjectLike, assign, some as some$1, each as each$1, find as find$1, orderBy as orderBy$1, union as union$1 } from 'lodash';\nimport { compileCode as compileCode$1, compileExpression as compileExpression$1 } from '@nx-js/compiler-util';\nimport lunr from 'lunr';\nimport { Buffer as Buffer$1 } from 'safe-buffer';\n\nconst commonPlus = extra => union(['onBegin', 'onComplete', 'onError'])(extra);\n\nconst common = () => commonPlus([]);\n\nconst _events = {\n recordApi: {\n save: commonPlus([\n 'onInvalid',\n 'onRecordUpdated',\n 'onRecordCreated']),\n delete: common(),\n getContext: common(),\n getNew: common(),\n load: common(),\n validate: common(),\n uploadFile: common(),\n downloadFile: common(),\n },\n indexApi: {\n buildIndex: common(),\n listItems: common(),\n delete: common(),\n aggregates: common(),\n },\n collectionApi: {\n getAllowedRecordTypes: common(),\n initialise: common(),\n delete: common(),\n },\n authApi: {\n authenticate: common(),\n authenticateTemporaryAccess: common(),\n createTemporaryAccess: common(),\n createUser: common(),\n enableUser: common(),\n disableUser: common(),\n loadAccessLevels: common(),\n getNewAccessLevel: common(),\n getNewUser: common(),\n getNewUserAuth: common(),\n getUsers: common(),\n saveAccessLevels: common(),\n isAuthorized: common(),\n changeMyPassword: common(),\n setPasswordFromTemporaryCode: common(),\n scorePassword: common(),\n isValidPassword: common(),\n validateUser: common(),\n validateAccessLevels: common(),\n setUserAccessLevels: common(),\n },\n templateApi: {\n saveApplicationHierarchy: common(),\n saveActionsAndTriggers: common(),\n },\n actionsApi: {\n execute: common(),\n },\n};\n\nconst _eventsList = [];\n\nconst makeEvent = (area, method, name) => `${area}:${method}:${name}`;\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n _events[areaKey][methodKey] = reduce((obj, s) => {\n obj[s] = makeEvent(areaKey, methodKey, s);\n return obj;\n },\n {})(_events[areaKey][methodKey]);\n }\n}\n\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n for (const name in _events[areaKey][methodKey]) {\n _eventsList.push(\n _events[areaKey][methodKey][name],\n );\n }\n }\n}\n\n\nconst events = _events;\n\nconst eventsList = _eventsList;\n\nclass BadRequestError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 400;\n }\n}\n\nclass UnauthorisedError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 401;\n }\n}\n\nclass ForbiddenError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 403;\n }\n}\n\nclass NotFoundError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 404;\n }\n}\n\nconst apiWrapper = async (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n await app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = await func(...params);\n\n await publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n await publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nconst apiWrapperSync = (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = func(...params);\n\n publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nconst handleNotAuthorized = (app, eventContext, eventNamespace) => {\n const err = new UnauthorisedError(`Unauthorized: ${eventNamespace}`);\n publishError(app, eventContext, eventNamespace, () => 0, err);\n throw err;\n};\n\nconst pushCallStack = (app, eventNamespace, seedCallId) => {\n const callId = generate();\n\n const createCallStack = () => ({\n seedCallId: !isUndefined(seedCallId)\n ? seedCallId\n : callId,\n threadCallId: callId,\n stack: [],\n });\n\n if (isUndefined(app.calls)) {\n app.calls = createCallStack();\n }\n\n app.calls.stack.push({\n namespace: eventNamespace,\n callId,\n });\n};\n\nconst popCallStack = (app) => {\n app.calls.stack.pop();\n if (app.calls.stack.length === 0) {\n delete app.calls;\n }\n};\n\nconst publishError = async (app, eventContext, eventNamespace, elapsed, err) => {\n const ctx = cloneDeep(eventContext);\n ctx.error = err;\n ctx.elapsed = elapsed();\n await app.publish(\n eventNamespace.onError,\n ctx,\n );\n popCallStack(app);\n};\n\nconst publishComplete = async (app, eventContext, eventNamespace, elapsed, result) => {\n const endcontext = cloneDeep(eventContext);\n endcontext.result = result;\n endcontext.elapsed = elapsed();\n await app.publish(\n eventNamespace.onComplete,\n endcontext,\n );\n popCallStack(app);\n return result;\n};\n\nconst lockOverlapMilliseconds = 10;\n\nconst getLock = async (app, lockFile, timeoutMilliseconds, maxLockRetries, retryCount = 0) => {\n try {\n const timeout = (await app.getEpochTime())\n + timeoutMilliseconds;\n\n const lock = {\n timeout,\n key: lockFile,\n totalTimeout: timeoutMilliseconds,\n };\n\n await app.datastore.createFile(\n lockFile,\n getLockFileContent(\n lock.totalTimeout,\n lock.timeout,\n ),\n );\n\n return lock;\n } catch (e) {\n if (retryCount == maxLockRetries) { return NO_LOCK; }\n\n const lock = parseLockFileContent(\n lockFile,\n await app.datastore.loadFile(lockFile),\n );\n\n const currentEpochTime = await app.getEpochTime();\n\n if (currentEpochTime < lock.timeout) {\n return NO_LOCK;\n }\n\n try {\n await app.datastore.deleteFile(lockFile);\n } catch (_) {\n //empty\n }\n\n await sleepForRetry();\n\n return await getLock(\n app, lockFile, timeoutMilliseconds,\n maxLockRetries, retryCount + 1,\n );\n }\n};\n\nconst getLockFileContent = (totalTimeout, epochTime) => `${totalTimeout}:${epochTime.toString()}`;\n\nconst parseLockFileContent = (key, content) => $(content, [\n split(':'),\n parts => ({\n totalTimeout: new Number(parts[0]),\n timeout: new Number(parts[1]),\n key,\n }),\n]);\n\nconst releaseLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n await app.datastore.deleteFile(lock.key);\n } catch (_) {\n //empty\n }\n }\n};\n\nconst NO_LOCK = 'no lock';\nconst isNolock = id => id === NO_LOCK;\n\nconst sleepForRetry = () => new Promise(resolve => setTimeout(resolve, lockOverlapMilliseconds));\n\n// this is the combinator function\nconst $$ = (...funcs) => arg => flow(funcs)(arg);\n\n// this is the pipe function\nconst $ = (arg, funcs) => $$(...funcs)(arg);\n\nconst keySep = '/';\nconst trimKeySep = str => trim(str, keySep);\nconst splitByKeySep = str => split$1(str, keySep);\nconst safeKey = key => replace(`${keySep}${trimKeySep(key)}`, `${keySep}${keySep}`, keySep);\nconst joinKey = (...strs) => {\n const paramsOrArray = strs.length === 1 & isArray$1(strs[0])\n ? strs[0] : strs;\n return safeKey(join$1(paramsOrArray, keySep));\n};\nconst splitKey = $$(trimKeySep, splitByKeySep);\nconst getDirFomKey = $$(splitKey, dropRight, p => joinKey(...p));\nconst getFileFromKey = $$(splitKey, takeRight, head);\n\nconst configFolder = `${keySep}.config`;\nconst fieldDefinitions = joinKey(configFolder, 'fields.json');\nconst templateDefinitions = joinKey(configFolder, 'templates.json');\nconst appDefinitionFile = joinKey(configFolder, 'appDefinition.json');\nconst dirIndex = folderPath => joinKey(configFolder, 'dir', ...splitKey(folderPath), 'dir.idx');\nconst getIndexKeyFromFileKey = $$(getDirFomKey, dirIndex);\n\nconst ifExists = (val, exists, notExists) => (isUndefined$1(val)\n ? isUndefined$1(notExists) ? (() => { })() : notExists()\n : exists());\n\nconst getOrDefault = (val, defaultVal) => ifExists(val, () => val, () => defaultVal);\n\nconst not = func => val => !func(val);\nconst isDefined = not(isUndefined$1);\nconst isNonNull = not(isNull);\nconst isNotNaN = not(isNaN$1);\n\nconst allTrue = (...funcArgs) => val => reduce$1(funcArgs,\n (result, conditionFunc) => (isNull(result) || result == true) && conditionFunc(val),\n null);\n\nconst anyTrue = (...funcArgs) => val => reduce$1(funcArgs,\n (result, conditionFunc) => result == true || conditionFunc(val),\n null);\n\nconst insensitiveEquals = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();\n\nconst isSomething = allTrue(isDefined, isNonNull, isNotNaN);\nconst isNothing = not(isSomething);\nconst isNothingOrEmpty = v => isNothing(v) || isEmpty(v);\nconst somethingOrGetDefault = getDefaultFunc => val => (isSomething(val) ? val : getDefaultFunc());\nconst somethingOrDefault = (val, defaultVal) => somethingOrGetDefault(constant(defaultVal))(val);\n\nconst mapIfSomethingOrDefault = (mapFunc, defaultVal) => val => (isSomething(val) ? mapFunc(val) : defaultVal);\n\nconst mapIfSomethingOrBlank = mapFunc => mapIfSomethingOrDefault(mapFunc, '');\n\nconst none = predicate => collection => !some(predicate)(collection);\n\nconst all = predicate => collection => none(v => !predicate(v))(collection);\n\nconst isNotEmpty = ob => !isEmpty(ob);\nconst isNonEmptyArray = allTrue(isArray$1, isNotEmpty);\nconst isNonEmptyString = allTrue(isString, isNotEmpty);\nconst tryOr = failFunc => (func, ...args) => {\n try {\n return func.apply(null, ...args);\n } catch (_) {\n return failFunc();\n }\n};\n\nconst tryAwaitOr = failFunc => async (func, ...args) => {\n try {\n return await func.apply(null, ...args);\n } catch (_) {\n return await failFunc();\n }\n};\n\nconst defineError = (func, errorPrefix) => {\n try {\n return func();\n } catch (err) {\n err.message = `${errorPrefix} : ${err.message}`;\n throw err;\n }\n};\n\nconst tryOrIgnore = tryOr(() => { });\nconst tryAwaitOrIgnore = tryAwaitOr(async () => { });\nconst causesException = (func) => {\n try {\n func();\n return false;\n } catch (e) {\n return true;\n }\n};\n\nconst executesWithoutException = func => !causesException(func);\n\nconst handleErrorWith = returnValInError => tryOr(constant(returnValInError));\n\nconst handleErrorWithUndefined = handleErrorWith(undefined);\n\nconst switchCase = (...cases) => (value) => {\n const nextCase = () => head(cases)[0](value);\n const nextResult = () => head(cases)[1](value);\n\n if (isEmpty(cases)) return; // undefined\n if (nextCase() === true) return nextResult();\n return switchCase(...tail(cases))(value);\n};\n\nconst isValue = val1 => val2 => (val1 === val2);\nconst isOneOf = (...vals) => val => includes(vals, val);\nconst defaultCase = constant(true);\nconst memberMatches = (member, match) => obj => match(obj[member]);\n\n\nconst StartsWith = searchFor => searchIn => startsWith(searchIn, searchFor);\n\nconst contains = val => array => (findIndex(array, v => v === val) > -1);\n\nconst getHashCode = (s) => {\n let hash = 0; let i; let char; let\n l;\n if (s.length == 0) return hash;\n for (i = 0, l = s.length; i < l; i++) {\n char = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n\n // converting to string, but dont want a \"-\" prefixed\n if (hash < 0) { return `n${(hash * -1).toString()}`; }\n return hash.toString();\n};\n\n// thanks to https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\nconst awEx = async (promise) => {\n try {\n const result = await promise;\n return [undefined, result];\n } catch (error) {\n return [error, undefined];\n }\n};\n\nconst isSafeInteger = n => isInteger(n)\n && n <= Number.MAX_SAFE_INTEGER\n && n >= 0 - Number.MAX_SAFE_INTEGER;\n\nconst toDateOrNull = s => (isNull(s) ? null\n : isDate(s) ? s : new Date(s));\nconst toBoolOrNull = s => (isNull(s) ? null\n : s === 'true' || s === true);\nconst toNumberOrNull = s => (isNull(s) ? null\n : toNumber(s));\n\nconst isArrayOfString = opts => isArray$1(opts) && all(isString)(opts);\n\nconst pause = async duration => new Promise(res => setTimeout(res, duration));\n\nconst retry = async (fn, retries, delay, ...args) => {\n try {\n return await fn(...args);\n } catch (err) {\n if (retries > 1) {\n return await pause(delay).then(async () => await retry(fn, (retries - 1), delay, ...args));\n }\n throw err;\n }\n};\n\nvar index = {\n ifExists,\n getOrDefault,\n isDefined,\n isNonNull,\n isNotNaN,\n allTrue,\n isSomething,\n mapIfSomethingOrDefault,\n mapIfSomethingOrBlank,\n configFolder,\n fieldDefinitions,\n isNothing,\n not,\n switchCase,\n defaultCase,\n StartsWith,\n contains,\n templateDefinitions,\n handleErrorWith,\n handleErrorWithUndefined,\n tryOr,\n tryOrIgnore,\n tryAwaitOr,\n tryAwaitOrIgnore,\n dirIndex,\n keySep,\n $,\n $$,\n getDirFomKey,\n getFileFromKey,\n splitKey,\n somethingOrDefault,\n getIndexKeyFromFileKey,\n joinKey,\n somethingOrGetDefault,\n appDefinitionFile,\n isValue,\n all,\n isOneOf,\n memberMatches,\n defineError,\n anyTrue,\n isNonEmptyArray,\n causesException,\n executesWithoutException,\n none,\n getHashCode,\n awEx,\n apiWrapper,\n events,\n eventsList,\n isNothingOrEmpty,\n isSafeInteger,\n toNumber,\n toDate: toDateOrNull,\n toBool: toBoolOrNull,\n isArrayOfString,\n getLock,\n NO_LOCK,\n isNolock,\n insensitiveEquals,\n pause,\n retry,\n};\n\nconst stringNotEmpty = s => isSomething(s) && s.trim().length > 0;\n\nconst makerule = (field, error, isValid) => ({ field, error, isValid });\n\nconst validationError = (rule, item) => ({ ...rule, item });\n\nconst applyRuleSet = ruleSet => itemToValidate => $(ruleSet, [\n map(applyRule(itemToValidate)),\n filter(isSomething),\n]);\n\nconst applyRule = itemTovalidate => rule => (rule.isValid(itemTovalidate)\n ? null\n : validationError(rule, itemTovalidate));\n\nconst filterEval = 'FILTER_EVALUATE';\nconst filterCompile = 'FILTER_COMPILE';\nconst mapEval = 'MAP_EVALUATE';\nconst mapCompile = 'MAP_COMPILE';\n\n\nconst getEvaluateResult = () => ({\n isError: false,\n passedFilter: true,\n result: null,\n});\n\nconst compileFilter = index => compileExpression$1(index.filter);\n\nconst compileMap = index => compileCode$1(index.map);\n\nconst passesFilter = (record, index) => {\n const context = { record };\n if (!index.filter) return true;\n\n const compiledFilter = defineError(\n () => compileFilter(index),\n filterCompile,\n );\n\n return defineError(\n () => compiledFilter(context),\n filterEval,\n );\n};\n\nconst mapRecord = (record, index) => {\n const recordClone = cloneDeep$1(record);\n const context = { record: recordClone };\n\n const map = index.map ? index.map : 'return {...record};';\n\n const compiledMap = defineError(\n () => compileCode$1(map),\n mapCompile,\n );\n\n const mapped = defineError(\n () => compiledMap(context),\n mapEval,\n );\n\n const mappedKeys = keys(mapped);\n for (let i = 0; i < mappedKeys.length; i++) {\n const key = mappedKeys[i];\n mapped[key] = isUndefined$1(mapped[key]) ? null : mapped[key];\n if (isFunction(mapped[key])) {\n delete mapped[key];\n }\n }\n\n mapped.key = record.key;\n mapped.sortKey = index.getSortKey\n ? compileCode$1(index.getSortKey)(context)\n : record.id;\n\n return mapped;\n};\n\nconst evaluate = record => (index) => {\n const result = getEvaluateResult();\n\n try {\n result.passedFilter = passesFilter(record, index);\n } catch (err) {\n result.isError = true;\n result.passedFilter = false;\n result.result = err.message;\n }\n\n if (!result.passedFilter) return result;\n\n try {\n result.result = mapRecord(record, index);\n } catch (err) {\n result.isError = true;\n result.result = err.message;\n }\n\n return result;\n};\n\nconst indexTypes = { reference: 'reference', ancestor: 'ancestor' };\n\nconst indexRuleSet = [\n makerule('map', 'index has no map function',\n index => isNonEmptyString(index.map)),\n makerule('map', \"index's map function does not compile\",\n index => !isNonEmptyString(index.map)\n || executesWithoutException(() => compileMap(index))),\n makerule('filter', \"index's filter function does not compile\",\n index => !isNonEmptyString(index.filter)\n || executesWithoutException(() => compileFilter(index))),\n makerule('name', 'must declare a name for index',\n index => isNonEmptyString(index.name)),\n makerule('name', 'there is a duplicate named index on this node',\n index => isEmpty$1(index.name)\n || countBy('name')(index.parent().indexes)[index.name] === 1),\n makerule('indexType', 'reference index may only exist on a record node',\n index => isRecord(index.parent())\n || index.indexType !== indexTypes.reference),\n makerule('indexType', `index type must be one of: ${join$1(', ', keys(indexTypes))}`,\n index => includes$1(index.indexType)(keys(indexTypes))),\n];\n\nconst getFlattenedHierarchy = (appHierarchy, useCached = true) => {\n if (isSomething(appHierarchy.getFlattenedHierarchy) && useCached) { return appHierarchy.getFlattenedHierarchy(); }\n\n const flattenHierarchy = (currentNode, flattened) => {\n flattened.push(currentNode);\n if ((!currentNode.children\n || currentNode.children.length === 0)\n && (!currentNode.indexes\n || currentNode.indexes.length === 0)\n && (!currentNode.aggregateGroups\n || currentNode.aggregateGroups.length === 0)) {\n return flattened;\n }\n\n const unionIfAny = l2 => l1 => union(l1)(!l2 ? [] : l2);\n\n const children = $([], [\n unionIfAny(currentNode.children),\n unionIfAny(currentNode.indexes),\n unionIfAny(currentNode.aggregateGroups),\n ]);\n\n for (const child of children) {\n flattenHierarchy(child, flattened);\n }\n return flattened;\n };\n\n appHierarchy.getFlattenedHierarchy = () => flattenHierarchy(appHierarchy, []);\n return appHierarchy.getFlattenedHierarchy();\n};\n\nconst getLastPartInKey = key => last(splitKey(key));\n\nconst getNodesInPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n filter(n => new RegExp(`${n.pathRegx()}`).test(key)),\n]);\n\nconst getExactNodeForPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => new RegExp(`${n.pathRegx()}$`).test(key)),\n]);\n\nconst getNodeForCollectionPath = appHierarchy => collectionKey => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && new RegExp(`${n.collectionPathRegx()}$`).test(collectionKey))),\n]);\n\nconst hasMatchingAncestor = ancestorPredicate => decendantNode => switchCase(\n\n [node => isNothing(node.parent()),\n constant$1(false)],\n\n [node => ancestorPredicate(node.parent()),\n constant$1(true)],\n\n [defaultCase,\n node => hasMatchingAncestor(ancestorPredicate)(node.parent())],\n\n)(decendantNode);\n\nconst getNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => n.nodeKey() === nodeKey\n || (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nconst getCollectionNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nconst getNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getExactNodeForPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nconst getCollectionNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getNodeForCollectionPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getCollectionNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nconst isNode = (appHierarchy, key) => isSomething(getExactNodeForPath(appHierarchy)(key));\n\nconst getActualKeyOfParent = (parentNodeKey, actualChildKey) => $(actualChildKey, [\n splitKey,\n take(splitKey(parentNodeKey).length),\n ks => joinKey(...ks),\n]);\n\nconst getParentKey = (key) => {\n return $(key, [\n splitKey,\n take(splitKey(key).length - 1),\n joinKey,\n ]);\n};\n\nconst isKeyAncestorOf = ancestorKey => decendantNode => hasMatchingAncestor(p => p.nodeKey() === ancestorKey)(decendantNode);\n\nconst hasNoMatchingAncestors = parentPredicate => node => !hasMatchingAncestor(parentPredicate)(node);\n\nconst findField = (recordNode, fieldName) => find(f => f.name == fieldName)(recordNode.fields);\n\nconst isAncestor = decendant => ancestor => isKeyAncestorOf(ancestor.nodeKey())(decendant);\n\nconst isDecendant = ancestor => decendant => isAncestor(decendant)(ancestor);\n\nconst getRecordNodeId = recordKey => $(recordKey, [\n splitKey,\n last,\n getRecordNodeIdFromId,\n]);\n\nconst getRecordNodeIdFromId = recordId => $(recordId, [split('-'), first, parseInt]);\n\nconst getRecordNodeById = (hierarchy, recordId) => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => isRecord(n)\n && n.nodeId === getRecordNodeIdFromId(recordId)),\n]);\n\nconst recordNodeIdIsAllowed = indexNode => nodeId => indexNode.allowedRecordNodeIds.length === 0\n || includes$1(nodeId)(indexNode.allowedRecordNodeIds);\n\nconst recordNodeIsAllowed = indexNode => recordNode => recordNodeIdIsAllowed(indexNode)(recordNode.nodeId);\n\nconst getAllowedRecordNodesForIndex = (appHierarchy, indexNode) => {\n const recordNodes = $(appHierarchy, [\n getFlattenedHierarchy,\n filter(isRecord),\n ]);\n\n if (isGlobalIndex(indexNode)) {\n return $(recordNodes, [\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isAncestorIndex(indexNode)) {\n return $(recordNodes, [\n filter(isDecendant(indexNode.parent())),\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isReferenceIndex(indexNode)) {\n return $(recordNodes, [\n filter(n => some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\n ]);\n }\n};\n\nconst getNodeFromNodeKeyHash = hierarchy => hash => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => getHashCode(n.nodeKey()) === hash),\n]);\n\nconst isRecord = node => isSomething(node) && node.type === 'record';\nconst isSingleRecord = node => isRecord(node) && node.isSingle;\nconst isCollectionRecord = node => isRecord(node) && !node.isSingle;\nconst isIndex = node => isSomething(node) && node.type === 'index';\nconst isaggregateGroup = node => isSomething(node) && node.type === 'aggregateGroup';\nconst isShardedIndex = node => isIndex(node) && isNonEmptyString(node.getShardName);\nconst isRoot = node => isSomething(node) && node.isRoot();\nconst isDecendantOfARecord = hasMatchingAncestor(isRecord);\nconst isGlobalIndex = node => isIndex(node) && isRoot(node.parent());\nconst isReferenceIndex = node => isIndex(node) && node.indexType === indexTypes.reference;\nconst isAncestorIndex = node => isIndex(node) && node.indexType === indexTypes.ancestor;\n\nconst fieldReversesReferenceToNode = node => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)(map(i => i.nodeKey())(node.indexes))\n .length > 0;\n\nconst fieldReversesReferenceToIndex = indexNode => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()])\n .length > 0;\n\nvar hierarchy = {\n getLastPartInKey,\n getNodesInPath,\n getExactNodeForPath,\n hasMatchingAncestor,\n getNode,\n getNodeByKeyOrNodeKey,\n isNode,\n getActualKeyOfParent,\n getParentKey,\n isKeyAncestorOf,\n hasNoMatchingAncestors,\n findField,\n isAncestor,\n isDecendant,\n getRecordNodeId,\n getRecordNodeIdFromId,\n getRecordNodeById,\n recordNodeIdIsAllowed,\n recordNodeIsAllowed,\n getAllowedRecordNodesForIndex,\n getNodeFromNodeKeyHash,\n isRecord,\n isCollectionRecord,\n isIndex,\n isaggregateGroup,\n isShardedIndex,\n isRoot,\n isDecendantOfARecord,\n isGlobalIndex,\n isReferenceIndex,\n isAncestorIndex,\n fieldReversesReferenceToNode,\n fieldReversesReferenceToIndex,\n getFlattenedHierarchy,\n};\n\nconst getSafeFieldParser = (tryParse, defaultValueFunctions) => (field, record) => {\n if (has(record, field.name)) {\n return getSafeValueParser(tryParse, defaultValueFunctions)(record[field.name]);\n }\n return defaultValueFunctions[field.getUndefinedValue]();\n};\n\nconst getSafeValueParser = (tryParse, defaultValueFunctions) => (value) => {\n const parsed = tryParse(value);\n if (parsed.success) {\n return parsed.value;\n }\n return defaultValueFunctions.default();\n};\n\nconst getNewValue = (tryParse, defaultValueFunctions) => (field) => {\n const getInitialValue = isUndefined(field) || isUndefined(field.getInitialValue)\n ? 'default'\n : field.getInitialValue;\n\n return has(defaultValueFunctions, getInitialValue)\n ? defaultValueFunctions[getInitialValue]()\n : getSafeValueParser(tryParse, defaultValueFunctions)(getInitialValue);\n};\n\nconst typeFunctions = specificFunctions => merge({\n value: constant$1,\n null: constant$1(null),\n}, specificFunctions);\n\nconst validateTypeConstraints = validationRules => async (field, record, context) => {\n const fieldValue = record[field.name];\n const validateRule = async r => (!await r.isValid(fieldValue, field.typeOptions, context)\n ? r.getMessage(fieldValue, field.typeOptions)\n : '');\n\n const errors = [];\n for (const r of validationRules) {\n const err = await validateRule(r);\n if (isNotEmpty(err)) errors.push(err);\n }\n\n return errors;\n};\n\nconst getDefaultOptions = mapValues(v => v.defaultValue);\n\nconst makerule$1 = (isValid, getMessage) => ({ isValid, getMessage });\nconst parsedFailed = val => ({ success: false, value: val });\nconst parsedSuccess = val => ({ success: true, value: val });\nconst getDefaultExport = (name, tryParse, functions, options, validationRules, sampleValue, stringify) => ({\n getNew: getNewValue(tryParse, functions),\n safeParseField: getSafeFieldParser(tryParse, functions),\n safeParseValue: getSafeValueParser(tryParse, functions),\n tryParse,\n name,\n getDefaultOptions: () => getDefaultOptions(cloneDeep(options)),\n optionDefinitions: options,\n validateTypeConstraints: validateTypeConstraints(validationRules),\n sampleValue,\n stringify: val => (val === null || val === undefined\n ? '' : stringify(val)),\n getDefaultValue: functions.default,\n});\n\nconst stringFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst stringTryParse = switchCase(\n [isString, parsedSuccess],\n [isNull, parsedSuccess],\n [defaultCase, v => parsedSuccess(v.toString())],\n);\n\nconst options = {\n maxLength: {\n defaultValue: null,\n isValid: n => n === null || isSafeInteger(n) && n > 0,\n requirementDescription: 'max length must be null (no limit) or a greater than zero integer',\n parse: toNumberOrNull,\n },\n values: {\n defaultValue: null,\n isValid: v => v === null || (isArrayOfString(v) && v.length > 0 && v.length < 10000),\n requirementDescription: \"'values' must be null (no values) or an arry of at least one string\",\n parse: s => s,\n },\n allowDeclaredValuesOnly: {\n defaultValue: false,\n isValid: isBoolean,\n requirementDescription: 'allowDeclaredValuesOnly must be true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule$1(async (val, opts) => val === null || opts.maxLength === null || val.length <= opts.maxLength,\n (val, opts) => `value exceeds maximum length of ${opts.maxLength}`),\n makerule$1(async (val, opts) => val === null\n || opts.allowDeclaredValuesOnly === false\n || includes(opts.values, val),\n (val) => `\"${val}\" does not exist in the list of allowed values`),\n];\n\nvar string = getDefaultExport(\n 'string',\n stringTryParse,\n stringFunctions,\n options,\n typeConstraints,\n 'abcde',\n str => str,\n);\n\nconst boolFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst boolTryParse = switchCase(\n [isBoolean, parsedSuccess],\n [isNull, parsedSuccess],\n [isOneOf('true', '1', 'yes', 'on'), () => parsedSuccess(true)],\n [isOneOf('false', '0', 'no', 'off'), () => parsedSuccess(false)],\n [defaultCase, parsedFailed],\n);\n\nconst options$1 = {\n allowNulls: {\n defaultValue: true,\n isValid: isBoolean,\n requirementDescription: 'must be a true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints$1 = [\n makerule$1(async (val, opts) => opts.allowNulls === true || val !== null,\n () => 'field cannot be null'),\n];\n\nvar bool = getDefaultExport(\n 'bool', boolTryParse, boolFunctions,\n options$1, typeConstraints$1, true, JSON.stringify,\n);\n\nconst numberFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst parseStringtoNumberOrNull = (s) => {\n const num = Number(s);\n return isNaN(num) ? parsedFailed(s) : parsedSuccess(num);\n};\n\nconst numberTryParse = switchCase(\n [isNumber, parsedSuccess],\n [isString, parseStringtoNumberOrNull],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options$2 = {\n maxValue: {\n defaultValue: Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n minValue: {\n defaultValue: 0 - Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n decimalPlaces: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst getDecimalPlaces = (val) => {\n const splitDecimal = val.toString().split('.');\n if (splitDecimal.length === 1) return 0;\n return splitDecimal[1].length;\n};\n\nconst typeConstraints$2 = [\n makerule$1(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule$1(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n makerule$1(async (val, opts) => val === null || opts.decimalPlaces >= getDecimalPlaces(val),\n (val, opts) => `value (${val.toString()}) must have ${opts.decimalPlaces} decimal places or less`),\n];\n\nvar number = getDefaultExport(\n 'number',\n numberTryParse,\n numberFunctions,\n options$2,\n typeConstraints$2,\n 1,\n num => num.toString(),\n);\n\nconst dateFunctions = typeFunctions({\n default: constant(null),\n now: () => new Date(),\n});\n\nconst isValidDate = d => d instanceof Date && !isNaN(d);\n\nconst parseStringToDate = s => switchCase(\n [isValidDate, parsedSuccess],\n [defaultCase, parsedFailed],\n)(new Date(s));\n\n\nconst dateTryParse = switchCase(\n [isDate, parsedSuccess],\n [isString, parseStringToDate],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options$3 = {\n maxValue: {\n defaultValue: new Date(32503680000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n minValue: {\n defaultValue: new Date(-8520336000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n};\n\nconst typeConstraints$3 = [\n makerule$1(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule$1(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n];\n\nvar datetime = getDefaultExport(\n 'datetime',\n dateTryParse,\n dateFunctions,\n options$3,\n typeConstraints$3,\n new Date(1984, 4, 1),\n date => JSON.stringify(date).replace(new RegExp('\"', 'g'), ''),\n);\n\nconst arrayFunctions = () => typeFunctions({\n default: constant([]),\n});\n\nconst mapToParsedArrary = type => $$(\n map(i => type.safeParseValue(i)),\n parsedSuccess,\n);\n\nconst arrayTryParse = type => switchCase(\n [isArray$1, mapToParsedArrary(type)],\n [defaultCase, parsedFailed],\n);\n\nconst typeName = type => `array<${type}>`;\n\n\nconst options$4 = {\n maxLength: {\n defaultValue: 10000,\n isValid: isSafeInteger,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n minLength: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst typeConstraints$4 = [\n makerule$1(async (val, opts) => val === null || val.length >= opts.minLength,\n (val, opts) => `must choose ${opts.minLength} or more options`),\n makerule$1(async (val, opts) => val === null || val.length <= opts.maxLength,\n (val, opts) => `cannot choose more than ${opts.maxLength} options`),\n];\n\nvar array = type => getDefaultExport(\n typeName(type.name),\n arrayTryParse(type),\n arrayFunctions(),\n options$4,\n typeConstraints$4,\n [type.sampleValue],\n JSON.stringify,\n);\n\nconst referenceNothing = () => ({ key: '' });\n\nconst referenceFunctions = typeFunctions({\n default: referenceNothing,\n});\n\nconst hasStringValue = (ob, path) => has(ob, path)\n && isString(ob[path]);\n\nconst isObjectWithKey = v => isObjectLike(v)\n && hasStringValue(v, 'key');\n\nconst tryParseFromString = s => {\n\n try {\n const asObj = JSON.parse(s);\n if(isObjectWithKey) {\n return parsedSuccess(asObj);\n }\n }\n catch(_) {\n // EMPTY\n }\n\n return parsedFailed(s);\n};\n\nconst referenceTryParse = v => switchCase(\n [isObjectWithKey, parsedSuccess],\n [isString, tryParseFromString],\n [isNull, () => parsedSuccess(referenceNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst options$5 = {\n indexNodeKey: {\n defaultValue: null,\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n displayValue: {\n defaultValue: '',\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n reverseIndexNodeKeys: {\n defaultValue: null,\n isValid: v => isArrayOfString(v) && v.length > 0,\n requirementDescription: 'must be a non-empty array of strings',\n parse: s => s,\n },\n};\n\nconst isEmptyString = s => isString(s) && isEmpty(s);\n\nconst ensureReferenceExists = async (val, opts, context) => isEmptyString(val.key)\n || await context.referenceExists(opts, val.key);\n\nconst typeConstraints$5 = [\n makerule$1(\n ensureReferenceExists,\n (val, opts) => `\"${val[opts.displayValue]}\" does not exist in options list (key: ${val.key})`,\n ),\n];\n\nvar reference = getDefaultExport(\n 'reference',\n referenceTryParse,\n referenceFunctions,\n options$5,\n typeConstraints$5,\n { key: 'key', value: 'value' },\n JSON.stringify,\n);\n\nconst illegalCharacters = '*?\\\\/:<>|\\0\\b\\f\\v';\n\nconst isLegalFilename = (filePath) => {\n const fn = fileName(filePath);\n return fn.length <= 255\n && intersection(fn.split(''))(illegalCharacters.split('')).length === 0\n && none(f => f === '..')(splitKey(filePath));\n};\n\nconst fileNothing = () => ({ relativePath: '', size: 0 });\n\nconst fileFunctions = typeFunctions({\n default: fileNothing,\n});\n\nconst fileTryParse = v => switchCase(\n [isValidFile, parsedSuccess],\n [isNull$1, () => parsedSuccess(fileNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst fileName = filePath => $(filePath, [\n splitKey,\n last,\n]);\n\nconst isValidFile = f => !isNull$1(f)\n && has$1('relativePath')(f) && has$1('size')(f)\n && isNumber$1(f.size)\n && isString$1(f.relativePath)\n && isLegalFilename(f.relativePath);\n\nconst options$6 = {};\n\nconst typeConstraints$6 = [];\n\nvar file = getDefaultExport(\n 'file',\n fileTryParse,\n fileFunctions,\n options$6,\n typeConstraints$6,\n { relativePath: 'some_file.jpg', size: 1000 },\n JSON.stringify,\n);\n\nconst allTypes = () => {\n const basicTypes = {\n string, number, datetime, bool, reference, file,\n };\n\n const arrays = $(basicTypes, [\n keys,\n map((k) => {\n const kvType = {};\n const concreteArray = array(basicTypes[k]);\n kvType[concreteArray.name] = concreteArray;\n return kvType;\n }),\n types => assign({}, ...types),\n ]);\n\n return merge({}, basicTypes, arrays);\n};\n\n\nconst all$1 = allTypes();\n\nconst getType = (typeName) => {\n if (!has(all$1, typeName)) throw new BadRequestError(`Do not recognise type ${typeName}`);\n return all$1[typeName];\n};\n\nconst getSampleFieldValue = field => getType(field.type).sampleValue;\n\nconst getNewFieldValue = field => getType(field.type).getNew(field);\n\nconst safeParseField = (field, record) => getType(field.type).safeParseField(field, record);\n\nconst validateFieldParse = (field, record) => (has(record, field.name)\n ? getType(field.type).tryParse(record[field.name])\n : parsedSuccess(undefined)); // fields may be undefined by default\n\nconst getDefaultOptions$1 = type => getType(type).getDefaultOptions();\n\nconst validateTypeConstraints$1 = async (field, record, context) => await getType(field.type).validateTypeConstraints(field, record, context);\n\nconst detectType = (value) => {\n if (isString$1(value)) return string;\n if (isBoolean$1(value)) return bool;\n if (isNumber$1(value)) return number;\n if (isDate$1(value)) return datetime;\n if (isArray$2(value)) return array(detectType(value[0]));\n if (isObject(value)\n && has(value, 'key')\n && has(value, 'value')) return reference;\n if (isObject(value)\n && has(value, 'relativePath')\n && has(value, 'size')) return file;\n\n throw new BadRequestError(`cannot determine type: ${JSON.stringify(value)}`);\n};\n\n// 5 minutes\nconst tempCodeExpiryLength = 5 * 60 * 1000;\n\nconst AUTH_FOLDER = '/.auth';\nconst USERS_LIST_FILE = joinKey(AUTH_FOLDER, 'users.json');\nconst userAuthFile = username => joinKey(AUTH_FOLDER, `auth_${username}.json`);\nconst USERS_LOCK_FILE = joinKey(AUTH_FOLDER, 'users_lock');\nconst ACCESS_LEVELS_FILE = joinKey(AUTH_FOLDER, 'access_levels.json');\nconst ACCESS_LEVELS_LOCK_FILE = joinKey(AUTH_FOLDER, 'access_levels_lock');\n\nconst permissionTypes = {\n CREATE_RECORD: 'create record',\n UPDATE_RECORD: 'update record',\n READ_RECORD: 'read record',\n DELETE_RECORD: 'delete record',\n READ_INDEX: 'read index',\n MANAGE_INDEX: 'manage index',\n MANAGE_COLLECTION: 'manage collection',\n WRITE_TEMPLATES: 'write templates',\n CREATE_USER: 'create user',\n SET_PASSWORD: 'set password',\n CREATE_TEMPORARY_ACCESS: 'create temporary access',\n ENABLE_DISABLE_USER: 'enable or disable user',\n WRITE_ACCESS_LEVELS: 'write access levels',\n LIST_USERS: 'list users',\n LIST_ACCESS_LEVELS: 'list access levels',\n EXECUTE_ACTION: 'execute action',\n SET_USER_ACCESS_LEVELS: 'set user access levels',\n};\n\nconst getUserByName = (users, name) => $(users, [\n find(u => u.name.toLowerCase() === name.toLowerCase()),\n]);\n\nconst stripUserOfSensitiveStuff = (user) => {\n const stripped = clone(user);\n delete stripped.tempCode;\n return stripped;\n};\n\nconst parseTemporaryCode = fullCode => $(fullCode, [\n split(':'),\n parts => ({\n id: parts[1],\n code: parts[2],\n }),\n]);\n\nconst isAuthorized = app => (permissionType, resourceKey) => apiWrapperSync(\n app,\n events.authApi.isAuthorized,\n alwaysAuthorized,\n { resourceKey, permissionType },\n _isAuthorized, app, permissionType, resourceKey,\n);\n\nconst _isAuthorized = (app, permissionType, resourceKey) => {\n if (!app.user) {\n return false;\n }\n\n const validType = $(permissionTypes, [\n values,\n includes$1(permissionType),\n ]);\n\n if (!validType) {\n return false;\n }\n\n const permMatchesResource = (userperm) => {\n const nodeKey = isNothing(resourceKey)\n ? null\n : isNode(app.hierarchy, resourceKey)\n ? getNodeByKeyOrNodeKey(\n app.hierarchy, resourceKey,\n ).nodeKey()\n : resourceKey;\n\n return (userperm.type === permissionType)\n && (\n isNothing(resourceKey)\n || nodeKey === userperm.nodeKey\n );\n };\n\n return $(app.user.permissions, [\n some(permMatchesResource),\n ]);\n};\n\nconst nodePermission = type => ({\n add: (nodeKey, accessLevel) => accessLevel.permissions.push({ type, nodeKey }),\n isAuthorized: resourceKey => app => isAuthorized(app)(type, resourceKey),\n isNode: true,\n get: nodeKey => ({ type, nodeKey }),\n});\n\nconst staticPermission = type => ({\n add: accessLevel => accessLevel.permissions.push({ type }),\n isAuthorized: app => isAuthorized(app)(type),\n isNode: false,\n get: () => ({ type }),\n});\n\nconst createRecord = nodePermission(permissionTypes.CREATE_RECORD);\n\nconst updateRecord = nodePermission(permissionTypes.UPDATE_RECORD);\n\nconst deleteRecord = nodePermission(permissionTypes.DELETE_RECORD);\n\nconst readRecord = nodePermission(permissionTypes.READ_RECORD);\n\nconst writeTemplates = staticPermission(permissionTypes.WRITE_TEMPLATES);\n\nconst createUser = staticPermission(permissionTypes.CREATE_USER);\n\nconst setPassword = staticPermission(permissionTypes.SET_PASSWORD);\n\nconst readIndex = nodePermission(permissionTypes.READ_INDEX);\n\nconst manageIndex = staticPermission(permissionTypes.MANAGE_INDEX);\n\nconst manageCollection = staticPermission(permissionTypes.MANAGE_COLLECTION);\n\nconst createTemporaryAccess = staticPermission(permissionTypes.CREATE_TEMPORARY_ACCESS);\n\nconst enableDisableUser = staticPermission(permissionTypes.ENABLE_DISABLE_USER);\n\nconst writeAccessLevels = staticPermission(permissionTypes.WRITE_ACCESS_LEVELS);\n\nconst listUsers = staticPermission(permissionTypes.LIST_USERS);\n\nconst listAccessLevels = staticPermission(permissionTypes.LIST_ACCESS_LEVELS);\n\nconst setUserAccessLevels = staticPermission(permissionTypes.SET_USER_ACCESS_LEVELS);\n\nconst executeAction = nodePermission(permissionTypes.EXECUTE_ACTION);\n\nconst alwaysAuthorized = () => true;\n\nconst permission = {\n createRecord,\n updateRecord,\n deleteRecord,\n readRecord,\n writeTemplates,\n createUser,\n setPassword,\n readIndex,\n createTemporaryAccess,\n enableDisableUser,\n writeAccessLevels,\n listUsers,\n listAccessLevels,\n manageIndex,\n manageCollection,\n executeAction,\n setUserAccessLevels,\n};\n\nconst getNew = app => (collectionKey, recordTypeName) => {\n const recordNode = getRecordNode(app, collectionKey);\n return apiWrapperSync(\n app,\n events.recordApi.getNew,\n permission.createRecord.isAuthorized(recordNode.nodeKey()),\n { collectionKey, recordTypeName },\n _getNew, recordNode, collectionKey,\n );\n};\n\nconst _getNew = (recordNode, collectionKey) => constructRecord(recordNode, getNewFieldValue, collectionKey);\n\nconst getRecordNode = (app, collectionKey) => {\n collectionKey = safeKey(collectionKey);\n return getNodeForCollectionPath(app.hierarchy)(collectionKey);\n};\n\nconst getNewChild = app => (recordKey, collectionName, recordTypeName) => \n getNew(app)(joinKey(recordKey, collectionName), recordTypeName);\n\nconst constructRecord = (recordNode, getFieldValue, collectionKey) => {\n const record = $(recordNode.fields, [\n keyBy('name'),\n mapValues(getFieldValue),\n ]);\n\n record.id = `${recordNode.nodeId}-${generate()}`;\n record.key = joinKey(collectionKey, record.id);\n record.isNew = true;\n record.type = recordNode.name;\n return record;\n};\n\nconst getRecordFileName = key => joinKey(key, 'record.json');\n\nconst load = app => async key => apiWrapper(\n app,\n events.recordApi.load,\n permission.readRecord.isAuthorized(key),\n { key },\n _load, app, key,\n);\n\nconst _load = async (app, key, keyStack = []) => {\n key = safeKey(key);\n const recordNode = getExactNodeForPath(app.hierarchy)(key);\n const storedData = await app.datastore.loadJson(\n getRecordFileName(key),\n );\n\n const loadedRecord = $(recordNode.fields, [\n keyBy('name'),\n mapValues(f => safeParseField(f, storedData)),\n ]);\n\n const newKeyStack = [...keyStack, key];\n\n const references = $(recordNode.fields, [\n filter(f => f.type === 'reference'\n && isNonEmptyString(loadedRecord[f.name].key)\n && !includes$1(loadedRecord[f.name].key)(newKeyStack)),\n map(f => ({\n promise: _load(app, loadedRecord[f.name].key, newKeyStack),\n index: getNode(app.hierarchy, f.typeOptions.indexNodeKey),\n field: f,\n })),\n ]);\n\n if (references.length > 0) {\n const refRecords = await Promise.all(\n map(p => p.promise)(references),\n );\n\n for (const ref of references) {\n loadedRecord[ref.field.name] = mapRecord(\n refRecords[references.indexOf(ref)],\n ref.index,\n );\n }\n }\n\n loadedRecord.transactionId = storedData.transactionId;\n loadedRecord.isNew = false;\n loadedRecord.key = key;\n loadedRecord.id = $(key, [splitKey, last]);\n loadedRecord.type = recordNode.name;\n return loadedRecord;\n};\n\n// adapted from https://github.com/dex4er/js-promise-readable\r\n// thanks :)\r\n \r\nconst promiseReadableStream = stream => {\r\n \r\n let _errored;\r\n\r\n const _errorHandler = err => {\r\n _errored = err;\r\n };\r\n\r\n stream.on(\"error\", _errorHandler);\r\n \r\n const read = (size) => {\r\n \r\n return new Promise((resolve, reject) => {\r\n if (_errored) {\r\n const err = _errored;\r\n _errored = undefined;\r\n return reject(err)\r\n }\r\n \r\n if (!stream.readable || stream.closed || stream.destroyed) {\r\n return resolve();\r\n }\r\n \r\n const readableHandler = () => {\r\n const chunk = stream.read(size);\r\n \r\n if (chunk) {\r\n removeListeners();\r\n resolve(chunk);\r\n }\r\n };\r\n \r\n const closeHandler = () => {\r\n removeListeners();\r\n resolve();\r\n };\r\n \r\n const endHandler = () => {\r\n removeListeners();\r\n resolve();\r\n };\r\n \r\n const errorHandler = (err) => {\r\n _errored = undefined;\r\n removeListeners();\r\n reject(err);\r\n };\r\n \r\n const removeListeners = () => {\r\n stream.removeListener(\"close\", closeHandler);\r\n stream.removeListener(\"error\", errorHandler);\r\n stream.removeListener(\"end\", endHandler);\r\n stream.removeListener(\"readable\", readableHandler);\r\n };\r\n \r\n stream.on(\"close\", closeHandler);\r\n stream.on(\"end\", endHandler);\r\n stream.on(\"error\", errorHandler);\r\n stream.on(\"readable\", readableHandler);\r\n \r\n readableHandler();\r\n });\r\n };\r\n \r\n \r\n const destroy = () => {\r\n if (stream) {\r\n if (_errorHandler) {\r\n stream.removeListener(\"error\", _errorHandler);\r\n }\r\n if (typeof stream.destroy === \"function\") {\r\n stream.destroy();\r\n }\r\n }\r\n };\r\n \r\n return {read, destroy, stream};\r\n };\n\nconst getIndexedDataKey = (indexNode, indexKey, record) => {\n const getShardName = (indexNode, record) => {\n const shardNameFunc = compileCode$1(indexNode.getShardName);\n try {\n return shardNameFunc({ record });\n } catch(e) {\n const errorDetails = `shardCode: ${indexNode.getShardName} :: record: ${JSON.stringify(record)} :: `;\n e.message = \"Error running index shardname func: \" + errorDetails + e.message;\n throw e;\n }\n };\n\n const shardName = isNonEmptyString(indexNode.getShardName)\n ? `${getShardName(indexNode, record)}.csv`\n : 'index.csv';\n\n return joinKey(indexKey, shardName);\n};\n\nconst getShardKeysInRange = async (app, indexKey, startRecord = null, endRecord = null) => {\n const indexNode = getExactNodeForPath(app.hierarchy)(indexKey);\n\n const startShardName = !startRecord\n ? null\n : shardNameFromKey(\n getIndexedDataKey(\n indexNode,\n indexKey,\n startRecord,\n ),\n );\n\n const endShardName = !endRecord\n ? null\n : shardNameFromKey(\n getIndexedDataKey(\n indexNode,\n indexKey,\n endRecord,\n ),\n );\n\n return $(await getShardMap(app.datastore, indexKey), [\n filter(k => (startRecord === null || k >= startShardName)\n && (endRecord === null || k <= endShardName)),\n map(k => joinKey(indexKey, `${k}.csv`)),\n ]);\n};\n\nconst ensureShardNameIsInShardMap = async (store, indexKey, indexedDataKey) => {\n const map = await getShardMap(store, indexKey);\n const shardName = shardNameFromKey(indexedDataKey);\n if (!includes$1(shardName)(map)) {\n map.push(shardName);\n await writeShardMap(store, indexKey, map);\n }\n};\n\nconst getShardMap = async (datastore, indexKey) => {\n const shardMapKey = getShardMapKey(indexKey);\n try {\n return await datastore.loadJson(shardMapKey);\n } catch (_) {\n await datastore.createJson(shardMapKey, []);\n return [];\n }\n};\n\nconst writeShardMap = async (datastore, indexKey, shardMap) => await datastore.updateJson(\n getShardMapKey(indexKey),\n shardMap,\n);\n\nconst getAllShardKeys = async (app, indexKey) => await getShardKeysInRange(app, indexKey);\n\nconst getShardMapKey = indexKey => joinKey(indexKey, 'shardMap.json');\n\nconst getUnshardedIndexDataKey = indexKey => joinKey(indexKey, 'index.csv');\n\nconst createIndexFile = async (datastore, indexedDataKey, index) => {\n if (isShardedIndex(index)) {\n const indexKey = getParentKey(indexedDataKey);\n const shardMap = await getShardMap(datastore, indexKey);\n shardMap.push(\n shardNameFromKey(indexedDataKey),\n );\n await writeShardMap(datastore, indexKey, shardMap);\n }\n await datastore.createFile(indexedDataKey, '');\n};\n\nconst shardNameFromKey = key => $(key, [\n splitKey,\n last,\n]).replace('.csv', '');\n\nconst getIndexKey_BasedOnDecendant = (decendantKey, indexNode) => {\n if (isGlobalIndex(indexNode)) { return `${indexNode.nodeKey()}`; }\n\n const indexedDataParentKey = getActualKeyOfParent(\n indexNode.parent().nodeKey(),\n decendantKey,\n );\n\n return joinKey(\n indexedDataParentKey,\n indexNode.name,\n );\n};\n\nconst generateSchema = (hierarchy, indexNode) => {\n const recordNodes = getAllowedRecordNodesForIndex(hierarchy, indexNode);\n const mappedRecords = $(recordNodes, [\n map(n => mapRecord(createSampleRecord(n), indexNode)),\n ]);\n\n // always has record key and sort key\n const schema = {\n sortKey: all$1.string,\n key: all$1.string,\n };\n\n const fieldsHas = has$1(schema);\n const setField = (fieldName, value) => {\n if (value === null || value === undefined) { return; }\n\n const thisType = detectType(value);\n if (fieldsHas(fieldName)) {\n if (schema[fieldName] !== thisType) {\n schema[fieldName] = all$1.string;\n }\n } else {\n schema[fieldName] = thisType;\n }\n };\n\n for (const mappedRec of mappedRecords) {\n for (const f in mappedRec) {\n setField(f, mappedRec[f]);\n }\n }\n\n // returing an array of {name, type}\n return $(schema, [\n keys$1,\n map(k => ({ name: k, type: schema[k].name })),\n filter(s => s.name !== 'sortKey'),\n orderBy('name', ['desc']), // reverse aplha\n concat([{ name: 'sortKey', type: all$1.string.name }]), // sortKey on end\n reverse, // sortKey first, then rest are alphabetical\n ]);\n};\n\nconst createSampleRecord = recordNode => constructRecord(\n recordNode,\n getSampleFieldValue,\n recordNode.parent().nodeKey(),\n);\n\nvar global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined\n ? global$1.TYPED_ARRAY_SUPPORT\n : true;\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\n// Copyright Joyent, Inc. and other Node contributors.\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n };\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nfunction StringDecoder(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n}\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n\nconst BUFFER_MAX_BYTES = 524288; // 0.5Mb\n\nconst CONTINUE_READING_RECORDS = \"CONTINUE_READING\";\nconst READ_REMAINING_TEXT = \"READ_REMAINING\";\nconst CANCEL_READ = \"CANCEL\";\n\nconst getIndexWriter = (hierarchy, indexNode, readableStream, writableStream, end) => {\n const schema = generateSchema(hierarchy, indexNode);\n\n return ({\n read: read$1(readableStream, schema),\n updateIndex: updateIndex(readableStream, writableStream, schema)\n });\n};\n\nconst getIndexReader = (hierarchy, indexNode, readableStream) => \n read$1(\n readableStream, \n generateSchema(hierarchy, indexNode)\n );\n\nconst updateIndex = (readableStream, writableStream, schema) => async (itemsToWrite, keysToRemove) => {\n const write = newOutputWriter(BUFFER_MAX_BYTES, writableStream);\n const writtenItems = []; \n await read$1(readableStream, schema)(\n async indexedItem => {\n const updated = find(i => indexedItem.key === i.key)(itemsToWrite);\n const removed = find(k => indexedItem.key === k)(keysToRemove);\n \n if(isSomething(removed)) \n return CONTINUE_READING_RECORDS;\n\n if(isSomething(updated)) {\n const serializedItem = serializeItem(schema, updated);\n await write(serializedItem);\n writtenItems.push(updated);\n } else {\n await write(\n serializeItem(schema, indexedItem)\n );\n } \n\n return CONTINUE_READING_RECORDS;\n\n },\n async text => await write(text)\n );\n\n if(writtenItems.length !== itemsToWrite.length) {\n const toAdd = difference(itemsToWrite, writtenItems);\n for(let added of toAdd) {\n await write(\n serializeItem(schema, added)\n );\n }\n } else if(writtenItems.length === 0) {\n // potentially are no records\n await write(\"\");\n }\n\n await write();\n await writableStream.end();\n};\n\nconst read$1 = (readableStream, schema) => async (onGetItem, onGetText) => {\n const readInput = newInputReader(readableStream);\n let text = await readInput();\n let status = CONTINUE_READING_RECORDS;\n while(text.length > 0) {\n\n if(status === READ_REMAINING_TEXT) {\n await onGetText(text);\n continue;\n }\n\n if(status === CANCEL_READ) {\n return;\n }\n\n let rowText = \"\";\n let currentCharIndex=0;\n for(let currentChar of text) {\n rowText += currentChar;\n if(currentChar === \"\\r\") {\n status = await onGetItem(\n deserializeRow(schema, rowText)\n );\n rowText = \"\";\n if(status === READ_REMAINING_TEXT) {\n break;\n }\n }\n currentCharIndex++;\n }\n\n if(currentCharIndex < text.length -1) {\n await onGetText(text.substring(currentCharIndex + 1));\n }\n\n text = await readInput();\n }\n\n await readableStream.destroy();\n\n};\n\nconst newOutputWriter = (flushBoundary, writableStream) => {\n \n let currentBuffer = null;\n\n return async (text) => {\n\n if(isString$1(text) && currentBuffer === null)\n currentBuffer = Buffer$1.from(text, \"utf8\");\n else if(isString$1(text))\n currentBuffer = Buffer$1.concat([\n currentBuffer,\n Buffer$1.from(text, \"utf8\")\n ]);\n \n if(currentBuffer !== null &&\n (currentBuffer.length > flushBoundary\n || !isString$1(text))) {\n\n await writableStream.write(currentBuffer);\n currentBuffer = null;\n }\n }\n};\n\nconst newInputReader = (readableStream) => {\n\n const decoder = new StringDecoder('utf8');\n let remainingBytes = [];\n\n return async () => {\n\n let nextBytesBuffer = await readableStream.read(BUFFER_MAX_BYTES);\n const remainingBuffer = Buffer$1.from(remainingBytes);\n\n if(!nextBytesBuffer) nextBytesBuffer = Buffer$1.from([]);\n\n const moreToRead = nextBytesBuffer.length === BUFFER_MAX_BYTES;\n\n const buffer = Buffer$1.concat(\n [remainingBuffer, nextBytesBuffer],\n remainingBuffer.length + nextBytesBuffer.length);\n\n const text = decoder.write(buffer);\n remainingBytes = decoder.end(buffer);\n\n if(!moreToRead && remainingBytes.length > 0) {\n // if for any reason, we have remaining bytes at the end\n // of the stream, just discard - dont see why this should\n // ever happen, but if it does, it could cause a stack overflow\n remainingBytes = [];\n }\n\n return text;\n };\n};\n\nconst deserializeRow = (schema, rowText) => {\n let currentPropIndex = 0;\n let currentCharIndex = 0;\n let currentValueText = \"\";\n let isEscaped = false;\n const item = {};\n\n const setCurrentProp = () => {\n const currentProp = schema[currentPropIndex];\n const type = getType(currentProp.type);\n const value = currentValueText === \"\"\n ? type.getDefaultValue()\n : type.safeParseValue(\n currentValueText);\n item[currentProp.name] = value;\n };\n \n while(currentPropIndex < schema.length) {\n\n if(currentCharIndex < rowText.length) {\n const currentChar = rowText[currentCharIndex];\n if(isEscaped) {\n if(currentChar === \"r\") {\n currentValueText += \"\\r\";\n } else {\n currentValueText += currentChar;\n }\n isEscaped = false;\n } else {\n if(currentChar === \",\") {\n setCurrentProp();\n currentValueText = \"\";\n currentPropIndex++;\n } else if(currentChar === \"\\\\\") {\n isEscaped = true;\n } else {\n currentValueText += currentChar;\n }\n }\n currentCharIndex++; \n } else {\n currentValueText = \"\";\n setCurrentProp();\n currentPropIndex++;\n }\n }\n\n return item;\n};\n\nconst serializeItem = (schema, item) => {\n\n let rowText = \"\";\n\n for(let prop of schema) {\n const type = getType(prop.type);\n const value = has$1(prop.name)(item)\n ? item[prop.name]\n : type.getDefaultValue();\n \n const valStr = type.stringify(value);\n\n for(let i = 0; i < valStr.length; i++) {\n const currentChar = valStr[i];\n if(currentChar === \",\" \n || currentChar === \"\\r\" \n || currentChar === \"\\\\\") {\n rowText += \"\\\\\";\n }\n\n if(currentChar === \"\\r\") {\n rowText += \"r\";\n } else {\n rowText += currentChar;\n }\n }\n\n rowText += \",\";\n }\n\n rowText += \"\\r\";\n return rowText;\n};\n\nconst readIndex$1 = async (hierarchy, datastore, index, indexedDataKey) => {\n const records = [];\n const doRead = iterateIndex(\n async item => {\n records.push(item);\n return CONTINUE_READING_RECORDS;\n },\n async () => records\n );\n\n return await doRead(hierarchy, datastore, index, indexedDataKey);\n};\n\nconst searchIndex = async (hierarchy, datastore, index, indexedDataKey, searchPhrase) => {\n const records = [];\n const schema = generateSchema(hierarchy, index);\n const doRead = iterateIndex(\n async item => {\n const idx = lunr(function () {\n this.ref('key');\n for (const field of schema) {\n this.field(field.name);\n }\n this.add(item);\n });\n const searchResults = idx.search(searchPhrase);\n if (searchResults.length === 1) {\n item._searchResult = searchResults[0];\n records.push(item);\n }\n return CONTINUE_READING_RECORDS;\n },\n async () => records\n );\n\n return await doRead(hierarchy, datastore, index, indexedDataKey);\n};\n\nconst iterateIndex = (onGetItem, getFinalResult) => async (hierarchy, datastore, index, indexedDataKey) => {\n try {\n const readableStream = promiseReadableStream(\n await datastore.readableFileStream(indexedDataKey)\n );\n\n const read = getIndexReader(hierarchy, index, readableStream);\n await read(onGetItem);\n return getFinalResult();\n } catch (e) {\n if (await datastore.exists(indexedDataKey)) {\n throw e;\n } else {\n await createIndexFile(\n datastore,\n indexedDataKey,\n index,\n );\n }\n return [];\n }\n};\n\nconst listItems = app => async (indexKey, options) => apiWrapper(\n app,\n events.indexApi.listItems,\n permission.readIndex.isAuthorized(indexKey),\n { indexKey, options },\n _listItems, app, indexKey, options,\n);\n\nconst defaultOptions = { rangeStartParams: null, rangeEndParams: null, searchPhrase: null };\n\nconst _listItems = async (app, indexKey, options = defaultOptions) => {\n const { searchPhrase, rangeStartParams, rangeEndParams } = $({}, [\n merge$1(options),\n merge$1(defaultOptions),\n ]);\n\n const getItems = async key => (isNonEmptyString(searchPhrase)\n ? await searchIndex(\n app.hierarchy,\n app.datastore,\n indexNode,\n key,\n searchPhrase,\n )\n : await readIndex$1(\n app.hierarchy,\n app.datastore,\n indexNode,\n key,\n ));\n\n indexKey = safeKey(indexKey);\n const indexNode = getExactNodeForPath(app.hierarchy)(indexKey);\n\n if (!isIndex(indexNode)) { throw new Error('supplied key is not an index'); }\n\n if (isShardedIndex(indexNode)) {\n const shardKeys = await getShardKeysInRange(\n app, indexKey, rangeStartParams, rangeEndParams,\n );\n const items = [];\n for (const k of shardKeys) {\n items.push(await getItems(k));\n }\n return flatten(items);\n }\n return await getItems(\n getUnshardedIndexDataKey(indexKey),\n );\n};\n\nconst getContext = app => recordKey => apiWrapperSync(\n app,\n events.recordApi.getContext,\n permission.readRecord.isAuthorized(recordKey),\n { recordKey },\n _getContext, app, recordKey,\n);\n\nconst _getContext = (app, recordKey) => {\n const recordNode = getExactNodeForPath(app.hierarchy)(recordKey);\n\n const cachedReferenceIndexes = {};\n\n const lazyLoadReferenceIndex = async (typeOptions) => {\n if (!has(cachedReferenceIndexes, typeOptions.indexNodeKey)) {\n cachedReferenceIndexes[typeOptions.indexNodeKey] = {\n typeOptions,\n data: await readReferenceIndex(\n app, recordKey, typeOptions,\n ),\n };\n }\n\n return cachedReferenceIndexes[typeOptions.indexNodeKey];\n };\n\n const getTypeOptions = typeOptions_or_fieldName => (isString$1(typeOptions_or_fieldName)\n ? findField(recordNode, typeOptions_or_fieldName)\n .typeOptions\n : typeOptions_or_fieldName);\n\n return {\n referenceExists: async (typeOptions_or_fieldName, key) => {\n const typeOptions = getTypeOptions(typeOptions_or_fieldName);\n const { data } = await lazyLoadReferenceIndex(typeOptions);\n return some$1(data, i => i.key === key);\n },\n referenceOptions: async (typeOptions_or_fieldName) => {\n const typeOptions = getTypeOptions(typeOptions_or_fieldName);\n const { data } = await lazyLoadReferenceIndex(typeOptions);\n return data;\n },\n recordNode,\n };\n};\n\nconst readReferenceIndex = async (app, recordKey, typeOptions) => {\n const indexNode = getNode(app.hierarchy, typeOptions.indexNodeKey);\n const indexKey = isGlobalIndex(indexNode)\n ? indexNode.nodeKey()\n : getIndexKey_BasedOnDecendant(\n recordKey, indexNode,\n );\n\n const items = await listItems(app)(indexKey);\n return $(items, [\n map(i => ({\n key: i.key,\n value: i[typeOptions.displayValue],\n })),\n ]);\n};\n\nconst fieldParseError = (fieldName, value) => ({\n fields: [fieldName],\n message: `Could not parse field ${fieldName}:${value}`,\n});\n\nconst validateAllFieldParse = (record, recordNode) => $(recordNode.fields, [\n map(f => ({ name: f.name, parseResult: validateFieldParse(f, record) })),\n reduce((errors, f) => {\n if (f.parseResult.success) return errors;\n errors.push(\n fieldParseError(f.name, f.parseResult.value),\n );\n return errors;\n }, []),\n]);\n\nconst validateAllTypeConstraints = async (record, recordNode, context) => {\n const errors = [];\n for (const field of recordNode.fields) {\n $(await validateTypeConstraints$1(field, record, context), [\n filter(isNonEmptyString),\n map(m => ({ message: m, fields: [field.name] })),\n each(e => errors.push(e)),\n ]);\n }\n return errors;\n};\n\nconst runRecordValidationRules = (record, recordNode) => {\n const runValidationRule = (rule) => {\n const isValid = compileExpression$1(rule.expressionWhenValid);\n const expressionContext = { record, _ };\n return (isValid(expressionContext)\n ? { valid: true }\n : ({\n valid: false,\n fields: rule.invalidFields,\n message: rule.messageWhenInvalid,\n }));\n };\n\n return $(recordNode.validationRules, [\n map(runValidationRule),\n flatten,\n filter(r => r.valid === false),\n map(r => ({ fields: r.fields, message: r.message })),\n ]);\n};\n\nconst validate = app => async (record, context) => {\n context = isNothing(context)\n ? _getContext(app, record.key)\n : context;\n\n const recordNode = getExactNodeForPath(app.hierarchy)(record.key);\n const fieldParseFails = validateAllFieldParse(record, recordNode);\n\n // non parsing would cause further issues - exit here\n if (!isEmpty$1(fieldParseFails)) { return ({ isValid: false, errors: fieldParseFails }); }\n\n const recordValidationRuleFails = runRecordValidationRules(record, recordNode);\n const typeContraintFails = await validateAllTypeConstraints(record, recordNode, context);\n\n if (isEmpty$1(fieldParseFails)\n && isEmpty$1(recordValidationRuleFails)\n && isEmpty$1(typeContraintFails)) {\n return ({ isValid: true, errors: [] });\n }\n\n return ({\n isValid: false,\n errors: _.union(fieldParseFails, typeContraintFails, recordValidationRuleFails),\n });\n};\n\nconst ensureCollectionIsInitialised = async (datastore, node, parentKey) => {\n if (!await datastore.exists(parentKey)) {\n await datastore.createFolder(parentKey);\n await datastore.createFolder(\n joinKey(parentKey, 'allids'),\n );\n await datastore.createFolder(\n joinKey(\n parentKey,\n 'allids',\n node.nodeId.toString(),\n ),\n );\n }\n};\n\nconst initialiseRootCollections = async (datastore, hierarchy) => {\n const rootCollectionRecord = allTrue(\n n => isRoot(n.parent()),\n isCollectionRecord,\n );\n\n const flathierarchy = getFlattenedHierarchy(hierarchy);\n\n const collectionRecords = $(flathierarchy, [\n filter(rootCollectionRecord),\n ]);\n\n for (const col of collectionRecords) {\n await ensureCollectionIsInitialised(\n datastore,\n col,\n col.collectionPathRegx(),\n );\n }\n};\n\nconst initialiseChildCollections = async (app, recordKey) => {\n const childCollectionRecords = $(recordKey, [\n getExactNodeForPath(app.hierarchy),\n n => n.children,\n filter(isCollectionRecord),\n ]);\n\n for (const child of childCollectionRecords) {\n await ensureCollectionIsInitialised(\n app.datastore,\n child,\n joinKey(recordKey, child.collectionName),\n );\n }\n};\n\nconst allIdChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\n\nconst allIdsStringsForFactor = (collectionNode) => {\n const factor = collectionNode.allidsShardFactor;\n const charRangePerShard = 64 / factor;\n const allIdStrings = [];\n let index = 0;\n let currentIdsShard = '';\n while (index < 64) {\n currentIdsShard += allIdChars[index];\n if ((index + 1) % charRangePerShard === 0) {\n allIdStrings.push(currentIdsShard);\n currentIdsShard = '';\n }\n index++;\n }\n\n return allIdStrings;\n};\n\nconst getAllIdsShardNames = (appHierarchy, collectionKey) => {\n const collectionRecordNode = getNodeForCollectionPath(appHierarchy)(collectionKey);\n return $(collectionRecordNode, [\n c => [c.nodeId],\n map(i => map(c => _allIdsShardKey(collectionKey, i, c))(allIdsStringsForFactor(collectionRecordNode))),\n flatten,\n ]);\n};\n\nconst _allIdsShardKey = (collectionKey, childNo, shardKey) => joinKey(\n collectionKey,\n 'allids',\n childNo,\n shardKey,\n);\n\nconst getAllIdsShardKey = (appHierarchy, collectionKey, recordId) => {\n const indexOfFirstDash = recordId.indexOf('-');\n\n const collectionNode = getNodeForCollectionPath(appHierarchy)(collectionKey);\n\n const idFirstChar = recordId[indexOfFirstDash + 1];\n const allIdsShardId = $(collectionNode, [\n allIdsStringsForFactor,\n find(i => i.includes(idFirstChar)),\n ]);\n\n return _allIdsShardKey(\n collectionKey,\n recordId.slice(0, indexOfFirstDash),\n allIdsShardId,\n );\n};\n\nconst getOrCreateShardFile = async (datastore, allIdsKey) => {\n try {\n return await datastore.loadFile(allIdsKey);\n } catch (eLoad) {\n try {\n await datastore.createFile(allIdsKey, '');\n return '';\n } catch (eCreate) {\n throw new Error(\n `Error loading, then creating allIds ${allIdsKey\n } : LOAD : ${eLoad.message\n } : CREATE : ${eCreate}`,\n );\n }\n }\n};\n\nconst getShardFile = async (datastore, allIdsKey) => {\n try {\n return await datastore.loadFile(allIdsKey);\n } catch (eLoad) {\n return '';\n }\n};\n\nconst addToAllIds = (appHierarchy, datastore) => async (record) => {\n const allIdsKey = getAllIdsShardKey(\n appHierarchy,\n getParentKey(record.key),\n record.id,\n );\n\n let allIds = await getOrCreateShardFile(datastore, allIdsKey);\n\n allIds += `${allIds.length > 0 ? ',' : ''}${record.id}`;\n\n await datastore.updateFile(allIdsKey, allIds);\n};\n\nconst getAllIdsIterator = app => async (collection_Key_or_NodeKey) => {\n collection_Key_or_NodeKey = safeKey(collection_Key_or_NodeKey);\n const targetNode = getCollectionNodeByKeyOrNodeKey(\n app.hierarchy,\n collection_Key_or_NodeKey,\n );\n\n const getAllIdsIteratorForCollectionKey = async (collectionKey) => {\n const all_allIdsKeys = getAllIdsShardNames(app.hierarchy, collectionKey);\n let shardIndex = 0;\n\n const allIdsFromShardIterator = async () => {\n if (shardIndex === all_allIdsKeys.length) { return ({ done: true, result: { ids: [], collectionKey } }); }\n\n const shardKey = all_allIdsKeys[shardIndex];\n\n const allIds = await getAllIdsFromShard(app.datastore, shardKey);\n\n shardIndex++;\n\n return ({\n result: {\n ids: allIds,\n collectionKey,\n },\n done: false,\n });\n };\n\n return allIdsFromShardIterator;\n };\n\n const ancestors = $(getFlattenedHierarchy(app.hierarchy), [\n filter(isCollectionRecord),\n filter(n => isAncestor(targetNode)(n)\n || n.nodeKey() === targetNode.nodeKey()),\n orderBy([n => n.nodeKey().length], ['asc']),\n ]); // parents first\n\n const traverseForIteraterators = async (parentRecordKey = '', currentNodeIndex = 0) => {\n const currentNode = ancestors[currentNodeIndex];\n const currentCollectionKey = joinKey(\n parentRecordKey,\n currentNode.collectionName,\n );\n if (currentNode.nodeKey() === targetNode.nodeKey()) {\n return [\n await getAllIdsIteratorForCollectionKey(\n currentCollectionKey,\n )];\n }\n const allIterators = [];\n const currentIterator = await getAllIdsIteratorForCollectionKey(\n currentCollectionKey,\n );\n\n let ids = await currentIterator();\n while (ids.done === false) {\n for (const id of ids.result.ids) {\n allIterators.push(\n await traverseForIteraterators(\n joinKey(currentCollectionKey, id),\n currentNodeIndex + 1,\n ),\n );\n }\n\n ids = await currentIterator();\n }\n\n return flatten(allIterators);\n };\n\n const iteratorsArray = await traverseForIteraterators();\n let currentIteratorIndex = 0;\n return async () => {\n if (iteratorsArray.length === 0) { return { done: true, result: [] }; }\n const innerResult = await iteratorsArray[currentIteratorIndex]();\n if (!innerResult.done) { return innerResult; }\n if (currentIteratorIndex == iteratorsArray.length - 1) {\n return { done: true, result: innerResult.result };\n }\n currentIteratorIndex++;\n return { done: false, result: innerResult.result };\n };\n};\n\nconst getAllIdsFromShard = async (datastore, shardKey) => {\n const allIdsStr = await getShardFile(datastore, shardKey);\n\n const allIds = [];\n let currentId = '';\n for (let i = 0; i < allIdsStr.length; i++) {\n const currentChar = allIdsStr.charAt(i);\n const isLast = (i === allIdsStr.length - 1);\n if (currentChar === ',' || isLast) {\n if (isLast) currentId += currentChar;\n allIds.push(currentId);\n currentId = '';\n } else {\n currentId += currentChar;\n }\n }\n return allIds;\n};\n\nconst removeFromAllIds = (appHierarchy, datastore) => async (record) => {\n const shardKey = getAllIdsShardKey(\n appHierarchy,\n getParentKey(record.key),\n record.id,\n );\n const allIds = await getAllIdsFromShard(datastore, shardKey);\n\n const newIds = $(allIds, [\n pull(record.id),\n join$2(','),\n ]);\n\n await datastore.updateFile(shardKey, newIds);\n};\n\nconst TRANSACTIONS_FOLDER = `${keySep}.transactions`;\nconst LOCK_FILENAME = 'lock';\nconst LOCK_FILE_KEY = joinKey(\n TRANSACTIONS_FOLDER, LOCK_FILENAME,\n);\nconst idSep = '$';\n\nconst isOfType = typ => trans => trans.transactionType === typ;\n\nconst CREATE_RECORD_TRANSACTION = 'create';\nconst UPDATE_RECORD_TRANSACTION = 'update';\nconst DELETE_RECORD_TRANSACTION = 'delete';\nconst BUILD_INDEX_TRANSACTION = 'build';\n\nconst isUpdate = isOfType(UPDATE_RECORD_TRANSACTION);\nconst isDelete = isOfType(DELETE_RECORD_TRANSACTION);\nconst isCreate = isOfType(CREATE_RECORD_TRANSACTION);\nconst isBuildIndex = isOfType(BUILD_INDEX_TRANSACTION);\n\nconst keyToFolderName = nodeKey => getHashCode(nodeKey);\n\nconst getTransactionId = (recordId, transactionType, uniqueId) => \n `${recordId}${idSep}${transactionType}${idSep}${uniqueId}`;\n\nconst buildIndexFolder = '.BUILD-';\nconst nodeKeyHashFromBuildFolder = folder => folder.replace(buildIndexFolder, '');\n\nconst isBuildIndexFolder = key => getLastPartInKey(key).startsWith(buildIndexFolder);\n\nconst IndexNodeKeyFolder = indexNodeKey => joinKey(\n TRANSACTIONS_FOLDER,\n buildIndexFolder + keyToFolderName(indexNodeKey),\n);\n\nconst IndexNodeKeyBatchFolder = (indexNodeKey, count) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), Math.floor(count / BUILDINDEX_BATCH_COUNT).toString());\n\nconst BUILDINDEX_BATCH_COUNT = 1000;\nconst timeoutMilliseconds = 30 * 1000; // 30 secs\nconst maxLockRetries = 1;\n\nconst transactionForCreateRecord = async (app, record) => await transaction(\n app.datastore, CREATE_RECORD_TRANSACTION,\n record.key, { record },\n getTransactionKey_Records,\n);\n\nconst transactionForUpdateRecord = async (app, oldRecord, newRecord) => await transaction(\n app.datastore, UPDATE_RECORD_TRANSACTION,\n newRecord.key, { oldRecord, record: newRecord },\n getTransactionKey_Records,\n);\n\nconst transactionForDeleteRecord = async (app, record) => await transaction(\n app.datastore, DELETE_RECORD_TRANSACTION,\n record.key, { record },\n getTransactionKey_Records,\n);\n\nconst transactionForBuildIndex = async (app, indexNodeKey, recordKey, count) => {\n const transactionFolder = IndexNodeKeyBatchFolder(indexNodeKey, count);\n if (count % BUILDINDEX_BATCH_COUNT === 0) {\n await app.datastore.createFolder(transactionFolder);\n }\n\n return await transaction(\n app.datastore, BUILD_INDEX_TRANSACTION,\n recordKey, { recordKey },\n id => joinKey(transactionFolder, id),\n );\n};\n\nconst createBuildIndexFolder = async (datastore, indexNodeKey) => await datastore.createFolder(\n IndexNodeKeyFolder(indexNodeKey),\n);\n\nconst getTransactionKey_Records = id => joinKey(TRANSACTIONS_FOLDER, id);\n\nconst transaction = async (datastore, transactionType, recordKey, data, getTransactionKey) => {\n const recordId = getLastPartInKey(recordKey);\n const uniqueId = generate();\n const id = getTransactionId(\n recordId, transactionType, uniqueId,\n );\n\n const key = getTransactionKey(id);\n\n const trans = {\n transactionType,\n recordKey,\n ...data,\n id,\n };\n\n await datastore.createJson(\n key, trans,\n );\n\n return trans;\n};\n\nconst initialiseIndex = async (datastore, parentKey, index) => {\n const indexKey = joinKey(parentKey, index.name);\n\n await datastore.createFolder(indexKey);\n\n if (isShardedIndex(index)) {\n await datastore.createFile(\n getShardMapKey(indexKey),\n '[]',\n );\n } else {\n await createIndexFile(\n datastore,\n getUnshardedIndexDataKey(indexKey),\n index,\n );\n }\n};\n\nconst save = app => async (record, context) => apiWrapper(\n app,\n events.recordApi.save,\n record.isNew\n ? permission.createRecord.isAuthorized(record.key)\n : permission.updateRecord.isAuthorized(record.key), { record },\n _save, app, record, context, false,\n);\n\n\nconst _save = async (app, record, context, skipValidation = false) => {\n const recordClone = cloneDeep(record);\n if (!skipValidation) {\n const validationResult = await validate(app)(recordClone, context);\n if (!validationResult.isValid) {\n await app.publish(events.recordApi.save.onInvalid, { record, validationResult });\n throw new BadRequestError(`Save : Record Invalid : ${\n JSON.stringify(validationResult.errors)}`);\n }\n }\n\n if (recordClone.isNew) {\n await addToAllIds(app.hierarchy, app.datastore)(recordClone);\n const transaction = await transactionForCreateRecord(\n app, recordClone,\n );\n recordClone.transactionId = transaction.id;\n await app.datastore.createFolder(recordClone.key);\n await app.datastore.createFolder(\n joinKey(recordClone.key, 'files'),\n );\n await app.datastore.createJson(\n getRecordFileName(recordClone.key),\n recordClone,\n );\n await initialiseReverseReferenceIndexes(app, record);\n await initialiseAncestorIndexes(app, record);\n await initialiseChildCollections(app, recordClone.key);\n await app.publish(events.recordApi.save.onRecordCreated, {\n record: recordClone,\n });\n } else {\n const oldRecord = await _load(app, recordClone.key);\n const transaction = await transactionForUpdateRecord(\n app, oldRecord, recordClone,\n );\n recordClone.transactionId = transaction.id;\n await app.datastore.updateJson(\n getRecordFileName(recordClone.key),\n recordClone,\n );\n await app.publish(events.recordApi.save.onRecordUpdated, {\n old: oldRecord,\n new: recordClone,\n });\n }\n\n await app.cleanupTransactions();\n\n const returnedClone = cloneDeep(recordClone);\n returnedClone.isNew = false;\n return returnedClone;\n};\n\nconst initialiseAncestorIndexes = async (app, record) => {\n const recordNode = getExactNodeForPath(app.hierarchy)(record.key);\n\n for (const index of recordNode.indexes) {\n const indexKey = joinKey(record.key, index.name);\n if (!await app.datastore.exists(indexKey)) { await initialiseIndex(app.datastore, record.key, index); }\n }\n};\n\nconst initialiseReverseReferenceIndexes = async (app, record) => {\n const recordNode = getExactNodeForPath(app.hierarchy)(record.key);\n\n const indexNodes = $(fieldsThatReferenceThisRecord(app, recordNode), [\n map(f => $(f.typeOptions.reverseIndexNodeKeys, [\n map(n => getNode(\n app.hierarchy,\n n,\n )),\n ])),\n flatten,\n ]);\n\n for (const indexNode of indexNodes) {\n await initialiseIndex(\n app.datastore, record.key, indexNode,\n );\n }\n};\n\nconst fieldsThatReferenceThisRecord = (app, recordNode) => $(app.hierarchy, [\n getFlattenedHierarchy,\n filter(isRecord),\n map(n => n.fields),\n flatten,\n filter(fieldReversesReferenceToNode(recordNode)),\n]);\n\nconst deleteCollection = (app, disableCleanup = false) => async key => apiWrapper(\n app,\n events.collectionApi.delete,\n permission.manageCollection.isAuthorized,\n { key },\n _deleteCollection, app, key, disableCleanup,\n);\n\n\nconst _deleteCollection = async (app, key, disableCleanup) => {\n key = safeKey(key);\n const node = getNodeForCollectionPath(app.hierarchy)(key);\n\n await deleteRecords(app, key);\n await deleteAllIdsFolders(app, node, key);\n await deleteCollectionFolder(app, key);\n if (!disableCleanup) { await app.cleanupTransactions(); }\n};\n\nconst deleteCollectionFolder = async (app, key) => await app.datastore.deleteFolder(key);\n\n\nconst deleteAllIdsFolders = async (app, node, key) => {\n await app.datastore.deleteFolder(\n joinKey(\n key, 'allids',\n node.nodeId,\n ),\n );\n\n await app.datastore.deleteFolder(\n joinKey(key, 'allids'),\n );\n};\n\nconst deleteRecords = async (app, key) => {\n const deletedAllIdsShards = [];\n const deleteAllIdsShard = async (recordId) => {\n const shardKey = getAllIdsShardKey(\n app.hierarchy, key, recordId,\n );\n\n if (includes$1(shardKey)(deletedAllIdsShards)) {\n return;\n }\n\n deletedAllIdsShards.push(shardKey);\n\n await app.datastore.deleteFile(shardKey);\n };\n\n const iterate = await getAllIdsIterator(app)(key);\n\n let ids = await iterate();\n while (!ids.done) {\n if (ids.result.collectionKey === key) {\n for (const id of ids.result.ids) {\n await _deleteRecord(\n app,\n joinKey(key, id),\n true,\n );\n await deleteAllIdsShard(id);\n }\n }\n\n ids = await iterate();\n }\n};\n\nconst _deleteIndex = async (app, indexKey, includeFolder) => {\n const indexNode = getExactNodeForPath(app.hierarchy)(indexKey);\n\n if (!isIndex(indexNode)) { throw new Error('Supplied key is not an index'); }\n\n if (isShardedIndex(indexNode)) {\n const shardKeys = await getAllShardKeys(app, indexKey);\n for (const k of shardKeys) {\n await tryAwaitOrIgnore(\n app.datastore.deleteFile(k),\n );\n }\n tryAwaitOrIgnore(\n await app.datastore.deleteFile(\n getShardMapKey(indexKey),\n ),\n );\n } else {\n await tryAwaitOrIgnore(\n app.datastore.deleteFile(\n getUnshardedIndexDataKey(indexKey),\n ),\n );\n }\n\n if (includeFolder) {\n tryAwaitOrIgnore(\n await app.datastore.deleteFolder(indexKey),\n );\n }\n};\n\nconst deleteRecord$1 = (app, disableCleanup = false) => async key => apiWrapper(\n app,\n events.recordApi.delete,\n permission.deleteRecord.isAuthorized(key),\n { key },\n _deleteRecord, app, key, disableCleanup,\n);\n\n// called deleteRecord because delete is a keyword\nconst _deleteRecord = async (app, key, disableCleanup) => {\n key = safeKey(key);\n const node = getExactNodeForPath(app.hierarchy)(key);\n\n const record = await _load(app, key);\n await transactionForDeleteRecord(app, record);\n\n for (const collectionRecord of node.children) {\n const collectionKey = joinKey(\n key, collectionRecord.collectionName,\n );\n await _deleteCollection(app, collectionKey, true);\n }\n\n await app.datastore.deleteFile(\n getRecordFileName(key),\n );\n\n await deleteFiles(app, key);\n\n await removeFromAllIds(app.hierarchy, app.datastore)(record);\n\n if (!disableCleanup) { await app.cleanupTransactions(); }\n\n await app.datastore.deleteFolder(key);\n await deleteIndexes(app, key);\n};\n\nconst deleteIndexes = async (app, key) => {\n const node = getExactNodeForPath(app.hierarchy)(key);\n /* const reverseIndexKeys = $(app.hierarchy, [\n getFlattenedHierarchy,\n map(n => n.fields),\n flatten,\n filter(isSomething),\n filter(fieldReversesReferenceToNode(node)),\n map(f => $(f.typeOptions.reverseIndexNodeKeys, [\n map(n => getNode(\n app.hierarchy,\n n))\n ])\n ),\n flatten,\n map(n => joinKey(key, n.name))\n ]);\n\n for(let i of reverseIndexKeys) {\n await _deleteIndex(app, i, true);\n } */\n\n\n for (const index of node.indexes) {\n const indexKey = joinKey(key, index.name);\n await _deleteIndex(app, indexKey, true);\n }\n};\n\nconst deleteFiles = async (app, key) => {\n const filesFolder = joinKey(key, 'files');\n const allFiles = await app.datastore.getFolderContents(\n filesFolder,\n );\n\n for (const file of allFiles) {\n await app.datastore.deleteFile(file);\n }\n\n await app.datastore.deleteFolder(\n joinKey(key, 'files'),\n );\n};\n\nconst uploadFile = app => async (recordKey, readableStream, relativeFilePath) => apiWrapper(\n app,\n events.recordApi.uploadFile,\n permission.updateRecord.isAuthorized(recordKey),\n { recordKey, readableStream, relativeFilePath },\n _uploadFile, app, recordKey, readableStream, relativeFilePath,\n);\n\nconst _uploadFile = async (app, recordKey, readableStream, relativeFilePath) => {\n if (isNothing(recordKey)) { throw new BadRequestError('Record Key not supplied'); }\n if (isNothing(relativeFilePath)) { throw new BadRequestError('file path not supplied'); }\n if (!isLegalFilename(relativeFilePath)) { throw new BadRequestError('Illegal filename'); }\n\n const record = await _load(app, recordKey);\n\n const fullFilePath = safeGetFullFilePath(\n recordKey, relativeFilePath,\n );\n\n const tempFilePath = `${fullFilePath}_${generate()}.temp`;\n\n const outputStream = await app.datastore.writableFileStream(\n tempFilePath,\n );\n\n return new Promise((resolve,reject) => {\n readableStream.pipe(outputStream);\n outputStream.on('error', reject);\n outputStream.on('finish', resolve);\n })\n .then(() => app.datastore.getFileSize(tempFilePath))\n .then(size => {\n const isExpectedFileSize = checkFileSizeAgainstFields(\n app, record, relativeFilePath, size\n ); \n if (!isExpectedFileSize) { throw new BadRequestError(`Fields for ${relativeFilePath} do not have expected size: ${join(',')(incorrectFields)}`); } \n\n })\n .then(() => tryAwaitOrIgnore(app.datastore.deleteFile, fullFilePath))\n .then(() => app.datastore.renameFile(tempFilePath, fullFilePath));\n\n /*\n readableStream.pipe(outputStream);\n\n await new Promise(fulfill => outputStream.on('finish', fulfill));\n\n const isExpectedFileSize = checkFileSizeAgainstFields(\n app,\n record, relativeFilePath,\n await app.datastore.getFileSize(tempFilePath),\n );\n\n if (!isExpectedFileSize) {\n throw new Error(\n `Fields for ${relativeFilePath} do not have expected size`);\n }\n\n await tryAwaitOrIgnore(app.datastore.deleteFile, fullFilePath);\n\n await app.datastore.renameFile(tempFilePath, fullFilePath);\n */\n};\n\nconst checkFileSizeAgainstFields = (app, record, relativeFilePath, expectedSize) => {\n const recordNode = getExactNodeForPath(app.hierarchy)(record.key);\n\n const incorrectFileFields = $(recordNode.fields, [\n filter(f => f.type === 'file'\n && record[f.name].relativePath === relativeFilePath\n && record[f.name].size !== expectedSize),\n map(f => f.name),\n ]);\n\n const incorrectFileArrayFields = $(recordNode.fields, [\n filter(a => a.type === 'array<file>'\n && $(record[a.name], [\n some(f => record[f.name].relativePath === relativeFilePath\n && record[f.name].size !== expectedSize),\n ])),\n map(f => f.name),\n ]);\n\n const incorrectFields = [\n ...incorrectFileFields,\n ...incorrectFileArrayFields,\n ];\n\n if (incorrectFields.length > 0) {\n return false;\n }\n\n return true;\n};\n\nconst safeGetFullFilePath = (recordKey, relativeFilePath) => {\n const naughtyUser = () => { throw new ForbiddenError('naughty naughty'); };\n\n if (relativeFilePath.startsWith('..')) naughtyUser();\n\n const pathParts = splitKey(relativeFilePath);\n\n if (includes$1('..')(pathParts)) naughtyUser();\n\n const recordKeyParts = splitKey(recordKey);\n\n const fullPathParts = [\n ...recordKeyParts,\n 'files',\n ...filter(p => p !== '.')(pathParts),\n ];\n\n return joinKey(fullPathParts);\n};\n\nconst downloadFile = app => async (recordKey, relativePath) => apiWrapper(\n app,\n events.recordApi.uploadFile,\n permission.readRecord.isAuthorized(recordKey),\n { recordKey, relativePath },//remove dupe key 'recordKey' from object\n _downloadFile, app, recordKey, relativePath,\n); \n\n\nconst _downloadFile = async (app, recordKey, relativePath) => {\n if (isNothing(recordKey)) { throw new BadRequestError('Record Key not supplied'); }\n if (isNothing(relativePath)) { throw new BadRequestError('file path not supplied'); }\n\n return await app.datastore.readableFileStream(\n safeGetFullFilePath(\n recordKey, relativePath,\n ),\n );\n};\n\nconst customId = app => (nodeName, id) => {\n const node = $(app.hierarchy, [\n getFlattenedHierarchy,\n find(n => n.name === nodeName),\n ]);\n\n if (!node) throw new NotFoundError(`Cannot find node ${nodeName}`);\n\n return `${node.nodeId}-${id}`;\n};\n\nconst setCustomId = app => (record, id) => {\n record.id = customId(app)(record.type, id);\n\n const keyParts = splitKey(record.key);\n\n record.key = $(keyParts, [\n take(keyParts.length - 1),\n union([record.id]),\n joinKey,\n ]);\n\n return record;\n};\n\nconst api = app => ({\n getNew: getNew(app),\n getNewChild: getNewChild(app),\n save: save(app),\n load: load(app),\n delete: deleteRecord$1(app, false),\n validate: validate(app),\n getContext: getContext(app),\n uploadFile: uploadFile(app),\n downloadFile: downloadFile(app),\n customId: customId(app),\n setCustomId: setCustomId(app),\n});\n\n\nconst getRecordApi = app => api(app);\n\nconst getAllowedRecordTypes = app => key => apiWrapperSync(\n app,\n events.collectionApi.getAllowedRecordTypes,\n alwaysAuthorized,\n { key },\n _getAllowedRecordTypes, app, key,\n);\n\nconst _getAllowedRecordTypes = (app, key) => {\n key = safeKey(key);\n const node = getNodeForCollectionPath(app.hierarchy)(key);\n return isNothing(node) ? [] : [node.name];\n};\n\nconst getCollectionApi = app => ({\n getAllowedRecordTypes: getAllowedRecordTypes(app),\n getAllIdsIterator: getAllIdsIterator(app),\n delete: deleteCollection(app),\n});\n\n/** rebuilds an index\n * @param {object} app - the application container\n * @param {string} indexNodeKey - node key of the index, which the index belongs to\n */\nconst buildIndex = app => async indexNodeKey => apiWrapper(\n app,\n events.indexApi.buildIndex,\n permission.manageIndex.isAuthorized,\n { indexNodeKey },\n _buildIndex, app, indexNodeKey,\n);\n\nconst _buildIndex = async (app, indexNodeKey) => {\n const indexNode = getNode(app.hierarchy, indexNodeKey);\n\n await createBuildIndexFolder(app.datastore, indexNodeKey);\n\n if (!isIndex(indexNode)) { throw new BadRequestError('BuildIndex: must supply an indexnode'); }\n\n if (indexNode.indexType === 'reference') {\n await buildReverseReferenceIndex(\n app, indexNode,\n );\n } else {\n await buildHeirarchalIndex(\n app, indexNode,\n );\n }\n\n await app.cleanupTransactions();\n};\n\nconst buildReverseReferenceIndex = async (app, indexNode) => {\n // Iterate through all referencING records,\n // and update referenced index for each record\n let recordCount = 0;\n const referencingNodes = $(app.hierarchy, [\n getFlattenedHierarchy,\n filter(n => isRecord(n)\n && some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\n ]);\n\n const createTransactionsForReferencingNode = async (referencingNode) => {\n const iterateReferencingNodes = await getAllIdsIterator(app)(referencingNode.collectionNodeKey());\n\n let referencingIdIterator = await iterateReferencingNodes();\n while (!referencingIdIterator.done) {\n const { result } = referencingIdIterator;\n for (const id of result.ids) {\n const recordKey = joinKey(result.collectionKey, id);\n await transactionForBuildIndex(app, indexNode.nodeKey(), recordKey, recordCount);\n recordCount++;\n }\n referencingIdIterator = await iterateReferencingNodes();\n }\n };\n\n for (const referencingNode of referencingNodes) {\n await createTransactionsForReferencingNode(referencingNode);\n }\n};\n\nconst buildHeirarchalIndex = async (app, indexNode) => {\n let recordCount = 0;\n\n const createTransactionsForIds = async (collectionKey, ids) => {\n for (const recordId of ids) {\n const recordKey = joinKey(collectionKey, recordId);\n\n const recordNode = getRecordNodeById(\n app.hierarchy,\n recordId,\n );\n\n if (recordNodeApplies(indexNode)(recordNode)) {\n await transactionForBuildIndex(\n app, indexNode.nodeKey(),\n recordKey, recordCount,\n );\n recordCount++;\n }\n }\n };\n\n\n const collectionRecords = getAllowedRecordNodesForIndex(app.hierarchy, indexNode);\n\n for (const targetCollectionRecordNode of collectionRecords) {\n const allIdsIterator = await getAllIdsIterator(app)(targetCollectionRecordNode.collectionNodeKey());\n\n let allIds = await allIdsIterator();\n while (allIds.done === false) {\n await createTransactionsForIds(\n allIds.result.collectionKey,\n allIds.result.ids,\n );\n allIds = await allIdsIterator();\n }\n }\n\n return recordCount;\n};\n\nconst recordNodeApplies = indexNode => recordNode => includes$1(recordNode.nodeId)(indexNode.allowedRecordNodeIds);\n\nconst aggregates = app => async (indexKey, rangeStartParams = null, rangeEndParams = null) => apiWrapper(\n app,\n events.indexApi.aggregates,\n permission.readIndex.isAuthorized(indexKey),\n { indexKey, rangeStartParams, rangeEndParams },\n _aggregates, app, indexKey, rangeStartParams, rangeEndParams,\n);\n\nconst _aggregates = async (app, indexKey, rangeStartParams, rangeEndParams) => {\n indexKey = safeKey(indexKey);\n const indexNode = getExactNodeForPath(app.hierarchy)(indexKey);\n\n if (!isIndex(indexNode)) { throw new BadRequestError('supplied key is not an index'); }\n\n if (isShardedIndex(indexNode)) {\n const shardKeys = await getShardKeysInRange(\n app, indexKey, rangeStartParams, rangeEndParams,\n );\n let aggregateResult = null;\n for (const k of shardKeys) {\n const shardResult = await getAggregates(app.hierarchy, app.datastore, indexNode, k);\n if (aggregateResult === null) {\n aggregateResult = shardResult;\n } else {\n aggregateResult = mergeShardAggregate(\n aggregateResult,\n shardResult,\n );\n }\n }\n return aggregateResult;\n }\n return await getAggregates(\n app.hierarchy,\n app.datastore,\n indexNode,\n getUnshardedIndexDataKey(indexKey),\n );\n};\n\nconst mergeShardAggregate = (totals, shard) => {\n const mergeGrouping = (tot, shr) => {\n tot.count += shr.count;\n for (const aggName in tot) {\n if (aggName === 'count') continue;\n const totagg = tot[aggName];\n const shragg = shr[aggName];\n totagg.sum += shragg.sum;\n totagg.max = totagg.max > shragg.max\n ? totagg.max\n : shragg.max;\n totagg.min = totagg.min < shragg.min\n ? totagg.min\n : shragg.min;\n totagg.mean = totagg.sum / tot.count;\n }\n return tot;\n };\n\n for (const aggGroupDef in totals) {\n for (const grouping in shard[aggGroupDef]) {\n const groupingTotal = totals[aggGroupDef][grouping];\n totals[aggGroupDef][grouping] = isUndefined(groupingTotal)\n ? shard[aggGroupDef][grouping]\n : mergeGrouping(\n totals[aggGroupDef][grouping],\n shard[aggGroupDef][grouping],\n );\n }\n }\n\n return totals;\n};\n\nconst getAggregates = async (hierarchy, datastore, index, indexedDataKey) => {\n const aggregateResult = {};\n const doRead = iterateIndex(\n async item => {\n applyItemToAggregateResult(\n index, aggregateResult, item,\n );\n return CONTINUE_READING_RECORDS;\n },\n async () => aggregateResult\n );\n\n return await doRead(hierarchy, datastore, index, indexedDataKey);\n};\n\n\nconst applyItemToAggregateResult = (indexNode, result, item) => {\n const getInitialAggregateResult = () => ({\n sum: 0, mean: null, max: null, min: null,\n });\n\n const applyAggregateResult = (agg, existing, count) => {\n const value = compileCode$1(agg.aggregatedValue)({ record: item });\n\n if (!isNumber$1(value)) return existing;\n\n existing.sum += value;\n existing.max = value > existing.max || existing.max === null\n ? value\n : existing.max;\n existing.min = value < existing.min || existing.min === null\n ? value\n : existing.min;\n existing.mean = existing.sum / count;\n return existing;\n };\n\n for (const aggGroup of indexNode.aggregateGroups) {\n if (!has$1(aggGroup.name)(result)) {\n result[aggGroup.name] = {};\n }\n\n const thisGroupResult = result[aggGroup.name];\n\n if (isNonEmptyString(aggGroup.condition)) {\n if (!compileExpression$1(aggGroup.condition)({ record: item })) {\n continue;\n }\n }\n\n let group = isNonEmptyString(aggGroup.groupBy)\n ? compileCode$1(aggGroup.groupBy)({ record: item })\n : 'all';\n if (!isNonEmptyString(group)) {\n group = '(none)';\n }\n\n if (!has$1(group)(thisGroupResult)) {\n thisGroupResult[group] = { count: 0 };\n for (const agg of aggGroup.aggregates) {\n thisGroupResult[group][agg.name] = getInitialAggregateResult();\n }\n }\n\n thisGroupResult[group].count++;\n\n for (const agg of aggGroup.aggregates) {\n const existingValues = thisGroupResult[group][agg.name];\n thisGroupResult[group][agg.name] = applyAggregateResult(\n agg, existingValues,\n thisGroupResult[group].count,\n );\n }\n }\n};\n\nconst getIndexApi = app => ({\n listItems: listItems(app),\n buildIndex: buildIndex(app),\n aggregates: aggregates(app),\n});\n\nconst createNodeErrors = {\n indexCannotBeParent: 'Index template cannot be a parent',\n allNonRootNodesMustHaveParent: 'Only the root node may have no parent',\n indexParentMustBeRecordOrRoot: 'An index may only have a record or root as a parent',\n aggregateParentMustBeAnIndex: 'aggregateGroup parent must be an index',\n};\n\nconst pathRegxMaker = node => () => node.nodeKey().replace(/{id}/g, '[a-zA-Z0-9_-]+');\n\nconst nodeKeyMaker = node => () => switchCase(\n\n [n => isRecord(n) && !isSingleRecord(n),\n n => joinKey(\n node.parent().nodeKey(),\n node.collectionName,\n `${n.nodeId}-{id}`,\n )],\n\n [isRoot,\n constant('/')],\n\n [defaultCase,\n n => joinKey(node.parent().nodeKey(), n.name)],\n\n)(node);\n\n\nconst validate$1 = parent => (node) => {\n if (isIndex(node)\n && isSomething(parent)\n && !isRoot(parent)\n && !isRecord(parent)) {\n throw new BadRequestError(createNodeErrors.indexParentMustBeRecordOrRoot);\n }\n\n if (isaggregateGroup(node)\n && isSomething(parent)\n && !isIndex(parent)) {\n throw new BadRequestError(createNodeErrors.aggregateParentMustBeAnIndex);\n }\n\n if (isNothing(parent) && !isRoot(node)) { throw new BadRequestError(createNodeErrors.allNonRootNodesMustHaveParent); }\n\n return node;\n};\n\nconst construct = parent => (node) => {\n node.nodeKey = nodeKeyMaker(node);\n node.pathRegx = pathRegxMaker(node);\n node.parent = constant(parent);\n node.isRoot = () => isNothing(parent)\n && node.name === 'root'\n && node.type === 'root';\n if (isCollectionRecord(node)) {\n node.collectionNodeKey = () => joinKey(\n parent.nodeKey(), node.collectionName,\n );\n node.collectionPathRegx = () => joinKey(\n parent.pathRegx(), node.collectionName,\n );\n }\n return node;\n};\n\nconst addToParent = (obj) => {\n const parent = obj.parent();\n if (isSomething(parent)) {\n if (isIndex(obj))\n // Q: why are indexes not children ?\n // A: because they cannot have children of their own.\n { parent.indexes.push(obj); } else if (isaggregateGroup(obj)) { parent.aggregateGroups.push(obj); } else { parent.children.push(obj); }\n\n if (isRecord(obj)) {\n const defaultIndex = find$1(\n parent.indexes,\n i => i.name === `${parent.name}_index`,\n );\n if (defaultIndex) {\n defaultIndex.allowedRecordNodeIds.push(obj.nodeId);\n }\n }\n }\n return obj;\n};\n\nconst constructNode = (parent, obj) => $(obj, [\n construct(parent),\n validate$1(parent),\n addToParent,\n]);\n\nconst getNodeId = (parentNode) => {\n // this case is handled better elsewhere\n if (!parentNode) return null;\n const findRoot = n => (isRoot(n) ? n : findRoot(n.parent()));\n const root = findRoot(parentNode);\n\n return ($(root, [\n getFlattenedHierarchy,\n map(n => n.nodeId),\n max]) + 1);\n};\n\nconst constructHierarchy = (node, parent) => {\n construct(parent)(node);\n if (node.indexes) {\n each$1(node.indexes,\n child => constructHierarchy(child, node));\n }\n if (node.aggregateGroups) {\n each$1(node.aggregateGroups,\n child => constructHierarchy(child, node));\n }\n if (node.children && node.children.length > 0) {\n each$1(node.children,\n child => constructHierarchy(child, node));\n }\n if (node.fields) {\n each$1(node.fields,\n f => each$1(f.typeOptions, (val, key) => {\n const def = all$1[f.type].optionDefinitions[key];\n if (!def) {\n // unknown typeOption\n delete f.typeOptions[key];\n } else {\n f.typeOptions[key] = def.parse(val);\n }\n }));\n }\n return node;\n};\n\n\nconst getNewRootLevel = () => construct()({\n name: 'root',\n type: 'root',\n children: [],\n pathMaps: [],\n indexes: [],\n nodeId: 0,\n});\n\nconst _getNewRecordTemplate = (parent, name, createDefaultIndex, isSingle) => {\n const node = constructNode(parent, {\n name,\n type: 'record',\n fields: [],\n children: [],\n validationRules: [],\n nodeId: getNodeId(parent),\n indexes: [],\n allidsShardFactor: isRecord(parent) ? 1 : 64,\n collectionName: '',\n isSingle,\n });\n\n if (createDefaultIndex) {\n const defaultIndex = getNewIndexTemplate(parent);\n defaultIndex.name = `${name}_index`;\n defaultIndex.allowedRecordNodeIds.push(node.nodeId);\n }\n\n return node;\n};\n\nconst getNewRecordTemplate = (parent, name = '', createDefaultIndex = true) => _getNewRecordTemplate(parent, name, createDefaultIndex, false);\n\nconst getNewSingleRecordTemplate = parent => _getNewRecordTemplate(parent, '', false, true);\n\nconst getNewIndexTemplate = (parent, type = 'ancestor') => constructNode(parent, {\n name: '',\n type: 'index',\n map: 'return {...record};',\n filter: '',\n indexType: type,\n getShardName: '',\n getSortKey: 'record.id',\n aggregateGroups: [],\n allowedRecordNodeIds: [],\n nodeId: getNodeId(parent),\n});\n\nconst getNewAggregateGroupTemplate = index => constructNode(index, {\n name: '',\n type: 'aggregateGroup',\n groupBy: '',\n aggregates: [],\n condition: '',\n nodeId: getNodeId(index),\n});\n\nconst getNewAggregateTemplate = (set) => {\n const aggregatedValue = {\n name: '',\n aggregatedValue: '',\n };\n set.aggregates.push(aggregatedValue);\n return aggregatedValue;\n};\n\nconst fieldErrors = {\n AddFieldValidationFailed: 'Add field validation: ',\n};\n\nconst allowedTypes = () => keys$1(all$1);\n\nconst getNewField = type => ({\n name: '', // how field is referenced internally\n type,\n typeOptions: getDefaultOptions$1(type),\n label: '', // how field is displayed\n getInitialValue: 'default', // function that gets value when initially created\n getUndefinedValue: 'default', // function that gets value when field undefined on record\n});\n\nconst fieldRules = allFields => [\n makerule('name', 'field name is not set',\n f => isNonEmptyString(f.name)),\n makerule('type', 'field type is not set',\n f => isNonEmptyString(f.type)),\n makerule('label', 'field label is not set',\n f => isNonEmptyString(f.label)),\n makerule('getInitialValue', 'getInitialValue function is not set',\n f => isNonEmptyString(f.getInitialValue)),\n makerule('getUndefinedValue', 'getUndefinedValue function is not set',\n f => isNonEmptyString(f.getUndefinedValue)),\n makerule('name', 'field name is duplicated',\n f => isNothingOrEmpty(f.name)\n || countBy('name')(allFields)[f.name] === 1),\n makerule('type', 'type is unknown',\n f => isNothingOrEmpty(f.type)\n || some(t => f.type === t)(allowedTypes())),\n];\n\nconst typeOptionsRules = (field) => {\n const type = all$1[field.type];\n if (isNothing(type)) return [];\n\n const def = optName => type.optionDefinitions[optName];\n\n return $(field.typeOptions, [\n keys$1,\n filter(o => isSomething(def(o))\n && isSomething(def(o).isValid)),\n map(o => makerule(\n `typeOptions.${o}`,\n `${def(o).requirementDescription}`,\n field => def(o).isValid(field.typeOptions[o]),\n )),\n ]);\n};\n\nconst validateField = allFields => (field) => {\n const everySingleField = includes$1(field)(allFields) ? allFields : [...allFields, field];\n return applyRuleSet([...fieldRules(everySingleField), ...typeOptionsRules(field)])(field);\n};\n\nconst validateAllFields = recordNode => $(recordNode.fields, [\n map(validateField(recordNode.fields)),\n flatten,\n]);\n\nconst addField = (recordTemplate, field) => {\n if (isNothingOrEmpty(field.label)) {\n field.label = field.name;\n }\n const validationMessages = validateField([...recordTemplate.fields, field])(field);\n if (validationMessages.length > 0) {\n const errors = map(m => m.error)(validationMessages);\n throw new BadRequestError(`${fieldErrors.AddFieldValidationFailed} ${errors.join(', ')}`);\n }\n recordTemplate.fields.push(field);\n};\n\nconst getNewRecordValidationRule = (invalidFields,\n messageWhenInvalid,\n expressionWhenValid) => ({\n invalidFields, messageWhenInvalid, expressionWhenValid,\n});\n\nconst getStaticValue = switchCase(\n [isNumber$1, v => v.toString()],\n [isBoolean$1, v => v.toString()],\n [defaultCase$1, v => `'${v}'`],\n);\n\nconst commonRecordValidationRules = ({\n\n fieldNotEmpty: fieldName => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} is empty`,\n `!_.isEmpty(record['${fieldName}'])`,\n ),\n\n fieldBetween: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be between ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} && record['${fieldName}'] <= ${getStaticValue(max)} `,\n ),\n\n fieldGreaterThan: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be greater than ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} `,\n ),\n});\n\nconst addRecordValidationRule = recordNode => rule => recordNode.validationRules.push(rule);\n\nconst createTrigger = () => ({\n actionName: '',\n eventName: '',\n // function, has access to event context,\n // returns object that is used as parameter to action\n // only used if triggered by event\n optionsCreator: '',\n // action runs if true,\n // has access to event context\n condition: '',\n});\n\nconst createAction = () => ({\n name: '',\n behaviourSource: '',\n // name of function in actionSource\n behaviourName: '',\n // parameter passed into behaviour.\n // any other parms passed at runtime e.g.\n // by trigger, or manually, will be merged into this\n initialOptions: {},\n});\n\nconst aggregateRules = [\n makerule('name', 'choose a name for the aggregate',\n a => isNonEmptyString(a.name)),\n makerule('aggregatedValue', 'aggregatedValue does not compile',\n a => isEmpty(a.aggregatedValue)\n || executesWithoutException(\n () => compileCode$1(a.aggregatedValue),\n )),\n];\n\nconst validateAggregate = aggregate => applyRuleSet(aggregateRules)(aggregate);\n\nconst validateAllAggregates = all => $(all, [\n map(validateAggregate),\n flatten,\n]);\n\nconst ruleSet = (...sets) => constant$1(flatten([...sets]));\n\nconst commonRules = [\n makerule('name', 'node name is not set',\n node => stringNotEmpty(node.name)),\n makerule('type', 'node type not recognised',\n anyTrue(isRecord, isRoot, isIndex, isaggregateGroup)),\n];\n\nconst recordRules = [\n makerule('fields', 'no fields have been added to the record',\n node => isNonEmptyArray(node.fields)),\n makerule('validationRules', \"validation rule is missing a 'messageWhenValid' member\",\n node => every(r => has(r, 'messageWhenInvalid'))(node.validationRules)),\n makerule('validationRules', \"validation rule is missing a 'expressionWhenValid' member\",\n node => every(r => has(r, 'expressionWhenValid'))(node.validationRules)),\n];\n\n\nconst aggregateGroupRules = [\n makerule('condition', 'condition does not compile',\n a => isEmpty$1(a.condition)\n || executesWithoutException(\n () => compileExpression$1(a.condition),\n )),\n];\n\nconst getRuleSet = node => switchCase(\n\n [isRecord, ruleSet(\n commonRules,\n recordRules,\n )],\n\n [isIndex, ruleSet(\n commonRules,\n indexRuleSet,\n )],\n\n [isaggregateGroup, ruleSet(\n commonRules,\n aggregateGroupRules,\n )],\n\n [defaultCase, ruleSet(commonRules, [])],\n)(node);\n\nconst validateNode = node => applyRuleSet(getRuleSet(node))(node);\n\nconst validateAll = (appHierarchy) => {\n const flattened = getFlattenedHierarchy(\n appHierarchy,\n );\n\n const duplicateNameRule = makerule(\n 'name', 'node names must be unique under shared parent',\n n => filter(f => f.parent() === n.parent()\n && f.name === n.name)(flattened).length === 1,\n );\n\n const duplicateNodeKeyErrors = $(flattened, [\n map(n => applyRuleSet([duplicateNameRule])(n)),\n filter(isSomething),\n flatten,\n ]);\n\n const fieldErrors = $(flattened, [\n filter(isRecord),\n map(validateAllFields),\n flatten,\n ]);\n\n const aggregateErrors = $(flattened, [\n filter(isaggregateGroup),\n map(s => validateAllAggregates(\n s.aggregates,\n )),\n flatten,\n ]);\n\n return $(flattened, [\n map(validateNode),\n flatten,\n union(duplicateNodeKeyErrors),\n union(fieldErrors),\n union(aggregateErrors),\n ]);\n};\n\nconst actionRules = [\n makerule('name', 'action must have a name',\n a => isNonEmptyString(a.name)),\n makerule('behaviourName', 'must supply a behaviour name to the action',\n a => isNonEmptyString(a.behaviourName)),\n makerule('behaviourSource', 'must supply a behaviour source for the action',\n a => isNonEmptyString(a.behaviourSource)),\n];\n\nconst duplicateActionRule = makerule('', 'action name must be unique', () => {});\n\nconst validateAction = action => applyRuleSet(actionRules)(action);\n\n\nconst validateActions = (allActions) => {\n const duplicateActions = $(allActions, [\n filter(a => filter(a2 => a2.name === a.name)(allActions).length > 1),\n map(a => validationError(duplicateActionRule, a)),\n ]);\n\n const errors = $(allActions, [\n map(validateAction),\n flatten,\n union(duplicateActions),\n uniqBy('name'),\n ]);\n\n return errors;\n};\n\nconst triggerRules = actions => ([\n makerule('actionName', 'must specify an action',\n t => isNonEmptyString(t.actionName)),\n makerule('eventName', 'must specify and event',\n t => isNonEmptyString(t.eventName)),\n makerule('actionName', 'specified action not supplied',\n t => !t.actionName\n || some(a => a.name === t.actionName)(actions)),\n makerule('eventName', 'invalid Event Name',\n t => !t.eventName\n || includes$1(t.eventName)(eventsList)),\n makerule('optionsCreator', 'Options Creator does not compile - check your expression',\n (t) => {\n if (!t.optionsCreator) return true;\n try {\n compileCode$1(t.optionsCreator);\n return true;\n } catch (_) { return false; }\n }),\n makerule('condition', 'Trigger condition does not compile - check your expression',\n (t) => {\n if (!t.condition) return true;\n try {\n compileExpression$1(t.condition);\n return true;\n } catch (_) { return false; }\n }),\n]);\n\nconst validateTrigger = (trigger, allActions) => {\n const errors = applyRuleSet(triggerRules(allActions))(trigger);\n\n return errors;\n};\n\nconst validateTriggers = (triggers, allActions) => $(triggers, [\n map(t => validateTrigger(t, allActions)),\n flatten,\n]);\n\nconst getApplicationDefinition = datastore => async () => {\n const exists = await datastore.exists(appDefinitionFile);\n\n if (!exists) throw new Error('Application definition does not exist');\n\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = constructHierarchy(\n appDefinition.hierarchy,\n );\n return appDefinition;\n};\n\nconst saveApplicationHierarchy = app => async hierarchy => apiWrapper(\n app,\n events.templateApi.saveApplicationHierarchy,\n permission.writeTemplates.isAuthorized,\n { hierarchy },\n _saveApplicationHierarchy, app.datastore, hierarchy,\n);\n\n\nconst _saveApplicationHierarchy = async (datastore, hierarchy) => {\n const validationErrors = await validateAll(hierarchy);\n if (validationErrors.length > 0) {\n throw new Error(`Hierarchy is invalid: ${join$1(\n validationErrors.map(e => `${e.item.nodeKey ? e.item.nodeKey() : ''} : ${e.error}`),\n ',',\n )}`);\n }\n\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = hierarchy;\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n await datastore.createFolder('/.config');\n const appDefinition = { actions: [], triggers: [], hierarchy };\n await datastore.createJson(appDefinitionFile, appDefinition);\n }\n};\n\nconst saveActionsAndTriggers = app => async (actions, triggers) => apiWrapper(\n app,\n events.templateApi.saveActionsAndTriggers,\n permission.writeTemplates.isAuthorized,\n { actions, triggers },\n _saveActionsAndTriggers, app.datastore, actions, triggers,\n);\n\nconst _saveActionsAndTriggers = async (datastore, actions, triggers) => {\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.actions = actions;\n appDefinition.triggers = triggers;\n\n const actionValidErrs = map(e => e.error)(validateActions(actions));\n\n if (actionValidErrs.length > 0) {\n throw new BadRequestError(`Actions are invalid: ${join$1(actionValidErrs, ', ')}`);\n }\n\n const triggerValidErrs = map(e => e.error)(validateTriggers(triggers, actions));\n\n if (triggerValidErrs.length > 0) {\n throw new BadRequestError(`Triggers are invalid: ${join$1(triggerValidErrs, ', ')}`);\n }\n\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n throw new BadRequestError('Cannot save actions: Application definition does not exist');\n }\n};\n\nconst getBehaviourSources = async (datastore) => {\n await datastore.loadFile('/.config/behaviourSources.js');\n};\n\nconst api$1 = app => ({\n\n getApplicationDefinition: getApplicationDefinition(app.datastore),\n saveApplicationHierarchy: saveApplicationHierarchy(app),\n saveActionsAndTriggers: saveActionsAndTriggers(app),\n getBehaviourSources: () => getBehaviourSources(app.datastore),\n getNewRootLevel,\n constructNode,\n getNewIndexTemplate,\n getNewRecordTemplate,\n getNewField,\n validateField,\n addField,\n fieldErrors,\n getNewRecordValidationRule,\n commonRecordValidationRules,\n addRecordValidationRule,\n createAction,\n createTrigger,\n validateActions,\n validateTrigger,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n constructHierarchy,\n getNewSingleRecordTemplate,\n allTypes: all$1,\n validateNode,\n validateAll,\n validateTriggers,\n});\n\n\nconst getTemplateApi = app => api$1(app);\n\nconst getUsers = app => async () => apiWrapper(\n app,\n events.authApi.getUsers,\n permission.listUsers.isAuthorized,\n {},\n _getUsers, app,\n);\n\nconst _getUsers = async app => $(await app.datastore.loadJson(USERS_LIST_FILE), [\n map(stripUserOfSensitiveStuff),\n]);\n\nconst loadAccessLevels = app => async () => apiWrapper(\n app,\n events.authApi.loadAccessLevels,\n permission.listAccessLevels.isAuthorized,\n {},\n _loadAccessLevels, app,\n);\n\nconst _loadAccessLevels = async app => await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n\nconst dummyHash = '$argon2i$v=19$m=4096,t=3,p=1$UZRo409UYBGjHJS3CV6Uxw$rU84qUqPeORFzKYmYY0ceBLDaPO+JWSH4PfNiKXfIKk';\n\nconst authenticate = app => async (username, password) => apiWrapper(\n app,\n events.authApi.authenticate,\n alwaysAuthorized,\n { username, password },\n _authenticate, app, username, password,\n);\n\nconst _authenticate = async (app, username, password) => {\n if (isNothingOrEmpty(username) || isNothingOrEmpty(password)) { return null; }\n\n const allUsers = await _getUsers(app);\n let user = getUserByName(\n allUsers,\n username,\n );\n\n const notAUser = 'not-a-user';\n // continue with non-user - so time to verify remains consistent\n // with verification of a valid user\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(username),\n );\n } catch (_) {\n userAuth = { accessLevels: [], passwordHash: dummyHash };\n }\n\n const permissions = await buildUserPermissions(app, user.accessLevels);\n\n const verified = await app.crypto.verify(\n userAuth.passwordHash,\n password,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user, permissions, temp: false, isUser: true,\n }\n : null;\n};\n\nconst authenticateTemporaryAccess = app => async (tempAccessCode) => {\n if (isNothingOrEmpty(tempAccessCode)) { return null; }\n\n const temp = parseTemporaryCode(tempAccessCode);\n let user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n const notAUser = 'not-a-user';\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n } catch (e) {\n userAuth = {\n temporaryAccessHash: dummyHash,\n temporaryAccessExpiryEpoch: (await app.getEpochTime() + 10000),\n };\n }\n\n if (userAuth.temporaryAccessExpiryEpoch < await app.getEpochTime()) { user = notAUser; }\n\n const tempCode = !temp.code ? generate() : temp.code;\n const verified = await app.crypto.verify(\n userAuth.temporaryAccessHash,\n tempCode,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user,\n permissions: [],\n temp: true,\n isUser: true,\n }\n : null;\n};\n\nconst buildUserPermissions = async (app, userAccessLevels) => {\n const allAccessLevels = await _loadAccessLevels(app);\n\n return $(allAccessLevels.levels, [\n filter(l => some(ua => l.name === ua)(userAccessLevels)),\n map(l => l.permissions),\n flatten,\n ]);\n};\n\nconst createTemporaryAccess$1 = app => async userName => apiWrapper(\n app,\n events.authApi.createTemporaryAccess,\n alwaysAuthorized,\n { userName },\n _createTemporaryAccess, app, userName,\n);\n\nconst _createTemporaryAccess = async (app, userName) => {\n const tempCode = await getTemporaryCode(app);\n\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create temporary access, could not get lock - try again'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const user = getUserByName(users, userName);\n user.temporaryAccessId = tempCode.temporaryAccessId;\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n } finally {\n await releaseLock(app, lock);\n }\n\n const userAuth = await app.datastore.loadJson(\n userAuthFile(userName),\n );\n userAuth.temporaryAccessHash = tempCode.temporaryAccessHash;\n\n userAuth.temporaryAccessExpiryEpoch = tempCode.temporaryAccessExpiryEpoch;\n\n await app.datastore.updateJson(\n userAuthFile(userName),\n userAuth,\n );\n\n return tempCode.tempCode;\n};\n\nconst getTemporaryCode = async (app) => {\n const tempCode = generate()\n + generate()\n + generate()\n + generate();\n\n const tempId = generate();\n\n return {\n temporaryAccessHash: await app.crypto.hash(\n tempCode,\n ),\n temporaryAccessExpiryEpoch:\n (await app.getEpochTime()) + tempCodeExpiryLength,\n tempCode: `tmp:${tempId}:${tempCode}`,\n temporaryAccessId: tempId,\n };\n};\n\nconst userRules = allUsers => [\n makerule('name', 'username must be set',\n u => isNonEmptyString(u.name)),\n makerule('accessLevels', 'user must have at least one access level',\n u => u.accessLevels.length > 0),\n makerule('name', 'username must be unique',\n u => filter(u2 => insensitiveEquals(u2.name, u.name))(allUsers).length === 1),\n makerule('accessLevels', 'access levels must only contain stings',\n u => all(isNonEmptyString)(u.accessLevels)),\n];\n\nconst validateUser = () => (allusers, user) => applyRuleSet(userRules(allusers))(user);\n\nconst getNewUser = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUser,\n permission.createUser.isAuthorized,\n {},\n _getNewUser, app,\n);\n\nconst _getNewUser = () => ({\n name: '',\n accessLevels: [],\n enabled: true,\n temporaryAccessId: '',\n});\n\nconst getNewUserAuth = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUserAuth,\n permission.createUser.isAuthorized,\n {},\n _getNewUserAuth, app,\n);\n\nconst _getNewUserAuth = () => ({\n passwordHash: '',\n temporaryAccessHash: '',\n temporaryAccessExpiryEpoch: 0,\n});\n\nconst isValidPassword = app => password => apiWrapperSync(\n app,\n events.authApi.isValidPassword,\n alwaysAuthorized,\n { password },\n _isValidPassword, app, password,\n);\n\nconst _isValidPassword = (app, password) => scorePassword(password).score > 30;\n\nconst changeMyPassword = app => async (currentPw, newpassword) => apiWrapper(\n app,\n events.authApi.changeMyPassword,\n alwaysAuthorized,\n { currentPw, newpassword },\n _changeMyPassword, app, currentPw, newpassword,\n);\n\nconst _changeMyPassword = async (app, currentPw, newpassword) => {\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(app.user.name),\n );\n\n if (isSomething(existingAuth.passwordHash)) {\n const verified = await app.crypto.verify(\n existingAuth.passwordHash,\n currentPw,\n );\n\n if (verified) {\n await await doSet(\n app, existingAuth,\n app.user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nconst setPasswordFromTemporaryCode = app => async (tempCode, newpassword) => apiWrapper(\n app,\n events.authApi.setPasswordFromTemporaryCode,\n alwaysAuthorized,\n { tempCode, newpassword },\n _setPasswordFromTemporaryCode, app, tempCode, newpassword,\n);\n\n\nconst _setPasswordFromTemporaryCode = async (app, tempCode, newpassword) => {\n const currentTime = await app.getEpochTime();\n\n const temp = parseTemporaryCode(tempCode);\n\n const user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n if (!user) { return false; }\n\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n\n if (isSomething(existingAuth.temporaryAccessHash)\n && existingAuth.temporaryAccessExpiryEpoch > currentTime) {\n const verified = await app.crypto.verify(\n existingAuth.temporaryAccessHash,\n temp.code,\n );\n\n if (verified) {\n await doSet(\n app, existingAuth,\n user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nconst doSet = async (app, auth, username, newpassword) => {\n auth.temporaryAccessHash = '';\n auth.temporaryAccessExpiryEpoch = 0;\n auth.passwordHash = await app.crypto.hash(\n newpassword,\n );\n await app.datastore.updateJson(\n userAuthFile(username),\n auth,\n );\n};\n\nconst scorePassword = app => password => apiWrapperSync(\n app,\n events.authApi.scorePassword,\n alwaysAuthorized,\n { password },\n _scorePassword, password,\n);\n\nconst _scorePassword = (password) => {\n // from https://stackoverflow.com/questions/948172/password-strength-meter\n // thank you https://stackoverflow.com/users/46617/tm-lv\n\n let score = 0;\n if (!password) { return score; }\n\n // award every unique letter until 5 repetitions\n const letters = new Object();\n for (let i = 0; i < password.length; i++) {\n letters[password[i]] = (letters[password[i]] || 0) + 1;\n score += 5.0 / letters[password[i]];\n }\n\n // bonus points for mixing it up\n const variations = {\n digits: /\\d/.test(password),\n lower: /[a-z]/.test(password),\n upper: /[A-Z]/.test(password),\n nonWords: /\\W/.test(password),\n };\n\n let variationCount = 0;\n for (const check in variations) {\n variationCount += (variations[check] == true) ? 1 : 0;\n }\n score += (variationCount - 1) * 10;\n\n const strengthText = score > 80\n ? 'strong'\n : score > 60\n ? 'good'\n : score >= 30\n ? 'weak'\n : 'very weak';\n\n return {\n score: parseInt(score),\n strengthText,\n };\n};\n\nconst createUser$1 = app => async (user, password = null) => apiWrapper(\n app,\n events.authApi.createUser,\n permission.createUser.isAuthorized,\n { user, password },\n _createUser, app, user, password,\n);\n\nconst _createUser = async (app, user, password = null) => {\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create user, could not get lock - try again'); }\n\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const userErrors = validateUser()([...users, user], user);\n if (userErrors.length > 0) { throw new BadRequestError(`User is invalid. ${join$2('; ')(userErrors)}`); }\n\n const { auth, tempCode, temporaryAccessId } = await getAccess(\n app, password,\n );\n user.tempCode = tempCode;\n user.temporaryAccessId = temporaryAccessId;\n\n if (some(u => insensitiveEquals(u.name, user.name))(users)) { \n throw new BadRequestError('User already exists'); \n }\n\n users.push(\n stripUserOfSensitiveStuff(user),\n );\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n\n try {\n await app.datastore.createJson(\n userAuthFile(user.name),\n auth,\n );\n } catch (_) {\n await app.datastore.updateJson(\n userAuthFile(user.name),\n auth,\n );\n }\n\n await releaseLock(app, lock);\n\n return user;\n};\n\nconst getAccess = async (app, password) => {\n const auth = getNewUserAuth(app)();\n\n if (isNonEmptyString(password)) {\n if (isValidPassword(password)) {\n auth.passwordHash = await app.crypto.hash(password);\n auth.temporaryAccessHash = '';\n auth.temporaryAccessId = '';\n auth.temporaryAccessExpiryEpoch = 0;\n return { auth };\n }\n throw new BadRequestError('Password does not meet requirements');\n } else {\n const tempAccess = await getTemporaryCode(app);\n auth.temporaryAccessHash = tempAccess.temporaryAccessHash;\n auth.temporaryAccessExpiryEpoch = tempAccess.temporaryAccessExpiryEpoch;\n auth.passwordHash = '';\n return ({\n auth,\n tempCode: tempAccess.tempCode,\n temporaryAccessId: tempAccess.temporaryAccessId,\n });\n }\n};\n\nconst enableUser = app => async username => apiWrapper(\n app,\n events.authApi.enableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _enableUser, app, username,\n);\n\nconst disableUser = app => async username => apiWrapper(\n app,\n events.authApi.disableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _disableUser, app, username,\n);\n\nconst _enableUser = async (app, username) => await toggleUser(app, username, true);\n\nconst _disableUser = async (app, username) => await toggleUser(app, username, false);\n\nconst toggleUser = async (app, username, enabled) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actionName = enabled ? 'enable' : 'disable';\n\n if (isNolock(lock)) { throw new Error(`Could not ${actionName} user - cannot get lock`); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user to ${actionName}`); }\n\n if (user.enabled === !enabled) {\n user.enabled = enabled;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n }\n } finally {\n releaseLock(app, lock);\n }\n};\n\nconst getNewAccessLevel = () => () => ({\n name: '',\n permissions: [],\n default:false\n});\n\nconst isAllowedType = t => $(permissionTypes, [\n values,\n includes$1(t),\n]);\n\nconst isRecordOrIndexType = t => some(p => p === t)([\n permissionTypes.CREATE_RECORD,\n permissionTypes.UPDATE_RECORD,\n permissionTypes.DELETE_RECORD,\n permissionTypes.READ_RECORD,\n permissionTypes.READ_INDEX,\n permissionTypes.EXECUTE_ACTION,\n]);\n\n\nconst permissionRules = app => ([\n makerule('type', 'type must be one of allowed types',\n p => isAllowedType(p.type)),\n makerule('nodeKey', 'record and index permissions must include a valid nodeKey',\n p => (!isRecordOrIndexType(p.type))\n || isSomething(getNode(app.hierarchy, p.nodeKey))),\n]);\n\nconst applyPermissionRules = app => applyRuleSet(permissionRules(app));\n\nconst accessLevelRules = allLevels => ([\n makerule('name', 'name must be set',\n l => isNonEmptyString(l.name)),\n makerule('name', 'access level names must be unique',\n l => isEmpty$1(l.name)\n || filter(a => insensitiveEquals(l.name, a.name))(allLevels).length === 1),\n]);\n\nconst applyLevelRules = allLevels => applyRuleSet(accessLevelRules(allLevels));\n\nconst validateAccessLevel = app => (allLevels, level) => {\n const errs = $(level.permissions, [\n map(applyPermissionRules(app)),\n flatten,\n concat(\n applyLevelRules(allLevels)(level),\n ),\n ]);\n\n return errs;\n};\n\nconst validateAccessLevels = app => allLevels => apiWrapperSync(\n app,\n events.authApi.validateAccessLevels,\n alwaysAuthorized,\n { allLevels },\n _validateAccessLevels, app, allLevels,\n);\n\nconst _validateAccessLevels = (app, allLevels) => $(allLevels, [\n map(l => validateAccessLevel(app)(allLevels, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n\nconst saveAccessLevels = app => async accessLevels => apiWrapper(\n app,\n events.authApi.saveAccessLevels,\n permission.writeAccessLevels.isAuthorized,\n { accessLevels },\n _saveAccessLevels, app, accessLevels,\n);\n\nconst _saveAccessLevels = async (app, accessLevels) => {\n const validationErrors = validateAccessLevels(app)(accessLevels.levels);\n if (validationErrors.length > 0) {\n const errs = $(validationErrors, [\n map(e => e.error),\n join$2(', '),\n ]);\n throw new Error(\n `Access Levels Invalid: ${errs}`,\n );\n }\n\n const lock = await getLock(\n app, ACCESS_LEVELS_LOCK_FILE, 2000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Could not get lock to save access levels'); }\n\n try {\n const existing = await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n if (existing.version !== accessLevels.version) { throw new Error('Access levels have already been updated, since you loaded'); }\n\n accessLevels.version++;\n\n app.datastore.updateJson(ACCESS_LEVELS_FILE, accessLevels);\n } finally {\n await releaseLock(app, lock);\n }\n};\n\nconst generateFullPermissions = (app) => {\n const allNodes = getFlattenedHierarchy(app.hierarchy);\n const accessLevel = { permissions: [] };\n\n const recordNodes = $(allNodes, [\n filter(isRecord),\n ]);\n\n for (const n of recordNodes) {\n permission.createRecord.add(n.nodeKey(), accessLevel);\n permission.updateRecord.add(n.nodeKey(), accessLevel);\n permission.deleteRecord.add(n.nodeKey(), accessLevel);\n permission.readRecord.add(n.nodeKey(), accessLevel);\n }\n\n const indexNodes = $(allNodes, [\n filter(isIndex),\n ]);\n\n for (const n of indexNodes) {\n permission.readIndex.add(n.nodeKey(), accessLevel);\n }\n\n for (const a of keys$1(app.actions)) {\n permission.executeAction.add(a, accessLevel);\n }\n\n $(permission, [\n values,\n filter(p => !p.isNode),\n each(p => p.add(accessLevel)),\n ]);\n\n return accessLevel.permissions;\n};\n\nconst setUserAccessLevels$1 = app => async (userName, accessLevels) => apiWrapper(\n app,\n events.authApi.setUserAccessLevels,\n permission.setUserAccessLevels.isAuthorized,\n { userName, accessLevels },\n _setUserAccessLevels, app, userName, accessLevels,\n);\n\nconst _setUserAccessLevels = async (app, username, accessLevels) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actualAccessLevels = $(\n await app.datastore.loadJson(ACCESS_LEVELS_FILE),\n [\n l => l.levels,\n map(l => l.name),\n ],\n );\n\n const missing = difference(accessLevels)(actualAccessLevels);\n if (missing.length > 0) {\n throw new Error(`Invalid access levels supplied: ${join$2(', ', missing)}`);\n }\n\n if (isNolock(lock)) { throw new Error('Could set user access levels cannot get lock'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user with ${username}`); }\n\n user.accessLevels = accessLevels;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n } finally {\n releaseLock(app, lock);\n }\n};\n\nconst getAuthApi = app => ({\n authenticate: authenticate(app),\n authenticateTemporaryAccess: authenticateTemporaryAccess(app),\n createTemporaryAccess: createTemporaryAccess$1(app),\n createUser: createUser$1(app),\n loadAccessLevels: loadAccessLevels(app),\n enableUser: enableUser(app),\n disableUser: disableUser(app),\n getNewAccessLevel: getNewAccessLevel(),\n getNewUser: getNewUser(app),\n getNewUserAuth: getNewUserAuth(app),\n getUsers: getUsers(app),\n saveAccessLevels: saveAccessLevels(app),\n isAuthorized: isAuthorized(app),\n changeMyPassword: changeMyPassword(app),\n setPasswordFromTemporaryCode: setPasswordFromTemporaryCode(app),\n scorePassword,\n isValidPassword: isValidPassword(app),\n validateUser: validateUser(),\n validateAccessLevels: validateAccessLevels(app),\n generateFullPermissions: () => generateFullPermissions(app),\n setUserAccessLevels: setUserAccessLevels$1(app),\n});\n\nconst executeAction$1 = app => (actionName, options) => {\n apiWrapperSync(\n app,\n events.actionsApi.execute,\n permission.executeAction.isAuthorized(actionName),\n { actionName, options },\n app.actions[actionName], options,\n );\n};\n\nconst _executeAction = (behaviourSources, action, options) => behaviourSources[action.behaviourSource][action.behaviourName](options);\n\nconst getActionsApi = app => ({\n execute: executeAction$1(app),\n});\n\nconst publish = handlers => async (eventName, context = {}) => {\n if (!has(handlers, eventName)) return;\n\n for (const handler of handlers[eventName]) {\n await handler(eventName, context);\n }\n};\n\nconst subscribe = handlers => (eventName, handler) => {\n if (!has(handlers, eventName)) {\n handlers[eventName] = [];\n }\n handlers[eventName].push(handler);\n};\n\nconst createEventAggregator = () => {\n const handlers = {};\n const eventAggregator = ({\n publish: publish(handlers),\n subscribe: subscribe(handlers),\n });\n return eventAggregator;\n};\n\nconst createJson = originalCreateFile => async (key, obj, retries = 5, delay = 500) => await retry(originalCreateFile, retries, delay, key, JSON.stringify(obj));\n\nconst createNewFile = originalCreateFile => async (path, content, retries = 5, delay = 500) => await retry(originalCreateFile, retries, delay, path, content);\n\nconst loadJson = datastore => async (key, retries = 5, delay = 500) => {\n try {\n return await retry(JSON.parse, retries, delay, await datastore.loadFile(key));\n } catch (err) {\n throw new NotFoundError(err.message);\n }\n};\n\nconst updateJson = datastore => async (key, obj, retries = 5, delay = 500) => {\n try {\n return await retry(datastore.updateFile, retries, delay, key, JSON.stringify(obj));\n } catch (err) {\n throw new NotFoundError(err.message);\n }\n};\n\nconst setupDatastore = (datastore) => {\n const originalCreateFile = datastore.createFile;\n datastore.loadJson = loadJson(datastore);\n datastore.createJson = createJson(originalCreateFile);\n datastore.updateJson = updateJson(datastore);\n datastore.createFile = createNewFile(originalCreateFile);\n if (datastore.createEmptyDb) { delete datastore.createEmptyDb; }\n return datastore;\n};\n\nconst compileCode = code => {\r\n let func; \r\n \r\n try {\r\n func = compileCode$1(code);\r\n } catch(e) {\r\n e.message = `Error compiling code : ${code} : ${e.message}`;\r\n throw e;\r\n }\r\n\r\n return func;\r\n};\r\n\r\nconst compileExpression = code => {\r\n let func; \r\n \r\n try {\r\n func = compileExpression$1(code);\r\n } catch(e) {\r\n e.message = `Error compiling expression : ${code} : ${e.message}`;\r\n throw e;\r\n }\r\n \r\n return func;\r\n};\n\nconst initialiseActions = (subscribe, behaviourSources, actions, triggers, apis) => {\n validateSources(behaviourSources, actions);\n subscribeTriggers(subscribe, behaviourSources, actions, triggers, apis);\n return createActionsCollection(behaviourSources, actions);\n};\n\nconst createActionsCollection = (behaviourSources, actions) => $(actions, [\n reduce((all, a) => {\n all[a.name] = opts => _executeAction(behaviourSources, a, opts);\n return all;\n }, {}),\n]);\n\nconst subscribeTriggers = (subscribe, behaviourSources, actions, triggers, apis) => {\n const createOptions = (optionsCreator, eventContext) => {\n if (!optionsCreator) return {};\n const create = compileCode(optionsCreator);\n return create({ context: eventContext, apis });\n };\n\n const shouldRunTrigger = (trigger, eventContext) => {\n if (!trigger.condition) return true;\n const shouldRun = compileExpression(trigger.condition);\n return shouldRun({ context: eventContext });\n };\n\n for (let trig of triggers) {\n subscribe(trig.eventName, async (ev, ctx) => {\n if (shouldRunTrigger(trig, ctx)) {\n await _executeAction(\n behaviourSources,\n find(a => a.name === trig.actionName)(actions),\n createOptions(trig.optionsCreator, ctx),\n );\n }\n });\n }\n};\n\nconst validateSources = (behaviourSources, actions) => {\n const declaredSources = $(actions, [\n uniqBy(a => a.behaviourSource),\n map(a => a.behaviourSource),\n ]);\n\n const suppliedSources = keys$1(behaviourSources);\n\n const missingSources = difference(\n declaredSources, suppliedSources,\n );\n\n if (missingSources.length > 0) {\n throw new BadRequestError(`Declared behaviour sources are not supplied: ${join$2(', ', missingSources)}`);\n }\n\n const missingBehaviours = $(actions, [\n filter(a => !isFunction$1(behaviourSources[a.behaviourSource][a.behaviourName])),\n map(a => `Action: ${a.name} : ${a.behaviourSource}.${a.behaviourName}`),\n ]);\n\n if (missingBehaviours.length > 0) {\n throw new NotFoundError(`Missing behaviours: could not find behaviour functions: ${join$2(', ', missingBehaviours)}`);\n }\n};\n\nconst retrieve = async (app) => {\n const transactionFiles = await app.datastore.getFolderContents(\n TRANSACTIONS_FOLDER,\n );\n\n let transactions = [];\n\n if (some(isBuildIndexFolder)(transactionFiles)) {\n const buildIndexFolder = find(isBuildIndexFolder)(transactionFiles);\n\n transactions = await retrieveBuildIndexTransactions(\n app,\n joinKey(TRANSACTIONS_FOLDER, buildIndexFolder),\n );\n }\n\n if (transactions.length > 0) return transactions;\n\n return await retrieveStandardTransactions(\n app, transactionFiles,\n );\n};\n\nconst retrieveBuildIndexTransactions = async (app, buildIndexFolder) => {\n const childFolders = await app.datastore.getFolderContents(buildIndexFolder);\n if (childFolders.length === 0) {\n // cleanup\n await app.datastore.deleteFolder(buildIndexFolder);\n return [];\n }\n\n const getTransactionFiles = async (childFolderIndex = 0) => {\n if (childFolderIndex >= childFolders.length) return [];\n\n const childFolderKey = joinKey(buildIndexFolder, childFolders[childFolderIndex]);\n const files = await app.datastore.getFolderContents(\n childFolderKey,\n );\n\n if (files.length === 0) {\n await app.datastore.deleteFolder(childFolderKey);\n return await getTransactionFiles(childFolderIndex + 1);\n }\n\n return { childFolderKey, files };\n };\n\n const transactionFiles = await getTransactionFiles();\n\n if (transactionFiles.files.length === 0) return [];\n\n const transactions = $(transactionFiles.files, [\n map(parseTransactionId),\n ]);\n\n for (const t of transactions) {\n const transactionContent = await app.datastore.loadJson(\n joinKey(\n transactionFiles.childFolderKey,\n t.fullId,\n ),\n );\n t.record = await _load(app, transactionContent.recordKey);\n }\n\n transactions.indexNode = $(buildIndexFolder, [\n getLastPartInKey,\n nodeKeyHashFromBuildFolder,\n getNodeFromNodeKeyHash(app.hierarchy),\n ]);\n\n transactions.folderKey = transactionFiles.childFolderKey;\n\n return transactions;\n};\n\nconst retrieveStandardTransactions = async (app, transactionFiles) => {\n const transactionIds = $(transactionFiles, [\n filter(f => f !== LOCK_FILENAME\n && !isBuildIndexFolder(f)),\n map(parseTransactionId),\n ]);\n\n const transactionIdsByRecord = $(transactionIds, [\n groupBy('recordId'),\n ]);\n\n const dedupedTransactions = [];\n\n const verify = async (t) => {\n if (t.verified === true) return t;\n\n const id = getTransactionId(\n t.recordId,\n t.transactionType,\n t.uniqueId,\n );\n\n const transaction = await app.datastore.loadJson(\n joinKey(TRANSACTIONS_FOLDER, id),\n );\n\n if (isDelete(t)) {\n t.record = transaction.record;\n t.verified = true;\n return t;\n }\n\n const rec = await _load(\n app,\n transaction.recordKey,\n );\n if (rec.transactionId === id) {\n t.record = rec;\n if (transaction.oldRecord) { t.oldRecord = transaction.oldRecord; }\n t.verified = true;\n } else {\n t.verified = false;\n }\n\n return t;\n };\n\n const pickOne = async (trans, forType) => {\n const transForType = filter(forType)(trans);\n if (transForType.length === 1) {\n const t = await verify(transForType[0]);\n return (t.verified === true ? t : null);\n }\n for (let t of transForType) {\n t = await verify(t);\n if (t.verified === true) { return t; }\n }\n\n return null;\n };\n\n for (const recordId in transactionIdsByRecord) {\n const transIdsForRecord = transactionIdsByRecord[recordId];\n if (transIdsForRecord.length === 1) {\n const t = await verify(transIdsForRecord[0]);\n if (t.verified) { dedupedTransactions.push(t); }\n continue;\n }\n if (some(isDelete)(transIdsForRecord)) {\n const t = await verify(find(isDelete)(transIdsForRecord));\n if (t.verified) { dedupedTransactions.push(t); }\n continue;\n }\n if (some(isUpdate)(transIdsForRecord)) {\n const upd = await pickOne(transIdsForRecord, isUpdate);\n if (isSomething(upd) && upd.verified) { dedupedTransactions.push(upd); }\n continue;\n }\n if (some(isCreate)(transIdsForRecord)) {\n const cre = await pickOne(transIdsForRecord, isCreate);\n if (isSomething(cre)) { dedupedTransactions.push(cre); }\n continue;\n }\n }\n\n const duplicates = $(transactionIds, [\n filter(t => none(ddt => ddt.uniqueId === t.uniqueId)(dedupedTransactions)),\n ]);\n\n\n const deletePromises = map(t => app.datastore.deleteFile(\n joinKey(\n TRANSACTIONS_FOLDER,\n getTransactionId(\n t.recordId,\n t.transactionType,\n t.uniqueId,\n ),\n ),\n ))(duplicates);\n\n await Promise.all(deletePromises);\n\n return dedupedTransactions;\n};\n\nconst parseTransactionId = (id) => {\n const splitId = split(idSep)(id);\n return ({\n recordId: splitId[0],\n transactionType: splitId[1],\n uniqueId: splitId[2],\n fullId: id,\n });\n};\n\nconst getRelevantAncestorIndexes = (appHierarchy, record) => {\n const key = record.key;\n const keyParts = splitKey(key);\n const nodeId = getRecordNodeId(key);\n\n const flatHierarchy = orderBy$1(getFlattenedHierarchy(appHierarchy),\n [node => node.pathRegx().length],\n ['desc']);\n\n const makeindexNodeAndKey_ForAncestorIndex = (indexNode, indexKey) => makeIndexNodeAndKey(indexNode, joinKey(indexKey, indexNode.name));\n\n const traverseAncestorIndexesInPath = () => reduce((acc, part) => {\n const currentIndexKey = joinKey(acc.lastIndexKey, part);\n acc.lastIndexKey = currentIndexKey;\n const testPathRegx = p => new RegExp(`${p.pathRegx()}$`).test(currentIndexKey);\n const nodeMatch = find(testPathRegx)(flatHierarchy);\n\n if (isNothing(nodeMatch)) { return acc; }\n\n if (!isRecord(nodeMatch)\n || nodeMatch.indexes.length === 0) { return acc; }\n\n const indexes = $(nodeMatch.indexes, [\n filter(i => i.indexType === indexTypes.ancestor\n && (i.allowedRecordNodeIds.length === 0\n || includes$1(nodeId)(i.allowedRecordNodeIds))),\n ]);\n\n each(v => acc.nodesAndKeys.push(\n makeindexNodeAndKey_ForAncestorIndex(v, currentIndexKey),\n ))(indexes);\n\n return acc;\n }, { lastIndexKey: '', nodesAndKeys: [] })(keyParts).nodesAndKeys;\n\n const rootIndexes = $(flatHierarchy, [\n filter(n => isGlobalIndex(n) && recordNodeIdIsAllowed(n)(nodeId)),\n map(i => makeIndexNodeAndKey(i, i.nodeKey())),\n ]);\n\n return union(traverseAncestorIndexesInPath())(rootIndexes);\n};\n\nconst getRelevantReverseReferenceIndexes = (appHierarchy, record) => $(record.key, [\n getExactNodeForPath(appHierarchy),\n n => n.fields,\n filter(f => f.type === 'reference'\n && isSomething(record[f.name])\n && isNonEmptyString(record[f.name].key)),\n map(f => $(f.typeOptions.reverseIndexNodeKeys, [\n map(n => ({\n recordNode: getNode(appHierarchy, n),\n field: f,\n })),\n ])),\n flatten,\n map(n => makeIndexNodeAndKey(\n n.recordNode,\n joinKey(record[n.field.name].key, n.recordNode.name),\n )),\n]);\n\nconst makeIndexNodeAndKey = (indexNode, indexKey) => ({ indexNode, indexKey });\n\n// adapted from https://github.com/dex4er/js-promise-writable\r\n // Thank you :) \r\n const promiseWriteableStream = stream => {\r\n \r\n let _errored;\r\n \r\n const _errorHandler = err => {\r\n _errored = err;\r\n };\r\n\r\n stream.on(\"error\", _errorHandler); \r\n \r\n const write = chunk => { \r\n let rejected = false;\r\n \r\n return new Promise((resolve, reject) => {\r\n if (_errored) {\r\n const err = _errored;\r\n _errored = undefined;\r\n return reject(err);\r\n }\r\n \r\n if (!stream.writable || stream.closed || stream.destroyed) {\r\n return reject(new Error(\"write after end\"));\r\n }\r\n \r\n const writeErrorHandler = err => {\r\n _errored = undefined;\r\n rejected = true;\r\n reject(err);\r\n };\r\n \r\n stream.once(\"error\", writeErrorHandler);\r\n \r\n const canWrite = stream.write(chunk);\r\n \r\n stream.removeListener(\"error\", writeErrorHandler);\r\n \r\n if (canWrite) {\r\n if (!rejected) {\r\n resolve(chunk.length);\r\n }\r\n } else {\r\n const errorHandler = err => {\r\n _errored = undefined;\r\n removeListeners();\r\n reject(err);\r\n };\r\n \r\n const drainHandler = () => {\r\n removeListeners();\r\n resolve(chunk.length);\r\n };\r\n \r\n const closeHandler = () => {\r\n removeListeners();\r\n resolve(chunk.length);\r\n };\r\n \r\n const finishHandler = () => {\r\n removeListeners();\r\n resolve(chunk.length);\r\n };\r\n \r\n const removeListeners = () => {\r\n stream.removeListener(\"close\", closeHandler);\r\n stream.removeListener(\"drain\", drainHandler);\r\n stream.removeListener(\"error\", errorHandler);\r\n stream.removeListener(\"finish\", finishHandler);\r\n };\r\n \r\n stream.on(\"close\", closeHandler);\r\n stream.on(\"drain\", drainHandler);\r\n stream.on(\"error\", errorHandler);\r\n stream.on(\"finish\", finishHandler);\r\n }\r\n })\r\n };\r\n \r\n const end = () => {\r\n \r\n return new Promise((resolve, reject) => {\r\n if (_errored) {\r\n const err = _errored;\r\n _errored = undefined;\r\n return reject(err);\r\n }\r\n \r\n if (!stream.writable || stream.closed || stream.destroyed) {\r\n return resolve();\r\n }\r\n \r\n const finishHandler = () => {\r\n removeListeners();\r\n resolve();\r\n };\r\n \r\n const errorHandler = (err) => {\r\n _errored = undefined;\r\n removeListeners();\r\n reject(err);\r\n };\r\n \r\n const removeListeners = () => {\r\n stream.removeListener(\"error\", errorHandler);\r\n stream.removeListener(\"finish\", finishHandler);\r\n };\r\n \r\n stream.on(\"finish\", finishHandler);\r\n stream.on(\"error\", errorHandler);\r\n \r\n stream.end();\r\n })\r\n };\r\n\r\n return {write, end};\r\n };\n\nconst applyToShard = async (hierarchy, store, indexKey,\n indexNode, indexShardKey, recordsToWrite, keysToRemove) => {\n const createIfNotExists = recordsToWrite.length > 0;\n const writer = await getWriter(hierarchy, store, indexKey, indexShardKey, indexNode, createIfNotExists);\n if (writer === SHARD_DELETED) return;\n\n await writer.updateIndex(recordsToWrite, keysToRemove);\n await swapTempFileIn(store, indexShardKey);\n};\n\nconst SHARD_DELETED = 'SHARD_DELETED';\nconst getWriter = async (hierarchy, store, indexKey, indexedDataKey, indexNode, createIfNotExists) => {\n let readableStream = null;\n\n if (isShardedIndex(indexNode)) {\n await ensureShardNameIsInShardMap(store, indexKey, indexedDataKey);\n if(!await store.exists(indexedDataKey)) {\n await store.createFile(indexedDataKey, \"\");\n }\n }\n\n try {\n\n readableStream = promiseReadableStream(\n await store.readableFileStream(indexedDataKey)\n );\n\n } catch (e) {\n\n if (await store.exists(indexedDataKey)) {\n throw e;\n } else {\n if (createIfNotExists) { \n await store.createFile(indexedDataKey, ''); \n } else { \n return SHARD_DELETED; \n }\n\n readableStream = promiseReadableStream(\n await store.readableFileStream(indexedDataKey)\n );\n\n }\n }\n\n const writableStream = promiseWriteableStream(\n await store.writableFileStream(indexedDataKey + \".temp\")\n );\n\n return getIndexWriter(\n hierarchy, indexNode,\n readableStream, writableStream\n );\n};\n\nconst swapTempFileIn = async (store, indexedDataKey, isRetry = false) => {\n const tempFile = `${indexedDataKey}.temp`;\n try {\n await store.deleteFile(indexedDataKey);\n } catch (e) {\n // ignore failure, incase it has not been created yet\n }\n try {\n await store.renameFile(tempFile, indexedDataKey);\n } catch (e) {\n // retrying in case delete failure was for some other reason\n if (!isRetry) {\n await swapTempFileIn(store, indexedDataKey, true);\n } else {\n throw new Error(\"Failed to swap in index filed: \" + e.message);\n }\n }\n};\n\nconst executeTransactions = app => async (transactions) => {\n const recordsByShard = mappedRecordsByIndexShard(app.hierarchy, transactions);\n\n for (const shard of keys$1(recordsByShard)) {\n await applyToShard(\n app.hierarchy, app.datastore,\n recordsByShard[shard].indexKey,\n recordsByShard[shard].indexNode,\n shard,\n recordsByShard[shard].writes,\n recordsByShard[shard].removes,\n );\n }\n};\n\nconst mappedRecordsByIndexShard = (hierarchy, transactions) => {\n const updates = getUpdateTransactionsByShard(\n hierarchy, transactions,\n );\n\n const created = getCreateTransactionsByShard(\n hierarchy, transactions,\n );\n const deletes = getDeleteTransactionsByShard(\n hierarchy, transactions,\n );\n\n const indexBuild = getBuildIndexTransactionsByShard(\n hierarchy,\n transactions,\n );\n\n const toRemove = [\n ...deletes,\n ...updates.toRemove,\n ];\n\n const toWrite = [\n ...created,\n ...updates.toWrite,\n ...indexBuild,\n ];\n\n const transByShard = {};\n\n const initialiseShard = (t) => {\n if (isUndefined(transByShard[t.indexShardKey])) {\n transByShard[t.indexShardKey] = {\n writes: [],\n removes: [],\n indexKey: t.indexKey,\n indexNodeKey: t.indexNodeKey,\n indexNode: t.indexNode,\n };\n }\n };\n\n for (const trans of toWrite) {\n initialiseShard(trans);\n transByShard[trans.indexShardKey].writes.push(\n trans.mappedRecord.result,\n );\n }\n\n for (const trans of toRemove) {\n initialiseShard(trans);\n transByShard[trans.indexShardKey].removes.push(\n trans.mappedRecord.result.key,\n );\n }\n\n return transByShard;\n};\n\nconst getUpdateTransactionsByShard = (hierarchy, transactions) => {\n const updateTransactions = $(transactions, [filter(isUpdate)]);\n\n const evaluateIndex = (record, indexNodeAndPath) => {\n const mappedRecord = evaluate(record)(indexNodeAndPath.indexNode);\n return ({\n mappedRecord,\n indexNode: indexNodeAndPath.indexNode,\n indexKey: indexNodeAndPath.indexKey,\n indexShardKey: getIndexedDataKey(\n indexNodeAndPath.indexNode,\n indexNodeAndPath.indexKey,\n mappedRecord.result,\n ),\n });\n };\n\n const getIndexNodesToApply = indexFilter => (t, indexes) => $(indexes, [\n map(n => ({\n old: evaluateIndex(t.oldRecord, n),\n new: evaluateIndex(t.record, n),\n })),\n filter(indexFilter),\n ]);\n\n const toRemoveFilter = (n, isUnreferenced) => n.old.mappedRecord.passedFilter === true\n && (n.new.mappedRecord.passedFilter === false\n || isUnreferenced);\n\n const toAddFilter = (n, isNewlyReferenced) => (n.old.mappedRecord.passedFilter === false\n || isNewlyReferenced)\n && n.new.mappedRecord.passedFilter === true;\n\n const toUpdateFilter = n => n.new.mappedRecord.passedFilter === true\n && n.old.mappedRecord.passedFilter === true\n && !isEqual(n.old.mappedRecord.result,\n n.new.mappedRecord.result);\n\n const toRemove = [];\n const toWrite = [];\n\n for (const t of updateTransactions) {\n const ancestorIdxs = getRelevantAncestorIndexes(\n hierarchy, t.record,\n );\n\n const referenceChanges = diffReverseRefForUpdate(\n hierarchy, t.oldRecord, t.record,\n );\n\n // old records to remove (filtered out)\n const filteredOut_toRemove = union$1(\n getIndexNodesToApply(toRemoveFilter)(t, ancestorIdxs),\n // still referenced - check filter\n getIndexNodesToApply(toRemoveFilter)(t, referenceChanges.notChanged),\n // un referenced - remove if in there already\n getIndexNodesToApply(n => toRemoveFilter(n, true))(t, referenceChanges.unReferenced),\n );\n\n // new records to add (filtered in)\n const filteredIn_toAdd = union$1(\n getIndexNodesToApply(toAddFilter)(t, ancestorIdxs),\n // newly referenced - check filter\n getIndexNodesToApply(n => toAddFilter(n, true))(t, referenceChanges.newlyReferenced),\n // reference unchanged - rerun filter in case something else changed\n getIndexNodesToApply(toAddFilter)(t, referenceChanges.notChanged),\n );\n\n const changed = union$1(\n getIndexNodesToApply(toUpdateFilter)(t, ancestorIdxs),\n // still referenced - recheck filter\n getIndexNodesToApply(toUpdateFilter)(t, referenceChanges.notChanged),\n );\n\n const shardKeyChanged = $(changed, [\n filter(c => c.old.indexShardKey !== c.new.indexShardKey),\n ]);\n\n const changedInSameShard = $(shardKeyChanged, [\n difference(changed),\n ]);\n\n for (const res of shardKeyChanged) {\n pull(res)(changed);\n filteredOut_toRemove.push(res);\n filteredIn_toAdd.push(res);\n }\n\n toRemove.push(\n $(filteredOut_toRemove, [\n map(i => i.old),\n ]),\n );\n\n toWrite.push(\n $(filteredIn_toAdd, [\n map(i => i.new),\n ]),\n );\n\n toWrite.push(\n $(changedInSameShard, [\n map(i => i.new),\n ]),\n );\n }\n\n return ({\n toRemove: flatten(toRemove),\n toWrite: flatten(toWrite),\n });\n};\n\nconst getBuildIndexTransactionsByShard = (hierarchy, transactions) => {\n const buildTransactions = $(transactions, [filter(isBuildIndex)]);\n if (!isNonEmptyArray(buildTransactions)) return [];\n const indexNode = transactions.indexNode;\n\n const getIndexKeys = (t) => {\n if (isGlobalIndex(indexNode)) {\n return [indexNode.nodeKey()];\n }\n\n if (isReferenceIndex(indexNode)) {\n const recordNode = getExactNodeForPath(hierarchy)(t.record.key);\n const refFields = $(recordNode.fields, [\n filter(fieldReversesReferenceToIndex(indexNode)),\n ]);\n const indexKeys = [];\n for (const refField of refFields) {\n const refValue = t.record[refField.name];\n if (isSomething(refValue)\n && isNonEmptyString(refValue.key)) {\n const indexKey = joinKey(\n refValue.key,\n indexNode.name,\n );\n\n if (!includes$1(indexKey)(indexKeys)) { indexKeys.push(indexKey); }\n }\n }\n return indexKeys;\n }\n\n return [joinKey(\n getActualKeyOfParent(\n indexNode.parent().nodeKey(),\n t.record.key,\n ),\n indexNode.name,\n )];\n };\n\n return $(buildTransactions, [\n map((t) => {\n const mappedRecord = evaluate(t.record)(indexNode);\n if (!mappedRecord.passedFilter) return null;\n const indexKeys = getIndexKeys(t);\n return $(indexKeys, [\n map(indexKey => ({\n mappedRecord,\n indexNode,\n indexKey,\n indexShardKey: getIndexedDataKey(\n indexNode,\n indexKey,\n mappedRecord.result,\n ),\n })),\n ]);\n }),\n flatten,\n filter(isSomething),\n ]);\n};\n\nconst get_Create_Delete_TransactionsByShard = pred => (hierarchy, transactions) => {\n const createTransactions = $(transactions, [filter(pred)]);\n\n const getIndexNodesToApply = (t, indexes) => $(indexes, [\n map((n) => {\n const mappedRecord = evaluate(t.record)(n.indexNode);\n return ({\n mappedRecord,\n indexNode: n.indexNode,\n indexKey: n.indexKey,\n indexShardKey: getIndexedDataKey(\n n.indexNode,\n n.indexKey,\n mappedRecord.result,\n ),\n });\n }),\n filter(n => n.mappedRecord.passedFilter),\n ]);\n\n const allToApply = [];\n\n for (const t of createTransactions) {\n const ancestorIdxs = getRelevantAncestorIndexes(hierarchy, t.record);\n const reverseRef = getRelevantReverseReferenceIndexes(hierarchy, t.record);\n\n allToApply.push(\n getIndexNodesToApply(t, ancestorIdxs),\n );\n allToApply.push(\n getIndexNodesToApply(t, reverseRef),\n );\n }\n\n return flatten(allToApply);\n};\n\nconst getDeleteTransactionsByShard = get_Create_Delete_TransactionsByShard(isDelete);\n\nconst getCreateTransactionsByShard = get_Create_Delete_TransactionsByShard(isCreate);\n\nconst diffReverseRefForUpdate = (appHierarchy, oldRecord, newRecord) => {\n const oldIndexes = getRelevantReverseReferenceIndexes(\n appHierarchy, oldRecord,\n );\n const newIndexes = getRelevantReverseReferenceIndexes(\n appHierarchy, newRecord,\n );\n\n const unReferenced = differenceBy(\n i => i.indexKey,\n oldIndexes, newIndexes,\n );\n\n const newlyReferenced = differenceBy(\n i => i.indexKey,\n newIndexes, oldIndexes,\n );\n\n const notChanged = intersectionBy(\n i => i.indexKey,\n newIndexes, oldIndexes,\n );\n\n return {\n unReferenced,\n newlyReferenced,\n notChanged,\n };\n};\n\nconst cleanup = async (app) => {\n const lock = await getTransactionLock(app);\n if (isNolock(lock)) return;\n\n try {\n const transactions = await retrieve(app);\n if (transactions.length > 0) {\n await executeTransactions(app)(transactions);\n\n const folder = transactions.folderKey\n ? transactions.folderKey\n : TRANSACTIONS_FOLDER;\n\n const deleteFiles = $(transactions, [\n map(t => joinKey(\n folder,\n getTransactionId(\n t.recordId, t.transactionType,\n t.uniqueId,\n ),\n )),\n map(app.datastore.deleteFile),\n ]);\n\n await Promise.all(deleteFiles);\n }\n } finally {\n await releaseLock(app, lock);\n }\n};\n\nconst getTransactionLock = async app => await getLock(\n app, LOCK_FILE_KEY,\n timeoutMilliseconds, maxLockRetries,\n);\n\nconst initialiseData = async (datastore, applicationDefinition, accessLevels) => {\n await datastore.createFolder(configFolder);\n await datastore.createJson(appDefinitionFile, applicationDefinition);\n\n await initialiseRootCollections(datastore, applicationDefinition.hierarchy);\n await initialiseRootIndexes(datastore, applicationDefinition.hierarchy);\n\n await initialiseRootSingleRecords(datastore, applicationDefinition.hierarchy);\n\n await datastore.createFolder(TRANSACTIONS_FOLDER);\n\n await datastore.createFolder(AUTH_FOLDER);\n\n await datastore.createJson(USERS_LIST_FILE, []);\n\n await datastore.createJson(\n ACCESS_LEVELS_FILE, \n accessLevels ? accessLevels : { version: 0, levels: [] });\n};\n\nconst initialiseRootIndexes = async (datastore, hierarchy) => {\n const flathierarchy = getFlattenedHierarchy(hierarchy);\n const globalIndexes = $(flathierarchy, [\n filter(isGlobalIndex),\n ]);\n\n for (const index of globalIndexes) {\n if (!await datastore.exists(index.nodeKey())) { await initialiseIndex(datastore, '', index); }\n }\n};\n\nconst initialiseRootSingleRecords = async (datastore, hierachy) => {\n const flathierarchy = getFlattenedHierarchy(hierachy);\n const singleRecords = $(flathierarchy, [\n filter(isSingleRecord),\n ]);\n\n /* for (let record of singleRecords) {\n const result = getNew({ datastore: datastore, hierarchy: appDefinition.hierarchy })\n (record.nodeKey(),\n record.name\n );\n\n _save({ datastore: datastore, hierarchy: appDefinition.hierarchy },\n result\n );\n } */\n};\n\nconst getDatabaseManager = databaseManager => ({\n createEmptyMasterDb: createEmptyMasterDb(databaseManager),\n createEmptyInstanceDb: createEmptyInstanceDb(databaseManager),\n getInstanceDbRootConfig: databaseManager.getInstanceDbRootConfig,\n masterDatastoreConfig: getMasterDatastoreConfig(databaseManager),\n getInstanceDatastoreConfig: getInstanceDatastoreConfig(databaseManager),\n});\n\nconst getMasterDatastoreConfig = databaseManager => databaseManager.getDatastoreConfig('master');\n\nconst getInstanceDatastoreConfig = databaseManager => (applicationId, instanceId) => databaseManager.getDatastoreConfig(\n applicationId, instanceId,\n);\n\nconst createEmptyMasterDb = databaseManager => async () => await databaseManager.createEmptyDb('master');\n\nconst createEmptyInstanceDb = databaseManager => async (applicationId, instanceId) => {\n if (isNothing(applicationId)) { throw new Error('CreateDb: application id not supplied'); }\n if (isNothing(instanceId)) { throw new Error('CreateDb: instance id not supplied'); }\n\n return await databaseManager.createEmptyDb(\n applicationId,\n instanceId,\n );\n};\n\nconst getAppApis = async (store, behaviourSources = null, \n cleanupTransactions = null, \n getEpochTime = null,\n crypto = null,\n appDefinition = null) => {\n\n store = setupDatastore(store);\n\n if(!appDefinition)\n appDefinition = await getApplicationDefinition(store)();\n\n if(!behaviourSources)\n behaviourSources = await getBehaviourSources(store);\n\n const eventAggregator = createEventAggregator();\n\n const app = {\n datastore:store,\n crypto,\n publish:eventAggregator.publish,\n hierarchy:appDefinition.hierarchy,\n actions:appDefinition.actions\n };\n\n const templateApi = getTemplateApi(app); \n\n app.cleanupTransactions = isSomething(cleanupTransactions) \n ? cleanupTransactions\n : async () => await cleanup(app);\n\n app.getEpochTime = isSomething(getEpochTime)\n ? getEpochTime\n : async () => (new Date()).getTime();\n\n const recordApi = getRecordApi(app);\n const collectionApi = getCollectionApi(app);\n const indexApi = getIndexApi(app);\n const authApi = getAuthApi(app);\n const actionsApi = getActionsApi(app);\n\n const authenticateAs = async (username, password) => {\n app.user = await authApi.authenticate(username, password);\n };\n\n const withFullAccess = () => {\n app.user = {\n name: \"app\",\n permissions : generateFullPermissions(app),\n isUser:false,\n temp:false\n };\n };\n\n const asUser = (user) => {\n app.user = user;\n };\n\n \n\n let apis = {\n recordApi, \n templateApi,\n collectionApi,\n indexApi,\n authApi,\n actionsApi,\n subscribe: eventAggregator.subscribe,\n authenticateAs,\n withFullAccess,\n asUser\n };\n\n apis.actions = initialiseActions(\n eventAggregator.subscribe,\n behaviourSources,\n appDefinition.actions,\n appDefinition.triggers,\n apis);\n\n\n return apis;\n};\n\nexport default getAppApis;\nexport { index as common, events, eventsList, getActionsApi, getAppApis, getAuthApi, getCollectionApi, getDatabaseManager, getIndexApi, getRecordApi, getTemplateApi, hierarchy, initialiseData, setupDatastore };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVkaWJhc2UtY29yZS5lc20ubWpzIiwic291cmNlcyI6WyIuLi9zcmMvY29tbW9uL2V2ZW50cy5qcyIsIi4uL3NyYy9jb21tb24vZXJyb3JzLmpzIiwiLi4vc3JjL2NvbW1vbi9hcGlXcmFwcGVyLmpzIiwiLi4vc3JjL2NvbW1vbi9sb2NrLmpzIiwiLi4vc3JjL2NvbW1vbi9pbmRleC5qcyIsIi4uL3NyYy9jb21tb24vdmFsaWRhdGlvbkNvbW1vbi5qcyIsIi4uL3NyYy9pbmRleGluZy9ldmFsdWF0ZS5qcyIsIi4uL3NyYy90ZW1wbGF0ZUFwaS9pbmRleGVzLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL2hpZXJhcmNoeS5qcyIsIi4uL3NyYy90eXBlcy90eXBlSGVscGVycy5qcyIsIi4uL3NyYy90eXBlcy9zdHJpbmcuanMiLCIuLi9zcmMvdHlwZXMvYm9vbC5qcyIsIi4uL3NyYy90eXBlcy9udW1iZXIuanMiLCIuLi9zcmMvdHlwZXMvZGF0ZXRpbWUuanMiLCIuLi9zcmMvdHlwZXMvYXJyYXkuanMiLCIuLi9zcmMvdHlwZXMvcmVmZXJlbmNlLmpzIiwiLi4vc3JjL3R5cGVzL2ZpbGUuanMiLCIuLi9zcmMvdHlwZXMvaW5kZXguanMiLCIuLi9zcmMvYXV0aEFwaS9hdXRoQ29tbW9uLmpzIiwiLi4vc3JjL2F1dGhBcGkvaXNBdXRob3JpemVkLmpzIiwiLi4vc3JjL2F1dGhBcGkvcGVybWlzc2lvbnMuanMiLCIuLi9zcmMvcmVjb3JkQXBpL2dldE5ldy5qcyIsIi4uL3NyYy9yZWNvcmRBcGkvbG9hZC5qcyIsIi4uL3NyYy9pbmRleGluZy9wcm9taXNlUmVhZGFibGVTdHJlYW0uanMiLCIuLi9zcmMvaW5kZXhpbmcvc2hhcmRpbmcuanMiLCIuLi9zcmMvaW5kZXhpbmcvaW5kZXhTY2hlbWFDcmVhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1nbG9iYWxzL3NyYy9nbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9iYXNlNjQuanMiLCIuLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVzNi9pZWVlNzU0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci1lczYvaXNBcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9idWZmZXItZXM2L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JvbGx1cC1wbHVnaW4tbm9kZS1idWlsdGlucy9zcmMvZXM2L3N0cmluZy1kZWNvZGVyLmpzIiwiLi4vc3JjL2luZGV4aW5nL3NlcmlhbGl6ZXIuanMiLCIuLi9zcmMvaW5kZXhpbmcvcmVhZC5qcyIsIi4uL3NyYy9pbmRleEFwaS9saXN0SXRlbXMuanMiLCIuLi9zcmMvcmVjb3JkQXBpL2dldENvbnRleHQuanMiLCIuLi9zcmMvcmVjb3JkQXBpL3ZhbGlkYXRlLmpzIiwiLi4vc3JjL2NvbGxlY3Rpb25BcGkvaW5pdGlhbGlzZS5qcyIsIi4uL3NyYy9pbmRleGluZy9hbGxJZHMuanMiLCIuLi9zcmMvdHJhbnNhY3Rpb25zL3RyYW5zYWN0aW9uc0NvbW1vbi5qcyIsIi4uL3NyYy90cmFuc2FjdGlvbnMvY3JlYXRlLmpzIiwiLi4vc3JjL2luZGV4aW5nL2luaXRpYWxpc2VJbmRleC5qcyIsIi4uL3NyYy9yZWNvcmRBcGkvc2F2ZS5qcyIsIi4uL3NyYy9jb2xsZWN0aW9uQXBpL2RlbGV0ZS5qcyIsIi4uL3NyYy9pbmRleEFwaS9kZWxldGUuanMiLCIuLi9zcmMvcmVjb3JkQXBpL2RlbGV0ZS5qcyIsIi4uL3NyYy9yZWNvcmRBcGkvdXBsb2FkRmlsZS5qcyIsIi4uL3NyYy9yZWNvcmRBcGkvZG93bmxvYWRGaWxlLmpzIiwiLi4vc3JjL3JlY29yZEFwaS9jdXN0b21JZC5qcyIsIi4uL3NyYy9yZWNvcmRBcGkvaW5kZXguanMiLCIuLi9zcmMvY29sbGVjdGlvbkFwaS9nZXRBbGxvd2VkUmVjb3JkVHlwZXMuanMiLCIuLi9zcmMvY29sbGVjdGlvbkFwaS9pbmRleC5qcyIsIi4uL3NyYy9pbmRleEFwaS9idWlsZEluZGV4LmpzIiwiLi4vc3JjL2luZGV4QXBpL2FnZ3JlZ2F0ZXMuanMiLCIuLi9zcmMvaW5kZXhBcGkvaW5kZXguanMiLCIuLi9zcmMvdGVtcGxhdGVBcGkvY3JlYXRlTm9kZXMuanMiLCIuLi9zcmMvdGVtcGxhdGVBcGkvZmllbGRzLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL3JlY29yZFZhbGlkYXRpb25SdWxlcy5qcyIsIi4uL3NyYy90ZW1wbGF0ZUFwaS9jcmVhdGVBY3Rpb25zLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL3ZhbGlkYXRlQWdncmVnYXRlLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL3ZhbGlkYXRlLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL2dldEFwcGxpY2F0aW9uRGVmaW5pdGlvbi5qcyIsIi4uL3NyYy90ZW1wbGF0ZUFwaS9zYXZlQXBwbGljYXRpb25IaWVyYXJjaHkuanMiLCIuLi9zcmMvdGVtcGxhdGVBcGkvc2F2ZUFjdGlvbnNBbmRUcmlnZ2Vycy5qcyIsIi4uL3NyYy90ZW1wbGF0ZUFwaS9nZXRCZWhhdmlvdXJTb3VyY2VzLmpzIiwiLi4vc3JjL3RlbXBsYXRlQXBpL2luZGV4LmpzIiwiLi4vc3JjL2F1dGhBcGkvZ2V0VXNlcnMuanMiLCIuLi9zcmMvYXV0aEFwaS9sb2FkQWNjZXNzTGV2ZWxzLmpzIiwiLi4vc3JjL2F1dGhBcGkvYXV0aGVudGljYXRlLmpzIiwiLi4vc3JjL2F1dGhBcGkvY3JlYXRlVGVtcG9yYXJ5QWNjZXNzLmpzIiwiLi4vc3JjL2F1dGhBcGkvdmFsaWRhdGVVc2VyLmpzIiwiLi4vc3JjL2F1dGhBcGkvZ2V0TmV3VXNlci5qcyIsIi4uL3NyYy9hdXRoQXBpL3NldFBhc3N3b3JkLmpzIiwiLi4vc3JjL2F1dGhBcGkvY3JlYXRlVXNlci5qcyIsIi4uL3NyYy9hdXRoQXBpL2VuYWJsZVVzZXIuanMiLCIuLi9zcmMvYXV0aEFwaS9nZXROZXdBY2Nlc3NMZXZlbC5qcyIsIi4uL3NyYy9hdXRoQXBpL3ZhbGlkYXRlQWNjZXNzTGV2ZWxzLmpzIiwiLi4vc3JjL2F1dGhBcGkvc2F2ZUFjY2Vzc0xldmVscy5qcyIsIi4uL3NyYy9hdXRoQXBpL2dlbmVyYXRlRnVsbFBlcm1pc3Npb25zLmpzIiwiLi4vc3JjL2F1dGhBcGkvc2V0VXNlckFjY2Vzc0xldmVscy5qcyIsIi4uL3NyYy9hdXRoQXBpL2luZGV4LmpzIiwiLi4vc3JjL2FjdGlvbnNBcGkvZXhlY3V0ZS5qcyIsIi4uL3NyYy9hY3Rpb25zQXBpL2luZGV4LmpzIiwiLi4vc3JjL2FwcEluaXRpYWxpc2UvZXZlbnRBZ2dyZWdhdG9yLmpzIiwiLi4vc3JjL2FwcEluaXRpYWxpc2UvaW5kZXguanMiLCIuLi9zcmMvY29tbW9uL2NvbXBpbGVDb2RlLmpzIiwiLi4vc3JjL2FjdGlvbnNBcGkvaW5pdGlhbGlzZS5qcyIsIi4uL3NyYy90cmFuc2FjdGlvbnMvcmV0cmlldmUuanMiLCIuLi9zcmMvaW5kZXhpbmcvcmVsZXZhbnQuanMiLCIuLi9zcmMvaW5kZXhpbmcvcHJvbWlzZVdyaXRhYmxlU3RyZWFtLmpzIiwiLi4vc3JjL2luZGV4aW5nL2FwcGx5LmpzIiwiLi4vc3JjL3RyYW5zYWN0aW9ucy9leGVjdXRlLmpzIiwiLi4vc3JjL3RyYW5zYWN0aW9ucy9jbGVhbnVwLmpzIiwiLi4vc3JjL2FwcEluaXRpYWxpc2UvaW5pdGlhbGlzZURhdGEuanMiLCIuLi9zcmMvYXBwSW5pdGlhbGlzZS9kYXRhYmFzZU1hbmFnZXIuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5pb24sIHJlZHVjZSB9IGZyb20gJ2xvZGFzaC9mcCc7XG5cbmNvbnN0IGNvbW1vblBsdXMgPSBleHRyYSA9PiB1bmlvbihbJ29uQmVnaW4nLCAnb25Db21wbGV0ZScsICdvbkVycm9yJ10pKGV4dHJhKTtcblxuY29uc3QgY29tbW9uID0gKCkgPT4gY29tbW9uUGx1cyhbXSk7XG5cbmNvbnN0IF9ldmVudHMgPSB7XG4gIHJlY29yZEFwaToge1xuICAgIHNhdmU6IGNvbW1vblBsdXMoW1xuICAgICAgJ29uSW52YWxpZCcsXG4gICAgICAnb25SZWNvcmRVcGRhdGVkJyxcbiAgICAgICdvblJlY29yZENyZWF0ZWQnXSksXG4gICAgZGVsZXRlOiBjb21tb24oKSxcbiAgICBnZXRDb250ZXh0OiBjb21tb24oKSxcbiAgICBnZXROZXc6IGNvbW1vbigpLFxuICAgIGxvYWQ6IGNvbW1vbigpLFxuICAgIHZhbGlkYXRlOiBjb21tb24oKSxcbiAgICB1cGxvYWRGaWxlOiBjb21tb24oKSxcbiAgICBkb3dubG9hZEZpbGU6IGNvbW1vbigpLFxuICB9LFxuICBpbmRleEFwaToge1xuICAgIGJ1aWxkSW5kZXg6IGNvbW1vbigpLFxuICAgIGxpc3RJdGVtczogY29tbW9uKCksXG4gICAgZGVsZXRlOiBjb21tb24oKSxcbiAgICBhZ2dyZWdhdGVzOiBjb21tb24oKSxcbiAgfSxcbiAgY29sbGVjdGlvbkFwaToge1xuICAgIGdldEFsbG93ZWRSZWNvcmRUeXBlczogY29tbW9uKCksXG4gICAgaW5pdGlhbGlzZTogY29tbW9uKCksXG4gICAgZGVsZXRlOiBjb21tb24oKSxcbiAgfSxcbiAgYXV0aEFwaToge1xuICAgIGF1dGhlbnRpY2F0ZTogY29tbW9uKCksXG4gICAgYXV0aGVudGljYXRlVGVtcG9yYXJ5QWNjZXNzOiBjb21tb24oKSxcbiAgICBjcmVhdGVUZW1wb3JhcnlBY2Nlc3M6IGNvbW1vbigpLFxuICAgIGNyZWF0ZVVzZXI6IGNvbW1vbigpLFxuICAgIGVuYWJsZVVzZXI6IGNvbW1vbigpLFxuICAgIGRpc2FibGVVc2VyOiBjb21tb24oKSxcbiAgICBsb2FkQWNjZXNzTGV2ZWxzOiBjb21tb24oKSxcbiAgICBnZXROZXdBY2Nlc3NMZXZlbDogY29tbW9uKCksXG4gICAgZ2V0TmV3VXNlcjogY29tbW9uKCksXG4gICAgZ2V0TmV3VXNlckF1dGg6IGNvbW1vbigpLFxuICAgIGdldFVzZXJzOiBjb21tb24oKSxcbiAgICBzYXZlQWNjZXNzTGV2ZWxzOiBjb21tb24oKSxcbiAgICBpc0F1dGhvcml6ZWQ6IGNvbW1vbigpLFxuICAgIGNoYW5nZU15UGFzc3dvcmQ6IGNvbW1vbigpLFxuICAgIHNldFBhc3N3b3JkRnJvbVRlbXBvcmFyeUNvZGU6IGNvbW1vbigpLFxuICAgIHNjb3JlUGFzc3dvcmQ6IGNvbW1vbigpLFxuICAgIGlzVmFsaWRQYXNzd29yZDogY29tbW9uKCksXG4gICAgdmFsaWRhdGVVc2VyOiBjb21tb24oKSxcbiAgICB2YWxpZGF0ZUFjY2Vzc0xldmVsczogY29tbW9uKCksXG4gICAgc2V0VXNlckFjY2Vzc0xldmVsczogY29tbW9uKCksXG4gIH0sXG4gIHRlbXBsYXRlQXBpOiB7XG4gICAgc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5OiBjb21tb24oKSxcbiAgICBzYXZlQWN0aW9uc0FuZFRyaWdnZXJzOiBjb21tb24oKSxcbiAgfSxcbiAgYWN0aW9uc0FwaToge1xuICAgIGV4ZWN1dGU6IGNvbW1vbigpLFxuICB9LFxufTtcblxuY29uc3QgX2V2ZW50c0xpc3QgPSBbXTtcblxuY29uc3QgbWFrZUV2ZW50ID0gKGFyZWEsIG1ldGhvZCwgbmFtZSkgPT4gYCR7YXJlYX06JHttZXRob2R9OiR7bmFtZX1gO1xuXG5mb3IgKGNvbnN0IGFyZWFLZXkgaW4gX2V2ZW50cykge1xuICBmb3IgKGNvbnN0IG1ldGhvZEtleSBpbiBfZXZlbnRzW2FyZWFLZXldKSB7XG4gICAgX2V2ZW50c1thcmVhS2V5XVttZXRob2RLZXldID0gcmVkdWNlKChvYmosIHMpID0+IHtcbiAgICAgIG9ialtzXSA9IG1ha2VFdmVudChhcmVhS2V5LCBtZXRob2RLZXksIHMpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIHt9KShfZXZlbnRzW2FyZWFLZXldW21ldGhvZEtleV0pO1xuICB9XG59XG5cblxuZm9yIChjb25zdCBhcmVhS2V5IGluIF9ldmVudHMpIHtcbiAgZm9yIChjb25zdCBtZXRob2RLZXkgaW4gX2V2ZW50c1thcmVhS2V5XSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBfZXZlbnRzW2FyZWFLZXldW21ldGhvZEtleV0pIHtcbiAgICAgIF9ldmVudHNMaXN0LnB1c2goXG4gICAgICAgIF9ldmVudHNbYXJlYUtleV1bbWV0aG9kS2V5XVtuYW1lXSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IGV2ZW50cyA9IF9ldmVudHM7XG5cbmV4cG9ydCBjb25zdCBldmVudHNMaXN0ID0gX2V2ZW50c0xpc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IHsgZXZlbnRzOiBfZXZlbnRzLCBldmVudHNMaXN0OiBfZXZlbnRzTGlzdCB9O1xuIiwiZXhwb3J0IGNsYXNzIEJhZFJlcXVlc3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLmh0dHBTdGF0dXNDb2RlID0gNDAwO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuYXV0aG9yaXNlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuaHR0cFN0YXR1c0NvZGUgPSA0MDE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5odHRwU3RhdHVzQ29kZSA9IDQwMztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuaHR0cFN0YXR1c0NvZGUgPSA0MDQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uZmxpY3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLmh0dHBTdGF0dXNDb2RlID0gNDA5O1xuICAgIH1cbn0iLCJpbXBvcnQgeyBjbG9uZURlZXAsIGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnc2hvcnRpZCc7XG5pbXBvcnQgeyBVbmF1dGhvcmlzZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuZXhwb3J0IGNvbnN0IGFwaVdyYXBwZXIgPSBhc3luYyAoYXBwLCBldmVudE5hbWVzcGFjZSwgaXNBdXRob3JpemVkLCBldmVudENvbnRleHQsIGZ1bmMsIC4uLnBhcmFtcykgPT4ge1xuICBwdXNoQ2FsbFN0YWNrKGFwcCwgZXZlbnROYW1lc3BhY2UpO1xuXG4gIGlmICghaXNBdXRob3JpemVkKGFwcCkpIHtcbiAgICBoYW5kbGVOb3RBdXRob3JpemVkKGFwcCwgZXZlbnRDb250ZXh0LCBldmVudE5hbWVzcGFjZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZWxhcHNlZCA9ICgpID0+IChEYXRlLm5vdygpIC0gc3RhcnREYXRlKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC5wdWJsaXNoKFxuICAgICAgZXZlbnROYW1lc3BhY2Uub25CZWdpbixcbiAgICAgIGV2ZW50Q29udGV4dCxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZnVuYyguLi5wYXJhbXMpO1xuXG4gICAgYXdhaXQgcHVibGlzaENvbXBsZXRlKGFwcCwgZXZlbnRDb250ZXh0LCBldmVudE5hbWVzcGFjZSwgZWxhcHNlZCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGF3YWl0IHB1Ymxpc2hFcnJvcihhcHAsIGV2ZW50Q29udGV4dCwgZXZlbnROYW1lc3BhY2UsIGVsYXBzZWQsIGVycm9yKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFwaVdyYXBwZXJTeW5jID0gKGFwcCwgZXZlbnROYW1lc3BhY2UsIGlzQXV0aG9yaXplZCwgZXZlbnRDb250ZXh0LCBmdW5jLCAuLi5wYXJhbXMpID0+IHtcbiAgcHVzaENhbGxTdGFjayhhcHAsIGV2ZW50TmFtZXNwYWNlKTtcblxuICBpZiAoIWlzQXV0aG9yaXplZChhcHApKSB7XG4gICAgaGFuZGxlTm90QXV0aG9yaXplZChhcHAsIGV2ZW50Q29udGV4dCwgZXZlbnROYW1lc3BhY2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gIGNvbnN0IGVsYXBzZWQgPSAoKSA9PiAoRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZSk7XG5cbiAgdHJ5IHtcbiAgICBhcHAucHVibGlzaChcbiAgICAgIGV2ZW50TmFtZXNwYWNlLm9uQmVnaW4sXG4gICAgICBldmVudENvbnRleHQsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGZ1bmMoLi4ucGFyYW1zKTtcblxuICAgIHB1Ymxpc2hDb21wbGV0ZShhcHAsIGV2ZW50Q29udGV4dCwgZXZlbnROYW1lc3BhY2UsIGVsYXBzZWQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwdWJsaXNoRXJyb3IoYXBwLCBldmVudENvbnRleHQsIGV2ZW50TmFtZXNwYWNlLCBlbGFwc2VkLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmNvbnN0IGhhbmRsZU5vdEF1dGhvcml6ZWQgPSAoYXBwLCBldmVudENvbnRleHQsIGV2ZW50TmFtZXNwYWNlKSA9PiB7XG4gIGNvbnN0IGVyciA9IG5ldyBVbmF1dGhvcmlzZWRFcnJvcihgVW5hdXRob3JpemVkOiAke2V2ZW50TmFtZXNwYWNlfWApO1xuICBwdWJsaXNoRXJyb3IoYXBwLCBldmVudENvbnRleHQsIGV2ZW50TmFtZXNwYWNlLCAoKSA9PiAwLCBlcnIpO1xuICB0aHJvdyBlcnI7XG59O1xuXG5jb25zdCBwdXNoQ2FsbFN0YWNrID0gKGFwcCwgZXZlbnROYW1lc3BhY2UsIHNlZWRDYWxsSWQpID0+IHtcbiAgY29uc3QgY2FsbElkID0gZ2VuZXJhdGUoKTtcblxuICBjb25zdCBjcmVhdGVDYWxsU3RhY2sgPSAoKSA9PiAoe1xuICAgIHNlZWRDYWxsSWQ6ICFpc1VuZGVmaW5lZChzZWVkQ2FsbElkKVxuICAgICAgPyBzZWVkQ2FsbElkXG4gICAgICA6IGNhbGxJZCxcbiAgICB0aHJlYWRDYWxsSWQ6IGNhbGxJZCxcbiAgICBzdGFjazogW10sXG4gIH0pO1xuXG4gIGlmIChpc1VuZGVmaW5lZChhcHAuY2FsbHMpKSB7XG4gICAgYXBwLmNhbGxzID0gY3JlYXRlQ2FsbFN0YWNrKCk7XG4gIH1cblxuICBhcHAuY2FsbHMuc3RhY2sucHVzaCh7XG4gICAgbmFtZXNwYWNlOiBldmVudE5hbWVzcGFjZSxcbiAgICBjYWxsSWQsXG4gIH0pO1xufTtcblxuY29uc3QgcG9wQ2FsbFN0YWNrID0gKGFwcCkgPT4ge1xuICBhcHAuY2FsbHMuc3RhY2sucG9wKCk7XG4gIGlmIChhcHAuY2FsbHMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgZGVsZXRlIGFwcC5jYWxscztcbiAgfVxufTtcblxuY29uc3QgcHVibGlzaEVycm9yID0gYXN5bmMgKGFwcCwgZXZlbnRDb250ZXh0LCBldmVudE5hbWVzcGFjZSwgZWxhcHNlZCwgZXJyKSA9PiB7XG4gIGNvbnN0IGN0eCA9IGNsb25lRGVlcChldmVudENvbnRleHQpO1xuICBjdHguZXJyb3IgPSBlcnI7XG4gIGN0eC5lbGFwc2VkID0gZWxhcHNlZCgpO1xuICBhd2FpdCBhcHAucHVibGlzaChcbiAgICBldmVudE5hbWVzcGFjZS5vbkVycm9yLFxuICAgIGN0eCxcbiAgKTtcbiAgcG9wQ2FsbFN0YWNrKGFwcCk7XG59O1xuXG5jb25zdCBwdWJsaXNoQ29tcGxldGUgPSBhc3luYyAoYXBwLCBldmVudENvbnRleHQsIGV2ZW50TmFtZXNwYWNlLCBlbGFwc2VkLCByZXN1bHQpID0+IHtcbiAgY29uc3QgZW5kY29udGV4dCA9IGNsb25lRGVlcChldmVudENvbnRleHQpO1xuICBlbmRjb250ZXh0LnJlc3VsdCA9IHJlc3VsdDtcbiAgZW5kY29udGV4dC5lbGFwc2VkID0gZWxhcHNlZCgpO1xuICBhd2FpdCBhcHAucHVibGlzaChcbiAgICBldmVudE5hbWVzcGFjZS5vbkNvbXBsZXRlLFxuICAgIGVuZGNvbnRleHQsXG4gICk7XG4gIHBvcENhbGxTdGFjayhhcHApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYXBpV3JhcHBlcjtcbiIsImltcG9ydCB7IHNwbGl0IH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7ICQgfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgbG9ja092ZXJsYXBNaWxsaXNlY29uZHMgPSAxMDtcblxuZXhwb3J0IGNvbnN0IGdldExvY2sgPSBhc3luYyAoYXBwLCBsb2NrRmlsZSwgdGltZW91dE1pbGxpc2Vjb25kcywgbWF4TG9ja1JldHJpZXMsIHJldHJ5Q291bnQgPSAwKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZW91dCA9IChhd2FpdCBhcHAuZ2V0RXBvY2hUaW1lKCkpXG4gICAgICAgICAgICArIHRpbWVvdXRNaWxsaXNlY29uZHM7XG5cbiAgICBjb25zdCBsb2NrID0ge1xuICAgICAgdGltZW91dCxcbiAgICAgIGtleTogbG9ja0ZpbGUsXG4gICAgICB0b3RhbFRpbWVvdXQ6IHRpbWVvdXRNaWxsaXNlY29uZHMsXG4gICAgfTtcblxuICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUuY3JlYXRlRmlsZShcbiAgICAgIGxvY2tGaWxlLFxuICAgICAgZ2V0TG9ja0ZpbGVDb250ZW50KFxuICAgICAgICBsb2NrLnRvdGFsVGltZW91dCxcbiAgICAgICAgbG9jay50aW1lb3V0LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGxvY2s7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAocmV0cnlDb3VudCA9PSBtYXhMb2NrUmV0cmllcykgeyByZXR1cm4gTk9fTE9DSzsgfVxuXG4gICAgY29uc3QgbG9jayA9IHBhcnNlTG9ja0ZpbGVDb250ZW50KFxuICAgICAgbG9ja0ZpbGUsXG4gICAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRGaWxlKGxvY2tGaWxlKSxcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudEVwb2NoVGltZSA9IGF3YWl0IGFwcC5nZXRFcG9jaFRpbWUoKTtcblxuICAgIGlmIChjdXJyZW50RXBvY2hUaW1lIDwgbG9jay50aW1lb3V0KSB7XG4gICAgICByZXR1cm4gTk9fTE9DSztcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXBwLmRhdGFzdG9yZS5kZWxldGVGaWxlKGxvY2tGaWxlKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAvL2VtcHR5XG4gICAgfVxuXG4gICAgYXdhaXQgc2xlZXBGb3JSZXRyeSgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGdldExvY2soXG4gICAgICBhcHAsIGxvY2tGaWxlLCB0aW1lb3V0TWlsbGlzZWNvbmRzLFxuICAgICAgbWF4TG9ja1JldHJpZXMsIHJldHJ5Q291bnQgKyAxLFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NrRmlsZUNvbnRlbnQgPSAodG90YWxUaW1lb3V0LCBlcG9jaFRpbWUpID0+IGAke3RvdGFsVGltZW91dH06JHtlcG9jaFRpbWUudG9TdHJpbmcoKX1gO1xuXG5jb25zdCBwYXJzZUxvY2tGaWxlQ29udGVudCA9IChrZXksIGNvbnRlbnQpID0+ICQoY29udGVudCwgW1xuICBzcGxpdCgnOicpLFxuICBwYXJ0cyA9PiAoe1xuICAgIHRvdGFsVGltZW91dDogbmV3IE51bWJlcihwYXJ0c1swXSksXG4gICAgdGltZW91dDogbmV3IE51bWJlcihwYXJ0c1sxXSksXG4gICAga2V5LFxuICB9KSxcbl0pO1xuXG5leHBvcnQgY29uc3QgcmVsZWFzZUxvY2sgPSBhc3luYyAoYXBwLCBsb2NrKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRFcG9jaFRpbWUgPSBhd2FpdCBhcHAuZ2V0RXBvY2hUaW1lKCk7XG4gIC8vIG9ubHkgcmVsZWFzZSBpZiBub3QgdGltZWRvdXRcbiAgaWYgKGN1cnJlbnRFcG9jaFRpbWUgPCAobG9jay50aW1lb3V0IC0gbG9ja092ZXJsYXBNaWxsaXNlY29uZHMpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUuZGVsZXRlRmlsZShsb2NrLmtleSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgLy9lbXB0eVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGV4dGVuZExvY2sgPSBhc3luYyAoYXBwLCBsb2NrKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRFcG9jaFRpbWUgPSBhd2FpdCBhcHAuZ2V0RXBvY2hUaW1lKCk7XG4gIC8vIG9ubHkgcmVsZWFzZSBpZiBub3QgdGltZWRvdXRcbiAgaWYgKGN1cnJlbnRFcG9jaFRpbWUgPCAobG9jay50aW1lb3V0IC0gbG9ja092ZXJsYXBNaWxsaXNlY29uZHMpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2sudGltZW91dCA9IGN1cnJlbnRFcG9jaFRpbWUgKyBsb2NrLnRpbWVvdXRNaWxsaXNlY29uZHM7XG4gICAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLnVwZGF0ZUZpbGUoXG4gICAgICAgIGxvY2sua2V5LFxuICAgICAgICBnZXRMb2NrRmlsZUNvbnRlbnQobG9jay50b3RhbFRpbWVvdXQsIGxvY2sudGltZW91dCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIGxvY2s7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgLy9lbXB0eVxuICAgIH1cbiAgfVxuICByZXR1cm4gTk9fTE9DSztcbn07XG5cbmV4cG9ydCBjb25zdCBOT19MT0NLID0gJ25vIGxvY2snO1xuZXhwb3J0IGNvbnN0IGlzTm9sb2NrID0gaWQgPT4gaWQgPT09IE5PX0xPQ0s7XG5cbmNvbnN0IHNsZWVwRm9yUmV0cnkgPSAoKSA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbG9ja092ZXJsYXBNaWxsaXNlY29uZHMpKTtcbiIsImltcG9ydCB7XG4gIGlzVW5kZWZpbmVkLCBpc05hTiwgaXNOdWxsLFxuICByZWR1Y2UsIGNvbnN0YW50LCBoZWFkLCBpc0VtcHR5LFxuICB0YWlsLCBmaW5kSW5kZXgsIHN0YXJ0c1dpdGgsIGpvaW4sXG4gIGRyb3BSaWdodCwgZmxvdywgdGFrZVJpZ2h0LCB0cmltLFxuICBzcGxpdCwgaW5jbHVkZXMsIHJlcGxhY2UsIGlzQXJyYXksXG4gIGlzU3RyaW5nLCBpc0ludGVnZXIsIGlzRGF0ZSwgdG9OdW1iZXIsXG59IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzb21lIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGV2ZW50cywgZXZlbnRzTGlzdCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGFwaVdyYXBwZXIgfSBmcm9tICcuL2FwaVdyYXBwZXInO1xuaW1wb3J0IHtcbiAgZ2V0TG9jaywgTk9fTE9DSyxcbiAgaXNOb2xvY2tcbn0gZnJvbSAnLi9sb2NrJztcblxuLy8gdGhpcyBpcyB0aGUgY29tYmluYXRvciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0ICQkID0gKC4uLmZ1bmNzKSA9PiBhcmcgPT4gZmxvdyhmdW5jcykoYXJnKTtcblxuLy8gdGhpcyBpcyB0aGUgcGlwZSBmdW5jdGlvblxuZXhwb3J0IGNvbnN0ICQgPSAoYXJnLCBmdW5jcykgPT4gJCQoLi4uZnVuY3MpKGFyZyk7XG5cbmV4cG9ydCBjb25zdCBrZXlTZXAgPSAnLyc7XG5jb25zdCB0cmltS2V5U2VwID0gc3RyID0+IHRyaW0oc3RyLCBrZXlTZXApO1xuY29uc3Qgc3BsaXRCeUtleVNlcCA9IHN0ciA9PiBzcGxpdChzdHIsIGtleVNlcCk7XG5leHBvcnQgY29uc3Qgc2FmZUtleSA9IGtleSA9PiByZXBsYWNlKGAke2tleVNlcH0ke3RyaW1LZXlTZXAoa2V5KX1gLCBgJHtrZXlTZXB9JHtrZXlTZXB9YCwga2V5U2VwKTtcbmV4cG9ydCBjb25zdCBqb2luS2V5ID0gKC4uLnN0cnMpID0+IHtcbiAgY29uc3QgcGFyYW1zT3JBcnJheSA9IHN0cnMubGVuZ3RoID09PSAxICYgaXNBcnJheShzdHJzWzBdKVxuICAgID8gc3Ryc1swXSA6IHN0cnM7XG4gIHJldHVybiBzYWZlS2V5KGpvaW4ocGFyYW1zT3JBcnJheSwga2V5U2VwKSk7XG59O1xuZXhwb3J0IGNvbnN0IHNwbGl0S2V5ID0gJCQodHJpbUtleVNlcCwgc3BsaXRCeUtleVNlcCk7XG5leHBvcnQgY29uc3QgZ2V0RGlyRm9tS2V5ID0gJCQoc3BsaXRLZXksIGRyb3BSaWdodCwgcCA9PiBqb2luS2V5KC4uLnApKTtcbmV4cG9ydCBjb25zdCBnZXRGaWxlRnJvbUtleSA9ICQkKHNwbGl0S2V5LCB0YWtlUmlnaHQsIGhlYWQpO1xuXG5leHBvcnQgY29uc3QgY29uZmlnRm9sZGVyID0gYCR7a2V5U2VwfS5jb25maWdgO1xuZXhwb3J0IGNvbnN0IGZpZWxkRGVmaW5pdGlvbnMgPSBqb2luS2V5KGNvbmZpZ0ZvbGRlciwgJ2ZpZWxkcy5qc29uJyk7XG5leHBvcnQgY29uc3QgdGVtcGxhdGVEZWZpbml0aW9ucyA9IGpvaW5LZXkoY29uZmlnRm9sZGVyLCAndGVtcGxhdGVzLmpzb24nKTtcbmV4cG9ydCBjb25zdCBhcHBEZWZpbml0aW9uRmlsZSA9IGpvaW5LZXkoY29uZmlnRm9sZGVyLCAnYXBwRGVmaW5pdGlvbi5qc29uJyk7XG5leHBvcnQgY29uc3QgZGlySW5kZXggPSBmb2xkZXJQYXRoID0+IGpvaW5LZXkoY29uZmlnRm9sZGVyLCAnZGlyJywgLi4uc3BsaXRLZXkoZm9sZGVyUGF0aCksICdkaXIuaWR4Jyk7XG5leHBvcnQgY29uc3QgZ2V0SW5kZXhLZXlGcm9tRmlsZUtleSA9ICQkKGdldERpckZvbUtleSwgZGlySW5kZXgpO1xuXG5leHBvcnQgY29uc3QgaWZFeGlzdHMgPSAodmFsLCBleGlzdHMsIG5vdEV4aXN0cykgPT4gKGlzVW5kZWZpbmVkKHZhbClcbiAgPyBpc1VuZGVmaW5lZChub3RFeGlzdHMpID8gKCgpID0+IHsgfSkoKSA6IG5vdEV4aXN0cygpXG4gIDogZXhpc3RzKCkpO1xuXG5leHBvcnQgY29uc3QgZ2V0T3JEZWZhdWx0ID0gKHZhbCwgZGVmYXVsdFZhbCkgPT4gaWZFeGlzdHModmFsLCAoKSA9PiB2YWwsICgpID0+IGRlZmF1bHRWYWwpO1xuXG5leHBvcnQgY29uc3Qgbm90ID0gZnVuYyA9PiB2YWwgPT4gIWZ1bmModmFsKTtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWQgPSBub3QoaXNVbmRlZmluZWQpO1xuZXhwb3J0IGNvbnN0IGlzTm9uTnVsbCA9IG5vdChpc051bGwpO1xuZXhwb3J0IGNvbnN0IGlzTm90TmFOID0gbm90KGlzTmFOKTtcblxuZXhwb3J0IGNvbnN0IGFsbFRydWUgPSAoLi4uZnVuY0FyZ3MpID0+IHZhbCA9PiByZWR1Y2UoZnVuY0FyZ3MsXG4gIChyZXN1bHQsIGNvbmRpdGlvbkZ1bmMpID0+IChpc051bGwocmVzdWx0KSB8fCByZXN1bHQgPT0gdHJ1ZSkgJiYgY29uZGl0aW9uRnVuYyh2YWwpLFxuICBudWxsKTtcblxuZXhwb3J0IGNvbnN0IGFueVRydWUgPSAoLi4uZnVuY0FyZ3MpID0+IHZhbCA9PiByZWR1Y2UoZnVuY0FyZ3MsXG4gIChyZXN1bHQsIGNvbmRpdGlvbkZ1bmMpID0+IHJlc3VsdCA9PSB0cnVlIHx8IGNvbmRpdGlvbkZ1bmModmFsKSxcbiAgbnVsbCk7XG5cbmV4cG9ydCBjb25zdCBpbnNlbnNpdGl2ZUVxdWFscyA9IChzdHIxLCBzdHIyKSA9PiBzdHIxLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBzdHIyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG5leHBvcnQgY29uc3QgaXNTb21ldGhpbmcgPSBhbGxUcnVlKGlzRGVmaW5lZCwgaXNOb25OdWxsLCBpc05vdE5hTik7XG5leHBvcnQgY29uc3QgaXNOb3RoaW5nID0gbm90KGlzU29tZXRoaW5nKTtcbmV4cG9ydCBjb25zdCBpc05vdGhpbmdPckVtcHR5ID0gdiA9PiBpc05vdGhpbmcodikgfHwgaXNFbXB0eSh2KTtcbmV4cG9ydCBjb25zdCBzb21ldGhpbmdPckdldERlZmF1bHQgPSBnZXREZWZhdWx0RnVuYyA9PiB2YWwgPT4gKGlzU29tZXRoaW5nKHZhbCkgPyB2YWwgOiBnZXREZWZhdWx0RnVuYygpKTtcbmV4cG9ydCBjb25zdCBzb21ldGhpbmdPckRlZmF1bHQgPSAodmFsLCBkZWZhdWx0VmFsKSA9PiBzb21ldGhpbmdPckdldERlZmF1bHQoY29uc3RhbnQoZGVmYXVsdFZhbCkpKHZhbCk7XG5cbmV4cG9ydCBjb25zdCBtYXBJZlNvbWV0aGluZ09yRGVmYXVsdCA9IChtYXBGdW5jLCBkZWZhdWx0VmFsKSA9PiB2YWwgPT4gKGlzU29tZXRoaW5nKHZhbCkgPyBtYXBGdW5jKHZhbCkgOiBkZWZhdWx0VmFsKTtcblxuZXhwb3J0IGNvbnN0IG1hcElmU29tZXRoaW5nT3JCbGFuayA9IG1hcEZ1bmMgPT4gbWFwSWZTb21ldGhpbmdPckRlZmF1bHQobWFwRnVuYywgJycpO1xuXG5leHBvcnQgY29uc3Qgbm9uZSA9IHByZWRpY2F0ZSA9PiBjb2xsZWN0aW9uID0+ICFzb21lKHByZWRpY2F0ZSkoY29sbGVjdGlvbik7XG5cbmV4cG9ydCBjb25zdCBhbGwgPSBwcmVkaWNhdGUgPT4gY29sbGVjdGlvbiA9PiBub25lKHYgPT4gIXByZWRpY2F0ZSh2KSkoY29sbGVjdGlvbik7XG5cbmV4cG9ydCBjb25zdCBpc05vdEVtcHR5ID0gb2IgPT4gIWlzRW1wdHkob2IpO1xuZXhwb3J0IGNvbnN0IGlzQXN5bmMgPSBmbiA9PiBmbi5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXN5bmNGdW5jdGlvbic7XG5leHBvcnQgY29uc3QgaXNOb25FbXB0eUFycmF5ID0gYWxsVHJ1ZShpc0FycmF5LCBpc05vdEVtcHR5KTtcbmV4cG9ydCBjb25zdCBpc05vbkVtcHR5U3RyaW5nID0gYWxsVHJ1ZShpc1N0cmluZywgaXNOb3RFbXB0eSk7XG5leHBvcnQgY29uc3QgdHJ5T3IgPSBmYWlsRnVuYyA9PiAoZnVuYywgLi4uYXJncykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIC4uLmFyZ3MpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIGZhaWxGdW5jKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cnlBd2FpdE9yID0gZmFpbEZ1bmMgPT4gYXN5bmMgKGZ1bmMsIC4uLmFyZ3MpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnVuYy5hcHBseShudWxsLCAuLi5hcmdzKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBhd2FpdCBmYWlsRnVuYygpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGVmaW5lRXJyb3IgPSAoZnVuYywgZXJyb3JQcmVmaXgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnVuYygpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnIubWVzc2FnZSA9IGAke2Vycm9yUHJlZml4fSA6ICR7ZXJyLm1lc3NhZ2V9YDtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cnlPcklnbm9yZSA9IHRyeU9yKCgpID0+IHsgfSk7XG5leHBvcnQgY29uc3QgdHJ5QXdhaXRPcklnbm9yZSA9IHRyeUF3YWl0T3IoYXN5bmMgKCkgPT4geyB9KTtcbmV4cG9ydCBjb25zdCBjYXVzZXNFeGNlcHRpb24gPSAoZnVuYykgPT4ge1xuICB0cnkge1xuICAgIGZ1bmMoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVzV2l0aG91dEV4Y2VwdGlvbiA9IGZ1bmMgPT4gIWNhdXNlc0V4Y2VwdGlvbihmdW5jKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUVycm9yV2l0aCA9IHJldHVyblZhbEluRXJyb3IgPT4gdHJ5T3IoY29uc3RhbnQocmV0dXJuVmFsSW5FcnJvcikpO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRXJyb3JXaXRoVW5kZWZpbmVkID0gaGFuZGxlRXJyb3JXaXRoKHVuZGVmaW5lZCk7XG5cbmV4cG9ydCBjb25zdCBzd2l0Y2hDYXNlID0gKC4uLmNhc2VzKSA9PiAodmFsdWUpID0+IHtcbiAgY29uc3QgbmV4dENhc2UgPSAoKSA9PiBoZWFkKGNhc2VzKVswXSh2YWx1ZSk7XG4gIGNvbnN0IG5leHRSZXN1bHQgPSAoKSA9PiBoZWFkKGNhc2VzKVsxXSh2YWx1ZSk7XG5cbiAgaWYgKGlzRW1wdHkoY2FzZXMpKSByZXR1cm47IC8vIHVuZGVmaW5lZFxuICBpZiAobmV4dENhc2UoKSA9PT0gdHJ1ZSkgcmV0dXJuIG5leHRSZXN1bHQoKTtcbiAgcmV0dXJuIHN3aXRjaENhc2UoLi4udGFpbChjYXNlcykpKHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbHVlID0gdmFsMSA9PiB2YWwyID0+ICh2YWwxID09PSB2YWwyKTtcbmV4cG9ydCBjb25zdCBpc09uZU9mID0gKC4uLnZhbHMpID0+IHZhbCA9PiBpbmNsdWRlcyh2YWxzLCB2YWwpO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRDYXNlID0gY29uc3RhbnQodHJ1ZSk7XG5leHBvcnQgY29uc3QgbWVtYmVyTWF0Y2hlcyA9IChtZW1iZXIsIG1hdGNoKSA9PiBvYmogPT4gbWF0Y2gob2JqW21lbWJlcl0pO1xuXG5cbmV4cG9ydCBjb25zdCBTdGFydHNXaXRoID0gc2VhcmNoRm9yID0+IHNlYXJjaEluID0+IHN0YXJ0c1dpdGgoc2VhcmNoSW4sIHNlYXJjaEZvcik7XG5cbmV4cG9ydCBjb25zdCBjb250YWlucyA9IHZhbCA9PiBhcnJheSA9PiAoZmluZEluZGV4KGFycmF5LCB2ID0+IHYgPT09IHZhbCkgPiAtMSk7XG5cbmV4cG9ydCBjb25zdCBnZXRIYXNoQ29kZSA9IChzKSA9PiB7XG4gIGxldCBoYXNoID0gMDsgbGV0IGk7IGxldCBjaGFyOyBsZXRcbiAgICBsO1xuICBpZiAocy5sZW5ndGggPT0gMCkgcmV0dXJuIGhhc2g7XG4gIGZvciAoaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNoYXIgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgY2hhcjtcbiAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICB9XG5cbiAgLy8gY29udmVydGluZyB0byBzdHJpbmcsIGJ1dCBkb250IHdhbnQgYSBcIi1cIiBwcmVmaXhlZFxuICBpZiAoaGFzaCA8IDApIHsgcmV0dXJuIGBuJHsoaGFzaCAqIC0xKS50b1N0cmluZygpfWA7IH1cbiAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcbn07XG5cbi8vIHRoYW5rcyB0byBodHRwczovL2Jsb2cuZ3Jvc3NtYW4uaW8vaG93LXRvLXdyaXRlLWFzeW5jLWF3YWl0LXdpdGhvdXQtdHJ5LWNhdGNoLWJsb2Nrcy1pbi1qYXZhc2NyaXB0L1xuZXhwb3J0IGNvbnN0IGF3RXggPSBhc3luYyAocHJvbWlzZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIHJlc3VsdF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFtlcnJvciwgdW5kZWZpbmVkXTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzU2FmZUludGVnZXIgPSBuID0+IGlzSW50ZWdlcihuKVxuICAgICYmIG4gPD0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAmJiBuID49IDAgLSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcblxuZXhwb3J0IGNvbnN0IHRvRGF0ZU9yTnVsbCA9IHMgPT4gKGlzTnVsbChzKSA/IG51bGxcbiAgOiBpc0RhdGUocykgPyBzIDogbmV3IERhdGUocykpO1xuZXhwb3J0IGNvbnN0IHRvQm9vbE9yTnVsbCA9IHMgPT4gKGlzTnVsbChzKSA/IG51bGxcbiAgOiBzID09PSAndHJ1ZScgfHwgcyA9PT0gdHJ1ZSk7XG5leHBvcnQgY29uc3QgdG9OdW1iZXJPck51bGwgPSBzID0+IChpc051bGwocykgPyBudWxsXG4gIDogdG9OdW1iZXIocykpO1xuXG5leHBvcnQgY29uc3QgaXNBcnJheU9mU3RyaW5nID0gb3B0cyA9PiBpc0FycmF5KG9wdHMpICYmIGFsbChpc1N0cmluZykob3B0cyk7XG5cbmV4cG9ydCBjb25zdCBwYXVzZSA9IGFzeW5jIGR1cmF0aW9uID0+IG5ldyBQcm9taXNlKHJlcyA9PiBzZXRUaW1lb3V0KHJlcywgZHVyYXRpb24pKTtcblxuZXhwb3J0IGNvbnN0IHJldHJ5ID0gYXN5bmMgKGZuLCByZXRyaWVzLCBkZWxheSwgLi4uYXJncykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmbiguLi5hcmdzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHJldHJpZXMgPiAxKSB7XG4gICAgICByZXR1cm4gYXdhaXQgcGF1c2UoZGVsYXkpLnRoZW4oYXN5bmMgKCkgPT4gYXdhaXQgcmV0cnkoZm4sIChyZXRyaWVzIC0gMSksIGRlbGF5LCAuLi5hcmdzKSk7XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxufTtcblxuZXhwb3J0IHsgZXZlbnRzIH0gZnJvbSAnLi9ldmVudHMnO1xuZXhwb3J0IHsgYXBpV3JhcHBlciwgYXBpV3JhcHBlclN5bmMgfSBmcm9tICcuL2FwaVdyYXBwZXInO1xuZXhwb3J0IHtcbiAgZ2V0TG9jaywgTk9fTE9DSywgcmVsZWFzZUxvY2ssXG4gIGV4dGVuZExvY2ssIGlzTm9sb2NrLFxufSBmcm9tICcuL2xvY2snO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlmRXhpc3RzLFxuICBnZXRPckRlZmF1bHQsXG4gIGlzRGVmaW5lZCxcbiAgaXNOb25OdWxsLFxuICBpc05vdE5hTixcbiAgYWxsVHJ1ZSxcbiAgaXNTb21ldGhpbmcsXG4gIG1hcElmU29tZXRoaW5nT3JEZWZhdWx0LFxuICBtYXBJZlNvbWV0aGluZ09yQmxhbmssXG4gIGNvbmZpZ0ZvbGRlcixcbiAgZmllbGREZWZpbml0aW9ucyxcbiAgaXNOb3RoaW5nLFxuICBub3QsXG4gIHN3aXRjaENhc2UsXG4gIGRlZmF1bHRDYXNlLFxuICBTdGFydHNXaXRoLFxuICBjb250YWlucyxcbiAgdGVtcGxhdGVEZWZpbml0aW9ucyxcbiAgaGFuZGxlRXJyb3JXaXRoLFxuICBoYW5kbGVFcnJvcldpdGhVbmRlZmluZWQsXG4gIHRyeU9yLFxuICB0cnlPcklnbm9yZSxcbiAgdHJ5QXdhaXRPcixcbiAgdHJ5QXdhaXRPcklnbm9yZSxcbiAgZGlySW5kZXgsXG4gIGtleVNlcCxcbiAgJCxcbiAgJCQsXG4gIGdldERpckZvbUtleSxcbiAgZ2V0RmlsZUZyb21LZXksXG4gIHNwbGl0S2V5LFxuICBzb21ldGhpbmdPckRlZmF1bHQsXG4gIGdldEluZGV4S2V5RnJvbUZpbGVLZXksXG4gIGpvaW5LZXksXG4gIHNvbWV0aGluZ09yR2V0RGVmYXVsdCxcbiAgYXBwRGVmaW5pdGlvbkZpbGUsXG4gIGlzVmFsdWUsXG4gIGFsbCxcbiAgaXNPbmVPZixcbiAgbWVtYmVyTWF0Y2hlcyxcbiAgZGVmaW5lRXJyb3IsXG4gIGFueVRydWUsXG4gIGlzTm9uRW1wdHlBcnJheSxcbiAgY2F1c2VzRXhjZXB0aW9uLFxuICBleGVjdXRlc1dpdGhvdXRFeGNlcHRpb24sXG4gIG5vbmUsXG4gIGdldEhhc2hDb2RlLFxuICBhd0V4LFxuICBhcGlXcmFwcGVyLFxuICBldmVudHMsXG4gIGV2ZW50c0xpc3QsXG4gIGlzTm90aGluZ09yRW1wdHksXG4gIGlzU2FmZUludGVnZXIsXG4gIHRvTnVtYmVyLFxuICB0b0RhdGU6IHRvRGF0ZU9yTnVsbCxcbiAgdG9Cb29sOiB0b0Jvb2xPck51bGwsXG4gIGlzQXJyYXlPZlN0cmluZyxcbiAgZ2V0TG9jayxcbiAgTk9fTE9DSyxcbiAgaXNOb2xvY2ssXG4gIGluc2Vuc2l0aXZlRXF1YWxzLFxuICBwYXVzZSxcbiAgcmV0cnksXG59O1xuIiwiaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgJCwgaXNTb21ldGhpbmcgfSBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IGNvbnN0IHN0cmluZ05vdEVtcHR5ID0gcyA9PiBpc1NvbWV0aGluZyhzKSAmJiBzLnRyaW0oKS5sZW5ndGggPiAwO1xuXG5leHBvcnQgY29uc3QgbWFrZXJ1bGUgPSAoZmllbGQsIGVycm9yLCBpc1ZhbGlkKSA9PiAoeyBmaWVsZCwgZXJyb3IsIGlzVmFsaWQgfSk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSAocnVsZSwgaXRlbSkgPT4gKHsgLi4ucnVsZSwgaXRlbSB9KTtcblxuZXhwb3J0IGNvbnN0IGFwcGx5UnVsZVNldCA9IHJ1bGVTZXQgPT4gaXRlbVRvVmFsaWRhdGUgPT4gJChydWxlU2V0LCBbXG4gIG1hcChhcHBseVJ1bGUoaXRlbVRvVmFsaWRhdGUpKSxcbiAgZmlsdGVyKGlzU29tZXRoaW5nKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgYXBwbHlSdWxlID0gaXRlbVRvdmFsaWRhdGUgPT4gcnVsZSA9PiAocnVsZS5pc1ZhbGlkKGl0ZW1Ub3ZhbGlkYXRlKVxuICA/IG51bGxcbiAgOiB2YWxpZGF0aW9uRXJyb3IocnVsZSwgaXRlbVRvdmFsaWRhdGUpKTtcbiIsImltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb21waWxlQ29kZSB9IGZyb20gJ0BueC1qcy9jb21waWxlci11dGlsJztcbmltcG9ydCB7XG4gIGlzVW5kZWZpbmVkLCBrZXlzLCBcbiAgY2xvbmVEZWVwLCBpc0Z1bmN0aW9uLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVmaW5lRXJyb3IgfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRXZhbCA9ICdGSUxURVJfRVZBTFVBVEUnO1xuZXhwb3J0IGNvbnN0IGZpbHRlckNvbXBpbGUgPSAnRklMVEVSX0NPTVBJTEUnO1xuZXhwb3J0IGNvbnN0IG1hcEV2YWwgPSAnTUFQX0VWQUxVQVRFJztcbmV4cG9ydCBjb25zdCBtYXBDb21waWxlID0gJ01BUF9DT01QSUxFJztcbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlY2xhcmVkRmllbGRzID0gJ1JFTU9WRV9VTkRFQ0xBUkVEX0ZJRUxEUyc7XG5leHBvcnQgY29uc3QgYWRkVW5NYXBwZWRGaWVsZHMgPSAnQUREX1VOTUFQUEVEX0ZJRUxEUyc7XG5leHBvcnQgY29uc3QgYWRkVGhlS2V5ID0gJ0FERF9LRVknO1xuXG5cbmNvbnN0IGdldEV2YWx1YXRlUmVzdWx0ID0gKCkgPT4gKHtcbiAgaXNFcnJvcjogZmFsc2UsXG4gIHBhc3NlZEZpbHRlcjogdHJ1ZSxcbiAgcmVzdWx0OiBudWxsLFxufSk7XG5cbmV4cG9ydCBjb25zdCBjb21waWxlRmlsdGVyID0gaW5kZXggPT4gY29tcGlsZUV4cHJlc3Npb24oaW5kZXguZmlsdGVyKTtcblxuZXhwb3J0IGNvbnN0IGNvbXBpbGVNYXAgPSBpbmRleCA9PiBjb21waWxlQ29kZShpbmRleC5tYXApO1xuXG5leHBvcnQgY29uc3QgcGFzc2VzRmlsdGVyID0gKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHsgcmVjb3JkIH07XG4gIGlmICghaW5kZXguZmlsdGVyKSByZXR1cm4gdHJ1ZTtcblxuICBjb25zdCBjb21waWxlZEZpbHRlciA9IGRlZmluZUVycm9yKFxuICAgICgpID0+IGNvbXBpbGVGaWx0ZXIoaW5kZXgpLFxuICAgIGZpbHRlckNvbXBpbGUsXG4gICk7XG5cbiAgcmV0dXJuIGRlZmluZUVycm9yKFxuICAgICgpID0+IGNvbXBpbGVkRmlsdGVyKGNvbnRleHQpLFxuICAgIGZpbHRlckV2YWwsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwUmVjb3JkID0gKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgY29uc3QgcmVjb3JkQ2xvbmUgPSBjbG9uZURlZXAocmVjb3JkKTtcbiAgY29uc3QgY29udGV4dCA9IHsgcmVjb3JkOiByZWNvcmRDbG9uZSB9O1xuXG4gIGNvbnN0IG1hcCA9IGluZGV4Lm1hcCA/IGluZGV4Lm1hcCA6ICdyZXR1cm4gey4uLnJlY29yZH07JztcblxuICBjb25zdCBjb21waWxlZE1hcCA9IGRlZmluZUVycm9yKFxuICAgICgpID0+IGNvbXBpbGVDb2RlKG1hcCksXG4gICAgbWFwQ29tcGlsZSxcbiAgKTtcblxuICBjb25zdCBtYXBwZWQgPSBkZWZpbmVFcnJvcihcbiAgICAoKSA9PiBjb21waWxlZE1hcChjb250ZXh0KSxcbiAgICBtYXBFdmFsLFxuICApO1xuXG4gIGNvbnN0IG1hcHBlZEtleXMgPSBrZXlzKG1hcHBlZCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWFwcGVkS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IG1hcHBlZEtleXNbaV07XG4gICAgbWFwcGVkW2tleV0gPSBpc1VuZGVmaW5lZChtYXBwZWRba2V5XSkgPyBudWxsIDogbWFwcGVkW2tleV07XG4gICAgaWYgKGlzRnVuY3Rpb24obWFwcGVkW2tleV0pKSB7XG4gICAgICBkZWxldGUgbWFwcGVkW2tleV07XG4gICAgfVxuICB9XG5cbiAgbWFwcGVkLmtleSA9IHJlY29yZC5rZXk7XG4gIG1hcHBlZC5zb3J0S2V5ID0gaW5kZXguZ2V0U29ydEtleVxuICAgID8gY29tcGlsZUNvZGUoaW5kZXguZ2V0U29ydEtleSkoY29udGV4dClcbiAgICA6IHJlY29yZC5pZDtcblxuICByZXR1cm4gbWFwcGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGV2YWx1YXRlID0gcmVjb3JkID0+IChpbmRleCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBnZXRFdmFsdWF0ZVJlc3VsdCgpO1xuXG4gIHRyeSB7XG4gICAgcmVzdWx0LnBhc3NlZEZpbHRlciA9IHBhc3Nlc0ZpbHRlcihyZWNvcmQsIGluZGV4KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmVzdWx0LmlzRXJyb3IgPSB0cnVlO1xuICAgIHJlc3VsdC5wYXNzZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICByZXN1bHQucmVzdWx0ID0gZXJyLm1lc3NhZ2U7XG4gIH1cblxuICBpZiAoIXJlc3VsdC5wYXNzZWRGaWx0ZXIpIHJldHVybiByZXN1bHQ7XG5cbiAgdHJ5IHtcbiAgICByZXN1bHQucmVzdWx0ID0gbWFwUmVjb3JkKHJlY29yZCwgaW5kZXgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXN1bHQuaXNFcnJvciA9IHRydWU7XG4gICAgcmVzdWx0LnJlc3VsdCA9IGVyci5tZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV2YWx1YXRlO1xuIiwiaW1wb3J0IHtcbiAgbWFwLCBpc0VtcHR5LCBjb3VudEJ5LCBmbGF0dGVuLCBpbmNsdWRlcyxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGpvaW4sIGtleXMgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgYXBwbHlSdWxlU2V0LCBtYWtlcnVsZSB9IGZyb20gJy4uL2NvbW1vbi92YWxpZGF0aW9uQ29tbW9uJztcbmltcG9ydCB7IGNvbXBpbGVGaWx0ZXIsIGNvbXBpbGVNYXAgfSBmcm9tICcuLi9pbmRleGluZy9ldmFsdWF0ZSc7XG5pbXBvcnQgeyBpc05vbkVtcHR5U3RyaW5nLCBleGVjdXRlc1dpdGhvdXRFeGNlcHRpb24sICQgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgaXNSZWNvcmQgfSBmcm9tICcuL2hpZXJhcmNoeSc7XG5cbmV4cG9ydCBjb25zdCBpbmRleFR5cGVzID0geyByZWZlcmVuY2U6ICdyZWZlcmVuY2UnLCBhbmNlc3RvcjogJ2FuY2VzdG9yJyB9O1xuXG5leHBvcnQgY29uc3QgaW5kZXhSdWxlU2V0ID0gW1xuICBtYWtlcnVsZSgnbWFwJywgJ2luZGV4IGhhcyBubyBtYXAgZnVuY3Rpb24nLFxuICAgIGluZGV4ID0+IGlzTm9uRW1wdHlTdHJpbmcoaW5kZXgubWFwKSksXG4gIG1ha2VydWxlKCdtYXAnLCBcImluZGV4J3MgbWFwIGZ1bmN0aW9uIGRvZXMgbm90IGNvbXBpbGVcIixcbiAgICBpbmRleCA9PiAhaXNOb25FbXB0eVN0cmluZyhpbmRleC5tYXApXG4gICAgICAgICAgICAgICAgfHwgZXhlY3V0ZXNXaXRob3V0RXhjZXB0aW9uKCgpID0+IGNvbXBpbGVNYXAoaW5kZXgpKSksXG4gIG1ha2VydWxlKCdmaWx0ZXInLCBcImluZGV4J3MgZmlsdGVyIGZ1bmN0aW9uIGRvZXMgbm90IGNvbXBpbGVcIixcbiAgICBpbmRleCA9PiAhaXNOb25FbXB0eVN0cmluZyhpbmRleC5maWx0ZXIpXG4gICAgICAgICAgICAgICAgfHwgZXhlY3V0ZXNXaXRob3V0RXhjZXB0aW9uKCgpID0+IGNvbXBpbGVGaWx0ZXIoaW5kZXgpKSksXG4gIG1ha2VydWxlKCduYW1lJywgJ211c3QgZGVjbGFyZSBhIG5hbWUgZm9yIGluZGV4JyxcbiAgICBpbmRleCA9PiBpc05vbkVtcHR5U3RyaW5nKGluZGV4Lm5hbWUpKSxcbiAgbWFrZXJ1bGUoJ25hbWUnLCAndGhlcmUgaXMgYSBkdXBsaWNhdGUgbmFtZWQgaW5kZXggb24gdGhpcyBub2RlJyxcbiAgICBpbmRleCA9PiBpc0VtcHR5KGluZGV4Lm5hbWUpXG4gICAgICAgICAgICAgICAgfHwgY291bnRCeSgnbmFtZScpKGluZGV4LnBhcmVudCgpLmluZGV4ZXMpW2luZGV4Lm5hbWVdID09PSAxKSxcbiAgbWFrZXJ1bGUoJ2luZGV4VHlwZScsICdyZWZlcmVuY2UgaW5kZXggbWF5IG9ubHkgZXhpc3Qgb24gYSByZWNvcmQgbm9kZScsXG4gICAgaW5kZXggPT4gaXNSZWNvcmQoaW5kZXgucGFyZW50KCkpXG4gICAgICAgICAgICAgICAgICB8fCBpbmRleC5pbmRleFR5cGUgIT09IGluZGV4VHlwZXMucmVmZXJlbmNlKSxcbiAgbWFrZXJ1bGUoJ2luZGV4VHlwZScsIGBpbmRleCB0eXBlIG11c3QgYmUgb25lIG9mOiAke2pvaW4oJywgJywga2V5cyhpbmRleFR5cGVzKSl9YCxcbiAgICBpbmRleCA9PiBpbmNsdWRlcyhpbmRleC5pbmRleFR5cGUpKGtleXMoaW5kZXhUeXBlcykpKSxcbl07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUluZGV4ID0gKGluZGV4LCBhbGxSZWZlcmVuY2VJbmRleGVzT25Ob2RlKSA9PiBhcHBseVJ1bGVTZXQoaW5kZXhSdWxlU2V0KGFsbFJlZmVyZW5jZUluZGV4ZXNPbk5vZGUpKShpbmRleCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUFsbEluZGV4ZXMgPSBub2RlID0+ICQobm9kZS5pbmRleGVzLCBbXG4gIG1hcChpID0+IHZhbGlkYXRlSW5kZXgoaSwgbm9kZS5pbmRleGVzKSksXG4gIGZsYXR0ZW4sXG5dKTtcbiIsImltcG9ydCB7XG4gIGZpbmQsIGNvbnN0YW50LCBtYXAsIGxhc3QsXG4gIGZpcnN0LCBzcGxpdCwgaW50ZXJzZWN0aW9uLCB0YWtlLFxuICB1bmlvbiwgaW5jbHVkZXMsIGZpbHRlciwgc29tZSxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7XG4gICQsIHN3aXRjaENhc2UsIGlzTm90aGluZywgaXNTb21ldGhpbmcsXG4gIGRlZmF1bHRDYXNlLCBzcGxpdEtleSwgaXNOb25FbXB0eVN0cmluZyxcbiAgam9pbktleSwgZ2V0SGFzaENvZGUsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBpbmRleFR5cGVzIH0gZnJvbSAnLi9pbmRleGVzJztcblxuZXhwb3J0IGNvbnN0IGdldEZsYXR0ZW5lZEhpZXJhcmNoeSA9IChhcHBIaWVyYXJjaHksIHVzZUNhY2hlZCA9IHRydWUpID0+IHtcbiAgaWYgKGlzU29tZXRoaW5nKGFwcEhpZXJhcmNoeS5nZXRGbGF0dGVuZWRIaWVyYXJjaHkpICYmIHVzZUNhY2hlZCkgeyByZXR1cm4gYXBwSGllcmFyY2h5LmdldEZsYXR0ZW5lZEhpZXJhcmNoeSgpOyB9XG5cbiAgY29uc3QgZmxhdHRlbkhpZXJhcmNoeSA9IChjdXJyZW50Tm9kZSwgZmxhdHRlbmVkKSA9PiB7XG4gICAgZmxhdHRlbmVkLnB1c2goY3VycmVudE5vZGUpO1xuICAgIGlmICgoIWN1cnJlbnROb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB8fCBjdXJyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAmJiAoIWN1cnJlbnROb2RlLmluZGV4ZXNcbiAgICAgICAgICAgIHx8IGN1cnJlbnROb2RlLmluZGV4ZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgJiYgKCFjdXJyZW50Tm9kZS5hZ2dyZWdhdGVHcm91cHNcbiAgICAgICAgICAgIHx8IGN1cnJlbnROb2RlLmFnZ3JlZ2F0ZUdyb3Vwcy5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4gZmxhdHRlbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHVuaW9uSWZBbnkgPSBsMiA9PiBsMSA9PiB1bmlvbihsMSkoIWwyID8gW10gOiBsMik7XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9ICQoW10sIFtcbiAgICAgIHVuaW9uSWZBbnkoY3VycmVudE5vZGUuY2hpbGRyZW4pLFxuICAgICAgdW5pb25JZkFueShjdXJyZW50Tm9kZS5pbmRleGVzKSxcbiAgICAgIHVuaW9uSWZBbnkoY3VycmVudE5vZGUuYWdncmVnYXRlR3JvdXBzKSxcbiAgICBdKTtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGZsYXR0ZW5IaWVyYXJjaHkoY2hpbGQsIGZsYXR0ZW5lZCk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0dGVuZWQ7XG4gIH07XG5cbiAgYXBwSGllcmFyY2h5LmdldEZsYXR0ZW5lZEhpZXJhcmNoeSA9ICgpID0+IGZsYXR0ZW5IaWVyYXJjaHkoYXBwSGllcmFyY2h5LCBbXSk7XG4gIHJldHVybiBhcHBIaWVyYXJjaHkuZ2V0RmxhdHRlbmVkSGllcmFyY2h5KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFzdFBhcnRJbktleSA9IGtleSA9PiBsYXN0KHNwbGl0S2V5KGtleSkpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZXNJblBhdGggPSBhcHBIaWVyYXJjaHkgPT4ga2V5ID0+ICQoYXBwSGllcmFyY2h5LCBbXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgZmlsdGVyKG4gPT4gbmV3IFJlZ0V4cChgJHtuLnBhdGhSZWd4KCl9YCkudGVzdChrZXkpKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RXhhY3ROb2RlRm9yUGF0aCA9IGFwcEhpZXJhcmNoeSA9PiBrZXkgPT4gJChhcHBIaWVyYXJjaHksIFtcbiAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICBmaW5kKG4gPT4gbmV3IFJlZ0V4cChgJHtuLnBhdGhSZWd4KCl9JGApLnRlc3Qoa2V5KSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vZGVGb3JDb2xsZWN0aW9uUGF0aCA9IGFwcEhpZXJhcmNoeSA9PiBjb2xsZWN0aW9uS2V5ID0+ICQoYXBwSGllcmFyY2h5LCBbXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgZmluZChuID0+IChpc0NvbGxlY3Rpb25SZWNvcmQobilcbiAgICAgICAgICAgICAgICAgICAmJiBuZXcgUmVnRXhwKGAke24uY29sbGVjdGlvblBhdGhSZWd4KCl9JGApLnRlc3QoY29sbGVjdGlvbktleSkpKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgaGFzTWF0Y2hpbmdBbmNlc3RvciA9IGFuY2VzdG9yUHJlZGljYXRlID0+IGRlY2VuZGFudE5vZGUgPT4gc3dpdGNoQ2FzZShcblxuICBbbm9kZSA9PiBpc05vdGhpbmcobm9kZS5wYXJlbnQoKSksXG4gICAgY29uc3RhbnQoZmFsc2UpXSxcblxuICBbbm9kZSA9PiBhbmNlc3RvclByZWRpY2F0ZShub2RlLnBhcmVudCgpKSxcbiAgICBjb25zdGFudCh0cnVlKV0sXG5cbiAgW2RlZmF1bHRDYXNlLFxuICAgIG5vZGUgPT4gaGFzTWF0Y2hpbmdBbmNlc3RvcihhbmNlc3RvclByZWRpY2F0ZSkobm9kZS5wYXJlbnQoKSldLFxuXG4pKGRlY2VuZGFudE5vZGUpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZSA9IChhcHBIaWVyYXJjaHksIG5vZGVLZXkpID0+ICQoYXBwSGllcmFyY2h5LCBbXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgZmluZChuID0+IG4ubm9kZUtleSgpID09PSBub2RlS2V5XG4gICAgICAgICAgICAgICAgICB8fCAoaXNDb2xsZWN0aW9uUmVjb3JkKG4pXG4gICAgICAgICAgICAgICAgICAgICAgJiYgbi5jb2xsZWN0aW9uTm9kZUtleSgpID09PSBub2RlS2V5KSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IGdldENvbGxlY3Rpb25Ob2RlID0gKGFwcEhpZXJhcmNoeSwgbm9kZUtleSkgPT4gJChhcHBIaWVyYXJjaHksIFtcbiAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICBmaW5kKG4gPT4gKGlzQ29sbGVjdGlvblJlY29yZChuKVxuICAgICAgICAgICAgICAgICAgICAmJiBuLmNvbGxlY3Rpb25Ob2RlS2V5KCkgPT09IG5vZGVLZXkpKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZUJ5S2V5T3JOb2RlS2V5ID0gKGFwcEhpZXJhcmNoeSwga2V5T3JOb2RlS2V5KSA9PiB7XG4gIGNvbnN0IG5vZGVCeUtleSA9IGdldEV4YWN0Tm9kZUZvclBhdGgoYXBwSGllcmFyY2h5KShrZXlPck5vZGVLZXkpO1xuICByZXR1cm4gaXNOb3RoaW5nKG5vZGVCeUtleSlcbiAgICA/IGdldE5vZGUoYXBwSGllcmFyY2h5LCBrZXlPck5vZGVLZXkpXG4gICAgOiBub2RlQnlLZXk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29sbGVjdGlvbk5vZGVCeUtleU9yTm9kZUtleSA9IChhcHBIaWVyYXJjaHksIGtleU9yTm9kZUtleSkgPT4ge1xuICBjb25zdCBub2RlQnlLZXkgPSBnZXROb2RlRm9yQ29sbGVjdGlvblBhdGgoYXBwSGllcmFyY2h5KShrZXlPck5vZGVLZXkpO1xuICByZXR1cm4gaXNOb3RoaW5nKG5vZGVCeUtleSlcbiAgICA/IGdldENvbGxlY3Rpb25Ob2RlKGFwcEhpZXJhcmNoeSwga2V5T3JOb2RlS2V5KVxuICAgIDogbm9kZUJ5S2V5O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTm9kZSA9IChhcHBIaWVyYXJjaHksIGtleSkgPT4gaXNTb21ldGhpbmcoZ2V0RXhhY3ROb2RlRm9yUGF0aChhcHBIaWVyYXJjaHkpKGtleSkpO1xuXG5leHBvcnQgY29uc3QgZ2V0QWN0dWFsS2V5T2ZQYXJlbnQgPSAocGFyZW50Tm9kZUtleSwgYWN0dWFsQ2hpbGRLZXkpID0+ICQoYWN0dWFsQ2hpbGRLZXksIFtcbiAgc3BsaXRLZXksXG4gIHRha2Uoc3BsaXRLZXkocGFyZW50Tm9kZUtleSkubGVuZ3RoKSxcbiAga3MgPT4gam9pbktleSguLi5rcyksXG5dKTtcblxuZXhwb3J0IGNvbnN0IGdldFBhcmVudEtleSA9IChrZXkpID0+IHtcbiAgcmV0dXJuICQoa2V5LCBbXG4gICAgc3BsaXRLZXksXG4gICAgdGFrZShzcGxpdEtleShrZXkpLmxlbmd0aCAtIDEpLFxuICAgIGpvaW5LZXksXG4gIF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzS2V5QW5jZXN0b3JPZiA9IGFuY2VzdG9yS2V5ID0+IGRlY2VuZGFudE5vZGUgPT4gaGFzTWF0Y2hpbmdBbmNlc3RvcihwID0+IHAubm9kZUtleSgpID09PSBhbmNlc3RvcktleSkoZGVjZW5kYW50Tm9kZSk7XG5cbmV4cG9ydCBjb25zdCBoYXNOb01hdGNoaW5nQW5jZXN0b3JzID0gcGFyZW50UHJlZGljYXRlID0+IG5vZGUgPT4gIWhhc01hdGNoaW5nQW5jZXN0b3IocGFyZW50UHJlZGljYXRlKShub2RlKTtcblxuZXhwb3J0IGNvbnN0IGZpbmRGaWVsZCA9IChyZWNvcmROb2RlLCBmaWVsZE5hbWUpID0+IGZpbmQoZiA9PiBmLm5hbWUgPT0gZmllbGROYW1lKShyZWNvcmROb2RlLmZpZWxkcyk7XG5cbmV4cG9ydCBjb25zdCBpc0FuY2VzdG9yID0gZGVjZW5kYW50ID0+IGFuY2VzdG9yID0+IGlzS2V5QW5jZXN0b3JPZihhbmNlc3Rvci5ub2RlS2V5KCkpKGRlY2VuZGFudCk7XG5cbmV4cG9ydCBjb25zdCBpc0RlY2VuZGFudCA9IGFuY2VzdG9yID0+IGRlY2VuZGFudCA9PiBpc0FuY2VzdG9yKGRlY2VuZGFudCkoYW5jZXN0b3IpO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjb3JkTm9kZUlkID0gcmVjb3JkS2V5ID0+ICQocmVjb3JkS2V5LCBbXG4gIHNwbGl0S2V5LFxuICBsYXN0LFxuICBnZXRSZWNvcmROb2RlSWRGcm9tSWQsXG5dKTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29yZE5vZGVJZEZyb21JZCA9IHJlY29yZElkID0+ICQocmVjb3JkSWQsIFtzcGxpdCgnLScpLCBmaXJzdCwgcGFyc2VJbnRdKTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29yZE5vZGVCeUlkID0gKGhpZXJhcmNoeSwgcmVjb3JkSWQpID0+ICQoaGllcmFyY2h5LCBbXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgZmluZChuID0+IGlzUmVjb3JkKG4pXG4gICAgICAgICAgICAgICAgICAgICYmIG4ubm9kZUlkID09PSBnZXRSZWNvcmROb2RlSWRGcm9tSWQocmVjb3JkSWQpKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgcmVjb3JkTm9kZUlkSXNBbGxvd2VkID0gaW5kZXhOb2RlID0+IG5vZGVJZCA9PiBpbmRleE5vZGUuYWxsb3dlZFJlY29yZE5vZGVJZHMubGVuZ3RoID09PSAwXG4gICAgfHwgaW5jbHVkZXMobm9kZUlkKShpbmRleE5vZGUuYWxsb3dlZFJlY29yZE5vZGVJZHMpO1xuXG5leHBvcnQgY29uc3QgcmVjb3JkTm9kZUlzQWxsb3dlZCA9IGluZGV4Tm9kZSA9PiByZWNvcmROb2RlID0+IHJlY29yZE5vZGVJZElzQWxsb3dlZChpbmRleE5vZGUpKHJlY29yZE5vZGUubm9kZUlkKTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbG93ZWRSZWNvcmROb2Rlc0ZvckluZGV4ID0gKGFwcEhpZXJhcmNoeSwgaW5kZXhOb2RlKSA9PiB7XG4gIGNvbnN0IHJlY29yZE5vZGVzID0gJChhcHBIaWVyYXJjaHksIFtcbiAgICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gICAgZmlsdGVyKGlzUmVjb3JkKSxcbiAgXSk7XG5cbiAgaWYgKGlzR2xvYmFsSW5kZXgoaW5kZXhOb2RlKSkge1xuICAgIHJldHVybiAkKHJlY29yZE5vZGVzLCBbXG4gICAgICBmaWx0ZXIocmVjb3JkTm9kZUlzQWxsb3dlZChpbmRleE5vZGUpKSxcbiAgICBdKTtcbiAgfVxuXG4gIGlmIChpc0FuY2VzdG9ySW5kZXgoaW5kZXhOb2RlKSkge1xuICAgIHJldHVybiAkKHJlY29yZE5vZGVzLCBbXG4gICAgICBmaWx0ZXIoaXNEZWNlbmRhbnQoaW5kZXhOb2RlLnBhcmVudCgpKSksXG4gICAgICBmaWx0ZXIocmVjb3JkTm9kZUlzQWxsb3dlZChpbmRleE5vZGUpKSxcbiAgICBdKTtcbiAgfVxuXG4gIGlmIChpc1JlZmVyZW5jZUluZGV4KGluZGV4Tm9kZSkpIHtcbiAgICByZXR1cm4gJChyZWNvcmROb2RlcywgW1xuICAgICAgZmlsdGVyKG4gPT4gc29tZShmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9JbmRleChpbmRleE5vZGUpKShuLmZpZWxkcykpLFxuICAgIF0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZUZyb21Ob2RlS2V5SGFzaCA9IGhpZXJhcmNoeSA9PiBoYXNoID0+ICQoaGllcmFyY2h5LCBbXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgZmluZChuID0+IGdldEhhc2hDb2RlKG4ubm9kZUtleSgpKSA9PT0gaGFzaCksXG5dKTtcblxuZXhwb3J0IGNvbnN0IGlzUmVjb3JkID0gbm9kZSA9PiBpc1NvbWV0aGluZyhub2RlKSAmJiBub2RlLnR5cGUgPT09ICdyZWNvcmQnO1xuZXhwb3J0IGNvbnN0IGlzU2luZ2xlUmVjb3JkID0gbm9kZSA9PiBpc1JlY29yZChub2RlKSAmJiBub2RlLmlzU2luZ2xlO1xuZXhwb3J0IGNvbnN0IGlzQ29sbGVjdGlvblJlY29yZCA9IG5vZGUgPT4gaXNSZWNvcmQobm9kZSkgJiYgIW5vZGUuaXNTaW5nbGU7XG5leHBvcnQgY29uc3QgaXNJbmRleCA9IG5vZGUgPT4gaXNTb21ldGhpbmcobm9kZSkgJiYgbm9kZS50eXBlID09PSAnaW5kZXgnO1xuZXhwb3J0IGNvbnN0IGlzYWdncmVnYXRlR3JvdXAgPSBub2RlID0+IGlzU29tZXRoaW5nKG5vZGUpICYmIG5vZGUudHlwZSA9PT0gJ2FnZ3JlZ2F0ZUdyb3VwJztcbmV4cG9ydCBjb25zdCBpc1NoYXJkZWRJbmRleCA9IG5vZGUgPT4gaXNJbmRleChub2RlKSAmJiBpc05vbkVtcHR5U3RyaW5nKG5vZGUuZ2V0U2hhcmROYW1lKTtcbmV4cG9ydCBjb25zdCBpc1Jvb3QgPSBub2RlID0+IGlzU29tZXRoaW5nKG5vZGUpICYmIG5vZGUuaXNSb290KCk7XG5leHBvcnQgY29uc3QgaXNEZWNlbmRhbnRPZkFSZWNvcmQgPSBoYXNNYXRjaGluZ0FuY2VzdG9yKGlzUmVjb3JkKTtcbmV4cG9ydCBjb25zdCBpc0dsb2JhbEluZGV4ID0gbm9kZSA9PiBpc0luZGV4KG5vZGUpICYmIGlzUm9vdChub2RlLnBhcmVudCgpKTtcbmV4cG9ydCBjb25zdCBpc1JlZmVyZW5jZUluZGV4ID0gbm9kZSA9PiBpc0luZGV4KG5vZGUpICYmIG5vZGUuaW5kZXhUeXBlID09PSBpbmRleFR5cGVzLnJlZmVyZW5jZTtcbmV4cG9ydCBjb25zdCBpc0FuY2VzdG9ySW5kZXggPSBub2RlID0+IGlzSW5kZXgobm9kZSkgJiYgbm9kZS5pbmRleFR5cGUgPT09IGluZGV4VHlwZXMuYW5jZXN0b3I7XG5cbmV4cG9ydCBjb25zdCBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9Ob2RlID0gbm9kZSA9PiBmaWVsZCA9PiBmaWVsZC50eXBlID09PSAncmVmZXJlbmNlJ1xuICAgICYmIGludGVyc2VjdGlvbihmaWVsZC50eXBlT3B0aW9ucy5yZXZlcnNlSW5kZXhOb2RlS2V5cykobWFwKGkgPT4gaS5ub2RlS2V5KCkpKG5vZGUuaW5kZXhlcykpXG4gICAgICAubGVuZ3RoID4gMDtcblxuZXhwb3J0IGNvbnN0IGZpZWxkUmV2ZXJzZXNSZWZlcmVuY2VUb0luZGV4ID0gaW5kZXhOb2RlID0+IGZpZWxkID0+IGZpZWxkLnR5cGUgPT09ICdyZWZlcmVuY2UnXG4gICAgJiYgaW50ZXJzZWN0aW9uKGZpZWxkLnR5cGVPcHRpb25zLnJldmVyc2VJbmRleE5vZGVLZXlzKShbaW5kZXhOb2RlLm5vZGVLZXkoKV0pXG4gICAgICAubGVuZ3RoID4gMDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRMYXN0UGFydEluS2V5LFxuICBnZXROb2Rlc0luUGF0aCxcbiAgZ2V0RXhhY3ROb2RlRm9yUGF0aCxcbiAgaGFzTWF0Y2hpbmdBbmNlc3RvcixcbiAgZ2V0Tm9kZSxcbiAgZ2V0Tm9kZUJ5S2V5T3JOb2RlS2V5LFxuICBpc05vZGUsXG4gIGdldEFjdHVhbEtleU9mUGFyZW50LFxuICBnZXRQYXJlbnRLZXksXG4gIGlzS2V5QW5jZXN0b3JPZixcbiAgaGFzTm9NYXRjaGluZ0FuY2VzdG9ycyxcbiAgZmluZEZpZWxkLFxuICBpc0FuY2VzdG9yLFxuICBpc0RlY2VuZGFudCxcbiAgZ2V0UmVjb3JkTm9kZUlkLFxuICBnZXRSZWNvcmROb2RlSWRGcm9tSWQsXG4gIGdldFJlY29yZE5vZGVCeUlkLFxuICByZWNvcmROb2RlSWRJc0FsbG93ZWQsXG4gIHJlY29yZE5vZGVJc0FsbG93ZWQsXG4gIGdldEFsbG93ZWRSZWNvcmROb2Rlc0ZvckluZGV4LFxuICBnZXROb2RlRnJvbU5vZGVLZXlIYXNoLFxuICBpc1JlY29yZCxcbiAgaXNDb2xsZWN0aW9uUmVjb3JkLFxuICBpc0luZGV4LFxuICBpc2FnZ3JlZ2F0ZUdyb3VwLFxuICBpc1NoYXJkZWRJbmRleCxcbiAgaXNSb290LFxuICBpc0RlY2VuZGFudE9mQVJlY29yZCxcbiAgaXNHbG9iYWxJbmRleCxcbiAgaXNSZWZlcmVuY2VJbmRleCxcbiAgaXNBbmNlc3RvckluZGV4LFxuICBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9Ob2RlLFxuICBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9JbmRleCxcbiAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxufTtcbiIsImltcG9ydCB7IG1lcmdlLCBoYXMgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgY29uc3RhbnQsIGlzVW5kZWZpbmVkLCBcbiAgbWFwVmFsdWVzLCBjbG9uZURlZXAsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBpc05vdEVtcHR5IH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGdldFNhZmVGaWVsZFBhcnNlciA9ICh0cnlQYXJzZSwgZGVmYXVsdFZhbHVlRnVuY3Rpb25zKSA9PiAoZmllbGQsIHJlY29yZCkgPT4ge1xuICBpZiAoaGFzKHJlY29yZCwgZmllbGQubmFtZSkpIHtcbiAgICByZXR1cm4gZ2V0U2FmZVZhbHVlUGFyc2VyKHRyeVBhcnNlLCBkZWZhdWx0VmFsdWVGdW5jdGlvbnMpKHJlY29yZFtmaWVsZC5uYW1lXSk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZUZ1bmN0aW9uc1tmaWVsZC5nZXRVbmRlZmluZWRWYWx1ZV0oKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTYWZlVmFsdWVQYXJzZXIgPSAodHJ5UGFyc2UsIGRlZmF1bHRWYWx1ZUZ1bmN0aW9ucykgPT4gKHZhbHVlKSA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHRyeVBhcnNlKHZhbHVlKTtcbiAgaWYgKHBhcnNlZC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIHBhcnNlZC52YWx1ZTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlRnVuY3Rpb25zLmRlZmF1bHQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZXdWYWx1ZSA9ICh0cnlQYXJzZSwgZGVmYXVsdFZhbHVlRnVuY3Rpb25zKSA9PiAoZmllbGQpID0+IHtcbiAgY29uc3QgZ2V0SW5pdGlhbFZhbHVlID0gaXNVbmRlZmluZWQoZmllbGQpIHx8IGlzVW5kZWZpbmVkKGZpZWxkLmdldEluaXRpYWxWYWx1ZSlcbiAgICA/ICdkZWZhdWx0J1xuICAgIDogZmllbGQuZ2V0SW5pdGlhbFZhbHVlO1xuXG4gIHJldHVybiBoYXMoZGVmYXVsdFZhbHVlRnVuY3Rpb25zLCBnZXRJbml0aWFsVmFsdWUpXG4gICAgPyBkZWZhdWx0VmFsdWVGdW5jdGlvbnNbZ2V0SW5pdGlhbFZhbHVlXSgpXG4gICAgOiBnZXRTYWZlVmFsdWVQYXJzZXIodHJ5UGFyc2UsIGRlZmF1bHRWYWx1ZUZ1bmN0aW9ucykoZ2V0SW5pdGlhbFZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0eXBlRnVuY3Rpb25zID0gc3BlY2lmaWNGdW5jdGlvbnMgPT4gbWVyZ2Uoe1xuICB2YWx1ZTogY29uc3RhbnQsXG4gIG51bGw6IGNvbnN0YW50KG51bGwpLFxufSwgc3BlY2lmaWNGdW5jdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUeXBlQ29uc3RyYWludHMgPSB2YWxpZGF0aW9uUnVsZXMgPT4gYXN5bmMgKGZpZWxkLCByZWNvcmQsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgZmllbGRWYWx1ZSA9IHJlY29yZFtmaWVsZC5uYW1lXTtcbiAgY29uc3QgdmFsaWRhdGVSdWxlID0gYXN5bmMgciA9PiAoIWF3YWl0IHIuaXNWYWxpZChmaWVsZFZhbHVlLCBmaWVsZC50eXBlT3B0aW9ucywgY29udGV4dClcbiAgICA/IHIuZ2V0TWVzc2FnZShmaWVsZFZhbHVlLCBmaWVsZC50eXBlT3B0aW9ucylcbiAgICA6ICcnKTtcblxuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgZm9yIChjb25zdCByIG9mIHZhbGlkYXRpb25SdWxlcykge1xuICAgIGNvbnN0IGVyciA9IGF3YWl0IHZhbGlkYXRlUnVsZShyKTtcbiAgICBpZiAoaXNOb3RFbXB0eShlcnIpKSBlcnJvcnMucHVzaChlcnIpO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmNvbnN0IGdldERlZmF1bHRPcHRpb25zID0gbWFwVmFsdWVzKHYgPT4gdi5kZWZhdWx0VmFsdWUpO1xuXG5leHBvcnQgY29uc3QgbWFrZXJ1bGUgPSAoaXNWYWxpZCwgZ2V0TWVzc2FnZSkgPT4gKHsgaXNWYWxpZCwgZ2V0TWVzc2FnZSB9KTtcbmV4cG9ydCBjb25zdCBwYXJzZWRGYWlsZWQgPSB2YWwgPT4gKHsgc3VjY2VzczogZmFsc2UsIHZhbHVlOiB2YWwgfSk7XG5leHBvcnQgY29uc3QgcGFyc2VkU3VjY2VzcyA9IHZhbCA9PiAoeyBzdWNjZXNzOiB0cnVlLCB2YWx1ZTogdmFsIH0pO1xuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRFeHBvcnQgPSAobmFtZSwgdHJ5UGFyc2UsIGZ1bmN0aW9ucywgb3B0aW9ucywgdmFsaWRhdGlvblJ1bGVzLCBzYW1wbGVWYWx1ZSwgc3RyaW5naWZ5KSA9PiAoe1xuICBnZXROZXc6IGdldE5ld1ZhbHVlKHRyeVBhcnNlLCBmdW5jdGlvbnMpLFxuICBzYWZlUGFyc2VGaWVsZDogZ2V0U2FmZUZpZWxkUGFyc2VyKHRyeVBhcnNlLCBmdW5jdGlvbnMpLFxuICBzYWZlUGFyc2VWYWx1ZTogZ2V0U2FmZVZhbHVlUGFyc2VyKHRyeVBhcnNlLCBmdW5jdGlvbnMpLFxuICB0cnlQYXJzZSxcbiAgbmFtZSxcbiAgZ2V0RGVmYXVsdE9wdGlvbnM6ICgpID0+IGdldERlZmF1bHRPcHRpb25zKGNsb25lRGVlcChvcHRpb25zKSksXG4gIG9wdGlvbkRlZmluaXRpb25zOiBvcHRpb25zLFxuICB2YWxpZGF0ZVR5cGVDb25zdHJhaW50czogdmFsaWRhdGVUeXBlQ29uc3RyYWludHModmFsaWRhdGlvblJ1bGVzKSxcbiAgc2FtcGxlVmFsdWUsXG4gIHN0cmluZ2lmeTogdmFsID0+ICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWRcbiAgICA/ICcnIDogc3RyaW5naWZ5KHZhbCkpLFxuICBnZXREZWZhdWx0VmFsdWU6IGZ1bmN0aW9ucy5kZWZhdWx0LFxufSk7XG4iLCJpbXBvcnQge1xuICBjb25zdGFudCwgaXNTdHJpbmcsXG4gIGlzTnVsbCwgaW5jbHVkZXMsIGlzQm9vbGVhbixcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIHR5cGVGdW5jdGlvbnMsXG4gIG1ha2VydWxlLCBwYXJzZWRTdWNjZXNzLCBnZXREZWZhdWx0RXhwb3J0LFxufSBmcm9tICcuL3R5cGVIZWxwZXJzJztcbmltcG9ydCB7XG4gIHN3aXRjaENhc2UsIGRlZmF1bHRDYXNlLCB0b0Jvb2xPck51bGwsIHRvTnVtYmVyT3JOdWxsLFxuICBpc1NhZmVJbnRlZ2VyLCBpc0FycmF5T2ZTdHJpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5cbmNvbnN0IHN0cmluZ0Z1bmN0aW9ucyA9IHR5cGVGdW5jdGlvbnMoe1xuICBkZWZhdWx0OiBjb25zdGFudChudWxsKSxcbn0pO1xuXG5jb25zdCBzdHJpbmdUcnlQYXJzZSA9IHN3aXRjaENhc2UoXG4gIFtpc1N0cmluZywgcGFyc2VkU3VjY2Vzc10sXG4gIFtpc051bGwsIHBhcnNlZFN1Y2Nlc3NdLFxuICBbZGVmYXVsdENhc2UsIHYgPT4gcGFyc2VkU3VjY2Vzcyh2LnRvU3RyaW5nKCkpXSxcbik7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIG1heExlbmd0aDoge1xuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBpc1ZhbGlkOiBuID0+IG4gPT09IG51bGwgfHwgaXNTYWZlSW50ZWdlcihuKSAmJiBuID4gMCxcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiAnbWF4IGxlbmd0aCBtdXN0IGJlIG51bGwgKG5vIGxpbWl0KSBvciBhIGdyZWF0ZXIgdGhhbiB6ZXJvIGludGVnZXInLFxuICAgIHBhcnNlOiB0b051bWJlck9yTnVsbCxcbiAgfSxcbiAgdmFsdWVzOiB7XG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGlzVmFsaWQ6IHYgPT4gdiA9PT0gbnVsbCB8fCAoaXNBcnJheU9mU3RyaW5nKHYpICYmIHYubGVuZ3RoID4gMCAmJiB2Lmxlbmd0aCA8IDEwMDAwKSxcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiBcIid2YWx1ZXMnIG11c3QgYmUgbnVsbCAobm8gdmFsdWVzKSBvciBhbiBhcnJ5IG9mIGF0IGxlYXN0IG9uZSBzdHJpbmdcIixcbiAgICBwYXJzZTogcyA9PiBzLFxuICB9LFxuICBhbGxvd0RlY2xhcmVkVmFsdWVzT25seToge1xuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgaXNWYWxpZDogaXNCb29sZWFuLFxuICAgIHJlcXVpcmVtZW50RGVzY3JpcHRpb246ICdhbGxvd0RlY2xhcmVkVmFsdWVzT25seSBtdXN0IGJlIHRydWUgb3IgZmFsc2UnLFxuICAgIHBhcnNlOiB0b0Jvb2xPck51bGwsXG4gIH0sXG59O1xuXG5jb25zdCB0eXBlQ29uc3RyYWludHMgPSBbXG4gIG1ha2VydWxlKGFzeW5jICh2YWwsIG9wdHMpID0+IHZhbCA9PT0gbnVsbCB8fCBvcHRzLm1heExlbmd0aCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDw9IG9wdHMubWF4TGVuZ3RoLFxuICAgICh2YWwsIG9wdHMpID0+IGB2YWx1ZSBleGNlZWRzIG1heGltdW0gbGVuZ3RoIG9mICR7b3B0cy5tYXhMZW5ndGh9YCksXG4gIG1ha2VydWxlKGFzeW5jICh2YWwsIG9wdHMpID0+IHZhbCA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgb3B0cy5hbGxvd0RlY2xhcmVkVmFsdWVzT25seSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGluY2x1ZGVzKG9wdHMudmFsdWVzLCB2YWwpLFxuICAodmFsKSA9PiBgXCIke3ZhbH1cIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkIHZhbHVlc2ApLFxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0RGVmYXVsdEV4cG9ydChcbiAgJ3N0cmluZycsXG4gIHN0cmluZ1RyeVBhcnNlLFxuICBzdHJpbmdGdW5jdGlvbnMsXG4gIG9wdGlvbnMsXG4gIHR5cGVDb25zdHJhaW50cyxcbiAgJ2FiY2RlJyxcbiAgc3RyID0+IHN0cixcbik7XG4iLCJpbXBvcnQgeyBjb25zdGFudCwgaXNCb29sZWFuLCBpc051bGwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgdHlwZUZ1bmN0aW9ucyxcbiAgbWFrZXJ1bGUsIHBhcnNlZEZhaWxlZCwgcGFyc2VkU3VjY2VzcyxcbiAgZ2V0RGVmYXVsdEV4cG9ydCxcbn0gZnJvbSAnLi90eXBlSGVscGVycyc7XG5pbXBvcnQge1xuICBzd2l0Y2hDYXNlLCBkZWZhdWx0Q2FzZSwgaXNPbmVPZiwgdG9Cb29sT3JOdWxsLFxufSBmcm9tICcuLi9jb21tb24nO1xuXG5jb25zdCBib29sRnVuY3Rpb25zID0gdHlwZUZ1bmN0aW9ucyh7XG4gIGRlZmF1bHQ6IGNvbnN0YW50KG51bGwpLFxufSk7XG5cbmNvbnN0IGJvb2xUcnlQYXJzZSA9IHN3aXRjaENhc2UoXG4gIFtpc0Jvb2xlYW4sIHBhcnNlZFN1Y2Nlc3NdLFxuICBbaXNOdWxsLCBwYXJzZWRTdWNjZXNzXSxcbiAgW2lzT25lT2YoJ3RydWUnLCAnMScsICd5ZXMnLCAnb24nKSwgKCkgPT4gcGFyc2VkU3VjY2Vzcyh0cnVlKV0sXG4gIFtpc09uZU9mKCdmYWxzZScsICcwJywgJ25vJywgJ29mZicpLCAoKSA9PiBwYXJzZWRTdWNjZXNzKGZhbHNlKV0sXG4gIFtkZWZhdWx0Q2FzZSwgcGFyc2VkRmFpbGVkXSxcbik7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIGFsbG93TnVsbHM6IHtcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgaXNWYWxpZDogaXNCb29sZWFuLFxuICAgIHJlcXVpcmVtZW50RGVzY3JpcHRpb246ICdtdXN0IGJlIGEgdHJ1ZSBvciBmYWxzZScsXG4gICAgcGFyc2U6IHRvQm9vbE9yTnVsbCxcbiAgfSxcbn07XG5cbmNvbnN0IHR5cGVDb25zdHJhaW50cyA9IFtcbiAgbWFrZXJ1bGUoYXN5bmMgKHZhbCwgb3B0cykgPT4gb3B0cy5hbGxvd051bGxzID09PSB0cnVlIHx8IHZhbCAhPT0gbnVsbCxcbiAgICAoKSA9PiAnZmllbGQgY2Fubm90IGJlIG51bGwnKSxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGdldERlZmF1bHRFeHBvcnQoXG4gICdib29sJywgYm9vbFRyeVBhcnNlLCBib29sRnVuY3Rpb25zLFxuICBvcHRpb25zLCB0eXBlQ29uc3RyYWludHMsIHRydWUsIEpTT04uc3RyaW5naWZ5LFxuKTtcbiIsImltcG9ydCB7XG4gIGNvbnN0YW50LCBpc051bWJlciwgaXNTdHJpbmcsIGlzTnVsbCxcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIG1ha2VydWxlLCB0eXBlRnVuY3Rpb25zLFxuICBwYXJzZWRGYWlsZWQsIHBhcnNlZFN1Y2Nlc3MsIGdldERlZmF1bHRFeHBvcnQsXG59IGZyb20gJy4vdHlwZUhlbHBlcnMnO1xuaW1wb3J0IHtcbiAgc3dpdGNoQ2FzZSwgZGVmYXVsdENhc2UsIHRvTnVtYmVyT3JOdWxsLFxuICBpc1NhZmVJbnRlZ2VyLFxufSBmcm9tICcuLi9jb21tb24nO1xuXG5jb25zdCBudW1iZXJGdW5jdGlvbnMgPSB0eXBlRnVuY3Rpb25zKHtcbiAgZGVmYXVsdDogY29uc3RhbnQobnVsbCksXG59KTtcblxuY29uc3QgcGFyc2VTdHJpbmd0b051bWJlck9yTnVsbCA9IChzKSA9PiB7XG4gIGNvbnN0IG51bSA9IE51bWJlcihzKTtcbiAgcmV0dXJuIGlzTmFOKG51bSkgPyBwYXJzZWRGYWlsZWQocykgOiBwYXJzZWRTdWNjZXNzKG51bSk7XG59O1xuXG5jb25zdCBudW1iZXJUcnlQYXJzZSA9IHN3aXRjaENhc2UoXG4gIFtpc051bWJlciwgcGFyc2VkU3VjY2Vzc10sXG4gIFtpc1N0cmluZywgcGFyc2VTdHJpbmd0b051bWJlck9yTnVsbF0sXG4gIFtpc051bGwsIHBhcnNlZFN1Y2Nlc3NdLFxuICBbZGVmYXVsdENhc2UsIHBhcnNlZEZhaWxlZF0sXG4pO1xuXG5jb25zdCBvcHRpb25zID0ge1xuICBtYXhWYWx1ZToge1xuICAgIGRlZmF1bHRWYWx1ZTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgaXNWYWxpZDogaXNTYWZlSW50ZWdlcixcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiAnbXVzdCBiZSBhIHZhbGlkIGludGVnZXInLFxuICAgIHBhcnNlOiB0b051bWJlck9yTnVsbCxcbiAgfSxcbiAgbWluVmFsdWU6IHtcbiAgICBkZWZhdWx0VmFsdWU6IDAgLSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICBpc1ZhbGlkOiBpc1NhZmVJbnRlZ2VyLFxuICAgIHJlcXVpcmVtZW50RGVzY3JpcHRpb246ICdtdXN0IGJlIGEgdmFsaWQgaW50ZWdlcicsXG4gICAgcGFyc2U6IHRvTnVtYmVyT3JOdWxsLFxuICB9LFxuICBkZWNpbWFsUGxhY2VzOiB7XG4gICAgZGVmYXVsdFZhbHVlOiAwLFxuICAgIGlzVmFsaWQ6IG4gPT4gaXNTYWZlSW50ZWdlcihuKSAmJiBuID49IDAsXG4gICAgcmVxdWlyZW1lbnREZXNjcmlwdGlvbjogJ211c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgICBwYXJzZTogdG9OdW1iZXJPck51bGwsXG4gIH0sXG59O1xuXG5jb25zdCBnZXREZWNpbWFsUGxhY2VzID0gKHZhbCkgPT4ge1xuICBjb25zdCBzcGxpdERlY2ltYWwgPSB2YWwudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXREZWNpbWFsLmxlbmd0aCA9PT0gMSkgcmV0dXJuIDA7XG4gIHJldHVybiBzcGxpdERlY2ltYWxbMV0ubGVuZ3RoO1xufTtcblxuY29uc3QgdHlwZUNvbnN0cmFpbnRzID0gW1xuICBtYWtlcnVsZShhc3luYyAodmFsLCBvcHRzKSA9PiB2YWwgPT09IG51bGwgfHwgb3B0cy5taW5WYWx1ZSA9PT0gbnVsbCB8fCB2YWwgPj0gb3B0cy5taW5WYWx1ZSxcbiAgICAodmFsLCBvcHRzKSA9PiBgdmFsdWUgKCR7dmFsLnRvU3RyaW5nKCl9KSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke29wdHMubWluVmFsdWV9YCksXG4gIG1ha2VydWxlKGFzeW5jICh2YWwsIG9wdHMpID0+IHZhbCA9PT0gbnVsbCB8fCBvcHRzLm1heFZhbHVlID09PSBudWxsIHx8IHZhbCA8PSBvcHRzLm1heFZhbHVlLFxuICAgICh2YWwsIG9wdHMpID0+IGB2YWx1ZSAoJHt2YWwudG9TdHJpbmcoKX0pIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7b3B0cy5taW5WYWx1ZX0gb3B0aW9uc2ApLFxuICBtYWtlcnVsZShhc3luYyAodmFsLCBvcHRzKSA9PiB2YWwgPT09IG51bGwgfHwgb3B0cy5kZWNpbWFsUGxhY2VzID49IGdldERlY2ltYWxQbGFjZXModmFsKSxcbiAgICAodmFsLCBvcHRzKSA9PiBgdmFsdWUgKCR7dmFsLnRvU3RyaW5nKCl9KSBtdXN0IGhhdmUgJHtvcHRzLmRlY2ltYWxQbGFjZXN9IGRlY2ltYWwgcGxhY2VzIG9yIGxlc3NgKSxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGdldERlZmF1bHRFeHBvcnQoXG4gICdudW1iZXInLFxuICBudW1iZXJUcnlQYXJzZSxcbiAgbnVtYmVyRnVuY3Rpb25zLFxuICBvcHRpb25zLFxuICB0eXBlQ29uc3RyYWludHMsXG4gIDEsXG4gIG51bSA9PiBudW0udG9TdHJpbmcoKSxcbik7XG4iLCJpbXBvcnQge1xuICBjb25zdGFudCwgaXNEYXRlLCBpc1N0cmluZywgaXNOdWxsLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgbWFrZXJ1bGUsIHR5cGVGdW5jdGlvbnMsXG4gIHBhcnNlZEZhaWxlZCwgcGFyc2VkU3VjY2VzcywgZ2V0RGVmYXVsdEV4cG9ydCxcbn0gZnJvbSAnLi90eXBlSGVscGVycyc7XG5pbXBvcnQge1xuICBzd2l0Y2hDYXNlLCBkZWZhdWx0Q2FzZSwgdG9EYXRlT3JOdWxsLFxufSBmcm9tICcuLi9jb21tb24nO1xuXG5jb25zdCBkYXRlRnVuY3Rpb25zID0gdHlwZUZ1bmN0aW9ucyh7XG4gIGRlZmF1bHQ6IGNvbnN0YW50KG51bGwpLFxuICBub3c6ICgpID0+IG5ldyBEYXRlKCksXG59KTtcblxuY29uc3QgaXNWYWxpZERhdGUgPSBkID0+IGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkKTtcblxuY29uc3QgcGFyc2VTdHJpbmdUb0RhdGUgPSBzID0+IHN3aXRjaENhc2UoXG4gIFtpc1ZhbGlkRGF0ZSwgcGFyc2VkU3VjY2Vzc10sXG4gIFtkZWZhdWx0Q2FzZSwgcGFyc2VkRmFpbGVkXSxcbikobmV3IERhdGUocykpO1xuXG5cbmNvbnN0IGRhdGVUcnlQYXJzZSA9IHN3aXRjaENhc2UoXG4gIFtpc0RhdGUsIHBhcnNlZFN1Y2Nlc3NdLFxuICBbaXNTdHJpbmcsIHBhcnNlU3RyaW5nVG9EYXRlXSxcbiAgW2lzTnVsbCwgcGFyc2VkU3VjY2Vzc10sXG4gIFtkZWZhdWx0Q2FzZSwgcGFyc2VkRmFpbGVkXSxcbik7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIG1heFZhbHVlOiB7XG4gICAgZGVmYXVsdFZhbHVlOiBuZXcgRGF0ZSgzMjUwMzY4MDAwMDAwMCksXG4gICAgaXNWYWxpZDogaXNEYXRlLFxuICAgIHJlcXVpcmVtZW50RGVzY3JpcHRpb246ICdtdXN0IGJlIGEgdmFsaWQgZGF0ZScsXG4gICAgcGFyc2U6IHRvRGF0ZU9yTnVsbCxcbiAgfSxcbiAgbWluVmFsdWU6IHtcbiAgICBkZWZhdWx0VmFsdWU6IG5ldyBEYXRlKC04NTIwMzM2MDAwMDAwKSxcbiAgICBpc1ZhbGlkOiBpc0RhdGUsXG4gICAgcmVxdWlyZW1lbnREZXNjcmlwdGlvbjogJ211c3QgYmUgYSB2YWxpZCBkYXRlJyxcbiAgICBwYXJzZTogdG9EYXRlT3JOdWxsLFxuICB9LFxufTtcblxuY29uc3QgdHlwZUNvbnN0cmFpbnRzID0gW1xuICBtYWtlcnVsZShhc3luYyAodmFsLCBvcHRzKSA9PiB2YWwgPT09IG51bGwgfHwgb3B0cy5taW5WYWx1ZSA9PT0gbnVsbCB8fCB2YWwgPj0gb3B0cy5taW5WYWx1ZSxcbiAgICAodmFsLCBvcHRzKSA9PiBgdmFsdWUgKCR7dmFsLnRvU3RyaW5nKCl9KSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke29wdHMubWluVmFsdWV9YCksXG4gIG1ha2VydWxlKGFzeW5jICh2YWwsIG9wdHMpID0+IHZhbCA9PT0gbnVsbCB8fCBvcHRzLm1heFZhbHVlID09PSBudWxsIHx8IHZhbCA8PSBvcHRzLm1heFZhbHVlLFxuICAgICh2YWwsIG9wdHMpID0+IGB2YWx1ZSAoJHt2YWwudG9TdHJpbmcoKX0pIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7b3B0cy5taW5WYWx1ZX0gb3B0aW9uc2ApLFxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0RGVmYXVsdEV4cG9ydChcbiAgJ2RhdGV0aW1lJyxcbiAgZGF0ZVRyeVBhcnNlLFxuICBkYXRlRnVuY3Rpb25zLFxuICBvcHRpb25zLFxuICB0eXBlQ29uc3RyYWludHMsXG4gIG5ldyBEYXRlKDE5ODQsIDQsIDEpLFxuICBkYXRlID0+IEpTT04uc3RyaW5naWZ5KGRhdGUpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXCInLCAnZycpLCAnJyksXG4pO1xuIiwiaW1wb3J0IHsgY29uc3RhbnQsIGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7XG4gIHR5cGVGdW5jdGlvbnMsIG1ha2VydWxlLFxuICBwYXJzZWRGYWlsZWQsIGdldERlZmF1bHRFeHBvcnQsIHBhcnNlZFN1Y2Nlc3MsXG59IGZyb20gJy4vdHlwZUhlbHBlcnMnO1xuaW1wb3J0IHtcbiAgc3dpdGNoQ2FzZSwgZGVmYXVsdENhc2UsIHRvTnVtYmVyT3JOdWxsLFxuICAkJCwgaXNTYWZlSW50ZWdlcixcbn0gZnJvbSAnLi4vY29tbW9uJztcblxuY29uc3QgYXJyYXlGdW5jdGlvbnMgPSAoKSA9PiB0eXBlRnVuY3Rpb25zKHtcbiAgZGVmYXVsdDogY29uc3RhbnQoW10pLFxufSk7XG5cbmNvbnN0IG1hcFRvUGFyc2VkQXJyYXJ5ID0gdHlwZSA9PiAkJChcbiAgbWFwKGkgPT4gdHlwZS5zYWZlUGFyc2VWYWx1ZShpKSksXG4gIHBhcnNlZFN1Y2Nlc3MsXG4pO1xuXG5jb25zdCBhcnJheVRyeVBhcnNlID0gdHlwZSA9PiBzd2l0Y2hDYXNlKFxuICBbaXNBcnJheSwgbWFwVG9QYXJzZWRBcnJhcnkodHlwZSldLFxuICBbZGVmYXVsdENhc2UsIHBhcnNlZEZhaWxlZF0sXG4pO1xuXG5jb25zdCB0eXBlTmFtZSA9IHR5cGUgPT4gYGFycmF5PCR7dHlwZX0+YDtcblxuXG5jb25zdCBvcHRpb25zID0ge1xuICBtYXhMZW5ndGg6IHtcbiAgICBkZWZhdWx0VmFsdWU6IDEwMDAwLFxuICAgIGlzVmFsaWQ6IGlzU2FmZUludGVnZXIsXG4gICAgcmVxdWlyZW1lbnREZXNjcmlwdGlvbjogJ211c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgICBwYXJzZTogdG9OdW1iZXJPck51bGwsXG4gIH0sXG4gIG1pbkxlbmd0aDoge1xuICAgIGRlZmF1bHRWYWx1ZTogMCxcbiAgICBpc1ZhbGlkOiBuID0+IGlzU2FmZUludGVnZXIobikgJiYgbiA+PSAwLFxuICAgIHJlcXVpcmVtZW50RGVzY3JpcHRpb246ICdtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicsXG4gICAgcGFyc2U6IHRvTnVtYmVyT3JOdWxsLFxuICB9LFxufTtcblxuY29uc3QgdHlwZUNvbnN0cmFpbnRzID0gW1xuICBtYWtlcnVsZShhc3luYyAodmFsLCBvcHRzKSA9PiB2YWwgPT09IG51bGwgfHwgdmFsLmxlbmd0aCA+PSBvcHRzLm1pbkxlbmd0aCxcbiAgICAodmFsLCBvcHRzKSA9PiBgbXVzdCBjaG9vc2UgJHtvcHRzLm1pbkxlbmd0aH0gb3IgbW9yZSBvcHRpb25zYCksXG4gIG1ha2VydWxlKGFzeW5jICh2YWwsIG9wdHMpID0+IHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDw9IG9wdHMubWF4TGVuZ3RoLFxuICAgICh2YWwsIG9wdHMpID0+IGBjYW5ub3QgY2hvb3NlIG1vcmUgdGhhbiAke29wdHMubWF4TGVuZ3RofSBvcHRpb25zYCksXG5dO1xuXG5leHBvcnQgZGVmYXVsdCB0eXBlID0+IGdldERlZmF1bHRFeHBvcnQoXG4gIHR5cGVOYW1lKHR5cGUubmFtZSksXG4gIGFycmF5VHJ5UGFyc2UodHlwZSksXG4gIGFycmF5RnVuY3Rpb25zKHR5cGUpLFxuICBvcHRpb25zLFxuICB0eXBlQ29uc3RyYWludHMsXG4gIFt0eXBlLnNhbXBsZVZhbHVlXSxcbiAgSlNPTi5zdHJpbmdpZnksXG4pO1xuIiwiaW1wb3J0IHtcbiAgaXNTdHJpbmcsIGlzT2JqZWN0TGlrZSxcbiAgaXNOdWxsLCBoYXMsIGlzRW1wdHksXG59IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICB0eXBlRnVuY3Rpb25zLCBtYWtlcnVsZSxcbiAgcGFyc2VkU3VjY2VzcywgZ2V0RGVmYXVsdEV4cG9ydCxcbiAgcGFyc2VkRmFpbGVkLFxufSBmcm9tICcuL3R5cGVIZWxwZXJzJztcbmltcG9ydCB7XG4gIHN3aXRjaENhc2UsIGRlZmF1bHRDYXNlLFxuICBpc05vbkVtcHR5U3RyaW5nLCBpc0FycmF5T2ZTdHJpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5cbmNvbnN0IHJlZmVyZW5jZU5vdGhpbmcgPSAoKSA9PiAoeyBrZXk6ICcnIH0pO1xuXG5jb25zdCByZWZlcmVuY2VGdW5jdGlvbnMgPSB0eXBlRnVuY3Rpb25zKHtcbiAgZGVmYXVsdDogcmVmZXJlbmNlTm90aGluZyxcbn0pO1xuXG5jb25zdCBoYXNTdHJpbmdWYWx1ZSA9IChvYiwgcGF0aCkgPT4gaGFzKG9iLCBwYXRoKVxuICAgICYmIGlzU3RyaW5nKG9iW3BhdGhdKTtcblxuY29uc3QgaXNPYmplY3RXaXRoS2V5ID0gdiA9PiBpc09iamVjdExpa2UodilcbiAgICAmJiBoYXNTdHJpbmdWYWx1ZSh2LCAna2V5Jyk7XG5cbmNvbnN0IHRyeVBhcnNlRnJvbVN0cmluZyA9IHMgPT4ge1xuXG4gIHRyeSB7XG4gICAgY29uc3QgYXNPYmogPSBKU09OLnBhcnNlKHMpO1xuICAgIGlmKGlzT2JqZWN0V2l0aEtleSkge1xuICAgICAgcmV0dXJuIHBhcnNlZFN1Y2Nlc3MoYXNPYmopO1xuICAgIH1cbiAgfVxuICBjYXRjaChfKSB7XG4gICAgLy8gRU1QVFlcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRGYWlsZWQocyk7XG59XG5cbmNvbnN0IHJlZmVyZW5jZVRyeVBhcnNlID0gdiA9PiBzd2l0Y2hDYXNlKFxuICBbaXNPYmplY3RXaXRoS2V5LCBwYXJzZWRTdWNjZXNzXSxcbiAgW2lzU3RyaW5nLCB0cnlQYXJzZUZyb21TdHJpbmddLFxuICBbaXNOdWxsLCAoKSA9PiBwYXJzZWRTdWNjZXNzKHJlZmVyZW5jZU5vdGhpbmcoKSldLFxuICBbZGVmYXVsdENhc2UsIHBhcnNlZEZhaWxlZF0sXG4pKHYpO1xuXG5jb25zdCBvcHRpb25zID0ge1xuICBpbmRleE5vZGVLZXk6IHtcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgaXNWYWxpZDogaXNOb25FbXB0eVN0cmluZyxcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiAnbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgIHBhcnNlOiBzID0+IHMsXG4gIH0sXG4gIGRpc3BsYXlWYWx1ZToge1xuICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgaXNWYWxpZDogaXNOb25FbXB0eVN0cmluZyxcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiAnbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgIHBhcnNlOiBzID0+IHMsXG4gIH0sXG4gIHJldmVyc2VJbmRleE5vZGVLZXlzOiB7XG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGlzVmFsaWQ6IHYgPT4gaXNBcnJheU9mU3RyaW5nKHYpICYmIHYubGVuZ3RoID4gMCxcbiAgICByZXF1aXJlbWVudERlc2NyaXB0aW9uOiAnbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBzdHJpbmdzJyxcbiAgICBwYXJzZTogcyA9PiBzLFxuICB9LFxufTtcblxuY29uc3QgaXNFbXB0eVN0cmluZyA9IHMgPT4gaXNTdHJpbmcocykgJiYgaXNFbXB0eShzKTtcblxuY29uc3QgZW5zdXJlUmVmZXJlbmNlRXhpc3RzID0gYXN5bmMgKHZhbCwgb3B0cywgY29udGV4dCkgPT4gaXNFbXB0eVN0cmluZyh2YWwua2V5KVxuICAgIHx8IGF3YWl0IGNvbnRleHQucmVmZXJlbmNlRXhpc3RzKG9wdHMsIHZhbC5rZXkpO1xuXG5jb25zdCB0eXBlQ29uc3RyYWludHMgPSBbXG4gIG1ha2VydWxlKFxuICAgIGVuc3VyZVJlZmVyZW5jZUV4aXN0cyxcbiAgICAodmFsLCBvcHRzKSA9PiBgXCIke3ZhbFtvcHRzLmRpc3BsYXlWYWx1ZV19XCIgZG9lcyBub3QgZXhpc3QgaW4gb3B0aW9ucyBsaXN0IChrZXk6ICR7dmFsLmtleX0pYCxcbiAgKSxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGdldERlZmF1bHRFeHBvcnQoXG4gICdyZWZlcmVuY2UnLFxuICByZWZlcmVuY2VUcnlQYXJzZSxcbiAgcmVmZXJlbmNlRnVuY3Rpb25zLFxuICBvcHRpb25zLFxuICB0eXBlQ29uc3RyYWludHMsXG4gIHsga2V5OiAna2V5JywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgSlNPTi5zdHJpbmdpZnksXG4pO1xuIiwiaW1wb3J0IHtcbiAgbGFzdCwgaGFzLCBpc1N0cmluZywgaW50ZXJzZWN0aW9uLFxuICBpc051bGwsIGlzTnVtYmVyLFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHtcbiAgdHlwZUZ1bmN0aW9ucywgcGFyc2VkRmFpbGVkLFxuICBwYXJzZWRTdWNjZXNzLCBnZXREZWZhdWx0RXhwb3J0LFxufSBmcm9tICcuL3R5cGVIZWxwZXJzJztcbmltcG9ydCB7XG4gIHN3aXRjaENhc2UsIGRlZmF1bHRDYXNlLCBub25lLFxuICAkLCBzcGxpdEtleSxcbn0gZnJvbSAnLi4vY29tbW9uJztcblxuY29uc3QgaWxsZWdhbENoYXJhY3RlcnMgPSAnKj9cXFxcLzo8PnxcXDBcXGJcXGZcXHYnO1xuXG5leHBvcnQgY29uc3QgaXNMZWdhbEZpbGVuYW1lID0gKGZpbGVQYXRoKSA9PiB7XG4gIGNvbnN0IGZuID0gZmlsZU5hbWUoZmlsZVBhdGgpO1xuICByZXR1cm4gZm4ubGVuZ3RoIDw9IDI1NVxuICAgICYmIGludGVyc2VjdGlvbihmbi5zcGxpdCgnJykpKGlsbGVnYWxDaGFyYWN0ZXJzLnNwbGl0KCcnKSkubGVuZ3RoID09PSAwXG4gICAgJiYgbm9uZShmID0+IGYgPT09ICcuLicpKHNwbGl0S2V5KGZpbGVQYXRoKSk7XG59O1xuXG5jb25zdCBmaWxlTm90aGluZyA9ICgpID0+ICh7IHJlbGF0aXZlUGF0aDogJycsIHNpemU6IDAgfSk7XG5cbmNvbnN0IGZpbGVGdW5jdGlvbnMgPSB0eXBlRnVuY3Rpb25zKHtcbiAgZGVmYXVsdDogZmlsZU5vdGhpbmcsXG59KTtcblxuY29uc3QgZmlsZVRyeVBhcnNlID0gdiA9PiBzd2l0Y2hDYXNlKFxuICBbaXNWYWxpZEZpbGUsIHBhcnNlZFN1Y2Nlc3NdLFxuICBbaXNOdWxsLCAoKSA9PiBwYXJzZWRTdWNjZXNzKGZpbGVOb3RoaW5nKCkpXSxcbiAgW2RlZmF1bHRDYXNlLCBwYXJzZWRGYWlsZWRdLFxuKSh2KTtcblxuY29uc3QgZmlsZU5hbWUgPSBmaWxlUGF0aCA9PiAkKGZpbGVQYXRoLCBbXG4gIHNwbGl0S2V5LFxuICBsYXN0LFxuXSk7XG5cbmNvbnN0IGlzVmFsaWRGaWxlID0gZiA9PiAhaXNOdWxsKGYpXG4gICAgJiYgaGFzKCdyZWxhdGl2ZVBhdGgnKShmKSAmJiBoYXMoJ3NpemUnKShmKVxuICAgICYmIGlzTnVtYmVyKGYuc2l6ZSlcbiAgICAmJiBpc1N0cmluZyhmLnJlbGF0aXZlUGF0aClcbiAgICAmJiBpc0xlZ2FsRmlsZW5hbWUoZi5yZWxhdGl2ZVBhdGgpO1xuXG5jb25zdCBvcHRpb25zID0ge307XG5cbmNvbnN0IHR5cGVDb25zdHJhaW50cyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBnZXREZWZhdWx0RXhwb3J0KFxuICAnZmlsZScsXG4gIGZpbGVUcnlQYXJzZSxcbiAgZmlsZUZ1bmN0aW9ucyxcbiAgb3B0aW9ucyxcbiAgdHlwZUNvbnN0cmFpbnRzLFxuICB7IHJlbGF0aXZlUGF0aDogJ3NvbWVfZmlsZS5qcGcnLCBzaXplOiAxMDAwIH0sXG4gIEpTT04uc3RyaW5naWZ5LFxuKTtcbiIsImltcG9ydCB7XG4gIGFzc2lnbiwga2V5cywgbWVyZ2UsIGhhcyxcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIG1hcCwgaXNTdHJpbmcsIGlzTnVtYmVyLFxuICBpc0Jvb2xlYW4sIGlzRGF0ZSxcbiAgaXNPYmplY3QsIGlzQXJyYXksXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyAkIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHBhcnNlZFN1Y2Nlc3MgfSBmcm9tICcuL3R5cGVIZWxwZXJzJztcbmltcG9ydCBzdHJpbmcgZnJvbSAnLi9zdHJpbmcnO1xuaW1wb3J0IGJvb2wgZnJvbSAnLi9ib29sJztcbmltcG9ydCBudW1iZXIgZnJvbSAnLi9udW1iZXInO1xuaW1wb3J0IGRhdGV0aW1lIGZyb20gJy4vZGF0ZXRpbWUnO1xuaW1wb3J0IGFycmF5IGZyb20gJy4vYXJyYXknO1xuaW1wb3J0IHJlZmVyZW5jZSBmcm9tICcuL3JlZmVyZW5jZSc7XG5pbXBvcnQgZmlsZSBmcm9tICcuL2ZpbGUnO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmNvbnN0IGFsbFR5cGVzID0gKCkgPT4ge1xuICBjb25zdCBiYXNpY1R5cGVzID0ge1xuICAgIHN0cmluZywgbnVtYmVyLCBkYXRldGltZSwgYm9vbCwgcmVmZXJlbmNlLCBmaWxlLFxuICB9O1xuXG4gIGNvbnN0IGFycmF5cyA9ICQoYmFzaWNUeXBlcywgW1xuICAgIGtleXMsXG4gICAgbWFwKChrKSA9PiB7XG4gICAgICBjb25zdCBrdlR5cGUgPSB7fTtcbiAgICAgIGNvbnN0IGNvbmNyZXRlQXJyYXkgPSBhcnJheShiYXNpY1R5cGVzW2tdKTtcbiAgICAgIGt2VHlwZVtjb25jcmV0ZUFycmF5Lm5hbWVdID0gY29uY3JldGVBcnJheTtcbiAgICAgIHJldHVybiBrdlR5cGU7XG4gICAgfSksXG4gICAgdHlwZXMgPT4gYXNzaWduKHt9LCAuLi50eXBlcyksXG4gIF0pO1xuXG4gIHJldHVybiBtZXJnZSh7fSwgYmFzaWNUeXBlcywgYXJyYXlzKTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IGFsbCA9IGFsbFR5cGVzKCk7XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlID0gKHR5cGVOYW1lKSA9PiB7XG4gIGlmICghaGFzKGFsbCwgdHlwZU5hbWUpKSB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGBEbyBub3QgcmVjb2duaXNlIHR5cGUgJHt0eXBlTmFtZX1gKTtcbiAgcmV0dXJuIGFsbFt0eXBlTmFtZV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2FtcGxlRmllbGRWYWx1ZSA9IGZpZWxkID0+IGdldFR5cGUoZmllbGQudHlwZSkuc2FtcGxlVmFsdWU7XG5cbmV4cG9ydCBjb25zdCBnZXROZXdGaWVsZFZhbHVlID0gZmllbGQgPT4gZ2V0VHlwZShmaWVsZC50eXBlKS5nZXROZXcoZmllbGQpO1xuXG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlRmllbGQgPSAoZmllbGQsIHJlY29yZCkgPT4gZ2V0VHlwZShmaWVsZC50eXBlKS5zYWZlUGFyc2VGaWVsZChmaWVsZCwgcmVjb3JkKTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlRmllbGRQYXJzZSA9IChmaWVsZCwgcmVjb3JkKSA9PiAoaGFzKHJlY29yZCwgZmllbGQubmFtZSlcbiAgPyBnZXRUeXBlKGZpZWxkLnR5cGUpLnRyeVBhcnNlKHJlY29yZFtmaWVsZC5uYW1lXSlcbiAgOiBwYXJzZWRTdWNjZXNzKHVuZGVmaW5lZCkpOyAvLyBmaWVsZHMgbWF5IGJlIHVuZGVmaW5lZCBieSBkZWZhdWx0XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0T3B0aW9ucyA9IHR5cGUgPT4gZ2V0VHlwZSh0eXBlKS5nZXREZWZhdWx0T3B0aW9ucygpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUeXBlQ29uc3RyYWludHMgPSBhc3luYyAoZmllbGQsIHJlY29yZCwgY29udGV4dCkgPT4gYXdhaXQgZ2V0VHlwZShmaWVsZC50eXBlKS52YWxpZGF0ZVR5cGVDb25zdHJhaW50cyhmaWVsZCwgcmVjb3JkLCBjb250ZXh0KTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdFR5cGUgPSAodmFsdWUpID0+IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuIHN0cmluZztcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpIHJldHVybiBib29sO1xuICBpZiAoaXNOdW1iZXIodmFsdWUpKSByZXR1cm4gbnVtYmVyO1xuICBpZiAoaXNEYXRlKHZhbHVlKSkgcmV0dXJuIGRhdGV0aW1lO1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHJldHVybiBhcnJheShkZXRlY3RUeXBlKHZhbHVlWzBdKSk7XG4gIGlmIChpc09iamVjdCh2YWx1ZSlcbiAgICAgICAmJiBoYXModmFsdWUsICdrZXknKVxuICAgICAgICYmIGhhcyh2YWx1ZSwgJ3ZhbHVlJykpIHJldHVybiByZWZlcmVuY2U7XG4gIGlmIChpc09iamVjdCh2YWx1ZSlcbiAgICAgICAgJiYgaGFzKHZhbHVlLCAncmVsYXRpdmVQYXRoJylcbiAgICAgICAgJiYgaGFzKHZhbHVlLCAnc2l6ZScpKSByZXR1cm4gZmlsZTtcblxuICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGBjYW5ub3QgZGV0ZXJtaW5lIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xufTtcbiIsImltcG9ydCB7IGNsb25lLCBmaW5kLCBzcGxpdCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBqb2luS2V5LCAkIH0gZnJvbSAnLi4vY29tbW9uJztcbi8vIDUgbWludXRlc1xuZXhwb3J0IGNvbnN0IHRlbXBDb2RlRXhwaXJ5TGVuZ3RoID0gNSAqIDYwICogMTAwMDtcblxuZXhwb3J0IGNvbnN0IEFVVEhfRk9MREVSID0gJy8uYXV0aCc7XG5leHBvcnQgY29uc3QgVVNFUlNfTElTVF9GSUxFID0gam9pbktleShBVVRIX0ZPTERFUiwgJ3VzZXJzLmpzb24nKTtcbmV4cG9ydCBjb25zdCB1c2VyQXV0aEZpbGUgPSB1c2VybmFtZSA9PiBqb2luS2V5KEFVVEhfRk9MREVSLCBgYXV0aF8ke3VzZXJuYW1lfS5qc29uYCk7XG5leHBvcnQgY29uc3QgVVNFUlNfTE9DS19GSUxFID0gam9pbktleShBVVRIX0ZPTERFUiwgJ3VzZXJzX2xvY2snKTtcbmV4cG9ydCBjb25zdCBBQ0NFU1NfTEVWRUxTX0ZJTEUgPSBqb2luS2V5KEFVVEhfRk9MREVSLCAnYWNjZXNzX2xldmVscy5qc29uJyk7XG5leHBvcnQgY29uc3QgQUNDRVNTX0xFVkVMU19MT0NLX0ZJTEUgPSBqb2luS2V5KEFVVEhfRk9MREVSLCAnYWNjZXNzX2xldmVsc19sb2NrJyk7XG5cbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uVHlwZXMgPSB7XG4gIENSRUFURV9SRUNPUkQ6ICdjcmVhdGUgcmVjb3JkJyxcbiAgVVBEQVRFX1JFQ09SRDogJ3VwZGF0ZSByZWNvcmQnLFxuICBSRUFEX1JFQ09SRDogJ3JlYWQgcmVjb3JkJyxcbiAgREVMRVRFX1JFQ09SRDogJ2RlbGV0ZSByZWNvcmQnLFxuICBSRUFEX0lOREVYOiAncmVhZCBpbmRleCcsXG4gIE1BTkFHRV9JTkRFWDogJ21hbmFnZSBpbmRleCcsXG4gIE1BTkFHRV9DT0xMRUNUSU9OOiAnbWFuYWdlIGNvbGxlY3Rpb24nLFxuICBXUklURV9URU1QTEFURVM6ICd3cml0ZSB0ZW1wbGF0ZXMnLFxuICBDUkVBVEVfVVNFUjogJ2NyZWF0ZSB1c2VyJyxcbiAgU0VUX1BBU1NXT1JEOiAnc2V0IHBhc3N3b3JkJyxcbiAgQ1JFQVRFX1RFTVBPUkFSWV9BQ0NFU1M6ICdjcmVhdGUgdGVtcG9yYXJ5IGFjY2VzcycsXG4gIEVOQUJMRV9ESVNBQkxFX1VTRVI6ICdlbmFibGUgb3IgZGlzYWJsZSB1c2VyJyxcbiAgV1JJVEVfQUNDRVNTX0xFVkVMUzogJ3dyaXRlIGFjY2VzcyBsZXZlbHMnLFxuICBMSVNUX1VTRVJTOiAnbGlzdCB1c2VycycsXG4gIExJU1RfQUNDRVNTX0xFVkVMUzogJ2xpc3QgYWNjZXNzIGxldmVscycsXG4gIEVYRUNVVEVfQUNUSU9OOiAnZXhlY3V0ZSBhY3Rpb24nLFxuICBTRVRfVVNFUl9BQ0NFU1NfTEVWRUxTOiAnc2V0IHVzZXIgYWNjZXNzIGxldmVscycsXG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlckJ5TmFtZSA9ICh1c2VycywgbmFtZSkgPT4gJCh1c2VycywgW1xuICBmaW5kKHUgPT4gdS5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHN0cmlwVXNlck9mU2Vuc2l0aXZlU3R1ZmYgPSAodXNlcikgPT4ge1xuICBjb25zdCBzdHJpcHBlZCA9IGNsb25lKHVzZXIpO1xuICBkZWxldGUgc3RyaXBwZWQudGVtcENvZGU7XG4gIHJldHVybiBzdHJpcHBlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVRlbXBvcmFyeUNvZGUgPSBmdWxsQ29kZSA9PiAkKGZ1bGxDb2RlLCBbXG4gIHNwbGl0KCc6JyksXG4gIHBhcnRzID0+ICh7XG4gICAgaWQ6IHBhcnRzWzFdLFxuICAgIGNvZGU6IHBhcnRzWzJdLFxuICB9KSxcbl0pO1xuIiwiaW1wb3J0IHsgdmFsdWVzLCBpbmNsdWRlcywgc29tZSB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uVHlwZXMgfSBmcm9tICcuL2F1dGhDb21tb24nO1xuaW1wb3J0IHtcbiAgJCwgaXNOb3RoaW5nLCBhcGlXcmFwcGVyU3luYywgZXZlbnRzLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0Tm9kZUJ5S2V5T3JOb2RlS2V5LCBpc05vZGUgfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgYWx3YXlzQXV0aG9yaXplZCB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgaXNBdXRob3JpemVkID0gYXBwID0+IChwZXJtaXNzaW9uVHlwZSwgcmVzb3VyY2VLZXkpID0+IGFwaVdyYXBwZXJTeW5jKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLmlzQXV0aG9yaXplZCxcbiAgYWx3YXlzQXV0aG9yaXplZCxcbiAgeyByZXNvdXJjZUtleSwgcGVybWlzc2lvblR5cGUgfSxcbiAgX2lzQXV0aG9yaXplZCwgYXBwLCBwZXJtaXNzaW9uVHlwZSwgcmVzb3VyY2VLZXksXG4pO1xuXG5leHBvcnQgY29uc3QgX2lzQXV0aG9yaXplZCA9IChhcHAsIHBlcm1pc3Npb25UeXBlLCByZXNvdXJjZUtleSkgPT4ge1xuICBpZiAoIWFwcC51c2VyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdmFsaWRUeXBlID0gJChwZXJtaXNzaW9uVHlwZXMsIFtcbiAgICB2YWx1ZXMsXG4gICAgaW5jbHVkZXMocGVybWlzc2lvblR5cGUpLFxuICBdKTtcblxuICBpZiAoIXZhbGlkVHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHBlcm1NYXRjaGVzUmVzb3VyY2UgPSAodXNlcnBlcm0pID0+IHtcbiAgICBjb25zdCBub2RlS2V5ID0gaXNOb3RoaW5nKHJlc291cmNlS2V5KVxuICAgICAgPyBudWxsXG4gICAgICA6IGlzTm9kZShhcHAuaGllcmFyY2h5LCByZXNvdXJjZUtleSlcbiAgICAgICAgPyBnZXROb2RlQnlLZXlPck5vZGVLZXkoXG4gICAgICAgICAgYXBwLmhpZXJhcmNoeSwgcmVzb3VyY2VLZXksXG4gICAgICAgICkubm9kZUtleSgpXG4gICAgICAgIDogcmVzb3VyY2VLZXk7XG5cbiAgICByZXR1cm4gKHVzZXJwZXJtLnR5cGUgPT09IHBlcm1pc3Npb25UeXBlKVxuICAgICAgICAmJiAoXG4gICAgICAgICAgaXNOb3RoaW5nKHJlc291cmNlS2V5KVxuICAgICAgICAgICAgfHwgbm9kZUtleSA9PT0gdXNlcnBlcm0ubm9kZUtleVxuICAgICAgICApO1xuICB9O1xuXG4gIHJldHVybiAkKGFwcC51c2VyLnBlcm1pc3Npb25zLCBbXG4gICAgc29tZShwZXJtTWF0Y2hlc1Jlc291cmNlKSxcbiAgXSk7XG59O1xuIiwiaW1wb3J0IHsgcGVybWlzc2lvblR5cGVzIH0gZnJvbSAnLi9hdXRoQ29tbW9uJztcbmltcG9ydCB7IGlzQXV0aG9yaXplZCB9IGZyb20gJy4vaXNBdXRob3JpemVkJztcblxuZXhwb3J0IGNvbnN0IHRlbXBvcmFyeUFjY2Vzc1Blcm1pc3Npb25zID0gKCkgPT4gKFt7IHR5cGU6IHBlcm1pc3Npb25UeXBlcy5TRVRfUEFTU1dPUkQgfV0pO1xuXG5jb25zdCBub2RlUGVybWlzc2lvbiA9IHR5cGUgPT4gKHtcbiAgYWRkOiAobm9kZUtleSwgYWNjZXNzTGV2ZWwpID0+IGFjY2Vzc0xldmVsLnBlcm1pc3Npb25zLnB1c2goeyB0eXBlLCBub2RlS2V5IH0pLFxuICBpc0F1dGhvcml6ZWQ6IHJlc291cmNlS2V5ID0+IGFwcCA9PiBpc0F1dGhvcml6ZWQoYXBwKSh0eXBlLCByZXNvdXJjZUtleSksXG4gIGlzTm9kZTogdHJ1ZSxcbiAgZ2V0OiBub2RlS2V5ID0+ICh7IHR5cGUsIG5vZGVLZXkgfSksXG59KTtcblxuY29uc3Qgc3RhdGljUGVybWlzc2lvbiA9IHR5cGUgPT4gKHtcbiAgYWRkOiBhY2Nlc3NMZXZlbCA9PiBhY2Nlc3NMZXZlbC5wZXJtaXNzaW9ucy5wdXNoKHsgdHlwZSB9KSxcbiAgaXNBdXRob3JpemVkOiBhcHAgPT4gaXNBdXRob3JpemVkKGFwcCkodHlwZSksXG4gIGlzTm9kZTogZmFsc2UsXG4gIGdldDogKCkgPT4gKHsgdHlwZSB9KSxcbn0pO1xuXG5jb25zdCBjcmVhdGVSZWNvcmQgPSBub2RlUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuQ1JFQVRFX1JFQ09SRCk7XG5cbmNvbnN0IHVwZGF0ZVJlY29yZCA9IG5vZGVQZXJtaXNzaW9uKHBlcm1pc3Npb25UeXBlcy5VUERBVEVfUkVDT1JEKTtcblxuY29uc3QgZGVsZXRlUmVjb3JkID0gbm9kZVBlcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLkRFTEVURV9SRUNPUkQpO1xuXG5jb25zdCByZWFkUmVjb3JkID0gbm9kZVBlcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLlJFQURfUkVDT1JEKTtcblxuY29uc3Qgd3JpdGVUZW1wbGF0ZXMgPSBzdGF0aWNQZXJtaXNzaW9uKHBlcm1pc3Npb25UeXBlcy5XUklURV9URU1QTEFURVMpO1xuXG5jb25zdCBjcmVhdGVVc2VyID0gc3RhdGljUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuQ1JFQVRFX1VTRVIpO1xuXG5jb25zdCBzZXRQYXNzd29yZCA9IHN0YXRpY1Blcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLlNFVF9QQVNTV09SRCk7XG5cbmNvbnN0IHJlYWRJbmRleCA9IG5vZGVQZXJtaXNzaW9uKHBlcm1pc3Npb25UeXBlcy5SRUFEX0lOREVYKTtcblxuY29uc3QgbWFuYWdlSW5kZXggPSBzdGF0aWNQZXJtaXNzaW9uKHBlcm1pc3Npb25UeXBlcy5NQU5BR0VfSU5ERVgpO1xuXG5jb25zdCBtYW5hZ2VDb2xsZWN0aW9uID0gc3RhdGljUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuTUFOQUdFX0NPTExFQ1RJT04pO1xuXG5jb25zdCBjcmVhdGVUZW1wb3JhcnlBY2Nlc3MgPSBzdGF0aWNQZXJtaXNzaW9uKHBlcm1pc3Npb25UeXBlcy5DUkVBVEVfVEVNUE9SQVJZX0FDQ0VTUyk7XG5cbmNvbnN0IGVuYWJsZURpc2FibGVVc2VyID0gc3RhdGljUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuRU5BQkxFX0RJU0FCTEVfVVNFUik7XG5cbmNvbnN0IHdyaXRlQWNjZXNzTGV2ZWxzID0gc3RhdGljUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuV1JJVEVfQUNDRVNTX0xFVkVMUyk7XG5cbmNvbnN0IGxpc3RVc2VycyA9IHN0YXRpY1Blcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLkxJU1RfVVNFUlMpO1xuXG5jb25zdCBsaXN0QWNjZXNzTGV2ZWxzID0gc3RhdGljUGVybWlzc2lvbihwZXJtaXNzaW9uVHlwZXMuTElTVF9BQ0NFU1NfTEVWRUxTKTtcblxuY29uc3Qgc2V0VXNlckFjY2Vzc0xldmVscyA9IHN0YXRpY1Blcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLlNFVF9VU0VSX0FDQ0VTU19MRVZFTFMpO1xuXG5jb25zdCBleGVjdXRlQWN0aW9uID0gbm9kZVBlcm1pc3Npb24ocGVybWlzc2lvblR5cGVzLkVYRUNVVEVfQUNUSU9OKTtcblxuZXhwb3J0IGNvbnN0IGFsd2F5c0F1dGhvcml6ZWQgPSAoKSA9PiB0cnVlO1xuXG5leHBvcnQgY29uc3QgcGVybWlzc2lvbiA9IHtcbiAgY3JlYXRlUmVjb3JkLFxuICB1cGRhdGVSZWNvcmQsXG4gIGRlbGV0ZVJlY29yZCxcbiAgcmVhZFJlY29yZCxcbiAgd3JpdGVUZW1wbGF0ZXMsXG4gIGNyZWF0ZVVzZXIsXG4gIHNldFBhc3N3b3JkLFxuICByZWFkSW5kZXgsXG4gIGNyZWF0ZVRlbXBvcmFyeUFjY2VzcyxcbiAgZW5hYmxlRGlzYWJsZVVzZXIsXG4gIHdyaXRlQWNjZXNzTGV2ZWxzLFxuICBsaXN0VXNlcnMsXG4gIGxpc3RBY2Nlc3NMZXZlbHMsXG4gIG1hbmFnZUluZGV4LFxuICBtYW5hZ2VDb2xsZWN0aW9uLFxuICBleGVjdXRlQWN0aW9uLFxuICBzZXRVc2VyQWNjZXNzTGV2ZWxzLFxufTtcbiIsImltcG9ydCB7XG4gIGtleUJ5LCBtYXBWYWx1ZXMsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gJ3Nob3J0aWQnO1xuaW1wb3J0IHsgZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoIH0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcbmltcG9ydCB7IGdldE5ld0ZpZWxkVmFsdWUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICAkLCBqb2luS2V5LCBzYWZlS2V5LCBhcGlXcmFwcGVyU3luYywgZXZlbnRzLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4uL2F1dGhBcGkvcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0TmV3ID0gYXBwID0+IChjb2xsZWN0aW9uS2V5LCByZWNvcmRUeXBlTmFtZSkgPT4ge1xuICBjb25zdCByZWNvcmROb2RlID0gZ2V0UmVjb3JkTm9kZShhcHAsIGNvbGxlY3Rpb25LZXksIHJlY29yZFR5cGVOYW1lKTtcbiAgcmV0dXJuIGFwaVdyYXBwZXJTeW5jKFxuICAgIGFwcCxcbiAgICBldmVudHMucmVjb3JkQXBpLmdldE5ldyxcbiAgICBwZXJtaXNzaW9uLmNyZWF0ZVJlY29yZC5pc0F1dGhvcml6ZWQocmVjb3JkTm9kZS5ub2RlS2V5KCkpLFxuICAgIHsgY29sbGVjdGlvbktleSwgcmVjb3JkVHlwZU5hbWUgfSxcbiAgICBfZ2V0TmV3LCByZWNvcmROb2RlLCBjb2xsZWN0aW9uS2V5LFxuICApO1xufTtcblxuY29uc3QgX2dldE5ldyA9IChyZWNvcmROb2RlLCBjb2xsZWN0aW9uS2V5KSA9PiBjb25zdHJ1Y3RSZWNvcmQocmVjb3JkTm9kZSwgZ2V0TmV3RmllbGRWYWx1ZSwgY29sbGVjdGlvbktleSk7XG5cbmNvbnN0IGdldFJlY29yZE5vZGUgPSAoYXBwLCBjb2xsZWN0aW9uS2V5KSA9PiB7XG4gIGNvbGxlY3Rpb25LZXkgPSBzYWZlS2V5KGNvbGxlY3Rpb25LZXkpO1xuICByZXR1cm4gZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoKGFwcC5oaWVyYXJjaHkpKGNvbGxlY3Rpb25LZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld0NoaWxkID0gYXBwID0+IChyZWNvcmRLZXksIGNvbGxlY3Rpb25OYW1lLCByZWNvcmRUeXBlTmFtZSkgPT4gXG4gIGdldE5ldyhhcHApKGpvaW5LZXkocmVjb3JkS2V5LCBjb2xsZWN0aW9uTmFtZSksIHJlY29yZFR5cGVOYW1lKTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFJlY29yZCA9IChyZWNvcmROb2RlLCBnZXRGaWVsZFZhbHVlLCBjb2xsZWN0aW9uS2V5KSA9PiB7XG4gIGNvbnN0IHJlY29yZCA9ICQocmVjb3JkTm9kZS5maWVsZHMsIFtcbiAgICBrZXlCeSgnbmFtZScpLFxuICAgIG1hcFZhbHVlcyhnZXRGaWVsZFZhbHVlKSxcbiAgXSk7XG5cbiAgcmVjb3JkLmlkID0gYCR7cmVjb3JkTm9kZS5ub2RlSWR9LSR7Z2VuZXJhdGUoKX1gO1xuICByZWNvcmQua2V5ID0gam9pbktleShjb2xsZWN0aW9uS2V5LCByZWNvcmQuaWQpO1xuICByZWNvcmQuaXNOZXcgPSB0cnVlO1xuICByZWNvcmQudHlwZSA9IHJlY29yZE5vZGUubmFtZTtcbiAgcmV0dXJuIHJlY29yZDtcbn07XG4iLCJpbXBvcnQge1xuICBrZXlCeSwgbWFwVmFsdWVzLCBmaWx0ZXIsIFxuICBtYXAsIGluY2x1ZGVzLCBsYXN0LFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgZ2V0RXhhY3ROb2RlRm9yUGF0aCwgZ2V0Tm9kZSB9IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyBzYWZlUGFyc2VGaWVsZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gICQsIHNwbGl0S2V5LCBzYWZlS2V5LCBpc05vbkVtcHR5U3RyaW5nLFxuICBhcGlXcmFwcGVyLCBldmVudHMsIGpvaW5LZXksXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBtYXBSZWNvcmQgfSBmcm9tICcuLi9pbmRleGluZy9ldmFsdWF0ZSc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWNvcmRGaWxlTmFtZSA9IGtleSA9PiBqb2luS2V5KGtleSwgJ3JlY29yZC5qc29uJyk7XG5cbmV4cG9ydCBjb25zdCBsb2FkID0gYXBwID0+IGFzeW5jIGtleSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5yZWNvcmRBcGkubG9hZCxcbiAgcGVybWlzc2lvbi5yZWFkUmVjb3JkLmlzQXV0aG9yaXplZChrZXkpLFxuICB7IGtleSB9LFxuICBfbG9hZCwgYXBwLCBrZXksXG4pO1xuXG5leHBvcnQgY29uc3QgX2xvYWQgPSBhc3luYyAoYXBwLCBrZXksIGtleVN0YWNrID0gW10pID0+IHtcbiAga2V5ID0gc2FmZUtleShrZXkpO1xuICBjb25zdCByZWNvcmROb2RlID0gZ2V0RXhhY3ROb2RlRm9yUGF0aChhcHAuaGllcmFyY2h5KShrZXkpO1xuICBjb25zdCBzdG9yZWREYXRhID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5sb2FkSnNvbihcbiAgICBnZXRSZWNvcmRGaWxlTmFtZShrZXkpLFxuICApO1xuXG4gIGNvbnN0IGxvYWRlZFJlY29yZCA9ICQocmVjb3JkTm9kZS5maWVsZHMsIFtcbiAgICBrZXlCeSgnbmFtZScpLFxuICAgIG1hcFZhbHVlcyhmID0+IHNhZmVQYXJzZUZpZWxkKGYsIHN0b3JlZERhdGEpKSxcbiAgXSk7XG5cbiAgY29uc3QgbmV3S2V5U3RhY2sgPSBbLi4ua2V5U3RhY2ssIGtleV07XG5cbiAgY29uc3QgcmVmZXJlbmNlcyA9ICQocmVjb3JkTm9kZS5maWVsZHMsIFtcbiAgICBmaWx0ZXIoZiA9PiBmLnR5cGUgPT09ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICAgICAgICAgICYmIGlzTm9uRW1wdHlTdHJpbmcobG9hZGVkUmVjb3JkW2YubmFtZV0ua2V5KVxuICAgICAgICAgICAgICAgICAgICAmJiAhaW5jbHVkZXMobG9hZGVkUmVjb3JkW2YubmFtZV0ua2V5KShuZXdLZXlTdGFjaykpLFxuICAgIG1hcChmID0+ICh7XG4gICAgICBwcm9taXNlOiBfbG9hZChhcHAsIGxvYWRlZFJlY29yZFtmLm5hbWVdLmtleSwgbmV3S2V5U3RhY2spLFxuICAgICAgaW5kZXg6IGdldE5vZGUoYXBwLmhpZXJhcmNoeSwgZi50eXBlT3B0aW9ucy5pbmRleE5vZGVLZXkpLFxuICAgICAgZmllbGQ6IGYsXG4gICAgfSkpLFxuICBdKTtcblxuICBpZiAocmVmZXJlbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVmUmVjb3JkcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWFwKHAgPT4gcC5wcm9taXNlKShyZWZlcmVuY2VzKSxcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCByZWYgb2YgcmVmZXJlbmNlcykge1xuICAgICAgbG9hZGVkUmVjb3JkW3JlZi5maWVsZC5uYW1lXSA9IG1hcFJlY29yZChcbiAgICAgICAgcmVmUmVjb3Jkc1tyZWZlcmVuY2VzLmluZGV4T2YocmVmKV0sXG4gICAgICAgIHJlZi5pbmRleCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbG9hZGVkUmVjb3JkLnRyYW5zYWN0aW9uSWQgPSBzdG9yZWREYXRhLnRyYW5zYWN0aW9uSWQ7XG4gIGxvYWRlZFJlY29yZC5pc05ldyA9IGZhbHNlO1xuICBsb2FkZWRSZWNvcmQua2V5ID0ga2V5O1xuICBsb2FkZWRSZWNvcmQuaWQgPSAkKGtleSwgW3NwbGl0S2V5LCBsYXN0XSk7XG4gIGxvYWRlZFJlY29yZC50eXBlID0gcmVjb3JkTm9kZS5uYW1lO1xuICByZXR1cm4gbG9hZGVkUmVjb3JkO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG9hZDtcbiIsIi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZGV4NGVyL2pzLXByb21pc2UtcmVhZGFibGVcclxuLy8gdGhhbmtzIDopXHJcbiAgXHJcbmV4cG9ydCBjb25zdCBwcm9taXNlUmVhZGFibGVTdHJlYW0gPSBzdHJlYW0gPT4ge1xyXG4gICBcclxuICAgIGxldCBfZXJyb3JlZDtcclxuXHJcbiAgICBjb25zdCBfZXJyb3JIYW5kbGVyID0gZXJyID0+IHtcclxuICAgICAgICBfZXJyb3JlZCA9IGVycjtcclxuICAgIH07XHJcblxyXG4gICAgc3RyZWFtLm9uKFwiZXJyb3JcIiwgX2Vycm9ySGFuZGxlcik7XHJcbiAgXHJcbiAgICBjb25zdCByZWFkID0gKHNpemUpID0+IHtcclxuICBcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBpZiAoX2Vycm9yZWQpIHtcclxuICAgICAgICAgIGNvbnN0IGVyciA9IF9lcnJvcmVkO1xyXG4gICAgICAgICAgX2Vycm9yZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycilcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgaWYgKCFzdHJlYW0ucmVhZGFibGUgfHwgc3RyZWFtLmNsb3NlZCB8fCBzdHJlYW0uZGVzdHJveWVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjb25zdCByZWFkYWJsZUhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjaHVuayA9IHN0cmVhbS5yZWFkKHNpemUpO1xyXG4gIFxyXG4gICAgICAgICAgaWYgKGNodW5rKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVycygpO1xyXG4gICAgICAgICAgICByZXNvbHZlKGNodW5rKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY29uc3QgY2xvc2VIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNvbnN0IGVuZEhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgX2Vycm9yZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjb25zdCByZW1vdmVMaXN0ZW5lcnMgPSAoKSA9PiB7XHJcbiAgICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLCBjbG9zZUhhbmRsZXIpO1xyXG4gICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIiwgZXJyb3JIYW5kbGVyKTtcclxuICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLCBlbmRIYW5kbGVyKTtcclxuICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcInJlYWRhYmxlXCIsIHJlYWRhYmxlSGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIHN0cmVhbS5vbihcImNsb3NlXCIsIGNsb3NlSGFuZGxlcik7XHJcbiAgICAgICAgc3RyZWFtLm9uKFwiZW5kXCIsIGVuZEhhbmRsZXIpO1xyXG4gICAgICAgIHN0cmVhbS5vbihcImVycm9yXCIsIGVycm9ySGFuZGxlcik7XHJcbiAgICAgICAgc3RyZWFtLm9uKFwicmVhZGFibGVcIiwgcmVhZGFibGVIYW5kbGVyKTtcclxuICBcclxuICAgICAgICByZWFkYWJsZUhhbmRsZXIoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xyXG4gICAgICBpZiAoc3RyZWFtKSB7XHJcbiAgICAgICAgaWYgKF9lcnJvckhhbmRsZXIpIHtcclxuICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsIF9lcnJvckhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHN0cmVhbS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgcmV0dXJuIHtyZWFkLCBkZXN0cm95LCBzdHJlYW19O1xyXG4gIH1cclxuICBcclxuICBleHBvcnQgZGVmYXVsdCBwcm9taXNlUmVhZGFibGVTdHJlYW1cclxuICAiLCJpbXBvcnQgeyBjb21waWxlQ29kZSB9IGZyb20gJ0BueC1qcy9jb21waWxlci11dGlsJztcbmltcG9ydCB7XG4gIGZpbHRlciwgaW5jbHVkZXMsIG1hcCwgbGFzdCxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7XG4gIGdldEFjdHVhbEtleU9mUGFyZW50LCBpc0dsb2JhbEluZGV4LFxuICBnZXRQYXJlbnRLZXksIGlzU2hhcmRlZEluZGV4LFxuICBnZXRFeGFjdE5vZGVGb3JQYXRoLFxufSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHtcbiAgam9pbktleSwgaXNOb25FbXB0eVN0cmluZywgc3BsaXRLZXksICQsXG59IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRJbmRleGVkRGF0YUtleSA9IChpbmRleE5vZGUsIGluZGV4S2V5LCByZWNvcmQpID0+IHtcbiAgY29uc3QgZ2V0U2hhcmROYW1lID0gKGluZGV4Tm9kZSwgcmVjb3JkKSA9PiB7XG4gICAgY29uc3Qgc2hhcmROYW1lRnVuYyA9IGNvbXBpbGVDb2RlKGluZGV4Tm9kZS5nZXRTaGFyZE5hbWUpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc2hhcmROYW1lRnVuYyh7IHJlY29yZCB9KTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IGBzaGFyZENvZGU6ICR7aW5kZXhOb2RlLmdldFNoYXJkTmFtZX0gOjogcmVjb3JkOiAke0pTT04uc3RyaW5naWZ5KHJlY29yZCl9IDo6IGBcbiAgICAgIGUubWVzc2FnZSA9IFwiRXJyb3IgcnVubmluZyBpbmRleCBzaGFyZG5hbWUgZnVuYzogXCIgKyBlcnJvckRldGFpbHMgKyBlLm1lc3NhZ2U7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaGFyZE5hbWUgPSBpc05vbkVtcHR5U3RyaW5nKGluZGV4Tm9kZS5nZXRTaGFyZE5hbWUpXG4gICAgPyBgJHtnZXRTaGFyZE5hbWUoaW5kZXhOb2RlLCByZWNvcmQpfS5jc3ZgXG4gICAgOiAnaW5kZXguY3N2JztcblxuICByZXR1cm4gam9pbktleShpbmRleEtleSwgc2hhcmROYW1lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZEtleXNJblJhbmdlID0gYXN5bmMgKGFwcCwgaW5kZXhLZXksIHN0YXJ0UmVjb3JkID0gbnVsbCwgZW5kUmVjb3JkID0gbnVsbCkgPT4ge1xuICBjb25zdCBpbmRleE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKGluZGV4S2V5KTtcblxuICBjb25zdCBzdGFydFNoYXJkTmFtZSA9ICFzdGFydFJlY29yZFxuICAgID8gbnVsbFxuICAgIDogc2hhcmROYW1lRnJvbUtleShcbiAgICAgIGdldEluZGV4ZWREYXRhS2V5KFxuICAgICAgICBpbmRleE5vZGUsXG4gICAgICAgIGluZGV4S2V5LFxuICAgICAgICBzdGFydFJlY29yZCxcbiAgICAgICksXG4gICAgKTtcblxuICBjb25zdCBlbmRTaGFyZE5hbWUgPSAhZW5kUmVjb3JkXG4gICAgPyBudWxsXG4gICAgOiBzaGFyZE5hbWVGcm9tS2V5KFxuICAgICAgZ2V0SW5kZXhlZERhdGFLZXkoXG4gICAgICAgIGluZGV4Tm9kZSxcbiAgICAgICAgaW5kZXhLZXksXG4gICAgICAgIGVuZFJlY29yZCxcbiAgICAgICksXG4gICAgKTtcblxuICByZXR1cm4gJChhd2FpdCBnZXRTaGFyZE1hcChhcHAuZGF0YXN0b3JlLCBpbmRleEtleSksIFtcbiAgICBmaWx0ZXIoayA9PiAoc3RhcnRSZWNvcmQgPT09IG51bGwgfHwgayA+PSBzdGFydFNoYXJkTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgJiYgKGVuZFJlY29yZCA9PT0gbnVsbCB8fCBrIDw9IGVuZFNoYXJkTmFtZSkpLFxuICAgIG1hcChrID0+IGpvaW5LZXkoaW5kZXhLZXksIGAke2t9LmNzdmApKSxcbiAgXSk7XG59O1xuXG5leHBvcnQgY29uc3QgZW5zdXJlU2hhcmROYW1lSXNJblNoYXJkTWFwID0gYXN5bmMgKHN0b3JlLCBpbmRleEtleSwgaW5kZXhlZERhdGFLZXkpID0+IHtcbiAgY29uc3QgbWFwID0gYXdhaXQgZ2V0U2hhcmRNYXAoc3RvcmUsIGluZGV4S2V5KTtcbiAgY29uc3Qgc2hhcmROYW1lID0gc2hhcmROYW1lRnJvbUtleShpbmRleGVkRGF0YUtleSk7XG4gIGlmICghaW5jbHVkZXMoc2hhcmROYW1lKShtYXApKSB7XG4gICAgbWFwLnB1c2goc2hhcmROYW1lKTtcbiAgICBhd2FpdCB3cml0ZVNoYXJkTWFwKHN0b3JlLCBpbmRleEtleSwgbWFwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXJkTWFwID0gYXN5bmMgKGRhdGFzdG9yZSwgaW5kZXhLZXkpID0+IHtcbiAgY29uc3Qgc2hhcmRNYXBLZXkgPSBnZXRTaGFyZE1hcEtleShpbmRleEtleSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGRhdGFzdG9yZS5sb2FkSnNvbihzaGFyZE1hcEtleSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBhd2FpdCBkYXRhc3RvcmUuY3JlYXRlSnNvbihzaGFyZE1hcEtleSwgW10pO1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHdyaXRlU2hhcmRNYXAgPSBhc3luYyAoZGF0YXN0b3JlLCBpbmRleEtleSwgc2hhcmRNYXApID0+IGF3YWl0IGRhdGFzdG9yZS51cGRhdGVKc29uKFxuICBnZXRTaGFyZE1hcEtleShpbmRleEtleSksXG4gIHNoYXJkTWFwLFxuKTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbFNoYXJkS2V5cyA9IGFzeW5jIChhcHAsIGluZGV4S2V5KSA9PiBhd2FpdCBnZXRTaGFyZEtleXNJblJhbmdlKGFwcCwgaW5kZXhLZXkpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2hhcmRNYXBLZXkgPSBpbmRleEtleSA9PiBqb2luS2V5KGluZGV4S2V5LCAnc2hhcmRNYXAuanNvbicpO1xuXG5leHBvcnQgY29uc3QgZ2V0VW5zaGFyZGVkSW5kZXhEYXRhS2V5ID0gaW5kZXhLZXkgPT4gam9pbktleShpbmRleEtleSwgJ2luZGV4LmNzdicpO1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZXhGb2xkZXJLZXkgPSBpbmRleEtleSA9PiBpbmRleEtleTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluZGV4RmlsZSA9IGFzeW5jIChkYXRhc3RvcmUsIGluZGV4ZWREYXRhS2V5LCBpbmRleCkgPT4ge1xuICBpZiAoaXNTaGFyZGVkSW5kZXgoaW5kZXgpKSB7XG4gICAgY29uc3QgaW5kZXhLZXkgPSBnZXRQYXJlbnRLZXkoaW5kZXhlZERhdGFLZXkpO1xuICAgIGNvbnN0IHNoYXJkTWFwID0gYXdhaXQgZ2V0U2hhcmRNYXAoZGF0YXN0b3JlLCBpbmRleEtleSk7XG4gICAgc2hhcmRNYXAucHVzaChcbiAgICAgIHNoYXJkTmFtZUZyb21LZXkoaW5kZXhlZERhdGFLZXkpLFxuICAgICk7XG4gICAgYXdhaXQgd3JpdGVTaGFyZE1hcChkYXRhc3RvcmUsIGluZGV4S2V5LCBzaGFyZE1hcCk7XG4gIH1cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUZpbGUoaW5kZXhlZERhdGFLZXksICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFyZE5hbWVGcm9tS2V5ID0ga2V5ID0+ICQoa2V5LCBbXG4gIHNwbGl0S2V5LFxuICBsYXN0LFxuXSkucmVwbGFjZSgnLmNzdicsICcnKTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGV4S2V5X0Jhc2VkT25EZWNlbmRhbnQgPSAoZGVjZW5kYW50S2V5LCBpbmRleE5vZGUpID0+IHtcbiAgaWYgKGlzR2xvYmFsSW5kZXgoaW5kZXhOb2RlKSkgeyByZXR1cm4gYCR7aW5kZXhOb2RlLm5vZGVLZXkoKX1gOyB9XG5cbiAgY29uc3QgaW5kZXhlZERhdGFQYXJlbnRLZXkgPSBnZXRBY3R1YWxLZXlPZlBhcmVudChcbiAgICBpbmRleE5vZGUucGFyZW50KCkubm9kZUtleSgpLFxuICAgIGRlY2VuZGFudEtleSxcbiAgKTtcblxuICByZXR1cm4gam9pbktleShcbiAgICBpbmRleGVkRGF0YVBhcmVudEtleSxcbiAgICBpbmRleE5vZGUubmFtZSxcbiAgKTtcbn07XG4iLCJpbXBvcnQge1xuICBoYXMsIGtleXMsIG1hcCwgb3JkZXJCeSxcbiAgZmlsdGVyLCBjb25jYXQsIHJldmVyc2UsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBnZXRBbGxvd2VkUmVjb3JkTm9kZXNGb3JJbmRleCB9IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyBtYXBSZWNvcmQgfSBmcm9tICcuL2V2YWx1YXRlJztcbmltcG9ydCB7IGNvbnN0cnVjdFJlY29yZCB9IGZyb20gJy4uL3JlY29yZEFwaS9nZXROZXcnO1xuaW1wb3J0IHsgZ2V0U2FtcGxlRmllbGRWYWx1ZSwgZGV0ZWN0VHlwZSwgYWxsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgJCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVNjaGVtYSA9IChoaWVyYXJjaHksIGluZGV4Tm9kZSkgPT4ge1xuICBjb25zdCByZWNvcmROb2RlcyA9IGdldEFsbG93ZWRSZWNvcmROb2Rlc0ZvckluZGV4KGhpZXJhcmNoeSwgaW5kZXhOb2RlKTtcbiAgY29uc3QgbWFwcGVkUmVjb3JkcyA9ICQocmVjb3JkTm9kZXMsIFtcbiAgICBtYXAobiA9PiBtYXBSZWNvcmQoY3JlYXRlU2FtcGxlUmVjb3JkKG4pLCBpbmRleE5vZGUpKSxcbiAgXSk7XG5cbiAgLy8gYWx3YXlzIGhhcyByZWNvcmQga2V5IGFuZCBzb3J0IGtleVxuICBjb25zdCBzY2hlbWEgPSB7XG4gICAgc29ydEtleTogYWxsLnN0cmluZyxcbiAgICBrZXk6IGFsbC5zdHJpbmcsXG4gIH07XG5cbiAgY29uc3QgZmllbGRzSGFzID0gaGFzKHNjaGVtYSk7XG4gIGNvbnN0IHNldEZpZWxkID0gKGZpZWxkTmFtZSwgdmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHRoaXNUeXBlID0gZGV0ZWN0VHlwZSh2YWx1ZSk7XG4gICAgaWYgKGZpZWxkc0hhcyhmaWVsZE5hbWUpKSB7XG4gICAgICBpZiAoc2NoZW1hW2ZpZWxkTmFtZV0gIT09IHRoaXNUeXBlKSB7XG4gICAgICAgIHNjaGVtYVtmaWVsZE5hbWVdID0gYWxsLnN0cmluZztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZW1hW2ZpZWxkTmFtZV0gPSB0aGlzVHlwZTtcbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCBtYXBwZWRSZWMgb2YgbWFwcGVkUmVjb3Jkcykge1xuICAgIGZvciAoY29uc3QgZiBpbiBtYXBwZWRSZWMpIHtcbiAgICAgIHNldEZpZWxkKGYsIG1hcHBlZFJlY1tmXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJpbmcgYW4gYXJyYXkgb2Yge25hbWUsIHR5cGV9XG4gIHJldHVybiAkKHNjaGVtYSwgW1xuICAgIGtleXMsXG4gICAgbWFwKGsgPT4gKHsgbmFtZTogaywgdHlwZTogc2NoZW1hW2tdLm5hbWUgfSkpLFxuICAgIGZpbHRlcihzID0+IHMubmFtZSAhPT0gJ3NvcnRLZXknKSxcbiAgICBvcmRlckJ5KCduYW1lJywgWydkZXNjJ10pLCAvLyByZXZlcnNlIGFwbGhhXG4gICAgY29uY2F0KFt7IG5hbWU6ICdzb3J0S2V5JywgdHlwZTogYWxsLnN0cmluZy5uYW1lIH1dKSwgLy8gc29ydEtleSBvbiBlbmRcbiAgICByZXZlcnNlLCAvLyBzb3J0S2V5IGZpcnN0LCB0aGVuIHJlc3QgYXJlIGFscGhhYmV0aWNhbFxuICBdKTtcbn07XG5cbmNvbnN0IGNyZWF0ZVNhbXBsZVJlY29yZCA9IHJlY29yZE5vZGUgPT4gY29uc3RydWN0UmVjb3JkKFxuICByZWNvcmROb2RlLFxuICBnZXRTYW1wbGVGaWVsZFZhbHVlLFxuICByZWNvcmROb2RlLnBhcmVudCgpLm5vZGVLZXkoKSxcbik7XG4iLCJleHBvcnQgZGVmYXVsdCAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6XG4gICAgICAgICAgICB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOlxuICAgICAgICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KTtcbiIsIlxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcbnZhciBpbml0ZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGluaXQgKCkge1xuICBpbml0ZWQgPSB0cnVlO1xuICB2YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbiAgfVxuXG4gIHJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxuICByZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgaWYgKCFpbml0ZWQpIHtcbiAgICBpbml0KCk7XG4gIH1cbiAgdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcbiAgLy8gaWYgdGhlcmUgYXJlIHR3byBwbGFjZWhvbGRlcnMsIHRoYW4gdGhlIHR3byBjaGFyYWN0ZXJzIGJlZm9yZSBpdFxuICAvLyByZXByZXNlbnQgb25lIGJ5dGVcbiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG4gIC8vIHRoaXMgaXMganVzdCBhIGNoZWFwIGhhY2sgdG8gbm90IGRvIGluZGV4T2YgdHdpY2VcbiAgcGxhY2VIb2xkZXJzID0gYjY0W2xlbiAtIDJdID09PSAnPScgPyAyIDogYjY0W2xlbiAtIDFdID09PSAnPScgPyAxIDogMFxuXG4gIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuICBhcnIgPSBuZXcgQXJyKGxlbiAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuXG5cbiAgdmFyIEwgPSAwXG5cbiAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsOyBpICs9IDQsIGogKz0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDE4KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfCByZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDMpXVxuICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW0wrK10gPSB0bXAgJiAweEZGXG4gIH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG4gICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKVxuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIGlmICghaW5pdGVkKSB7XG4gICAgaW5pdCgpO1xuICB9XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIlxuZXhwb3J0IGZ1bmN0aW9uIHJlYWQgKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG1cbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXNcbiAgfSBlbHNlIGlmIChlID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpXG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBNYXRoLnBvdygyLCBtTGVuKVxuICAgIGUgPSBlIC0gZUJpYXNcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtLCBjXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAodmFsdWUgKiBjIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG5cbmltcG9ydCAqIGFzIGJhc2U2NCBmcm9tICcuL2Jhc2U2NCdcbmltcG9ydCAqIGFzIGllZWU3NTQgZnJvbSAnLi9pZWVlNzU0J1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5J1xuXG5leHBvcnQgdmFyIElOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0cnVlXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbnZhciBfa01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuZXhwb3J0IHtfa01heExlbmd0aCBhcyBrTWF4TGVuZ3RofTtcbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgcmV0dXJuIHRydWU7XG4gIC8vIHJvbGx1cCBpc3N1ZXNcbiAgLy8gdHJ5IHtcbiAgLy8gICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgLy8gICBhcnIuX19wcm90b19fID0ge1xuICAvLyAgICAgX19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSxcbiAgLy8gICAgIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAvLyAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAvLyAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICAvLyB9IGNhdGNoIChlKSB7XG4gIC8vICAgcmV0dXJuIGZhbHNlXG4gIC8vIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAvLyAgIHZhbHVlOiBudWxsLFxuICAgIC8vICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgLy8gfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cbkJ1ZmZlci5pc0J1ZmZlciA9IGlzQnVmZmVyO1xuZnVuY3Rpb24gaW50ZXJuYWxJc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGEpIHx8ICFpbnRlcm5hbElzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIWludGVybmFsSXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKGludGVybmFsSXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gaW50ZXJuYWxJc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuXG4vLyB0aGUgZm9sbG93aW5nIGlzIGZyb20gaXMtYnVmZmVyLCBhbHNvIGJ5IEZlcm9zcyBBYm91a2hhZGlqZWggYW5kIHdpdGggc2FtZSBsaXNlbmNlXG4vLyBUaGUgX2lzQnVmZmVyIGNoZWNrIGlzIGZvciBTYWZhcmkgNS03IHN1cHBvcnQsIGJlY2F1c2UgaXQncyBtaXNzaW5nXG4vLyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLiBSZW1vdmUgdGhpcyBldmVudHVhbGx5XG5leHBvcnQgZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoISFvYmouX2lzQnVmZmVyIHx8IGlzRmFzdEJ1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopKVxufVxuXG5mdW5jdGlvbiBpc0Zhc3RCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Zhc3RCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7QnVmZmVyfSBmcm9tICdidWZmZXInO1xudmFyIGlzQnVmZmVyRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZ1xuICB8fCBmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgY2FzZSAnaGV4JzogY2FzZSAndXRmOCc6IGNhc2UgJ3V0Zi04JzogY2FzZSAnYXNjaWknOiBjYXNlICdiaW5hcnknOiBjYXNlICdiYXNlNjQnOiBjYXNlICd1Y3MyJzogY2FzZSAndWNzLTInOiBjYXNlICd1dGYxNmxlJzogY2FzZSAndXRmLTE2bGUnOiBjYXNlICdyYXcnOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcbiAgICAgICB9XG4gICAgIH1cblxuXG5mdW5jdGlvbiBhc3NlcnRFbmNvZGluZyhlbmNvZGluZykge1xuICBpZiAoZW5jb2RpbmcgJiYgIWlzQnVmZmVyRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB9XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy4gQ0VTVS04IGlzIGhhbmRsZWQgYXMgcGFydCBvZiB0aGUgVVRGLTggZW5jb2RpbmcuXG4vL1xuLy8gQFRPRE8gSGFuZGxpbmcgYWxsIGVuY29kaW5ncyBpbnNpZGUgYSBzaW5nbGUgb2JqZWN0IG1ha2VzIGl0IHZlcnkgZGlmZmljdWx0XG4vLyB0byByZWFzb24gYWJvdXQgdGhpcyBjb2RlLCBzbyBpdCBzaG91bGQgYmUgc3BsaXQgdXAgaW4gdGhlIGZ1dHVyZS5cbi8vIEBUT0RPIFRoZXJlIHNob3VsZCBiZSBhIHV0Zjgtc3RyaWN0IGVuY29kaW5nIHRoYXQgcmVqZWN0cyBpbnZhbGlkIFVURi04IGNvZGVcbi8vIHBvaW50cyBhcyB1c2VkIGJ5IENFU1UtOC5cbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSAoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCAnJyk7XG4gIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKTtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICAvLyBDRVNVLTggcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDMtYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIC8vIFVURi0xNiByZXByZXNlbnRzIGVhY2ggb2YgU3Vycm9nYXRlIFBhaXIgYnkgMi1ieXRlc1xuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMjtcbiAgICAgIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSB1dGYxNkRldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIC8vIEJhc2UtNjQgc3RvcmVzIDMgYnl0ZXMgaW4gNCBjaGFycywgYW5kIHBhZHMgdGhlIHJlbWFpbmRlci5cbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHBhc3NUaHJvdWdoV3JpdGU7XG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbm91Z2ggc3BhY2UgdG8gc3RvcmUgYWxsIGJ5dGVzIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4gVVRGLTggbmVlZHMgNFxuICAvLyBieXRlcywgYnV0IENFU1UtOCBtYXkgcmVxdWlyZSB1cCB0byA2ICgzIGJ5dGVzIHBlciBzdXJyb2dhdGUpLlxuICB0aGlzLmNoYXJCdWZmZXIgPSBuZXcgQnVmZmVyKDYpO1xuICAvLyBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXJyZW50IGluY29tcGxldGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIuXG4gIHRoaXMuY2hhclJlY2VpdmVkID0gMDtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJMZW5ndGggPSAwO1xufTtcblxuXG4vLyB3cml0ZSBkZWNvZGVzIHRoZSBnaXZlbiBidWZmZXIgYW5kIHJldHVybnMgaXQgYXMgSlMgc3RyaW5nIHRoYXQgaXNcbi8vIGd1YXJhbnRlZWQgdG8gbm90IGNvbnRhaW4gYW55IHBhcnRpYWwgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLiBBbnkgcGFydGlhbFxuLy8gY2hhcmFjdGVyIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBpcyBidWZmZXJlZCB1cCwgYW5kIHdpbGwgYmVcbi8vIHJldHVybmVkIHdoZW4gY2FsbGluZyB3cml0ZSBhZ2FpbiB3aXRoIHRoZSByZW1haW5pbmcgYnl0ZXMuXG4vL1xuLy8gTm90ZTogQ29udmVydGluZyBhIEJ1ZmZlciBjb250YWluaW5nIGFuIG9ycGhhbiBzdXJyb2dhdGUgdG8gYSBTdHJpbmdcbi8vIGN1cnJlbnRseSB3b3JrcywgYnV0IGNvbnZlcnRpbmcgYSBTdHJpbmcgdG8gYSBCdWZmZXIgKHZpYSBgbmV3IEJ1ZmZlcmAsIG9yXG4vLyBCdWZmZXIjd3JpdGUpIHdpbGwgcmVwbGFjZSBpbmNvbXBsZXRlIHN1cnJvZ2F0ZXMgd2l0aCB0aGUgdW5pY29kZVxuLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBTZWUgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjExNzMwMDkvIC5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciBjaGFyU3RyID0gJyc7XG4gIC8vIGlmIG91ciBsYXN0IHdyaXRlIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBtdWx0aWJ5dGUgY2hhcmFjdGVyXG4gIHdoaWxlICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgcmVtYWluaW5nIGJ5dGVzIHRoaXMgYnVmZmVyIGhhcyB0byBvZmZlciBmb3IgdGhpcyBjaGFyXG4gICAgdmFyIGF2YWlsYWJsZSA9IChidWZmZXIubGVuZ3RoID49IHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkKSA/XG4gICAgICAgIHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkIDpcbiAgICAgICAgYnVmZmVyLmxlbmd0aDtcblxuICAgIC8vIGFkZCB0aGUgbmV3IGJ5dGVzIHRvIHRoZSBjaGFyIGJ1ZmZlclxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgdGhpcy5jaGFyUmVjZWl2ZWQsIDAsIGF2YWlsYWJsZSk7XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgKz0gYXZhaWxhYmxlO1xuXG4gICAgaWYgKHRoaXMuY2hhclJlY2VpdmVkIDwgdGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgICAvLyBzdGlsbCBub3QgZW5vdWdoIGNoYXJzIGluIHRoaXMgYnVmZmVyPyB3YWl0IGZvciBtb3JlIC4uLlxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBieXRlcyBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlclxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShhdmFpbGFibGUsIGJ1ZmZlci5sZW5ndGgpO1xuXG4gICAgLy8gZ2V0IHRoZSBjaGFyYWN0ZXIgdGhhdCB3YXMgc3BsaXRcbiAgICBjaGFyU3RyID0gdGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsIHRoaXMuY2hhckxlbmd0aCkudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG5cbiAgICAvLyBDRVNVLTg6IGxlYWQgc3Vycm9nYXRlIChEODAwLURCRkYpIGlzIGFsc28gdGhlIGluY29tcGxldGUgY2hhcmFjdGVyXG4gICAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGNoYXJTdHIubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCArPSB0aGlzLnN1cnJvZ2F0ZVNpemU7XG4gICAgICBjaGFyU3RyID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgPSB0aGlzLmNoYXJMZW5ndGggPSAwO1xuXG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgYnl0ZXMgaW4gdGhpcyBidWZmZXIsIGp1c3QgZW1pdCBvdXIgY2hhclxuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY2hhclN0cjtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgYW5kIHNldCBjaGFyTGVuZ3RoIC8gY2hhclJlY2VpdmVkXG4gIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKTtcblxuICB2YXIgZW5kID0gYnVmZmVyLmxlbmd0aDtcbiAgaWYgKHRoaXMuY2hhckxlbmd0aCkge1xuICAgIC8vIGJ1ZmZlciB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgYnl0ZXMgd2UgZ290XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQsIGVuZCk7XG4gICAgZW5kIC09IHRoaXMuY2hhclJlY2VpdmVkO1xuICB9XG5cbiAgY2hhclN0ciArPSBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgZW5kKTtcblxuICB2YXIgZW5kID0gY2hhclN0ci5sZW5ndGggLSAxO1xuICB2YXIgY2hhckNvZGUgPSBjaGFyU3RyLmNoYXJDb2RlQXQoZW5kKTtcbiAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICBpZiAoY2hhckNvZGUgPj0gMHhEODAwICYmIGNoYXJDb2RlIDw9IDB4REJGRikge1xuICAgIHZhciBzaXplID0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgIHRoaXMuY2hhckxlbmd0aCArPSBzaXplO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IHNpemU7XG4gICAgdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCBzaXplLCAwLCBzaXplKTtcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIDAsIDAsIHNpemUpO1xuICAgIHJldHVybiBjaGFyU3RyLnN1YnN0cmluZygwLCBlbmQpO1xuICB9XG5cbiAgLy8gb3IganVzdCBlbWl0IHRoZSBjaGFyU3RyXG4gIHJldHVybiBjaGFyU3RyO1xufTtcblxuLy8gZGV0ZWN0SW5jb21wbGV0ZUNoYXIgZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIFVURi04IGNoYXJhY3RlciBhdFxuLy8gdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiBJZiBzbywgaXQgc2V0cyB0aGlzLmNoYXJMZW5ndGggdG8gdGhlIGJ5dGVcbi8vIGxlbmd0aCB0aGF0IGNoYXJhY3RlciwgYW5kIHNldHMgdGhpcy5jaGFyUmVjZWl2ZWQgdG8gdGhlIG51bWJlciBvZiBieXRlc1xuLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGlzIGNoYXJhY3Rlci5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmRldGVjdEluY29tcGxldGVDaGFyID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB3ZSBoYXZlIHRvIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhpcyBidWZmZXJcbiAgdmFyIGkgPSAoYnVmZmVyLmxlbmd0aCA+PSAzKSA/IDMgOiBidWZmZXIubGVuZ3RoO1xuXG4gIC8vIEZpZ3VyZSBvdXQgaWYgb25lIG9mIHRoZSBsYXN0IGkgYnl0ZXMgb2Ygb3VyIGJ1ZmZlciBhbm5vdW5jZXMgYW5cbiAgLy8gaW5jb21wbGV0ZSBjaGFyLlxuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSBpXTtcblxuICAgIC8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04I0Rlc2NyaXB0aW9uXG5cbiAgICAvLyAxMTBYWFhYWFxuICAgIGlmIChpID09IDEgJiYgYyA+PiA1ID09IDB4MDYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDI7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTEwWFhYWFxuICAgIGlmIChpIDw9IDIgJiYgYyA+PiA0ID09IDB4MEUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTExMFhYWFxuICAgIGlmIChpIDw9IDMgJiYgYyA+PiAzID09IDB4MUUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBpO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciByZXMgPSAnJztcbiAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoKVxuICAgIHJlcyA9IHRoaXMud3JpdGUoYnVmZmVyKTtcblxuICBpZiAodGhpcy5jaGFyUmVjZWl2ZWQpIHtcbiAgICB2YXIgY3IgPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgICB2YXIgYnVmID0gdGhpcy5jaGFyQnVmZmVyO1xuICAgIHZhciBlbmMgPSB0aGlzLmVuY29kaW5nO1xuICAgIHJlcyArPSBidWYuc2xpY2UoMCwgY3IpLnRvU3RyaW5nKGVuYyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gcGFzc1Rocm91Z2hXcml0ZShidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpIHtcbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBidWZmZXIubGVuZ3RoICUgMjtcbiAgdGhpcy5jaGFyTGVuZ3RoID0gdGhpcy5jaGFyUmVjZWl2ZWQgPyAyIDogMDtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDM7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMyA6IDA7XG59XG4iLCJpbXBvcnQge2dlbmVyYXRlU2NoZW1hfSBmcm9tIFwiLi9pbmRleFNjaGVtYUNyZWF0b3JcIjtcbmltcG9ydCB7IGhhcywgaXNTdHJpbmcsIGRpZmZlcmVuY2UsIGZpbmQgfSBmcm9tIFwibG9kYXNoL2ZwXCI7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwic2FmZS1idWZmZXJcIjtcbmltcG9ydCB7U3RyaW5nRGVjb2Rlcn0gZnJvbSBcInN0cmluZ19kZWNvZGVyXCI7XG5pbXBvcnQge2dldFR5cGV9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgaXNTb21ldGhpbmcgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5cbmV4cG9ydCBjb25zdCBCVUZGRVJfTUFYX0JZVEVTID0gNTI0Mjg4OyAvLyAwLjVNYlxuXG5leHBvcnQgY29uc3QgQ09OVElOVUVfUkVBRElOR19SRUNPUkRTID0gXCJDT05USU5VRV9SRUFESU5HXCI7XG5leHBvcnQgY29uc3QgUkVBRF9SRU1BSU5JTkdfVEVYVCA9IFwiUkVBRF9SRU1BSU5JTkdcIjtcbmV4cG9ydCBjb25zdCBDQU5DRUxfUkVBRCA9IFwiQ0FOQ0VMXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRJbmRleFdyaXRlciA9IChoaWVyYXJjaHksIGluZGV4Tm9kZSwgcmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFtLCBlbmQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBnZW5lcmF0ZVNjaGVtYShoaWVyYXJjaHksIGluZGV4Tm9kZSk7XG5cbiAgICByZXR1cm4gKHtcbiAgICAgICAgcmVhZDogcmVhZChyZWFkYWJsZVN0cmVhbSwgc2NoZW1hKSxcbiAgICAgICAgdXBkYXRlSW5kZXg6IHVwZGF0ZUluZGV4KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSwgc2NoZW1hLCBlbmQpXG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZXhSZWFkZXIgPSAoaGllcmFyY2h5LCBpbmRleE5vZGUsIHJlYWRhYmxlU3RyZWFtKSA9PiBcbiAgICByZWFkKFxuICAgICAgICByZWFkYWJsZVN0cmVhbSwgXG4gICAgICAgIGdlbmVyYXRlU2NoZW1hKGhpZXJhcmNoeSwgaW5kZXhOb2RlKVxuICAgICk7XG5cbmNvbnN0IHVwZGF0ZUluZGV4ID0gKHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSwgc2NoZW1hKSA9PiBhc3luYyAoaXRlbXNUb1dyaXRlLCBrZXlzVG9SZW1vdmUpID0+IHtcbiAgICBjb25zdCB3cml0ZSA9IG5ld091dHB1dFdyaXRlcihCVUZGRVJfTUFYX0JZVEVTLCB3cml0YWJsZVN0cmVhbSk7XG4gICAgY29uc3Qgd3JpdHRlbkl0ZW1zID0gW107IFxuICAgIGF3YWl0IHJlYWQocmVhZGFibGVTdHJlYW0sIHNjaGVtYSkoXG4gICAgICAgIGFzeW5jIGluZGV4ZWRJdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBmaW5kKGkgPT4gaW5kZXhlZEl0ZW0ua2V5ID09PSBpLmtleSkoaXRlbXNUb1dyaXRlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBmaW5kKGsgPT4gaW5kZXhlZEl0ZW0ua2V5ID09PSBrKShrZXlzVG9SZW1vdmUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihpc1NvbWV0aGluZyhyZW1vdmVkKSkgXG4gICAgICAgICAgICAgICAgcmV0dXJuIENPTlRJTlVFX1JFQURJTkdfUkVDT1JEUztcblxuICAgICAgICAgICAgaWYoaXNTb21ldGhpbmcodXBkYXRlZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkSXRlbSA9ICBzZXJpYWxpemVJdGVtKHNjaGVtYSwgdXBkYXRlZCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGUoc2VyaWFsaXplZEl0ZW0pO1xuICAgICAgICAgICAgICAgIHdyaXR0ZW5JdGVtcy5wdXNoKHVwZGF0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZShcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplSXRlbShzY2hlbWEsIGluZGV4ZWRJdGVtKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IFxuXG4gICAgICAgICAgICByZXR1cm4gQ09OVElOVUVfUkVBRElOR19SRUNPUkRTO1xuXG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIHRleHQgPT4gYXdhaXQgd3JpdGUodGV4dClcbiAgICApO1xuXG4gICAgaWYod3JpdHRlbkl0ZW1zLmxlbmd0aCAhPT0gaXRlbXNUb1dyaXRlLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB0b0FkZCA9IGRpZmZlcmVuY2UoaXRlbXNUb1dyaXRlLCB3cml0dGVuSXRlbXMpO1xuICAgICAgICBmb3IobGV0IGFkZGVkIG9mIHRvQWRkKSB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZShcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVJdGVtKHNjaGVtYSwgYWRkZWQpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmKHdyaXR0ZW5JdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gcG90ZW50aWFsbHkgYXJlIG5vIHJlY29yZHNcbiAgICAgICAgYXdhaXQgd3JpdGUoXCJcIik7XG4gICAgfVxuXG4gICAgYXdhaXQgd3JpdGUoKTtcbiAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS5lbmQoKTtcbn07XG5cbmNvbnN0IHJlYWQgPSAocmVhZGFibGVTdHJlYW0sIHNjaGVtYSkgPT4gYXN5bmMgKG9uR2V0SXRlbSwgb25HZXRUZXh0KSA9PiB7XG4gICAgY29uc3QgcmVhZElucHV0ID0gbmV3SW5wdXRSZWFkZXIocmVhZGFibGVTdHJlYW0pO1xuICAgIGxldCB0ZXh0ID0gYXdhaXQgcmVhZElucHV0KCk7XG4gICAgbGV0IHN0YXR1cyA9IENPTlRJTlVFX1JFQURJTkdfUkVDT1JEUztcbiAgICB3aGlsZSh0ZXh0Lmxlbmd0aCA+IDApIHtcblxuICAgICAgICBpZihzdGF0dXMgPT09IFJFQURfUkVNQUlOSU5HX1RFWFQpIHtcbiAgICAgICAgICAgIGF3YWl0IG9uR2V0VGV4dCh0ZXh0KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoc3RhdHVzID09PSBDQU5DRUxfUkVBRCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvd1RleHQgPSBcIlwiO1xuICAgICAgICBsZXQgY3VycmVudENoYXJJbmRleD0wO1xuICAgICAgICBmb3IobGV0IGN1cnJlbnRDaGFyIG9mIHRleHQpIHtcbiAgICAgICAgICAgIHJvd1RleHQgKz0gY3VycmVudENoYXI7XG4gICAgICAgICAgICBpZihjdXJyZW50Q2hhciA9PT0gXCJcXHJcIikge1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9IGF3YWl0IG9uR2V0SXRlbShcbiAgICAgICAgICAgICAgICAgICAgZGVzZXJpYWxpemVSb3coc2NoZW1hLCByb3dUZXh0KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcm93VGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYoc3RhdHVzID09PSBSRUFEX1JFTUFJTklOR19URVhUKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRDaGFySW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGN1cnJlbnRDaGFySW5kZXggPCB0ZXh0Lmxlbmd0aCAtMSkge1xuICAgICAgICAgICAgYXdhaXQgb25HZXRUZXh0KHRleHQuc3Vic3RyaW5nKGN1cnJlbnRDaGFySW5kZXggKyAxKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ID0gYXdhaXQgcmVhZElucHV0KCk7XG4gICAgfVxuXG4gICAgYXdhaXQgcmVhZGFibGVTdHJlYW0uZGVzdHJveSgpO1xuXG59O1xuXG5jb25zdCBuZXdPdXRwdXRXcml0ZXIgPSAoZmx1c2hCb3VuZGFyeSwgd3JpdGFibGVTdHJlYW0pID0+IHtcbiAgICBcbiAgICBsZXQgY3VycmVudEJ1ZmZlciA9IG51bGw7XG5cbiAgICByZXR1cm4gYXN5bmMgKHRleHQpID0+IHtcblxuICAgICAgICBpZihpc1N0cmluZyh0ZXh0KSAmJiBjdXJyZW50QnVmZmVyID09PSBudWxsKVxuICAgICAgICAgICAgY3VycmVudEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRleHQsIFwidXRmOFwiKTtcbiAgICAgICAgZWxzZSBpZihpc1N0cmluZyh0ZXh0KSlcbiAgICAgICAgICAgIGN1cnJlbnRCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgICAgICAgICBjdXJyZW50QnVmZmVyLFxuICAgICAgICAgICAgICAgIEJ1ZmZlci5mcm9tKHRleHQsIFwidXRmOFwiKVxuICAgICAgICAgICAgXSk7XG4gICAgICAgIFxuICAgICAgICBpZihjdXJyZW50QnVmZmVyICE9PSBudWxsICYmXG4gICAgICAgICAgICAoY3VycmVudEJ1ZmZlci5sZW5ndGggPiBmbHVzaEJvdW5kYXJ5XG4gICAgICAgICAgICAgfHwgIWlzU3RyaW5nKHRleHQpKSkge1xuXG4gICAgICAgICAgICBhd2FpdCB3cml0YWJsZVN0cmVhbS53cml0ZShjdXJyZW50QnVmZmVyKTtcbiAgICAgICAgICAgIGN1cnJlbnRCdWZmZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuY29uc3QgbmV3SW5wdXRSZWFkZXIgPSAocmVhZGFibGVTdHJlYW0pID0+IHtcblxuICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcigndXRmOCcpO1xuICAgIGxldCByZW1haW5pbmdCeXRlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcblxuICAgICAgICBsZXQgbmV4dEJ5dGVzQnVmZmVyID0gYXdhaXQgcmVhZGFibGVTdHJlYW0ucmVhZChCVUZGRVJfTUFYX0JZVEVTKTtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nQnVmZmVyID0gQnVmZmVyLmZyb20ocmVtYWluaW5nQnl0ZXMpO1xuXG4gICAgICAgIGlmKCFuZXh0Qnl0ZXNCdWZmZXIpIG5leHRCeXRlc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKFtdKTtcblxuICAgICAgICBjb25zdCBtb3JlVG9SZWFkID0gbmV4dEJ5dGVzQnVmZmVyLmxlbmd0aCA9PT0gQlVGRkVSX01BWF9CWVRFUztcblxuICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFxuICAgICAgICAgICAgW3JlbWFpbmluZ0J1ZmZlciwgbmV4dEJ5dGVzQnVmZmVyXSxcbiAgICAgICAgICAgIHJlbWFpbmluZ0J1ZmZlci5sZW5ndGggKyBuZXh0Qnl0ZXNCdWZmZXIubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCB0ZXh0ID0gZGVjb2Rlci53cml0ZShidWZmZXIpO1xuICAgICAgICByZW1haW5pbmdCeXRlcyA9IGRlY29kZXIuZW5kKGJ1ZmZlcik7XG5cbiAgICAgICAgaWYoIW1vcmVUb1JlYWQgJiYgcmVtYWluaW5nQnl0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gaWYgZm9yIGFueSByZWFzb24sIHdlIGhhdmUgcmVtYWluaW5nIGJ5dGVzIGF0IHRoZSBlbmRcbiAgICAgICAgICAgIC8vIG9mIHRoZSBzdHJlYW0sIGp1c3QgZGlzY2FyZCAtIGRvbnQgc2VlIHdoeSB0aGlzIHNob3VsZFxuICAgICAgICAgICAgLy8gZXZlciBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLCBpdCBjb3VsZCBjYXVzZSBhIHN0YWNrIG92ZXJmbG93XG4gICAgICAgICAgICByZW1haW5pbmdCeXRlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfTtcbn07XG5cbmNvbnN0IGRlc2VyaWFsaXplUm93ID0gKHNjaGVtYSwgcm93VGV4dCkgPT4ge1xuICAgIGxldCBjdXJyZW50UHJvcEluZGV4ID0gMDtcbiAgICBsZXQgY3VycmVudENoYXJJbmRleCA9IDA7XG4gICAgbGV0IGN1cnJlbnRWYWx1ZVRleHQgPSBcIlwiO1xuICAgIGxldCBpc0VzY2FwZWQgPSBmYWxzZTtcbiAgICBjb25zdCBpdGVtID0ge307XG5cbiAgICBjb25zdCBzZXRDdXJyZW50UHJvcCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFByb3AgPSBzY2hlbWFbY3VycmVudFByb3BJbmRleF07XG4gICAgICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKGN1cnJlbnRQcm9wLnR5cGUpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGN1cnJlbnRWYWx1ZVRleHQgPT09IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IHR5cGUuZ2V0RGVmYXVsdFZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IHR5cGUuc2FmZVBhcnNlVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZVRleHQpO1xuICAgICAgICBpdGVtW2N1cnJlbnRQcm9wLm5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgICBcbiAgICB3aGlsZShjdXJyZW50UHJvcEluZGV4IDwgc2NoZW1hLmxlbmd0aCkge1xuXG4gICAgICAgIGlmKGN1cnJlbnRDaGFySW5kZXggPCByb3dUZXh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudENoYXIgPSByb3dUZXh0W2N1cnJlbnRDaGFySW5kZXhdO1xuICAgICAgICAgICAgaWYoaXNFc2NhcGVkKSB7XG4gICAgICAgICAgICAgICAgaWYoY3VycmVudENoYXIgPT09IFwiclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZVRleHQgKz0gXCJcXHJcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWVUZXh0ICs9IGN1cnJlbnRDaGFyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0VzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYoY3VycmVudENoYXIgPT09IFwiLFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRQcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZVRleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcEluZGV4Kys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKGN1cnJlbnRDaGFyID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICBpc0VzY2FwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZVRleHQgKz0gY3VycmVudENoYXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudENoYXJJbmRleCsrOyBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZVRleHQgPSBcIlwiO1xuICAgICAgICAgICAgc2V0Q3VycmVudFByb3AoKTtcbiAgICAgICAgICAgIGN1cnJlbnRQcm9wSW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZUl0ZW0gPSAoc2NoZW1hLCBpdGVtKSAgPT4ge1xuXG4gICAgbGV0IHJvd1RleHQgPSBcIlwiXG5cbiAgICBmb3IobGV0IHByb3Agb2Ygc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKHByb3AudHlwZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaGFzKHByb3AubmFtZSkoaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW1bcHJvcC5uYW1lXVxuICAgICAgICAgICAgICAgICAgICAgIDogdHlwZS5nZXREZWZhdWx0VmFsdWUoKVxuICAgICAgICBcbiAgICAgICAgY29uc3QgdmFsU3RyID0gdHlwZS5zdHJpbmdpZnkodmFsdWUpO1xuXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB2YWxTdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDaGFyID0gdmFsU3RyW2ldO1xuICAgICAgICAgICAgaWYoY3VycmVudENoYXIgPT09IFwiLFwiIFxuICAgICAgICAgICAgICAgfHwgY3VycmVudENoYXIgPT09IFwiXFxyXCIgXG4gICAgICAgICAgICAgICB8fCBjdXJyZW50Q2hhciA9PT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICByb3dUZXh0ICs9IFwiXFxcXFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihjdXJyZW50Q2hhciA9PT0gXCJcXHJcIikge1xuICAgICAgICAgICAgICAgIHJvd1RleHQgKz0gXCJyXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd1RleHQgKz0gY3VycmVudENoYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByb3dUZXh0ICs9IFwiLFwiO1xuICAgIH1cblxuICAgIHJvd1RleHQgKz0gXCJcXHJcIjtcbiAgICByZXR1cm4gcm93VGV4dDtcbn07IiwiaW1wb3J0IGx1bnIgZnJvbSAnbHVucic7XG5pbXBvcnQge1xuICBnZXRIYXNoQ29kZSxcbiAgam9pbktleVxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgZ2V0QWN0dWFsS2V5T2ZQYXJlbnQsXG4gIGlzR2xvYmFsSW5kZXgsXG59IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQge3Byb21pc2VSZWFkYWJsZVN0cmVhbX0gZnJvbSBcIi4vcHJvbWlzZVJlYWRhYmxlU3RyZWFtXCI7XG5pbXBvcnQgeyBjcmVhdGVJbmRleEZpbGUgfSBmcm9tICcuL3NoYXJkaW5nJztcbmltcG9ydCB7IGdlbmVyYXRlU2NoZW1hIH0gZnJvbSAnLi9pbmRleFNjaGVtYUNyZWF0b3InO1xuaW1wb3J0IHsgZ2V0SW5kZXhSZWFkZXIsIENPTlRJTlVFX1JFQURJTkdfUkVDT1JEUyB9IGZyb20gJy4vc2VyaWFsaXplcic7XG5cbmV4cG9ydCBjb25zdCByZWFkSW5kZXggPSBhc3luYyAoaGllcmFyY2h5LCBkYXRhc3RvcmUsIGluZGV4LCBpbmRleGVkRGF0YUtleSkgPT4ge1xuICBjb25zdCByZWNvcmRzID0gW107XG4gIGNvbnN0IGRvUmVhZCA9IGl0ZXJhdGVJbmRleChcbiAgICAgICAgYXN5bmMgaXRlbSA9PiB7XG4gICAgICByZWNvcmRzLnB1c2goaXRlbSk7XG4gICAgICByZXR1cm4gQ09OVElOVUVfUkVBRElOR19SRUNPUkRTO1xuICAgIH0sXG4gICAgICAgIGFzeW5jICgpID0+IHJlY29yZHNcbiAgKTtcblxuICByZXR1cm4gYXdhaXQgZG9SZWFkKGhpZXJhcmNoeSwgZGF0YXN0b3JlLCBpbmRleCwgaW5kZXhlZERhdGFLZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaEluZGV4ID0gYXN5bmMgKGhpZXJhcmNoeSwgZGF0YXN0b3JlLCBpbmRleCwgaW5kZXhlZERhdGFLZXksIHNlYXJjaFBocmFzZSkgPT4ge1xuICBjb25zdCByZWNvcmRzID0gW107XG4gIGNvbnN0IHNjaGVtYSA9IGdlbmVyYXRlU2NoZW1hKGhpZXJhcmNoeSwgaW5kZXgpO1xuICBjb25zdCBkb1JlYWQgPSBpdGVyYXRlSW5kZXgoXG4gICAgICAgIGFzeW5jIGl0ZW0gPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbHVucihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVmKCdrZXknKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBzY2hlbWEpIHtcbiAgICAgICAgICB0aGlzLmZpZWxkKGZpZWxkLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gaWR4LnNlYXJjaChzZWFyY2hQaHJhc2UpO1xuICAgICAgaWYgKHNlYXJjaFJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGl0ZW0uX3NlYXJjaFJlc3VsdCA9IHNlYXJjaFJlc3VsdHNbMF07XG4gICAgICAgIHJlY29yZHMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBDT05USU5VRV9SRUFESU5HX1JFQ09SRFM7XG4gICAgfSxcbiAgICAgICAgYXN5bmMgKCkgPT4gcmVjb3Jkc1xuICApO1xuXG4gIHJldHVybiBhd2FpdCBkb1JlYWQoaGllcmFyY2h5LCBkYXRhc3RvcmUsIGluZGV4LCBpbmRleGVkRGF0YUtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZXhlZERhdGFLZXlfZnJvbUluZGV4S2V5ID0gKGluZGV4S2V5KSA9PiBcbiAgYCR7aW5kZXhLZXl9JHtpbmRleEtleS5lbmRzV2l0aCgnLmNzdicpID8gJycgOiAnLmNzdid9YDtcblxuZXhwb3J0IGNvbnN0IHVuaXF1ZUluZGV4TmFtZSA9IGluZGV4ID0+IGBpZHhfJHtcbiAgZ2V0SGFzaENvZGUoYCR7aW5kZXguZmlsdGVyfSR7aW5kZXgubWFwfWApXG59LmNzdmA7XG5cbmV4cG9ydCBjb25zdCBnZXRJbmRleGVkRGF0YUtleSA9IChkZWNlbmRhbnRLZXksIGluZGV4Tm9kZSkgPT4ge1xuICBpZiAoaXNHbG9iYWxJbmRleChpbmRleE5vZGUpKSB7IHJldHVybiBgJHtpbmRleE5vZGUubm9kZUtleSgpfS5jc3ZgOyB9XG5cbiAgY29uc3QgaW5kZXhlZERhdGFQYXJlbnRLZXkgPSBnZXRBY3R1YWxLZXlPZlBhcmVudChcbiAgICBpbmRleE5vZGUucGFyZW50KCkubm9kZUtleSgpLFxuICAgIGRlY2VuZGFudEtleSxcbiAgKTtcblxuICBjb25zdCBpbmRleE5hbWUgPSBpbmRleE5vZGUubmFtZVxuICAgID8gYCR7aW5kZXhOb2RlLm5hbWV9LmNzdmBcbiAgICA6IHVuaXF1ZUluZGV4TmFtZShpbmRleE5vZGUpO1xuXG4gIHJldHVybiBqb2luS2V5KFxuICAgIGluZGV4ZWREYXRhUGFyZW50S2V5LFxuICAgIGluZGV4TmFtZSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpdGVyYXRlSW5kZXggPSAob25HZXRJdGVtLCBnZXRGaW5hbFJlc3VsdCkgPT4gYXN5bmMgKGhpZXJhcmNoeSwgZGF0YXN0b3JlLCBpbmRleCwgaW5kZXhlZERhdGFLZXkpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZWFkYWJsZVN0cmVhbSA9IHByb21pc2VSZWFkYWJsZVN0cmVhbShcbiAgICAgICAgYXdhaXQgZGF0YXN0b3JlLnJlYWRhYmxlRmlsZVN0cmVhbShpbmRleGVkRGF0YUtleSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVhZCA9IGdldEluZGV4UmVhZGVyKGhpZXJhcmNoeSwgaW5kZXgsIHJlYWRhYmxlU3RyZWFtKTtcbiAgICBhd2FpdCByZWFkKG9uR2V0SXRlbSk7XG4gICAgcmV0dXJuIGdldEZpbmFsUmVzdWx0KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYXdhaXQgZGF0YXN0b3JlLmV4aXN0cyhpbmRleGVkRGF0YUtleSkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGNyZWF0ZUluZGV4RmlsZShcbiAgICAgICAgZGF0YXN0b3JlLFxuICAgICAgICBpbmRleGVkRGF0YUtleSxcbiAgICAgICAgaW5kZXgsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn07XG4iLCJpbXBvcnQgeyBmbGF0dGVuLCBtZXJnZSB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge1xuICBzYWZlS2V5LCBhcGlXcmFwcGVyLCAkLFxuICBldmVudHMsIGlzTm9uRW1wdHlTdHJpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyByZWFkSW5kZXgsIHNlYXJjaEluZGV4IH0gZnJvbSAnLi4vaW5kZXhpbmcvcmVhZCc7XG5pbXBvcnQge1xuICBnZXRVbnNoYXJkZWRJbmRleERhdGFLZXksXG4gIGdldFNoYXJkS2V5c0luUmFuZ2UsXG59IGZyb20gJy4uL2luZGV4aW5nL3NoYXJkaW5nJztcbmltcG9ydCB7XG4gIGdldEV4YWN0Tm9kZUZvclBhdGgsIGlzSW5kZXgsXG4gIGlzU2hhcmRlZEluZGV4LFxufSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4uL2F1dGhBcGkvcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgbGlzdEl0ZW1zID0gYXBwID0+IGFzeW5jIChpbmRleEtleSwgb3B0aW9ucykgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuaW5kZXhBcGkubGlzdEl0ZW1zLFxuICBwZXJtaXNzaW9uLnJlYWRJbmRleC5pc0F1dGhvcml6ZWQoaW5kZXhLZXkpLFxuICB7IGluZGV4S2V5LCBvcHRpb25zIH0sXG4gIF9saXN0SXRlbXMsIGFwcCwgaW5kZXhLZXksIG9wdGlvbnMsXG4pO1xuXG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHsgcmFuZ2VTdGFydFBhcmFtczogbnVsbCwgcmFuZ2VFbmRQYXJhbXM6IG51bGwsIHNlYXJjaFBocmFzZTogbnVsbCB9O1xuXG5jb25zdCBfbGlzdEl0ZW1zID0gYXN5bmMgKGFwcCwgaW5kZXhLZXksIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucykgPT4ge1xuICBjb25zdCB7IHNlYXJjaFBocmFzZSwgcmFuZ2VTdGFydFBhcmFtcywgcmFuZ2VFbmRQYXJhbXMgfSA9ICQoe30sIFtcbiAgICBtZXJnZShvcHRpb25zKSxcbiAgICBtZXJnZShkZWZhdWx0T3B0aW9ucyksXG4gIF0pO1xuXG4gIGNvbnN0IGdldEl0ZW1zID0gYXN5bmMga2V5ID0+IChpc05vbkVtcHR5U3RyaW5nKHNlYXJjaFBocmFzZSlcbiAgICA/IGF3YWl0IHNlYXJjaEluZGV4KFxuICAgICAgYXBwLmhpZXJhcmNoeSxcbiAgICAgIGFwcC5kYXRhc3RvcmUsXG4gICAgICBpbmRleE5vZGUsXG4gICAgICBrZXksXG4gICAgICBzZWFyY2hQaHJhc2UsXG4gICAgKVxuICAgIDogYXdhaXQgcmVhZEluZGV4KFxuICAgICAgYXBwLmhpZXJhcmNoeSxcbiAgICAgIGFwcC5kYXRhc3RvcmUsXG4gICAgICBpbmRleE5vZGUsXG4gICAgICBrZXksXG4gICAgKSk7XG5cbiAgaW5kZXhLZXkgPSBzYWZlS2V5KGluZGV4S2V5KTtcbiAgY29uc3QgaW5kZXhOb2RlID0gZ2V0RXhhY3ROb2RlRm9yUGF0aChhcHAuaGllcmFyY2h5KShpbmRleEtleSk7XG5cbiAgaWYgKCFpc0luZGV4KGluZGV4Tm9kZSkpIHsgdGhyb3cgbmV3IEVycm9yKCdzdXBwbGllZCBrZXkgaXMgbm90IGFuIGluZGV4Jyk7IH1cblxuICBpZiAoaXNTaGFyZGVkSW5kZXgoaW5kZXhOb2RlKSkge1xuICAgIGNvbnN0IHNoYXJkS2V5cyA9IGF3YWl0IGdldFNoYXJkS2V5c0luUmFuZ2UoXG4gICAgICBhcHAsIGluZGV4S2V5LCByYW5nZVN0YXJ0UGFyYW1zLCByYW5nZUVuZFBhcmFtcyxcbiAgICApO1xuICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBrIG9mIHNoYXJkS2V5cykge1xuICAgICAgaXRlbXMucHVzaChhd2FpdCBnZXRJdGVtcyhrKSk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0dGVuKGl0ZW1zKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgZ2V0SXRlbXMoXG4gICAgZ2V0VW5zaGFyZGVkSW5kZXhEYXRhS2V5KGluZGV4S2V5KSxcbiAgKTtcbn07XG4iLCJpbXBvcnQgeyBoYXMsIHNvbWUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwLCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge1xuICBnZXRFeGFjdE5vZGVGb3JQYXRoLFxuICBmaW5kRmllbGQsIGdldE5vZGUsIGlzR2xvYmFsSW5kZXgsXG59IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyBsaXN0SXRlbXMgfSBmcm9tICcuLi9pbmRleEFwaS9saXN0SXRlbXMnO1xuaW1wb3J0IHtcbiAgJCwgYXBpV3JhcHBlclN5bmMsIGV2ZW50cyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldEluZGV4S2V5X0Jhc2VkT25EZWNlbmRhbnQgfSBmcm9tICcuLi9pbmRleGluZy9zaGFyZGluZyc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZXh0ID0gYXBwID0+IHJlY29yZEtleSA9PiBhcGlXcmFwcGVyU3luYyhcbiAgYXBwLFxuICBldmVudHMucmVjb3JkQXBpLmdldENvbnRleHQsXG4gIHBlcm1pc3Npb24ucmVhZFJlY29yZC5pc0F1dGhvcml6ZWQocmVjb3JkS2V5KSxcbiAgeyByZWNvcmRLZXkgfSxcbiAgX2dldENvbnRleHQsIGFwcCwgcmVjb3JkS2V5LFxuKTtcblxuZXhwb3J0IGNvbnN0IF9nZXRDb250ZXh0ID0gKGFwcCwgcmVjb3JkS2V5KSA9PiB7XG4gIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKHJlY29yZEtleSk7XG5cbiAgY29uc3QgY2FjaGVkUmVmZXJlbmNlSW5kZXhlcyA9IHt9O1xuXG4gIGNvbnN0IGxhenlMb2FkUmVmZXJlbmNlSW5kZXggPSBhc3luYyAodHlwZU9wdGlvbnMpID0+IHtcbiAgICBpZiAoIWhhcyhjYWNoZWRSZWZlcmVuY2VJbmRleGVzLCB0eXBlT3B0aW9ucy5pbmRleE5vZGVLZXkpKSB7XG4gICAgICBjYWNoZWRSZWZlcmVuY2VJbmRleGVzW3R5cGVPcHRpb25zLmluZGV4Tm9kZUtleV0gPSB7XG4gICAgICAgIHR5cGVPcHRpb25zLFxuICAgICAgICBkYXRhOiBhd2FpdCByZWFkUmVmZXJlbmNlSW5kZXgoXG4gICAgICAgICAgYXBwLCByZWNvcmRLZXksIHR5cGVPcHRpb25zLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGVkUmVmZXJlbmNlSW5kZXhlc1t0eXBlT3B0aW9ucy5pbmRleE5vZGVLZXldO1xuICB9O1xuXG4gIGNvbnN0IGdldFR5cGVPcHRpb25zID0gdHlwZU9wdGlvbnNfb3JfZmllbGROYW1lID0+IChpc1N0cmluZyh0eXBlT3B0aW9uc19vcl9maWVsZE5hbWUpXG4gICAgPyBmaW5kRmllbGQocmVjb3JkTm9kZSwgdHlwZU9wdGlvbnNfb3JfZmllbGROYW1lKVxuICAgICAgLnR5cGVPcHRpb25zXG4gICAgOiB0eXBlT3B0aW9uc19vcl9maWVsZE5hbWUpO1xuXG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlRXhpc3RzOiBhc3luYyAodHlwZU9wdGlvbnNfb3JfZmllbGROYW1lLCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVPcHRpb25zID0gZ2V0VHlwZU9wdGlvbnModHlwZU9wdGlvbnNfb3JfZmllbGROYW1lKTtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgbGF6eUxvYWRSZWZlcmVuY2VJbmRleCh0eXBlT3B0aW9ucyk7XG4gICAgICByZXR1cm4gc29tZShkYXRhLCBpID0+IGkua2V5ID09PSBrZXkpO1xuICAgIH0sXG4gICAgcmVmZXJlbmNlT3B0aW9uczogYXN5bmMgKHR5cGVPcHRpb25zX29yX2ZpZWxkTmFtZSkgPT4ge1xuICAgICAgY29uc3QgdHlwZU9wdGlvbnMgPSBnZXRUeXBlT3B0aW9ucyh0eXBlT3B0aW9uc19vcl9maWVsZE5hbWUpO1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBsYXp5TG9hZFJlZmVyZW5jZUluZGV4KHR5cGVPcHRpb25zKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG4gICAgcmVjb3JkTm9kZSxcbiAgfTtcbn07XG5cbmNvbnN0IHJlYWRSZWZlcmVuY2VJbmRleCA9IGFzeW5jIChhcHAsIHJlY29yZEtleSwgdHlwZU9wdGlvbnMpID0+IHtcbiAgY29uc3QgaW5kZXhOb2RlID0gZ2V0Tm9kZShhcHAuaGllcmFyY2h5LCB0eXBlT3B0aW9ucy5pbmRleE5vZGVLZXkpO1xuICBjb25zdCBpbmRleEtleSA9IGlzR2xvYmFsSW5kZXgoaW5kZXhOb2RlKVxuICAgID8gaW5kZXhOb2RlLm5vZGVLZXkoKVxuICAgIDogZ2V0SW5kZXhLZXlfQmFzZWRPbkRlY2VuZGFudChcbiAgICAgIHJlY29yZEtleSwgaW5kZXhOb2RlLFxuICAgICk7XG5cbiAgY29uc3QgaXRlbXMgPSBhd2FpdCBsaXN0SXRlbXMoYXBwKShpbmRleEtleSk7XG4gIHJldHVybiAkKGl0ZW1zLCBbXG4gICAgbWFwKGkgPT4gKHtcbiAgICAgIGtleTogaS5rZXksXG4gICAgICB2YWx1ZTogaVt0eXBlT3B0aW9ucy5kaXNwbGF5VmFsdWVdLFxuICAgIH0pKSxcbiAgXSk7XG59O1xuIiwiaW1wb3J0IHtcbiAgbWFwLCByZWR1Y2UsIGZpbHRlcixcbiAgaXNFbXB0eSwgZmxhdHRlbiwgZWFjaCxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uIH0gZnJvbSAnQG54LWpzL2NvbXBpbGVyLXV0aWwnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldEV4YWN0Tm9kZUZvclBhdGggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgdmFsaWRhdGVGaWVsZFBhcnNlLCB2YWxpZGF0ZVR5cGVDb25zdHJhaW50cyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7ICQsIGlzTm90aGluZywgaXNOb25FbXB0eVN0cmluZyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBfZ2V0Q29udGV4dCB9IGZyb20gJy4vZ2V0Q29udGV4dCc7XG5cbmNvbnN0IGZpZWxkUGFyc2VFcnJvciA9IChmaWVsZE5hbWUsIHZhbHVlKSA9PiAoe1xuICBmaWVsZHM6IFtmaWVsZE5hbWVdLFxuICBtZXNzYWdlOiBgQ291bGQgbm90IHBhcnNlIGZpZWxkICR7ZmllbGROYW1lfToke3ZhbHVlfWAsXG59KTtcblxuY29uc3QgdmFsaWRhdGVBbGxGaWVsZFBhcnNlID0gKHJlY29yZCwgcmVjb3JkTm9kZSkgPT4gJChyZWNvcmROb2RlLmZpZWxkcywgW1xuICBtYXAoZiA9PiAoeyBuYW1lOiBmLm5hbWUsIHBhcnNlUmVzdWx0OiB2YWxpZGF0ZUZpZWxkUGFyc2UoZiwgcmVjb3JkKSB9KSksXG4gIHJlZHVjZSgoZXJyb3JzLCBmKSA9PiB7XG4gICAgaWYgKGYucGFyc2VSZXN1bHQuc3VjY2VzcykgcmV0dXJuIGVycm9ycztcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIGZpZWxkUGFyc2VFcnJvcihmLm5hbWUsIGYucGFyc2VSZXN1bHQudmFsdWUpLFxuICAgICk7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfSwgW10pLFxuXSk7XG5cbmNvbnN0IHZhbGlkYXRlQWxsVHlwZUNvbnN0cmFpbnRzID0gYXN5bmMgKHJlY29yZCwgcmVjb3JkTm9kZSwgY29udGV4dCkgPT4ge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiByZWNvcmROb2RlLmZpZWxkcykge1xuICAgICQoYXdhaXQgdmFsaWRhdGVUeXBlQ29uc3RyYWludHMoZmllbGQsIHJlY29yZCwgY29udGV4dCksIFtcbiAgICAgIGZpbHRlcihpc05vbkVtcHR5U3RyaW5nKSxcbiAgICAgIG1hcChtID0+ICh7IG1lc3NhZ2U6IG0sIGZpZWxkczogW2ZpZWxkLm5hbWVdIH0pKSxcbiAgICAgIGVhY2goZSA9PiBlcnJvcnMucHVzaChlKSksXG4gICAgXSk7XG4gIH1cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmNvbnN0IHJ1blJlY29yZFZhbGlkYXRpb25SdWxlcyA9IChyZWNvcmQsIHJlY29yZE5vZGUpID0+IHtcbiAgY29uc3QgcnVuVmFsaWRhdGlvblJ1bGUgPSAocnVsZSkgPT4ge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBjb21waWxlRXhwcmVzc2lvbihydWxlLmV4cHJlc3Npb25XaGVuVmFsaWQpO1xuICAgIGNvbnN0IGV4cHJlc3Npb25Db250ZXh0ID0geyByZWNvcmQsIF8gfTtcbiAgICByZXR1cm4gKGlzVmFsaWQoZXhwcmVzc2lvbkNvbnRleHQpXG4gICAgICA/IHsgdmFsaWQ6IHRydWUgfVxuICAgICAgOiAoe1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIGZpZWxkczogcnVsZS5pbnZhbGlkRmllbGRzLFxuICAgICAgICBtZXNzYWdlOiBydWxlLm1lc3NhZ2VXaGVuSW52YWxpZCxcbiAgICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gJChyZWNvcmROb2RlLnZhbGlkYXRpb25SdWxlcywgW1xuICAgIG1hcChydW5WYWxpZGF0aW9uUnVsZSksXG4gICAgZmxhdHRlbixcbiAgICBmaWx0ZXIociA9PiByLnZhbGlkID09PSBmYWxzZSksXG4gICAgbWFwKHIgPT4gKHsgZmllbGRzOiByLmZpZWxkcywgbWVzc2FnZTogci5tZXNzYWdlIH0pKSxcbiAgXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSBhcHAgPT4gYXN5bmMgKHJlY29yZCwgY29udGV4dCkgPT4ge1xuICBjb250ZXh0ID0gaXNOb3RoaW5nKGNvbnRleHQpXG4gICAgPyBfZ2V0Q29udGV4dChhcHAsIHJlY29yZC5rZXkpXG4gICAgOiBjb250ZXh0O1xuXG4gIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKHJlY29yZC5rZXkpO1xuICBjb25zdCBmaWVsZFBhcnNlRmFpbHMgPSB2YWxpZGF0ZUFsbEZpZWxkUGFyc2UocmVjb3JkLCByZWNvcmROb2RlKTtcblxuICAvLyBub24gcGFyc2luZyB3b3VsZCBjYXVzZSBmdXJ0aGVyIGlzc3VlcyAtIGV4aXQgaGVyZVxuICBpZiAoIWlzRW1wdHkoZmllbGRQYXJzZUZhaWxzKSkgeyByZXR1cm4gKHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogZmllbGRQYXJzZUZhaWxzIH0pOyB9XG5cbiAgY29uc3QgcmVjb3JkVmFsaWRhdGlvblJ1bGVGYWlscyA9IHJ1blJlY29yZFZhbGlkYXRpb25SdWxlcyhyZWNvcmQsIHJlY29yZE5vZGUpO1xuICBjb25zdCB0eXBlQ29udHJhaW50RmFpbHMgPSBhd2FpdCB2YWxpZGF0ZUFsbFR5cGVDb25zdHJhaW50cyhyZWNvcmQsIHJlY29yZE5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChpc0VtcHR5KGZpZWxkUGFyc2VGYWlscylcbiAgICAgICAmJiBpc0VtcHR5KHJlY29yZFZhbGlkYXRpb25SdWxlRmFpbHMpXG4gICAgICAgJiYgaXNFbXB0eSh0eXBlQ29udHJhaW50RmFpbHMpKSB7XG4gICAgcmV0dXJuICh7IGlzVmFsaWQ6IHRydWUsIGVycm9yczogW10gfSk7XG4gIH1cblxuICByZXR1cm4gKHtcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBlcnJvcnM6IF8udW5pb24oZmllbGRQYXJzZUZhaWxzLCB0eXBlQ29udHJhaW50RmFpbHMsIHJlY29yZFZhbGlkYXRpb25SdWxlRmFpbHMpLFxuICB9KTtcbn07XG4iLCJpbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHtcbiAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICBpc0NvbGxlY3Rpb25SZWNvcmQsXG4gIGlzUm9vdCxcbiAgZ2V0RXhhY3ROb2RlRm9yUGF0aCxcbn0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcbmltcG9ydCB7ICQsIGFsbFRydWUsIGpvaW5LZXkgfSBmcm9tICcuLi9jb21tb24nO1xuXG5jb25zdCBlbnN1cmVDb2xsZWN0aW9uSXNJbml0aWFsaXNlZCA9IGFzeW5jIChkYXRhc3RvcmUsIG5vZGUsIHBhcmVudEtleSkgPT4ge1xuICBpZiAoIWF3YWl0IGRhdGFzdG9yZS5leGlzdHMocGFyZW50S2V5KSkge1xuICAgIGF3YWl0IGRhdGFzdG9yZS5jcmVhdGVGb2xkZXIocGFyZW50S2V5KTtcbiAgICBhd2FpdCBkYXRhc3RvcmUuY3JlYXRlRm9sZGVyKFxuICAgICAgam9pbktleShwYXJlbnRLZXksICdhbGxpZHMnKSxcbiAgICApO1xuICAgIGF3YWl0IGRhdGFzdG9yZS5jcmVhdGVGb2xkZXIoXG4gICAgICBqb2luS2V5KFxuICAgICAgICBwYXJlbnRLZXksXG4gICAgICAgICdhbGxpZHMnLFxuICAgICAgICBub2RlLm5vZGVJZC50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGlzZVJvb3RDb2xsZWN0aW9ucyA9IGFzeW5jIChkYXRhc3RvcmUsIGhpZXJhcmNoeSkgPT4ge1xuICBjb25zdCByb290Q29sbGVjdGlvblJlY29yZCA9IGFsbFRydWUoXG4gICAgbiA9PiBpc1Jvb3Qobi5wYXJlbnQoKSksXG4gICAgaXNDb2xsZWN0aW9uUmVjb3JkLFxuICApO1xuXG4gIGNvbnN0IGZsYXRoaWVyYXJjaHkgPSBnZXRGbGF0dGVuZWRIaWVyYXJjaHkoaGllcmFyY2h5KTtcblxuICBjb25zdCBjb2xsZWN0aW9uUmVjb3JkcyA9ICQoZmxhdGhpZXJhcmNoeSwgW1xuICAgIGZpbHRlcihyb290Q29sbGVjdGlvblJlY29yZCksXG4gIF0pO1xuXG4gIGZvciAoY29uc3QgY29sIG9mIGNvbGxlY3Rpb25SZWNvcmRzKSB7XG4gICAgYXdhaXQgZW5zdXJlQ29sbGVjdGlvbklzSW5pdGlhbGlzZWQoXG4gICAgICBkYXRhc3RvcmUsXG4gICAgICBjb2wsXG4gICAgICBjb2wuY29sbGVjdGlvblBhdGhSZWd4KCksXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxpc2VDaGlsZENvbGxlY3Rpb25zID0gYXN5bmMgKGFwcCwgcmVjb3JkS2V5KSA9PiB7XG4gIGNvbnN0IGNoaWxkQ29sbGVjdGlvblJlY29yZHMgPSAkKHJlY29yZEtleSwgW1xuICAgIGdldEV4YWN0Tm9kZUZvclBhdGgoYXBwLmhpZXJhcmNoeSksXG4gICAgbiA9PiBuLmNoaWxkcmVuLFxuICAgIGZpbHRlcihpc0NvbGxlY3Rpb25SZWNvcmQpLFxuICBdKTtcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkQ29sbGVjdGlvblJlY29yZHMpIHtcbiAgICBhd2FpdCBlbnN1cmVDb2xsZWN0aW9uSXNJbml0aWFsaXNlZChcbiAgICAgIGFwcC5kYXRhc3RvcmUsXG4gICAgICBjaGlsZCxcbiAgICAgIGpvaW5LZXkocmVjb3JkS2V5LCBjaGlsZC5jb2xsZWN0aW9uTmFtZSksXG4gICAgKTtcbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIGpvaW4sIHB1bGwsXG4gIG1hcCwgZmxhdHRlbiwgb3JkZXJCeSxcbiAgZmlsdGVyLCBmaW5kLFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHtcbiAgZ2V0UGFyZW50S2V5LFxuICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gIGdldENvbGxlY3Rpb25Ob2RlQnlLZXlPck5vZGVLZXksIGdldE5vZGVGb3JDb2xsZWN0aW9uUGF0aCxcbiAgaXNDb2xsZWN0aW9uUmVjb3JkLCBpc0FuY2VzdG9yLFxufSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgam9pbktleSwgc2FmZUtleSwgJCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmNvbnN0IGFsbElkQ2hhcnMgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfLSc7XG5cbmNvbnN0IGFsbElkc1N0cmluZ3NGb3JGYWN0b3IgPSAoY29sbGVjdGlvbk5vZGUpID0+IHtcbiAgY29uc3QgZmFjdG9yID0gY29sbGVjdGlvbk5vZGUuYWxsaWRzU2hhcmRGYWN0b3I7XG4gIGNvbnN0IGNoYXJSYW5nZVBlclNoYXJkID0gNjQgLyBmYWN0b3I7XG4gIGNvbnN0IGFsbElkU3RyaW5ncyA9IFtdO1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgY3VycmVudElkc1NoYXJkID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IDY0KSB7XG4gICAgY3VycmVudElkc1NoYXJkICs9IGFsbElkQ2hhcnNbaW5kZXhdO1xuICAgIGlmICgoaW5kZXggKyAxKSAlIGNoYXJSYW5nZVBlclNoYXJkID09PSAwKSB7XG4gICAgICBhbGxJZFN0cmluZ3MucHVzaChjdXJyZW50SWRzU2hhcmQpO1xuICAgICAgY3VycmVudElkc1NoYXJkID0gJyc7XG4gICAgfVxuICAgIGluZGV4Kys7XG4gIH1cblxuICByZXR1cm4gYWxsSWRTdHJpbmdzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbElkc1NoYXJkTmFtZXMgPSAoYXBwSGllcmFyY2h5LCBjb2xsZWN0aW9uS2V5KSA9PiB7XG4gIGNvbnN0IGNvbGxlY3Rpb25SZWNvcmROb2RlID0gZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoKGFwcEhpZXJhcmNoeSkoY29sbGVjdGlvbktleSk7XG4gIHJldHVybiAkKGNvbGxlY3Rpb25SZWNvcmROb2RlLCBbXG4gICAgYyA9PiBbYy5ub2RlSWRdLFxuICAgIG1hcChpID0+IG1hcChjID0+IF9hbGxJZHNTaGFyZEtleShjb2xsZWN0aW9uS2V5LCBpLCBjKSkoYWxsSWRzU3RyaW5nc0ZvckZhY3Rvcihjb2xsZWN0aW9uUmVjb3JkTm9kZSkpKSxcbiAgICBmbGF0dGVuLFxuICBdKTtcbn07XG5cbmNvbnN0IF9hbGxJZHNTaGFyZEtleSA9IChjb2xsZWN0aW9uS2V5LCBjaGlsZE5vLCBzaGFyZEtleSkgPT4gam9pbktleShcbiAgY29sbGVjdGlvbktleSxcbiAgJ2FsbGlkcycsXG4gIGNoaWxkTm8sXG4gIHNoYXJkS2V5LFxuKTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbElkc1NoYXJkS2V5ID0gKGFwcEhpZXJhcmNoeSwgY29sbGVjdGlvbktleSwgcmVjb3JkSWQpID0+IHtcbiAgY29uc3QgaW5kZXhPZkZpcnN0RGFzaCA9IHJlY29yZElkLmluZGV4T2YoJy0nKTtcblxuICBjb25zdCBjb2xsZWN0aW9uTm9kZSA9IGdldE5vZGVGb3JDb2xsZWN0aW9uUGF0aChhcHBIaWVyYXJjaHkpKGNvbGxlY3Rpb25LZXkpO1xuXG4gIGNvbnN0IGlkRmlyc3RDaGFyID0gcmVjb3JkSWRbaW5kZXhPZkZpcnN0RGFzaCArIDFdO1xuICBjb25zdCBhbGxJZHNTaGFyZElkID0gJChjb2xsZWN0aW9uTm9kZSwgW1xuICAgIGFsbElkc1N0cmluZ3NGb3JGYWN0b3IsXG4gICAgZmluZChpID0+IGkuaW5jbHVkZXMoaWRGaXJzdENoYXIpKSxcbiAgXSk7XG5cbiAgcmV0dXJuIF9hbGxJZHNTaGFyZEtleShcbiAgICBjb2xsZWN0aW9uS2V5LFxuICAgIHJlY29yZElkLnNsaWNlKDAsIGluZGV4T2ZGaXJzdERhc2gpLFxuICAgIGFsbElkc1NoYXJkSWQsXG4gICk7XG59O1xuXG5jb25zdCBnZXRPckNyZWF0ZVNoYXJkRmlsZSA9IGFzeW5jIChkYXRhc3RvcmUsIGFsbElkc0tleSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBkYXRhc3RvcmUubG9hZEZpbGUoYWxsSWRzS2V5KTtcbiAgfSBjYXRjaCAoZUxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUZpbGUoYWxsSWRzS2V5LCAnJyk7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBjYXRjaCAoZUNyZWF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgbG9hZGluZywgdGhlbiBjcmVhdGluZyBhbGxJZHMgJHthbGxJZHNLZXlcbiAgICAgICAgfSA6IExPQUQgOiAke2VMb2FkLm1lc3NhZ2VcbiAgICAgICAgfSA6IENSRUFURSA6ICR7ZUNyZWF0ZX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGdldFNoYXJkRmlsZSA9IGFzeW5jIChkYXRhc3RvcmUsIGFsbElkc0tleSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBkYXRhc3RvcmUubG9hZEZpbGUoYWxsSWRzS2V5KTtcbiAgfSBjYXRjaCAoZUxvYWQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRUb0FsbElkcyA9IChhcHBIaWVyYXJjaHksIGRhdGFzdG9yZSkgPT4gYXN5bmMgKHJlY29yZCkgPT4ge1xuICBjb25zdCBhbGxJZHNLZXkgPSBnZXRBbGxJZHNTaGFyZEtleShcbiAgICBhcHBIaWVyYXJjaHksXG4gICAgZ2V0UGFyZW50S2V5KHJlY29yZC5rZXkpLFxuICAgIHJlY29yZC5pZCxcbiAgKTtcblxuICBsZXQgYWxsSWRzID0gYXdhaXQgZ2V0T3JDcmVhdGVTaGFyZEZpbGUoZGF0YXN0b3JlLCBhbGxJZHNLZXkpO1xuXG4gIGFsbElkcyArPSBgJHthbGxJZHMubGVuZ3RoID4gMCA/ICcsJyA6ICcnfSR7cmVjb3JkLmlkfWA7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLnVwZGF0ZUZpbGUoYWxsSWRzS2V5LCBhbGxJZHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbElkc0l0ZXJhdG9yID0gYXBwID0+IGFzeW5jIChjb2xsZWN0aW9uX0tleV9vcl9Ob2RlS2V5KSA9PiB7XG4gIGNvbGxlY3Rpb25fS2V5X29yX05vZGVLZXkgPSBzYWZlS2V5KGNvbGxlY3Rpb25fS2V5X29yX05vZGVLZXkpO1xuICBjb25zdCB0YXJnZXROb2RlID0gZ2V0Q29sbGVjdGlvbk5vZGVCeUtleU9yTm9kZUtleShcbiAgICBhcHAuaGllcmFyY2h5LFxuICAgIGNvbGxlY3Rpb25fS2V5X29yX05vZGVLZXksXG4gICk7XG5cbiAgY29uc3QgZ2V0QWxsSWRzSXRlcmF0b3JGb3JDb2xsZWN0aW9uS2V5ID0gYXN5bmMgKGNvbGxlY3Rpb25LZXkpID0+IHtcbiAgICBjb25zdCBhbGxfYWxsSWRzS2V5cyA9IGdldEFsbElkc1NoYXJkTmFtZXMoYXBwLmhpZXJhcmNoeSwgY29sbGVjdGlvbktleSk7XG4gICAgbGV0IHNoYXJkSW5kZXggPSAwO1xuXG4gICAgY29uc3QgYWxsSWRzRnJvbVNoYXJkSXRlcmF0b3IgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoc2hhcmRJbmRleCA9PT0gYWxsX2FsbElkc0tleXMubGVuZ3RoKSB7IHJldHVybiAoeyBkb25lOiB0cnVlLCByZXN1bHQ6IHsgaWRzOiBbXSwgY29sbGVjdGlvbktleSB9IH0pOyB9XG5cbiAgICAgIGNvbnN0IHNoYXJkS2V5ID0gYWxsX2FsbElkc0tleXNbc2hhcmRJbmRleF07XG5cbiAgICAgIGNvbnN0IGFsbElkcyA9IGF3YWl0IGdldEFsbElkc0Zyb21TaGFyZChhcHAuZGF0YXN0b3JlLCBzaGFyZEtleSk7XG5cbiAgICAgIHNoYXJkSW5kZXgrKztcblxuICAgICAgcmV0dXJuICh7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIGlkczogYWxsSWRzLFxuICAgICAgICAgIGNvbGxlY3Rpb25LZXksXG4gICAgICAgIH0sXG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhbGxJZHNGcm9tU2hhcmRJdGVyYXRvcjtcbiAgfTtcblxuICBjb25zdCBhbmNlc3RvcnMgPSAkKGdldEZsYXR0ZW5lZEhpZXJhcmNoeShhcHAuaGllcmFyY2h5KSwgW1xuICAgIGZpbHRlcihpc0NvbGxlY3Rpb25SZWNvcmQpLFxuICAgIGZpbHRlcihuID0+IGlzQW5jZXN0b3IodGFyZ2V0Tm9kZSkobilcbiAgICAgICAgICAgICAgICAgICAgfHwgbi5ub2RlS2V5KCkgPT09IHRhcmdldE5vZGUubm9kZUtleSgpKSxcbiAgICBvcmRlckJ5KFtuID0+IG4ubm9kZUtleSgpLmxlbmd0aF0sIFsnYXNjJ10pLFxuICBdKTsgLy8gcGFyZW50cyBmaXJzdFxuXG4gIGNvbnN0IHRyYXZlcnNlRm9ySXRlcmF0ZXJhdG9ycyA9IGFzeW5jIChwYXJlbnRSZWNvcmRLZXkgPSAnJywgY3VycmVudE5vZGVJbmRleCA9IDApID0+IHtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IGFuY2VzdG9yc1tjdXJyZW50Tm9kZUluZGV4XTtcbiAgICBjb25zdCBjdXJyZW50Q29sbGVjdGlvbktleSA9IGpvaW5LZXkoXG4gICAgICBwYXJlbnRSZWNvcmRLZXksXG4gICAgICBjdXJyZW50Tm9kZS5jb2xsZWN0aW9uTmFtZSxcbiAgICApO1xuICAgIGlmIChjdXJyZW50Tm9kZS5ub2RlS2V5KCkgPT09IHRhcmdldE5vZGUubm9kZUtleSgpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBhd2FpdCBnZXRBbGxJZHNJdGVyYXRvckZvckNvbGxlY3Rpb25LZXkoXG4gICAgICAgICAgY3VycmVudENvbGxlY3Rpb25LZXksXG4gICAgICAgICldO1xuICAgIH1cbiAgICBjb25zdCBhbGxJdGVyYXRvcnMgPSBbXTtcbiAgICBjb25zdCBjdXJyZW50SXRlcmF0b3IgPSBhd2FpdCBnZXRBbGxJZHNJdGVyYXRvckZvckNvbGxlY3Rpb25LZXkoXG4gICAgICBjdXJyZW50Q29sbGVjdGlvbktleSxcbiAgICApO1xuXG4gICAgbGV0IGlkcyA9IGF3YWl0IGN1cnJlbnRJdGVyYXRvcigpO1xuICAgIHdoaWxlIChpZHMuZG9uZSA9PT0gZmFsc2UpIHtcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgaWRzLnJlc3VsdC5pZHMpIHtcbiAgICAgICAgYWxsSXRlcmF0b3JzLnB1c2goXG4gICAgICAgICAgYXdhaXQgdHJhdmVyc2VGb3JJdGVyYXRlcmF0b3JzKFxuICAgICAgICAgICAgam9pbktleShjdXJyZW50Q29sbGVjdGlvbktleSwgaWQpLFxuICAgICAgICAgICAgY3VycmVudE5vZGVJbmRleCArIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWRzID0gYXdhaXQgY3VycmVudEl0ZXJhdG9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXR0ZW4oYWxsSXRlcmF0b3JzKTtcbiAgfTtcblxuICBjb25zdCBpdGVyYXRvcnNBcnJheSA9IGF3YWl0IHRyYXZlcnNlRm9ySXRlcmF0ZXJhdG9ycygpO1xuICBsZXQgY3VycmVudEl0ZXJhdG9ySW5kZXggPSAwO1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpdGVyYXRvcnNBcnJheS5sZW5ndGggPT09IDApIHsgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgcmVzdWx0OiBbXSB9OyB9XG4gICAgY29uc3QgaW5uZXJSZXN1bHQgPSBhd2FpdCBpdGVyYXRvcnNBcnJheVtjdXJyZW50SXRlcmF0b3JJbmRleF0oKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0LmRvbmUpIHsgcmV0dXJuIGlubmVyUmVzdWx0OyB9XG4gICAgaWYgKGN1cnJlbnRJdGVyYXRvckluZGV4ID09IGl0ZXJhdG9yc0FycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHJlc3VsdDogaW5uZXJSZXN1bHQucmVzdWx0IH07XG4gICAgfVxuICAgIGN1cnJlbnRJdGVyYXRvckluZGV4Kys7XG4gICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHJlc3VsdDogaW5uZXJSZXN1bHQucmVzdWx0IH07XG4gIH07XG59O1xuXG5jb25zdCBnZXRBbGxJZHNGcm9tU2hhcmQgPSBhc3luYyAoZGF0YXN0b3JlLCBzaGFyZEtleSkgPT4ge1xuICBjb25zdCBhbGxJZHNTdHIgPSBhd2FpdCBnZXRTaGFyZEZpbGUoZGF0YXN0b3JlLCBzaGFyZEtleSk7XG5cbiAgY29uc3QgYWxsSWRzID0gW107XG4gIGxldCBjdXJyZW50SWQgPSAnJztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxJZHNTdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhciA9IGFsbElkc1N0ci5jaGFyQXQoaSk7XG4gICAgY29uc3QgaXNMYXN0ID0gKGkgPT09IGFsbElkc1N0ci5sZW5ndGggLSAxKTtcbiAgICBpZiAoY3VycmVudENoYXIgPT09ICcsJyB8fCBpc0xhc3QpIHtcbiAgICAgIGlmIChpc0xhc3QpIGN1cnJlbnRJZCArPSBjdXJyZW50Q2hhcjtcbiAgICAgIGFsbElkcy5wdXNoKGN1cnJlbnRJZCk7XG4gICAgICBjdXJyZW50SWQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudElkICs9IGN1cnJlbnRDaGFyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWxsSWRzO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZyb21BbGxJZHMgPSAoYXBwSGllcmFyY2h5LCBkYXRhc3RvcmUpID0+IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgY29uc3Qgc2hhcmRLZXkgPSBnZXRBbGxJZHNTaGFyZEtleShcbiAgICBhcHBIaWVyYXJjaHksXG4gICAgZ2V0UGFyZW50S2V5KHJlY29yZC5rZXkpLFxuICAgIHJlY29yZC5pZCxcbiAgKTtcbiAgY29uc3QgYWxsSWRzID0gYXdhaXQgZ2V0QWxsSWRzRnJvbVNoYXJkKGRhdGFzdG9yZSwgc2hhcmRLZXkpO1xuXG4gIGNvbnN0IG5ld0lkcyA9ICQoYWxsSWRzLCBbXG4gICAgcHVsbChyZWNvcmQuaWQpLFxuICAgIGpvaW4oJywnKSxcbiAgXSk7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLnVwZGF0ZUZpbGUoc2hhcmRLZXksIG5ld0lkcyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRBbGxJZHNJdGVyYXRvcjtcbiIsImltcG9ydCB7XG4gIGpvaW5LZXksIGtleVNlcCwgZ2V0SGFzaENvZGUsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRMYXN0UGFydEluS2V5IH0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcblxuZXhwb3J0IGNvbnN0IFRSQU5TQUNUSU9OU19GT0xERVIgPSBgJHtrZXlTZXB9LnRyYW5zYWN0aW9uc2A7XG5leHBvcnQgY29uc3QgTE9DS19GSUxFTkFNRSA9ICdsb2NrJztcbmV4cG9ydCBjb25zdCBMT0NLX0ZJTEVfS0VZID0gam9pbktleShcbiAgVFJBTlNBQ1RJT05TX0ZPTERFUiwgTE9DS19GSUxFTkFNRSxcbik7XG5leHBvcnQgY29uc3QgaWRTZXAgPSAnJCc7XG5cbmNvbnN0IGlzT2ZUeXBlID0gdHlwID0+IHRyYW5zID0+IHRyYW5zLnRyYW5zYWN0aW9uVHlwZSA9PT0gdHlwO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1JFQ09SRF9UUkFOU0FDVElPTiA9ICdjcmVhdGUnO1xuZXhwb3J0IGNvbnN0IFVQREFURV9SRUNPUkRfVFJBTlNBQ1RJT04gPSAndXBkYXRlJztcbmV4cG9ydCBjb25zdCBERUxFVEVfUkVDT1JEX1RSQU5TQUNUSU9OID0gJ2RlbGV0ZSc7XG5leHBvcnQgY29uc3QgQlVJTERfSU5ERVhfVFJBTlNBQ1RJT04gPSAnYnVpbGQnO1xuXG5leHBvcnQgY29uc3QgaXNVcGRhdGUgPSBpc09mVHlwZShVUERBVEVfUkVDT1JEX1RSQU5TQUNUSU9OKTtcbmV4cG9ydCBjb25zdCBpc0RlbGV0ZSA9IGlzT2ZUeXBlKERFTEVURV9SRUNPUkRfVFJBTlNBQ1RJT04pO1xuZXhwb3J0IGNvbnN0IGlzQ3JlYXRlID0gaXNPZlR5cGUoQ1JFQVRFX1JFQ09SRF9UUkFOU0FDVElPTik7XG5leHBvcnQgY29uc3QgaXNCdWlsZEluZGV4ID0gaXNPZlR5cGUoQlVJTERfSU5ERVhfVFJBTlNBQ1RJT04pO1xuXG5leHBvcnQgY29uc3Qga2V5VG9Gb2xkZXJOYW1lID0gbm9kZUtleSA9PiBnZXRIYXNoQ29kZShub2RlS2V5KTtcblxuZXhwb3J0IGNvbnN0IGdldFRyYW5zYWN0aW9uSWQgPSAocmVjb3JkSWQsIHRyYW5zYWN0aW9uVHlwZSwgdW5pcXVlSWQpID0+IFxuICBgJHtyZWNvcmRJZH0ke2lkU2VwfSR7dHJhbnNhY3Rpb25UeXBlfSR7aWRTZXB9JHt1bmlxdWVJZH1gO1xuXG5leHBvcnQgY29uc3QgYnVpbGRJbmRleEZvbGRlciA9ICcuQlVJTEQtJztcbmV4cG9ydCBjb25zdCBub2RlS2V5SGFzaEZyb21CdWlsZEZvbGRlciA9IGZvbGRlciA9PiBmb2xkZXIucmVwbGFjZShidWlsZEluZGV4Rm9sZGVyLCAnJyk7XG5cbmV4cG9ydCBjb25zdCBpc0J1aWxkSW5kZXhGb2xkZXIgPSBrZXkgPT4gZ2V0TGFzdFBhcnRJbktleShrZXkpLnN0YXJ0c1dpdGgoYnVpbGRJbmRleEZvbGRlcik7XG5cbmV4cG9ydCBjb25zdCBJbmRleE5vZGVLZXlGb2xkZXIgPSBpbmRleE5vZGVLZXkgPT4gam9pbktleShcbiAgVFJBTlNBQ1RJT05TX0ZPTERFUixcbiAgYnVpbGRJbmRleEZvbGRlciArIGtleVRvRm9sZGVyTmFtZShpbmRleE5vZGVLZXkpLFxuKTtcblxuZXhwb3J0IGNvbnN0IEluZGV4Tm9kZUtleUJhdGNoRm9sZGVyID0gKGluZGV4Tm9kZUtleSwgY291bnQpID0+IFxuICBqb2luS2V5KEluZGV4Tm9kZUtleUZvbGRlcihpbmRleE5vZGVLZXkpLCBNYXRoLmZsb29yKGNvdW50IC8gQlVJTERJTkRFWF9CQVRDSF9DT1VOVCkudG9TdHJpbmcoKSk7XG5cbmV4cG9ydCBjb25zdCBJbmRleFNoYXJkS2V5Rm9sZGVyID0gKGluZGV4Tm9kZUtleSwgaW5kZXhTaGFyZEtleSkgPT4gXG4gIGpvaW5LZXkoSW5kZXhOb2RlS2V5Rm9sZGVyKGluZGV4Tm9kZUtleSksIGluZGV4U2hhcmRLZXkpO1xuXG5leHBvcnQgY29uc3QgQlVJTERJTkRFWF9CQVRDSF9DT1VOVCA9IDEwMDA7XG5leHBvcnQgY29uc3QgdGltZW91dE1pbGxpc2Vjb25kcyA9IDMwICogMTAwMDsgLy8gMzAgc2Vjc1xuZXhwb3J0IGNvbnN0IG1heExvY2tSZXRyaWVzID0gMTtcbiIsImltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnc2hvcnRpZCc7XG5pbXBvcnQgeyBqb2luS2V5IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldExhc3RQYXJ0SW5LZXkgfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHtcbiAgSW5kZXhOb2RlS2V5Rm9sZGVyLCBCVUlMRElOREVYX0JBVENIX0NPVU5ULFxuICBJbmRleE5vZGVLZXlCYXRjaEZvbGRlciwgVFJBTlNBQ1RJT05TX0ZPTERFUiwgZ2V0VHJhbnNhY3Rpb25JZCwgQ1JFQVRFX1JFQ09SRF9UUkFOU0FDVElPTiwgVVBEQVRFX1JFQ09SRF9UUkFOU0FDVElPTixcbiAgREVMRVRFX1JFQ09SRF9UUkFOU0FDVElPTiwgQlVJTERfSU5ERVhfVFJBTlNBQ1RJT04sXG59IGZyb20gJy4vdHJhbnNhY3Rpb25zQ29tbW9uJztcblxuXG5leHBvcnQgY29uc3QgdHJhbnNhY3Rpb25Gb3JDcmVhdGVSZWNvcmQgPSBhc3luYyAoYXBwLCByZWNvcmQpID0+IGF3YWl0IHRyYW5zYWN0aW9uKFxuICBhcHAuZGF0YXN0b3JlLCBDUkVBVEVfUkVDT1JEX1RSQU5TQUNUSU9OLFxuICByZWNvcmQua2V5LCB7IHJlY29yZCB9LFxuICBnZXRUcmFuc2FjdGlvbktleV9SZWNvcmRzLFxuKTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zYWN0aW9uRm9yVXBkYXRlUmVjb3JkID0gYXN5bmMgKGFwcCwgb2xkUmVjb3JkLCBuZXdSZWNvcmQpID0+IGF3YWl0IHRyYW5zYWN0aW9uKFxuICBhcHAuZGF0YXN0b3JlLCBVUERBVEVfUkVDT1JEX1RSQU5TQUNUSU9OLFxuICBuZXdSZWNvcmQua2V5LCB7IG9sZFJlY29yZCwgcmVjb3JkOiBuZXdSZWNvcmQgfSxcbiAgZ2V0VHJhbnNhY3Rpb25LZXlfUmVjb3Jkcyxcbik7XG5cbmV4cG9ydCBjb25zdCB0cmFuc2FjdGlvbkZvckRlbGV0ZVJlY29yZCA9IGFzeW5jIChhcHAsIHJlY29yZCkgPT4gYXdhaXQgdHJhbnNhY3Rpb24oXG4gIGFwcC5kYXRhc3RvcmUsIERFTEVURV9SRUNPUkRfVFJBTlNBQ1RJT04sXG4gIHJlY29yZC5rZXksIHsgcmVjb3JkIH0sXG4gIGdldFRyYW5zYWN0aW9uS2V5X1JlY29yZHMsXG4pO1xuXG5leHBvcnQgY29uc3QgdHJhbnNhY3Rpb25Gb3JCdWlsZEluZGV4ID0gYXN5bmMgKGFwcCwgaW5kZXhOb2RlS2V5LCByZWNvcmRLZXksIGNvdW50KSA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uRm9sZGVyID0gSW5kZXhOb2RlS2V5QmF0Y2hGb2xkZXIoaW5kZXhOb2RlS2V5LCBjb3VudCk7XG4gIGlmIChjb3VudCAlIEJVSUxESU5ERVhfQkFUQ0hfQ09VTlQgPT09IDApIHtcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmNyZWF0ZUZvbGRlcih0cmFuc2FjdGlvbkZvbGRlcik7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdHJhbnNhY3Rpb24oXG4gICAgYXBwLmRhdGFzdG9yZSwgQlVJTERfSU5ERVhfVFJBTlNBQ1RJT04sXG4gICAgcmVjb3JkS2V5LCB7IHJlY29yZEtleSB9LFxuICAgIGlkID0+IGpvaW5LZXkodHJhbnNhY3Rpb25Gb2xkZXIsIGlkKSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWlsZEluZGV4Rm9sZGVyID0gYXN5bmMgKGRhdGFzdG9yZSwgaW5kZXhOb2RlS2V5KSA9PiBhd2FpdCBkYXRhc3RvcmUuY3JlYXRlRm9sZGVyKFxuICBJbmRleE5vZGVLZXlGb2xkZXIoaW5kZXhOb2RlS2V5KSxcbik7XG5cbmNvbnN0IGdldFRyYW5zYWN0aW9uS2V5X1JlY29yZHMgPSBpZCA9PiBqb2luS2V5KFRSQU5TQUNUSU9OU19GT0xERVIsIGlkKTtcblxuY29uc3QgdHJhbnNhY3Rpb24gPSBhc3luYyAoZGF0YXN0b3JlLCB0cmFuc2FjdGlvblR5cGUsIHJlY29yZEtleSwgZGF0YSwgZ2V0VHJhbnNhY3Rpb25LZXkpID0+IHtcbiAgY29uc3QgcmVjb3JkSWQgPSBnZXRMYXN0UGFydEluS2V5KHJlY29yZEtleSk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gZ2VuZXJhdGUoKTtcbiAgY29uc3QgaWQgPSBnZXRUcmFuc2FjdGlvbklkKFxuICAgIHJlY29yZElkLCB0cmFuc2FjdGlvblR5cGUsIHVuaXF1ZUlkLFxuICApO1xuXG4gIGNvbnN0IGtleSA9IGdldFRyYW5zYWN0aW9uS2V5KGlkKTtcblxuICBjb25zdCB0cmFucyA9IHtcbiAgICB0cmFuc2FjdGlvblR5cGUsXG4gICAgcmVjb3JkS2V5LFxuICAgIC4uLmRhdGEsXG4gICAgaWQsXG4gIH07XG5cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUpzb24oXG4gICAga2V5LCB0cmFucyxcbiAgKTtcblxuICByZXR1cm4gdHJhbnM7XG59O1xuIiwiaW1wb3J0IHsgaXNTaGFyZGVkSW5kZXggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgam9pbktleSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTaGFyZE1hcEtleSwgZ2V0VW5zaGFyZGVkSW5kZXhEYXRhS2V5LCBjcmVhdGVJbmRleEZpbGUgfSBmcm9tICcuL3NoYXJkaW5nJztcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxpc2VJbmRleCA9IGFzeW5jIChkYXRhc3RvcmUsIHBhcmVudEtleSwgaW5kZXgpID0+IHtcbiAgY29uc3QgaW5kZXhLZXkgPSBqb2luS2V5KHBhcmVudEtleSwgaW5kZXgubmFtZSk7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUZvbGRlcihpbmRleEtleSk7XG5cbiAgaWYgKGlzU2hhcmRlZEluZGV4KGluZGV4KSkge1xuICAgIGF3YWl0IGRhdGFzdG9yZS5jcmVhdGVGaWxlKFxuICAgICAgZ2V0U2hhcmRNYXBLZXkoaW5kZXhLZXkpLFxuICAgICAgJ1tdJyxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGNyZWF0ZUluZGV4RmlsZShcbiAgICAgIGRhdGFzdG9yZSxcbiAgICAgIGdldFVuc2hhcmRlZEluZGV4RGF0YUtleShpbmRleEtleSksXG4gICAgICBpbmRleCxcbiAgICApO1xuICB9XG59O1xuIiwiaW1wb3J0IHtcbiAgY2xvbmVEZWVwLFxuICBmbGF0dGVuLFxuICBtYXAsXG4gIGZpbHRlcixcbiAgaXNFcXVhbFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgaW5pdGlhbGlzZUNoaWxkQ29sbGVjdGlvbnMgfSBmcm9tICcuLi9jb2xsZWN0aW9uQXBpL2luaXRpYWxpc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGUgfSBmcm9tICcuL3ZhbGlkYXRlJztcbmltcG9ydCB7IF9sb2FkLCBnZXRSZWNvcmRGaWxlTmFtZSB9IGZyb20gJy4vbG9hZCc7XG5pbXBvcnQge1xuICBhcGlXcmFwcGVyLCBldmVudHMsICQsIGpvaW5LZXksXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gIGdldEV4YWN0Tm9kZUZvclBhdGgsXG4gIGlzUmVjb3JkLFxuICBnZXROb2RlLFxuICBnZXRMYXN0UGFydEluS2V5LFxuICBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9Ob2RlLFxufSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgbWFwUmVjb3JkIH0gZnJvbSAnLi4vaW5kZXhpbmcvZXZhbHVhdGUnO1xuaW1wb3J0IHsgbGlzdEl0ZW1zIH0gZnJvbSAnLi4vaW5kZXhBcGkvbGlzdEl0ZW1zJztcbmltcG9ydCB7IGFkZFRvQWxsSWRzIH0gZnJvbSAnLi4vaW5kZXhpbmcvYWxsSWRzJztcbmltcG9ydCB7XG4gIHRyYW5zYWN0aW9uRm9yQ3JlYXRlUmVjb3JkLFxuICB0cmFuc2FjdGlvbkZvclVwZGF0ZVJlY29yZCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zL2NyZWF0ZSc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBpbml0aWFsaXNlSW5kZXggfSBmcm9tICcuLi9pbmRleGluZy9pbml0aWFsaXNlSW5kZXgnO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBzYXZlID0gYXBwID0+IGFzeW5jIChyZWNvcmQsIGNvbnRleHQpID0+IGFwaVdyYXBwZXIoXG4gIGFwcCxcbiAgZXZlbnRzLnJlY29yZEFwaS5zYXZlLFxuICByZWNvcmQuaXNOZXdcbiAgICA/IHBlcm1pc3Npb24uY3JlYXRlUmVjb3JkLmlzQXV0aG9yaXplZChyZWNvcmQua2V5KVxuICAgIDogcGVybWlzc2lvbi51cGRhdGVSZWNvcmQuaXNBdXRob3JpemVkKHJlY29yZC5rZXkpLCB7IHJlY29yZCB9LFxuICBfc2F2ZSwgYXBwLCByZWNvcmQsIGNvbnRleHQsIGZhbHNlLFxuKTtcblxuXG5leHBvcnQgY29uc3QgX3NhdmUgPSBhc3luYyAoYXBwLCByZWNvcmQsIGNvbnRleHQsIHNraXBWYWxpZGF0aW9uID0gZmFsc2UpID0+IHtcbiAgY29uc3QgcmVjb3JkQ2xvbmUgPSBjbG9uZURlZXAocmVjb3JkKTtcbiAgaWYgKCFza2lwVmFsaWRhdGlvbikge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB2YWxpZGF0ZShhcHApKHJlY29yZENsb25lLCBjb250ZXh0KTtcbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuaXNWYWxpZCkge1xuICAgICAgYXdhaXQgYXBwLnB1Ymxpc2goZXZlbnRzLnJlY29yZEFwaS5zYXZlLm9uSW52YWxpZCwgeyByZWNvcmQsIHZhbGlkYXRpb25SZXN1bHQgfSk7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGBTYXZlIDogUmVjb3JkIEludmFsaWQgOiAke1xuICAgICAgICBKU09OLnN0cmluZ2lmeSh2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHJlY29yZENsb25lLmlzTmV3KSB7XG4gICAgYXdhaXQgYWRkVG9BbGxJZHMoYXBwLmhpZXJhcmNoeSwgYXBwLmRhdGFzdG9yZSkocmVjb3JkQ2xvbmUpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHJhbnNhY3Rpb25Gb3JDcmVhdGVSZWNvcmQoXG4gICAgICBhcHAsIHJlY29yZENsb25lLFxuICAgICk7XG4gICAgcmVjb3JkQ2xvbmUudHJhbnNhY3Rpb25JZCA9IHRyYW5zYWN0aW9uLmlkO1xuICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUuY3JlYXRlRm9sZGVyKHJlY29yZENsb25lLmtleSk7XG4gICAgYXdhaXQgYXBwLmRhdGFzdG9yZS5jcmVhdGVGb2xkZXIoXG4gICAgICBqb2luS2V5KHJlY29yZENsb25lLmtleSwgJ2ZpbGVzJyksXG4gICAgKTtcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmNyZWF0ZUpzb24oXG4gICAgICBnZXRSZWNvcmRGaWxlTmFtZShyZWNvcmRDbG9uZS5rZXkpLFxuICAgICAgcmVjb3JkQ2xvbmUsXG4gICAgKTtcbiAgICBhd2FpdCBpbml0aWFsaXNlUmV2ZXJzZVJlZmVyZW5jZUluZGV4ZXMoYXBwLCByZWNvcmQpO1xuICAgIGF3YWl0IGluaXRpYWxpc2VBbmNlc3RvckluZGV4ZXMoYXBwLCByZWNvcmQpO1xuICAgIGF3YWl0IGluaXRpYWxpc2VDaGlsZENvbGxlY3Rpb25zKGFwcCwgcmVjb3JkQ2xvbmUua2V5KTtcbiAgICBhd2FpdCBhcHAucHVibGlzaChldmVudHMucmVjb3JkQXBpLnNhdmUub25SZWNvcmRDcmVhdGVkLCB7XG4gICAgICByZWNvcmQ6IHJlY29yZENsb25lLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG9sZFJlY29yZCA9IGF3YWl0IF9sb2FkKGFwcCwgcmVjb3JkQ2xvbmUua2V5KTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHRyYW5zYWN0aW9uRm9yVXBkYXRlUmVjb3JkKFxuICAgICAgYXBwLCBvbGRSZWNvcmQsIHJlY29yZENsb25lLFxuICAgICk7XG4gICAgcmVjb3JkQ2xvbmUudHJhbnNhY3Rpb25JZCA9IHRyYW5zYWN0aW9uLmlkO1xuICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUudXBkYXRlSnNvbihcbiAgICAgIGdldFJlY29yZEZpbGVOYW1lKHJlY29yZENsb25lLmtleSksXG4gICAgICByZWNvcmRDbG9uZSxcbiAgICApO1xuICAgIGF3YWl0IGFwcC5wdWJsaXNoKGV2ZW50cy5yZWNvcmRBcGkuc2F2ZS5vblJlY29yZFVwZGF0ZWQsIHtcbiAgICAgIG9sZDogb2xkUmVjb3JkLFxuICAgICAgbmV3OiByZWNvcmRDbG9uZSxcbiAgICB9KTtcbiAgfVxuXG4gIGF3YWl0IGFwcC5jbGVhbnVwVHJhbnNhY3Rpb25zKCk7XG5cbiAgY29uc3QgcmV0dXJuZWRDbG9uZSA9IGNsb25lRGVlcChyZWNvcmRDbG9uZSk7XG4gIHJldHVybmVkQ2xvbmUuaXNOZXcgPSBmYWxzZTtcbiAgcmV0dXJuIHJldHVybmVkQ2xvbmU7XG59O1xuXG5jb25zdCBpbml0aWFsaXNlQW5jZXN0b3JJbmRleGVzID0gYXN5bmMgKGFwcCwgcmVjb3JkKSA9PiB7XG4gIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKHJlY29yZC5rZXkpO1xuXG4gIGZvciAoY29uc3QgaW5kZXggb2YgcmVjb3JkTm9kZS5pbmRleGVzKSB7XG4gICAgY29uc3QgaW5kZXhLZXkgPSBqb2luS2V5KHJlY29yZC5rZXksIGluZGV4Lm5hbWUpO1xuICAgIGlmICghYXdhaXQgYXBwLmRhdGFzdG9yZS5leGlzdHMoaW5kZXhLZXkpKSB7IGF3YWl0IGluaXRpYWxpc2VJbmRleChhcHAuZGF0YXN0b3JlLCByZWNvcmQua2V5LCBpbmRleCk7IH1cbiAgfVxufTtcblxuY29uc3QgaW5pdGlhbGlzZVJldmVyc2VSZWZlcmVuY2VJbmRleGVzID0gYXN5bmMgKGFwcCwgcmVjb3JkKSA9PiB7XG4gIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKHJlY29yZC5rZXkpO1xuXG4gIGNvbnN0IGluZGV4Tm9kZXMgPSAkKGZpZWxkc1RoYXRSZWZlcmVuY2VUaGlzUmVjb3JkKGFwcCwgcmVjb3JkTm9kZSksIFtcbiAgICBtYXAoZiA9PiAkKGYudHlwZU9wdGlvbnMucmV2ZXJzZUluZGV4Tm9kZUtleXMsIFtcbiAgICAgIG1hcChuID0+IGdldE5vZGUoXG4gICAgICAgIGFwcC5oaWVyYXJjaHksXG4gICAgICAgIG4sXG4gICAgICApKSxcbiAgICBdKSksXG4gICAgZmxhdHRlbixcbiAgXSk7XG5cbiAgZm9yIChjb25zdCBpbmRleE5vZGUgb2YgaW5kZXhOb2Rlcykge1xuICAgIGF3YWl0IGluaXRpYWxpc2VJbmRleChcbiAgICAgIGFwcC5kYXRhc3RvcmUsIHJlY29yZC5rZXksIGluZGV4Tm9kZSxcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCBmaWVsZHNUaGF0UmVmZXJlbmNlVGhpc1JlY29yZCA9IChhcHAsIHJlY29yZE5vZGUpID0+ICQoYXBwLmhpZXJhcmNoeSwgW1xuICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gIGZpbHRlcihpc1JlY29yZCksXG4gIG1hcChuID0+IG4uZmllbGRzKSxcbiAgZmxhdHRlbixcbiAgZmlsdGVyKGZpZWxkUmV2ZXJzZXNSZWZlcmVuY2VUb05vZGUocmVjb3JkTm9kZSkpLFxuXSk7XG4iLCJpbXBvcnQgeyBpbmNsdWRlcyB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBnZXROb2RlRm9yQ29sbGVjdGlvblBhdGggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHtcbiAgc2FmZUtleSwgYXBpV3JhcHBlcixcbiAgZXZlbnRzLCBqb2luS2V5LFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgX2RlbGV0ZVJlY29yZCB9IGZyb20gJy4uL3JlY29yZEFwaS9kZWxldGUnO1xuaW1wb3J0IHsgZ2V0QWxsSWRzSXRlcmF0b3IsIGdldEFsbElkc1NoYXJkS2V5IH0gZnJvbSAnLi4vaW5kZXhpbmcvYWxsSWRzJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuLi9hdXRoQXBpL3Blcm1pc3Npb25zJztcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNvbGxlY3Rpb24gPSAoYXBwLCBkaXNhYmxlQ2xlYW51cCA9IGZhbHNlKSA9PiBhc3luYyBrZXkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuY29sbGVjdGlvbkFwaS5kZWxldGUsXG4gIHBlcm1pc3Npb24ubWFuYWdlQ29sbGVjdGlvbi5pc0F1dGhvcml6ZWQsXG4gIHsga2V5IH0sXG4gIF9kZWxldGVDb2xsZWN0aW9uLCBhcHAsIGtleSwgZGlzYWJsZUNsZWFudXAsXG4pO1xuXG5cbmV4cG9ydCBjb25zdCBfZGVsZXRlQ29sbGVjdGlvbiA9IGFzeW5jIChhcHAsIGtleSwgZGlzYWJsZUNsZWFudXApID0+IHtcbiAga2V5ID0gc2FmZUtleShrZXkpO1xuICBjb25zdCBub2RlID0gZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoKGFwcC5oaWVyYXJjaHkpKGtleSk7XG5cbiAgYXdhaXQgZGVsZXRlUmVjb3JkcyhhcHAsIGtleSk7XG4gIGF3YWl0IGRlbGV0ZUFsbElkc0ZvbGRlcnMoYXBwLCBub2RlLCBrZXkpO1xuICBhd2FpdCBkZWxldGVDb2xsZWN0aW9uRm9sZGVyKGFwcCwga2V5KTtcbiAgaWYgKCFkaXNhYmxlQ2xlYW51cCkgeyBhd2FpdCBhcHAuY2xlYW51cFRyYW5zYWN0aW9ucygpOyB9XG59O1xuXG5jb25zdCBkZWxldGVDb2xsZWN0aW9uRm9sZGVyID0gYXN5bmMgKGFwcCwga2V5KSA9PiBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZvbGRlcihrZXkpO1xuXG5cbmNvbnN0IGRlbGV0ZUFsbElkc0ZvbGRlcnMgPSBhc3luYyAoYXBwLCBub2RlLCBrZXkpID0+IHtcbiAgYXdhaXQgYXBwLmRhdGFzdG9yZS5kZWxldGVGb2xkZXIoXG4gICAgam9pbktleShcbiAgICAgIGtleSwgJ2FsbGlkcycsXG4gICAgICBub2RlLm5vZGVJZCxcbiAgICApLFxuICApO1xuXG4gIGF3YWl0IGFwcC5kYXRhc3RvcmUuZGVsZXRlRm9sZGVyKFxuICAgIGpvaW5LZXkoa2V5LCAnYWxsaWRzJyksXG4gICk7XG59O1xuXG5jb25zdCBkZWxldGVSZWNvcmRzID0gYXN5bmMgKGFwcCwga2V5KSA9PiB7XG4gIGNvbnN0IGRlbGV0ZWRBbGxJZHNTaGFyZHMgPSBbXTtcbiAgY29uc3QgZGVsZXRlQWxsSWRzU2hhcmQgPSBhc3luYyAocmVjb3JkSWQpID0+IHtcbiAgICBjb25zdCBzaGFyZEtleSA9IGdldEFsbElkc1NoYXJkS2V5KFxuICAgICAgYXBwLmhpZXJhcmNoeSwga2V5LCByZWNvcmRJZCxcbiAgICApO1xuXG4gICAgaWYgKGluY2x1ZGVzKHNoYXJkS2V5KShkZWxldGVkQWxsSWRzU2hhcmRzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlbGV0ZWRBbGxJZHNTaGFyZHMucHVzaChzaGFyZEtleSk7XG5cbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZpbGUoc2hhcmRLZXkpO1xuICB9O1xuXG4gIGNvbnN0IGl0ZXJhdGUgPSBhd2FpdCBnZXRBbGxJZHNJdGVyYXRvcihhcHApKGtleSk7XG5cbiAgbGV0IGlkcyA9IGF3YWl0IGl0ZXJhdGUoKTtcbiAgd2hpbGUgKCFpZHMuZG9uZSkge1xuICAgIGlmIChpZHMucmVzdWx0LmNvbGxlY3Rpb25LZXkgPT09IGtleSkge1xuICAgICAgZm9yIChjb25zdCBpZCBvZiBpZHMucmVzdWx0Lmlkcykge1xuICAgICAgICBhd2FpdCBfZGVsZXRlUmVjb3JkKFxuICAgICAgICAgIGFwcCxcbiAgICAgICAgICBqb2luS2V5KGtleSwgaWQpLFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUFsbElkc1NoYXJkKGlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZHMgPSBhd2FpdCBpdGVyYXRlKCk7XG4gIH1cbn07XG4iLCJpbXBvcnQge1xuICB0cnlBd2FpdE9ySWdub3JlLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgaXNJbmRleCwgaXNTaGFyZGVkSW5kZXgsXG4gIGdldEV4YWN0Tm9kZUZvclBhdGgsXG59IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQge1xuICBnZXRBbGxTaGFyZEtleXMsIGdldFNoYXJkTWFwS2V5LFxuICBnZXRVbnNoYXJkZWRJbmRleERhdGFLZXksXG59IGZyb20gJy4uL2luZGV4aW5nL3NoYXJkaW5nJztcblxuZXhwb3J0IGNvbnN0IF9kZWxldGVJbmRleCA9IGFzeW5jIChhcHAsIGluZGV4S2V5LCBpbmNsdWRlRm9sZGVyKSA9PiB7XG4gIGNvbnN0IGluZGV4Tm9kZSA9IGdldEV4YWN0Tm9kZUZvclBhdGgoYXBwLmhpZXJhcmNoeSkoaW5kZXhLZXkpO1xuXG4gIGlmICghaXNJbmRleChpbmRleE5vZGUpKSB7IHRocm93IG5ldyBFcnJvcignU3VwcGxpZWQga2V5IGlzIG5vdCBhbiBpbmRleCcpOyB9XG5cbiAgaWYgKGlzU2hhcmRlZEluZGV4KGluZGV4Tm9kZSkpIHtcbiAgICBjb25zdCBzaGFyZEtleXMgPSBhd2FpdCBnZXRBbGxTaGFyZEtleXMoYXBwLCBpbmRleEtleSk7XG4gICAgZm9yIChjb25zdCBrIG9mIHNoYXJkS2V5cykge1xuICAgICAgYXdhaXQgdHJ5QXdhaXRPcklnbm9yZShcbiAgICAgICAgYXBwLmRhdGFzdG9yZS5kZWxldGVGaWxlKGspLFxuICAgICAgKTtcbiAgICB9XG4gICAgdHJ5QXdhaXRPcklnbm9yZShcbiAgICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUuZGVsZXRlRmlsZShcbiAgICAgICAgZ2V0U2hhcmRNYXBLZXkoaW5kZXhLZXkpLFxuICAgICAgKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRyeUF3YWl0T3JJZ25vcmUoXG4gICAgICBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZpbGUoXG4gICAgICAgIGdldFVuc2hhcmRlZEluZGV4RGF0YUtleShpbmRleEtleSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBpZiAoaW5jbHVkZUZvbGRlcikge1xuICAgIHRyeUF3YWl0T3JJZ25vcmUoXG4gICAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZvbGRlcihpbmRleEtleSksXG4gICAgKTtcbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIHNhZmVLZXksIGFwaVdyYXBwZXIsXG4gIGV2ZW50cywgam9pbktleSxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IF9sb2FkLCBnZXRSZWNvcmRGaWxlTmFtZSB9IGZyb20gJy4vbG9hZCc7XG5pbXBvcnQgeyBfZGVsZXRlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2NvbGxlY3Rpb25BcGkvZGVsZXRlJztcbmltcG9ydCB7XG4gIGdldEV4YWN0Tm9kZUZvclBhdGgsXG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSwgZ2V0Tm9kZSxcbiAgZmllbGRSZXZlcnNlc1JlZmVyZW5jZVRvTm9kZSxcbn0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcbmltcG9ydCB7IF9kZWxldGVJbmRleCB9IGZyb20gJy4uL2luZGV4QXBpL2RlbGV0ZSc7XG5pbXBvcnQgeyB0cmFuc2FjdGlvbkZvckRlbGV0ZVJlY29yZCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucy9jcmVhdGUnO1xuaW1wb3J0IHsgcmVtb3ZlRnJvbUFsbElkcyB9IGZyb20gJy4uL2luZGV4aW5nL2FsbElkcyc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWNvcmQgPSAoYXBwLCBkaXNhYmxlQ2xlYW51cCA9IGZhbHNlKSA9PiBhc3luYyBrZXkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMucmVjb3JkQXBpLmRlbGV0ZSxcbiAgcGVybWlzc2lvbi5kZWxldGVSZWNvcmQuaXNBdXRob3JpemVkKGtleSksXG4gIHsga2V5IH0sXG4gIF9kZWxldGVSZWNvcmQsIGFwcCwga2V5LCBkaXNhYmxlQ2xlYW51cCxcbik7XG5cbi8vIGNhbGxlZCBkZWxldGVSZWNvcmQgYmVjYXVzZSBkZWxldGUgaXMgYSBrZXl3b3JkXG5leHBvcnQgY29uc3QgX2RlbGV0ZVJlY29yZCA9IGFzeW5jIChhcHAsIGtleSwgZGlzYWJsZUNsZWFudXApID0+IHtcbiAga2V5ID0gc2FmZUtleShrZXkpO1xuICBjb25zdCBub2RlID0gZ2V0RXhhY3ROb2RlRm9yUGF0aChhcHAuaGllcmFyY2h5KShrZXkpO1xuXG4gIGNvbnN0IHJlY29yZCA9IGF3YWl0IF9sb2FkKGFwcCwga2V5KTtcbiAgYXdhaXQgdHJhbnNhY3Rpb25Gb3JEZWxldGVSZWNvcmQoYXBwLCByZWNvcmQpO1xuXG4gIGZvciAoY29uc3QgY29sbGVjdGlvblJlY29yZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgY29uc3QgY29sbGVjdGlvbktleSA9IGpvaW5LZXkoXG4gICAgICBrZXksIGNvbGxlY3Rpb25SZWNvcmQuY29sbGVjdGlvbk5hbWUsXG4gICAgKTtcbiAgICBhd2FpdCBfZGVsZXRlQ29sbGVjdGlvbihhcHAsIGNvbGxlY3Rpb25LZXksIHRydWUpO1xuICB9XG5cbiAgYXdhaXQgYXBwLmRhdGFzdG9yZS5kZWxldGVGaWxlKFxuICAgIGdldFJlY29yZEZpbGVOYW1lKGtleSksXG4gICk7XG5cbiAgYXdhaXQgZGVsZXRlRmlsZXMoYXBwLCBrZXkpO1xuXG4gIGF3YWl0IHJlbW92ZUZyb21BbGxJZHMoYXBwLmhpZXJhcmNoeSwgYXBwLmRhdGFzdG9yZSkocmVjb3JkKTtcblxuICBpZiAoIWRpc2FibGVDbGVhbnVwKSB7IGF3YWl0IGFwcC5jbGVhbnVwVHJhbnNhY3Rpb25zKCk7IH1cblxuICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZvbGRlcihrZXkpO1xuICBhd2FpdCBkZWxldGVJbmRleGVzKGFwcCwga2V5KTtcbn07XG5cbmNvbnN0IGRlbGV0ZUluZGV4ZXMgPSBhc3luYyAoYXBwLCBrZXkpID0+IHtcbiAgY29uc3Qgbm9kZSA9IGdldEV4YWN0Tm9kZUZvclBhdGgoYXBwLmhpZXJhcmNoeSkoa2V5KTtcbiAgLyogY29uc3QgcmV2ZXJzZUluZGV4S2V5cyA9ICQoYXBwLmhpZXJhcmNoeSwgW1xuICAgICAgICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gICAgICAgIG1hcChuID0+IG4uZmllbGRzKSxcbiAgICAgICAgZmxhdHRlbixcbiAgICAgICAgZmlsdGVyKGlzU29tZXRoaW5nKSxcbiAgICAgICAgZmlsdGVyKGZpZWxkUmV2ZXJzZXNSZWZlcmVuY2VUb05vZGUobm9kZSkpLFxuICAgICAgICBtYXAoZiA9PiAkKGYudHlwZU9wdGlvbnMucmV2ZXJzZUluZGV4Tm9kZUtleXMsIFtcbiAgICAgICAgICAgICAgICAgICAgbWFwKG4gPT4gZ2V0Tm9kZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmhpZXJhcmNoeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbikpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgKSxcbiAgICAgICAgZmxhdHRlbixcbiAgICAgICAgbWFwKG4gPT4gam9pbktleShrZXksIG4ubmFtZSkpXG4gICAgXSk7XG5cbiAgICBmb3IobGV0IGkgb2YgcmV2ZXJzZUluZGV4S2V5cykge1xuICAgICAgICBhd2FpdCBfZGVsZXRlSW5kZXgoYXBwLCBpLCB0cnVlKTtcbiAgICB9ICovXG5cblxuICBmb3IgKGNvbnN0IGluZGV4IG9mIG5vZGUuaW5kZXhlcykge1xuICAgIGNvbnN0IGluZGV4S2V5ID0gam9pbktleShrZXksIGluZGV4Lm5hbWUpO1xuICAgIGF3YWl0IF9kZWxldGVJbmRleChhcHAsIGluZGV4S2V5LCB0cnVlKTtcbiAgfVxufTtcblxuY29uc3QgZGVsZXRlRmlsZXMgPSBhc3luYyAoYXBwLCBrZXkpID0+IHtcbiAgY29uc3QgZmlsZXNGb2xkZXIgPSBqb2luS2V5KGtleSwgJ2ZpbGVzJyk7XG4gIGNvbnN0IGFsbEZpbGVzID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5nZXRGb2xkZXJDb250ZW50cyhcbiAgICBmaWxlc0ZvbGRlcixcbiAgKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgYWxsRmlsZXMpIHtcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZpbGUoZmlsZSk7XG4gIH1cblxuICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZvbGRlcihcbiAgICBqb2luS2V5KGtleSwgJ2ZpbGVzJyksXG4gICk7XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5jbHVkZXMsIGZpbHRlcixcbiAgbWFwLCBzb21lLFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tICdzaG9ydGlkJztcbmltcG9ydCB7IF9sb2FkIH0gZnJvbSAnLi9sb2FkJztcbmltcG9ydCB7XG4gIGFwaVdyYXBwZXIsIGV2ZW50cywgc3BsaXRLZXksXG4gICQsIGpvaW5LZXksIGlzTm90aGluZywgdHJ5QXdhaXRPcklnbm9yZSxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldEV4YWN0Tm9kZUZvclBhdGggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4uL2F1dGhBcGkvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgaXNMZWdhbEZpbGVuYW1lIH0gZnJvbSAnLi4vdHlwZXMvZmlsZSc7XG5pbXBvcnQgeyBCYWRSZXF1ZXN0RXJyb3IsIEZvcmJpZGRlbkVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlID0gYXBwID0+IGFzeW5jIChyZWNvcmRLZXksIHJlYWRhYmxlU3RyZWFtLCByZWxhdGl2ZUZpbGVQYXRoKSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5yZWNvcmRBcGkudXBsb2FkRmlsZSxcbiAgcGVybWlzc2lvbi51cGRhdGVSZWNvcmQuaXNBdXRob3JpemVkKHJlY29yZEtleSksXG4gIHsgcmVjb3JkS2V5LCByZWFkYWJsZVN0cmVhbSwgcmVsYXRpdmVGaWxlUGF0aCB9LFxuICBfdXBsb2FkRmlsZSwgYXBwLCByZWNvcmRLZXksIHJlYWRhYmxlU3RyZWFtLCByZWxhdGl2ZUZpbGVQYXRoLFxuKTtcblxuY29uc3QgX3VwbG9hZEZpbGUgPSBhc3luYyAoYXBwLCByZWNvcmRLZXksIHJlYWRhYmxlU3RyZWFtLCByZWxhdGl2ZUZpbGVQYXRoKSA9PiB7XG4gIGlmIChpc05vdGhpbmcocmVjb3JkS2V5KSkgeyB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKCdSZWNvcmQgS2V5IG5vdCBzdXBwbGllZCcpOyB9XG4gIGlmIChpc05vdGhpbmcocmVsYXRpdmVGaWxlUGF0aCkpIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignZmlsZSBwYXRoIG5vdCBzdXBwbGllZCcpOyB9XG4gIGlmICghaXNMZWdhbEZpbGVuYW1lKHJlbGF0aXZlRmlsZVBhdGgpKSB7IHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IoJ0lsbGVnYWwgZmlsZW5hbWUnKTsgfVxuXG4gIGNvbnN0IHJlY29yZCA9IGF3YWl0IF9sb2FkKGFwcCwgcmVjb3JkS2V5KTtcblxuICBjb25zdCBmdWxsRmlsZVBhdGggPSBzYWZlR2V0RnVsbEZpbGVQYXRoKFxuICAgIHJlY29yZEtleSwgcmVsYXRpdmVGaWxlUGF0aCxcbiAgKTtcblxuICBjb25zdCB0ZW1wRmlsZVBhdGggPSBgJHtmdWxsRmlsZVBhdGh9XyR7Z2VuZXJhdGUoKX0udGVtcGA7XG5cbiAgY29uc3Qgb3V0cHV0U3RyZWFtID0gYXdhaXQgYXBwLmRhdGFzdG9yZS53cml0YWJsZUZpbGVTdHJlYW0oXG4gICAgdGVtcEZpbGVQYXRoLFxuICApO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcbiAgICByZWFkYWJsZVN0cmVhbS5waXBlKG91dHB1dFN0cmVhbSk7XG4gICAgb3V0cHV0U3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgb3V0cHV0U3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgfSlcbiAgLnRoZW4oKCkgPT4gYXBwLmRhdGFzdG9yZS5nZXRGaWxlU2l6ZSh0ZW1wRmlsZVBhdGgpKVxuICAudGhlbihzaXplID0+IHtcbiAgICBjb25zdCBpc0V4cGVjdGVkRmlsZVNpemUgPSBjaGVja0ZpbGVTaXplQWdhaW5zdEZpZWxkcyhcbiAgICAgIGFwcCwgcmVjb3JkLCByZWxhdGl2ZUZpbGVQYXRoLCBzaXplXG4gICAgKTsgIFxuICAgIGlmICghaXNFeHBlY3RlZEZpbGVTaXplKSB7IHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IoYEZpZWxkcyBmb3IgJHtyZWxhdGl2ZUZpbGVQYXRofSBkbyBub3QgaGF2ZSBleHBlY3RlZCBzaXplOiAke2pvaW4oJywnKShpbmNvcnJlY3RGaWVsZHMpfWApOyB9ICBcblxuICB9KVxuICAudGhlbigoKSA9PiB0cnlBd2FpdE9ySWdub3JlKGFwcC5kYXRhc3RvcmUuZGVsZXRlRmlsZSwgZnVsbEZpbGVQYXRoKSlcbiAgLnRoZW4oKCkgPT4gYXBwLmRhdGFzdG9yZS5yZW5hbWVGaWxlKHRlbXBGaWxlUGF0aCwgZnVsbEZpbGVQYXRoKSk7XG5cbiAgLypcbiAgcmVhZGFibGVTdHJlYW0ucGlwZShvdXRwdXRTdHJlYW0pO1xuXG4gIGF3YWl0IG5ldyBQcm9taXNlKGZ1bGZpbGwgPT4gb3V0cHV0U3RyZWFtLm9uKCdmaW5pc2gnLCBmdWxmaWxsKSk7XG5cbiAgY29uc3QgaXNFeHBlY3RlZEZpbGVTaXplID0gY2hlY2tGaWxlU2l6ZUFnYWluc3RGaWVsZHMoXG4gICAgYXBwLFxuICAgIHJlY29yZCwgcmVsYXRpdmVGaWxlUGF0aCxcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmdldEZpbGVTaXplKHRlbXBGaWxlUGF0aCksXG4gICk7XG5cbiAgaWYgKCFpc0V4cGVjdGVkRmlsZVNpemUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRmllbGRzIGZvciAke3JlbGF0aXZlRmlsZVBhdGh9IGRvIG5vdCBoYXZlIGV4cGVjdGVkIHNpemVgKTtcbiAgfVxuXG4gIGF3YWl0IHRyeUF3YWl0T3JJZ25vcmUoYXBwLmRhdGFzdG9yZS5kZWxldGVGaWxlLCBmdWxsRmlsZVBhdGgpO1xuXG4gIGF3YWl0IGFwcC5kYXRhc3RvcmUucmVuYW1lRmlsZSh0ZW1wRmlsZVBhdGgsIGZ1bGxGaWxlUGF0aCk7XG4gICovXG59O1xuXG5jb25zdCBjaGVja0ZpbGVTaXplQWdhaW5zdEZpZWxkcyA9IChhcHAsIHJlY29yZCwgcmVsYXRpdmVGaWxlUGF0aCwgZXhwZWN0ZWRTaXplKSA9PiB7XG4gIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGFwcC5oaWVyYXJjaHkpKHJlY29yZC5rZXkpO1xuXG4gIGNvbnN0IGluY29ycmVjdEZpbGVGaWVsZHMgPSAkKHJlY29yZE5vZGUuZmllbGRzLCBbXG4gICAgZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZmlsZSdcbiAgICAgICYmIHJlY29yZFtmLm5hbWVdLnJlbGF0aXZlUGF0aCA9PT0gcmVsYXRpdmVGaWxlUGF0aFxuICAgICAgJiYgcmVjb3JkW2YubmFtZV0uc2l6ZSAhPT0gZXhwZWN0ZWRTaXplKSxcbiAgICBtYXAoZiA9PiBmLm5hbWUpLFxuICBdKTtcblxuICBjb25zdCBpbmNvcnJlY3RGaWxlQXJyYXlGaWVsZHMgPSAkKHJlY29yZE5vZGUuZmllbGRzLCBbXG4gICAgZmlsdGVyKGEgPT4gYS50eXBlID09PSAnYXJyYXk8ZmlsZT4nXG4gICAgICAmJiAkKHJlY29yZFthLm5hbWVdLCBbXG4gICAgICAgIHNvbWUoZiA9PiByZWNvcmRbZi5uYW1lXS5yZWxhdGl2ZVBhdGggPT09IHJlbGF0aXZlRmlsZVBhdGhcbiAgICAgICAgICAmJiByZWNvcmRbZi5uYW1lXS5zaXplICE9PSBleHBlY3RlZFNpemUpLFxuICAgICAgXSkpLFxuICAgIG1hcChmID0+IGYubmFtZSksXG4gIF0pO1xuXG4gIGNvbnN0IGluY29ycmVjdEZpZWxkcyA9IFtcbiAgICAuLi5pbmNvcnJlY3RGaWxlRmllbGRzLFxuICAgIC4uLmluY29ycmVjdEZpbGVBcnJheUZpZWxkcyxcbiAgXTtcblxuICBpZiAoaW5jb3JyZWN0RmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYWZlR2V0RnVsbEZpbGVQYXRoID0gKHJlY29yZEtleSwgcmVsYXRpdmVGaWxlUGF0aCkgPT4ge1xuICBjb25zdCBuYXVnaHR5VXNlciA9ICgpID0+IHsgdGhyb3cgbmV3IEZvcmJpZGRlbkVycm9yKCduYXVnaHR5IG5hdWdodHknKTsgfTtcblxuICBpZiAocmVsYXRpdmVGaWxlUGF0aC5zdGFydHNXaXRoKCcuLicpKSBuYXVnaHR5VXNlcigpO1xuXG4gIGNvbnN0IHBhdGhQYXJ0cyA9IHNwbGl0S2V5KHJlbGF0aXZlRmlsZVBhdGgpO1xuXG4gIGlmIChpbmNsdWRlcygnLi4nKShwYXRoUGFydHMpKSBuYXVnaHR5VXNlcigpO1xuXG4gIGNvbnN0IHJlY29yZEtleVBhcnRzID0gc3BsaXRLZXkocmVjb3JkS2V5KTtcblxuICBjb25zdCBmdWxsUGF0aFBhcnRzID0gW1xuICAgIC4uLnJlY29yZEtleVBhcnRzLFxuICAgICdmaWxlcycsXG4gICAgLi4uZmlsdGVyKHAgPT4gcCAhPT0gJy4nKShwYXRoUGFydHMpLFxuICBdO1xuXG4gIHJldHVybiBqb2luS2V5KGZ1bGxQYXRoUGFydHMpO1xufTtcbiIsImltcG9ydCB7IGFwaVdyYXBwZXIsIGV2ZW50cywgaXNOb3RoaW5nIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuLi9hdXRoQXBpL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IHNhZmVHZXRGdWxsRmlsZVBhdGggfSBmcm9tICcuL3VwbG9hZEZpbGUnO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBkb3dubG9hZEZpbGUgPSBhcHAgPT4gYXN5bmMgKHJlY29yZEtleSwgcmVsYXRpdmVQYXRoKSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5yZWNvcmRBcGkudXBsb2FkRmlsZSxcbiAgcGVybWlzc2lvbi5yZWFkUmVjb3JkLmlzQXV0aG9yaXplZChyZWNvcmRLZXkpLFxuICB7IHJlY29yZEtleSwgcmVsYXRpdmVQYXRoIH0sLy9yZW1vdmUgZHVwZSBrZXkgJ3JlY29yZEtleScgZnJvbSBvYmplY3RcbiAgX2Rvd25sb2FkRmlsZSwgYXBwLCByZWNvcmRLZXksIHJlbGF0aXZlUGF0aCxcbik7IFxuXG5cbmNvbnN0IF9kb3dubG9hZEZpbGUgPSBhc3luYyAoYXBwLCByZWNvcmRLZXksIHJlbGF0aXZlUGF0aCkgPT4ge1xuICBpZiAoaXNOb3RoaW5nKHJlY29yZEtleSkpIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignUmVjb3JkIEtleSBub3Qgc3VwcGxpZWQnKTsgfVxuICBpZiAoaXNOb3RoaW5nKHJlbGF0aXZlUGF0aCkpIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignZmlsZSBwYXRoIG5vdCBzdXBwbGllZCcpOyB9XG5cbiAgcmV0dXJuIGF3YWl0IGFwcC5kYXRhc3RvcmUucmVhZGFibGVGaWxlU3RyZWFtKFxuICAgIHNhZmVHZXRGdWxsRmlsZVBhdGgoXG4gICAgICByZWNvcmRLZXksIHJlbGF0aXZlUGF0aCxcbiAgICApLFxuICApO1xufTtcbiIsImltcG9ydCB7IGZpbmQsIHRha2UsIHVuaW9uIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGdldEZsYXR0ZW5lZEhpZXJhcmNoeSB9IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyAkLCBzcGxpdEtleSwgam9pbktleSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBjdXN0b21JZCA9IGFwcCA9PiAobm9kZU5hbWUsIGlkKSA9PiB7XG4gIGNvbnN0IG5vZGUgPSAkKGFwcC5oaWVyYXJjaHksIFtcbiAgICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG4gICAgZmluZChuID0+IG4ubmFtZSA9PT0gbm9kZU5hbWUpLFxuICBdKTtcblxuICBpZiAoIW5vZGUpIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBDYW5ub3QgZmluZCBub2RlICR7bm9kZU5hbWV9YCk7XG5cbiAgcmV0dXJuIGAke25vZGUubm9kZUlkfS0ke2lkfWA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q3VzdG9tSWQgPSBhcHAgPT4gKHJlY29yZCwgaWQpID0+IHtcbiAgcmVjb3JkLmlkID0gY3VzdG9tSWQoYXBwKShyZWNvcmQudHlwZSwgaWQpO1xuXG4gIGNvbnN0IGtleVBhcnRzID0gc3BsaXRLZXkocmVjb3JkLmtleSk7XG5cbiAgcmVjb3JkLmtleSA9ICQoa2V5UGFydHMsIFtcbiAgICB0YWtlKGtleVBhcnRzLmxlbmd0aCAtIDEpLFxuICAgIHVuaW9uKFtyZWNvcmQuaWRdKSxcbiAgICBqb2luS2V5LFxuICBdKTtcblxuICByZXR1cm4gcmVjb3JkO1xufTtcbiIsImltcG9ydCB7IGdldE5ldywgZ2V0TmV3Q2hpbGQgfSBmcm9tICcuL2dldE5ldyc7XG5pbXBvcnQgeyBsb2FkIH0gZnJvbSAnLi9sb2FkJztcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSAnLi92YWxpZGF0ZSc7XG5pbXBvcnQgeyBnZXRDb250ZXh0IH0gZnJvbSAnLi9nZXRDb250ZXh0JztcbmltcG9ydCB7IHNhdmUgfSBmcm9tICcuL3NhdmUnO1xuaW1wb3J0IHsgZGVsZXRlUmVjb3JkIH0gZnJvbSAnLi9kZWxldGUnO1xuaW1wb3J0IHsgdXBsb2FkRmlsZSB9IGZyb20gJy4vdXBsb2FkRmlsZSc7XG5pbXBvcnQgeyBkb3dubG9hZEZpbGUgfSBmcm9tICcuL2Rvd25sb2FkRmlsZSc7XG5pbXBvcnQgeyBjdXN0b21JZCwgc2V0Q3VzdG9tSWQgfSBmcm9tICcuL2N1c3RvbUlkJztcblxuY29uc3QgYXBpID0gYXBwID0+ICh7XG4gIGdldE5ldzogZ2V0TmV3KGFwcCksXG4gIGdldE5ld0NoaWxkOiBnZXROZXdDaGlsZChhcHApLFxuICBzYXZlOiBzYXZlKGFwcCksXG4gIGxvYWQ6IGxvYWQoYXBwKSxcbiAgZGVsZXRlOiBkZWxldGVSZWNvcmQoYXBwLCBmYWxzZSksXG4gIHZhbGlkYXRlOiB2YWxpZGF0ZShhcHApLFxuICBnZXRDb250ZXh0OiBnZXRDb250ZXh0KGFwcCksXG4gIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGUoYXBwKSxcbiAgZG93bmxvYWRGaWxlOiBkb3dubG9hZEZpbGUoYXBwKSxcbiAgY3VzdG9tSWQ6IGN1c3RvbUlkKGFwcCksXG4gIHNldEN1c3RvbUlkOiBzZXRDdXN0b21JZChhcHApLFxufSk7XG5cblxuZXhwb3J0IGNvbnN0IGdldFJlY29yZEFwaSA9IGFwcCA9PiBhcGkoYXBwKTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0UmVjb3JkQXBpO1xuIiwiaW1wb3J0IHsgZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoIH0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcbmltcG9ydCB7XG4gIGlzTm90aGluZywgc2FmZUtleSwgYXBpV3JhcHBlclN5bmMsIGV2ZW50cyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGFsd2F5c0F1dGhvcml6ZWQgfSBmcm9tICcuLi9hdXRoQXBpL3Blcm1pc3Npb25zJztcblxuZXhwb3J0IGNvbnN0IGdldEFsbG93ZWRSZWNvcmRUeXBlcyA9IGFwcCA9PiBrZXkgPT4gYXBpV3JhcHBlclN5bmMoXG4gIGFwcCxcbiAgZXZlbnRzLmNvbGxlY3Rpb25BcGkuZ2V0QWxsb3dlZFJlY29yZFR5cGVzLFxuICBhbHdheXNBdXRob3JpemVkLFxuICB7IGtleSB9LFxuICBfZ2V0QWxsb3dlZFJlY29yZFR5cGVzLCBhcHAsIGtleSxcbik7XG5cbmNvbnN0IF9nZXRBbGxvd2VkUmVjb3JkVHlwZXMgPSAoYXBwLCBrZXkpID0+IHtcbiAga2V5ID0gc2FmZUtleShrZXkpO1xuICBjb25zdCBub2RlID0gZ2V0Tm9kZUZvckNvbGxlY3Rpb25QYXRoKGFwcC5oaWVyYXJjaHkpKGtleSk7XG4gIHJldHVybiBpc05vdGhpbmcobm9kZSkgPyBbXSA6IFtub2RlLm5hbWVdO1xufTtcbiIsImltcG9ydCB7IGdldEFsbElkc0l0ZXJhdG9yIH0gZnJvbSAnLi4vaW5kZXhpbmcvYWxsSWRzJztcbmltcG9ydCB7IGdldEFsbG93ZWRSZWNvcmRUeXBlcyB9IGZyb20gJy4vZ2V0QWxsb3dlZFJlY29yZFR5cGVzJztcbmltcG9ydCB7IGRlbGV0ZUNvbGxlY3Rpb24gfSBmcm9tICcuL2RlbGV0ZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xsZWN0aW9uQXBpID0gYXBwID0+ICh7XG4gIGdldEFsbG93ZWRSZWNvcmRUeXBlczogZ2V0QWxsb3dlZFJlY29yZFR5cGVzKGFwcCksXG4gIGdldEFsbElkc0l0ZXJhdG9yOiBnZXRBbGxJZHNJdGVyYXRvcihhcHApLFxuICBkZWxldGU6IGRlbGV0ZUNvbGxlY3Rpb24oYXBwKSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRDb2xsZWN0aW9uQXBpO1xuIiwiaW1wb3J0IHtcbiAgZmluZCwgZmlsdGVyLCBcbiAgaW5jbHVkZXMsIHNvbWUsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBnZXRBbGxJZHNJdGVyYXRvciB9IGZyb20gJy4uL2luZGV4aW5nL2FsbElkcyc7XG5pbXBvcnQge1xuICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksIGdldFJlY29yZE5vZGVCeUlkLFxuICBnZXRDb2xsZWN0aW9uTm9kZUJ5S2V5T3JOb2RlS2V5LCBnZXROb2RlLCBpc0luZGV4LFxuICBpc1JlY29yZCwgaXNEZWNlbmRhbnQsIGdldEFsbG93ZWRSZWNvcmROb2Rlc0ZvckluZGV4LFxuICBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9JbmRleCxcbn0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcbmltcG9ydCB7XG4gIGpvaW5LZXksIGFwaVdyYXBwZXIsIGV2ZW50cywgJCwgYWxsVHJ1ZSxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7XG4gIGNyZWF0ZUJ1aWxkSW5kZXhGb2xkZXIsXG4gIHRyYW5zYWN0aW9uRm9yQnVpbGRJbmRleCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zL2NyZWF0ZSc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBCYWRSZXF1ZXN0RXJyb3IgfSBmcm9tICcuLi9jb21tb24vZXJyb3JzJztcblxuXG4vKiogcmVidWlsZHMgYW4gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0fSBhcHAgLSB0aGUgYXBwbGljYXRpb24gY29udGFpbmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOb2RlS2V5IC0gbm9kZSBrZXkgb2YgdGhlIGluZGV4LCB3aGljaCB0aGUgaW5kZXggYmVsb25ncyB0b1xuICovXG5leHBvcnQgY29uc3QgYnVpbGRJbmRleCA9IGFwcCA9PiBhc3luYyBpbmRleE5vZGVLZXkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuaW5kZXhBcGkuYnVpbGRJbmRleCxcbiAgcGVybWlzc2lvbi5tYW5hZ2VJbmRleC5pc0F1dGhvcml6ZWQsXG4gIHsgaW5kZXhOb2RlS2V5IH0sXG4gIF9idWlsZEluZGV4LCBhcHAsIGluZGV4Tm9kZUtleSxcbik7XG5cbmNvbnN0IF9idWlsZEluZGV4ID0gYXN5bmMgKGFwcCwgaW5kZXhOb2RlS2V5KSA9PiB7XG4gIGNvbnN0IGluZGV4Tm9kZSA9IGdldE5vZGUoYXBwLmhpZXJhcmNoeSwgaW5kZXhOb2RlS2V5KTtcblxuICBhd2FpdCBjcmVhdGVCdWlsZEluZGV4Rm9sZGVyKGFwcC5kYXRhc3RvcmUsIGluZGV4Tm9kZUtleSk7XG5cbiAgaWYgKCFpc0luZGV4KGluZGV4Tm9kZSkpIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignQnVpbGRJbmRleDogbXVzdCBzdXBwbHkgYW4gaW5kZXhub2RlJyk7IH1cblxuICBpZiAoaW5kZXhOb2RlLmluZGV4VHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICBhd2FpdCBidWlsZFJldmVyc2VSZWZlcmVuY2VJbmRleChcbiAgICAgIGFwcCwgaW5kZXhOb2RlLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYnVpbGRIZWlyYXJjaGFsSW5kZXgoXG4gICAgICBhcHAsIGluZGV4Tm9kZSxcbiAgICApO1xuICB9XG5cbiAgYXdhaXQgYXBwLmNsZWFudXBUcmFuc2FjdGlvbnMoKTtcbn07XG5cbmNvbnN0IGJ1aWxkUmV2ZXJzZVJlZmVyZW5jZUluZGV4ID0gYXN5bmMgKGFwcCwgaW5kZXhOb2RlKSA9PiB7XG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgcmVmZXJlbmNJTkcgcmVjb3JkcyxcbiAgLy8gYW5kIHVwZGF0ZSByZWZlcmVuY2VkIGluZGV4IGZvciBlYWNoIHJlY29yZFxuICBsZXQgcmVjb3JkQ291bnQgPSAwO1xuICBjb25zdCByZWZlcmVuY2luZ05vZGVzID0gJChhcHAuaGllcmFyY2h5LCBbXG4gICAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICAgIGZpbHRlcihuID0+IGlzUmVjb3JkKG4pXG4gICAgICAgICAgICAgICAgICAgICYmIHNvbWUoZmllbGRSZXZlcnNlc1JlZmVyZW5jZVRvSW5kZXgoaW5kZXhOb2RlKSkobi5maWVsZHMpKSxcbiAgXSk7XG5cbiAgY29uc3QgY3JlYXRlVHJhbnNhY3Rpb25zRm9yUmVmZXJlbmNpbmdOb2RlID0gYXN5bmMgKHJlZmVyZW5jaW5nTm9kZSkgPT4ge1xuICAgIGNvbnN0IGl0ZXJhdGVSZWZlcmVuY2luZ05vZGVzID0gYXdhaXQgZ2V0QWxsSWRzSXRlcmF0b3IoYXBwKShyZWZlcmVuY2luZ05vZGUuY29sbGVjdGlvbk5vZGVLZXkoKSk7XG5cbiAgICBsZXQgcmVmZXJlbmNpbmdJZEl0ZXJhdG9yID0gYXdhaXQgaXRlcmF0ZVJlZmVyZW5jaW5nTm9kZXMoKTtcbiAgICB3aGlsZSAoIXJlZmVyZW5jaW5nSWRJdGVyYXRvci5kb25lKSB7XG4gICAgICBjb25zdCB7IHJlc3VsdCB9ID0gcmVmZXJlbmNpbmdJZEl0ZXJhdG9yO1xuICAgICAgZm9yIChjb25zdCBpZCBvZiByZXN1bHQuaWRzKSB7XG4gICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGpvaW5LZXkocmVzdWx0LmNvbGxlY3Rpb25LZXksIGlkKTtcbiAgICAgICAgYXdhaXQgdHJhbnNhY3Rpb25Gb3JCdWlsZEluZGV4KGFwcCwgaW5kZXhOb2RlLm5vZGVLZXkoKSwgcmVjb3JkS2V5LCByZWNvcmRDb3VudCk7XG4gICAgICAgIHJlY29yZENvdW50Kys7XG4gICAgICB9XG4gICAgICByZWZlcmVuY2luZ0lkSXRlcmF0b3IgPSBhd2FpdCBpdGVyYXRlUmVmZXJlbmNpbmdOb2RlcygpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IHJlZmVyZW5jaW5nTm9kZSBvZiByZWZlcmVuY2luZ05vZGVzKSB7XG4gICAgYXdhaXQgY3JlYXRlVHJhbnNhY3Rpb25zRm9yUmVmZXJlbmNpbmdOb2RlKHJlZmVyZW5jaW5nTm9kZSk7XG4gIH1cbn07XG5cbmNvbnN0IGdldEFsbG93ZWRQYXJlbnRDb2xsZWN0aW9uTm9kZXMgPSAoaGllcmFyY2h5LCBpbmRleE5vZGUpID0+ICQoZ2V0QWxsb3dlZFJlY29yZE5vZGVzRm9ySW5kZXgoaGllcmFyY2h5LCBpbmRleE5vZGUpLCBbXG4gIG1hcChuID0+IG4ucGFyZW50KCkpLFxuXSk7XG5cbmNvbnN0IGJ1aWxkSGVpcmFyY2hhbEluZGV4ID0gYXN5bmMgKGFwcCwgaW5kZXhOb2RlKSA9PiB7XG4gIGxldCByZWNvcmRDb3VudCA9IDA7XG5cbiAgY29uc3QgY3JlYXRlVHJhbnNhY3Rpb25zRm9ySWRzID0gYXN5bmMgKGNvbGxlY3Rpb25LZXksIGlkcykgPT4ge1xuICAgIGZvciAoY29uc3QgcmVjb3JkSWQgb2YgaWRzKSB7XG4gICAgICBjb25zdCByZWNvcmRLZXkgPSBqb2luS2V5KGNvbGxlY3Rpb25LZXksIHJlY29yZElkKTtcblxuICAgICAgY29uc3QgcmVjb3JkTm9kZSA9IGdldFJlY29yZE5vZGVCeUlkKFxuICAgICAgICBhcHAuaGllcmFyY2h5LFxuICAgICAgICByZWNvcmRJZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZWNvcmROb2RlQXBwbGllcyhpbmRleE5vZGUpKHJlY29yZE5vZGUpKSB7XG4gICAgICAgIGF3YWl0IHRyYW5zYWN0aW9uRm9yQnVpbGRJbmRleChcbiAgICAgICAgICBhcHAsIGluZGV4Tm9kZS5ub2RlS2V5KCksXG4gICAgICAgICAgcmVjb3JkS2V5LCByZWNvcmRDb3VudCxcbiAgICAgICAgKTtcbiAgICAgICAgcmVjb3JkQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cblxuICBjb25zdCBjb2xsZWN0aW9uUmVjb3JkcyA9IGdldEFsbG93ZWRSZWNvcmROb2Rlc0ZvckluZGV4KGFwcC5oaWVyYXJjaHksIGluZGV4Tm9kZSk7XG5cbiAgZm9yIChjb25zdCB0YXJnZXRDb2xsZWN0aW9uUmVjb3JkTm9kZSBvZiBjb2xsZWN0aW9uUmVjb3Jkcykge1xuICAgIGNvbnN0IGFsbElkc0l0ZXJhdG9yID0gYXdhaXQgZ2V0QWxsSWRzSXRlcmF0b3IoYXBwKSh0YXJnZXRDb2xsZWN0aW9uUmVjb3JkTm9kZS5jb2xsZWN0aW9uTm9kZUtleSgpKTtcblxuICAgIGxldCBhbGxJZHMgPSBhd2FpdCBhbGxJZHNJdGVyYXRvcigpO1xuICAgIHdoaWxlIChhbGxJZHMuZG9uZSA9PT0gZmFsc2UpIHtcbiAgICAgIGF3YWl0IGNyZWF0ZVRyYW5zYWN0aW9uc0ZvcklkcyhcbiAgICAgICAgYWxsSWRzLnJlc3VsdC5jb2xsZWN0aW9uS2V5LFxuICAgICAgICBhbGxJZHMucmVzdWx0LmlkcyxcbiAgICAgICk7XG4gICAgICBhbGxJZHMgPSBhd2FpdCBhbGxJZHNJdGVyYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWNvcmRDb3VudDtcbn07XG5cbmNvbnN0IGNob29zZUNoaWxkUmVjb3JkTm9kZUJ5S2V5ID0gKGNvbGxlY3Rpb25Ob2RlLCByZWNvcmRJZCkgPT4gZmluZChjID0+IHJlY29yZElkLnN0YXJ0c1dpdGgoYy5ub2RlSWQpKShjb2xsZWN0aW9uTm9kZS5jaGlsZHJlbik7XG5cbmNvbnN0IHJlY29yZE5vZGVBcHBsaWVzID0gaW5kZXhOb2RlID0+IHJlY29yZE5vZGUgPT4gaW5jbHVkZXMocmVjb3JkTm9kZS5ub2RlSWQpKGluZGV4Tm9kZS5hbGxvd2VkUmVjb3JkTm9kZUlkcyk7XG5cbmNvbnN0IGhhc0FwcGxpY2FibGVEZWNlbmRhbnQgPSAoaGllcmFyY2h5LCBhbmNlc3Rvck5vZGUsIGluZGV4Tm9kZSkgPT4gJChoaWVyYXJjaHksIFtcbiAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICBmaWx0ZXIoXG4gICAgYWxsVHJ1ZShcbiAgICAgIGlzUmVjb3JkLFxuICAgICAgaXNEZWNlbmRhbnQoYW5jZXN0b3JOb2RlKSxcbiAgICAgIHJlY29yZE5vZGVBcHBsaWVzKGluZGV4Tm9kZSksXG4gICAgKSxcbiAgKSxcbl0pO1xuXG5jb25zdCBhcHBseUFsbERlY2VuZGFudFJlY29yZHMgPSBhc3luYyAoYXBwLCBjb2xsZWN0aW9uX0tleV9vcl9Ob2RlS2V5LFxuICBpbmRleE5vZGUsIGluZGV4S2V5LCBjdXJyZW50SW5kZXhlZERhdGEsXG4gIGN1cnJlbnRJbmRleGVkRGF0YUtleSwgcmVjb3JkQ291bnQgPSAwKSA9PiB7XG4gIGNvbnN0IGNvbGxlY3Rpb25Ob2RlID0gZ2V0Q29sbGVjdGlvbk5vZGVCeUtleU9yTm9kZUtleShcbiAgICBhcHAuaGllcmFyY2h5LFxuICAgIGNvbGxlY3Rpb25fS2V5X29yX05vZGVLZXksXG4gICk7XG5cbiAgY29uc3QgYWxsSWRzSXRlcmF0b3IgPSBhd2FpdCBnZXRBbGxJZHNJdGVyYXRvcihhcHApKGNvbGxlY3Rpb25fS2V5X29yX05vZGVLZXkpO1xuXG5cbiAgY29uc3QgY3JlYXRlVHJhbnNhY3Rpb25zRm9ySWRzID0gYXN5bmMgKGNvbGxlY3Rpb25LZXksIGFsbElkcykgPT4ge1xuICAgIGZvciAoY29uc3QgcmVjb3JkSWQgb2YgYWxsSWRzKSB7XG4gICAgICBjb25zdCByZWNvcmRLZXkgPSBqb2luS2V5KGNvbGxlY3Rpb25LZXksIHJlY29yZElkKTtcblxuICAgICAgY29uc3QgcmVjb3JkTm9kZSA9IGNob29zZUNoaWxkUmVjb3JkTm9kZUJ5S2V5KFxuICAgICAgICBjb2xsZWN0aW9uTm9kZSxcbiAgICAgICAgcmVjb3JkSWQsXG4gICAgICApO1xuXG4gICAgICBpZiAocmVjb3JkTm9kZUFwcGxpZXMoaW5kZXhOb2RlKShyZWNvcmROb2RlKSkge1xuICAgICAgICBhd2FpdCB0cmFuc2FjdGlvbkZvckJ1aWxkSW5kZXgoXG4gICAgICAgICAgYXBwLCBpbmRleE5vZGUubm9kZUtleSgpLFxuICAgICAgICAgIHJlY29yZEtleSwgcmVjb3JkQ291bnQsXG4gICAgICAgICk7XG4gICAgICAgIHJlY29yZENvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNBcHBsaWNhYmxlRGVjZW5kYW50KGFwcC5oaWVyYXJjaHksIHJlY29yZE5vZGUsIGluZGV4Tm9kZSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZENvbGxlY3Rpb25Ob2RlIG9mIHJlY29yZE5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICByZWNvcmRDb3VudCA9IGF3YWl0IGFwcGx5QWxsRGVjZW5kYW50UmVjb3JkcyhcbiAgICAgICAgICAgIGFwcCxcbiAgICAgICAgICAgIGpvaW5LZXkocmVjb3JkS2V5LCBjaGlsZENvbGxlY3Rpb25Ob2RlLmNvbGxlY3Rpb25OYW1lKSxcbiAgICAgICAgICAgIGluZGV4Tm9kZSwgaW5kZXhLZXksIGN1cnJlbnRJbmRleGVkRGF0YSxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleGVkRGF0YUtleSwgcmVjb3JkQ291bnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgYWxsSWRzID0gYXdhaXQgYWxsSWRzSXRlcmF0b3IoKTtcbiAgd2hpbGUgKGFsbElkcy5kb25lID09PSBmYWxzZSkge1xuICAgIGF3YWl0IGNyZWF0ZVRyYW5zYWN0aW9uc0ZvcklkcyhcbiAgICAgIGFsbElkcy5yZXN1bHQuY29sbGVjdGlvbktleSxcbiAgICAgIGFsbElkcy5yZXN1bHQuaWRzLFxuICAgICk7XG4gICAgYWxsSWRzID0gYXdhaXQgYWxsSWRzSXRlcmF0b3IoKTtcbiAgfVxuXG4gIHJldHVybiByZWNvcmRDb3VudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkSW5kZXg7XG4iLCJpbXBvcnQgeyBoYXMsIGlzTnVtYmVyLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgY29tcGlsZUNvZGUgfSBmcm9tICdAbngtanMvY29tcGlsZXItdXRpbCc7XG5pbXBvcnQge1xuICBzYWZlS2V5LCBhcGlXcmFwcGVyLFxuICBldmVudHMsIGlzTm9uRW1wdHlTdHJpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBpdGVyYXRlSW5kZXggfSBmcm9tICcuLi9pbmRleGluZy9yZWFkJztcbmltcG9ydCB7XG4gIGdldFVuc2hhcmRlZEluZGV4RGF0YUtleSxcbiAgZ2V0U2hhcmRLZXlzSW5SYW5nZSxcbn0gZnJvbSAnLi4vaW5kZXhpbmcvc2hhcmRpbmcnO1xuaW1wb3J0IHtcbiAgZ2V0RXhhY3ROb2RlRm9yUGF0aCwgaXNJbmRleCxcbiAgaXNTaGFyZGVkSW5kZXgsXG59IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyBDT05USU5VRV9SRUFESU5HX1JFQ09SRFMgfSBmcm9tICcuLi9pbmRleGluZy9zZXJpYWxpemVyJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuLi9hdXRoQXBpL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IEJhZFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL2NvbW1vbi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3QgYWdncmVnYXRlcyA9IGFwcCA9PiBhc3luYyAoaW5kZXhLZXksIHJhbmdlU3RhcnRQYXJhbXMgPSBudWxsLCByYW5nZUVuZFBhcmFtcyA9IG51bGwpID0+IGFwaVdyYXBwZXIoXG4gIGFwcCxcbiAgZXZlbnRzLmluZGV4QXBpLmFnZ3JlZ2F0ZXMsXG4gIHBlcm1pc3Npb24ucmVhZEluZGV4LmlzQXV0aG9yaXplZChpbmRleEtleSksXG4gIHsgaW5kZXhLZXksIHJhbmdlU3RhcnRQYXJhbXMsIHJhbmdlRW5kUGFyYW1zIH0sXG4gIF9hZ2dyZWdhdGVzLCBhcHAsIGluZGV4S2V5LCByYW5nZVN0YXJ0UGFyYW1zLCByYW5nZUVuZFBhcmFtcyxcbik7XG5cbmNvbnN0IF9hZ2dyZWdhdGVzID0gYXN5bmMgKGFwcCwgaW5kZXhLZXksIHJhbmdlU3RhcnRQYXJhbXMsIHJhbmdlRW5kUGFyYW1zKSA9PiB7XG4gIGluZGV4S2V5ID0gc2FmZUtleShpbmRleEtleSk7XG4gIGNvbnN0IGluZGV4Tm9kZSA9IGdldEV4YWN0Tm9kZUZvclBhdGgoYXBwLmhpZXJhcmNoeSkoaW5kZXhLZXkpO1xuXG4gIGlmICghaXNJbmRleChpbmRleE5vZGUpKSB7IHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IoJ3N1cHBsaWVkIGtleSBpcyBub3QgYW4gaW5kZXgnKTsgfVxuXG4gIGlmIChpc1NoYXJkZWRJbmRleChpbmRleE5vZGUpKSB7XG4gICAgY29uc3Qgc2hhcmRLZXlzID0gYXdhaXQgZ2V0U2hhcmRLZXlzSW5SYW5nZShcbiAgICAgIGFwcCwgaW5kZXhLZXksIHJhbmdlU3RhcnRQYXJhbXMsIHJhbmdlRW5kUGFyYW1zLFxuICAgICk7XG4gICAgbGV0IGFnZ3JlZ2F0ZVJlc3VsdCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBrIG9mIHNoYXJkS2V5cykge1xuICAgICAgY29uc3Qgc2hhcmRSZXN1bHQgPSBhd2FpdCBnZXRBZ2dyZWdhdGVzKGFwcC5oaWVyYXJjaHksIGFwcC5kYXRhc3RvcmUsIGluZGV4Tm9kZSwgayk7XG4gICAgICBpZiAoYWdncmVnYXRlUmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgIGFnZ3JlZ2F0ZVJlc3VsdCA9IHNoYXJkUmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWdncmVnYXRlUmVzdWx0ID0gbWVyZ2VTaGFyZEFnZ3JlZ2F0ZShcbiAgICAgICAgICBhZ2dyZWdhdGVSZXN1bHQsXG4gICAgICAgICAgc2hhcmRSZXN1bHQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhZ2dyZWdhdGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGdldEFnZ3JlZ2F0ZXMoXG4gICAgYXBwLmhpZXJhcmNoeSxcbiAgICBhcHAuZGF0YXN0b3JlLFxuICAgIGluZGV4Tm9kZSxcbiAgICBnZXRVbnNoYXJkZWRJbmRleERhdGFLZXkoaW5kZXhLZXkpLFxuICApO1xufTtcblxuY29uc3QgbWVyZ2VTaGFyZEFnZ3JlZ2F0ZSA9ICh0b3RhbHMsIHNoYXJkKSA9PiB7XG4gIGNvbnN0IG1lcmdlR3JvdXBpbmcgPSAodG90LCBzaHIpID0+IHtcbiAgICB0b3QuY291bnQgKz0gc2hyLmNvdW50O1xuICAgIGZvciAoY29uc3QgYWdnTmFtZSBpbiB0b3QpIHtcbiAgICAgIGlmIChhZ2dOYW1lID09PSAnY291bnQnKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHRvdGFnZyA9IHRvdFthZ2dOYW1lXTtcbiAgICAgIGNvbnN0IHNocmFnZyA9IHNoclthZ2dOYW1lXTtcbiAgICAgIHRvdGFnZy5zdW0gKz0gc2hyYWdnLnN1bTtcbiAgICAgIHRvdGFnZy5tYXggPSB0b3RhZ2cubWF4ID4gc2hyYWdnLm1heFxuICAgICAgICA/IHRvdGFnZy5tYXhcbiAgICAgICAgOiBzaHJhZ2cubWF4O1xuICAgICAgdG90YWdnLm1pbiA9IHRvdGFnZy5taW4gPCBzaHJhZ2cubWluXG4gICAgICAgID8gdG90YWdnLm1pblxuICAgICAgICA6IHNocmFnZy5taW47XG4gICAgICB0b3RhZ2cubWVhbiA9IHRvdGFnZy5zdW0gLyB0b3QuY291bnQ7XG4gICAgfVxuICAgIHJldHVybiB0b3Q7XG4gIH07XG5cbiAgZm9yIChjb25zdCBhZ2dHcm91cERlZiBpbiB0b3RhbHMpIHtcbiAgICBmb3IgKGNvbnN0IGdyb3VwaW5nIGluIHNoYXJkW2FnZ0dyb3VwRGVmXSkge1xuICAgICAgY29uc3QgZ3JvdXBpbmdUb3RhbCA9IHRvdGFsc1thZ2dHcm91cERlZl1bZ3JvdXBpbmddO1xuICAgICAgdG90YWxzW2FnZ0dyb3VwRGVmXVtncm91cGluZ10gPSBpc1VuZGVmaW5lZChncm91cGluZ1RvdGFsKVxuICAgICAgICA/IHNoYXJkW2FnZ0dyb3VwRGVmXVtncm91cGluZ11cbiAgICAgICAgOiBtZXJnZUdyb3VwaW5nKFxuICAgICAgICAgIHRvdGFsc1thZ2dHcm91cERlZl1bZ3JvdXBpbmddLFxuICAgICAgICAgIHNoYXJkW2FnZ0dyb3VwRGVmXVtncm91cGluZ10sXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRvdGFscztcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0ZXMgPSBhc3luYyAoaGllcmFyY2h5LCBkYXRhc3RvcmUsIGluZGV4LCBpbmRleGVkRGF0YUtleSkgPT4ge1xuICBjb25zdCBhZ2dyZWdhdGVSZXN1bHQgPSB7fTtcbiAgY29uc3QgZG9SZWFkID0gaXRlcmF0ZUluZGV4KFxuICAgICAgICBhc3luYyBpdGVtID0+IHtcbiAgICAgIGFwcGx5SXRlbVRvQWdncmVnYXRlUmVzdWx0KFxuICAgICAgICBpbmRleCwgYWdncmVnYXRlUmVzdWx0LCBpdGVtLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBDT05USU5VRV9SRUFESU5HX1JFQ09SRFM7XG4gICAgfSxcbiAgICAgICAgYXN5bmMgKCkgPT4gYWdncmVnYXRlUmVzdWx0XG4gICk7XG5cbiAgcmV0dXJuIGF3YWl0IGRvUmVhZChoaWVyYXJjaHksIGRhdGFzdG9yZSwgaW5kZXgsIGluZGV4ZWREYXRhS2V5KTtcbn07XG5cblxuY29uc3QgYXBwbHlJdGVtVG9BZ2dyZWdhdGVSZXN1bHQgPSAoaW5kZXhOb2RlLCByZXN1bHQsIGl0ZW0pID0+IHtcbiAgY29uc3QgZ2V0SW5pdGlhbEFnZ3JlZ2F0ZVJlc3VsdCA9ICgpID0+ICh7XG4gICAgc3VtOiAwLCBtZWFuOiBudWxsLCBtYXg6IG51bGwsIG1pbjogbnVsbCxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbHlBZ2dyZWdhdGVSZXN1bHQgPSAoYWdnLCBleGlzdGluZywgY291bnQpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbXBpbGVDb2RlKGFnZy5hZ2dyZWdhdGVkVmFsdWUpKHsgcmVjb3JkOiBpdGVtIH0pO1xuXG4gICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHJldHVybiBleGlzdGluZztcblxuICAgIGV4aXN0aW5nLnN1bSArPSB2YWx1ZTtcbiAgICBleGlzdGluZy5tYXggPSB2YWx1ZSA+IGV4aXN0aW5nLm1heCB8fCBleGlzdGluZy5tYXggPT09IG51bGxcbiAgICAgID8gdmFsdWVcbiAgICAgIDogZXhpc3RpbmcubWF4O1xuICAgIGV4aXN0aW5nLm1pbiA9IHZhbHVlIDwgZXhpc3RpbmcubWluIHx8IGV4aXN0aW5nLm1pbiA9PT0gbnVsbFxuICAgICAgPyB2YWx1ZVxuICAgICAgOiBleGlzdGluZy5taW47XG4gICAgZXhpc3RpbmcubWVhbiA9IGV4aXN0aW5nLnN1bSAvIGNvdW50O1xuICAgIHJldHVybiBleGlzdGluZztcbiAgfTtcblxuICBmb3IgKGNvbnN0IGFnZ0dyb3VwIG9mIGluZGV4Tm9kZS5hZ2dyZWdhdGVHcm91cHMpIHtcbiAgICBpZiAoIWhhcyhhZ2dHcm91cC5uYW1lKShyZXN1bHQpKSB7XG4gICAgICByZXN1bHRbYWdnR3JvdXAubmFtZV0gPSB7fTtcbiAgICB9XG5cbiAgICBjb25zdCB0aGlzR3JvdXBSZXN1bHQgPSByZXN1bHRbYWdnR3JvdXAubmFtZV07XG5cbiAgICBpZiAoaXNOb25FbXB0eVN0cmluZyhhZ2dHcm91cC5jb25kaXRpb24pKSB7XG4gICAgICBpZiAoIWNvbXBpbGVFeHByZXNzaW9uKGFnZ0dyb3VwLmNvbmRpdGlvbikoeyByZWNvcmQ6IGl0ZW0gfSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGdyb3VwID0gaXNOb25FbXB0eVN0cmluZyhhZ2dHcm91cC5ncm91cEJ5KVxuICAgICAgPyBjb21waWxlQ29kZShhZ2dHcm91cC5ncm91cEJ5KSh7IHJlY29yZDogaXRlbSB9KVxuICAgICAgOiAnYWxsJztcbiAgICBpZiAoIWlzTm9uRW1wdHlTdHJpbmcoZ3JvdXApKSB7XG4gICAgICBncm91cCA9ICcobm9uZSknO1xuICAgIH1cblxuICAgIGlmICghaGFzKGdyb3VwKSh0aGlzR3JvdXBSZXN1bHQpKSB7XG4gICAgICB0aGlzR3JvdXBSZXN1bHRbZ3JvdXBdID0geyBjb3VudDogMCB9O1xuICAgICAgZm9yIChjb25zdCBhZ2cgb2YgYWdnR3JvdXAuYWdncmVnYXRlcykge1xuICAgICAgICB0aGlzR3JvdXBSZXN1bHRbZ3JvdXBdW2FnZy5uYW1lXSA9IGdldEluaXRpYWxBZ2dyZWdhdGVSZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzR3JvdXBSZXN1bHRbZ3JvdXBdLmNvdW50Kys7XG5cbiAgICBmb3IgKGNvbnN0IGFnZyBvZiBhZ2dHcm91cC5hZ2dyZWdhdGVzKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1ZhbHVlcyA9IHRoaXNHcm91cFJlc3VsdFtncm91cF1bYWdnLm5hbWVdO1xuICAgICAgdGhpc0dyb3VwUmVzdWx0W2dyb3VwXVthZ2cubmFtZV0gPSBhcHBseUFnZ3JlZ2F0ZVJlc3VsdChcbiAgICAgICAgYWdnLCBleGlzdGluZ1ZhbHVlcyxcbiAgICAgICAgdGhpc0dyb3VwUmVzdWx0W2dyb3VwXS5jb3VudCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59O1xuIiwiaW1wb3J0IHsgYnVpbGRJbmRleCB9IGZyb20gJy4vYnVpbGRJbmRleCc7XG5pbXBvcnQgeyBsaXN0SXRlbXMgfSBmcm9tICcuL2xpc3RJdGVtcyc7XG5pbXBvcnQgeyBhZ2dyZWdhdGVzIH0gZnJvbSAnLi9hZ2dyZWdhdGVzJztcblxuZXhwb3J0IGNvbnN0IGdldEluZGV4QXBpID0gYXBwID0+ICh7XG4gIGxpc3RJdGVtczogbGlzdEl0ZW1zKGFwcCksXG4gIGJ1aWxkSW5kZXg6IGJ1aWxkSW5kZXgoYXBwKSxcbiAgYWdncmVnYXRlczogYWdncmVnYXRlcyhhcHApLFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGdldEluZGV4QXBpO1xuIiwiaW1wb3J0IHsgZWFjaCwgY29uc3RhbnQsIGZpbmQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwLCBtYXggfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHtcbiAgc3dpdGNoQ2FzZSwgZGVmYXVsdENhc2UsIGpvaW5LZXksXG4gICQsIGlzTm90aGluZywgaXNTb21ldGhpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBpc0luZGV4LCBpc1Jvb3QsIGlzU2luZ2xlUmVjb3JkLCBpc0NvbGxlY3Rpb25SZWNvcmQsXG4gIGlzUmVjb3JkLCBpc2FnZ3JlZ2F0ZUdyb3VwLFxuICBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG59IGZyb20gJy4vaGllcmFyY2h5JztcbmltcG9ydCB7IGFsbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEJhZFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL2NvbW1vbi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTm9kZUVycm9ycyA9IHtcbiAgaW5kZXhDYW5ub3RCZVBhcmVudDogJ0luZGV4IHRlbXBsYXRlIGNhbm5vdCBiZSBhIHBhcmVudCcsXG4gIGFsbE5vblJvb3ROb2Rlc011c3RIYXZlUGFyZW50OiAnT25seSB0aGUgcm9vdCBub2RlIG1heSBoYXZlIG5vIHBhcmVudCcsXG4gIGluZGV4UGFyZW50TXVzdEJlUmVjb3JkT3JSb290OiAnQW4gaW5kZXggbWF5IG9ubHkgaGF2ZSBhIHJlY29yZCBvciByb290IGFzIGEgcGFyZW50JyxcbiAgYWdncmVnYXRlUGFyZW50TXVzdEJlQW5JbmRleDogJ2FnZ3JlZ2F0ZUdyb3VwIHBhcmVudCBtdXN0IGJlIGFuIGluZGV4Jyxcbn07XG5cbmNvbnN0IHBhdGhSZWd4TWFrZXIgPSBub2RlID0+ICgpID0+IG5vZGUubm9kZUtleSgpLnJlcGxhY2UoL3tpZH0vZywgJ1thLXpBLVowLTlfLV0rJyk7XG5cbmNvbnN0IG5vZGVLZXlNYWtlciA9IG5vZGUgPT4gKCkgPT4gc3dpdGNoQ2FzZShcblxuICBbbiA9PiBpc1JlY29yZChuKSAmJiAhaXNTaW5nbGVSZWNvcmQobiksXG4gICAgbiA9PiBqb2luS2V5KFxuICAgICAgbm9kZS5wYXJlbnQoKS5ub2RlS2V5KCksXG4gICAgICBub2RlLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgYCR7bi5ub2RlSWR9LXtpZH1gLFxuICAgICldLFxuXG4gIFtpc1Jvb3QsXG4gICAgY29uc3RhbnQoJy8nKV0sXG5cbiAgW2RlZmF1bHRDYXNlLFxuICAgIG4gPT4gam9pbktleShub2RlLnBhcmVudCgpLm5vZGVLZXkoKSwgbi5uYW1lKV0sXG5cbikobm9kZSk7XG5cblxuY29uc3QgdmFsaWRhdGUgPSBwYXJlbnQgPT4gKG5vZGUpID0+IHtcbiAgaWYgKGlzSW5kZXgobm9kZSlcbiAgICAgICAgJiYgaXNTb21ldGhpbmcocGFyZW50KVxuICAgICAgICAmJiAhaXNSb290KHBhcmVudClcbiAgICAgICAgJiYgIWlzUmVjb3JkKHBhcmVudCkpIHtcbiAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGNyZWF0ZU5vZGVFcnJvcnMuaW5kZXhQYXJlbnRNdXN0QmVSZWNvcmRPclJvb3QpO1xuICB9XG5cbiAgaWYgKGlzYWdncmVnYXRlR3JvdXAobm9kZSlcbiAgICAgICAgJiYgaXNTb21ldGhpbmcocGFyZW50KVxuICAgICAgICAmJiAhaXNJbmRleChwYXJlbnQpKSB7XG4gICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihjcmVhdGVOb2RlRXJyb3JzLmFnZ3JlZ2F0ZVBhcmVudE11c3RCZUFuSW5kZXgpO1xuICB9XG5cbiAgaWYgKGlzTm90aGluZyhwYXJlbnQpICYmICFpc1Jvb3Qobm9kZSkpIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihjcmVhdGVOb2RlRXJyb3JzLmFsbE5vblJvb3ROb2Rlc011c3RIYXZlUGFyZW50KTsgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuY29uc3QgY29uc3RydWN0ID0gcGFyZW50ID0+IChub2RlKSA9PiB7XG4gIG5vZGUubm9kZUtleSA9IG5vZGVLZXlNYWtlcihub2RlKTtcbiAgbm9kZS5wYXRoUmVneCA9IHBhdGhSZWd4TWFrZXIobm9kZSk7XG4gIG5vZGUucGFyZW50ID0gY29uc3RhbnQocGFyZW50KTtcbiAgbm9kZS5pc1Jvb3QgPSAoKSA9PiBpc05vdGhpbmcocGFyZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5uYW1lID09PSAncm9vdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUudHlwZSA9PT0gJ3Jvb3QnO1xuICBpZiAoaXNDb2xsZWN0aW9uUmVjb3JkKG5vZGUpKSB7XG4gICAgbm9kZS5jb2xsZWN0aW9uTm9kZUtleSA9ICgpID0+IGpvaW5LZXkoXG4gICAgICBwYXJlbnQubm9kZUtleSgpLCBub2RlLmNvbGxlY3Rpb25OYW1lLFxuICAgICk7XG4gICAgbm9kZS5jb2xsZWN0aW9uUGF0aFJlZ3ggPSAoKSA9PiBqb2luS2V5KFxuICAgICAgcGFyZW50LnBhdGhSZWd4KCksIG5vZGUuY29sbGVjdGlvbk5hbWUsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IGFkZFRvUGFyZW50ID0gKG9iaikgPT4ge1xuICBjb25zdCBwYXJlbnQgPSBvYmoucGFyZW50KCk7XG4gIGlmIChpc1NvbWV0aGluZyhwYXJlbnQpKSB7XG4gICAgaWYgKGlzSW5kZXgob2JqKSlcbiAgICAvLyBROiB3aHkgYXJlIGluZGV4ZXMgbm90IGNoaWxkcmVuID9cbiAgICAvLyBBOiBiZWNhdXNlIHRoZXkgY2Fubm90IGhhdmUgY2hpbGRyZW4gb2YgdGhlaXIgb3duLlxuICAgIHsgcGFyZW50LmluZGV4ZXMucHVzaChvYmopOyB9IGVsc2UgaWYgKGlzYWdncmVnYXRlR3JvdXAob2JqKSkgeyBwYXJlbnQuYWdncmVnYXRlR3JvdXBzLnB1c2gob2JqKTsgfSBlbHNlIHsgcGFyZW50LmNoaWxkcmVuLnB1c2gob2JqKTsgfVxuXG4gICAgaWYgKGlzUmVjb3JkKG9iaikpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRJbmRleCA9IGZpbmQoXG4gICAgICAgIHBhcmVudC5pbmRleGVzLFxuICAgICAgICBpID0+IGkubmFtZSA9PT0gYCR7cGFyZW50Lm5hbWV9X2luZGV4YCxcbiAgICAgICk7XG4gICAgICBpZiAoZGVmYXVsdEluZGV4KSB7XG4gICAgICAgIGRlZmF1bHRJbmRleC5hbGxvd2VkUmVjb3JkTm9kZUlkcy5wdXNoKG9iai5ub2RlSWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdE5vZGUgPSAocGFyZW50LCBvYmopID0+ICQob2JqLCBbXG4gIGNvbnN0cnVjdChwYXJlbnQpLFxuICB2YWxpZGF0ZShwYXJlbnQpLFxuICBhZGRUb1BhcmVudCxcbl0pO1xuXG5jb25zdCBnZXROb2RlSWQgPSAocGFyZW50Tm9kZSkgPT4ge1xuICAvLyB0aGlzIGNhc2UgaXMgaGFuZGxlZCBiZXR0ZXIgZWxzZXdoZXJlXG4gIGlmICghcGFyZW50Tm9kZSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGZpbmRSb290ID0gbiA9PiAoaXNSb290KG4pID8gbiA6IGZpbmRSb290KG4ucGFyZW50KCkpKTtcbiAgY29uc3Qgcm9vdCA9IGZpbmRSb290KHBhcmVudE5vZGUpO1xuXG4gIHJldHVybiAoJChyb290LCBbXG4gICAgZ2V0RmxhdHRlbmVkSGllcmFyY2h5LFxuICAgIG1hcChuID0+IG4ubm9kZUlkKSxcbiAgICBtYXhdKSArIDEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEhpZXJhcmNoeSA9IChub2RlLCBwYXJlbnQpID0+IHtcbiAgY29uc3RydWN0KHBhcmVudCkobm9kZSk7XG4gIGlmIChub2RlLmluZGV4ZXMpIHtcbiAgICBlYWNoKG5vZGUuaW5kZXhlcyxcbiAgICAgIGNoaWxkID0+IGNvbnN0cnVjdEhpZXJhcmNoeShjaGlsZCwgbm9kZSkpO1xuICB9XG4gIGlmIChub2RlLmFnZ3JlZ2F0ZUdyb3Vwcykge1xuICAgIGVhY2gobm9kZS5hZ2dyZWdhdGVHcm91cHMsXG4gICAgICBjaGlsZCA9PiBjb25zdHJ1Y3RIaWVyYXJjaHkoY2hpbGQsIG5vZGUpKTtcbiAgfVxuICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICBlYWNoKG5vZGUuY2hpbGRyZW4sXG4gICAgICBjaGlsZCA9PiBjb25zdHJ1Y3RIaWVyYXJjaHkoY2hpbGQsIG5vZGUpKTtcbiAgfVxuICBpZiAobm9kZS5maWVsZHMpIHtcbiAgICBlYWNoKG5vZGUuZmllbGRzLFxuICAgICAgZiA9PiBlYWNoKGYudHlwZU9wdGlvbnMsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBkZWYgPSBhbGxbZi50eXBlXS5vcHRpb25EZWZpbml0aW9uc1trZXldO1xuICAgICAgICBpZiAoIWRlZikge1xuICAgICAgICAgIC8vIHVua25vd24gdHlwZU9wdGlvblxuICAgICAgICAgIGRlbGV0ZSBmLnR5cGVPcHRpb25zW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZi50eXBlT3B0aW9uc1trZXldID0gZGVmLnBhcnNlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IGdldE5ld1Jvb3RMZXZlbCA9ICgpID0+IGNvbnN0cnVjdCgpKHtcbiAgbmFtZTogJ3Jvb3QnLFxuICB0eXBlOiAncm9vdCcsXG4gIGNoaWxkcmVuOiBbXSxcbiAgcGF0aE1hcHM6IFtdLFxuICBpbmRleGVzOiBbXSxcbiAgbm9kZUlkOiAwLFxufSk7XG5cbmNvbnN0IF9nZXROZXdSZWNvcmRUZW1wbGF0ZSA9IChwYXJlbnQsIG5hbWUsIGNyZWF0ZURlZmF1bHRJbmRleCwgaXNTaW5nbGUpID0+IHtcbiAgY29uc3Qgbm9kZSA9IGNvbnN0cnVjdE5vZGUocGFyZW50LCB7XG4gICAgbmFtZSxcbiAgICB0eXBlOiAncmVjb3JkJyxcbiAgICBmaWVsZHM6IFtdLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICB2YWxpZGF0aW9uUnVsZXM6IFtdLFxuICAgIG5vZGVJZDogZ2V0Tm9kZUlkKHBhcmVudCksXG4gICAgaW5kZXhlczogW10sXG4gICAgYWxsaWRzU2hhcmRGYWN0b3I6IGlzUmVjb3JkKHBhcmVudCkgPyAxIDogNjQsXG4gICAgY29sbGVjdGlvbk5hbWU6ICcnLFxuICAgIGlzU2luZ2xlLFxuICB9KTtcblxuICBpZiAoY3JlYXRlRGVmYXVsdEluZGV4KSB7XG4gICAgY29uc3QgZGVmYXVsdEluZGV4ID0gZ2V0TmV3SW5kZXhUZW1wbGF0ZShwYXJlbnQpO1xuICAgIGRlZmF1bHRJbmRleC5uYW1lID0gYCR7bmFtZX1faW5kZXhgO1xuICAgIGRlZmF1bHRJbmRleC5hbGxvd2VkUmVjb3JkTm9kZUlkcy5wdXNoKG5vZGUubm9kZUlkKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld1JlY29yZFRlbXBsYXRlID0gKHBhcmVudCwgbmFtZSA9ICcnLCBjcmVhdGVEZWZhdWx0SW5kZXggPSB0cnVlKSA9PiBfZ2V0TmV3UmVjb3JkVGVtcGxhdGUocGFyZW50LCBuYW1lLCBjcmVhdGVEZWZhdWx0SW5kZXgsIGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld1NpbmdsZVJlY29yZFRlbXBsYXRlID0gcGFyZW50ID0+IF9nZXROZXdSZWNvcmRUZW1wbGF0ZShwYXJlbnQsICcnLCBmYWxzZSwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBnZXROZXdJbmRleFRlbXBsYXRlID0gKHBhcmVudCwgdHlwZSA9ICdhbmNlc3RvcicpID0+IGNvbnN0cnVjdE5vZGUocGFyZW50LCB7XG4gIG5hbWU6ICcnLFxuICB0eXBlOiAnaW5kZXgnLFxuICBtYXA6ICdyZXR1cm4gey4uLnJlY29yZH07JyxcbiAgZmlsdGVyOiAnJyxcbiAgaW5kZXhUeXBlOiB0eXBlLFxuICBnZXRTaGFyZE5hbWU6ICcnLFxuICBnZXRTb3J0S2V5OiAncmVjb3JkLmlkJyxcbiAgYWdncmVnYXRlR3JvdXBzOiBbXSxcbiAgYWxsb3dlZFJlY29yZE5vZGVJZHM6IFtdLFxuICBub2RlSWQ6IGdldE5vZGVJZChwYXJlbnQpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXROZXdBZ2dyZWdhdGVHcm91cFRlbXBsYXRlID0gaW5kZXggPT4gY29uc3RydWN0Tm9kZShpbmRleCwge1xuICBuYW1lOiAnJyxcbiAgdHlwZTogJ2FnZ3JlZ2F0ZUdyb3VwJyxcbiAgZ3JvdXBCeTogJycsXG4gIGFnZ3JlZ2F0ZXM6IFtdLFxuICBjb25kaXRpb246ICcnLFxuICBub2RlSWQ6IGdldE5vZGVJZChpbmRleCksXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld0FnZ3JlZ2F0ZVRlbXBsYXRlID0gKHNldCkgPT4ge1xuICBjb25zdCBhZ2dyZWdhdGVkVmFsdWUgPSB7XG4gICAgbmFtZTogJycsXG4gICAgYWdncmVnYXRlZFZhbHVlOiAnJyxcbiAgfTtcbiAgc2V0LmFnZ3JlZ2F0ZXMucHVzaChhZ2dyZWdhdGVkVmFsdWUpO1xuICByZXR1cm4gYWdncmVnYXRlZFZhbHVlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXROZXdSb290TGV2ZWwsXG4gIGdldE5ld1JlY29yZFRlbXBsYXRlLFxuICBnZXROZXdJbmRleFRlbXBsYXRlLFxuICBjcmVhdGVOb2RlRXJyb3JzLFxuICBjb25zdHJ1Y3RIaWVyYXJjaHksXG4gIGdldE5ld0FnZ3JlZ2F0ZUdyb3VwVGVtcGxhdGUsXG4gIGdldE5ld0FnZ3JlZ2F0ZVRlbXBsYXRlLFxufTtcbiIsImltcG9ydCB7XG4gIHNvbWUsIG1hcCwgZmlsdGVyLCBrZXlzLCBpbmNsdWRlcyxcbiAgY291bnRCeSwgZmxhdHRlbixcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7XG4gIGlzU29tZXRoaW5nLCAkLFxuICBpc05vbkVtcHR5U3RyaW5nLFxuICBpc05vdGhpbmdPckVtcHR5LFxuICBpc05vdGhpbmcsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBhbGwsIGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXBwbHlSdWxlU2V0LCBtYWtlcnVsZSB9IGZyb20gJy4uL2NvbW1vbi92YWxpZGF0aW9uQ29tbW9uJztcbmltcG9ydCB7IEJhZFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL2NvbW1vbi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3QgZmllbGRFcnJvcnMgPSB7XG4gIEFkZEZpZWxkVmFsaWRhdGlvbkZhaWxlZDogJ0FkZCBmaWVsZCB2YWxpZGF0aW9uOiAnLFxufTtcblxuZXhwb3J0IGNvbnN0IGFsbG93ZWRUeXBlcyA9ICgpID0+IGtleXMoYWxsKTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld0ZpZWxkID0gdHlwZSA9PiAoe1xuICBuYW1lOiAnJywgLy8gaG93IGZpZWxkIGlzIHJlZmVyZW5jZWQgaW50ZXJuYWxseVxuICB0eXBlLFxuICB0eXBlT3B0aW9uczogZ2V0RGVmYXVsdE9wdGlvbnModHlwZSksXG4gIGxhYmVsOiAnJywgLy8gaG93IGZpZWxkIGlzIGRpc3BsYXllZFxuICBnZXRJbml0aWFsVmFsdWU6ICdkZWZhdWx0JywgLy8gZnVuY3Rpb24gdGhhdCBnZXRzIHZhbHVlIHdoZW4gaW5pdGlhbGx5IGNyZWF0ZWRcbiAgZ2V0VW5kZWZpbmVkVmFsdWU6ICdkZWZhdWx0JywgLy8gZnVuY3Rpb24gdGhhdCBnZXRzIHZhbHVlIHdoZW4gZmllbGQgdW5kZWZpbmVkIG9uIHJlY29yZFxufSk7XG5cbmNvbnN0IGZpZWxkUnVsZXMgPSBhbGxGaWVsZHMgPT4gW1xuICBtYWtlcnVsZSgnbmFtZScsICdmaWVsZCBuYW1lIGlzIG5vdCBzZXQnLFxuICAgIGYgPT4gaXNOb25FbXB0eVN0cmluZyhmLm5hbWUpKSxcbiAgbWFrZXJ1bGUoJ3R5cGUnLCAnZmllbGQgdHlwZSBpcyBub3Qgc2V0JyxcbiAgICBmID0+IGlzTm9uRW1wdHlTdHJpbmcoZi50eXBlKSksXG4gIG1ha2VydWxlKCdsYWJlbCcsICdmaWVsZCBsYWJlbCBpcyBub3Qgc2V0JyxcbiAgICBmID0+IGlzTm9uRW1wdHlTdHJpbmcoZi5sYWJlbCkpLFxuICBtYWtlcnVsZSgnZ2V0SW5pdGlhbFZhbHVlJywgJ2dldEluaXRpYWxWYWx1ZSBmdW5jdGlvbiBpcyBub3Qgc2V0JyxcbiAgICBmID0+IGlzTm9uRW1wdHlTdHJpbmcoZi5nZXRJbml0aWFsVmFsdWUpKSxcbiAgbWFrZXJ1bGUoJ2dldFVuZGVmaW5lZFZhbHVlJywgJ2dldFVuZGVmaW5lZFZhbHVlIGZ1bmN0aW9uIGlzIG5vdCBzZXQnLFxuICAgIGYgPT4gaXNOb25FbXB0eVN0cmluZyhmLmdldFVuZGVmaW5lZFZhbHVlKSksXG4gIG1ha2VydWxlKCduYW1lJywgJ2ZpZWxkIG5hbWUgaXMgZHVwbGljYXRlZCcsXG4gICAgZiA9PiBpc05vdGhpbmdPckVtcHR5KGYubmFtZSlcbiAgICAgICAgICAgICB8fCBjb3VudEJ5KCduYW1lJykoYWxsRmllbGRzKVtmLm5hbWVdID09PSAxKSxcbiAgbWFrZXJ1bGUoJ3R5cGUnLCAndHlwZSBpcyB1bmtub3duJyxcbiAgICBmID0+IGlzTm90aGluZ09yRW1wdHkoZi50eXBlKVxuICAgICAgICAgICAgIHx8IHNvbWUodCA9PiBmLnR5cGUgPT09IHQpKGFsbG93ZWRUeXBlcygpKSksXG5dO1xuXG5jb25zdCB0eXBlT3B0aW9uc1J1bGVzID0gKGZpZWxkKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBhbGxbZmllbGQudHlwZV07XG4gIGlmIChpc05vdGhpbmcodHlwZSkpIHJldHVybiBbXTtcblxuICBjb25zdCBkZWYgPSBvcHROYW1lID0+IHR5cGUub3B0aW9uRGVmaW5pdGlvbnNbb3B0TmFtZV07XG5cbiAgcmV0dXJuICQoZmllbGQudHlwZU9wdGlvbnMsIFtcbiAgICBrZXlzLFxuICAgIGZpbHRlcihvID0+IGlzU29tZXRoaW5nKGRlZihvKSlcbiAgICAgICAgICAgICAgICAgICAgJiYgaXNTb21ldGhpbmcoZGVmKG8pLmlzVmFsaWQpKSxcbiAgICBtYXAobyA9PiBtYWtlcnVsZShcbiAgICAgIGB0eXBlT3B0aW9ucy4ke299YCxcbiAgICAgIGAke2RlZihvKS5yZXF1aXJlbWVudERlc2NyaXB0aW9ufWAsXG4gICAgICBmaWVsZCA9PiBkZWYobykuaXNWYWxpZChmaWVsZC50eXBlT3B0aW9uc1tvXSksXG4gICAgKSksXG4gIF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlRmllbGQgPSBhbGxGaWVsZHMgPT4gKGZpZWxkKSA9PiB7XG4gIGNvbnN0IGV2ZXJ5U2luZ2xlRmllbGQgPSBpbmNsdWRlcyhmaWVsZCkoYWxsRmllbGRzKSA/IGFsbEZpZWxkcyA6IFsuLi5hbGxGaWVsZHMsIGZpZWxkXTtcbiAgcmV0dXJuIGFwcGx5UnVsZVNldChbLi4uZmllbGRSdWxlcyhldmVyeVNpbmdsZUZpZWxkKSwgLi4udHlwZU9wdGlvbnNSdWxlcyhmaWVsZCldKShmaWVsZCk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBbGxGaWVsZHMgPSByZWNvcmROb2RlID0+ICQocmVjb3JkTm9kZS5maWVsZHMsIFtcbiAgbWFwKHZhbGlkYXRlRmllbGQocmVjb3JkTm9kZS5maWVsZHMpKSxcbiAgZmxhdHRlbixcbl0pO1xuXG5leHBvcnQgY29uc3QgYWRkRmllbGQgPSAocmVjb3JkVGVtcGxhdGUsIGZpZWxkKSA9PiB7XG4gIGlmIChpc05vdGhpbmdPckVtcHR5KGZpZWxkLmxhYmVsKSkge1xuICAgIGZpZWxkLmxhYmVsID0gZmllbGQubmFtZTtcbiAgfVxuICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB2YWxpZGF0ZUZpZWxkKFsuLi5yZWNvcmRUZW1wbGF0ZS5maWVsZHMsIGZpZWxkXSkoZmllbGQpO1xuICBpZiAodmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBlcnJvcnMgPSBtYXAobSA9PiBtLmVycm9yKSh2YWxpZGF0aW9uTWVzc2FnZXMpO1xuICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IoYCR7ZmllbGRFcnJvcnMuQWRkRmllbGRWYWxpZGF0aW9uRmFpbGVkfSAke2Vycm9ycy5qb2luKCcsICcpfWApO1xuICB9XG4gIHJlY29yZFRlbXBsYXRlLmZpZWxkcy5wdXNoKGZpZWxkKTtcbn07XG4iLCJpbXBvcnQgeyBpc051bWJlciwgaXNCb29sZWFuLCBkZWZhdWx0Q2FzZSB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBzd2l0Y2hDYXNlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGdldE5ld1JlY29yZFZhbGlkYXRpb25SdWxlID0gKGludmFsaWRGaWVsZHMsXG4gIG1lc3NhZ2VXaGVuSW52YWxpZCxcbiAgZXhwcmVzc2lvbldoZW5WYWxpZCkgPT4gKHtcbiAgaW52YWxpZEZpZWxkcywgbWVzc2FnZVdoZW5JbnZhbGlkLCBleHByZXNzaW9uV2hlblZhbGlkLFxufSk7XG5cbmNvbnN0IGdldFN0YXRpY1ZhbHVlID0gc3dpdGNoQ2FzZShcbiAgW2lzTnVtYmVyLCB2ID0+IHYudG9TdHJpbmcoKV0sXG4gIFtpc0Jvb2xlYW4sIHYgPT4gdi50b1N0cmluZygpXSxcbiAgW2RlZmF1bHRDYXNlLCB2ID0+IGAnJHt2fSdgXSxcbik7XG5cbmV4cG9ydCBjb25zdCBjb21tb25SZWNvcmRWYWxpZGF0aW9uUnVsZXMgPSAoe1xuXG4gIGZpZWxkTm90RW1wdHk6IGZpZWxkTmFtZSA9PiBnZXROZXdSZWNvcmRWYWxpZGF0aW9uUnVsZShcbiAgICBbZmllbGROYW1lXSxcbiAgICBgJHtmaWVsZE5hbWV9IGlzIGVtcHR5YCxcbiAgICBgIV8uaXNFbXB0eShyZWNvcmRbJyR7ZmllbGROYW1lfSddKWAsXG4gICksXG5cbiAgZmllbGRCZXR3ZWVuOiAoZmllbGROYW1lLCBtaW4sIG1heCkgPT4gZ2V0TmV3UmVjb3JkVmFsaWRhdGlvblJ1bGUoXG4gICAgW2ZpZWxkTmFtZV0sXG4gICAgYCR7ZmllbGROYW1lfSBtdXN0IGJlIGJldHdlZW4gJHttaW4udG9TdHJpbmcoKX0gYW5kICR7bWF4LnRvU3RyaW5nKCl9YCxcbiAgICBgcmVjb3JkWycke2ZpZWxkTmFtZX0nXSA+PSAke2dldFN0YXRpY1ZhbHVlKG1pbil9ICYmICByZWNvcmRbJyR7ZmllbGROYW1lfSddIDw9ICR7Z2V0U3RhdGljVmFsdWUobWF4KX0gYCxcbiAgKSxcblxuICBmaWVsZEdyZWF0ZXJUaGFuOiAoZmllbGROYW1lLCBtaW4sIG1heCkgPT4gZ2V0TmV3UmVjb3JkVmFsaWRhdGlvblJ1bGUoXG4gICAgW2ZpZWxkTmFtZV0sXG4gICAgYCR7ZmllbGROYW1lfSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAke21pbi50b1N0cmluZygpfSBhbmQgJHttYXgudG9TdHJpbmcoKX1gLFxuICAgIGByZWNvcmRbJyR7ZmllbGROYW1lfSddID49ICR7Z2V0U3RhdGljVmFsdWUobWluKX0gIGAsXG4gICksXG59KTtcblxuZXhwb3J0IGNvbnN0IGFkZFJlY29yZFZhbGlkYXRpb25SdWxlID0gcmVjb3JkTm9kZSA9PiBydWxlID0+IHJlY29yZE5vZGUudmFsaWRhdGlvblJ1bGVzLnB1c2gocnVsZSk7XG4iLCJcbmV4cG9ydCBjb25zdCBjcmVhdGVUcmlnZ2VyID0gKCkgPT4gKHtcbiAgYWN0aW9uTmFtZTogJycsXG4gIGV2ZW50TmFtZTogJycsXG4gIC8vIGZ1bmN0aW9uLCBoYXMgYWNjZXNzIHRvIGV2ZW50IGNvbnRleHQsXG4gIC8vIHJldHVybnMgb2JqZWN0IHRoYXQgaXMgdXNlZCBhcyBwYXJhbWV0ZXIgdG8gYWN0aW9uXG4gIC8vIG9ubHkgdXNlZCBpZiB0cmlnZ2VyZWQgYnkgZXZlbnRcbiAgb3B0aW9uc0NyZWF0b3I6ICcnLFxuICAvLyBhY3Rpb24gcnVucyBpZiB0cnVlLFxuICAvLyBoYXMgYWNjZXNzIHRvIGV2ZW50IGNvbnRleHRcbiAgY29uZGl0aW9uOiAnJyxcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aW9uID0gKCkgPT4gKHtcbiAgbmFtZTogJycsXG4gIGJlaGF2aW91clNvdXJjZTogJycsXG4gIC8vIG5hbWUgb2YgZnVuY3Rpb24gaW4gYWN0aW9uU291cmNlXG4gIGJlaGF2aW91ck5hbWU6ICcnLFxuICAvLyBwYXJhbWV0ZXIgcGFzc2VkIGludG8gYmVoYXZpb3VyLlxuICAvLyBhbnkgb3RoZXIgcGFybXMgcGFzc2VkIGF0IHJ1bnRpbWUgZS5nLlxuICAvLyBieSB0cmlnZ2VyLCBvciBtYW51YWxseSwgd2lsbCBiZSBtZXJnZWQgaW50byB0aGlzXG4gIGluaXRpYWxPcHRpb25zOiB7fSxcbn0pO1xuIiwiaW1wb3J0IHsgZmxhdHRlbiwgbWFwIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tcGlsZUNvZGUgfSBmcm9tICdAbngtanMvY29tcGlsZXItdXRpbCc7XG5pbXBvcnQge1xuICBpc05vbkVtcHR5U3RyaW5nLCBcbiAgZXhlY3V0ZXNXaXRob3V0RXhjZXB0aW9uLCAkLCBcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGFwcGx5UnVsZVNldCwgbWFrZXJ1bGUgfSBmcm9tICcuLi9jb21tb24vdmFsaWRhdGlvbkNvbW1vbic7XG5cbmNvbnN0IGFnZ3JlZ2F0ZVJ1bGVzID0gW1xuICBtYWtlcnVsZSgnbmFtZScsICdjaG9vc2UgYSBuYW1lIGZvciB0aGUgYWdncmVnYXRlJyxcbiAgICBhID0+IGlzTm9uRW1wdHlTdHJpbmcoYS5uYW1lKSksXG4gIG1ha2VydWxlKCdhZ2dyZWdhdGVkVmFsdWUnLCAnYWdncmVnYXRlZFZhbHVlIGRvZXMgbm90IGNvbXBpbGUnLFxuICAgIGEgPT4gaXNFbXB0eShhLmFnZ3JlZ2F0ZWRWYWx1ZSlcbiAgICAgICAgICAgIHx8IGV4ZWN1dGVzV2l0aG91dEV4Y2VwdGlvbihcbiAgICAgICAgICAgICAgKCkgPT4gY29tcGlsZUNvZGUoYS5hZ2dyZWdhdGVkVmFsdWUpLFxuICAgICAgICAgICAgKSksXG5dO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBZ2dyZWdhdGUgPSBhZ2dyZWdhdGUgPT4gYXBwbHlSdWxlU2V0KGFnZ3JlZ2F0ZVJ1bGVzKShhZ2dyZWdhdGUpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBbGxBZ2dyZWdhdGVzID0gYWxsID0+ICQoYWxsLCBbXG4gIG1hcCh2YWxpZGF0ZUFnZ3JlZ2F0ZSksXG4gIGZsYXR0ZW4sXG5dKTtcbiIsImltcG9ydCB7XG4gIGZpbHRlciwgdW5pb24sIGNvbnN0YW50LFxuICBtYXAsIGZsYXR0ZW4sIGV2ZXJ5LCB1bmlxQnksXG4gIHNvbWUsIGluY2x1ZGVzLCBpc0VtcHR5LFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgaGFzIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb21waWxlQ29kZSB9IGZyb20gJ0BueC1qcy9jb21waWxlci11dGlsJztcbmltcG9ydCB7XG4gICQsIGlzU29tZXRoaW5nLCBzd2l0Y2hDYXNlLFxuICBhbnlUcnVlLCBpc05vbkVtcHR5QXJyYXksIGV4ZWN1dGVzV2l0aG91dEV4Y2VwdGlvbixcbiAgaXNOb25FbXB0eVN0cmluZywgZGVmYXVsdENhc2UsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBpc1JlY29yZCwgaXNSb290LCBpc2FnZ3JlZ2F0ZUdyb3VwLFxuICBpc0luZGV4LCBnZXRGbGF0dGVuZWRIaWVyYXJjaHksXG59IGZyb20gJy4vaGllcmFyY2h5JztcbmltcG9ydCB7IGV2ZW50c0xpc3QgfSBmcm9tICcuLi9jb21tb24vZXZlbnRzJztcbmltcG9ydCB7IHZhbGlkYXRlQWxsRmllbGRzIH0gZnJvbSAnLi9maWVsZHMnO1xuaW1wb3J0IHtcbiAgYXBwbHlSdWxlU2V0LCBtYWtlcnVsZSwgc3RyaW5nTm90RW1wdHksXG4gIHZhbGlkYXRpb25FcnJvcixcbn0gZnJvbSAnLi4vY29tbW9uL3ZhbGlkYXRpb25Db21tb24nO1xuaW1wb3J0IHsgaW5kZXhSdWxlU2V0IH0gZnJvbSAnLi9pbmRleGVzJztcbmltcG9ydCB7IHZhbGlkYXRlQWxsQWdncmVnYXRlcyB9IGZyb20gJy4vdmFsaWRhdGVBZ2dyZWdhdGUnO1xuXG5leHBvcnQgY29uc3QgcnVsZVNldCA9ICguLi5zZXRzKSA9PiBjb25zdGFudChmbGF0dGVuKFsuLi5zZXRzXSkpO1xuXG5jb25zdCBjb21tb25SdWxlcyA9IFtcbiAgbWFrZXJ1bGUoJ25hbWUnLCAnbm9kZSBuYW1lIGlzIG5vdCBzZXQnLFxuICAgIG5vZGUgPT4gc3RyaW5nTm90RW1wdHkobm9kZS5uYW1lKSksXG4gIG1ha2VydWxlKCd0eXBlJywgJ25vZGUgdHlwZSBub3QgcmVjb2duaXNlZCcsXG4gICAgYW55VHJ1ZShpc1JlY29yZCwgaXNSb290LCBpc0luZGV4LCBpc2FnZ3JlZ2F0ZUdyb3VwKSksXG5dO1xuXG5jb25zdCByZWNvcmRSdWxlcyA9IFtcbiAgbWFrZXJ1bGUoJ2ZpZWxkcycsICdubyBmaWVsZHMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSByZWNvcmQnLFxuICAgIG5vZGUgPT4gaXNOb25FbXB0eUFycmF5KG5vZGUuZmllbGRzKSksXG4gIG1ha2VydWxlKCd2YWxpZGF0aW9uUnVsZXMnLCBcInZhbGlkYXRpb24gcnVsZSBpcyBtaXNzaW5nIGEgJ21lc3NhZ2VXaGVuVmFsaWQnIG1lbWJlclwiLFxuICAgIG5vZGUgPT4gZXZlcnkociA9PiBoYXMociwgJ21lc3NhZ2VXaGVuSW52YWxpZCcpKShub2RlLnZhbGlkYXRpb25SdWxlcykpLFxuICBtYWtlcnVsZSgndmFsaWRhdGlvblJ1bGVzJywgXCJ2YWxpZGF0aW9uIHJ1bGUgaXMgbWlzc2luZyBhICdleHByZXNzaW9uV2hlblZhbGlkJyBtZW1iZXJcIixcbiAgICBub2RlID0+IGV2ZXJ5KHIgPT4gaGFzKHIsICdleHByZXNzaW9uV2hlblZhbGlkJykpKG5vZGUudmFsaWRhdGlvblJ1bGVzKSksXG5dO1xuXG5cbmNvbnN0IGFnZ3JlZ2F0ZUdyb3VwUnVsZXMgPSBbXG4gIG1ha2VydWxlKCdjb25kaXRpb24nLCAnY29uZGl0aW9uIGRvZXMgbm90IGNvbXBpbGUnLFxuICAgIGEgPT4gaXNFbXB0eShhLmNvbmRpdGlvbilcbiAgICAgICAgICAgICB8fCBleGVjdXRlc1dpdGhvdXRFeGNlcHRpb24oXG4gICAgICAgICAgICAgICAoKSA9PiBjb21waWxlRXhwcmVzc2lvbihhLmNvbmRpdGlvbiksXG4gICAgICAgICAgICAgKSksXG5dO1xuXG5jb25zdCBnZXRSdWxlU2V0ID0gbm9kZSA9PiBzd2l0Y2hDYXNlKFxuXG4gIFtpc1JlY29yZCwgcnVsZVNldChcbiAgICBjb21tb25SdWxlcyxcbiAgICByZWNvcmRSdWxlcyxcbiAgKV0sXG5cbiAgW2lzSW5kZXgsIHJ1bGVTZXQoXG4gICAgY29tbW9uUnVsZXMsXG4gICAgaW5kZXhSdWxlU2V0LFxuICApXSxcblxuICBbaXNhZ2dyZWdhdGVHcm91cCwgcnVsZVNldChcbiAgICBjb21tb25SdWxlcyxcbiAgICBhZ2dyZWdhdGVHcm91cFJ1bGVzLFxuICApXSxcblxuICBbZGVmYXVsdENhc2UsIHJ1bGVTZXQoY29tbW9uUnVsZXMsIFtdKV0sXG4pKG5vZGUpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVOb2RlID0gbm9kZSA9PiBhcHBseVJ1bGVTZXQoZ2V0UnVsZVNldChub2RlKSkobm9kZSk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUFsbCA9IChhcHBIaWVyYXJjaHkpID0+IHtcbiAgY29uc3QgZmxhdHRlbmVkID0gZ2V0RmxhdHRlbmVkSGllcmFyY2h5KFxuICAgIGFwcEhpZXJhcmNoeSxcbiAgKTtcblxuICBjb25zdCBkdXBsaWNhdGVOYW1lUnVsZSA9IG1ha2VydWxlKFxuICAgICduYW1lJywgJ25vZGUgbmFtZXMgbXVzdCBiZSB1bmlxdWUgdW5kZXIgc2hhcmVkIHBhcmVudCcsXG4gICAgbiA9PiBmaWx0ZXIoZiA9PiBmLnBhcmVudCgpID09PSBuLnBhcmVudCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIGYubmFtZSA9PT0gbi5uYW1lKShmbGF0dGVuZWQpLmxlbmd0aCA9PT0gMSxcbiAgKTtcblxuICBjb25zdCBkdXBsaWNhdGVOb2RlS2V5RXJyb3JzID0gJChmbGF0dGVuZWQsIFtcbiAgICBtYXAobiA9PiBhcHBseVJ1bGVTZXQoW2R1cGxpY2F0ZU5hbWVSdWxlXSkobikpLFxuICAgIGZpbHRlcihpc1NvbWV0aGluZyksXG4gICAgZmxhdHRlbixcbiAgXSk7XG5cbiAgY29uc3QgZmllbGRFcnJvcnMgPSAkKGZsYXR0ZW5lZCwgW1xuICAgIGZpbHRlcihpc1JlY29yZCksXG4gICAgbWFwKHZhbGlkYXRlQWxsRmllbGRzKSxcbiAgICBmbGF0dGVuLFxuICBdKTtcblxuICBjb25zdCBhZ2dyZWdhdGVFcnJvcnMgPSAkKGZsYXR0ZW5lZCwgW1xuICAgIGZpbHRlcihpc2FnZ3JlZ2F0ZUdyb3VwKSxcbiAgICBtYXAocyA9PiB2YWxpZGF0ZUFsbEFnZ3JlZ2F0ZXMoXG4gICAgICBzLmFnZ3JlZ2F0ZXMsXG4gICAgKSksXG4gICAgZmxhdHRlbixcbiAgXSk7XG5cbiAgcmV0dXJuICQoZmxhdHRlbmVkLCBbXG4gICAgbWFwKHZhbGlkYXRlTm9kZSksXG4gICAgZmxhdHRlbixcbiAgICB1bmlvbihkdXBsaWNhdGVOb2RlS2V5RXJyb3JzKSxcbiAgICB1bmlvbihmaWVsZEVycm9ycyksXG4gICAgdW5pb24oYWdncmVnYXRlRXJyb3JzKSxcbiAgXSk7XG59O1xuXG5jb25zdCBhY3Rpb25SdWxlcyA9IFtcbiAgbWFrZXJ1bGUoJ25hbWUnLCAnYWN0aW9uIG11c3QgaGF2ZSBhIG5hbWUnLFxuICAgIGEgPT4gaXNOb25FbXB0eVN0cmluZyhhLm5hbWUpKSxcbiAgbWFrZXJ1bGUoJ2JlaGF2aW91ck5hbWUnLCAnbXVzdCBzdXBwbHkgYSBiZWhhdmlvdXIgbmFtZSB0byB0aGUgYWN0aW9uJyxcbiAgICBhID0+IGlzTm9uRW1wdHlTdHJpbmcoYS5iZWhhdmlvdXJOYW1lKSksXG4gIG1ha2VydWxlKCdiZWhhdmlvdXJTb3VyY2UnLCAnbXVzdCBzdXBwbHkgYSBiZWhhdmlvdXIgc291cmNlIGZvciB0aGUgYWN0aW9uJyxcbiAgICBhID0+IGlzTm9uRW1wdHlTdHJpbmcoYS5iZWhhdmlvdXJTb3VyY2UpKSxcbl07XG5cbmNvbnN0IGR1cGxpY2F0ZUFjdGlvblJ1bGUgPSBtYWtlcnVsZSgnJywgJ2FjdGlvbiBuYW1lIG11c3QgYmUgdW5pcXVlJywgKCkgPT4ge30pO1xuXG5jb25zdCB2YWxpZGF0ZUFjdGlvbiA9IGFjdGlvbiA9PiBhcHBseVJ1bGVTZXQoYWN0aW9uUnVsZXMpKGFjdGlvbik7XG5cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQWN0aW9ucyA9IChhbGxBY3Rpb25zKSA9PiB7XG4gIGNvbnN0IGR1cGxpY2F0ZUFjdGlvbnMgPSAkKGFsbEFjdGlvbnMsIFtcbiAgICBmaWx0ZXIoYSA9PiBmaWx0ZXIoYTIgPT4gYTIubmFtZSA9PT0gYS5uYW1lKShhbGxBY3Rpb25zKS5sZW5ndGggPiAxKSxcbiAgICBtYXAoYSA9PiB2YWxpZGF0aW9uRXJyb3IoZHVwbGljYXRlQWN0aW9uUnVsZSwgYSkpLFxuICBdKTtcblxuICBjb25zdCBlcnJvcnMgPSAkKGFsbEFjdGlvbnMsIFtcbiAgICBtYXAodmFsaWRhdGVBY3Rpb24pLFxuICAgIGZsYXR0ZW4sXG4gICAgdW5pb24oZHVwbGljYXRlQWN0aW9ucyksXG4gICAgdW5pcUJ5KCduYW1lJyksXG4gIF0pO1xuXG4gIHJldHVybiBlcnJvcnM7XG59O1xuXG5jb25zdCB0cmlnZ2VyUnVsZXMgPSBhY3Rpb25zID0+IChbXG4gIG1ha2VydWxlKCdhY3Rpb25OYW1lJywgJ211c3Qgc3BlY2lmeSBhbiBhY3Rpb24nLFxuICAgIHQgPT4gaXNOb25FbXB0eVN0cmluZyh0LmFjdGlvbk5hbWUpKSxcbiAgbWFrZXJ1bGUoJ2V2ZW50TmFtZScsICdtdXN0IHNwZWNpZnkgYW5kIGV2ZW50JyxcbiAgICB0ID0+IGlzTm9uRW1wdHlTdHJpbmcodC5ldmVudE5hbWUpKSxcbiAgbWFrZXJ1bGUoJ2FjdGlvbk5hbWUnLCAnc3BlY2lmaWVkIGFjdGlvbiBub3Qgc3VwcGxpZWQnLFxuICAgIHQgPT4gIXQuYWN0aW9uTmFtZVxuICAgICAgICAgICAgIHx8IHNvbWUoYSA9PiBhLm5hbWUgPT09IHQuYWN0aW9uTmFtZSkoYWN0aW9ucykpLFxuICBtYWtlcnVsZSgnZXZlbnROYW1lJywgJ2ludmFsaWQgRXZlbnQgTmFtZScsXG4gICAgdCA9PiAhdC5ldmVudE5hbWVcbiAgICAgICAgICAgICB8fCBpbmNsdWRlcyh0LmV2ZW50TmFtZSkoZXZlbnRzTGlzdCkpLFxuICBtYWtlcnVsZSgnb3B0aW9uc0NyZWF0b3InLCAnT3B0aW9ucyBDcmVhdG9yIGRvZXMgbm90IGNvbXBpbGUgLSBjaGVjayB5b3VyIGV4cHJlc3Npb24nLFxuICAgICh0KSA9PiB7XG4gICAgICBpZiAoIXQub3B0aW9uc0NyZWF0b3IpIHJldHVybiB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29tcGlsZUNvZGUodC5vcHRpb25zQ3JlYXRvcik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoXykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9KSxcbiAgbWFrZXJ1bGUoJ2NvbmRpdGlvbicsICdUcmlnZ2VyIGNvbmRpdGlvbiBkb2VzIG5vdCBjb21waWxlIC0gY2hlY2sgeW91ciBleHByZXNzaW9uJyxcbiAgICAodCkgPT4ge1xuICAgICAgaWYgKCF0LmNvbmRpdGlvbikgcmV0dXJuIHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb21waWxlRXhwcmVzc2lvbih0LmNvbmRpdGlvbik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoXykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9KSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUcmlnZ2VyID0gKHRyaWdnZXIsIGFsbEFjdGlvbnMpID0+IHtcbiAgY29uc3QgZXJyb3JzID0gYXBwbHlSdWxlU2V0KHRyaWdnZXJSdWxlcyhhbGxBY3Rpb25zKSkodHJpZ2dlcik7XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVRyaWdnZXJzID0gKHRyaWdnZXJzLCBhbGxBY3Rpb25zKSA9PiAkKHRyaWdnZXJzLCBbXG4gIG1hcCh0ID0+IHZhbGlkYXRlVHJpZ2dlcih0LCBhbGxBY3Rpb25zKSksXG4gIGZsYXR0ZW4sXG5dKTtcbiIsImltcG9ydCB7IGFwcERlZmluaXRpb25GaWxlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGNvbnN0cnVjdEhpZXJhcmNoeSB9IGZyb20gJy4vY3JlYXRlTm9kZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb25EZWZpbml0aW9uID0gZGF0YXN0b3JlID0+IGFzeW5jICgpID0+IHtcbiAgY29uc3QgZXhpc3RzID0gYXdhaXQgZGF0YXN0b3JlLmV4aXN0cyhhcHBEZWZpbml0aW9uRmlsZSk7XG5cbiAgaWYgKCFleGlzdHMpIHRocm93IG5ldyBFcnJvcignQXBwbGljYXRpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGlzdCcpO1xuXG4gIGNvbnN0IGFwcERlZmluaXRpb24gPSBhd2FpdCBkYXRhc3RvcmUubG9hZEpzb24oYXBwRGVmaW5pdGlvbkZpbGUpO1xuICBhcHBEZWZpbml0aW9uLmhpZXJhcmNoeSA9IGNvbnN0cnVjdEhpZXJhcmNoeShcbiAgICBhcHBEZWZpbml0aW9uLmhpZXJhcmNoeSxcbiAgKTtcbiAgcmV0dXJuIGFwcERlZmluaXRpb247XG59O1xuIiwiaW1wb3J0IHsgam9pbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi4vYXV0aEFwaS9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBhcHBEZWZpbml0aW9uRmlsZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyB2YWxpZGF0ZUFsbCB9IGZyb20gJy4vdmFsaWRhdGUnO1xuaW1wb3J0IHsgYXBpV3JhcHBlciB9IGZyb20gJy4uL2NvbW1vbi9hcGlXcmFwcGVyJztcbmltcG9ydCB7IGV2ZW50cyB9IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuXG5leHBvcnQgY29uc3Qgc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5ID0gYXBwID0+IGFzeW5jIGhpZXJhcmNoeSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy50ZW1wbGF0ZUFwaS5zYXZlQXBwbGljYXRpb25IaWVyYXJjaHksXG4gIHBlcm1pc3Npb24ud3JpdGVUZW1wbGF0ZXMuaXNBdXRob3JpemVkLFxuICB7IGhpZXJhcmNoeSB9LFxuICBfc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5LCBhcHAuZGF0YXN0b3JlLCBoaWVyYXJjaHksXG4pO1xuXG5cbmV4cG9ydCBjb25zdCBfc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5ID0gYXN5bmMgKGRhdGFzdG9yZSwgaGllcmFyY2h5KSA9PiB7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSBhd2FpdCB2YWxpZGF0ZUFsbChoaWVyYXJjaHkpO1xuICBpZiAodmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBIaWVyYXJjaHkgaXMgaW52YWxpZDogJHtqb2luKFxuICAgICAgdmFsaWRhdGlvbkVycm9ycy5tYXAoZSA9PiBgJHtlLml0ZW0ubm9kZUtleSA/IGUuaXRlbS5ub2RlS2V5KCkgOiAnJ30gOiAke2UuZXJyb3J9YCksXG4gICAgICAnLCcsXG4gICAgKX1gKTtcbiAgfVxuXG4gIGlmIChhd2FpdCBkYXRhc3RvcmUuZXhpc3RzKGFwcERlZmluaXRpb25GaWxlKSkge1xuICAgIGNvbnN0IGFwcERlZmluaXRpb24gPSBhd2FpdCBkYXRhc3RvcmUubG9hZEpzb24oYXBwRGVmaW5pdGlvbkZpbGUpO1xuICAgIGFwcERlZmluaXRpb24uaGllcmFyY2h5ID0gaGllcmFyY2h5O1xuICAgIGF3YWl0IGRhdGFzdG9yZS51cGRhdGVKc29uKGFwcERlZmluaXRpb25GaWxlLCBhcHBEZWZpbml0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBkYXRhc3RvcmUuY3JlYXRlRm9sZGVyKCcvLmNvbmZpZycpO1xuICAgIGNvbnN0IGFwcERlZmluaXRpb24gPSB7IGFjdGlvbnM6IFtdLCB0cmlnZ2VyczogW10sIGhpZXJhcmNoeSB9O1xuICAgIGF3YWl0IGRhdGFzdG9yZS5jcmVhdGVKc29uKGFwcERlZmluaXRpb25GaWxlLCBhcHBEZWZpbml0aW9uKTtcbiAgfVxufTtcbiIsImltcG9ydCB7IGpvaW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGFwcERlZmluaXRpb25GaWxlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHZhbGlkYXRlVHJpZ2dlcnMsIHZhbGlkYXRlQWN0aW9ucyB9IGZyb20gJy4vdmFsaWRhdGUnO1xuaW1wb3J0IHsgYXBpV3JhcHBlciB9IGZyb20gJy4uL2NvbW1vbi9hcGlXcmFwcGVyJztcbmltcG9ydCB7IGV2ZW50cyB9IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4uL2F1dGhBcGkvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBzYXZlQWN0aW9uc0FuZFRyaWdnZXJzID0gYXBwID0+IGFzeW5jIChhY3Rpb25zLCB0cmlnZ2VycykgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMudGVtcGxhdGVBcGkuc2F2ZUFjdGlvbnNBbmRUcmlnZ2VycyxcbiAgcGVybWlzc2lvbi53cml0ZVRlbXBsYXRlcy5pc0F1dGhvcml6ZWQsXG4gIHsgYWN0aW9ucywgdHJpZ2dlcnMgfSxcbiAgX3NhdmVBY3Rpb25zQW5kVHJpZ2dlcnMsIGFwcC5kYXRhc3RvcmUsIGFjdGlvbnMsIHRyaWdnZXJzLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9zYXZlQWN0aW9uc0FuZFRyaWdnZXJzID0gYXN5bmMgKGRhdGFzdG9yZSwgYWN0aW9ucywgdHJpZ2dlcnMpID0+IHtcbiAgaWYgKGF3YWl0IGRhdGFzdG9yZS5leGlzdHMoYXBwRGVmaW5pdGlvbkZpbGUpKSB7XG4gICAgY29uc3QgYXBwRGVmaW5pdGlvbiA9IGF3YWl0IGRhdGFzdG9yZS5sb2FkSnNvbihhcHBEZWZpbml0aW9uRmlsZSk7XG4gICAgYXBwRGVmaW5pdGlvbi5hY3Rpb25zID0gYWN0aW9ucztcbiAgICBhcHBEZWZpbml0aW9uLnRyaWdnZXJzID0gdHJpZ2dlcnM7XG5cbiAgICBjb25zdCBhY3Rpb25WYWxpZEVycnMgPSBtYXAoZSA9PiBlLmVycm9yKSh2YWxpZGF0ZUFjdGlvbnMoYWN0aW9ucykpO1xuXG4gICAgaWYgKGFjdGlvblZhbGlkRXJycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGBBY3Rpb25zIGFyZSBpbnZhbGlkOiAke2pvaW4oYWN0aW9uVmFsaWRFcnJzLCAnLCAnKX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlnZ2VyVmFsaWRFcnJzID0gbWFwKGUgPT4gZS5lcnJvcikodmFsaWRhdGVUcmlnZ2Vycyh0cmlnZ2VycywgYWN0aW9ucykpO1xuXG4gICAgaWYgKHRyaWdnZXJWYWxpZEVycnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihgVHJpZ2dlcnMgYXJlIGludmFsaWQ6ICR7am9pbih0cmlnZ2VyVmFsaWRFcnJzLCAnLCAnKX1gKTtcbiAgICB9XG5cbiAgICBhd2FpdCBkYXRhc3RvcmUudXBkYXRlSnNvbihhcHBEZWZpbml0aW9uRmlsZSwgYXBwRGVmaW5pdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignQ2Fubm90IHNhdmUgYWN0aW9uczogQXBwbGljYXRpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGlzdCcpO1xuICB9XG59O1xuIiwiXG5leHBvcnQgY29uc3QgZ2V0QmVoYXZpb3VyU291cmNlcyA9IGFzeW5jIChkYXRhc3RvcmUpID0+IHtcbiAgICBhd2FpdCBkYXRhc3RvcmUubG9hZEZpbGUoJy8uY29uZmlnL2JlaGF2aW91clNvdXJjZXMuanMnKTtcbn07XG4iLCJpbXBvcnQge1xuICBnZXROZXdSb290TGV2ZWwsXG4gIGdldE5ld1JlY29yZFRlbXBsYXRlLCBnZXROZXdJbmRleFRlbXBsYXRlLFxuICBjcmVhdGVOb2RlRXJyb3JzLCBjb25zdHJ1Y3RIaWVyYXJjaHksXG4gIGdldE5ld0FnZ3JlZ2F0ZUdyb3VwVGVtcGxhdGUsIGdldE5ld1NpbmdsZVJlY29yZFRlbXBsYXRlLFxuICBnZXROZXdBZ2dyZWdhdGVUZW1wbGF0ZSwgY29uc3RydWN0Tm9kZSxcbn1cbiAgZnJvbSAnLi9jcmVhdGVOb2Rlcyc7XG5pbXBvcnQge1xuICBnZXROZXdGaWVsZCwgdmFsaWRhdGVGaWVsZCxcbiAgYWRkRmllbGQsIGZpZWxkRXJyb3JzLFxufSBmcm9tICcuL2ZpZWxkcyc7XG5pbXBvcnQge1xuICBnZXROZXdSZWNvcmRWYWxpZGF0aW9uUnVsZSwgY29tbW9uUmVjb3JkVmFsaWRhdGlvblJ1bGVzLFxuICBhZGRSZWNvcmRWYWxpZGF0aW9uUnVsZSxcbn0gZnJvbSAnLi9yZWNvcmRWYWxpZGF0aW9uUnVsZXMnO1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBjcmVhdGVUcmlnZ2VyIH0gZnJvbSAnLi9jcmVhdGVBY3Rpb25zJztcbmltcG9ydCB7XG4gIHZhbGlkYXRlVHJpZ2dlcnMsIHZhbGlkYXRlVHJpZ2dlciwgdmFsaWRhdGVOb2RlLFxuICB2YWxpZGF0ZUFjdGlvbnMsIHZhbGlkYXRlQWxsLFxufSBmcm9tICcuL3ZhbGlkYXRlJztcbmltcG9ydCB7IGdldEFwcGxpY2F0aW9uRGVmaW5pdGlvbiB9IGZyb20gJy4vZ2V0QXBwbGljYXRpb25EZWZpbml0aW9uJztcbmltcG9ydCB7IHNhdmVBcHBsaWNhdGlvbkhpZXJhcmNoeSB9IGZyb20gJy4vc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5JztcbmltcG9ydCB7IHNhdmVBY3Rpb25zQW5kVHJpZ2dlcnMgfSBmcm9tICcuL3NhdmVBY3Rpb25zQW5kVHJpZ2dlcnMnO1xuaW1wb3J0IHsgYWxsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QmVoYXZpb3VyU291cmNlcyB9IGZyb20gXCIuL2dldEJlaGF2aW91clNvdXJjZXNcIjtcblxuY29uc3QgYXBpID0gYXBwID0+ICh7XG5cbiAgZ2V0QXBwbGljYXRpb25EZWZpbml0aW9uOiBnZXRBcHBsaWNhdGlvbkRlZmluaXRpb24oYXBwLmRhdGFzdG9yZSksXG4gIHNhdmVBcHBsaWNhdGlvbkhpZXJhcmNoeTogc2F2ZUFwcGxpY2F0aW9uSGllcmFyY2h5KGFwcCksXG4gIHNhdmVBY3Rpb25zQW5kVHJpZ2dlcnM6IHNhdmVBY3Rpb25zQW5kVHJpZ2dlcnMoYXBwKSxcbiAgZ2V0QmVoYXZpb3VyU291cmNlczogKCkgPT4gZ2V0QmVoYXZpb3VyU291cmNlcyhhcHAuZGF0YXN0b3JlKSxcbiAgZ2V0TmV3Um9vdExldmVsLFxuICBjb25zdHJ1Y3ROb2RlLFxuICBnZXROZXdJbmRleFRlbXBsYXRlLFxuICBnZXROZXdSZWNvcmRUZW1wbGF0ZSxcbiAgZ2V0TmV3RmllbGQsXG4gIHZhbGlkYXRlRmllbGQsXG4gIGFkZEZpZWxkLFxuICBmaWVsZEVycm9ycyxcbiAgZ2V0TmV3UmVjb3JkVmFsaWRhdGlvblJ1bGUsXG4gIGNvbW1vblJlY29yZFZhbGlkYXRpb25SdWxlcyxcbiAgYWRkUmVjb3JkVmFsaWRhdGlvblJ1bGUsXG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlVHJpZ2dlcixcbiAgdmFsaWRhdGVBY3Rpb25zLFxuICB2YWxpZGF0ZVRyaWdnZXIsXG4gIGdldE5ld0FnZ3JlZ2F0ZUdyb3VwVGVtcGxhdGUsXG4gIGdldE5ld0FnZ3JlZ2F0ZVRlbXBsYXRlLFxuICBjb25zdHJ1Y3RIaWVyYXJjaHksXG4gIGdldE5ld1NpbmdsZVJlY29yZFRlbXBsYXRlLFxuICBhbGxUeXBlczogYWxsLFxuICB2YWxpZGF0ZU5vZGUsXG4gIHZhbGlkYXRlQWxsLFxuICB2YWxpZGF0ZVRyaWdnZXJzLFxufSk7XG5cblxuZXhwb3J0IGNvbnN0IGdldFRlbXBsYXRlQXBpID0gYXBwID0+IGFwaShhcHApO1xuXG5leHBvcnQgY29uc3QgZXJyb3JzID0gY3JlYXRlTm9kZUVycm9ycztcblxuZXhwb3J0IGRlZmF1bHQgZ2V0VGVtcGxhdGVBcGk7XG4iLCJpbXBvcnQgeyBtYXAgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHtcbiAgVVNFUlNfTElTVF9GSUxFLFxuICBzdHJpcFVzZXJPZlNlbnNpdGl2ZVN0dWZmLFxufSBmcm9tICcuL2F1dGhDb21tb24nO1xuaW1wb3J0IHsgJCwgYXBpV3JhcHBlciwgZXZlbnRzIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb25zJztcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzID0gYXBwID0+IGFzeW5jICgpID0+IGFwaVdyYXBwZXIoXG4gIGFwcCxcbiAgZXZlbnRzLmF1dGhBcGkuZ2V0VXNlcnMsXG4gIHBlcm1pc3Npb24ubGlzdFVzZXJzLmlzQXV0aG9yaXplZCxcbiAge30sXG4gIF9nZXRVc2VycywgYXBwLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9nZXRVc2VycyA9IGFzeW5jIGFwcCA9PiAkKGF3YWl0IGFwcC5kYXRhc3RvcmUubG9hZEpzb24oVVNFUlNfTElTVF9GSUxFKSwgW1xuICBtYXAoc3RyaXBVc2VyT2ZTZW5zaXRpdmVTdHVmZiksXG5dKTtcbiIsImltcG9ydCB7IEFDQ0VTU19MRVZFTFNfRklMRSB9IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQgeyBhcGlXcmFwcGVyLCBldmVudHMgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgbG9hZEFjY2Vzc0xldmVscyA9IGFwcCA9PiBhc3luYyAoKSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLmxvYWRBY2Nlc3NMZXZlbHMsXG4gIHBlcm1pc3Npb24ubGlzdEFjY2Vzc0xldmVscy5pc0F1dGhvcml6ZWQsXG4gIHt9LFxuICBfbG9hZEFjY2Vzc0xldmVscywgYXBwLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9sb2FkQWNjZXNzTGV2ZWxzID0gYXN5bmMgYXBwID0+IGF3YWl0IGFwcC5kYXRhc3RvcmUubG9hZEpzb24oQUNDRVNTX0xFVkVMU19GSUxFKTtcbiIsImltcG9ydCB7XG4gIGZpbmQsIGZpbHRlciwgc29tZSxcbiAgbWFwLCBmbGF0dGVuLFxufSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tICdzaG9ydGlkJztcbmltcG9ydCB7IF9nZXRVc2VycyB9IGZyb20gJy4vZ2V0VXNlcnMnO1xuaW1wb3J0IHtcbiAgZ2V0VXNlckJ5TmFtZSwgdXNlckF1dGhGaWxlLFxuICBwYXJzZVRlbXBvcmFyeUNvZGUsXG59IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQgeyBfbG9hZEFjY2Vzc0xldmVscyB9IGZyb20gJy4vbG9hZEFjY2Vzc0xldmVscyc7XG5pbXBvcnQge1xuICBpc05vdGhpbmdPckVtcHR5LCAkLCBhcGlXcmFwcGVyLCBldmVudHMsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBhbHdheXNBdXRob3JpemVkIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmNvbnN0IGR1bW15SGFzaCA9ICckYXJnb24yaSR2PTE5JG09NDA5Nix0PTMscD0xJFVaUm80MDlVWUJHakhKUzNDVjZVeHckclU4NHFVcVBlT1JGektZbVlZMGNlQkxEYVBPK0pXU0g0UGZOaUtYZklLayc7XG5cbmV4cG9ydCBjb25zdCBhdXRoZW50aWNhdGUgPSBhcHAgPT4gYXN5bmMgKHVzZXJuYW1lLCBwYXNzd29yZCkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5hdXRoZW50aWNhdGUsXG4gIGFsd2F5c0F1dGhvcml6ZWQsXG4gIHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0sXG4gIF9hdXRoZW50aWNhdGUsIGFwcCwgdXNlcm5hbWUsIHBhc3N3b3JkLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9hdXRoZW50aWNhdGUgPSBhc3luYyAoYXBwLCB1c2VybmFtZSwgcGFzc3dvcmQpID0+IHtcbiAgaWYgKGlzTm90aGluZ09yRW1wdHkodXNlcm5hbWUpIHx8IGlzTm90aGluZ09yRW1wdHkocGFzc3dvcmQpKSB7IHJldHVybiBudWxsOyB9XG5cbiAgY29uc3QgYWxsVXNlcnMgPSBhd2FpdCBfZ2V0VXNlcnMoYXBwKTtcbiAgbGV0IHVzZXIgPSBnZXRVc2VyQnlOYW1lKFxuICAgIGFsbFVzZXJzLFxuICAgIHVzZXJuYW1lLFxuICApO1xuXG4gIGNvbnN0IG5vdEFVc2VyID0gJ25vdC1hLXVzZXInO1xuICAvLyBjb250aW51ZSB3aXRoIG5vbi11c2VyIC0gc28gdGltZSB0byB2ZXJpZnkgcmVtYWlucyBjb25zaXN0ZW50XG4gIC8vIHdpdGggdmVyaWZpY2F0aW9uIG9mIGEgdmFsaWQgdXNlclxuICBpZiAoIXVzZXIgfHwgIXVzZXIuZW5hYmxlZCkgeyB1c2VyID0gbm90QVVzZXI7IH1cblxuICBsZXQgdXNlckF1dGg7XG4gIHRyeSB7XG4gICAgdXNlckF1dGggPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFxuICAgICAgdXNlckF1dGhGaWxlKHVzZXJuYW1lKSxcbiAgICApO1xuICB9IGNhdGNoIChfKSB7XG4gICAgdXNlckF1dGggPSB7IGFjY2Vzc0xldmVsczogW10sIHBhc3N3b3JkSGFzaDogZHVtbXlIYXNoIH07XG4gIH1cblxuICBjb25zdCBwZXJtaXNzaW9ucyA9IGF3YWl0IGJ1aWxkVXNlclBlcm1pc3Npb25zKGFwcCwgdXNlci5hY2Nlc3NMZXZlbHMpO1xuXG4gIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYXBwLmNyeXB0by52ZXJpZnkoXG4gICAgdXNlckF1dGgucGFzc3dvcmRIYXNoLFxuICAgIHBhc3N3b3JkLFxuICApO1xuXG4gIGlmICh1c2VyID09PSBub3RBVXNlcikgeyByZXR1cm4gbnVsbDsgfVxuXG4gIHJldHVybiB2ZXJpZmllZFxuICAgID8ge1xuICAgICAgLi4udXNlciwgcGVybWlzc2lvbnMsIHRlbXA6IGZhbHNlLCBpc1VzZXI6IHRydWUsXG4gICAgfVxuICAgIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoZW50aWNhdGVUZW1wb3JhcnlBY2Nlc3MgPSBhcHAgPT4gYXN5bmMgKHRlbXBBY2Nlc3NDb2RlKSA9PiB7XG4gIGlmIChpc05vdGhpbmdPckVtcHR5KHRlbXBBY2Nlc3NDb2RlKSkgeyByZXR1cm4gbnVsbDsgfVxuXG4gIGNvbnN0IHRlbXAgPSBwYXJzZVRlbXBvcmFyeUNvZGUodGVtcEFjY2Vzc0NvZGUpO1xuICBsZXQgdXNlciA9ICQoYXdhaXQgX2dldFVzZXJzKGFwcCksIFtcbiAgICBmaW5kKHUgPT4gdS50ZW1wb3JhcnlBY2Nlc3NJZCA9PT0gdGVtcC5pZCksXG4gIF0pO1xuXG4gIGNvbnN0IG5vdEFVc2VyID0gJ25vdC1hLXVzZXInO1xuICBpZiAoIXVzZXIgfHwgIXVzZXIuZW5hYmxlZCkgeyB1c2VyID0gbm90QVVzZXI7IH1cblxuICBsZXQgdXNlckF1dGg7XG4gIHRyeSB7XG4gICAgdXNlckF1dGggPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFxuICAgICAgdXNlckF1dGhGaWxlKHVzZXIubmFtZSksXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzZXJBdXRoID0ge1xuICAgICAgdGVtcG9yYXJ5QWNjZXNzSGFzaDogZHVtbXlIYXNoLFxuICAgICAgdGVtcG9yYXJ5QWNjZXNzRXhwaXJ5RXBvY2g6IChhd2FpdCBhcHAuZ2V0RXBvY2hUaW1lKCkgKyAxMDAwMCksXG4gICAgfTtcbiAgfVxuXG4gIGlmICh1c2VyQXV0aC50ZW1wb3JhcnlBY2Nlc3NFeHBpcnlFcG9jaCA8IGF3YWl0IGFwcC5nZXRFcG9jaFRpbWUoKSkgeyB1c2VyID0gbm90QVVzZXI7IH1cblxuICBjb25zdCB0ZW1wQ29kZSA9ICF0ZW1wLmNvZGUgPyBnZW5lcmF0ZSgpIDogdGVtcC5jb2RlO1xuICBjb25zdCB2ZXJpZmllZCA9IGF3YWl0IGFwcC5jcnlwdG8udmVyaWZ5KFxuICAgIHVzZXJBdXRoLnRlbXBvcmFyeUFjY2Vzc0hhc2gsXG4gICAgdGVtcENvZGUsXG4gICk7XG5cbiAgaWYgKHVzZXIgPT09IG5vdEFVc2VyKSB7IHJldHVybiBudWxsOyB9XG5cbiAgcmV0dXJuIHZlcmlmaWVkXG4gICAgPyB7XG4gICAgICAuLi51c2VyLFxuICAgICAgcGVybWlzc2lvbnM6IFtdLFxuICAgICAgdGVtcDogdHJ1ZSxcbiAgICAgIGlzVXNlcjogdHJ1ZSxcbiAgICB9XG4gICAgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVXNlclBlcm1pc3Npb25zID0gYXN5bmMgKGFwcCwgdXNlckFjY2Vzc0xldmVscykgPT4ge1xuICBjb25zdCBhbGxBY2Nlc3NMZXZlbHMgPSBhd2FpdCBfbG9hZEFjY2Vzc0xldmVscyhhcHApO1xuXG4gIHJldHVybiAkKGFsbEFjY2Vzc0xldmVscy5sZXZlbHMsIFtcbiAgICBmaWx0ZXIobCA9PiBzb21lKHVhID0+IGwubmFtZSA9PT0gdWEpKHVzZXJBY2Nlc3NMZXZlbHMpKSxcbiAgICBtYXAobCA9PiBsLnBlcm1pc3Npb25zKSxcbiAgICBmbGF0dGVuLFxuICBdKTtcbn07XG4iLCJpbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gJ3Nob3J0aWQnO1xuaW1wb3J0IHtcbiAgdGVtcENvZGVFeHBpcnlMZW5ndGgsIFVTRVJTX0xPQ0tfRklMRSxcbiAgVVNFUlNfTElTVF9GSUxFLCB1c2VyQXV0aEZpbGUsXG4gIGdldFVzZXJCeU5hbWUsXG59IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQge1xuICBnZXRMb2NrLCBpc05vbG9jayxcbiAgcmVsZWFzZUxvY2ssXG59IGZyb20gJy4uL2NvbW1vbi9sb2NrJztcbmltcG9ydCB7IGFwaVdyYXBwZXIsIGV2ZW50cyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBhbHdheXNBdXRob3JpemVkIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUZW1wb3JhcnlBY2Nlc3MgPSBhcHAgPT4gYXN5bmMgdXNlck5hbWUgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5jcmVhdGVUZW1wb3JhcnlBY2Nlc3MsXG4gIGFsd2F5c0F1dGhvcml6ZWQsXG4gIHsgdXNlck5hbWUgfSxcbiAgX2NyZWF0ZVRlbXBvcmFyeUFjY2VzcywgYXBwLCB1c2VyTmFtZSxcbik7XG5cbmV4cG9ydCBjb25zdCBfY3JlYXRlVGVtcG9yYXJ5QWNjZXNzID0gYXN5bmMgKGFwcCwgdXNlck5hbWUpID0+IHtcbiAgY29uc3QgdGVtcENvZGUgPSBhd2FpdCBnZXRUZW1wb3JhcnlDb2RlKGFwcCk7XG5cbiAgY29uc3QgbG9jayA9IGF3YWl0IGdldExvY2soXG4gICAgYXBwLCBVU0VSU19MT0NLX0ZJTEUsIDEwMDAsIDIsXG4gICk7XG5cbiAgaWYgKGlzTm9sb2NrKGxvY2spKSB7IHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgYWNjZXNzLCBjb3VsZCBub3QgZ2V0IGxvY2sgLSB0cnkgYWdhaW4nKTsgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXNlcnMgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFVTRVJTX0xJU1RfRklMRSk7XG5cbiAgICBjb25zdCB1c2VyID0gZ2V0VXNlckJ5TmFtZSh1c2VycywgdXNlck5hbWUpO1xuICAgIHVzZXIudGVtcG9yYXJ5QWNjZXNzSWQgPSB0ZW1wQ29kZS50ZW1wb3JhcnlBY2Nlc3NJZDtcblxuICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUudXBkYXRlSnNvbihcbiAgICAgIFVTRVJTX0xJU1RfRklMRSxcbiAgICAgIHVzZXJzLFxuICAgICk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVsZWFzZUxvY2soYXBwLCBsb2NrKTtcbiAgfVxuXG4gIGNvbnN0IHVzZXJBdXRoID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5sb2FkSnNvbihcbiAgICB1c2VyQXV0aEZpbGUodXNlck5hbWUpLFxuICApO1xuICB1c2VyQXV0aC50ZW1wb3JhcnlBY2Nlc3NIYXNoID0gdGVtcENvZGUudGVtcG9yYXJ5QWNjZXNzSGFzaDtcblxuICB1c2VyQXV0aC50ZW1wb3JhcnlBY2Nlc3NFeHBpcnlFcG9jaCA9IHRlbXBDb2RlLnRlbXBvcmFyeUFjY2Vzc0V4cGlyeUVwb2NoO1xuXG4gIGF3YWl0IGFwcC5kYXRhc3RvcmUudXBkYXRlSnNvbihcbiAgICB1c2VyQXV0aEZpbGUodXNlck5hbWUpLFxuICAgIHVzZXJBdXRoLFxuICApO1xuXG4gIHJldHVybiB0ZW1wQ29kZS50ZW1wQ29kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZW1wb3JhcnlDb2RlID0gYXN5bmMgKGFwcCkgPT4ge1xuICBjb25zdCB0ZW1wQ29kZSA9IGdlbmVyYXRlKClcbiAgICAgICAgKyBnZW5lcmF0ZSgpXG4gICAgICAgICsgZ2VuZXJhdGUoKVxuICAgICAgICArIGdlbmVyYXRlKCk7XG5cbiAgY29uc3QgdGVtcElkID0gZ2VuZXJhdGUoKTtcblxuICByZXR1cm4ge1xuICAgIHRlbXBvcmFyeUFjY2Vzc0hhc2g6IGF3YWl0IGFwcC5jcnlwdG8uaGFzaChcbiAgICAgIHRlbXBDb2RlLFxuICAgICksXG4gICAgdGVtcG9yYXJ5QWNjZXNzRXhwaXJ5RXBvY2g6XG4gICAgICAgICAgICAoYXdhaXQgYXBwLmdldEVwb2NoVGltZSgpKSArIHRlbXBDb2RlRXhwaXJ5TGVuZ3RoLFxuICAgIHRlbXBDb2RlOiBgdG1wOiR7dGVtcElkfToke3RlbXBDb2RlfWAsXG4gICAgdGVtcG9yYXJ5QWNjZXNzSWQ6IHRlbXBJZCxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsb29rc0xpa2VUZW1wb3JhcnlDb2RlID0gY29kZSA9PiBjb2RlLnN0YXJ0c1dpdGgoJ3RtcDonKTtcbiIsImltcG9ydCB7XG4gIG1hcCwgdW5pcVdpdGgsXG4gIGZsYXR0ZW4sIGZpbHRlcixcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGFwcGx5UnVsZVNldCwgbWFrZXJ1bGUgfSBmcm9tICcuLi9jb21tb24vdmFsaWRhdGlvbkNvbW1vbic7XG5pbXBvcnQge1xuICAkLCBpbnNlbnNpdGl2ZUVxdWFscywgYXBpV3JhcHBlciwgZXZlbnRzLFxuICBpc05vbkVtcHR5U3RyaW5nLCBhbGwsXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBhbHdheXNBdXRob3JpemVkIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmNvbnN0IHVzZXJSdWxlcyA9IGFsbFVzZXJzID0+IFtcbiAgbWFrZXJ1bGUoJ25hbWUnLCAndXNlcm5hbWUgbXVzdCBiZSBzZXQnLFxuICAgIHUgPT4gaXNOb25FbXB0eVN0cmluZyh1Lm5hbWUpKSxcbiAgbWFrZXJ1bGUoJ2FjY2Vzc0xldmVscycsICd1c2VyIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYWNjZXNzIGxldmVsJyxcbiAgICB1ID0+IHUuYWNjZXNzTGV2ZWxzLmxlbmd0aCA+IDApLFxuICBtYWtlcnVsZSgnbmFtZScsICd1c2VybmFtZSBtdXN0IGJlIHVuaXF1ZScsXG4gICAgdSA9PiBmaWx0ZXIodTIgPT4gaW5zZW5zaXRpdmVFcXVhbHModTIubmFtZSwgdS5uYW1lKSkoYWxsVXNlcnMpLmxlbmd0aCA9PT0gMSksXG4gIG1ha2VydWxlKCdhY2Nlc3NMZXZlbHMnLCAnYWNjZXNzIGxldmVscyBtdXN0IG9ubHkgY29udGFpbiBzdGluZ3MnLFxuICAgIHUgPT4gYWxsKGlzTm9uRW1wdHlTdHJpbmcpKHUuYWNjZXNzTGV2ZWxzKSksXG5dO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVVc2VyID0gKCkgPT4gKGFsbHVzZXJzLCB1c2VyKSA9PiBhcHBseVJ1bGVTZXQodXNlclJ1bGVzKGFsbHVzZXJzKSkodXNlcik7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVVzZXJzID0gYXBwID0+IGFsbFVzZXJzID0+IGFwaVdyYXBwZXIoXG4gIGFwcCxcbiAgZXZlbnRzLmF1dGhBcGkudmFsaWRhdGVVc2VycyxcbiAgYWx3YXlzQXV0aG9yaXplZCxcbiAgeyBhbGxVc2VycyB9LFxuICBfdmFsaWRhdGVVc2VycywgYXBwLCBhbGxVc2Vycyxcbik7XG5cbmV4cG9ydCBjb25zdCBfdmFsaWRhdGVVc2VycyA9IChhcHAsIGFsbFVzZXJzKSA9PiAkKGFsbFVzZXJzLCBbXG4gIG1hcChsID0+IHZhbGlkYXRlVXNlcihhcHApKGFsbFVzZXJzLCBsKSksXG4gIGZsYXR0ZW4sXG4gIHVuaXFXaXRoKCh4LCB5KSA9PiB4LmZpZWxkID09PSB5LmZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiB4Lml0ZW0gPT09IHkuaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgeC5lcnJvciA9PT0geS5lcnJvciksXG5dKTtcbiIsImltcG9ydCB7IGFwaVdyYXBwZXJTeW5jLCBldmVudHMgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0TmV3VXNlciA9IGFwcCA9PiAoKSA9PiBhcGlXcmFwcGVyU3luYyhcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5nZXROZXdVc2VyLFxuICBwZXJtaXNzaW9uLmNyZWF0ZVVzZXIuaXNBdXRob3JpemVkLFxuICB7fSxcbiAgX2dldE5ld1VzZXIsIGFwcCxcbik7XG5cbmV4cG9ydCBjb25zdCBfZ2V0TmV3VXNlciA9ICgpID0+ICh7XG4gIG5hbWU6ICcnLFxuICBhY2Nlc3NMZXZlbHM6IFtdLFxuICBlbmFibGVkOiB0cnVlLFxuICB0ZW1wb3JhcnlBY2Nlc3NJZDogJycsXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldE5ld1VzZXJBdXRoID0gYXBwID0+ICgpID0+IGFwaVdyYXBwZXJTeW5jKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLmdldE5ld1VzZXJBdXRoLFxuICBwZXJtaXNzaW9uLmNyZWF0ZVVzZXIuaXNBdXRob3JpemVkLFxuICB7fSxcbiAgX2dldE5ld1VzZXJBdXRoLCBhcHAsXG4pO1xuXG5leHBvcnQgY29uc3QgX2dldE5ld1VzZXJBdXRoID0gKCkgPT4gKHtcbiAgcGFzc3dvcmRIYXNoOiAnJyxcbiAgdGVtcG9yYXJ5QWNjZXNzSGFzaDogJycsXG4gIHRlbXBvcmFyeUFjY2Vzc0V4cGlyeUVwb2NoOiAwLFxufSk7XG4iLCJpbXBvcnQgeyBmaW5kIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IHVzZXJBdXRoRmlsZSwgcGFyc2VUZW1wb3JhcnlDb2RlIH0gZnJvbSAnLi9hdXRoQ29tbW9uJztcbmltcG9ydCB7XG4gIGlzU29tZXRoaW5nLCAkLCBhcGlXcmFwcGVyLCBhcGlXcmFwcGVyU3luYywgZXZlbnRzLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgX2dldFVzZXJzIH0gZnJvbSAnLi9nZXRVc2Vycyc7XG5pbXBvcnQgeyBhbHdheXNBdXRob3JpemVkIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkUGFzc3dvcmQgPSBhcHAgPT4gcGFzc3dvcmQgPT4gYXBpV3JhcHBlclN5bmMoXG4gIGFwcCxcbiAgZXZlbnRzLmF1dGhBcGkuaXNWYWxpZFBhc3N3b3JkLFxuICBhbHdheXNBdXRob3JpemVkLFxuICB7IHBhc3N3b3JkIH0sXG4gIF9pc1ZhbGlkUGFzc3dvcmQsIGFwcCwgcGFzc3dvcmQsXG4pO1xuXG5leHBvcnQgY29uc3QgX2lzVmFsaWRQYXNzd29yZCA9IChhcHAsIHBhc3N3b3JkKSA9PiBzY29yZVBhc3N3b3JkKHBhc3N3b3JkKS5zY29yZSA+IDMwO1xuXG5leHBvcnQgY29uc3QgY2hhbmdlTXlQYXNzd29yZCA9IGFwcCA9PiBhc3luYyAoY3VycmVudFB3LCBuZXdwYXNzd29yZCkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5jaGFuZ2VNeVBhc3N3b3JkLFxuICBhbHdheXNBdXRob3JpemVkLFxuICB7IGN1cnJlbnRQdywgbmV3cGFzc3dvcmQgfSxcbiAgX2NoYW5nZU15UGFzc3dvcmQsIGFwcCwgY3VycmVudFB3LCBuZXdwYXNzd29yZCxcbik7XG5cbmV4cG9ydCBjb25zdCBfY2hhbmdlTXlQYXNzd29yZCA9IGFzeW5jIChhcHAsIGN1cnJlbnRQdywgbmV3cGFzc3dvcmQpID0+IHtcbiAgY29uc3QgZXhpc3RpbmdBdXRoID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5sb2FkSnNvbihcbiAgICB1c2VyQXV0aEZpbGUoYXBwLnVzZXIubmFtZSksXG4gICk7XG5cbiAgaWYgKGlzU29tZXRoaW5nKGV4aXN0aW5nQXV0aC5wYXNzd29yZEhhc2gpKSB7XG4gICAgY29uc3QgdmVyaWZpZWQgPSBhd2FpdCBhcHAuY3J5cHRvLnZlcmlmeShcbiAgICAgIGV4aXN0aW5nQXV0aC5wYXNzd29yZEhhc2gsXG4gICAgICBjdXJyZW50UHcsXG4gICAgKTtcblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgYXdhaXQgYXdhaXQgZG9TZXQoXG4gICAgICAgIGFwcCwgZXhpc3RpbmdBdXRoLFxuICAgICAgICBhcHAudXNlci5uYW1lLCBuZXdwYXNzd29yZCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UGFzc3dvcmRGcm9tVGVtcG9yYXJ5Q29kZSA9IGFwcCA9PiBhc3luYyAodGVtcENvZGUsIG5ld3Bhc3N3b3JkKSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLnNldFBhc3N3b3JkRnJvbVRlbXBvcmFyeUNvZGUsXG4gIGFsd2F5c0F1dGhvcml6ZWQsXG4gIHsgdGVtcENvZGUsIG5ld3Bhc3N3b3JkIH0sXG4gIF9zZXRQYXNzd29yZEZyb21UZW1wb3JhcnlDb2RlLCBhcHAsIHRlbXBDb2RlLCBuZXdwYXNzd29yZCxcbik7XG5cblxuZXhwb3J0IGNvbnN0IF9zZXRQYXNzd29yZEZyb21UZW1wb3JhcnlDb2RlID0gYXN5bmMgKGFwcCwgdGVtcENvZGUsIG5ld3Bhc3N3b3JkKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gYXdhaXQgYXBwLmdldEVwb2NoVGltZSgpO1xuXG4gIGNvbnN0IHRlbXAgPSBwYXJzZVRlbXBvcmFyeUNvZGUodGVtcENvZGUpO1xuXG4gIGNvbnN0IHVzZXIgPSAkKGF3YWl0IF9nZXRVc2VycyhhcHApLCBbXG4gICAgZmluZCh1ID0+IHUudGVtcG9yYXJ5QWNjZXNzSWQgPT09IHRlbXAuaWQpLFxuICBdKTtcblxuICBpZiAoIXVzZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgY29uc3QgZXhpc3RpbmdBdXRoID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5sb2FkSnNvbihcbiAgICB1c2VyQXV0aEZpbGUodXNlci5uYW1lKSxcbiAgKTtcblxuICBpZiAoaXNTb21ldGhpbmcoZXhpc3RpbmdBdXRoLnRlbXBvcmFyeUFjY2Vzc0hhc2gpXG4gICAgICAgJiYgZXhpc3RpbmdBdXRoLnRlbXBvcmFyeUFjY2Vzc0V4cGlyeUVwb2NoID4gY3VycmVudFRpbWUpIHtcbiAgICBjb25zdCB2ZXJpZmllZCA9IGF3YWl0IGFwcC5jcnlwdG8udmVyaWZ5KFxuICAgICAgZXhpc3RpbmdBdXRoLnRlbXBvcmFyeUFjY2Vzc0hhc2gsXG4gICAgICB0ZW1wLmNvZGUsXG4gICAgKTtcblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgYXdhaXQgZG9TZXQoXG4gICAgICAgIGFwcCwgZXhpc3RpbmdBdXRoLFxuICAgICAgICB1c2VyLm5hbWUsIG5ld3Bhc3N3b3JkLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGRvU2V0ID0gYXN5bmMgKGFwcCwgYXV0aCwgdXNlcm5hbWUsIG5ld3Bhc3N3b3JkKSA9PiB7XG4gIGF1dGgudGVtcG9yYXJ5QWNjZXNzSGFzaCA9ICcnO1xuICBhdXRoLnRlbXBvcmFyeUFjY2Vzc0V4cGlyeUVwb2NoID0gMDtcbiAgYXV0aC5wYXNzd29yZEhhc2ggPSBhd2FpdCBhcHAuY3J5cHRvLmhhc2goXG4gICAgbmV3cGFzc3dvcmQsXG4gICk7XG4gIGF3YWl0IGFwcC5kYXRhc3RvcmUudXBkYXRlSnNvbihcbiAgICB1c2VyQXV0aEZpbGUodXNlcm5hbWUpLFxuICAgIGF1dGgsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2NvcmVQYXNzd29yZCA9IGFwcCA9PiBwYXNzd29yZCA9PiBhcGlXcmFwcGVyU3luYyhcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5zY29yZVBhc3N3b3JkLFxuICBhbHdheXNBdXRob3JpemVkLFxuICB7IHBhc3N3b3JkIH0sXG4gIF9zY29yZVBhc3N3b3JkLCBwYXNzd29yZCxcbik7XG5cbmV4cG9ydCBjb25zdCBfc2NvcmVQYXNzd29yZCA9IChwYXNzd29yZCkgPT4ge1xuICAvLyBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzk0ODE3Mi9wYXNzd29yZC1zdHJlbmd0aC1tZXRlclxuICAvLyB0aGFuayB5b3UgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS91c2Vycy80NjYxNy90bS1sdlxuXG4gIGxldCBzY29yZSA9IDA7XG4gIGlmICghcGFzc3dvcmQpIHsgcmV0dXJuIHNjb3JlOyB9XG5cbiAgLy8gYXdhcmQgZXZlcnkgdW5pcXVlIGxldHRlciB1bnRpbCA1IHJlcGV0aXRpb25zXG4gIGNvbnN0IGxldHRlcnMgPSBuZXcgT2JqZWN0KCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFzc3dvcmQubGVuZ3RoOyBpKyspIHtcbiAgICBsZXR0ZXJzW3Bhc3N3b3JkW2ldXSA9IChsZXR0ZXJzW3Bhc3N3b3JkW2ldXSB8fCAwKSArIDE7XG4gICAgc2NvcmUgKz0gNS4wIC8gbGV0dGVyc1twYXNzd29yZFtpXV07XG4gIH1cblxuICAvLyBib251cyBwb2ludHMgZm9yIG1peGluZyBpdCB1cFxuICBjb25zdCB2YXJpYXRpb25zID0ge1xuICAgIGRpZ2l0czogL1xcZC8udGVzdChwYXNzd29yZCksXG4gICAgbG93ZXI6IC9bYS16XS8udGVzdChwYXNzd29yZCksXG4gICAgdXBwZXI6IC9bQS1aXS8udGVzdChwYXNzd29yZCksXG4gICAgbm9uV29yZHM6IC9cXFcvLnRlc3QocGFzc3dvcmQpLFxuICB9O1xuXG4gIGxldCB2YXJpYXRpb25Db3VudCA9IDA7XG4gIGZvciAoY29uc3QgY2hlY2sgaW4gdmFyaWF0aW9ucykge1xuICAgIHZhcmlhdGlvbkNvdW50ICs9ICh2YXJpYXRpb25zW2NoZWNrXSA9PSB0cnVlKSA/IDEgOiAwO1xuICB9XG4gIHNjb3JlICs9ICh2YXJpYXRpb25Db3VudCAtIDEpICogMTA7XG5cbiAgY29uc3Qgc3RyZW5ndGhUZXh0ID0gc2NvcmUgPiA4MFxuICAgID8gJ3N0cm9uZydcbiAgICA6IHNjb3JlID4gNjBcbiAgICAgID8gJ2dvb2QnXG4gICAgICA6IHNjb3JlID49IDMwXG4gICAgICAgID8gJ3dlYWsnXG4gICAgICAgIDogJ3Zlcnkgd2Vhayc7XG5cbiAgcmV0dXJuIHtcbiAgICBzY29yZTogcGFyc2VJbnQoc2NvcmUpLFxuICAgIHN0cmVuZ3RoVGV4dCxcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBqb2luLCBzb21lIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IHZhbGlkYXRlVXNlciB9IGZyb20gJy4vdmFsaWRhdGVVc2VyJztcbmltcG9ydCB7IGdldE5ld1VzZXJBdXRoIH0gZnJvbSAnLi9nZXROZXdVc2VyJztcbmltcG9ydCB7XG4gIGdldExvY2ssIGlzTm9sb2NrLCByZWxlYXNlTG9jaywgYXBpV3JhcHBlciwgZXZlbnRzLFxuICBpbnNlbnNpdGl2ZUVxdWFscywgaXNOb25FbXB0eVN0cmluZyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7XG4gIFVTRVJTX0xPQ0tfRklMRSwgc3RyaXBVc2VyT2ZTZW5zaXRpdmVTdHVmZixcbiAgVVNFUlNfTElTVF9GSUxFLCB1c2VyQXV0aEZpbGUsXG59IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQgeyBnZXRUZW1wb3JhcnlDb2RlIH0gZnJvbSAnLi9jcmVhdGVUZW1wb3JhcnlBY2Nlc3MnO1xuaW1wb3J0IHsgaXNWYWxpZFBhc3N3b3JkIH0gZnJvbSAnLi9zZXRQYXNzd29yZCc7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBCYWRSZXF1ZXN0RXJyb3IgfSBmcm9tICcuLi9jb21tb24vZXJyb3JzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVVzZXIgPSBhcHAgPT4gYXN5bmMgKHVzZXIsIHBhc3N3b3JkID0gbnVsbCkgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5jcmVhdGVVc2VyLFxuICBwZXJtaXNzaW9uLmNyZWF0ZVVzZXIuaXNBdXRob3JpemVkLFxuICB7IHVzZXIsIHBhc3N3b3JkIH0sXG4gIF9jcmVhdGVVc2VyLCBhcHAsIHVzZXIsIHBhc3N3b3JkLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9jcmVhdGVVc2VyID0gYXN5bmMgKGFwcCwgdXNlciwgcGFzc3dvcmQgPSBudWxsKSA9PiB7XG4gIGNvbnN0IGxvY2sgPSBhd2FpdCBnZXRMb2NrKFxuICAgIGFwcCwgVVNFUlNfTE9DS19GSUxFLCAxMDAwLCAyLFxuICApO1xuXG4gIGlmIChpc05vbG9jayhsb2NrKSkgeyB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBjcmVhdGUgdXNlciwgY291bGQgbm90IGdldCBsb2NrIC0gdHJ5IGFnYWluJyk7IH1cblxuICBjb25zdCB1c2VycyA9IGF3YWl0IGFwcC5kYXRhc3RvcmUubG9hZEpzb24oVVNFUlNfTElTVF9GSUxFKTtcblxuICBjb25zdCB1c2VyRXJyb3JzID0gdmFsaWRhdGVVc2VyKGFwcCkoWy4uLnVzZXJzLCB1c2VyXSwgdXNlcik7XG4gIGlmICh1c2VyRXJyb3JzLmxlbmd0aCA+IDApIHsgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihgVXNlciBpcyBpbnZhbGlkLiAke2pvaW4oJzsgJykodXNlckVycm9ycyl9YCk7IH1cblxuICBjb25zdCB7IGF1dGgsIHRlbXBDb2RlLCB0ZW1wb3JhcnlBY2Nlc3NJZCB9ID0gYXdhaXQgZ2V0QWNjZXNzKFxuICAgIGFwcCwgcGFzc3dvcmQsXG4gICk7XG4gIHVzZXIudGVtcENvZGUgPSB0ZW1wQ29kZTtcbiAgdXNlci50ZW1wb3JhcnlBY2Nlc3NJZCA9IHRlbXBvcmFyeUFjY2Vzc0lkO1xuXG4gIGlmIChzb21lKHUgPT4gaW5zZW5zaXRpdmVFcXVhbHModS5uYW1lLCB1c2VyLm5hbWUpKSh1c2VycykpIHsgXG4gICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcignVXNlciBhbHJlYWR5IGV4aXN0cycpOyBcbiAgfVxuXG4gIHVzZXJzLnB1c2goXG4gICAgc3RyaXBVc2VyT2ZTZW5zaXRpdmVTdHVmZih1c2VyKSxcbiAgKTtcblxuICBhd2FpdCBhcHAuZGF0YXN0b3JlLnVwZGF0ZUpzb24oXG4gICAgVVNFUlNfTElTVF9GSUxFLFxuICAgIHVzZXJzLFxuICApO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLmRhdGFzdG9yZS5jcmVhdGVKc29uKFxuICAgICAgdXNlckF1dGhGaWxlKHVzZXIubmFtZSksXG4gICAgICBhdXRoLFxuICAgICk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLnVwZGF0ZUpzb24oXG4gICAgICB1c2VyQXV0aEZpbGUodXNlci5uYW1lKSxcbiAgICAgIGF1dGgsXG4gICAgKTtcbiAgfVxuXG4gIGF3YWl0IHJlbGVhc2VMb2NrKGFwcCwgbG9jayk7XG5cbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5jb25zdCBnZXRBY2Nlc3MgPSBhc3luYyAoYXBwLCBwYXNzd29yZCkgPT4ge1xuICBjb25zdCBhdXRoID0gZ2V0TmV3VXNlckF1dGgoYXBwKSgpO1xuXG4gIGlmIChpc05vbkVtcHR5U3RyaW5nKHBhc3N3b3JkKSkge1xuICAgIGlmIChpc1ZhbGlkUGFzc3dvcmQocGFzc3dvcmQpKSB7XG4gICAgICBhdXRoLnBhc3N3b3JkSGFzaCA9IGF3YWl0IGFwcC5jcnlwdG8uaGFzaChwYXNzd29yZCk7XG4gICAgICBhdXRoLnRlbXBvcmFyeUFjY2Vzc0hhc2ggPSAnJztcbiAgICAgIGF1dGgudGVtcG9yYXJ5QWNjZXNzSWQgPSAnJztcbiAgICAgIGF1dGgudGVtcG9yYXJ5QWNjZXNzRXhwaXJ5RXBvY2ggPSAwO1xuICAgICAgcmV0dXJuIHsgYXV0aCB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKCdQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHJlcXVpcmVtZW50cycpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRlbXBBY2Nlc3MgPSBhd2FpdCBnZXRUZW1wb3JhcnlDb2RlKGFwcCk7XG4gICAgYXV0aC50ZW1wb3JhcnlBY2Nlc3NIYXNoID0gdGVtcEFjY2Vzcy50ZW1wb3JhcnlBY2Nlc3NIYXNoO1xuICAgIGF1dGgudGVtcG9yYXJ5QWNjZXNzRXhwaXJ5RXBvY2ggPSB0ZW1wQWNjZXNzLnRlbXBvcmFyeUFjY2Vzc0V4cGlyeUVwb2NoO1xuICAgIGF1dGgucGFzc3dvcmRIYXNoID0gJyc7XG4gICAgcmV0dXJuICh7XG4gICAgICBhdXRoLFxuICAgICAgdGVtcENvZGU6IHRlbXBBY2Nlc3MudGVtcENvZGUsXG4gICAgICB0ZW1wb3JhcnlBY2Nlc3NJZDogdGVtcEFjY2Vzcy50ZW1wb3JhcnlBY2Nlc3NJZCxcbiAgICB9KTtcbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIGdldExvY2ssXG4gIGlzTm9sb2NrLCByZWxlYXNlTG9jayxcbn0gZnJvbSAnLi4vY29tbW9uL2xvY2snO1xuaW1wb3J0IHsgVVNFUlNfTE9DS19GSUxFLCBVU0VSU19MSVNUX0ZJTEUsIGdldFVzZXJCeU5hbWUgfSBmcm9tICcuL2F1dGhDb21tb24nO1xuaW1wb3J0IHsgYXBpV3JhcHBlciwgZXZlbnRzIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9jb21tb24vZXJyb3JzJztcblxuZXhwb3J0IGNvbnN0IGVuYWJsZVVzZXIgPSBhcHAgPT4gYXN5bmMgdXNlcm5hbWUgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5lbmFibGVVc2VyLFxuICBwZXJtaXNzaW9uLmVuYWJsZURpc2FibGVVc2VyLmlzQXV0aG9yaXplZCxcbiAgeyB1c2VybmFtZSB9LFxuICBfZW5hYmxlVXNlciwgYXBwLCB1c2VybmFtZSxcbik7XG5cbmV4cG9ydCBjb25zdCBkaXNhYmxlVXNlciA9IGFwcCA9PiBhc3luYyB1c2VybmFtZSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLmRpc2FibGVVc2VyLFxuICBwZXJtaXNzaW9uLmVuYWJsZURpc2FibGVVc2VyLmlzQXV0aG9yaXplZCxcbiAgeyB1c2VybmFtZSB9LFxuICBfZGlzYWJsZVVzZXIsIGFwcCwgdXNlcm5hbWUsXG4pO1xuXG5leHBvcnQgY29uc3QgX2VuYWJsZVVzZXIgPSBhc3luYyAoYXBwLCB1c2VybmFtZSkgPT4gYXdhaXQgdG9nZ2xlVXNlcihhcHAsIHVzZXJuYW1lLCB0cnVlKTtcblxuZXhwb3J0IGNvbnN0IF9kaXNhYmxlVXNlciA9IGFzeW5jIChhcHAsIHVzZXJuYW1lKSA9PiBhd2FpdCB0b2dnbGVVc2VyKGFwcCwgdXNlcm5hbWUsIGZhbHNlKTtcblxuY29uc3QgdG9nZ2xlVXNlciA9IGFzeW5jIChhcHAsIHVzZXJuYW1lLCBlbmFibGVkKSA9PiB7XG4gIGNvbnN0IGxvY2sgPSBhd2FpdCBnZXRMb2NrKGFwcCwgVVNFUlNfTE9DS19GSUxFLCAxMDAwLCAxLCAwKTtcblxuICBjb25zdCBhY3Rpb25OYW1lID0gZW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnO1xuXG4gIGlmIChpc05vbG9jayhsb2NrKSkgeyB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCAke2FjdGlvbk5hbWV9IHVzZXIgLSBjYW5ub3QgZ2V0IGxvY2tgKTsgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXNlcnMgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFVTRVJTX0xJU1RfRklMRSk7XG4gICAgY29uc3QgdXNlciA9IGdldFVzZXJCeU5hbWUodXNlcnMsIHVzZXJuYW1lKTtcbiAgICBpZiAoIXVzZXIpIHsgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYENvdWxkIG5vdCBmaW5kIHVzZXIgdG8gJHthY3Rpb25OYW1lfWApOyB9XG5cbiAgICBpZiAodXNlci5lbmFibGVkID09PSAhZW5hYmxlZCkge1xuICAgICAgdXNlci5lbmFibGVkID0gZW5hYmxlZDtcbiAgICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUudXBkYXRlSnNvbihVU0VSU19MSVNUX0ZJTEUsIHVzZXJzKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVsZWFzZUxvY2soYXBwLCBsb2NrKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBnZXROZXdBY2Nlc3NMZXZlbCA9ICgpID0+ICgpID0+ICh7XG4gIG5hbWU6ICcnLFxuICBwZXJtaXNzaW9uczogW10sXG4gIGRlZmF1bHQ6ZmFsc2Vcbn0pO1xuIiwiaW1wb3J0IHtcbiAgdmFsdWVzLCBpbmNsdWRlcywgbWFwLCBjb25jYXQsIGlzRW1wdHksIHVuaXFXaXRoLCBzb21lLFxuICBmbGF0dGVuLCBmaWx0ZXIsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBhcHBseVJ1bGVTZXQsIG1ha2VydWxlIH0gZnJvbSAnLi4vY29tbW9uL3ZhbGlkYXRpb25Db21tb24nO1xuaW1wb3J0IHsgcGVybWlzc2lvblR5cGVzIH0gZnJvbSAnLi9hdXRoQ29tbW9uJztcbmltcG9ydCB7XG4gICQsIGlzU29tZXRoaW5nLCBpbnNlbnNpdGl2ZUVxdWFscyxcbiAgaXNOb25FbXB0eVN0cmluZywgYXBpV3JhcHBlclN5bmMsIGV2ZW50cyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldE5vZGUgfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgYWx3YXlzQXV0aG9yaXplZCB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5jb25zdCBpc0FsbG93ZWRUeXBlID0gdCA9PiAkKHBlcm1pc3Npb25UeXBlcywgW1xuICB2YWx1ZXMsXG4gIGluY2x1ZGVzKHQpLFxuXSk7XG5cbmNvbnN0IGlzUmVjb3JkT3JJbmRleFR5cGUgPSB0ID0+IHNvbWUocCA9PiBwID09PSB0KShbXG4gIHBlcm1pc3Npb25UeXBlcy5DUkVBVEVfUkVDT1JELFxuICBwZXJtaXNzaW9uVHlwZXMuVVBEQVRFX1JFQ09SRCxcbiAgcGVybWlzc2lvblR5cGVzLkRFTEVURV9SRUNPUkQsXG4gIHBlcm1pc3Npb25UeXBlcy5SRUFEX1JFQ09SRCxcbiAgcGVybWlzc2lvblR5cGVzLlJFQURfSU5ERVgsXG4gIHBlcm1pc3Npb25UeXBlcy5FWEVDVVRFX0FDVElPTixcbl0pO1xuXG5cbmNvbnN0IHBlcm1pc3Npb25SdWxlcyA9IGFwcCA9PiAoW1xuICBtYWtlcnVsZSgndHlwZScsICd0eXBlIG11c3QgYmUgb25lIG9mIGFsbG93ZWQgdHlwZXMnLFxuICAgIHAgPT4gaXNBbGxvd2VkVHlwZShwLnR5cGUpKSxcbiAgbWFrZXJ1bGUoJ25vZGVLZXknLCAncmVjb3JkIGFuZCBpbmRleCBwZXJtaXNzaW9ucyBtdXN0IGluY2x1ZGUgYSB2YWxpZCBub2RlS2V5JyxcbiAgICBwID0+ICghaXNSZWNvcmRPckluZGV4VHlwZShwLnR5cGUpKVxuICAgICAgICAgICAgIHx8IGlzU29tZXRoaW5nKGdldE5vZGUoYXBwLmhpZXJhcmNoeSwgcC5ub2RlS2V5KSkpLFxuXSk7XG5cbmNvbnN0IGFwcGx5UGVybWlzc2lvblJ1bGVzID0gYXBwID0+IGFwcGx5UnVsZVNldChwZXJtaXNzaW9uUnVsZXMoYXBwKSk7XG5cbmNvbnN0IGFjY2Vzc0xldmVsUnVsZXMgPSBhbGxMZXZlbHMgPT4gKFtcbiAgbWFrZXJ1bGUoJ25hbWUnLCAnbmFtZSBtdXN0IGJlIHNldCcsXG4gICAgbCA9PiBpc05vbkVtcHR5U3RyaW5nKGwubmFtZSkpLFxuICBtYWtlcnVsZSgnbmFtZScsICdhY2Nlc3MgbGV2ZWwgbmFtZXMgbXVzdCBiZSB1bmlxdWUnLFxuICAgIGwgPT4gaXNFbXB0eShsLm5hbWUpXG4gICAgICAgICAgICAgfHwgZmlsdGVyKGEgPT4gaW5zZW5zaXRpdmVFcXVhbHMobC5uYW1lLCBhLm5hbWUpKShhbGxMZXZlbHMpLmxlbmd0aCA9PT0gMSksXG5dKTtcblxuY29uc3QgYXBwbHlMZXZlbFJ1bGVzID0gYWxsTGV2ZWxzID0+IGFwcGx5UnVsZVNldChhY2Nlc3NMZXZlbFJ1bGVzKGFsbExldmVscykpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBY2Nlc3NMZXZlbCA9IGFwcCA9PiAoYWxsTGV2ZWxzLCBsZXZlbCkgPT4ge1xuICBjb25zdCBlcnJzID0gJChsZXZlbC5wZXJtaXNzaW9ucywgW1xuICAgIG1hcChhcHBseVBlcm1pc3Npb25SdWxlcyhhcHApKSxcbiAgICBmbGF0dGVuLFxuICAgIGNvbmNhdChcbiAgICAgIGFwcGx5TGV2ZWxSdWxlcyhhbGxMZXZlbHMpKGxldmVsKSxcbiAgICApLFxuICBdKTtcblxuICByZXR1cm4gZXJycztcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUFjY2Vzc0xldmVscyA9IGFwcCA9PiBhbGxMZXZlbHMgPT4gYXBpV3JhcHBlclN5bmMoXG4gIGFwcCxcbiAgZXZlbnRzLmF1dGhBcGkudmFsaWRhdGVBY2Nlc3NMZXZlbHMsXG4gIGFsd2F5c0F1dGhvcml6ZWQsXG4gIHsgYWxsTGV2ZWxzIH0sXG4gIF92YWxpZGF0ZUFjY2Vzc0xldmVscywgYXBwLCBhbGxMZXZlbHMsXG4pO1xuXG5leHBvcnQgY29uc3QgX3ZhbGlkYXRlQWNjZXNzTGV2ZWxzID0gKGFwcCwgYWxsTGV2ZWxzKSA9PiAkKGFsbExldmVscywgW1xuICBtYXAobCA9PiB2YWxpZGF0ZUFjY2Vzc0xldmVsKGFwcCkoYWxsTGV2ZWxzLCBsKSksXG4gIGZsYXR0ZW4sXG4gIHVuaXFXaXRoKCh4LCB5KSA9PiB4LmZpZWxkID09PSB5LmZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiB4Lml0ZW0gPT09IHkuaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgeC5lcnJvciA9PT0geS5lcnJvciksXG5dKTtcbiIsImltcG9ydCB7IGpvaW4sIG1hcCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge1xuICBnZXRMb2NrLCByZWxlYXNlTG9jaywgJCxcbiAgaXNOb2xvY2ssIGFwaVdyYXBwZXIsIGV2ZW50cyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7XG4gIEFDQ0VTU19MRVZFTFNfTE9DS19GSUxFLFxuICBBQ0NFU1NfTEVWRUxTX0ZJTEUsXG59IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQgeyB2YWxpZGF0ZUFjY2Vzc0xldmVscyB9IGZyb20gJy4vdmFsaWRhdGVBY2Nlc3NMZXZlbHMnO1xuaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3Qgc2F2ZUFjY2Vzc0xldmVscyA9IGFwcCA9PiBhc3luYyBhY2Nlc3NMZXZlbHMgPT4gYXBpV3JhcHBlcihcbiAgYXBwLFxuICBldmVudHMuYXV0aEFwaS5zYXZlQWNjZXNzTGV2ZWxzLFxuICBwZXJtaXNzaW9uLndyaXRlQWNjZXNzTGV2ZWxzLmlzQXV0aG9yaXplZCxcbiAgeyBhY2Nlc3NMZXZlbHMgfSxcbiAgX3NhdmVBY2Nlc3NMZXZlbHMsIGFwcCwgYWNjZXNzTGV2ZWxzLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9zYXZlQWNjZXNzTGV2ZWxzID0gYXN5bmMgKGFwcCwgYWNjZXNzTGV2ZWxzKSA9PiB7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZUFjY2Vzc0xldmVscyhhcHApKGFjY2Vzc0xldmVscy5sZXZlbHMpO1xuICBpZiAodmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZXJycyA9ICQodmFsaWRhdGlvbkVycm9ycywgW1xuICAgICAgbWFwKGUgPT4gZS5lcnJvciksXG4gICAgICBqb2luKCcsICcpLFxuICAgIF0pO1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBY2Nlc3MgTGV2ZWxzIEludmFsaWQ6ICR7ZXJyc31gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBsb2NrID0gYXdhaXQgZ2V0TG9jayhcbiAgICBhcHAsIEFDQ0VTU19MRVZFTFNfTE9DS19GSUxFLCAyMDAwLCAyLFxuICApO1xuXG4gIGlmIChpc05vbG9jayhsb2NrKSkgeyB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgbG9jayB0byBzYXZlIGFjY2VzcyBsZXZlbHMnKTsgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKEFDQ0VTU19MRVZFTFNfRklMRSk7XG4gICAgaWYgKGV4aXN0aW5nLnZlcnNpb24gIT09IGFjY2Vzc0xldmVscy52ZXJzaW9uKSB7IHRocm93IG5ldyBFcnJvcignQWNjZXNzIGxldmVscyBoYXZlIGFscmVhZHkgYmVlbiB1cGRhdGVkLCBzaW5jZSB5b3UgbG9hZGVkJyk7IH1cblxuICAgIGFjY2Vzc0xldmVscy52ZXJzaW9uKys7XG5cbiAgICBhcHAuZGF0YXN0b3JlLnVwZGF0ZUpzb24oQUNDRVNTX0xFVkVMU19GSUxFLCBhY2Nlc3NMZXZlbHMpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlbGVhc2VMb2NrKGFwcCwgbG9jayk7XG4gIH1cbn07XG4iLCJpbXBvcnQge1xuICBmaWx0ZXIsIHZhbHVlcywgZWFjaCwga2V5cyxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IHBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb25zJztcbmltcG9ydCB7XG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSxcbiAgaXNJbmRleCwgaXNSZWNvcmQsXG59IGZyb20gJy4uL3RlbXBsYXRlQXBpL2hpZXJhcmNoeSc7XG5pbXBvcnQgeyAkIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRnVsbFBlcm1pc3Npb25zID0gKGFwcCkgPT4ge1xuICBjb25zdCBhbGxOb2RlcyA9IGdldEZsYXR0ZW5lZEhpZXJhcmNoeShhcHAuaGllcmFyY2h5KTtcbiAgY29uc3QgYWNjZXNzTGV2ZWwgPSB7IHBlcm1pc3Npb25zOiBbXSB9O1xuXG4gIGNvbnN0IHJlY29yZE5vZGVzID0gJChhbGxOb2RlcywgW1xuICAgIGZpbHRlcihpc1JlY29yZCksXG4gIF0pO1xuXG4gIGZvciAoY29uc3QgbiBvZiByZWNvcmROb2Rlcykge1xuICAgIHBlcm1pc3Npb24uY3JlYXRlUmVjb3JkLmFkZChuLm5vZGVLZXkoKSwgYWNjZXNzTGV2ZWwpO1xuICAgIHBlcm1pc3Npb24udXBkYXRlUmVjb3JkLmFkZChuLm5vZGVLZXkoKSwgYWNjZXNzTGV2ZWwpO1xuICAgIHBlcm1pc3Npb24uZGVsZXRlUmVjb3JkLmFkZChuLm5vZGVLZXkoKSwgYWNjZXNzTGV2ZWwpO1xuICAgIHBlcm1pc3Npb24ucmVhZFJlY29yZC5hZGQobi5ub2RlS2V5KCksIGFjY2Vzc0xldmVsKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4Tm9kZXMgPSAkKGFsbE5vZGVzLCBbXG4gICAgZmlsdGVyKGlzSW5kZXgpLFxuICBdKTtcblxuICBmb3IgKGNvbnN0IG4gb2YgaW5kZXhOb2Rlcykge1xuICAgIHBlcm1pc3Npb24ucmVhZEluZGV4LmFkZChuLm5vZGVLZXkoKSwgYWNjZXNzTGV2ZWwpO1xuICB9XG5cbiAgZm9yIChjb25zdCBhIG9mIGtleXMoYXBwLmFjdGlvbnMpKSB7XG4gICAgcGVybWlzc2lvbi5leGVjdXRlQWN0aW9uLmFkZChhLCBhY2Nlc3NMZXZlbCk7XG4gIH1cblxuICAkKHBlcm1pc3Npb24sIFtcbiAgICB2YWx1ZXMsXG4gICAgZmlsdGVyKHAgPT4gIXAuaXNOb2RlKSxcbiAgICBlYWNoKHAgPT4gcC5hZGQoYWNjZXNzTGV2ZWwpKSxcbiAgXSk7XG5cbiAgcmV0dXJuIGFjY2Vzc0xldmVsLnBlcm1pc3Npb25zO1xufTtcbiIsImltcG9ydCB7IGRpZmZlcmVuY2UsIG1hcCwgam9pbiB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge1xuICBnZXRMb2NrLCBpc05vbG9jaywgcmVsZWFzZUxvY2ssICQsXG4gIGFwaVdyYXBwZXIsIGV2ZW50cyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7XG4gIFVTRVJTX0xPQ0tfRklMRSwgQUNDRVNTX0xFVkVMU19GSUxFLFxuICBnZXRVc2VyQnlOYW1lLCBVU0VSU19MSVNUX0ZJTEUsXG59IGZyb20gJy4vYXV0aENvbW1vbic7XG5pbXBvcnQgeyBwZXJtaXNzaW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBzZXRVc2VyQWNjZXNzTGV2ZWxzID0gYXBwID0+IGFzeW5jICh1c2VyTmFtZSwgYWNjZXNzTGV2ZWxzKSA9PiBhcGlXcmFwcGVyKFxuICBhcHAsXG4gIGV2ZW50cy5hdXRoQXBpLnNldFVzZXJBY2Nlc3NMZXZlbHMsXG4gIHBlcm1pc3Npb24uc2V0VXNlckFjY2Vzc0xldmVscy5pc0F1dGhvcml6ZWQsXG4gIHsgdXNlck5hbWUsIGFjY2Vzc0xldmVscyB9LFxuICBfc2V0VXNlckFjY2Vzc0xldmVscywgYXBwLCB1c2VyTmFtZSwgYWNjZXNzTGV2ZWxzLFxuKTtcblxuZXhwb3J0IGNvbnN0IF9zZXRVc2VyQWNjZXNzTGV2ZWxzID0gYXN5bmMgKGFwcCwgdXNlcm5hbWUsIGFjY2Vzc0xldmVscykgPT4ge1xuICBjb25zdCBsb2NrID0gYXdhaXQgZ2V0TG9jayhhcHAsIFVTRVJTX0xPQ0tfRklMRSwgMTAwMCwgMSwgMCk7XG5cbiAgY29uc3QgYWN0dWFsQWNjZXNzTGV2ZWxzID0gJChcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKEFDQ0VTU19MRVZFTFNfRklMRSksXG4gICAgW1xuICAgICAgbCA9PiBsLmxldmVscyxcbiAgICAgIG1hcChsID0+IGwubmFtZSksXG4gICAgXSxcbiAgKTtcblxuICBjb25zdCBtaXNzaW5nID0gZGlmZmVyZW5jZShhY2Nlc3NMZXZlbHMpKGFjdHVhbEFjY2Vzc0xldmVscyk7XG4gIGlmIChtaXNzaW5nLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYWNjZXNzIGxldmVscyBzdXBwbGllZDogJHtqb2luKCcsICcsIG1pc3NpbmcpfWApO1xuICB9XG5cbiAgaWYgKGlzTm9sb2NrKGxvY2spKSB7IHRocm93IG5ldyBFcnJvcignQ291bGQgc2V0IHVzZXIgYWNjZXNzIGxldmVscyBjYW5ub3QgZ2V0IGxvY2snKTsgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXNlcnMgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFVTRVJTX0xJU1RfRklMRSk7XG4gICAgY29uc3QgdXNlciA9IGdldFVzZXJCeU5hbWUodXNlcnMsIHVzZXJuYW1lKTtcbiAgICBpZiAoIXVzZXIpIHsgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYENvdWxkIG5vdCBmaW5kIHVzZXIgd2l0aCAke3VzZXJuYW1lfWApOyB9XG5cbiAgICB1c2VyLmFjY2Vzc0xldmVscyA9IGFjY2Vzc0xldmVscztcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLnVwZGF0ZUpzb24oVVNFUlNfTElTVF9GSUxFLCB1c2Vycyk7XG4gIH0gZmluYWxseSB7XG4gICAgcmVsZWFzZUxvY2soYXBwLCBsb2NrKTtcbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIGF1dGhlbnRpY2F0ZSxcbiAgYXV0aGVudGljYXRlVGVtcG9yYXJ5QWNjZXNzLFxufSBmcm9tICcuL2F1dGhlbnRpY2F0ZSc7XG5pbXBvcnQgeyBjcmVhdGVUZW1wb3JhcnlBY2Nlc3MgfSBmcm9tICcuL2NyZWF0ZVRlbXBvcmFyeUFjY2Vzcyc7XG5pbXBvcnQgeyBjcmVhdGVVc2VyIH0gZnJvbSAnLi9jcmVhdGVVc2VyJztcbmltcG9ydCB7IGVuYWJsZVVzZXIsIGRpc2FibGVVc2VyIH0gZnJvbSAnLi9lbmFibGVVc2VyJztcbmltcG9ydCB7IGxvYWRBY2Nlc3NMZXZlbHMgfSBmcm9tICcuL2xvYWRBY2Nlc3NMZXZlbHMnO1xuaW1wb3J0IHsgZ2V0TmV3QWNjZXNzTGV2ZWwgfSBmcm9tICcuL2dldE5ld0FjY2Vzc0xldmVsJztcbmltcG9ydCB7IGdldE5ld1VzZXIsIGdldE5ld1VzZXJBdXRoIH0gZnJvbSAnLi9nZXROZXdVc2VyJztcbmltcG9ydCB7IGdldFVzZXJzIH0gZnJvbSAnLi9nZXRVc2Vycyc7XG5pbXBvcnQgeyBpc0F1dGhvcml6ZWQgfSBmcm9tICcuL2lzQXV0aG9yaXplZCc7XG5pbXBvcnQgeyBzYXZlQWNjZXNzTGV2ZWxzIH0gZnJvbSAnLi9zYXZlQWNjZXNzTGV2ZWxzJztcbmltcG9ydCB7XG4gIGNoYW5nZU15UGFzc3dvcmQsXG4gIHNjb3JlUGFzc3dvcmQsIHNldFBhc3N3b3JkRnJvbVRlbXBvcmFyeUNvZGUsXG4gIGlzVmFsaWRQYXNzd29yZCxcbn0gZnJvbSAnLi9zZXRQYXNzd29yZCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVVzZXIgfSBmcm9tICcuL3ZhbGlkYXRlVXNlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZUFjY2Vzc0xldmVscyB9IGZyb20gJy4vdmFsaWRhdGVBY2Nlc3NMZXZlbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVGdWxsUGVybWlzc2lvbnMgfSBmcm9tICcuL2dlbmVyYXRlRnVsbFBlcm1pc3Npb25zJztcbmltcG9ydCB7IHNldFVzZXJBY2Nlc3NMZXZlbHMgfSBmcm9tICcuL3NldFVzZXJBY2Nlc3NMZXZlbHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXV0aEFwaSA9IGFwcCA9PiAoe1xuICBhdXRoZW50aWNhdGU6IGF1dGhlbnRpY2F0ZShhcHApLFxuICBhdXRoZW50aWNhdGVUZW1wb3JhcnlBY2Nlc3M6IGF1dGhlbnRpY2F0ZVRlbXBvcmFyeUFjY2VzcyhhcHApLFxuICBjcmVhdGVUZW1wb3JhcnlBY2Nlc3M6IGNyZWF0ZVRlbXBvcmFyeUFjY2VzcyhhcHApLFxuICBjcmVhdGVVc2VyOiBjcmVhdGVVc2VyKGFwcCksXG4gIGxvYWRBY2Nlc3NMZXZlbHM6IGxvYWRBY2Nlc3NMZXZlbHMoYXBwKSxcbiAgZW5hYmxlVXNlcjogZW5hYmxlVXNlcihhcHApLFxuICBkaXNhYmxlVXNlcjogZGlzYWJsZVVzZXIoYXBwKSxcbiAgZ2V0TmV3QWNjZXNzTGV2ZWw6IGdldE5ld0FjY2Vzc0xldmVsKGFwcCksXG4gIGdldE5ld1VzZXI6IGdldE5ld1VzZXIoYXBwKSxcbiAgZ2V0TmV3VXNlckF1dGg6IGdldE5ld1VzZXJBdXRoKGFwcCksXG4gIGdldFVzZXJzOiBnZXRVc2VycyhhcHApLFxuICBzYXZlQWNjZXNzTGV2ZWxzOiBzYXZlQWNjZXNzTGV2ZWxzKGFwcCksXG4gIGlzQXV0aG9yaXplZDogaXNBdXRob3JpemVkKGFwcCksXG4gIGNoYW5nZU15UGFzc3dvcmQ6IGNoYW5nZU15UGFzc3dvcmQoYXBwKSxcbiAgc2V0UGFzc3dvcmRGcm9tVGVtcG9yYXJ5Q29kZTogc2V0UGFzc3dvcmRGcm9tVGVtcG9yYXJ5Q29kZShhcHApLFxuICBzY29yZVBhc3N3b3JkLFxuICBpc1ZhbGlkUGFzc3dvcmQ6IGlzVmFsaWRQYXNzd29yZChhcHApLFxuICB2YWxpZGF0ZVVzZXI6IHZhbGlkYXRlVXNlcihhcHApLFxuICB2YWxpZGF0ZUFjY2Vzc0xldmVsczogdmFsaWRhdGVBY2Nlc3NMZXZlbHMoYXBwKSxcbiAgZ2VuZXJhdGVGdWxsUGVybWlzc2lvbnM6ICgpID0+IGdlbmVyYXRlRnVsbFBlcm1pc3Npb25zKGFwcCksXG4gIHNldFVzZXJBY2Nlc3NMZXZlbHM6IHNldFVzZXJBY2Nlc3NMZXZlbHMoYXBwKSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRBdXRoQXBpO1xuIiwiaW1wb3J0IHsgcGVybWlzc2lvbiB9IGZyb20gJy4uL2F1dGhBcGkvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgYXBpV3JhcHBlclN5bmMgfSBmcm9tICcuLi9jb21tb24vYXBpV3JhcHBlcic7XG5pbXBvcnQgeyBldmVudHMgfSBmcm9tICcuLi9jb21tb24vZXZlbnRzJztcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVBY3Rpb24gPSBhcHAgPT4gKGFjdGlvbk5hbWUsIG9wdGlvbnMpID0+IHtcbiAgYXBpV3JhcHBlclN5bmMoXG4gICAgYXBwLFxuICAgIGV2ZW50cy5hY3Rpb25zQXBpLmV4ZWN1dGUsXG4gICAgcGVybWlzc2lvbi5leGVjdXRlQWN0aW9uLmlzQXV0aG9yaXplZChhY3Rpb25OYW1lKSxcbiAgICB7IGFjdGlvbk5hbWUsIG9wdGlvbnMgfSxcbiAgICBhcHAuYWN0aW9uc1thY3Rpb25OYW1lXSwgb3B0aW9ucyxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfZXhlY3V0ZUFjdGlvbiA9IChiZWhhdmlvdXJTb3VyY2VzLCBhY3Rpb24sIG9wdGlvbnMpID0+IGJlaGF2aW91clNvdXJjZXNbYWN0aW9uLmJlaGF2aW91clNvdXJjZV1bYWN0aW9uLmJlaGF2aW91ck5hbWVdKG9wdGlvbnMpO1xuIiwiaW1wb3J0IHsgZXhlY3V0ZUFjdGlvbiB9IGZyb20gJy4vZXhlY3V0ZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRBY3Rpb25zQXBpID0gYXBwID0+ICh7XG4gIGV4ZWN1dGU6IGV4ZWN1dGVBY3Rpb24oYXBwKSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRBY3Rpb25zQXBpO1xuIiwiaW1wb3J0IHsgaGFzIH0gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgcHVibGlzaCA9IGhhbmRsZXJzID0+IGFzeW5jIChldmVudE5hbWUsIGNvbnRleHQgPSB7fSkgPT4ge1xuICBpZiAoIWhhcyhoYW5kbGVycywgZXZlbnROYW1lKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgaGFuZGxlciBvZiBoYW5kbGVyc1tldmVudE5hbWVdKSB7XG4gICAgYXdhaXQgaGFuZGxlcihldmVudE5hbWUsIGNvbnRleHQpO1xuICB9XG59O1xuXG5jb25zdCBzdWJzY3JpYmUgPSBoYW5kbGVycyA9PiAoZXZlbnROYW1lLCBoYW5kbGVyKSA9PiB7XG4gIGlmICghaGFzKGhhbmRsZXJzLCBldmVudE5hbWUpKSB7XG4gICAgaGFuZGxlcnNbZXZlbnROYW1lXSA9IFtdO1xuICB9XG4gIGhhbmRsZXJzW2V2ZW50TmFtZV0ucHVzaChoYW5kbGVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFdmVudEFnZ3JlZ2F0b3IgPSAoKSA9PiB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge307XG4gIGNvbnN0IGV2ZW50QWdncmVnYXRvciA9ICh7XG4gICAgcHVibGlzaDogcHVibGlzaChoYW5kbGVycyksXG4gICAgc3Vic2NyaWJlOiBzdWJzY3JpYmUoaGFuZGxlcnMpLFxuICB9KTtcbiAgcmV0dXJuIGV2ZW50QWdncmVnYXRvcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUV2ZW50QWdncmVnYXRvcjtcbiIsImltcG9ydCB7IHJldHJ5IH0gZnJvbSAnLi4vY29tbW9uL2luZGV4JztcbmltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9jb21tb24vZXJyb3JzJztcblxuY29uc3QgY3JlYXRlSnNvbiA9IG9yaWdpbmFsQ3JlYXRlRmlsZSA9PiBhc3luYyAoa2V5LCBvYmosIHJldHJpZXMgPSA1LCBkZWxheSA9IDUwMCkgPT4gYXdhaXQgcmV0cnkob3JpZ2luYWxDcmVhdGVGaWxlLCByZXRyaWVzLCBkZWxheSwga2V5LCBKU09OLnN0cmluZ2lmeShvYmopKTtcblxuY29uc3QgY3JlYXRlTmV3RmlsZSA9IG9yaWdpbmFsQ3JlYXRlRmlsZSA9PiBhc3luYyAocGF0aCwgY29udGVudCwgcmV0cmllcyA9IDUsIGRlbGF5ID0gNTAwKSA9PiBhd2FpdCByZXRyeShvcmlnaW5hbENyZWF0ZUZpbGUsIHJldHJpZXMsIGRlbGF5LCBwYXRoLCBjb250ZW50KTtcblxuY29uc3QgbG9hZEpzb24gPSBkYXRhc3RvcmUgPT4gYXN5bmMgKGtleSwgcmV0cmllcyA9IDUsIGRlbGF5ID0gNTAwKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJldHJ5KEpTT04ucGFyc2UsIHJldHJpZXMsIGRlbGF5LCBhd2FpdCBkYXRhc3RvcmUubG9hZEZpbGUoa2V5KSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGVyci5tZXNzYWdlKTtcbiAgfVxufVxuXG5jb25zdCB1cGRhdGVKc29uID0gZGF0YXN0b3JlID0+IGFzeW5jIChrZXksIG9iaiwgcmV0cmllcyA9IDUsIGRlbGF5ID0gNTAwKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJldHJ5KGRhdGFzdG9yZS51cGRhdGVGaWxlLCByZXRyaWVzLCBkZWxheSwga2V5LCBKU09OLnN0cmluZ2lmeShvYmopKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cERhdGFzdG9yZSA9IChkYXRhc3RvcmUpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxDcmVhdGVGaWxlID0gZGF0YXN0b3JlLmNyZWF0ZUZpbGU7XG4gIGRhdGFzdG9yZS5sb2FkSnNvbiA9IGxvYWRKc29uKGRhdGFzdG9yZSk7XG4gIGRhdGFzdG9yZS5jcmVhdGVKc29uID0gY3JlYXRlSnNvbihvcmlnaW5hbENyZWF0ZUZpbGUpO1xuICBkYXRhc3RvcmUudXBkYXRlSnNvbiA9IHVwZGF0ZUpzb24oZGF0YXN0b3JlKTtcbiAgZGF0YXN0b3JlLmNyZWF0ZUZpbGUgPSBjcmVhdGVOZXdGaWxlKG9yaWdpbmFsQ3JlYXRlRmlsZSk7XG4gIGlmIChkYXRhc3RvcmUuY3JlYXRlRW1wdHlEYikgeyBkZWxldGUgZGF0YXN0b3JlLmNyZWF0ZUVtcHR5RGI7IH1cbiAgcmV0dXJuIGRhdGFzdG9yZTtcbn07XG5cbmV4cG9ydCB7IGNyZWF0ZUV2ZW50QWdncmVnYXRvciB9IGZyb20gJy4vZXZlbnRBZ2dyZWdhdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgc2V0dXBEYXRhc3RvcmU7XG4iLCJpbXBvcnQgeyBcclxuICBjb21waWxlRXhwcmVzc2lvbiBhcyBjRXhwLCBcclxuICBjb21waWxlQ29kZSBhcyBjQ29kZSBcclxufSBmcm9tICdAbngtanMvY29tcGlsZXItdXRpbCc7XHJcblxyXG5leHBvcnQgY29uc3QgY29tcGlsZUNvZGUgPSBjb2RlID0+IHtcclxuICBsZXQgZnVuYzsgIFxyXG4gICAgXHJcbiAgdHJ5IHtcclxuICAgIGZ1bmMgPSBjQ29kZShjb2RlKTtcclxuICB9IGNhdGNoKGUpIHtcclxuICAgIGUubWVzc2FnZSA9IGBFcnJvciBjb21waWxpbmcgY29kZSA6ICR7Y29kZX0gOiAke2UubWVzc2FnZX1gO1xyXG4gICAgdGhyb3cgZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmdW5jO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29tcGlsZUV4cHJlc3Npb24gPSBjb2RlID0+IHtcclxuICBsZXQgZnVuYzsgIFxyXG4gICAgICBcclxuICB0cnkge1xyXG4gICAgZnVuYyA9IGNFeHAoY29kZSk7XHJcbiAgfSBjYXRjaChlKSB7XHJcbiAgICBlLm1lc3NhZ2UgPSBgRXJyb3IgY29tcGlsaW5nIGV4cHJlc3Npb24gOiAke2NvZGV9IDogJHtlLm1lc3NhZ2V9YDtcclxuICAgIHRocm93IGU7XHJcbiAgfVxyXG4gIFxyXG4gIHJldHVybiBmdW5jO1xyXG59XHJcbiIsImltcG9ydCB7XG4gIGlzRnVuY3Rpb24sIGZpbHRlciwgbWFwLFxuICB1bmlxQnksIGtleXMsIGRpZmZlcmVuY2UsXG4gIGpvaW4sIHJlZHVjZSwgZmluZCxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb21waWxlQ29kZSB9IGZyb20gJy4uL2NvbW1vbi9jb21waWxlQ29kZSc7XG5pbXBvcnQgeyAkIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IF9leGVjdXRlQWN0aW9uIH0gZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCB7IEJhZFJlcXVlc3RFcnJvciwgTm90Rm91bmRFcnJvciB9IGZyb20gJy4uL2NvbW1vbi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGlzZUFjdGlvbnMgPSAoc3Vic2NyaWJlLCBiZWhhdmlvdXJTb3VyY2VzLCBhY3Rpb25zLCB0cmlnZ2VycywgYXBpcykgPT4ge1xuICB2YWxpZGF0ZVNvdXJjZXMoYmVoYXZpb3VyU291cmNlcywgYWN0aW9ucyk7XG4gIHN1YnNjcmliZVRyaWdnZXJzKHN1YnNjcmliZSwgYmVoYXZpb3VyU291cmNlcywgYWN0aW9ucywgdHJpZ2dlcnMsIGFwaXMpO1xuICByZXR1cm4gY3JlYXRlQWN0aW9uc0NvbGxlY3Rpb24oYmVoYXZpb3VyU291cmNlcywgYWN0aW9ucyk7XG59O1xuXG5jb25zdCBjcmVhdGVBY3Rpb25zQ29sbGVjdGlvbiA9IChiZWhhdmlvdXJTb3VyY2VzLCBhY3Rpb25zKSA9PiAkKGFjdGlvbnMsIFtcbiAgcmVkdWNlKChhbGwsIGEpID0+IHtcbiAgICBhbGxbYS5uYW1lXSA9IG9wdHMgPT4gX2V4ZWN1dGVBY3Rpb24oYmVoYXZpb3VyU291cmNlcywgYSwgb3B0cyk7XG4gICAgcmV0dXJuIGFsbDtcbiAgfSwge30pLFxuXSk7XG5cbmNvbnN0IHN1YnNjcmliZVRyaWdnZXJzID0gKHN1YnNjcmliZSwgYmVoYXZpb3VyU291cmNlcywgYWN0aW9ucywgdHJpZ2dlcnMsIGFwaXMpID0+IHtcbiAgY29uc3QgY3JlYXRlT3B0aW9ucyA9IChvcHRpb25zQ3JlYXRvciwgZXZlbnRDb250ZXh0KSA9PiB7XG4gICAgaWYgKCFvcHRpb25zQ3JlYXRvcikgcmV0dXJuIHt9O1xuICAgIGNvbnN0IGNyZWF0ZSA9IGNvbXBpbGVDb2RlKG9wdGlvbnNDcmVhdG9yKTtcbiAgICByZXR1cm4gY3JlYXRlKHsgY29udGV4dDogZXZlbnRDb250ZXh0LCBhcGlzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3VsZFJ1blRyaWdnZXIgPSAodHJpZ2dlciwgZXZlbnRDb250ZXh0KSA9PiB7XG4gICAgaWYgKCF0cmlnZ2VyLmNvbmRpdGlvbikgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgc2hvdWxkUnVuID0gY29tcGlsZUV4cHJlc3Npb24odHJpZ2dlci5jb25kaXRpb24pO1xuICAgIHJldHVybiBzaG91bGRSdW4oeyBjb250ZXh0OiBldmVudENvbnRleHQgfSk7XG4gIH07XG5cbiAgZm9yIChsZXQgdHJpZyBvZiB0cmlnZ2Vycykge1xuICAgIHN1YnNjcmliZSh0cmlnLmV2ZW50TmFtZSwgYXN5bmMgKGV2LCBjdHgpID0+IHtcbiAgICAgIGlmIChzaG91bGRSdW5UcmlnZ2VyKHRyaWcsIGN0eCkpIHtcbiAgICAgICAgYXdhaXQgX2V4ZWN1dGVBY3Rpb24oXG4gICAgICAgICAgYmVoYXZpb3VyU291cmNlcyxcbiAgICAgICAgICBmaW5kKGEgPT4gYS5uYW1lID09PSB0cmlnLmFjdGlvbk5hbWUpKGFjdGlvbnMpLFxuICAgICAgICAgIGNyZWF0ZU9wdGlvbnModHJpZy5vcHRpb25zQ3JlYXRvciwgY3R4KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVTb3VyY2VzID0gKGJlaGF2aW91clNvdXJjZXMsIGFjdGlvbnMpID0+IHtcbiAgY29uc3QgZGVjbGFyZWRTb3VyY2VzID0gJChhY3Rpb25zLCBbXG4gICAgdW5pcUJ5KGEgPT4gYS5iZWhhdmlvdXJTb3VyY2UpLFxuICAgIG1hcChhID0+IGEuYmVoYXZpb3VyU291cmNlKSxcbiAgXSk7XG5cbiAgY29uc3Qgc3VwcGxpZWRTb3VyY2VzID0ga2V5cyhiZWhhdmlvdXJTb3VyY2VzKTtcblxuICBjb25zdCBtaXNzaW5nU291cmNlcyA9IGRpZmZlcmVuY2UoXG4gICAgZGVjbGFyZWRTb3VyY2VzLCBzdXBwbGllZFNvdXJjZXMsXG4gICk7XG5cbiAgaWYgKG1pc3NpbmdTb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKGBEZWNsYXJlZCBiZWhhdmlvdXIgc291cmNlcyBhcmUgbm90IHN1cHBsaWVkOiAke2pvaW4oJywgJywgbWlzc2luZ1NvdXJjZXMpfWApO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ0JlaGF2aW91cnMgPSAkKGFjdGlvbnMsIFtcbiAgICBmaWx0ZXIoYSA9PiAhaXNGdW5jdGlvbihiZWhhdmlvdXJTb3VyY2VzW2EuYmVoYXZpb3VyU291cmNlXVthLmJlaGF2aW91ck5hbWVdKSksXG4gICAgbWFwKGEgPT4gYEFjdGlvbjogJHthLm5hbWV9IDogJHthLmJlaGF2aW91clNvdXJjZX0uJHthLmJlaGF2aW91ck5hbWV9YCksXG4gIF0pO1xuXG4gIGlmIChtaXNzaW5nQmVoYXZpb3Vycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYE1pc3NpbmcgYmVoYXZpb3VyczogY291bGQgbm90IGZpbmQgYmVoYXZpb3VyIGZ1bmN0aW9uczogJHtqb2luKCcsICcsIG1pc3NpbmdCZWhhdmlvdXJzKX1gKTtcbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIG1hcCwgZmlsdGVyLCBncm91cEJ5LCBzcGxpdCxcbiAgc29tZSwgZmluZCxcbn0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7XG4gIExPQ0tfRklMRU5BTUUsIFRSQU5TQUNUSU9OU19GT0xERVIsIGlkU2VwLCBpc1VwZGF0ZSxcbiAgbm9kZUtleUhhc2hGcm9tQnVpbGRGb2xkZXIsIGlzQnVpbGRJbmRleEZvbGRlciwgZ2V0VHJhbnNhY3Rpb25JZCxcbiAgaXNEZWxldGUsIGlzQ3JlYXRlLFxufSBmcm9tICcuL3RyYW5zYWN0aW9uc0NvbW1vbic7XG5pbXBvcnQge1xuICBqb2luS2V5LCAkLCBub25lLCBpc1NvbWV0aGluZyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldExhc3RQYXJ0SW5LZXksIGdldE5vZGVGcm9tTm9kZUtleUhhc2ggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgX2xvYWQgfSBmcm9tICcuLi9yZWNvcmRBcGkvbG9hZCc7XG5cbmV4cG9ydCBjb25zdCByZXRyaWV2ZSA9IGFzeW5jIChhcHApID0+IHtcbiAgY29uc3QgdHJhbnNhY3Rpb25GaWxlcyA9IGF3YWl0IGFwcC5kYXRhc3RvcmUuZ2V0Rm9sZGVyQ29udGVudHMoXG4gICAgVFJBTlNBQ1RJT05TX0ZPTERFUixcbiAgKTtcblxuICBsZXQgdHJhbnNhY3Rpb25zID0gW107XG5cbiAgaWYgKHNvbWUoaXNCdWlsZEluZGV4Rm9sZGVyKSh0cmFuc2FjdGlvbkZpbGVzKSkge1xuICAgIGNvbnN0IGJ1aWxkSW5kZXhGb2xkZXIgPSBmaW5kKGlzQnVpbGRJbmRleEZvbGRlcikodHJhbnNhY3Rpb25GaWxlcyk7XG5cbiAgICB0cmFuc2FjdGlvbnMgPSBhd2FpdCByZXRyaWV2ZUJ1aWxkSW5kZXhUcmFuc2FjdGlvbnMoXG4gICAgICBhcHAsXG4gICAgICBqb2luS2V5KFRSQU5TQUNUSU9OU19GT0xERVIsIGJ1aWxkSW5kZXhGb2xkZXIpLFxuICAgICk7XG4gIH1cblxuICBpZiAodHJhbnNhY3Rpb25zLmxlbmd0aCA+IDApIHJldHVybiB0cmFuc2FjdGlvbnM7XG5cbiAgcmV0dXJuIGF3YWl0IHJldHJpZXZlU3RhbmRhcmRUcmFuc2FjdGlvbnMoXG4gICAgYXBwLCB0cmFuc2FjdGlvbkZpbGVzLFxuICApO1xufTtcblxuY29uc3QgcmV0cmlldmVCdWlsZEluZGV4VHJhbnNhY3Rpb25zID0gYXN5bmMgKGFwcCwgYnVpbGRJbmRleEZvbGRlcikgPT4ge1xuICBjb25zdCBjaGlsZEZvbGRlcnMgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmdldEZvbGRlckNvbnRlbnRzKGJ1aWxkSW5kZXhGb2xkZXIpO1xuICBpZiAoY2hpbGRGb2xkZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIGNsZWFudXBcbiAgICBhd2FpdCBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZvbGRlcihidWlsZEluZGV4Rm9sZGVyKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBnZXRUcmFuc2FjdGlvbkZpbGVzID0gYXN5bmMgKGNoaWxkRm9sZGVySW5kZXggPSAwKSA9PiB7XG4gICAgaWYgKGNoaWxkRm9sZGVySW5kZXggPj0gY2hpbGRGb2xkZXJzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgY2hpbGRGb2xkZXJLZXkgPSBqb2luS2V5KGJ1aWxkSW5kZXhGb2xkZXIsIGNoaWxkRm9sZGVyc1tjaGlsZEZvbGRlckluZGV4XSk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmdldEZvbGRlckNvbnRlbnRzKFxuICAgICAgY2hpbGRGb2xkZXJLZXksXG4gICAgKTtcblxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGF3YWl0IGFwcC5kYXRhc3RvcmUuZGVsZXRlRm9sZGVyKGNoaWxkRm9sZGVyS2V5KTtcbiAgICAgIHJldHVybiBhd2FpdCBnZXRUcmFuc2FjdGlvbkZpbGVzKGNoaWxkRm9sZGVySW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjaGlsZEZvbGRlcktleSwgZmlsZXMgfTtcbiAgfTtcblxuICBjb25zdCB0cmFuc2FjdGlvbkZpbGVzID0gYXdhaXQgZ2V0VHJhbnNhY3Rpb25GaWxlcygpO1xuXG4gIGlmICh0cmFuc2FjdGlvbkZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHRyYW5zYWN0aW9ucyA9ICQodHJhbnNhY3Rpb25GaWxlcy5maWxlcywgW1xuICAgIG1hcChwYXJzZVRyYW5zYWN0aW9uSWQpLFxuICBdKTtcblxuICBmb3IgKGNvbnN0IHQgb2YgdHJhbnNhY3Rpb25zKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25Db250ZW50ID0gYXdhaXQgYXBwLmRhdGFzdG9yZS5sb2FkSnNvbihcbiAgICAgIGpvaW5LZXkoXG4gICAgICAgIHRyYW5zYWN0aW9uRmlsZXMuY2hpbGRGb2xkZXJLZXksXG4gICAgICAgIHQuZnVsbElkLFxuICAgICAgKSxcbiAgICApO1xuICAgIHQucmVjb3JkID0gYXdhaXQgX2xvYWQoYXBwLCB0cmFuc2FjdGlvbkNvbnRlbnQucmVjb3JkS2V5KTtcbiAgfVxuXG4gIHRyYW5zYWN0aW9ucy5pbmRleE5vZGUgPSAkKGJ1aWxkSW5kZXhGb2xkZXIsIFtcbiAgICBnZXRMYXN0UGFydEluS2V5LFxuICAgIG5vZGVLZXlIYXNoRnJvbUJ1aWxkRm9sZGVyLFxuICAgIGdldE5vZGVGcm9tTm9kZUtleUhhc2goYXBwLmhpZXJhcmNoeSksXG4gIF0pO1xuXG4gIHRyYW5zYWN0aW9ucy5mb2xkZXJLZXkgPSB0cmFuc2FjdGlvbkZpbGVzLmNoaWxkRm9sZGVyS2V5O1xuXG4gIHJldHVybiB0cmFuc2FjdGlvbnM7XG59O1xuXG5jb25zdCByZXRyaWV2ZVN0YW5kYXJkVHJhbnNhY3Rpb25zID0gYXN5bmMgKGFwcCwgdHJhbnNhY3Rpb25GaWxlcykgPT4ge1xuICBjb25zdCB0cmFuc2FjdGlvbklkcyA9ICQodHJhbnNhY3Rpb25GaWxlcywgW1xuICAgIGZpbHRlcihmID0+IGYgIT09IExPQ0tfRklMRU5BTUVcbiAgICAgICAgICAgICAgICAgICAgJiYgIWlzQnVpbGRJbmRleEZvbGRlcihmKSksXG4gICAgbWFwKHBhcnNlVHJhbnNhY3Rpb25JZCksXG4gIF0pO1xuXG4gIGNvbnN0IHRyYW5zYWN0aW9uSWRzQnlSZWNvcmQgPSAkKHRyYW5zYWN0aW9uSWRzLCBbXG4gICAgZ3JvdXBCeSgncmVjb3JkSWQnKSxcbiAgXSk7XG5cbiAgY29uc3QgZGVkdXBlZFRyYW5zYWN0aW9ucyA9IFtdO1xuXG4gIGNvbnN0IHZlcmlmeSA9IGFzeW5jICh0KSA9PiB7XG4gICAgaWYgKHQudmVyaWZpZWQgPT09IHRydWUpIHJldHVybiB0O1xuXG4gICAgY29uc3QgaWQgPSBnZXRUcmFuc2FjdGlvbklkKFxuICAgICAgdC5yZWNvcmRJZCxcbiAgICAgIHQudHJhbnNhY3Rpb25UeXBlLFxuICAgICAgdC51bmlxdWVJZCxcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCBhcHAuZGF0YXN0b3JlLmxvYWRKc29uKFxuICAgICAgam9pbktleShUUkFOU0FDVElPTlNfRk9MREVSLCBpZCksXG4gICAgKTtcblxuICAgIGlmIChpc0RlbGV0ZSh0KSkge1xuICAgICAgdC5yZWNvcmQgPSB0cmFuc2FjdGlvbi5yZWNvcmQ7XG4gICAgICB0LnZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIGNvbnN0IHJlYyA9IGF3YWl0IF9sb2FkKFxuICAgICAgYXBwLFxuICAgICAgdHJhbnNhY3Rpb24ucmVjb3JkS2V5LFxuICAgICk7XG4gICAgaWYgKHJlYy50cmFuc2FjdGlvbklkID09PSBpZCkge1xuICAgICAgdC5yZWNvcmQgPSByZWM7XG4gICAgICBpZiAodHJhbnNhY3Rpb24ub2xkUmVjb3JkKSB7IHQub2xkUmVjb3JkID0gdHJhbnNhY3Rpb24ub2xkUmVjb3JkOyB9XG4gICAgICB0LnZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdC52ZXJpZmllZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIGNvbnN0IHBpY2tPbmUgPSBhc3luYyAodHJhbnMsIGZvclR5cGUpID0+IHtcbiAgICBjb25zdCB0cmFuc0ZvclR5cGUgPSBmaWx0ZXIoZm9yVHlwZSkodHJhbnMpO1xuICAgIGlmICh0cmFuc0ZvclR5cGUubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCB0ID0gYXdhaXQgdmVyaWZ5KHRyYW5zRm9yVHlwZVswXSk7XG4gICAgICByZXR1cm4gKHQudmVyaWZpZWQgPT09IHRydWUgPyB0IDogbnVsbCk7XG4gICAgfVxuICAgIGZvciAobGV0IHQgb2YgdHJhbnNGb3JUeXBlKSB7XG4gICAgICB0ID0gYXdhaXQgdmVyaWZ5KHQpO1xuICAgICAgaWYgKHQudmVyaWZpZWQgPT09IHRydWUpIHsgcmV0dXJuIHQ7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHJlY29yZElkIGluIHRyYW5zYWN0aW9uSWRzQnlSZWNvcmQpIHtcbiAgICBjb25zdCB0cmFuc0lkc0ZvclJlY29yZCA9IHRyYW5zYWN0aW9uSWRzQnlSZWNvcmRbcmVjb3JkSWRdO1xuICAgIGlmICh0cmFuc0lkc0ZvclJlY29yZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHQgPSBhd2FpdCB2ZXJpZnkodHJhbnNJZHNGb3JSZWNvcmRbMF0pO1xuICAgICAgaWYgKHQudmVyaWZpZWQpIHsgZGVkdXBlZFRyYW5zYWN0aW9ucy5wdXNoKHQpOyB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHNvbWUoaXNEZWxldGUpKHRyYW5zSWRzRm9yUmVjb3JkKSkge1xuICAgICAgY29uc3QgdCA9IGF3YWl0IHZlcmlmeShmaW5kKGlzRGVsZXRlKSh0cmFuc0lkc0ZvclJlY29yZCkpO1xuICAgICAgaWYgKHQudmVyaWZpZWQpIHsgZGVkdXBlZFRyYW5zYWN0aW9ucy5wdXNoKHQpOyB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHNvbWUoaXNVcGRhdGUpKHRyYW5zSWRzRm9yUmVjb3JkKSkge1xuICAgICAgY29uc3QgdXBkID0gYXdhaXQgcGlja09uZSh0cmFuc0lkc0ZvclJlY29yZCwgaXNVcGRhdGUpO1xuICAgICAgaWYgKGlzU29tZXRoaW5nKHVwZCkgJiYgdXBkLnZlcmlmaWVkKSB7IGRlZHVwZWRUcmFuc2FjdGlvbnMucHVzaCh1cGQpOyB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHNvbWUoaXNDcmVhdGUpKHRyYW5zSWRzRm9yUmVjb3JkKSkge1xuICAgICAgY29uc3QgY3JlID0gYXdhaXQgcGlja09uZSh0cmFuc0lkc0ZvclJlY29yZCwgaXNDcmVhdGUpO1xuICAgICAgaWYgKGlzU29tZXRoaW5nKGNyZSkpIHsgZGVkdXBlZFRyYW5zYWN0aW9ucy5wdXNoKGNyZSk7IH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGR1cGxpY2F0ZXMgPSAkKHRyYW5zYWN0aW9uSWRzLCBbXG4gICAgZmlsdGVyKHQgPT4gbm9uZShkZHQgPT4gZGR0LnVuaXF1ZUlkID09PSB0LnVuaXF1ZUlkKShkZWR1cGVkVHJhbnNhY3Rpb25zKSksXG4gIF0pO1xuXG5cbiAgY29uc3QgZGVsZXRlUHJvbWlzZXMgPSBtYXAodCA9PiBhcHAuZGF0YXN0b3JlLmRlbGV0ZUZpbGUoXG4gICAgam9pbktleShcbiAgICAgIFRSQU5TQUNUSU9OU19GT0xERVIsXG4gICAgICBnZXRUcmFuc2FjdGlvbklkKFxuICAgICAgICB0LnJlY29yZElkLFxuICAgICAgICB0LnRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgdC51bmlxdWVJZCxcbiAgICAgICksXG4gICAgKSxcbiAgKSkoZHVwbGljYXRlcyk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZGVsZXRlUHJvbWlzZXMpO1xuXG4gIHJldHVybiBkZWR1cGVkVHJhbnNhY3Rpb25zO1xufTtcblxuY29uc3QgcGFyc2VUcmFuc2FjdGlvbklkID0gKGlkKSA9PiB7XG4gIGNvbnN0IHNwbGl0SWQgPSBzcGxpdChpZFNlcCkoaWQpO1xuICByZXR1cm4gKHtcbiAgICByZWNvcmRJZDogc3BsaXRJZFswXSxcbiAgICB0cmFuc2FjdGlvblR5cGU6IHNwbGl0SWRbMV0sXG4gICAgdW5pcXVlSWQ6IHNwbGl0SWRbMl0sXG4gICAgZnVsbElkOiBpZCxcbiAgfSk7XG59O1xuIiwiaW1wb3J0IHsgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICByZWR1Y2UsIGZpbmQsIGluY2x1ZGVzLCBmbGF0dGVuLCB1bmlvbixcbiAgZmlsdGVyLCBlYWNoLCBtYXAsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge1xuICBqb2luS2V5LCBzcGxpdEtleSwgaXNOb25FbXB0eVN0cmluZyxcbiAgaXNOb3RoaW5nLCAkLCBpc1NvbWV0aGluZyxcbn0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7XG4gIGdldEZsYXR0ZW5lZEhpZXJhcmNoeSwgZ2V0Tm9kZSwgZ2V0UmVjb3JkTm9kZUlkLFxuICBnZXRFeGFjdE5vZGVGb3JQYXRoLCByZWNvcmROb2RlSWRJc0FsbG93ZWQsXG4gIGlzUmVjb3JkLCBpc0dsb2JhbEluZGV4LFxufSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgaW5kZXhUeXBlcyB9IGZyb20gJy4uL3RlbXBsYXRlQXBpL2luZGV4ZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVsZXZhbnRBbmNlc3RvckluZGV4ZXMgPSAoYXBwSGllcmFyY2h5LCByZWNvcmQpID0+IHtcbiAgY29uc3Qga2V5ID0gcmVjb3JkLmtleTtcbiAgY29uc3Qga2V5UGFydHMgPSBzcGxpdEtleShrZXkpO1xuICBjb25zdCBub2RlSWQgPSBnZXRSZWNvcmROb2RlSWQoa2V5KTtcblxuICBjb25zdCBmbGF0SGllcmFyY2h5ID0gb3JkZXJCeShnZXRGbGF0dGVuZWRIaWVyYXJjaHkoYXBwSGllcmFyY2h5KSxcbiAgICBbbm9kZSA9PiBub2RlLnBhdGhSZWd4KCkubGVuZ3RoXSxcbiAgICBbJ2Rlc2MnXSk7XG5cbiAgY29uc3QgbWFrZWluZGV4Tm9kZUFuZEtleV9Gb3JBbmNlc3RvckluZGV4ID0gKGluZGV4Tm9kZSwgaW5kZXhLZXkpID0+IG1ha2VJbmRleE5vZGVBbmRLZXkoaW5kZXhOb2RlLCBqb2luS2V5KGluZGV4S2V5LCBpbmRleE5vZGUubmFtZSkpO1xuXG4gIGNvbnN0IHRyYXZlcnNlQW5jZXN0b3JJbmRleGVzSW5QYXRoID0gKCkgPT4gcmVkdWNlKChhY2MsIHBhcnQpID0+IHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhLZXkgPSBqb2luS2V5KGFjYy5sYXN0SW5kZXhLZXksIHBhcnQpO1xuICAgIGFjYy5sYXN0SW5kZXhLZXkgPSBjdXJyZW50SW5kZXhLZXk7XG4gICAgY29uc3QgdGVzdFBhdGhSZWd4ID0gcCA9PiBuZXcgUmVnRXhwKGAke3AucGF0aFJlZ3goKX0kYCkudGVzdChjdXJyZW50SW5kZXhLZXkpO1xuICAgIGNvbnN0IG5vZGVNYXRjaCA9IGZpbmQodGVzdFBhdGhSZWd4KShmbGF0SGllcmFyY2h5KTtcblxuICAgIGlmIChpc05vdGhpbmcobm9kZU1hdGNoKSkgeyByZXR1cm4gYWNjOyB9XG5cbiAgICBpZiAoIWlzUmVjb3JkKG5vZGVNYXRjaClcbiAgICAgICAgICAgICAgICB8fCBub2RlTWF0Y2guaW5kZXhlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuIGFjYzsgfVxuXG4gICAgY29uc3QgaW5kZXhlcyA9ICQobm9kZU1hdGNoLmluZGV4ZXMsIFtcbiAgICAgIGZpbHRlcihpID0+IGkuaW5kZXhUeXBlID09PSBpbmRleFR5cGVzLmFuY2VzdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoaS5hbGxvd2VkUmVjb3JkTm9kZUlkcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpbmNsdWRlcyhub2RlSWQpKGkuYWxsb3dlZFJlY29yZE5vZGVJZHMpKSksXG4gICAgXSk7XG5cbiAgICBlYWNoKHYgPT4gYWNjLm5vZGVzQW5kS2V5cy5wdXNoKFxuICAgICAgbWFrZWluZGV4Tm9kZUFuZEtleV9Gb3JBbmNlc3RvckluZGV4KHYsIGN1cnJlbnRJbmRleEtleSksXG4gICAgKSkoaW5kZXhlcyk7XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7IGxhc3RJbmRleEtleTogJycsIG5vZGVzQW5kS2V5czogW10gfSkoa2V5UGFydHMpLm5vZGVzQW5kS2V5cztcblxuICBjb25zdCByb290SW5kZXhlcyA9ICQoZmxhdEhpZXJhcmNoeSwgW1xuICAgIGZpbHRlcihuID0+IGlzR2xvYmFsSW5kZXgobikgJiYgcmVjb3JkTm9kZUlkSXNBbGxvd2VkKG4pKG5vZGVJZCkpLFxuICAgIG1hcChpID0+IG1ha2VJbmRleE5vZGVBbmRLZXkoaSwgaS5ub2RlS2V5KCkpKSxcbiAgXSk7XG5cbiAgcmV0dXJuIHVuaW9uKHRyYXZlcnNlQW5jZXN0b3JJbmRleGVzSW5QYXRoKCkpKHJvb3RJbmRleGVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWxldmFudFJldmVyc2VSZWZlcmVuY2VJbmRleGVzID0gKGFwcEhpZXJhcmNoeSwgcmVjb3JkKSA9PiAkKHJlY29yZC5rZXksIFtcbiAgZ2V0RXhhY3ROb2RlRm9yUGF0aChhcHBIaWVyYXJjaHkpLFxuICBuID0+IG4uZmllbGRzLFxuICBmaWx0ZXIoZiA9PiBmLnR5cGUgPT09ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICAgICAgICAgICYmIGlzU29tZXRoaW5nKHJlY29yZFtmLm5hbWVdKVxuICAgICAgICAgICAgICAgICAgICAmJiBpc05vbkVtcHR5U3RyaW5nKHJlY29yZFtmLm5hbWVdLmtleSkpLFxuICBtYXAoZiA9PiAkKGYudHlwZU9wdGlvbnMucmV2ZXJzZUluZGV4Tm9kZUtleXMsIFtcbiAgICBtYXAobiA9PiAoe1xuICAgICAgcmVjb3JkTm9kZTogZ2V0Tm9kZShhcHBIaWVyYXJjaHksIG4pLFxuICAgICAgZmllbGQ6IGYsXG4gICAgfSkpLFxuICBdKSksXG4gIGZsYXR0ZW4sXG4gIG1hcChuID0+IG1ha2VJbmRleE5vZGVBbmRLZXkoXG4gICAgbi5yZWNvcmROb2RlLFxuICAgIGpvaW5LZXkocmVjb3JkW24uZmllbGQubmFtZV0ua2V5LCBuLnJlY29yZE5vZGUubmFtZSksXG4gICkpLFxuXSk7XG5cbmNvbnN0IG1ha2VJbmRleE5vZGVBbmRLZXkgPSAoaW5kZXhOb2RlLCBpbmRleEtleSkgPT4gKHsgaW5kZXhOb2RlLCBpbmRleEtleSB9KTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0UmVsZXZhbnRBbmNlc3RvckluZGV4ZXM7XG4iLCIgIC8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZGV4NGVyL2pzLXByb21pc2Utd3JpdGFibGVcclxuICAvLyBUaGFuayB5b3UgOikgXHJcbiAgZXhwb3J0IGNvbnN0IHByb21pc2VXcml0ZWFibGVTdHJlYW0gPSBzdHJlYW0gPT4ge1xyXG4gIFxyXG4gICAgbGV0IF9lcnJvcmVkO1xyXG4gIFxyXG4gICAgY29uc3QgX2Vycm9ySGFuZGxlciA9IGVyciA9PiB7XHJcbiAgICAgICAgX2Vycm9yZWQgPSBlcnI7XHJcbiAgICB9O1xyXG5cclxuICAgIHN0cmVhbS5vbihcImVycm9yXCIsIF9lcnJvckhhbmRsZXIpOyAgICBcclxuICBcclxuICAgIGNvbnN0IHdyaXRlID0gY2h1bmsgPT4geyAgXHJcbiAgICAgIGxldCByZWplY3RlZCA9IGZhbHNlO1xyXG4gIFxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGlmIChfZXJyb3JlZCkge1xyXG4gICAgICAgICAgY29uc3QgZXJyID0gX2Vycm9yZWQ7XHJcbiAgICAgICAgICBfZXJyb3JlZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgaWYgKCFzdHJlYW0ud3JpdGFibGUgfHwgc3RyZWFtLmNsb3NlZCB8fCBzdHJlYW0uZGVzdHJveWVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihcIndyaXRlIGFmdGVyIGVuZFwiKSk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNvbnN0IHdyaXRlRXJyb3JIYW5kbGVyID0gZXJyID0+IHtcclxuICAgICAgICAgIF9lcnJvcmVkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgcmVqZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIHN0cmVhbS5vbmNlKFwiZXJyb3JcIiwgd3JpdGVFcnJvckhhbmRsZXIpO1xyXG4gIFxyXG4gICAgICAgIGNvbnN0IGNhbldyaXRlID0gc3RyZWFtLndyaXRlKGNodW5rKTtcclxuICBcclxuICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLCB3cml0ZUVycm9ySGFuZGxlcik7XHJcbiAgXHJcbiAgICAgICAgaWYgKGNhbldyaXRlKSB7XHJcbiAgICAgICAgICBpZiAoIXJlamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoY2h1bmsubGVuZ3RoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gZXJyID0+IHtcclxuICAgICAgICAgICAgX2Vycm9yZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVycygpO1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGNvbnN0IGRyYWluSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoY2h1bmsubGVuZ3RoKTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGNvbnN0IGNsb3NlSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoY2h1bmsubGVuZ3RoKTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGNvbnN0IGZpbmlzaEhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVycygpO1xyXG4gICAgICAgICAgICByZXNvbHZlKGNodW5rLmxlbmd0aCk7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBjb25zdCByZW1vdmVMaXN0ZW5lcnMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsIGNsb3NlSGFuZGxlcik7XHJcbiAgICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImRyYWluXCIsIGRyYWluSGFuZGxlcik7XHJcbiAgICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsIGVycm9ySGFuZGxlcik7XHJcbiAgICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLCBmaW5pc2hIYW5kbGVyKTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIHN0cmVhbS5vbihcImNsb3NlXCIsIGNsb3NlSGFuZGxlcik7XHJcbiAgICAgICAgICBzdHJlYW0ub24oXCJkcmFpblwiLCBkcmFpbkhhbmRsZXIpO1xyXG4gICAgICAgICAgc3RyZWFtLm9uKFwiZXJyb3JcIiwgZXJyb3JIYW5kbGVyKTtcclxuICAgICAgICAgIHN0cmVhbS5vbihcImZpbmlzaFwiLCBmaW5pc2hIYW5kbGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBlbmQgPSAoKSA9PiB7XHJcbiAgXHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgaWYgKF9lcnJvcmVkKSB7XHJcbiAgICAgICAgICBjb25zdCBlcnIgPSBfZXJyb3JlZDtcclxuICAgICAgICAgIF9lcnJvcmVkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBpZiAoIXN0cmVhbS53cml0YWJsZSB8fCBzdHJlYW0uY2xvc2VkIHx8IHN0cmVhbS5kZXN0cm95ZWQpIHtcclxuICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNvbnN0IGZpbmlzaEhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgX2Vycm9yZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjb25zdCByZW1vdmVMaXN0ZW5lcnMgPSAoKSA9PiB7XHJcbiAgICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLCBlcnJvckhhbmRsZXIpO1xyXG4gICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsIGZpbmlzaEhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBzdHJlYW0ub24oXCJmaW5pc2hcIiwgZmluaXNoSGFuZGxlcik7XHJcbiAgICAgICAgc3RyZWFtLm9uKFwiZXJyb3JcIiwgZXJyb3JIYW5kbGVyKTtcclxuICBcclxuICAgICAgICBzdHJlYW0uZW5kKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt3cml0ZSwgZW5kfTtcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGRlZmF1bHQgcHJvbWlzZVdyaXRlYWJsZVN0cmVhbVxyXG4gICIsImltcG9ydCB7IGVuc3VyZVNoYXJkTmFtZUlzSW5TaGFyZE1hcCB9IGZyb20gJy4vc2hhcmRpbmcnO1xuaW1wb3J0IHsgZ2V0SW5kZXhXcml0ZXIgfSBmcm9tICcuL3NlcmlhbGl6ZXInO1xuaW1wb3J0IHsgaXNTaGFyZGVkSW5kZXggfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHtwcm9taXNlV3JpdGVhYmxlU3RyZWFtfSBmcm9tIFwiLi9wcm9taXNlV3JpdGFibGVTdHJlYW1cIjtcbmltcG9ydCB7cHJvbWlzZVJlYWRhYmxlU3RyZWFtfSBmcm9tIFwiLi9wcm9taXNlUmVhZGFibGVTdHJlYW1cIjtcblxuZXhwb3J0IGNvbnN0IGFwcGx5VG9TaGFyZCA9IGFzeW5jIChoaWVyYXJjaHksIHN0b3JlLCBpbmRleEtleSxcbiAgaW5kZXhOb2RlLCBpbmRleFNoYXJkS2V5LCByZWNvcmRzVG9Xcml0ZSwga2V5c1RvUmVtb3ZlKSA9PiB7XG4gIGNvbnN0IGNyZWF0ZUlmTm90RXhpc3RzID0gcmVjb3Jkc1RvV3JpdGUubGVuZ3RoID4gMDtcbiAgY29uc3Qgd3JpdGVyID0gYXdhaXQgZ2V0V3JpdGVyKGhpZXJhcmNoeSwgc3RvcmUsIGluZGV4S2V5LCBpbmRleFNoYXJkS2V5LCBpbmRleE5vZGUsIGNyZWF0ZUlmTm90RXhpc3RzKTtcbiAgaWYgKHdyaXRlciA9PT0gU0hBUkRfREVMRVRFRCkgcmV0dXJuO1xuXG4gIGF3YWl0IHdyaXRlci51cGRhdGVJbmRleChyZWNvcmRzVG9Xcml0ZSwga2V5c1RvUmVtb3ZlKTtcbiAgYXdhaXQgc3dhcFRlbXBGaWxlSW4oc3RvcmUsIGluZGV4U2hhcmRLZXkpO1xufTtcblxuY29uc3QgU0hBUkRfREVMRVRFRCA9ICdTSEFSRF9ERUxFVEVEJztcbmNvbnN0IGdldFdyaXRlciA9IGFzeW5jIChoaWVyYXJjaHksIHN0b3JlLCBpbmRleEtleSwgaW5kZXhlZERhdGFLZXksIGluZGV4Tm9kZSwgY3JlYXRlSWZOb3RFeGlzdHMpID0+IHtcbiAgbGV0IHJlYWRhYmxlU3RyZWFtID0gbnVsbDtcblxuICBpZiAoaXNTaGFyZGVkSW5kZXgoaW5kZXhOb2RlKSkge1xuICAgIGF3YWl0IGVuc3VyZVNoYXJkTmFtZUlzSW5TaGFyZE1hcChzdG9yZSwgaW5kZXhLZXksIGluZGV4ZWREYXRhS2V5KTtcbiAgICBpZighYXdhaXQgc3RvcmUuZXhpc3RzKGluZGV4ZWREYXRhS2V5KSkge1xuICAgICAgYXdhaXQgc3RvcmUuY3JlYXRlRmlsZShpbmRleGVkRGF0YUtleSwgXCJcIik7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcblxuICAgIHJlYWRhYmxlU3RyZWFtID0gcHJvbWlzZVJlYWRhYmxlU3RyZWFtKFxuICAgICAgICBhd2FpdCBzdG9yZS5yZWFkYWJsZUZpbGVTdHJlYW0oaW5kZXhlZERhdGFLZXkpXG4gICAgKTtcblxuICB9IGNhdGNoIChlKSB7XG5cbiAgICBpZiAoYXdhaXQgc3RvcmUuZXhpc3RzKGluZGV4ZWREYXRhS2V5KSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNyZWF0ZUlmTm90RXhpc3RzKSB7IFxuICAgICAgICBhd2FpdCBzdG9yZS5jcmVhdGVGaWxlKGluZGV4ZWREYXRhS2V5LCAnJyk7IFxuICAgICAgfSBlbHNlIHsgXG4gICAgICAgIHJldHVybiBTSEFSRF9ERUxFVEVEOyBcbiAgICAgIH1cblxuICAgICAgcmVhZGFibGVTdHJlYW0gPSBwcm9taXNlUmVhZGFibGVTdHJlYW0oXG4gICAgICAgICAgYXdhaXQgc3RvcmUucmVhZGFibGVGaWxlU3RyZWFtKGluZGV4ZWREYXRhS2V5KVxuICAgICAgKTtcblxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHdyaXRhYmxlU3RyZWFtID0gcHJvbWlzZVdyaXRlYWJsZVN0cmVhbShcbiAgICAgIGF3YWl0IHN0b3JlLndyaXRhYmxlRmlsZVN0cmVhbShpbmRleGVkRGF0YUtleSArIFwiLnRlbXBcIilcbiAgKTtcblxuICByZXR1cm4gZ2V0SW5kZXhXcml0ZXIoXG4gICAgaGllcmFyY2h5LCBpbmRleE5vZGUsXG4gICAgICAgIHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbVxuICApO1xufTtcblxuY29uc3Qgc3dhcFRlbXBGaWxlSW4gPSBhc3luYyAoc3RvcmUsIGluZGV4ZWREYXRhS2V5LCBpc1JldHJ5ID0gZmFsc2UpID0+IHtcbiAgY29uc3QgdGVtcEZpbGUgPSBgJHtpbmRleGVkRGF0YUtleX0udGVtcGA7XG4gIHRyeSB7XG4gICAgYXdhaXQgc3RvcmUuZGVsZXRlRmlsZShpbmRleGVkRGF0YUtleSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBpZ25vcmUgZmFpbHVyZSwgaW5jYXNlIGl0IGhhcyBub3QgYmVlbiBjcmVhdGVkIHlldFxuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgc3RvcmUucmVuYW1lRmlsZSh0ZW1wRmlsZSwgaW5kZXhlZERhdGFLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gcmV0cnlpbmcgaW4gY2FzZSBkZWxldGUgZmFpbHVyZSB3YXMgZm9yIHNvbWUgb3RoZXIgcmVhc29uXG4gICAgaWYgKCFpc1JldHJ5KSB7XG4gICAgICBhd2FpdCBzd2FwVGVtcEZpbGVJbihzdG9yZSwgaW5kZXhlZERhdGFLZXksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gc3dhcCBpbiBpbmRleCBmaWxlZDogXCIgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufTtcbiIsImltcG9ydCB7XG4gIGZpbHRlciwgbWFwLCBpc1VuZGVmaW5lZCwgaW5jbHVkZXMsXG4gIGZsYXR0ZW4sIGludGVyc2VjdGlvbkJ5LFxuICBpc0VxdWFsLCBwdWxsLCBrZXlzLFxuICBkaWZmZXJlbmNlQnksIGRpZmZlcmVuY2UsXG59IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyB1bmlvbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBnZXRSZWxldmFudEFuY2VzdG9ySW5kZXhlcyxcbiAgZ2V0UmVsZXZhbnRSZXZlcnNlUmVmZXJlbmNlSW5kZXhlcyxcbn0gZnJvbSAnLi4vaW5kZXhpbmcvcmVsZXZhbnQnO1xuaW1wb3J0IHsgZXZhbHVhdGUgfSBmcm9tICcuLi9pbmRleGluZy9ldmFsdWF0ZSc7XG5pbXBvcnQge1xuICAkLCBpc1NvbWV0aGluZyxcbiAgaXNOb25FbXB0eUFycmF5LCBqb2luS2V5LFxuICBpc05vbkVtcHR5U3RyaW5nLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0SW5kZXhlZERhdGFLZXkgfSBmcm9tICcuLi9pbmRleGluZy9zaGFyZGluZyc7XG5pbXBvcnQge1xuICBpc1VwZGF0ZSwgaXNDcmVhdGUsXG4gIGlzRGVsZXRlLCBpc0J1aWxkSW5kZXgsXG59IGZyb20gJy4vdHJhbnNhY3Rpb25zQ29tbW9uJztcbmltcG9ydCB7IGFwcGx5VG9TaGFyZCB9IGZyb20gJy4uL2luZGV4aW5nL2FwcGx5JztcbmltcG9ydCB7XG4gIGdldEFjdHVhbEtleU9mUGFyZW50LFxuICBpc0dsb2JhbEluZGV4LCBmaWVsZFJldmVyc2VzUmVmZXJlbmNlVG9JbmRleCwgaXNSZWZlcmVuY2VJbmRleCxcbiAgZ2V0RXhhY3ROb2RlRm9yUGF0aCxcbn0gZnJvbSAnLi4vdGVtcGxhdGVBcGkvaGllcmFyY2h5JztcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVUcmFuc2FjdGlvbnMgPSBhcHAgPT4gYXN5bmMgKHRyYW5zYWN0aW9ucykgPT4ge1xuICBjb25zdCByZWNvcmRzQnlTaGFyZCA9IG1hcHBlZFJlY29yZHNCeUluZGV4U2hhcmQoYXBwLmhpZXJhcmNoeSwgdHJhbnNhY3Rpb25zKTtcblxuICBmb3IgKGNvbnN0IHNoYXJkIG9mIGtleXMocmVjb3Jkc0J5U2hhcmQpKSB7XG4gICAgYXdhaXQgYXBwbHlUb1NoYXJkKFxuICAgICAgYXBwLmhpZXJhcmNoeSwgYXBwLmRhdGFzdG9yZSxcbiAgICAgIHJlY29yZHNCeVNoYXJkW3NoYXJkXS5pbmRleEtleSxcbiAgICAgIHJlY29yZHNCeVNoYXJkW3NoYXJkXS5pbmRleE5vZGUsXG4gICAgICBzaGFyZCxcbiAgICAgIHJlY29yZHNCeVNoYXJkW3NoYXJkXS53cml0ZXMsXG4gICAgICByZWNvcmRzQnlTaGFyZFtzaGFyZF0ucmVtb3ZlcyxcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCBtYXBwZWRSZWNvcmRzQnlJbmRleFNoYXJkID0gKGhpZXJhcmNoeSwgdHJhbnNhY3Rpb25zKSA9PiB7XG4gIGNvbnN0IHVwZGF0ZXMgPSBnZXRVcGRhdGVUcmFuc2FjdGlvbnNCeVNoYXJkKFxuICAgIGhpZXJhcmNoeSwgdHJhbnNhY3Rpb25zLFxuICApO1xuXG4gIGNvbnN0IGNyZWF0ZWQgPSBnZXRDcmVhdGVUcmFuc2FjdGlvbnNCeVNoYXJkKFxuICAgIGhpZXJhcmNoeSwgdHJhbnNhY3Rpb25zLFxuICApO1xuICBjb25zdCBkZWxldGVzID0gZ2V0RGVsZXRlVHJhbnNhY3Rpb25zQnlTaGFyZChcbiAgICBoaWVyYXJjaHksIHRyYW5zYWN0aW9ucyxcbiAgKTtcblxuICBjb25zdCBpbmRleEJ1aWxkID0gZ2V0QnVpbGRJbmRleFRyYW5zYWN0aW9uc0J5U2hhcmQoXG4gICAgaGllcmFyY2h5LFxuICAgIHRyYW5zYWN0aW9ucyxcbiAgKTtcblxuICBjb25zdCB0b1JlbW92ZSA9IFtcbiAgICAuLi5kZWxldGVzLFxuICAgIC4uLnVwZGF0ZXMudG9SZW1vdmUsXG4gIF07XG5cbiAgY29uc3QgdG9Xcml0ZSA9IFtcbiAgICAuLi5jcmVhdGVkLFxuICAgIC4uLnVwZGF0ZXMudG9Xcml0ZSxcbiAgICAuLi5pbmRleEJ1aWxkLFxuICBdO1xuXG4gIGNvbnN0IHRyYW5zQnlTaGFyZCA9IHt9O1xuXG4gIGNvbnN0IGluaXRpYWxpc2VTaGFyZCA9ICh0KSA9PiB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKHRyYW5zQnlTaGFyZFt0LmluZGV4U2hhcmRLZXldKSkge1xuICAgICAgdHJhbnNCeVNoYXJkW3QuaW5kZXhTaGFyZEtleV0gPSB7XG4gICAgICAgIHdyaXRlczogW10sXG4gICAgICAgIHJlbW92ZXM6IFtdLFxuICAgICAgICBpbmRleEtleTogdC5pbmRleEtleSxcbiAgICAgICAgaW5kZXhOb2RlS2V5OiB0LmluZGV4Tm9kZUtleSxcbiAgICAgICAgaW5kZXhOb2RlOiB0LmluZGV4Tm9kZSxcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIGZvciAoY29uc3QgdHJhbnMgb2YgdG9Xcml0ZSkge1xuICAgIGluaXRpYWxpc2VTaGFyZCh0cmFucyk7XG4gICAgdHJhbnNCeVNoYXJkW3RyYW5zLmluZGV4U2hhcmRLZXldLndyaXRlcy5wdXNoKFxuICAgICAgdHJhbnMubWFwcGVkUmVjb3JkLnJlc3VsdCxcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCB0cmFucyBvZiB0b1JlbW92ZSkge1xuICAgIGluaXRpYWxpc2VTaGFyZCh0cmFucyk7XG4gICAgdHJhbnNCeVNoYXJkW3RyYW5zLmluZGV4U2hhcmRLZXldLnJlbW92ZXMucHVzaChcbiAgICAgIHRyYW5zLm1hcHBlZFJlY29yZC5yZXN1bHQua2V5LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHJhbnNCeVNoYXJkO1xufTtcblxuY29uc3QgZ2V0VXBkYXRlVHJhbnNhY3Rpb25zQnlTaGFyZCA9IChoaWVyYXJjaHksIHRyYW5zYWN0aW9ucykgPT4ge1xuICBjb25zdCB1cGRhdGVUcmFuc2FjdGlvbnMgPSAkKHRyYW5zYWN0aW9ucywgW2ZpbHRlcihpc1VwZGF0ZSldKTtcblxuICBjb25zdCBldmFsdWF0ZUluZGV4ID0gKHJlY29yZCwgaW5kZXhOb2RlQW5kUGF0aCkgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFJlY29yZCA9IGV2YWx1YXRlKHJlY29yZCkoaW5kZXhOb2RlQW5kUGF0aC5pbmRleE5vZGUpO1xuICAgIHJldHVybiAoe1xuICAgICAgbWFwcGVkUmVjb3JkLFxuICAgICAgaW5kZXhOb2RlOiBpbmRleE5vZGVBbmRQYXRoLmluZGV4Tm9kZSxcbiAgICAgIGluZGV4S2V5OiBpbmRleE5vZGVBbmRQYXRoLmluZGV4S2V5LFxuICAgICAgaW5kZXhTaGFyZEtleTogZ2V0SW5kZXhlZERhdGFLZXkoXG4gICAgICAgIGluZGV4Tm9kZUFuZFBhdGguaW5kZXhOb2RlLFxuICAgICAgICBpbmRleE5vZGVBbmRQYXRoLmluZGV4S2V5LFxuICAgICAgICBtYXBwZWRSZWNvcmQucmVzdWx0LFxuICAgICAgKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRJbmRleE5vZGVzVG9BcHBseSA9IGluZGV4RmlsdGVyID0+ICh0LCBpbmRleGVzKSA9PiAkKGluZGV4ZXMsIFtcbiAgICBtYXAobiA9PiAoe1xuICAgICAgb2xkOiBldmFsdWF0ZUluZGV4KHQub2xkUmVjb3JkLCBuKSxcbiAgICAgIG5ldzogZXZhbHVhdGVJbmRleCh0LnJlY29yZCwgbiksXG4gICAgfSkpLFxuICAgIGZpbHRlcihpbmRleEZpbHRlciksXG4gIF0pO1xuXG4gIGNvbnN0IHRvUmVtb3ZlRmlsdGVyID0gKG4sIGlzVW5yZWZlcmVuY2VkKSA9PiBuLm9sZC5tYXBwZWRSZWNvcmQucGFzc2VkRmlsdGVyID09PSB0cnVlXG4gICAgICAgICYmIChuLm5ldy5tYXBwZWRSZWNvcmQucGFzc2VkRmlsdGVyID09PSBmYWxzZVxuICAgICAgICAgICAgfHwgaXNVbnJlZmVyZW5jZWQpO1xuXG4gIGNvbnN0IHRvQWRkRmlsdGVyID0gKG4sIGlzTmV3bHlSZWZlcmVuY2VkKSA9PiAobi5vbGQubWFwcGVkUmVjb3JkLnBhc3NlZEZpbHRlciA9PT0gZmFsc2VcbiAgICAgICAgfHwgaXNOZXdseVJlZmVyZW5jZWQpXG4gICAgICAgICYmIG4ubmV3Lm1hcHBlZFJlY29yZC5wYXNzZWRGaWx0ZXIgPT09IHRydWU7XG5cbiAgY29uc3QgdG9VcGRhdGVGaWx0ZXIgPSBuID0+IG4ubmV3Lm1hcHBlZFJlY29yZC5wYXNzZWRGaWx0ZXIgPT09IHRydWVcbiAgICAgICAgJiYgbi5vbGQubWFwcGVkUmVjb3JkLnBhc3NlZEZpbHRlciA9PT0gdHJ1ZVxuICAgICAgICAmJiAhaXNFcXVhbChuLm9sZC5tYXBwZWRSZWNvcmQucmVzdWx0LFxuICAgICAgICAgIG4ubmV3Lm1hcHBlZFJlY29yZC5yZXN1bHQpO1xuXG4gIGNvbnN0IHRvUmVtb3ZlID0gW107XG4gIGNvbnN0IHRvV3JpdGUgPSBbXTtcblxuICBmb3IgKGNvbnN0IHQgb2YgdXBkYXRlVHJhbnNhY3Rpb25zKSB7XG4gICAgY29uc3QgYW5jZXN0b3JJZHhzID0gZ2V0UmVsZXZhbnRBbmNlc3RvckluZGV4ZXMoXG4gICAgICBoaWVyYXJjaHksIHQucmVjb3JkLFxuICAgICk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VDaGFuZ2VzID0gZGlmZlJldmVyc2VSZWZGb3JVcGRhdGUoXG4gICAgICBoaWVyYXJjaHksIHQub2xkUmVjb3JkLCB0LnJlY29yZCxcbiAgICApO1xuXG4gICAgLy8gb2xkIHJlY29yZHMgdG8gcmVtb3ZlIChmaWx0ZXJlZCBvdXQpXG4gICAgY29uc3QgZmlsdGVyZWRPdXRfdG9SZW1vdmUgPSB1bmlvbihcbiAgICAgIGdldEluZGV4Tm9kZXNUb0FwcGx5KHRvUmVtb3ZlRmlsdGVyKSh0LCBhbmNlc3RvcklkeHMpLFxuICAgICAgLy8gc3RpbGwgcmVmZXJlbmNlZCAtIGNoZWNrIGZpbHRlclxuICAgICAgZ2V0SW5kZXhOb2Rlc1RvQXBwbHkodG9SZW1vdmVGaWx0ZXIpKHQsIHJlZmVyZW5jZUNoYW5nZXMubm90Q2hhbmdlZCksXG4gICAgICAvLyB1biByZWZlcmVuY2VkIC0gcmVtb3ZlIGlmIGluIHRoZXJlIGFscmVhZHlcbiAgICAgIGdldEluZGV4Tm9kZXNUb0FwcGx5KG4gPT4gdG9SZW1vdmVGaWx0ZXIobiwgdHJ1ZSkpKHQsIHJlZmVyZW5jZUNoYW5nZXMudW5SZWZlcmVuY2VkKSxcbiAgICApO1xuXG4gICAgLy8gbmV3IHJlY29yZHMgdG8gYWRkIChmaWx0ZXJlZCBpbilcbiAgICBjb25zdCBmaWx0ZXJlZEluX3RvQWRkID0gdW5pb24oXG4gICAgICBnZXRJbmRleE5vZGVzVG9BcHBseSh0b0FkZEZpbHRlcikodCwgYW5jZXN0b3JJZHhzKSxcbiAgICAgIC8vIG5ld2x5IHJlZmVyZW5jZWQgLSBjaGVjayBmaWx0ZXJcbiAgICAgIGdldEluZGV4Tm9kZXNUb0FwcGx5KG4gPT4gdG9BZGRGaWx0ZXIobiwgdHJ1ZSkpKHQsIHJlZmVyZW5jZUNoYW5nZXMubmV3bHlSZWZlcmVuY2VkKSxcbiAgICAgIC8vIHJlZmVyZW5jZSB1bmNoYW5nZWQgLSByZXJ1biBmaWx0ZXIgaW4gY2FzZSBzb21ldGhpbmcgZWxzZSBjaGFuZ2VkXG4gICAgICBnZXRJbmRleE5vZGVzVG9BcHBseSh0b0FkZEZpbHRlcikodCwgcmVmZXJlbmNlQ2hhbmdlcy5ub3RDaGFuZ2VkKSxcbiAgICApO1xuXG4gICAgY29uc3QgY2hhbmdlZCA9IHVuaW9uKFxuICAgICAgZ2V0SW5kZXhOb2Rlc1RvQXBwbHkodG9VcGRhdGVGaWx0ZXIpKHQsIGFuY2VzdG9ySWR4cyksXG4gICAgICAvLyBzdGlsbCByZWZlcmVuY2VkIC0gcmVjaGVjayBmaWx0ZXJcbiAgICAgIGdldEluZGV4Tm9kZXNUb0FwcGx5KHRvVXBkYXRlRmlsdGVyKSh0LCByZWZlcmVuY2VDaGFuZ2VzLm5vdENoYW5nZWQpLFxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZEtleUNoYW5nZWQgPSAkKGNoYW5nZWQsIFtcbiAgICAgIGZpbHRlcihjID0+IGMub2xkLmluZGV4U2hhcmRLZXkgIT09IGMubmV3LmluZGV4U2hhcmRLZXkpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgY2hhbmdlZEluU2FtZVNoYXJkID0gJChzaGFyZEtleUNoYW5nZWQsIFtcbiAgICAgIGRpZmZlcmVuY2UoY2hhbmdlZCksXG4gICAgXSk7XG5cbiAgICBmb3IgKGNvbnN0IHJlcyBvZiBzaGFyZEtleUNoYW5nZWQpIHtcbiAgICAgIHB1bGwocmVzKShjaGFuZ2VkKTtcbiAgICAgIGZpbHRlcmVkT3V0X3RvUmVtb3ZlLnB1c2gocmVzKTtcbiAgICAgIGZpbHRlcmVkSW5fdG9BZGQucHVzaChyZXMpO1xuICAgIH1cblxuICAgIHRvUmVtb3ZlLnB1c2goXG4gICAgICAkKGZpbHRlcmVkT3V0X3RvUmVtb3ZlLCBbXG4gICAgICAgIG1hcChpID0+IGkub2xkKSxcbiAgICAgIF0pLFxuICAgICk7XG5cbiAgICB0b1dyaXRlLnB1c2goXG4gICAgICAkKGZpbHRlcmVkSW5fdG9BZGQsIFtcbiAgICAgICAgbWFwKGkgPT4gaS5uZXcpLFxuICAgICAgXSksXG4gICAgKTtcblxuICAgIHRvV3JpdGUucHVzaChcbiAgICAgICQoY2hhbmdlZEluU2FtZVNoYXJkLCBbXG4gICAgICAgIG1hcChpID0+IGkubmV3KSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKHtcbiAgICB0b1JlbW92ZTogZmxhdHRlbih0b1JlbW92ZSksXG4gICAgdG9Xcml0ZTogZmxhdHRlbih0b1dyaXRlKSxcbiAgfSk7XG59O1xuXG5jb25zdCBnZXRCdWlsZEluZGV4VHJhbnNhY3Rpb25zQnlTaGFyZCA9IChoaWVyYXJjaHksIHRyYW5zYWN0aW9ucykgPT4ge1xuICBjb25zdCBidWlsZFRyYW5zYWN0aW9ucyA9ICQodHJhbnNhY3Rpb25zLCBbZmlsdGVyKGlzQnVpbGRJbmRleCldKTtcbiAgaWYgKCFpc05vbkVtcHR5QXJyYXkoYnVpbGRUcmFuc2FjdGlvbnMpKSByZXR1cm4gW107XG4gIGNvbnN0IGluZGV4Tm9kZSA9IHRyYW5zYWN0aW9ucy5pbmRleE5vZGU7XG5cbiAgY29uc3QgZ2V0SW5kZXhLZXlzID0gKHQpID0+IHtcbiAgICBpZiAoaXNHbG9iYWxJbmRleChpbmRleE5vZGUpKSB7XG4gICAgICByZXR1cm4gW2luZGV4Tm9kZS5ub2RlS2V5KCldO1xuICAgIH1cblxuICAgIGlmIChpc1JlZmVyZW5jZUluZGV4KGluZGV4Tm9kZSkpIHtcbiAgICAgIGNvbnN0IHJlY29yZE5vZGUgPSBnZXRFeGFjdE5vZGVGb3JQYXRoKGhpZXJhcmNoeSkodC5yZWNvcmQua2V5KTtcbiAgICAgIGNvbnN0IHJlZkZpZWxkcyA9ICQocmVjb3JkTm9kZS5maWVsZHMsIFtcbiAgICAgICAgZmlsdGVyKGZpZWxkUmV2ZXJzZXNSZWZlcmVuY2VUb0luZGV4KGluZGV4Tm9kZSkpLFxuICAgICAgXSk7XG4gICAgICBjb25zdCBpbmRleEtleXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcmVmRmllbGQgb2YgcmVmRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IHJlZlZhbHVlID0gdC5yZWNvcmRbcmVmRmllbGQubmFtZV07XG4gICAgICAgIGlmIChpc1NvbWV0aGluZyhyZWZWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAmJiBpc05vbkVtcHR5U3RyaW5nKHJlZlZhbHVlLmtleSkpIHtcbiAgICAgICAgICBjb25zdCBpbmRleEtleSA9IGpvaW5LZXkoXG4gICAgICAgICAgICByZWZWYWx1ZS5rZXksXG4gICAgICAgICAgICBpbmRleE5vZGUubmFtZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFpbmNsdWRlcyhpbmRleEtleSkoaW5kZXhLZXlzKSkgeyBpbmRleEtleXMucHVzaChpbmRleEtleSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGluZGV4S2V5cztcbiAgICB9XG5cbiAgICByZXR1cm4gW2pvaW5LZXkoXG4gICAgICBnZXRBY3R1YWxLZXlPZlBhcmVudChcbiAgICAgICAgaW5kZXhOb2RlLnBhcmVudCgpLm5vZGVLZXkoKSxcbiAgICAgICAgdC5yZWNvcmQua2V5LFxuICAgICAgKSxcbiAgICAgIGluZGV4Tm9kZS5uYW1lLFxuICAgICldO1xuICB9O1xuXG4gIHJldHVybiAkKGJ1aWxkVHJhbnNhY3Rpb25zLCBbXG4gICAgbWFwKCh0KSA9PiB7XG4gICAgICBjb25zdCBtYXBwZWRSZWNvcmQgPSBldmFsdWF0ZSh0LnJlY29yZCkoaW5kZXhOb2RlKTtcbiAgICAgIGlmICghbWFwcGVkUmVjb3JkLnBhc3NlZEZpbHRlcikgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBpbmRleEtleXMgPSBnZXRJbmRleEtleXModCk7XG4gICAgICByZXR1cm4gJChpbmRleEtleXMsIFtcbiAgICAgICAgbWFwKGluZGV4S2V5ID0+ICh7XG4gICAgICAgICAgbWFwcGVkUmVjb3JkLFxuICAgICAgICAgIGluZGV4Tm9kZSxcbiAgICAgICAgICBpbmRleEtleSxcbiAgICAgICAgICBpbmRleFNoYXJkS2V5OiBnZXRJbmRleGVkRGF0YUtleShcbiAgICAgICAgICAgIGluZGV4Tm9kZSxcbiAgICAgICAgICAgIGluZGV4S2V5LFxuICAgICAgICAgICAgbWFwcGVkUmVjb3JkLnJlc3VsdCxcbiAgICAgICAgICApLFxuICAgICAgICB9KSksXG4gICAgICBdKTtcbiAgICB9KSxcbiAgICBmbGF0dGVuLFxuICAgIGZpbHRlcihpc1NvbWV0aGluZyksXG4gIF0pO1xufTtcblxuY29uc3QgZ2V0X0NyZWF0ZV9EZWxldGVfVHJhbnNhY3Rpb25zQnlTaGFyZCA9IHByZWQgPT4gKGhpZXJhcmNoeSwgdHJhbnNhY3Rpb25zKSA9PiB7XG4gIGNvbnN0IGNyZWF0ZVRyYW5zYWN0aW9ucyA9ICQodHJhbnNhY3Rpb25zLCBbZmlsdGVyKHByZWQpXSk7XG5cbiAgY29uc3QgZ2V0SW5kZXhOb2Rlc1RvQXBwbHkgPSAodCwgaW5kZXhlcykgPT4gJChpbmRleGVzLCBbXG4gICAgbWFwKChuKSA9PiB7XG4gICAgICBjb25zdCBtYXBwZWRSZWNvcmQgPSBldmFsdWF0ZSh0LnJlY29yZCkobi5pbmRleE5vZGUpO1xuICAgICAgcmV0dXJuICh7XG4gICAgICAgIG1hcHBlZFJlY29yZCxcbiAgICAgICAgaW5kZXhOb2RlOiBuLmluZGV4Tm9kZSxcbiAgICAgICAgaW5kZXhLZXk6IG4uaW5kZXhLZXksXG4gICAgICAgIGluZGV4U2hhcmRLZXk6IGdldEluZGV4ZWREYXRhS2V5KFxuICAgICAgICAgIG4uaW5kZXhOb2RlLFxuICAgICAgICAgIG4uaW5kZXhLZXksXG4gICAgICAgICAgbWFwcGVkUmVjb3JkLnJlc3VsdCxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIGZpbHRlcihuID0+IG4ubWFwcGVkUmVjb3JkLnBhc3NlZEZpbHRlciksXG4gIF0pO1xuXG4gIGNvbnN0IGFsbFRvQXBwbHkgPSBbXTtcblxuICBmb3IgKGNvbnN0IHQgb2YgY3JlYXRlVHJhbnNhY3Rpb25zKSB7XG4gICAgY29uc3QgYW5jZXN0b3JJZHhzID0gZ2V0UmVsZXZhbnRBbmNlc3RvckluZGV4ZXMoaGllcmFyY2h5LCB0LnJlY29yZCk7XG4gICAgY29uc3QgcmV2ZXJzZVJlZiA9IGdldFJlbGV2YW50UmV2ZXJzZVJlZmVyZW5jZUluZGV4ZXMoaGllcmFyY2h5LCB0LnJlY29yZCk7XG5cbiAgICBhbGxUb0FwcGx5LnB1c2goXG4gICAgICBnZXRJbmRleE5vZGVzVG9BcHBseSh0LCBhbmNlc3RvcklkeHMpLFxuICAgICk7XG4gICAgYWxsVG9BcHBseS5wdXNoKFxuICAgICAgZ2V0SW5kZXhOb2Rlc1RvQXBwbHkodCwgcmV2ZXJzZVJlZiksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBmbGF0dGVuKGFsbFRvQXBwbHkpO1xufTtcblxuY29uc3QgZ2V0RGVsZXRlVHJhbnNhY3Rpb25zQnlTaGFyZCA9IGdldF9DcmVhdGVfRGVsZXRlX1RyYW5zYWN0aW9uc0J5U2hhcmQoaXNEZWxldGUpO1xuXG5jb25zdCBnZXRDcmVhdGVUcmFuc2FjdGlvbnNCeVNoYXJkID0gZ2V0X0NyZWF0ZV9EZWxldGVfVHJhbnNhY3Rpb25zQnlTaGFyZChpc0NyZWF0ZSk7XG5cbmNvbnN0IGRpZmZSZXZlcnNlUmVmRm9yVXBkYXRlID0gKGFwcEhpZXJhcmNoeSwgb2xkUmVjb3JkLCBuZXdSZWNvcmQpID0+IHtcbiAgY29uc3Qgb2xkSW5kZXhlcyA9IGdldFJlbGV2YW50UmV2ZXJzZVJlZmVyZW5jZUluZGV4ZXMoXG4gICAgYXBwSGllcmFyY2h5LCBvbGRSZWNvcmQsXG4gICk7XG4gIGNvbnN0IG5ld0luZGV4ZXMgPSBnZXRSZWxldmFudFJldmVyc2VSZWZlcmVuY2VJbmRleGVzKFxuICAgIGFwcEhpZXJhcmNoeSwgbmV3UmVjb3JkLFxuICApO1xuXG4gIGNvbnN0IHVuUmVmZXJlbmNlZCA9IGRpZmZlcmVuY2VCeShcbiAgICBpID0+IGkuaW5kZXhLZXksXG4gICAgb2xkSW5kZXhlcywgbmV3SW5kZXhlcyxcbiAgKTtcblxuICBjb25zdCBuZXdseVJlZmVyZW5jZWQgPSBkaWZmZXJlbmNlQnkoXG4gICAgaSA9PiBpLmluZGV4S2V5LFxuICAgIG5ld0luZGV4ZXMsIG9sZEluZGV4ZXMsXG4gICk7XG5cbiAgY29uc3Qgbm90Q2hhbmdlZCA9IGludGVyc2VjdGlvbkJ5KFxuICAgIGkgPT4gaS5pbmRleEtleSxcbiAgICBuZXdJbmRleGVzLCBvbGRJbmRleGVzLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdW5SZWZlcmVuY2VkLFxuICAgIG5ld2x5UmVmZXJlbmNlZCxcbiAgICBub3RDaGFuZ2VkLFxuICB9O1xufTtcbiIsImltcG9ydCB7IG1hcCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyByZXRyaWV2ZSB9IGZyb20gJy4vcmV0cmlldmUnO1xuaW1wb3J0IHsgZXhlY3V0ZVRyYW5zYWN0aW9ucyB9IGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQge1xuICAkLCBqb2luS2V5LCBnZXRMb2NrLCBpc05vbG9jaywgcmVsZWFzZUxvY2ssXG59IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBMT0NLX0ZJTEVfS0VZLCBUUkFOU0FDVElPTlNfRk9MREVSLFxuICB0aW1lb3V0TWlsbGlzZWNvbmRzLCBnZXRUcmFuc2FjdGlvbklkLFxuICBtYXhMb2NrUmV0cmllcyxcbn0gZnJvbSAnLi90cmFuc2FjdGlvbnNDb21tb24nO1xuXG5leHBvcnQgY29uc3QgY2xlYW51cCA9IGFzeW5jIChhcHApID0+IHtcbiAgY29uc3QgbG9jayA9IGF3YWl0IGdldFRyYW5zYWN0aW9uTG9jayhhcHApO1xuICBpZiAoaXNOb2xvY2sobG9jaykpIHJldHVybjtcblxuICB0cnkge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGF3YWl0IHJldHJpZXZlKGFwcCk7XG4gICAgaWYgKHRyYW5zYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBleGVjdXRlVHJhbnNhY3Rpb25zKGFwcCkodHJhbnNhY3Rpb25zKTtcblxuICAgICAgY29uc3QgZm9sZGVyID0gdHJhbnNhY3Rpb25zLmZvbGRlcktleVxuICAgICAgICA/IHRyYW5zYWN0aW9ucy5mb2xkZXJLZXlcbiAgICAgICAgOiBUUkFOU0FDVElPTlNfRk9MREVSO1xuXG4gICAgICBjb25zdCBkZWxldGVGaWxlcyA9ICQodHJhbnNhY3Rpb25zLCBbXG4gICAgICAgIG1hcCh0ID0+IGpvaW5LZXkoXG4gICAgICAgICAgZm9sZGVyLFxuICAgICAgICAgIGdldFRyYW5zYWN0aW9uSWQoXG4gICAgICAgICAgICB0LnJlY29yZElkLCB0LnRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHQudW5pcXVlSWQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSksXG4gICAgICAgIG1hcChhcHAuZGF0YXN0b3JlLmRlbGV0ZUZpbGUpLFxuICAgICAgXSk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGRlbGV0ZUZpbGVzKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVsZWFzZUxvY2soYXBwLCBsb2NrKTtcbiAgfVxufTtcblxuY29uc3QgZ2V0VHJhbnNhY3Rpb25Mb2NrID0gYXN5bmMgYXBwID0+IGF3YWl0IGdldExvY2soXG4gIGFwcCwgTE9DS19GSUxFX0tFWSxcbiAgdGltZW91dE1pbGxpc2Vjb25kcywgbWF4TG9ja1JldHJpZXMsXG4pO1xuIiwiaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IGNvbmZpZ0ZvbGRlciwgYXBwRGVmaW5pdGlvbkZpbGUsICQgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgVFJBTlNBQ1RJT05TX0ZPTERFUiB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucy90cmFuc2FjdGlvbnNDb21tb24nO1xuaW1wb3J0IHsgQVVUSF9GT0xERVIsIFVTRVJTX0xJU1RfRklMRSwgQUNDRVNTX0xFVkVMU19GSUxFIH0gZnJvbSAnLi4vYXV0aEFwaS9hdXRoQ29tbW9uJztcbmltcG9ydCB7IGluaXRpYWxpc2VSb290Q29sbGVjdGlvbnMgfSBmcm9tICcuLi9jb2xsZWN0aW9uQXBpL2luaXRpYWxpc2UnO1xuaW1wb3J0IHsgaW5pdGlhbGlzZUluZGV4IH0gZnJvbSAnLi4vaW5kZXhpbmcvaW5pdGlhbGlzZUluZGV4JztcbmltcG9ydCB7IGdldEZsYXR0ZW5lZEhpZXJhcmNoeSwgaXNHbG9iYWxJbmRleCwgaXNTaW5nbGVSZWNvcmQgfSBmcm9tICcuLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHknO1xuaW1wb3J0IHsgX3NhdmUgfSBmcm9tICcuLi9yZWNvcmRBcGkvc2F2ZSc7XG5pbXBvcnQgeyBnZXROZXcgfSBmcm9tICcuLi9yZWNvcmRBcGkvZ2V0TmV3JztcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxpc2VEYXRhID0gYXN5bmMgKGRhdGFzdG9yZSwgYXBwbGljYXRpb25EZWZpbml0aW9uLCBhY2Nlc3NMZXZlbHMpID0+IHtcbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUZvbGRlcihjb25maWdGb2xkZXIpO1xuICBhd2FpdCBkYXRhc3RvcmUuY3JlYXRlSnNvbihhcHBEZWZpbml0aW9uRmlsZSwgYXBwbGljYXRpb25EZWZpbml0aW9uKTtcblxuICBhd2FpdCBpbml0aWFsaXNlUm9vdENvbGxlY3Rpb25zKGRhdGFzdG9yZSwgYXBwbGljYXRpb25EZWZpbml0aW9uLmhpZXJhcmNoeSk7XG4gIGF3YWl0IGluaXRpYWxpc2VSb290SW5kZXhlcyhkYXRhc3RvcmUsIGFwcGxpY2F0aW9uRGVmaW5pdGlvbi5oaWVyYXJjaHkpO1xuXG4gIGF3YWl0IGluaXRpYWxpc2VSb290U2luZ2xlUmVjb3JkcyhkYXRhc3RvcmUsIGFwcGxpY2F0aW9uRGVmaW5pdGlvbi5oaWVyYXJjaHkpO1xuXG4gIGF3YWl0IGRhdGFzdG9yZS5jcmVhdGVGb2xkZXIoVFJBTlNBQ1RJT05TX0ZPTERFUik7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUZvbGRlcihBVVRIX0ZPTERFUik7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUpzb24oVVNFUlNfTElTVF9GSUxFLCBbXSk7XG5cbiAgYXdhaXQgZGF0YXN0b3JlLmNyZWF0ZUpzb24oXG4gICAgQUNDRVNTX0xFVkVMU19GSUxFLCBcbiAgICBhY2Nlc3NMZXZlbHMgPyBhY2Nlc3NMZXZlbHMgOiB7IHZlcnNpb246IDAsIGxldmVsczogW10gfSk7XG59O1xuXG5jb25zdCBpbml0aWFsaXNlUm9vdEluZGV4ZXMgPSBhc3luYyAoZGF0YXN0b3JlLCBoaWVyYXJjaHkpID0+IHtcbiAgY29uc3QgZmxhdGhpZXJhcmNoeSA9IGdldEZsYXR0ZW5lZEhpZXJhcmNoeShoaWVyYXJjaHkpO1xuICBjb25zdCBnbG9iYWxJbmRleGVzID0gJChmbGF0aGllcmFyY2h5LCBbXG4gICAgZmlsdGVyKGlzR2xvYmFsSW5kZXgpLFxuICBdKTtcblxuICBmb3IgKGNvbnN0IGluZGV4IG9mIGdsb2JhbEluZGV4ZXMpIHtcbiAgICBpZiAoIWF3YWl0IGRhdGFzdG9yZS5leGlzdHMoaW5kZXgubm9kZUtleSgpKSkgeyBhd2FpdCBpbml0aWFsaXNlSW5kZXgoZGF0YXN0b3JlLCAnJywgaW5kZXgpOyB9XG4gIH1cbn07XG5cbmNvbnN0IGluaXRpYWxpc2VSb290U2luZ2xlUmVjb3JkcyA9IGFzeW5jIChkYXRhc3RvcmUsIGhpZXJhY2h5KSA9PiB7XG4gIGNvbnN0IGZsYXRoaWVyYXJjaHkgPSBnZXRGbGF0dGVuZWRIaWVyYXJjaHkoaGllcmFjaHkpO1xuICBjb25zdCBzaW5nbGVSZWNvcmRzID0gJChmbGF0aGllcmFyY2h5LCBbXG4gICAgZmlsdGVyKGlzU2luZ2xlUmVjb3JkKSxcbiAgXSk7XG5cbiAgLyogZm9yIChsZXQgcmVjb3JkIG9mIHNpbmdsZVJlY29yZHMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0TmV3KHsgZGF0YXN0b3JlOiBkYXRhc3RvcmUsIGhpZXJhcmNoeTogYXBwRGVmaW5pdGlvbi5oaWVyYXJjaHkgfSlcbiAgICAgICAgICAgIChyZWNvcmQubm9kZUtleSgpLFxuICAgICAgICAgICAgICAgIHJlY29yZC5uYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIF9zYXZlKHsgZGF0YXN0b3JlOiBkYXRhc3RvcmUsIGhpZXJhcmNoeTogYXBwRGVmaW5pdGlvbi5oaWVyYXJjaHkgfSxcbiAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICApO1xuICAgIH0gKi9cbn07XG4iLCJpbXBvcnQgeyBpc05vdGhpbmcgfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YWJhc2VNYW5hZ2VyID0gZGF0YWJhc2VNYW5hZ2VyID0+ICh7XG4gIGNyZWF0ZUVtcHR5TWFzdGVyRGI6IGNyZWF0ZUVtcHR5TWFzdGVyRGIoZGF0YWJhc2VNYW5hZ2VyKSxcbiAgY3JlYXRlRW1wdHlJbnN0YW5jZURiOiBjcmVhdGVFbXB0eUluc3RhbmNlRGIoZGF0YWJhc2VNYW5hZ2VyKSxcbiAgZ2V0SW5zdGFuY2VEYlJvb3RDb25maWc6IGRhdGFiYXNlTWFuYWdlci5nZXRJbnN0YW5jZURiUm9vdENvbmZpZyxcbiAgbWFzdGVyRGF0YXN0b3JlQ29uZmlnOiBnZXRNYXN0ZXJEYXRhc3RvcmVDb25maWcoZGF0YWJhc2VNYW5hZ2VyKSxcbiAgZ2V0SW5zdGFuY2VEYXRhc3RvcmVDb25maWc6IGdldEluc3RhbmNlRGF0YXN0b3JlQ29uZmlnKGRhdGFiYXNlTWFuYWdlciksXG59KTtcblxuY29uc3QgZ2V0TWFzdGVyRGF0YXN0b3JlQ29uZmlnID0gZGF0YWJhc2VNYW5hZ2VyID0+IGRhdGFiYXNlTWFuYWdlci5nZXREYXRhc3RvcmVDb25maWcoJ21hc3RlcicpO1xuXG5jb25zdCBnZXRJbnN0YW5jZURhdGFzdG9yZUNvbmZpZyA9IGRhdGFiYXNlTWFuYWdlciA9PiAoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCkgPT4gZGF0YWJhc2VNYW5hZ2VyLmdldERhdGFzdG9yZUNvbmZpZyhcbiAgYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCxcbik7XG5cbmNvbnN0IGNyZWF0ZUVtcHR5TWFzdGVyRGIgPSBkYXRhYmFzZU1hbmFnZXIgPT4gYXN5bmMgKCkgPT4gYXdhaXQgZGF0YWJhc2VNYW5hZ2VyLmNyZWF0ZUVtcHR5RGIoJ21hc3RlcicpO1xuXG5jb25zdCBjcmVhdGVFbXB0eUluc3RhbmNlRGIgPSBkYXRhYmFzZU1hbmFnZXIgPT4gYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpID0+IHtcbiAgaWYgKGlzTm90aGluZyhhcHBsaWNhdGlvbklkKSkgeyB0aHJvdyBuZXcgRXJyb3IoJ0NyZWF0ZURiOiBhcHBsaWNhdGlvbiBpZCBub3Qgc3VwcGxpZWQnKTsgfVxuICBpZiAoaXNOb3RoaW5nKGluc3RhbmNlSWQpKSB7IHRocm93IG5ldyBFcnJvcignQ3JlYXRlRGI6IGluc3RhbmNlIGlkIG5vdCBzdXBwbGllZCcpOyB9XG5cbiAgcmV0dXJuIGF3YWl0IGRhdGFiYXNlTWFuYWdlci5jcmVhdGVFbXB0eURiKFxuICAgIGFwcGxpY2F0aW9uSWQsXG4gICAgaW5zdGFuY2VJZCxcbiAgKTtcbn07XG4iLCJpbXBvcnQgZ2V0UmVjb3JkQXBpIGZyb20gXCIuL3JlY29yZEFwaVwiO1xuaW1wb3J0IGdldENvbGxlY3Rpb25BcGkgZnJvbSBcIi4vY29sbGVjdGlvbkFwaVwiO1xuaW1wb3J0IGdldEluZGV4QXBpIGZyb20gXCIuL2luZGV4QXBpXCI7XG5pbXBvcnQgZ2V0VGVtcGxhdGVBcGkgZnJvbSBcIi4vdGVtcGxhdGVBcGlcIjtcbmltcG9ydCBnZXRBdXRoQXBpIGZyb20gXCIuL2F1dGhBcGlcIjtcbmltcG9ydCBnZXRBY3Rpb25zQXBpIGZyb20gXCIuL2FjdGlvbnNBcGlcIjtcbmltcG9ydCB7c2V0dXBEYXRhc3RvcmUsIGNyZWF0ZUV2ZW50QWdncmVnYXRvcn0gZnJvbSBcIi4vYXBwSW5pdGlhbGlzZVwiO1xuaW1wb3J0IHtpbml0aWFsaXNlQWN0aW9uc30gZnJvbSBcIi4vYWN0aW9uc0FwaS9pbml0aWFsaXNlXCJcbmltcG9ydCB7aXNTb21ldGhpbmd9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHtjbGVhbnVwfSBmcm9tIFwiLi90cmFuc2FjdGlvbnMvY2xlYW51cFwiO1xuaW1wb3J0IHtnZW5lcmF0ZUZ1bGxQZXJtaXNzaW9uc30gZnJvbSBcIi4vYXV0aEFwaS9nZW5lcmF0ZUZ1bGxQZXJtaXNzaW9uc1wiO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkRlZmluaXRpb259IGZyb20gXCIuL3RlbXBsYXRlQXBpL2dldEFwcGxpY2F0aW9uRGVmaW5pdGlvblwiO1xuaW1wb3J0IGNvbW1vbiBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7Z2V0QmVoYXZpb3VyU291cmNlc30gZnJvbSBcIi4vdGVtcGxhdGVBcGkvZ2V0QmVoYXZpb3VyU291cmNlc1wiO1xuaW1wb3J0IGhpZXJhcmNoeSBmcm9tIFwiLi90ZW1wbGF0ZUFwaS9oaWVyYXJjaHlcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFwcEFwaXMgPSBhc3luYyAoc3RvcmUsIGJlaGF2aW91clNvdXJjZXMgPSBudWxsLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cFRyYW5zYWN0aW9ucyA9IG51bGwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRFcG9jaFRpbWUgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG8gPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBEZWZpbml0aW9uID0gbnVsbCkgPT4ge1xuXG4gICAgc3RvcmUgPSBzZXR1cERhdGFzdG9yZShzdG9yZSk7XG5cbiAgICBpZighYXBwRGVmaW5pdGlvbilcbiAgICAgICAgYXBwRGVmaW5pdGlvbiA9IGF3YWl0IGdldEFwcGxpY2F0aW9uRGVmaW5pdGlvbihzdG9yZSkoKTtcblxuICAgIGlmKCFiZWhhdmlvdXJTb3VyY2VzKVxuICAgICAgICBiZWhhdmlvdXJTb3VyY2VzID0gYXdhaXQgZ2V0QmVoYXZpb3VyU291cmNlcyhzdG9yZSk7XG5cbiAgICBjb25zdCBldmVudEFnZ3JlZ2F0b3IgPSBjcmVhdGVFdmVudEFnZ3JlZ2F0b3IoKTtcblxuICAgIGNvbnN0IGFwcCA9IHtcbiAgICAgICAgZGF0YXN0b3JlOnN0b3JlLFxuICAgICAgICBjcnlwdG8sXG4gICAgICAgIHB1Ymxpc2g6ZXZlbnRBZ2dyZWdhdG9yLnB1Ymxpc2gsXG4gICAgICAgIGhpZXJhcmNoeTphcHBEZWZpbml0aW9uLmhpZXJhcmNoeSxcbiAgICAgICAgYWN0aW9uczphcHBEZWZpbml0aW9uLmFjdGlvbnNcbiAgICB9O1xuXG4gICAgY29uc3QgdGVtcGxhdGVBcGkgPSBnZXRUZW1wbGF0ZUFwaShhcHApOyAgICBcblxuICAgIGFwcC5jbGVhbnVwVHJhbnNhY3Rpb25zID0gaXNTb21ldGhpbmcoY2xlYW51cFRyYW5zYWN0aW9ucykgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNsZWFudXBUcmFuc2FjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYXN5bmMgKCkgPT4gYXdhaXQgY2xlYW51cChhcHApO1xuXG4gICAgYXBwLmdldEVwb2NoVGltZSA9IGlzU29tZXRoaW5nKGdldEVwb2NoVGltZSlcbiAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRFcG9jaFRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgOiBhc3luYyAoKSA9PiAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuXG4gICAgY29uc3QgcmVjb3JkQXBpID0gZ2V0UmVjb3JkQXBpKGFwcCk7XG4gICAgY29uc3QgY29sbGVjdGlvbkFwaSA9IGdldENvbGxlY3Rpb25BcGkoYXBwKTtcbiAgICBjb25zdCBpbmRleEFwaSA9IGdldEluZGV4QXBpKGFwcCk7XG4gICAgY29uc3QgYXV0aEFwaSA9IGdldEF1dGhBcGkoYXBwKTtcbiAgICBjb25zdCBhY3Rpb25zQXBpID0gZ2V0QWN0aW9uc0FwaShhcHApO1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRlQXMgPSBhc3luYyAodXNlcm5hbWUsIHBhc3N3b3JkKSA9PiB7XG4gICAgICAgIGFwcC51c2VyID0gYXdhaXQgYXV0aEFwaS5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd2l0aEZ1bGxBY2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGFwcC51c2VyID0ge1xuICAgICAgICAgICAgbmFtZTogXCJhcHBcIixcbiAgICAgICAgICAgIHBlcm1pc3Npb25zIDogZ2VuZXJhdGVGdWxsUGVybWlzc2lvbnMoYXBwKSxcbiAgICAgICAgICAgIGlzVXNlcjpmYWxzZSxcbiAgICAgICAgICAgIHRlbXA6ZmFsc2VcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhc1VzZXIgPSAodXNlcikgPT4ge1xuICAgICAgICBhcHAudXNlciA9IHVzZXJcbiAgICB9O1xuXG4gICAgXG5cbiAgICBsZXQgYXBpcyA9IHtcbiAgICAgICAgcmVjb3JkQXBpLCBcbiAgICAgICAgdGVtcGxhdGVBcGksXG4gICAgICAgIGNvbGxlY3Rpb25BcGksXG4gICAgICAgIGluZGV4QXBpLFxuICAgICAgICBhdXRoQXBpLFxuICAgICAgICBhY3Rpb25zQXBpLFxuICAgICAgICBzdWJzY3JpYmU6IGV2ZW50QWdncmVnYXRvci5zdWJzY3JpYmUsXG4gICAgICAgIGF1dGhlbnRpY2F0ZUFzLFxuICAgICAgICB3aXRoRnVsbEFjY2VzcyxcbiAgICAgICAgYXNVc2VyXG4gICAgfTtcblxuICAgIGFwaXMuYWN0aW9ucyA9IGluaXRpYWxpc2VBY3Rpb25zKFxuICAgICAgICBldmVudEFnZ3JlZ2F0b3Iuc3Vic2NyaWJlLFxuICAgICAgICBiZWhhdmlvdXJTb3VyY2VzLFxuICAgICAgICBhcHBEZWZpbml0aW9uLmFjdGlvbnMsXG4gICAgICAgIGFwcERlZmluaXRpb24udHJpZ2dlcnMsXG4gICAgICAgIGFwaXMpO1xuXG5cbiAgICByZXR1cm4gYXBpcztcbn07XG5cbmV4cG9ydCB7ZXZlbnRzLCBldmVudHNMaXN0fSBmcm9tIFwiLi9jb21tb24vZXZlbnRzXCI7XG5leHBvcnQge2dldFRlbXBsYXRlQXBpfSBmcm9tIFwiLi90ZW1wbGF0ZUFwaVwiO1xuZXhwb3J0IHtnZXRSZWNvcmRBcGl9IGZyb20gXCIuL3JlY29yZEFwaVwiO1xuZXhwb3J0IHtnZXRDb2xsZWN0aW9uQXBpfSBmcm9tIFwiLi9jb2xsZWN0aW9uQXBpXCI7XG5leHBvcnQge2dldEF1dGhBcGl9IGZyb20gXCIuL2F1dGhBcGlcIjtcbmV4cG9ydCB7Z2V0SW5kZXhBcGl9IGZyb20gXCIuL2luZGV4QXBpXCI7XG5leHBvcnQge3NldHVwRGF0YXN0b3JlfSBmcm9tIFwiLi9hcHBJbml0aWFsaXNlXCI7XG5leHBvcnQge2dldEFjdGlvbnNBcGl9IGZyb20gXCIuL2FjdGlvbnNBcGlcIjtcbmV4cG9ydCB7aW5pdGlhbGlzZURhdGF9IGZyb20gXCIuL2FwcEluaXRpYWxpc2UvaW5pdGlhbGlzZURhdGFcIjtcbmV4cG9ydCB7Z2V0RGF0YWJhc2VNYW5hZ2VyfSBmcm9tIFwiLi9hcHBJbml0aWFsaXNlL2RhdGFiYXNlTWFuYWdlclwiO1xuZXhwb3J0IHtoaWVyYXJjaHl9O1xuZXhwb3J0IHtjb21tb259O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRBcHBBcGlzOyJdLCJuYW1lcyI6WyJzcGxpdCIsImlzQXJyYXkiLCJqb2luIiwiaXNVbmRlZmluZWQiLCJpc05hTiIsInJlZHVjZSIsImNvbXBpbGVFeHByZXNzaW9uIiwiY29tcGlsZUNvZGUiLCJjbG9uZURlZXAiLCJpc0VtcHR5IiwiaW5jbHVkZXMiLCJjb25zdGFudCIsIm1ha2VydWxlIiwib3B0aW9ucyIsInR5cGVDb25zdHJhaW50cyIsImlzTnVsbCIsImhhcyIsImlzTnVtYmVyIiwiaXNTdHJpbmciLCJhbGwiLCJnZXREZWZhdWx0T3B0aW9ucyIsInZhbGlkYXRlVHlwZUNvbnN0cmFpbnRzIiwiaXNCb29sZWFuIiwiaXNEYXRlIiwia2V5cyIsImdsb2JhbCIsImJhc2U2NC5mcm9tQnl0ZUFycmF5IiwiaWVlZTc1NC5yZWFkIiwiaWVlZTc1NC53cml0ZSIsImJhc2U2NC50b0J5dGVBcnJheSIsInJlYWQiLCJCdWZmZXIiLCJyZWFkSW5kZXgiLCJtZXJnZSIsInNvbWUiLCJkZWxldGVSZWNvcmQiLCJ2YWxpZGF0ZSIsImZpbmQiLCJlYWNoIiwiZGVmYXVsdENhc2UiLCJhcGkiLCJjcmVhdGVUZW1wb3JhcnlBY2Nlc3MiLCJjcmVhdGVVc2VyIiwic2V0VXNlckFjY2Vzc0xldmVscyIsImV4ZWN1dGVBY3Rpb24iLCJjQ29kZSIsImNFeHAiLCJpc0Z1bmN0aW9uIiwib3JkZXJCeSIsInVuaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUEsTUFBTSxVQUFVLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFL0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7O0FBRXBDLE1BQU0sT0FBTyxHQUFHO0VBQ2QsU0FBUyxFQUFFO0lBQ1QsSUFBSSxFQUFFLFVBQVUsQ0FBQztNQUNmLFdBQVc7TUFDWCxpQkFBaUI7TUFDakIsaUJBQWlCLENBQUMsQ0FBQztJQUNyQixNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ2hCLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUNoQixJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ2QsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUNsQixVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3BCLFlBQVksRUFBRSxNQUFNLEVBQUU7R0FDdkI7RUFDRCxRQUFRLEVBQUU7SUFDUixVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3BCLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkIsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUNoQixVQUFVLEVBQUUsTUFBTSxFQUFFO0dBQ3JCO0VBQ0QsYUFBYSxFQUFFO0lBQ2IscUJBQXFCLEVBQUUsTUFBTSxFQUFFO0lBQy9CLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFBRTtHQUNqQjtFQUNELE9BQU8sRUFBRTtJQUNQLFlBQVksRUFBRSxNQUFNLEVBQUU7SUFDdEIsMkJBQTJCLEVBQUUsTUFBTSxFQUFFO0lBQ3JDLHFCQUFxQixFQUFFLE1BQU0sRUFBRTtJQUMvQixVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3BCLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsV0FBVyxFQUFFLE1BQU0sRUFBRTtJQUNyQixnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7SUFDMUIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQzNCLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsY0FBYyxFQUFFLE1BQU0sRUFBRTtJQUN4QixRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQ2xCLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtJQUMxQixZQUFZLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtJQUMxQiw0QkFBNEIsRUFBRSxNQUFNLEVBQUU7SUFDdEMsYUFBYSxFQUFFLE1BQU0sRUFBRTtJQUN2QixlQUFlLEVBQUUsTUFBTSxFQUFFO0lBQ3pCLFlBQVksRUFBRSxNQUFNLEVBQUU7SUFDdEIsb0JBQW9CLEVBQUUsTUFBTSxFQUFFO0lBQzlCLG1CQUFtQixFQUFFLE1BQU0sRUFBRTtHQUM5QjtFQUNELFdBQVcsRUFBRTtJQUNYLHdCQUF3QixFQUFFLE1BQU0sRUFBRTtJQUNsQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUU7R0FDakM7RUFDRCxVQUFVLEVBQUU7SUFDVixPQUFPLEVBQUUsTUFBTSxFQUFFO0dBQ2xCO0NBQ0YsQ0FBQzs7QUFFRixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7O0FBRXZCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDOztBQUV0RSxLQUFLLE1BQU0sT0FBTyxJQUFJLE9BQU8sRUFBRTtFQUM3QixLQUFLLE1BQU0sU0FBUyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSztNQUMvQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDMUMsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0dBQ2xDO0NBQ0Y7OztBQUdELEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxFQUFFO0VBQzdCLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3hDLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFO01BQzlDLFdBQVcsQ0FBQyxJQUFJO1FBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQztPQUNsQyxDQUFDO0tBQ0g7R0FDRjtDQUNGOzs7QUFHRCxBQUFZLE1BQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzs7QUFFOUIsQUFBWSxNQUFDLFVBQVUsR0FBRyxXQUFXOztBQzFGOUIsTUFBTSxlQUFlLFNBQVMsS0FBSyxDQUFDO0lBQ3ZDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7S0FDN0I7Q0FDSjs7QUFFRCxBQUFPLE1BQU0saUJBQWlCLFNBQVMsS0FBSyxDQUFDO0lBQ3pDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7S0FDN0I7Q0FDSjs7QUFFRCxBQUFPLE1BQU0sY0FBYyxTQUFTLEtBQUssQ0FBQztJQUN0QyxXQUFXLENBQUMsT0FBTyxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO0tBQzdCO0NBQ0o7O0FBRUQsQUFBTyxNQUFNLGFBQWEsU0FBUyxLQUFLLENBQUM7SUFDckMsV0FBVyxDQUFDLE9BQU8sRUFBRTtRQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztLQUM3QjtDQUNKOztBQ3RCTSxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUs7RUFDcEcsYUFBYSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQzs7RUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUN0QixtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELE9BQU87R0FDUjs7RUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDN0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7O0VBRS9DLElBQUk7SUFDRixNQUFNLEdBQUcsQ0FBQyxPQUFPO01BQ2YsY0FBYyxDQUFDLE9BQU87TUFDdEIsWUFBWTtLQUNiLENBQUM7O0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQzs7SUFFckMsTUFBTSxlQUFlLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDO0dBQ2YsQ0FBQyxPQUFPLEtBQUssRUFBRTtJQUNkLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxNQUFNLEtBQUssQ0FBQztHQUNiO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSztFQUNsRyxhQUFhLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDOztFQUVuQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3RCLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkQsT0FBTztHQUNSOztFQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztFQUM3QixNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQzs7RUFFL0MsSUFBSTtJQUNGLEdBQUcsQ0FBQyxPQUFPO01BQ1QsY0FBYyxDQUFDLE9BQU87TUFDdEIsWUFBWTtLQUNiLENBQUM7O0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7O0lBRS9CLGVBQWUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsT0FBTyxNQUFNLENBQUM7R0FDZixDQUFDLE9BQU8sS0FBSyxFQUFFO0lBQ2QsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxNQUFNLEtBQUssQ0FBQztHQUNiO0NBQ0YsQ0FBQzs7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxjQUFjLEtBQUs7RUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDckUsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0VBQzlELE1BQU0sR0FBRyxDQUFDO0NBQ1gsQ0FBQzs7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsVUFBVSxLQUFLO0VBQ3pELE1BQU0sTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDOztFQUUxQixNQUFNLGVBQWUsR0FBRyxPQUFPO0lBQzdCLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDaEMsVUFBVTtRQUNWLE1BQU07SUFDVixZQUFZLEVBQUUsTUFBTTtJQUNwQixLQUFLLEVBQUUsRUFBRTtHQUNWLENBQUMsQ0FBQzs7RUFFSCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEtBQUssR0FBRyxlQUFlLEVBQUUsQ0FBQztHQUMvQjs7RUFFRCxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDbkIsU0FBUyxFQUFFLGNBQWM7SUFDekIsTUFBTTtHQUNQLENBQUMsQ0FBQztDQUNKLENBQUM7O0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUs7RUFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDdEIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQ2hDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztHQUNsQjtDQUNGLENBQUM7O0FBRUYsTUFBTSxZQUFZLEdBQUcsT0FBTyxHQUFHLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLO0VBQzlFLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztFQUNwQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztFQUNoQixHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO0VBQ3hCLE1BQU0sR0FBRyxDQUFDLE9BQU87SUFDZixjQUFjLENBQUMsT0FBTztJQUN0QixHQUFHO0dBQ0osQ0FBQztFQUNGLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNuQixDQUFDOztBQUVGLE1BQU0sZUFBZSxHQUFHLE9BQU8sR0FBRyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSztFQUNwRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7RUFDM0MsVUFBVSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7RUFDM0IsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztFQUMvQixNQUFNLEdBQUcsQ0FBQyxPQUFPO0lBQ2YsY0FBYyxDQUFDLFVBQVU7SUFDekIsVUFBVTtHQUNYLENBQUM7RUFDRixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDbEIsT0FBTyxNQUFNLENBQUM7Q0FDZixDQUFDOztBQzlHRixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQzs7QUFFbkMsQUFBTyxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLFVBQVUsR0FBRyxDQUFDLEtBQUs7RUFDbkcsSUFBSTtJQUNGLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFO2NBQy9CLG1CQUFtQixDQUFDOztJQUU5QixNQUFNLElBQUksR0FBRztNQUNYLE9BQU87TUFDUCxHQUFHLEVBQUUsUUFBUTtNQUNiLFlBQVksRUFBRSxtQkFBbUI7S0FDbEMsQ0FBQzs7SUFFRixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVTtNQUM1QixRQUFRO01BQ1Isa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxZQUFZO1FBQ2pCLElBQUksQ0FBQyxPQUFPO09BQ2I7S0FDRixDQUFDOztJQUVGLE9BQU8sSUFBSSxDQUFDO0dBQ2IsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNWLElBQUksVUFBVSxJQUFJLGNBQWMsRUFBRSxFQUFFLE9BQU8sT0FBTyxDQUFDLEVBQUU7O0lBRXJELE1BQU0sSUFBSSxHQUFHLG9CQUFvQjtNQUMvQixRQUFRO01BQ1IsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7S0FDdkMsQ0FBQzs7SUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDOztJQUVsRCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7TUFDbkMsT0FBTyxPQUFPLENBQUM7S0FDaEI7O0lBRUQsSUFBSTtNQUNGLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDMUMsQ0FBQyxPQUFPLENBQUMsRUFBRTs7S0FFWDs7SUFFRCxNQUFNLGFBQWEsRUFBRSxDQUFDOztJQUV0QixPQUFPLE1BQU0sT0FBTztNQUNsQixHQUFHLEVBQUUsUUFBUSxFQUFFLG1CQUFtQjtNQUNsQyxjQUFjLEVBQUUsVUFBVSxHQUFHLENBQUM7S0FDL0IsQ0FBQztHQUNIO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRXpHLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7RUFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUNWLEtBQUssS0FBSztJQUNSLFlBQVksRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixHQUFHO0dBQ0osQ0FBQztDQUNILENBQUMsQ0FBQzs7QUFFSCxBQUFPLE1BQU0sV0FBVyxHQUFHLE9BQU8sR0FBRyxFQUFFLElBQUksS0FBSztFQUM5QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDOztFQUVsRCxJQUFJLGdCQUFnQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsRUFBRTtJQUMvRCxJQUFJO01BQ0YsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDMUMsQ0FBQyxPQUFPLENBQUMsRUFBRTs7S0FFWDtHQUNGO0NBQ0YsQ0FBQztBQUNGLEFBa0JBO0FBQ0EsQUFBTyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDakMsQUFBTyxNQUFNLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sQ0FBQzs7QUFFN0MsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7O0FDbEZqRztBQUNBLEFBQU8sTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7QUFHeEQsQUFBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRW5ELEFBQU8sTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSUEsT0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRCxBQUFPLE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkcsQUFBTyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLO0VBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHQyxTQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3RELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7RUFDbkIsT0FBTyxPQUFPLENBQUNDLE1BQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUM3QyxDQUFDO0FBQ0YsQUFBTyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3RELEFBQU8sTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQUFBTyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFNUQsQUFBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3JFLEFBQU8sTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDM0UsQUFBTyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUM3RSxBQUFPLE1BQU0sUUFBUSxHQUFHLFVBQVUsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2RyxBQUFPLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQzs7QUFFakUsQUFBTyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxNQUFNQyxhQUFXLENBQUMsR0FBRyxDQUFDO0lBQ2pFQSxhQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRTtJQUNwRCxNQUFNLEVBQUUsQ0FBQyxDQUFDOztBQUVkLEFBQU8sTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxLQUFLLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUMsQ0FBQzs7QUFFNUYsQUFBTyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLEFBQU8sTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDQSxhQUFXLENBQUMsQ0FBQztBQUMxQyxBQUFPLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxBQUFPLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQ0MsT0FBSyxDQUFDLENBQUM7O0FBRW5DLEFBQU8sTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFFBQVEsS0FBSyxHQUFHLElBQUlDLFFBQU0sQ0FBQyxRQUFRO0VBQzVELENBQUMsTUFBTSxFQUFFLGFBQWEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxHQUFHLENBQUM7RUFDbkYsSUFBSSxDQUFDLENBQUM7O0FBRVIsQUFBTyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsUUFBUSxLQUFLLEdBQUcsSUFBSUEsUUFBTSxDQUFDLFFBQVE7RUFDNUQsQ0FBQyxNQUFNLEVBQUUsYUFBYSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQztFQUMvRCxJQUFJLENBQUMsQ0FBQzs7QUFFUixBQUFPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7O0FBRXpHLEFBQU8sTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbkUsQUFBTyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUMsQUFBTyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLEFBQU8sTUFBTSxxQkFBcUIsR0FBRyxjQUFjLElBQUksR0FBRyxLQUFLLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUMxRyxBQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUV4RyxBQUFPLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLEdBQUcsS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDOztBQUV0SCxBQUFPLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzs7QUFFckYsQUFBTyxNQUFNLElBQUksR0FBRyxTQUFTLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDOztBQUU1RSxBQUFPLE1BQU0sR0FBRyxHQUFHLFNBQVMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDOztBQUVuRixBQUFPLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxBQUNPLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQ0osU0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVELEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzlELEFBQU8sTUFBTSxLQUFLLEdBQUcsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLO0VBQ2xELElBQUk7SUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7R0FDbEMsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sUUFBUSxFQUFFLENBQUM7R0FDbkI7Q0FDRixDQUFDOztBQUVGLEFBQU8sTUFBTSxVQUFVLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLO0VBQzdELElBQUk7SUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztHQUN4QyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ1YsT0FBTyxNQUFNLFFBQVEsRUFBRSxDQUFDO0dBQ3pCO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsS0FBSztFQUNoRCxJQUFJO0lBQ0YsT0FBTyxJQUFJLEVBQUUsQ0FBQztHQUNmLENBQUMsT0FBTyxHQUFHLEVBQUU7SUFDWixHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sR0FBRyxDQUFDO0dBQ1g7Q0FDRixDQUFDOztBQUVGLEFBQU8sTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDNUMsQUFBTyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQzVELEFBQU8sTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLEtBQUs7RUFDdkMsSUFBSTtJQUNGLElBQUksRUFBRSxDQUFDO0lBQ1AsT0FBTyxLQUFLLENBQUM7R0FDZCxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ1YsT0FBTyxJQUFJLENBQUM7R0FDYjtDQUNGLENBQUM7O0FBRUYsQUFBTyxNQUFNLHdCQUF3QixHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdkUsQUFBTyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzs7QUFFckYsQUFBTyxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFbkUsQUFBTyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsS0FBSyxLQUFLO0VBQ2pELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzdDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDOztFQUUvQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0VBQzNCLElBQUksUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFLE9BQU8sVUFBVSxFQUFFLENBQUM7RUFDN0MsT0FBTyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUMxQyxDQUFDOztBQUVGLEFBQU8sTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDdkQsQUFBTyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9ELEFBQU8sTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLEFBQU8sTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7OztBQUcxRSxBQUFPLE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxRQUFRLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQzs7QUFFbkYsQUFBTyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVoRixBQUFPLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLO0VBQ2hDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUM7RUFDSixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0VBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLElBQUksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ25DLElBQUksSUFBSSxDQUFDLENBQUM7R0FDWDs7O0VBR0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtFQUN0RCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUN4QixDQUFDOzs7QUFHRixBQUFPLE1BQU0sSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLO0VBQ3JDLElBQUk7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQztJQUM3QixPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQzVCLENBQUMsT0FBTyxLQUFLLEVBQUU7SUFDZCxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzNCO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO09BQ3ZDLENBQUMsSUFBSSxNQUFNLENBQUMsZ0JBQWdCO09BQzVCLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDOztBQUV4QyxBQUFPLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtJQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQUFBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7SUFDOUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDaEMsQUFBTyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7SUFDaEQsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLEFBQU8sTUFBTSxlQUFlLEdBQUcsSUFBSSxJQUFJQSxTQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUU1RSxBQUFPLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7O0FBRXJGLEFBQU8sTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksS0FBSztFQUMxRCxJQUFJO0lBQ0YsT0FBTyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0dBQzFCLENBQUMsT0FBTyxHQUFHLEVBQUU7SUFDWixJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7TUFDZixPQUFPLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLE1BQU0sS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDNUY7SUFDRCxNQUFNLEdBQUcsQ0FBQztHQUNYO0NBQ0YsQ0FBQztBQUNGLEFBT0E7QUFDQSxZQUFlO0VBQ2IsUUFBUTtFQUNSLFlBQVk7RUFDWixTQUFTO0VBQ1QsU0FBUztFQUNULFFBQVE7RUFDUixPQUFPO0VBQ1AsV0FBVztFQUNYLHVCQUF1QjtFQUN2QixxQkFBcUI7RUFDckIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixTQUFTO0VBQ1QsR0FBRztFQUNILFVBQVU7RUFDVixXQUFXO0VBQ1gsVUFBVTtFQUNWLFFBQVE7RUFDUixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLHdCQUF3QjtFQUN4QixLQUFLO0VBQ0wsV0FBVztFQUNYLFVBQVU7RUFDVixnQkFBZ0I7RUFDaEIsUUFBUTtFQUNSLE1BQU07RUFDTixDQUFDO0VBQ0QsRUFBRTtFQUNGLFlBQVk7RUFDWixjQUFjO0VBQ2QsUUFBUTtFQUNSLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIsT0FBTztFQUNQLHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsT0FBTztFQUNQLEdBQUc7RUFDSCxPQUFPO0VBQ1AsYUFBYTtFQUNiLFdBQVc7RUFDWCxPQUFPO0VBQ1AsZUFBZTtFQUNmLGVBQWU7RUFDZix3QkFBd0I7RUFDeEIsSUFBSTtFQUNKLFdBQVc7RUFDWCxJQUFJO0VBQ0osVUFBVTtFQUNWLE1BQU07RUFDTixVQUFVO0VBQ1YsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixRQUFRO0VBQ1IsTUFBTSxFQUFFLFlBQVk7RUFDcEIsTUFBTSxFQUFFLFlBQVk7RUFDcEIsZUFBZTtFQUNmLE9BQU87RUFDUCxPQUFPO0VBQ1AsUUFBUTtFQUNSLGlCQUFpQjtFQUNqQixLQUFLO0VBQ0wsS0FBSztDQUNOLENBQUM7O0FDclFLLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7O0FBRXpFLEFBQU8sTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQzs7QUFFL0UsQUFBTyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOztBQUVuRSxBQUFPLE1BQU0sWUFBWSxHQUFHLE9BQU8sSUFBSSxjQUFjLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtFQUNsRSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDcEIsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSxTQUFTLEdBQUcsY0FBYyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUM1RSxJQUFJO0lBQ0osZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDOztBQ1RwQyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztBQUM1QyxBQUFPLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDO0FBQzlDLEFBQU8sTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDO0FBQ3RDLEFBQU8sTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLEFBR0E7O0FBRUEsTUFBTSxpQkFBaUIsR0FBRyxPQUFPO0VBQy9CLE9BQU8sRUFBRSxLQUFLO0VBQ2QsWUFBWSxFQUFFLElBQUk7RUFDbEIsTUFBTSxFQUFFLElBQUk7Q0FDYixDQUFDLENBQUM7O0FBRUgsQUFBTyxNQUFNLGFBQWEsR0FBRyxLQUFLLElBQUlLLG1CQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFFdEUsQUFBTyxNQUFNLFVBQVUsR0FBRyxLQUFLLElBQUlDLGFBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRTFELEFBQU8sTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLO0VBQzdDLE1BQU0sT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7RUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQUM7O0VBRS9CLE1BQU0sY0FBYyxHQUFHLFdBQVc7SUFDaEMsTUFBTSxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQzFCLGFBQWE7R0FDZCxDQUFDOztFQUVGLE9BQU8sV0FBVztJQUNoQixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDN0IsVUFBVTtHQUNYLENBQUM7Q0FDSCxDQUFDOztBQUVGLEFBQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLO0VBQzFDLE1BQU0sV0FBVyxHQUFHQyxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDdEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7O0VBRXhDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQzs7RUFFMUQsTUFBTSxXQUFXLEdBQUcsV0FBVztJQUM3QixNQUFNRCxhQUFXLENBQUMsR0FBRyxDQUFDO0lBQ3RCLFVBQVU7R0FDWCxDQUFDOztFQUVGLE1BQU0sTUFBTSxHQUFHLFdBQVc7SUFDeEIsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQzFCLE9BQU87R0FDUixDQUFDOztFQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHSixhQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUMzQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtHQUNGOztFQUVELE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztFQUN4QixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVO01BQzdCSSxhQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztNQUN0QyxNQUFNLENBQUMsRUFBRSxDQUFDOztFQUVkLE9BQU8sTUFBTSxDQUFDO0NBQ2YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssS0FBSztFQUMzQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxDQUFDOztFQUVuQyxJQUFJO0lBQ0YsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQ25ELENBQUMsT0FBTyxHQUFHLEVBQUU7SUFDWixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7R0FDN0I7O0VBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsT0FBTyxNQUFNLENBQUM7O0VBRXhDLElBQUk7SUFDRixNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDMUMsQ0FBQyxPQUFPLEdBQUcsRUFBRTtJQUNaLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztHQUM3Qjs7RUFFRCxPQUFPLE1BQU0sQ0FBQztDQUNmLENBQUM7O0FDdEZLLE1BQU0sVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7O0FBRTNFLEFBQU8sTUFBTSxZQUFZLEdBQUc7RUFDMUIsUUFBUSxDQUFDLEtBQUssRUFBRSwyQkFBMkI7SUFDekMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN2QyxRQUFRLENBQUMsS0FBSyxFQUFFLHVDQUF1QztJQUNyRCxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO21CQUN0Qix3QkFBd0IsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ25FLFFBQVEsQ0FBQyxRQUFRLEVBQUUsMENBQTBDO0lBQzNELEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7bUJBQ3pCLHdCQUF3QixDQUFDLE1BQU0sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDdEUsUUFBUSxDQUFDLE1BQU0sRUFBRSwrQkFBK0I7SUFDOUMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN4QyxRQUFRLENBQUMsTUFBTSxFQUFFLCtDQUErQztJQUM5RCxLQUFLLElBQUlFLFNBQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO21CQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMzRSxRQUFRLENBQUMsV0FBVyxFQUFFLGlEQUFpRDtJQUNyRSxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztxQkFDaEIsS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsU0FBUyxDQUFDO0VBQzVELFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQywyQkFBMkIsRUFBRVAsTUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLEtBQUssSUFBSVEsVUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztDQUN4RCxDQUFDOztBQ2xCSyxNQUFNLHFCQUFxQixHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsR0FBRyxJQUFJLEtBQUs7RUFDdkUsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLElBQUksU0FBUyxFQUFFLEVBQUUsT0FBTyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUFFOztFQUVsSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsS0FBSztJQUNuRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRO2VBQ2YsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDaEMsQ0FBQyxXQUFXLENBQUMsT0FBTztlQUNyQixXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsV0FBVyxDQUFDLGVBQWU7ZUFDN0IsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7TUFDcEQsT0FBTyxTQUFTLENBQUM7S0FDbEI7O0lBRUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOztJQUV4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO01BQ3JCLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO01BQ2hDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO01BQy9CLFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO0tBQ3hDLENBQUMsQ0FBQzs7SUFFSCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRTtNQUM1QixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7SUFDRCxPQUFPLFNBQVMsQ0FBQztHQUNsQixDQUFDOztFQUVGLFlBQVksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLGdCQUFnQixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztFQUM5RSxPQUFPLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0NBQzdDLENBQUM7O0FBRUYsQUFBTyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRTNELEFBQU8sTUFBTSxjQUFjLEdBQUcsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFO0VBQ25FLHFCQUFxQjtFQUNyQixNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3JELENBQUMsQ0FBQzs7QUFFSCxBQUFPLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFO0VBQ3hFLHFCQUFxQjtFQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDcEQsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSx3QkFBd0IsR0FBRyxZQUFZLElBQUksYUFBYSxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7RUFDdkYscUJBQXFCO0VBQ3JCLElBQUksQ0FBQyxDQUFDLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDO3NCQUNaLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0NBQ25GLENBQUMsQ0FBQzs7QUFFSCxBQUFPLE1BQU0sbUJBQW1CLEdBQUcsaUJBQWlCLElBQUksYUFBYSxJQUFJLFVBQVU7O0VBRWpGLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0JDLFVBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7RUFFbEIsQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZDQSxVQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7O0VBRWpCLENBQUMsV0FBVztJQUNWLElBQUksSUFBSSxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDOztDQUVqRSxDQUFDLGFBQWEsQ0FBQyxDQUFDOztBQUVqQixBQUFPLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFO0VBQ2hFLHFCQUFxQjtFQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxPQUFPO3NCQUNiLGtCQUFrQixDQUFDLENBQUMsQ0FBQzt5QkFDbEIsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7Q0FDM0QsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRTtFQUMxRSxxQkFBcUI7RUFDckIsSUFBSSxDQUFDLENBQUMsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7dUJBQ1gsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7Q0FDekQsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLEtBQUs7RUFDbkUsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7RUFDbEUsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO01BQ3ZCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO01BQ25DLFNBQVMsQ0FBQztDQUNmLENBQUM7O0FBRUYsQUFBTyxNQUFNLCtCQUErQixHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksS0FBSztFQUM3RSxNQUFNLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztFQUN2RSxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7TUFDdkIsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztNQUM3QyxTQUFTLENBQUM7Q0FDZixDQUFDOztBQUVGLEFBQU8sTUFBTSxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxLQUFLLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUVqRyxBQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUU7RUFDdkYsUUFBUTtFQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDO0VBQ3BDLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Q0FDckIsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUs7RUFDbkMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFO0lBQ1osUUFBUTtJQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QixPQUFPO0dBQ1IsQ0FBQyxDQUFDO0NBQ0osQ0FBQzs7QUFFRixBQUFPLE1BQU0sZUFBZSxHQUFHLFdBQVcsSUFBSSxhQUFhLElBQUksbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFFcEksQUFBTyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsSUFBSSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFN0csQUFBTyxNQUFNLFNBQVMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFFdEcsQUFBTyxNQUFNLFVBQVUsR0FBRyxTQUFTLElBQUksUUFBUSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFbEcsQUFBTyxNQUFNLFdBQVcsR0FBRyxRQUFRLElBQUksU0FBUyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFcEYsQUFBTyxNQUFNLGVBQWUsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRTtFQUN2RCxRQUFRO0VBQ1IsSUFBSTtFQUNKLHFCQUFxQjtDQUN0QixDQUFDLENBQUM7O0FBRUgsQUFBTyxNQUFNLHFCQUFxQixHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDOztBQUU1RixBQUFPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUU7RUFDckUscUJBQXFCO0VBQ3JCLElBQUksQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQzt1QkFDQSxDQUFDLENBQUMsTUFBTSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQ25FLENBQUMsQ0FBQzs7QUFFSCxBQUFPLE1BQU0scUJBQXFCLEdBQUcsU0FBUyxJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUM7T0FDaEdELFVBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7QUFFeEQsQUFBTyxNQUFNLG1CQUFtQixHQUFHLFNBQVMsSUFBSSxVQUFVLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztBQUVsSCxBQUFPLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxLQUFLO0VBQ3hFLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUU7SUFDbEMscUJBQXFCO0lBQ3JCLE1BQU0sQ0FBQyxRQUFRLENBQUM7R0FDakIsQ0FBQyxDQUFDOztFQUVILElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzVCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRTtNQUNwQixNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDdkMsQ0FBQyxDQUFDO0dBQ0o7O0VBRUQsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDOUIsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO01BQ3BCLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7TUFDdkMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3ZDLENBQUMsQ0FBQztHQUNKOztFQUVELElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDL0IsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO01BQ3BCLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3RFLENBQUMsQ0FBQztHQUNKO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFO0VBQ3RFLHFCQUFxQjtFQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUM7Q0FDN0MsQ0FBQyxDQUFDOztBQUVILEFBQU8sTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUM1RSxBQUFPLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN0RSxBQUFPLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDM0UsQUFBTyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0FBQzFFLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7QUFDNUYsQUFBTyxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzRixBQUFPLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pFLEFBQU8sTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRSxBQUFPLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLFNBQVMsQ0FBQztBQUNqRyxBQUFPLE1BQU0sZUFBZSxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDOztBQUUvRixBQUFPLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVc7T0FDaEYsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztPQUN6RixNQUFNLEdBQUcsQ0FBQyxDQUFDOztBQUVsQixBQUFPLE1BQU0sNkJBQTZCLEdBQUcsU0FBUyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVc7T0FDdEYsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO09BQzNFLE1BQU0sR0FBRyxDQUFDLENBQUM7O0FBRWxCLGdCQUFlO0VBQ2IsZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLE9BQU87RUFDUCxxQkFBcUI7RUFDckIsTUFBTTtFQUNOLG9CQUFvQjtFQUNwQixZQUFZO0VBQ1osZUFBZTtFQUNmLHNCQUFzQjtFQUN0QixTQUFTO0VBQ1QsVUFBVTtFQUNWLFdBQVc7RUFDWCxlQUFlO0VBQ2YscUJBQXFCO0VBQ3JCLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIsbUJBQW1CO0VBQ25CLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFDdEIsUUFBUTtFQUNSLGtCQUFrQjtFQUNsQixPQUFPO0VBQ1AsZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxNQUFNO0VBQ04sb0JBQW9CO0VBQ3BCLGFBQWE7RUFDYixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLDRCQUE0QjtFQUM1Qiw2QkFBNkI7RUFDN0IscUJBQXFCO0NBQ3RCLENBQUM7O0FDbE9LLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLO0VBQ3hGLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDM0IsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7R0FDaEY7RUFDRCxPQUFPLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Q0FDekQsQ0FBQzs7QUFFRixBQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLEtBQUssQ0FBQyxLQUFLLEtBQUs7RUFDaEYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQy9CLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtJQUNsQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7R0FDckI7RUFDRCxPQUFPLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3hDLENBQUM7O0FBRUYsQUFBTyxNQUFNLFdBQVcsR0FBRyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDLEtBQUssS0FBSztFQUN6RSxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7TUFDNUUsU0FBUztNQUNULEtBQUssQ0FBQyxlQUFlLENBQUM7O0VBRTFCLE9BQU8sR0FBRyxDQUFDLHFCQUFxQixFQUFFLGVBQWUsQ0FBQztNQUM5QyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsRUFBRTtNQUN4QyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztDQUMxRSxDQUFDOztBQUVGLEFBQU8sTUFBTSxhQUFhLEdBQUcsaUJBQWlCLElBQUksS0FBSyxDQUFDO0VBQ3RELEtBQUssRUFBRUMsVUFBUTtFQUNmLElBQUksRUFBRUEsVUFBUSxDQUFDLElBQUksQ0FBQztDQUNyQixFQUFFLGlCQUFpQixDQUFDLENBQUM7O0FBRXRCLEFBQU8sTUFBTSx1QkFBdUIsR0FBRyxlQUFlLElBQUksT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sS0FBSztFQUMxRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3RDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztNQUNyRixDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO01BQzNDLEVBQUUsQ0FBQyxDQUFDOztFQUVSLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztFQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsRUFBRTtJQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0dBQ3ZDOztFQUVELE9BQU8sTUFBTSxDQUFDO0NBQ2YsQ0FBQzs7QUFFRixNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUV6RCxBQUFPLE1BQU1DLFVBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUMzRSxBQUFPLE1BQU0sWUFBWSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEUsQUFBTyxNQUFNLGFBQWEsR0FBRyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsTUFBTTtFQUNoSCxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7RUFDeEMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7RUFDdkQsY0FBYyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7RUFDdkQsUUFBUTtFQUNSLElBQUk7RUFDSixpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUM5RCxpQkFBaUIsRUFBRSxPQUFPO0VBQzFCLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLGVBQWUsQ0FBQztFQUNqRSxXQUFXO0VBQ1gsU0FBUyxFQUFFLEdBQUcsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTO01BQ2hELEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDeEIsZUFBZSxFQUFFLFNBQVMsQ0FBQyxPQUFPO0NBQ25DLENBQUMsQ0FBQzs7QUN6REgsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0VBQ3BDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0NBQ3hCLENBQUMsQ0FBQzs7QUFFSCxNQUFNLGNBQWMsR0FBRyxVQUFVO0VBQy9CLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQztFQUN6QixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7RUFDdkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUNoRCxDQUFDOztBQUVGLE1BQU0sT0FBTyxHQUFHO0VBQ2QsU0FBUyxFQUFFO0lBQ1QsWUFBWSxFQUFFLElBQUk7SUFDbEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNyRCxzQkFBc0IsRUFBRSxtRUFBbUU7SUFDM0YsS0FBSyxFQUFFLGNBQWM7R0FDdEI7RUFDRCxNQUFNLEVBQUU7SUFDTixZQUFZLEVBQUUsSUFBSTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3BGLHNCQUFzQixFQUFFLHFFQUFxRTtJQUM3RixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7R0FDZDtFQUNELHVCQUF1QixFQUFFO0lBQ3ZCLFlBQVksRUFBRSxLQUFLO0lBQ25CLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLHNCQUFzQixFQUFFLCtDQUErQztJQUN2RSxLQUFLLEVBQUUsWUFBWTtHQUNwQjtDQUNGLENBQUM7O0FBRUYsTUFBTSxlQUFlLEdBQUc7RUFDdEJBLFVBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTO0lBQ25HLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0VBQ3JFQSxVQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJOzhCQUNkLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxLQUFLOzhCQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7RUFDdEQsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7Q0FDbEUsQ0FBQzs7QUFFRixhQUFlLGdCQUFnQjtFQUM3QixRQUFRO0VBQ1IsY0FBYztFQUNkLGVBQWU7RUFDZixPQUFPO0VBQ1AsZUFBZTtFQUNmLE9BQU87RUFDUCxHQUFHLElBQUksR0FBRztDQUNYLENBQUM7O0FDbkRGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztFQUNsQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQztDQUN4QixDQUFDLENBQUM7O0FBRUgsTUFBTSxZQUFZLEdBQUcsVUFBVTtFQUM3QixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7RUFDMUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDO0VBQ3ZCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzlELENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ2hFLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztDQUM1QixDQUFDOztBQUVGLE1BQU1DLFNBQU8sR0FBRztFQUNkLFVBQVUsRUFBRTtJQUNWLFlBQVksRUFBRSxJQUFJO0lBQ2xCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLHNCQUFzQixFQUFFLHlCQUF5QjtJQUNqRCxLQUFLLEVBQUUsWUFBWTtHQUNwQjtDQUNGLENBQUM7O0FBRUYsTUFBTUMsaUJBQWUsR0FBRztFQUN0QkYsVUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSTtJQUNwRSxNQUFNLHNCQUFzQixDQUFDO0NBQ2hDLENBQUM7O0FBRUYsV0FBZSxnQkFBZ0I7RUFDN0IsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhO0VBQ25DQyxTQUFPLEVBQUVDLGlCQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO0NBQy9DLENBQUM7O0FDM0JGLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztFQUNwQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQztDQUN4QixDQUFDLENBQUM7O0FBRUgsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsS0FBSztFQUN2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUMxRCxDQUFDOztBQUVGLE1BQU0sY0FBYyxHQUFHLFVBQVU7RUFDL0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO0VBQ3pCLENBQUMsUUFBUSxFQUFFLHlCQUF5QixDQUFDO0VBQ3JDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQztFQUN2QixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7Q0FDNUIsQ0FBQzs7QUFFRixNQUFNRCxTQUFPLEdBQUc7RUFDZCxRQUFRLEVBQUU7SUFDUixZQUFZLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtJQUNyQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixzQkFBc0IsRUFBRSx5QkFBeUI7SUFDakQsS0FBSyxFQUFFLGNBQWM7R0FDdEI7RUFDRCxRQUFRLEVBQUU7SUFDUixZQUFZLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0I7SUFDekMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsc0JBQXNCLEVBQUUseUJBQXlCO0lBQ2pELEtBQUssRUFBRSxjQUFjO0dBQ3RCO0VBQ0QsYUFBYSxFQUFFO0lBQ2IsWUFBWSxFQUFFLENBQUM7SUFDZixPQUFPLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QyxzQkFBc0IsRUFBRSw0QkFBNEI7SUFDcEQsS0FBSyxFQUFFLGNBQWM7R0FDdEI7Q0FDRixDQUFDOztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEtBQUs7RUFDaEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMvQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ3hDLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUMvQixDQUFDOztBQUVGLE1BQU1DLGlCQUFlLEdBQUc7RUFDdEJGLFVBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVE7SUFDMUYsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUMvRkEsVUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUTtJQUMxRixDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDcEdBLFVBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztJQUN2RixDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Q0FDckcsQ0FBQzs7QUFFRixhQUFlLGdCQUFnQjtFQUM3QixRQUFRO0VBQ1IsY0FBYztFQUNkLGVBQWU7RUFDZkMsU0FBTztFQUNQQyxpQkFBZTtFQUNmLENBQUM7RUFDRCxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtDQUN0QixDQUFDOztBQzdERixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUM7RUFDbEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDdkIsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUU7Q0FDdEIsQ0FBQyxDQUFDOztBQUVILE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUV4RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxVQUFVO0VBQ3ZDLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQztFQUM1QixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7Q0FDNUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7QUFHZixNQUFNLFlBQVksR0FBRyxVQUFVO0VBQzdCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQztFQUN2QixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztFQUM3QixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7RUFDdkIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0NBQzVCLENBQUM7O0FBRUYsTUFBTUQsU0FBTyxHQUFHO0VBQ2QsUUFBUSxFQUFFO0lBQ1IsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUN0QyxPQUFPLEVBQUUsTUFBTTtJQUNmLHNCQUFzQixFQUFFLHNCQUFzQjtJQUM5QyxLQUFLLEVBQUUsWUFBWTtHQUNwQjtFQUNELFFBQVEsRUFBRTtJQUNSLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxPQUFPLEVBQUUsTUFBTTtJQUNmLHNCQUFzQixFQUFFLHNCQUFzQjtJQUM5QyxLQUFLLEVBQUUsWUFBWTtHQUNwQjtDQUNGLENBQUM7O0FBRUYsTUFBTUMsaUJBQWUsR0FBRztFQUN0QkYsVUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUTtJQUMxRixDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0VBQy9GQSxVQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRO0lBQzFGLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUNyRyxDQUFDOztBQUVGLGVBQWUsZ0JBQWdCO0VBQzdCLFVBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiQyxTQUFPO0VBQ1BDLGlCQUFlO0VBQ2YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDcEIsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDL0QsQ0FBQzs7QUNsREYsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUM7RUFDekMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7Q0FDdEIsQ0FBQyxDQUFDOztBQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLEVBQUU7RUFDbEMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2hDLGFBQWE7Q0FDZCxDQUFDOztBQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxVQUFVO0VBQ3RDLENBQUNiLFNBQU8sRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNsQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7Q0FDNUIsQ0FBQzs7QUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7QUFHMUMsTUFBTVksU0FBTyxHQUFHO0VBQ2QsU0FBUyxFQUFFO0lBQ1QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsT0FBTyxFQUFFLGFBQWE7SUFDdEIsc0JBQXNCLEVBQUUsNEJBQTRCO0lBQ3BELEtBQUssRUFBRSxjQUFjO0dBQ3RCO0VBQ0QsU0FBUyxFQUFFO0lBQ1QsWUFBWSxFQUFFLENBQUM7SUFDZixPQUFPLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QyxzQkFBc0IsRUFBRSw0QkFBNEI7SUFDcEQsS0FBSyxFQUFFLGNBQWM7R0FDdEI7Q0FDRixDQUFDOztBQUVGLE1BQU1DLGlCQUFlLEdBQUc7RUFDdEJGLFVBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTO0lBQ3hFLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7RUFDakVBLFVBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTO0lBQ3hFLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDdEUsQ0FBQzs7QUFFRixZQUFlLElBQUksSUFBSSxnQkFBZ0I7RUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDbkIsYUFBYSxDQUFDLElBQUksQ0FBQztFQUNuQixjQUFjLENBQUMsQUFBSSxDQUFDO0VBQ3BCQyxTQUFPO0VBQ1BDLGlCQUFlO0VBQ2YsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0VBQ2xCLElBQUksQ0FBQyxTQUFTO0NBQ2YsQ0FBQzs7QUM1Q0YsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7O0FBRTdDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0VBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0I7Q0FDMUIsQ0FBQyxDQUFDOztBQUVILE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztPQUMzQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7O0FBRTFCLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDO09BQ3JDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7O0FBRWhDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFJOztFQUU5QixJQUFJO0lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLGVBQWUsRUFBRTtNQUNsQixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QjtHQUNGO0VBQ0QsTUFBTSxDQUFDLEVBQUU7O0dBRVI7O0VBRUQsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDeEI7O0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksVUFBVTtFQUN2QyxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUM7RUFDaEMsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUM7RUFDOUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0VBQ2pELENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztDQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVMLE1BQU1ELFNBQU8sR0FBRztFQUNkLFlBQVksRUFBRTtJQUNaLFlBQVksRUFBRSxJQUFJO0lBQ2xCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsc0JBQXNCLEVBQUUsNEJBQTRCO0lBQ3BELEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQztHQUNkO0VBQ0QsWUFBWSxFQUFFO0lBQ1osWUFBWSxFQUFFLEVBQUU7SUFDaEIsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixzQkFBc0IsRUFBRSw0QkFBNEI7SUFDcEQsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO0dBQ2Q7RUFDRCxvQkFBb0IsRUFBRTtJQUNwQixZQUFZLEVBQUUsSUFBSTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7SUFDaEQsc0JBQXNCLEVBQUUsc0NBQXNDO0lBQzlELEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQztHQUNkO0NBQ0YsQ0FBQzs7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFckQsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxLQUFLLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO09BQzNFLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVwRCxNQUFNQyxpQkFBZSxHQUFHO0VBQ3RCRixVQUFRO0lBQ04scUJBQXFCO0lBQ3JCLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlGO0NBQ0YsQ0FBQzs7QUFFRixnQkFBZSxnQkFBZ0I7RUFDN0IsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEJDLFNBQU87RUFDUEMsaUJBQWU7RUFDZixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtFQUM5QixJQUFJLENBQUMsU0FBUztDQUNmLENBQUM7O0FDNUVGLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7O0FBRTlDLEFBQU8sTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLEtBQUs7RUFDM0MsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzlCLE9BQU8sRUFBRSxDQUFDLE1BQU0sSUFBSSxHQUFHO09BQ2xCLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7T0FDcEUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Q0FDaEQsQ0FBQzs7QUFFRixNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7QUFFMUQsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDO0VBQ2xDLE9BQU8sRUFBRSxXQUFXO0NBQ3JCLENBQUMsQ0FBQzs7QUFFSCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksVUFBVTtFQUNsQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUM7RUFDNUIsQ0FBQ0MsUUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7RUFDNUMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0NBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUwsTUFBTSxRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7RUFDdkMsUUFBUTtFQUNSLElBQUk7Q0FDTCxDQUFDLENBQUM7O0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNBLFFBQU0sQ0FBQyxDQUFDLENBQUM7T0FDNUJDLEtBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSUEsS0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUN4Q0MsVUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7T0FDaEJDLFVBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO09BQ3hCLGVBQWUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7O0FBRXZDLE1BQU1MLFNBQU8sR0FBRyxFQUFFLENBQUM7O0FBRW5CLE1BQU1DLGlCQUFlLEdBQUcsRUFBRSxDQUFDOztBQUUzQixXQUFlLGdCQUFnQjtFQUM3QixNQUFNO0VBQ04sWUFBWTtFQUNaLGFBQWE7RUFDYkQsU0FBTztFQUNQQyxpQkFBZTtFQUNmLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0VBQzdDLElBQUksQ0FBQyxTQUFTO0NBQ2YsQ0FBQzs7QUN0Q0YsTUFBTSxRQUFRLEdBQUcsTUFBTTtFQUNyQixNQUFNLFVBQVUsR0FBRztJQUNqQixNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUk7R0FDaEQsQ0FBQzs7RUFFRixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzNCLElBQUk7SUFDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7TUFDVCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7TUFDbEIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzNDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDO01BQzNDLE9BQU8sTUFBTSxDQUFDO0tBQ2YsQ0FBQztJQUNGLEtBQUssSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO0dBQzlCLENBQUMsQ0FBQzs7RUFFSCxPQUFPLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3RDLENBQUM7OztBQUdGLEFBQU8sTUFBTUssS0FBRyxHQUFHLFFBQVEsRUFBRSxDQUFDOztBQUU5QixBQUFPLE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLO0VBQ25DLElBQUksQ0FBQyxHQUFHLENBQUNBLEtBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFNLElBQUksZUFBZSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3hGLE9BQU9BLEtBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUN0QixDQUFDOztBQUVGLEFBQU8sTUFBTSxtQkFBbUIsR0FBRyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7O0FBRTVFLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTNFLEFBQU8sTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFbkcsQUFBTyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7QUFFOUIsQUFBTyxNQUFNQyxtQkFBaUIsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7O0FBRTNFLEFBQU8sTUFBTUMseUJBQXVCLEdBQUcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkosQUFBTyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssS0FBSztFQUNuQyxJQUFJSCxVQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxNQUFNLENBQUM7RUFDbkMsSUFBSUksV0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0VBQ2xDLElBQUlMLFVBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLE1BQU0sQ0FBQztFQUNuQyxJQUFJTSxRQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxRQUFRLENBQUM7RUFDbkMsSUFBSXRCLFNBQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN2RCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUM7VUFDWCxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztVQUNqQixHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sU0FBUyxDQUFDO0VBQzlDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztXQUNWLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1dBQzFCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7O0VBRXpDLE1BQU0sSUFBSSxlQUFlLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzlFLENBQUM7O0FDeEVGO0FBQ0EsQUFBTyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDOztBQUVsRCxBQUFPLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxBQUFPLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbEUsQUFBTyxNQUFNLFlBQVksR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RixBQUFPLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbEUsQUFBTyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUM3RSxBQUFPLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDOztBQUVsRixBQUFPLE1BQU0sZUFBZSxHQUFHO0VBQzdCLGFBQWEsRUFBRSxlQUFlO0VBQzlCLGFBQWEsRUFBRSxlQUFlO0VBQzlCLFdBQVcsRUFBRSxhQUFhO0VBQzFCLGFBQWEsRUFBRSxlQUFlO0VBQzlCLFVBQVUsRUFBRSxZQUFZO0VBQ3hCLFlBQVksRUFBRSxjQUFjO0VBQzVCLGlCQUFpQixFQUFFLG1CQUFtQjtFQUN0QyxlQUFlLEVBQUUsaUJBQWlCO0VBQ2xDLFdBQVcsRUFBRSxhQUFhO0VBQzFCLFlBQVksRUFBRSxjQUFjO0VBQzVCLHVCQUF1QixFQUFFLHlCQUF5QjtFQUNsRCxtQkFBbUIsRUFBRSx3QkFBd0I7RUFDN0MsbUJBQW1CLEVBQUUscUJBQXFCO0VBQzFDLFVBQVUsRUFBRSxZQUFZO0VBQ3hCLGtCQUFrQixFQUFFLG9CQUFvQjtFQUN4QyxjQUFjLEVBQUUsZ0JBQWdCO0VBQ2hDLHNCQUFzQixFQUFFLHdCQUF3QjtDQUNqRCxDQUFDOztBQUVGLEFBQU8sTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7RUFDckQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUN2RCxDQUFDLENBQUM7O0FBRUgsQUFBTyxNQUFNLHlCQUF5QixHQUFHLENBQUMsSUFBSSxLQUFLO0VBQ2pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM3QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7RUFDekIsT0FBTyxRQUFRLENBQUM7Q0FDakIsQ0FBQzs7QUFFRixBQUFPLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7RUFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUNWLEtBQUssS0FBSztJQUNSLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ1osSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7R0FDZixDQUFDO0NBQ0gsQ0FBQyxDQUFDOztBQ3hDSSxNQUFNLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxLQUFLLGNBQWM7RUFDaEYsR0FBRztFQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWTtFQUMzQixnQkFBZ0I7RUFDaEIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO0VBQy9CLGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVc7Q0FDaEQsQ0FBQzs7QUFFRixBQUFPLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxXQUFXLEtBQUs7RUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDYixPQUFPLEtBQUssQ0FBQztHQUNkOztFQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUU7SUFDbkMsTUFBTTtJQUNOUyxVQUFRLENBQUMsY0FBYyxDQUFDO0dBQ3pCLENBQUMsQ0FBQzs7RUFFSCxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ2QsT0FBTyxLQUFLLENBQUM7R0FDZDs7RUFFRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxLQUFLO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDbEMsSUFBSTtRQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztVQUNoQyxxQkFBcUI7VUFDckIsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXO1NBQzNCLENBQUMsT0FBTyxFQUFFO1VBQ1QsV0FBVyxDQUFDOztJQUVsQixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxjQUFjOztVQUVsQyxTQUFTLENBQUMsV0FBVyxDQUFDO2VBQ2pCLE9BQU8sS0FBSyxRQUFRLENBQUMsT0FBTztTQUNsQyxDQUFDO0dBQ1AsQ0FBQzs7RUFFRixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUM7R0FDMUIsQ0FBQyxDQUFDO0NBQ0osQ0FBQzs7QUM1Q0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLO0VBQzlCLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEtBQUssV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7RUFDOUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxHQUFHLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUM7RUFDeEUsTUFBTSxFQUFFLElBQUk7RUFDWixHQUFHLEVBQUUsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0NBQ3BDLENBQUMsQ0FBQzs7QUFFSCxNQUFNLGdCQUFnQixHQUFHLElBQUksS0FBSztFQUNoQyxHQUFHLEVBQUUsV0FBVyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7RUFDMUQsWUFBWSxFQUFFLEdBQUcsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0VBQzVDLE1BQU0sRUFBRSxLQUFLO0VBQ2IsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUN0QixDQUFDLENBQUM7O0FBRUgsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFFbkUsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFFbkUsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFFbkUsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7QUFFL0QsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUV6RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7O0FBRWpFLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7QUFFbkUsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7QUFFN0QsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUVuRSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDOztBQUU3RSxNQUFNLHFCQUFxQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDOztBQUV4RixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOztBQUVoRixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOztBQUVoRixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7O0FBRS9ELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7O0FBRTlFLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLENBQUM7O0FBRXJGLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7O0FBRXJFLEFBQU8sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQzs7QUFFM0MsQUFBTyxNQUFNLFVBQVUsR0FBRztFQUN4QixZQUFZO0VBQ1osWUFBWTtFQUNaLFlBQVk7RUFDWixVQUFVO0VBQ1YsY0FBYztFQUNkLFVBQVU7RUFDVixXQUFXO0VBQ1gsU0FBUztFQUNULHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLFNBQVM7RUFDVCxnQkFBZ0I7RUFDaEIsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixhQUFhO0VBQ2IsbUJBQW1CO0NBQ3BCLENBQUM7O0FDOURLLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxjQUFjLEtBQUs7RUFDOUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLEFBQWdCLENBQUMsQ0FBQztFQUNyRSxPQUFPLGNBQWM7SUFDbkIsR0FBRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTTtJQUN2QixVQUFVLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUQsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFO0lBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYTtHQUNuQyxDQUFDO0NBQ0gsQ0FBQzs7QUFFRixNQUFNLE9BQU8sR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQzs7QUFFNUcsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxLQUFLO0VBQzVDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7RUFDdkMsT0FBTyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDL0QsQ0FBQzs7QUFFRixBQUFPLE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYztFQUMxRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7QUFFbEUsQUFBTyxNQUFNLGVBQWUsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxLQUFLO0VBQzNFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO0lBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDYixTQUFTLENBQUMsYUFBYSxDQUFDO0dBQ3pCLENBQUMsQ0FBQzs7RUFFSCxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDakQsTUFBTSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUMvQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztFQUNwQixNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDOUIsT0FBTyxNQUFNLENBQUM7Q0FDZixDQUFDOztBQzlCSyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDOztBQUVwRSxBQUFPLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVO0VBQ2hELEdBQUc7RUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUk7RUFDckIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO0VBQ3ZDLEVBQUUsR0FBRyxFQUFFO0VBQ1AsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ2hCLENBQUM7O0FBRUYsQUFBTyxNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxHQUFHLEVBQUUsS0FBSztFQUN0RCxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ25CLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzRCxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUTtJQUM3QyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7R0FDdkIsQ0FBQzs7RUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtJQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2IsU0FBUyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0dBQzlDLENBQUMsQ0FBQzs7RUFFSCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDOztFQUV2QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtJQUN0QyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVzt1QkFDZixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQzt1QkFDMUMsQ0FBQ0EsVUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEUsR0FBRyxDQUFDLENBQUMsS0FBSztNQUNSLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztNQUMxRCxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7TUFDekQsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7O0VBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN6QixNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHO01BQ2xDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztLQUNoQyxDQUFDOztJQUVGLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO01BQzVCLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVM7UUFDdEMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsR0FBRyxDQUFDLEtBQUs7T0FDVixDQUFDO0tBQ0g7R0FDRjs7RUFFRCxZQUFZLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7RUFDdEQsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7RUFDM0IsWUFBWSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7RUFDdkIsWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDM0MsWUFBWSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0VBQ3BDLE9BQU8sWUFBWSxDQUFDO0NBQ3JCLENBQUM7O0FDbkVGOzs7QUFHQSxBQUFPLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxJQUFJOztJQUUzQyxJQUFJLFFBQVEsQ0FBQzs7SUFFYixNQUFNLGFBQWEsR0FBRyxHQUFHLElBQUk7UUFDekIsUUFBUSxHQUFHLEdBQUcsQ0FBQztLQUNsQixDQUFDOztJQUVGLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDOztJQUVsQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSzs7TUFFckIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUs7UUFDdEMsSUFBSSxRQUFRLEVBQUU7VUFDWixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUM7VUFDckIsUUFBUSxHQUFHLFNBQVMsQ0FBQztVQUNyQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDbkI7O1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1VBQ3pELE9BQU8sT0FBTyxFQUFFLENBQUM7U0FDbEI7O1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBTTtVQUM1QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztVQUVoQyxJQUFJLEtBQUssRUFBRTtZQUNULGVBQWUsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztXQUNoQjtVQUNGOztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU07VUFDekIsZUFBZSxFQUFFLENBQUM7VUFDbEIsT0FBTyxFQUFFLENBQUM7VUFDWDs7UUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNO1VBQ3ZCLGVBQWUsRUFBRSxDQUFDO1VBQ2xCLE9BQU8sRUFBRSxDQUFDO1VBQ1g7O1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUs7VUFDNUIsUUFBUSxHQUFHLFNBQVMsQ0FBQztVQUNyQixlQUFlLEVBQUUsQ0FBQztVQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7VUFDYjs7UUFFRCxNQUFNLGVBQWUsR0FBRyxNQUFNO1VBQzVCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1VBQzdDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1VBQzdDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1VBQ3pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1VBQ3BEOztRQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDOztRQUV2QyxlQUFlLEVBQUUsQ0FBQztPQUNuQixDQUFDLENBQUM7TUFDSjs7O0lBR0QsTUFBTSxPQUFPLEdBQUcsTUFBTTtNQUNwQixJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksYUFBYSxFQUFFO1VBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1VBQ3hDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQjtPQUNGO0tBQ0YsQ0FBQzs7SUFFRixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztHQUNoQzs7QUNuRUksTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxLQUFLO0VBQ2hFLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSztJQUMxQyxNQUFNLGFBQWEsR0FBR0gsYUFBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRCxJQUFJO01BQ0YsT0FBTyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ2xDLENBQUMsTUFBTSxDQUFDLEVBQUU7TUFDVCxNQUFNLFlBQVksR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBQztNQUNwRyxDQUFDLENBQUMsT0FBTyxHQUFHLHNDQUFzQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO01BQzlFLE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7R0FDRixDQUFDOztFQUVGLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7TUFDdEQsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO01BQ3hDLFdBQVcsQ0FBQzs7RUFFaEIsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0NBQ3JDLENBQUM7O0FBRUYsQUFBTyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJLEtBQUs7RUFDaEcsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztFQUUvRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFdBQVc7TUFDL0IsSUFBSTtNQUNKLGdCQUFnQjtNQUNoQixpQkFBaUI7UUFDZixTQUFTO1FBQ1QsUUFBUTtRQUNSLFdBQVc7T0FDWjtLQUNGLENBQUM7O0VBRUosTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTO01BQzNCLElBQUk7TUFDSixnQkFBZ0I7TUFDaEIsaUJBQWlCO1FBQ2YsU0FBUztRQUNULFFBQVE7UUFDUixTQUFTO09BQ1Y7S0FDRixDQUFDOztFQUVKLE9BQU8sQ0FBQyxDQUFDLE1BQU0sV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUU7SUFDbkQsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLGNBQWM7d0JBQ3BDLFNBQVMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQzdELEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7R0FDeEMsQ0FBQyxDQUFDO0NBQ0osQ0FBQzs7QUFFRixBQUFPLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsS0FBSztFQUNwRixNQUFNLEdBQUcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDL0MsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7RUFDbkQsSUFBSSxDQUFDRyxVQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQixNQUFNLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0dBQzNDO0NBQ0YsQ0FBQzs7QUFFRixBQUFPLE1BQU0sV0FBVyxHQUFHLE9BQU8sU0FBUyxFQUFFLFFBQVEsS0FBSztFQUN4RCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDN0MsSUFBSTtJQUNGLE9BQU8sTUFBTSxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0dBQzlDLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDVixNQUFNLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sRUFBRSxDQUFDO0dBQ1g7Q0FDRixDQUFDOztBQUVGLEFBQU8sTUFBTSxhQUFhLEdBQUcsT0FBTyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxNQUFNLFNBQVMsQ0FBQyxVQUFVO0VBQzlGLGNBQWMsQ0FBQyxRQUFRLENBQUM7RUFDeEIsUUFBUTtDQUNULENBQUM7O0FBRUYsQUFBTyxNQUFNLGVBQWUsR0FBRyxPQUFPLEdBQUcsRUFBRSxRQUFRLEtBQUssTUFBTSxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBRWpHLEFBQU8sTUFBTSxjQUFjLEdBQUcsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7O0FBRTdFLEFBQU8sTUFBTSx3QkFBd0IsR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNuRixBQUVBO0FBQ0EsQUFBTyxNQUFNLGVBQWUsR0FBRyxPQUFPLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxLQUFLO0VBQ3pFLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3pCLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsUUFBUSxDQUFDLElBQUk7TUFDWCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7S0FDakMsQ0FBQztJQUNGLE1BQU0sYUFBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDcEQ7RUFDRCxNQUFNLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQ2hELENBQUM7O0FBRUYsQUFBTyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFO0VBQzVDLFFBQVE7RUFDUixJQUFJO0NBQ0wsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7O0FBRXZCLEFBQU8sTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLEtBQUs7RUFDdkUsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7O0VBRWxFLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CO0lBQy9DLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDNUIsWUFBWTtHQUNiLENBQUM7O0VBRUYsT0FBTyxPQUFPO0lBQ1osb0JBQW9CO0lBQ3BCLFNBQVMsQ0FBQyxJQUFJO0dBQ2YsQ0FBQztDQUNILENBQUM7O0FDakhLLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsS0FBSztFQUN0RCxNQUFNLFdBQVcsR0FBRyw2QkFBNkIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7RUFDeEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRTtJQUNuQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztHQUN0RCxDQUFDLENBQUM7OztFQUdILE1BQU0sTUFBTSxHQUFHO0lBQ2IsT0FBTyxFQUFFUyxLQUFHLENBQUMsTUFBTTtJQUNuQixHQUFHLEVBQUVBLEtBQUcsQ0FBQyxNQUFNO0dBQ2hCLENBQUM7O0VBRUYsTUFBTSxTQUFTLEdBQUdILEtBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM5QixNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLEtBQUs7SUFDckMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUU7O0lBRXRELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtNQUN4QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDbEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHRyxLQUFHLENBQUMsTUFBTSxDQUFDO09BQ2hDO0tBQ0YsTUFBTTtNQUNMLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUM7S0FDOUI7R0FDRixDQUFDOztFQUVGLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxFQUFFO0lBQ3JDLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxFQUFFO01BQ3pCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0I7R0FDRjs7O0VBR0QsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2ZLLE1BQUk7SUFDSixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRUwsS0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE9BQU87R0FDUixDQUFDLENBQUM7Q0FDSixDQUFDOztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxJQUFJLGVBQWU7RUFDdEQsVUFBVTtFQUNWLG1CQUFtQjtFQUNuQixVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQzlCLENBQUM7O0FDekRGLGVBQWUsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTTtZQUMxQyxPQUFPLElBQUksS0FBSyxXQUFXLEdBQUcsSUFBSTtZQUNsQyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLEVBQUUsRUFBRTs7QUNEekQsSUFBSSxNQUFNLEdBQUcsR0FBRTtBQUNmLElBQUksU0FBUyxHQUFHLEdBQUU7QUFDbEIsSUFBSSxHQUFHLEdBQUcsT0FBTyxVQUFVLEtBQUssV0FBVyxHQUFHLFVBQVUsR0FBRyxNQUFLO0FBQ2hFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztBQUNuQixTQUFTLElBQUksSUFBSTtFQUNmLE1BQU0sR0FBRyxJQUFJLENBQUM7RUFDZCxJQUFJLElBQUksR0FBRyxtRUFBa0U7RUFDN0UsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMvQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBQztJQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUM7R0FDbEM7O0VBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFO0VBQ2pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRTtDQUNsQzs7QUFFRCxBQUFPLFNBQVMsV0FBVyxFQUFFLEdBQUcsRUFBRTtFQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ1gsSUFBSSxFQUFFLENBQUM7R0FDUjtFQUNELElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFHO0VBQ25DLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFNOztFQUVwQixJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQztHQUNsRTs7Ozs7OztFQU9ELFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUM7OztFQUd0RSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFDOzs7RUFHekMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFHOztFQUVwQyxJQUFJLENBQUMsR0FBRyxFQUFDOztFQUVULEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ3hDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztJQUNsSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksS0FBSTtJQUM3QixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSTtJQUM1QixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSTtHQUN0Qjs7RUFFRCxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7SUFDdEIsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDO0lBQ25GLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFJO0dBQ3RCLE1BQU0sSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFO0lBQzdCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQztJQUM5SCxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMs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RyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztFQUNoRSxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUM7RUFDL0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUM7RUFDckIsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUM7O0VBRTNELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQzs7RUFFdkIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtJQUN0QyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDO0lBQ3hCLENBQUMsR0FBRyxLQUFJO0dBQ1QsTUFBTTtJQUNMLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBQztJQUMxQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtNQUNyQyxDQUFDLEdBQUU7TUFDSCxDQUFDLElBQUksRUFBQztLQUNQO0lBQ0QsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsRUFBRTtNQUNsQixLQUFLLElBQUksRUFBRSxHQUFHLEVBQUM7S0FDaEIsTUFBTTtNQUNMLEtBQUssSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBQztLQUNyQztJQUNELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7TUFDbEIsQ0FBQyxHQUFFO01BQ0gsQ0FBQyxJQUFJLEVBQUM7S0FDUDs7SUFFRCxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxFQUFFO01BQ3JCLENBQUMsR0FBRyxFQUFDO01BQ0wsQ0FBQyxHQUFHLEtBQUk7S0FDVCxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEVBQUU7TUFDekIsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFDO01BQ3ZDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBSztLQUNkLE1BQU07TUFDTCxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUM7TUFDdEQsQ0FBQyxHQUFHLEVBQUM7S0FDTjtHQUNGOztFQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTs7RUFFaEYsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFDO0VBQ25CLElBQUksSUFBSSxLQUFJO0VBQ1osT0FBTyxJQUFJLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFOztFQUUvRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBRztDQUNsQzs7QUNwRkQsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFFM0IsY0FBZSxLQUFLLENBQUMsT0FBTyxJQUFJLFVBQVUsR0FBRyxFQUFFO0VBQzdDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztDQUMvQyxDQUFDOztBQ1NLLElBQUksaUJBQWlCLEdBQUcsR0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQmpDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBR00sUUFBTSxDQUFDLG1CQUFtQixLQUFLLFNBQVM7SUFDakVBLFFBQU0sQ0FBQyxtQkFBbUI7SUFDMUIsS0FBSTs7QUF3QlIsU0FBUyxVQUFVLElBQUk7RUFDckIsT0FBTyxNQUFNLENBQUMsbUJBQW1CO01BQzdCLFVBQVU7TUFDVixVQUFVO0NBQ2Y7O0FBRUQsU0FBUyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtFQUNuQyxJQUFJLFVBQVUsRUFBRSxHQUFHLE1BQU0sRUFBRTtJQUN6QixNQUFNLElBQUksVUFBVSxDQUFDLDRCQUE0QixDQUFDO0dBQ25EO0VBQ0QsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUU7O0lBRTlCLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUM7SUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBUztHQUNsQyxNQUFNOztJQUVMLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtNQUNqQixJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFDO0tBQzFCO0lBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFNO0dBQ3JCOztFQUVELE9BQU8sSUFBSTtDQUNaOzs7Ozs7Ozs7Ozs7QUFZRCxBQUFPLFNBQVMsTUFBTSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7RUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLElBQUksWUFBWSxNQUFNLENBQUMsRUFBRTtJQUM1RCxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7R0FDakQ7OztFQUdELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0lBQzNCLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUU7TUFDeEMsTUFBTSxJQUFJLEtBQUs7UUFDYixtRUFBbUU7T0FDcEU7S0FDRjtJQUNELE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7R0FDOUI7RUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUNqRDs7QUFFRCxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUk7OztBQUd0QixNQUFNLENBQUMsUUFBUSxHQUFHLFVBQVUsR0FBRyxFQUFFO0VBQy9CLEdBQUcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVM7RUFDaEMsT0FBTyxHQUFHO0VBQ1g7O0FBRUQsU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7RUFDcEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDN0IsTUFBTSxJQUFJLFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQztHQUM3RDs7RUFFRCxJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO0lBQ3RFLE9BQU8sZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0dBQzlEOztFQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzdCLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7R0FDakQ7O0VBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztDQUMvQjs7Ozs7Ozs7OztBQVVELE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFO0VBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0VBQ25EOztBQUVELElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFO0VBQzlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFTO0VBQ2pELE1BQU0sQ0FBQyxTQUFTLEdBQUcsV0FBVTtDQVM5Qjs7QUFFRCxTQUFTLFVBQVUsRUFBRSxJQUFJLEVBQUU7RUFDekIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7SUFDNUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQztHQUN4RCxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtJQUNuQixNQUFNLElBQUksVUFBVSxDQUFDLHNDQUFzQyxDQUFDO0dBQzdEO0NBQ0Y7O0FBRUQsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0VBQzFDLFVBQVUsQ0FBQyxJQUFJLEVBQUM7RUFDaEIsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO0lBQ2IsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztHQUNoQztFQUNELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTs7OztJQUl0QixPQUFPLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDL0IsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztRQUM3QyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7R0FDeEM7RUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0NBQ2hDOzs7Ozs7QUFNRCxNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7RUFDN0MsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0VBQ3pDOztBQUVELFNBQVMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7RUFDaEMsVUFBVSxDQUFDLElBQUksRUFBQztFQUNoQixJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDO0VBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7SUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRTtNQUM3QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQztLQUNaO0dBQ0Y7RUFDRCxPQUFPLElBQUk7Q0FDWjs7Ozs7QUFLRCxNQUFNLENBQUMsV0FBVyxHQUFHLFVBQVUsSUFBSSxFQUFFO0VBQ25DLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7RUFDL0I7Ozs7QUFJRCxNQUFNLENBQUMsZUFBZSxHQUFHLFVBQVUsSUFBSSxFQUFFO0VBQ3ZDLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7RUFDL0I7O0FBRUQsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDM0MsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtJQUNuRCxRQUFRLEdBQUcsT0FBTTtHQUNsQjs7RUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNoQyxNQUFNLElBQUksU0FBUyxDQUFDLDRDQUE0QyxDQUFDO0dBQ2xFOztFQUVELElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBQztFQUM3QyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUM7O0VBRWpDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBQzs7RUFFekMsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFOzs7O0lBSXJCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUM7R0FDN0I7O0VBRUQsT0FBTyxJQUFJO0NBQ1o7O0FBRUQsU0FBUyxhQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtFQUNuQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDO0VBQzdELElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQztFQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDbEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFHO0dBQ3pCO0VBQ0QsT0FBTyxJQUFJO0NBQ1o7O0FBRUQsU0FBUyxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO0VBQ3pELEtBQUssQ0FBQyxXQUFVOztFQUVoQixJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUU7SUFDbkQsTUFBTSxJQUFJLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQztHQUNwRDs7RUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRCxNQUFNLElBQUksVUFBVSxDQUFDLDZCQUE2QixDQUFDO0dBQ3BEOztFQUVELElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0lBQ3BELEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUM7R0FDOUIsTUFBTSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7SUFDL0IsS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUM7R0FDMUMsTUFBTTtJQUNMLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQztHQUNsRDs7RUFFRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTs7SUFFOUIsSUFBSSxHQUFHLE1BQUs7SUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFTO0dBQ2xDLE1BQU07O0lBRUwsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFDO0dBQ2xDO0VBQ0QsT0FBTyxJQUFJO0NBQ1o7O0FBRUQsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtFQUM5QixJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3pCLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQztJQUNqQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUM7O0lBRTlCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDckIsT0FBTyxJQUFJO0tBQ1o7O0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUM7SUFDekIsT0FBTyxJQUFJO0dBQ1o7O0VBRUQsSUFBSSxHQUFHLEVBQUU7SUFDUCxJQUFJLENBQUMsT0FBTyxXQUFXLEtBQUssV0FBVztRQUNuQyxHQUFHLENBQUMsTUFBTSxZQUFZLFdBQVcsS0FBSyxRQUFRLElBQUksR0FBRyxFQUFFO01BQ3pELElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZELE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7T0FDN0I7TUFDRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0tBQ2hDOztJQUVELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtNQUM5QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQztLQUNyQztHQUNGOztFQUVELE1BQU0sSUFBSSxTQUFTLENBQUMsb0ZBQW9GLENBQUM7Q0FDMUc7O0FBRUQsU0FBUyxPQUFPLEVBQUUsTUFBTSxFQUFFOzs7RUFHeEIsSUFBSSxNQUFNLElBQUksVUFBVSxFQUFFLEVBQUU7SUFDMUIsTUFBTSxJQUFJLFVBQVUsQ0FBQyxpREFBaUQ7eUJBQ2pELFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0dBQ3hFO0VBQ0QsT0FBTyxNQUFNLEdBQUcsQ0FBQztDQUNsQjtBQVFELE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLFNBQVMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFO0VBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztDQUNwQzs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7RUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQztHQUNqRDs7RUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDOztFQUVyQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTTtFQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTTs7RUFFaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDbEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2pCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDO01BQ1IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7TUFDUixLQUFLO0tBQ047R0FDRjs7RUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztFQUNuQixPQUFPLENBQUM7RUFDVDs7QUFFRCxNQUFNLENBQUMsVUFBVSxHQUFHLFNBQVMsVUFBVSxFQUFFLFFBQVEsRUFBRTtFQUNqRCxRQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDcEMsS0FBSyxLQUFLLENBQUM7SUFDWCxLQUFLLE1BQU0sQ0FBQztJQUNaLEtBQUssT0FBTyxDQUFDO0lBQ2IsS0FBSyxPQUFPLENBQUM7SUFDYixLQUFLLFFBQVEsQ0FBQztJQUNkLEtBQUssUUFBUSxDQUFDO0lBQ2QsS0FBSyxRQUFRLENBQUM7SUFDZCxLQUFLLE1BQU0sQ0FBQztJQUNaLEtBQUssT0FBTyxDQUFDO0lBQ2IsS0FBSyxTQUFTLENBQUM7SUFDZixLQUFLLFVBQVU7TUFDYixPQUFPLElBQUk7SUFDYjtNQUNFLE9BQU8sS0FBSztHQUNmO0VBQ0Y7O0FBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0VBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDbEIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw2Q0FBNkMsQ0FBQztHQUNuRTs7RUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQ3JCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7R0FDdkI7O0VBRUQsSUFBSSxFQUFDO0VBQ0wsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0lBQ3hCLE1BQU0sR0FBRyxFQUFDO0lBQ1YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO01BQ2hDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTTtLQUN6QjtHQUNGOztFQUVELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFDO0VBQ3ZDLElBQUksR0FBRyxHQUFHLEVBQUM7RUFDWCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDaEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBQztJQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw2Q0FBNkMsQ0FBQztLQUNuRTtJQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQztJQUNyQixHQUFHLElBQUksR0FBRyxDQUFDLE9BQU07R0FDbEI7RUFDRCxPQUFPLE1BQU07RUFDZDs7QUFFRCxTQUFTLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3JDLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDNUIsT0FBTyxNQUFNLENBQUMsTUFBTTtHQUNyQjtFQUNELElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sS0FBSyxVQUFVO09BQzdFLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxZQUFZLFdBQVcsQ0FBQyxFQUFFO0lBQ2pFLE9BQU8sTUFBTSxDQUFDLFVBQVU7R0FDekI7RUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtJQUM5QixNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU07R0FDckI7O0VBRUQsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU07RUFDdkIsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQzs7O0VBR3ZCLElBQUksV0FBVyxHQUFHLE1BQUs7RUFDdkIsU0FBUztJQUNQLFFBQVEsUUFBUTtNQUNkLEtBQUssT0FBTyxDQUFDO01BQ2IsS0FBSyxRQUFRLENBQUM7TUFDZCxLQUFLLFFBQVE7UUFDWCxPQUFPLEdBQUc7TUFDWixLQUFLLE1BQU0sQ0FBQztNQUNaLEtBQUssT0FBTyxDQUFDO01BQ2IsS0FBSyxTQUFTO1FBQ1osT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTTtNQUNuQyxLQUFLLE1BQU0sQ0FBQztNQUNaLEtBQUssT0FBTyxDQUFDO01BQ2IsS0FBSyxTQUFTLENBQUM7TUFDZixLQUFLLFVBQVU7UUFDYixPQUFPLEdBQUcsR0FBRyxDQUFDO01BQ2hCLEtBQUssS0FBSztRQUNSLE9BQU8sR0FBRyxLQUFLLENBQUM7TUFDbEIsS0FBSyxRQUFRO1FBQ1gsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTTtNQUNyQztRQUNFLElBQUksV0FBVyxFQUFFLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU07UUFDbEQsUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxXQUFXLEdBQUU7UUFDeEMsV0FBVyxHQUFHLEtBQUk7S0FDckI7R0FDRjtDQUNGO0FBQ0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxXQUFVOztBQUU5QixTQUFTLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtFQUMzQyxJQUFJLFdBQVcsR0FBRyxNQUFLOzs7Ozs7Ozs7RUFTdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7SUFDcEMsS0FBSyxHQUFHLEVBQUM7R0FDVjs7O0VBR0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUN2QixPQUFPLEVBQUU7R0FDVjs7RUFFRCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7SUFDMUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFNO0dBQ2xCOztFQUVELElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtJQUNaLE9BQU8sRUFBRTtHQUNWOzs7RUFHRCxHQUFHLE1BQU0sRUFBQztFQUNWLEtBQUssTUFBTSxFQUFDOztFQUVaLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRTtJQUNoQixPQUFPLEVBQUU7R0FDVjs7RUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsR0FBRyxPQUFNOztFQUVoQyxPQUFPLElBQUksRUFBRTtJQUNYLFFBQVEsUUFBUTtNQUNkLEtBQUssS0FBSztRQUNSLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDOztNQUVuQyxLQUFLLE1BQU0sQ0FBQztNQUNaLEtBQUssT0FBTztRQUNWLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDOztNQUVwQyxLQUFLLE9BQU87UUFDVixPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQzs7TUFFckMsS0FBSyxRQUFRLENBQUM7TUFDZCxLQUFLLFFBQVE7UUFDWCxPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQzs7TUFFdEMsS0FBSyxRQUFRO1FBQ1gsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7O01BRXRDLEtBQUssTUFBTSxDQUFDO01BQ1osS0FBSyxPQUFPLENBQUM7TUFDYixLQUFLLFNBQVMsQ0FBQztNQUNmLEtBQUssVUFBVTtRQUNiLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDOztNQUV2QztRQUNFLElBQUksV0FBVyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1FBQ3JFLFFBQVEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsV0FBVyxHQUFFO1FBQ3hDLFdBQVcsR0FBRyxLQUFJO0tBQ3JCO0dBQ0Y7Q0FDRjs7OztBQUlELE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEtBQUk7O0FBRWpDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0VBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7RUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQztFQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDO0NBQ1Q7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxNQUFNLElBQUk7RUFDM0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU07RUFDckIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNqQixNQUFNLElBQUksVUFBVSxDQUFDLDJDQUEyQyxDQUFDO0dBQ2xFO0VBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUM7R0FDckI7RUFDRCxPQUFPLElBQUk7RUFDWjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLE1BQU0sSUFBSTtFQUMzQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTTtFQUNyQixJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ2pCLE1BQU0sSUFBSSxVQUFVLENBQUMsMkNBQTJDLENBQUM7R0FDbEU7RUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDL0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztJQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztHQUN6QjtFQUNELE9BQU8sSUFBSTtFQUNaOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxJQUFJO0VBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFNO0VBQ3JCLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDakIsTUFBTSxJQUFJLFVBQVUsQ0FBQywyQ0FBMkMsQ0FBQztHQUNsRTtFQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDO0lBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDO0lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDO0lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDO0dBQ3pCO0VBQ0QsT0FBTyxJQUFJO0VBQ1o7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLElBQUk7RUFDL0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDO0VBQzVCLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUU7RUFDM0IsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztFQUM3RCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUMzQzs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLE1BQU0sRUFBRSxDQUFDLEVBQUU7RUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsMkJBQTJCLENBQUM7RUFDMUUsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUMzQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7RUFDckM7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLElBQUk7RUFDN0MsSUFBSSxHQUFHLEdBQUcsR0FBRTtFQUNaLElBQUksR0FBRyxHQUFHLGtCQUFpQjtFQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ25CLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUM7SUFDM0QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksUUFBTztHQUN0QztFQUNELE9BQU8sVUFBVSxHQUFHLEdBQUcsR0FBRyxHQUFHO0VBQzlCOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7RUFDbkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzdCLE1BQU0sSUFBSSxTQUFTLENBQUMsMkJBQTJCLENBQUM7R0FDakQ7O0VBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO0lBQ3ZCLEtBQUssR0FBRyxFQUFDO0dBQ1Y7RUFDRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7SUFDckIsR0FBRyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUM7R0FDakM7RUFDRCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7SUFDM0IsU0FBUyxHQUFHLEVBQUM7R0FDZDtFQUNELElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtJQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU07R0FDdEI7O0VBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7SUFDOUUsTUFBTSxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztHQUMzQzs7RUFFRCxJQUFJLFNBQVMsSUFBSSxPQUFPLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtJQUN4QyxPQUFPLENBQUM7R0FDVDtFQUNELElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRTtJQUN4QixPQUFPLENBQUMsQ0FBQztHQUNWO0VBQ0QsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO0lBQ2hCLE9BQU8sQ0FBQztHQUNUOztFQUVELEtBQUssTUFBTSxFQUFDO0VBQ1osR0FBRyxNQUFNLEVBQUM7RUFDVixTQUFTLE1BQU0sRUFBQztFQUNoQixPQUFPLE1BQU0sRUFBQzs7RUFFZCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsT0FBTyxDQUFDOztFQUU3QixJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBUztFQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBSztFQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUM7O0VBRXhCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQztFQUM3QyxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUM7O0VBRXpDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDNUIsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2pDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFDO01BQ2YsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUM7TUFDakIsS0FBSztLQUNOO0dBQ0Y7O0VBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7RUFDbkIsT0FBTyxDQUFDO0VBQ1Q7Ozs7Ozs7Ozs7O0FBV0QsU0FBUyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFOztFQUVyRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDOzs7RUFHbEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7SUFDbEMsUUFBUSxHQUFHLFdBQVU7SUFDckIsVUFBVSxHQUFHLEVBQUM7R0FDZixNQUFNLElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRTtJQUNsQyxVQUFVLEdBQUcsV0FBVTtHQUN4QixNQUFNLElBQUksVUFBVSxHQUFHLENBQUMsVUFBVSxFQUFFO0lBQ25DLFVBQVUsR0FBRyxDQUFDLFdBQVU7R0FDekI7RUFDRCxVQUFVLEdBQUcsQ0FBQyxXQUFVO0VBQ3hCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFOztJQUVyQixVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztHQUMzQzs7O0VBR0QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLFdBQVU7RUFDM0QsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtJQUMvQixJQUFJLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNiLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUM7R0FDcEMsTUFBTSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7SUFDekIsSUFBSSxHQUFHLEVBQUUsVUFBVSxHQUFHLEVBQUM7U0FDbEIsT0FBTyxDQUFDLENBQUM7R0FDZjs7O0VBR0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7SUFDM0IsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQztHQUNqQzs7O0VBR0QsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRTs7SUFFekIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUNwQixPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQztHQUM1RCxNQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0lBQ2xDLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSTtJQUNoQixJQUFJLE1BQU0sQ0FBQyxtQkFBbUI7UUFDMUIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7TUFDdEQsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQztPQUNsRSxNQUFNO1FBQ0wsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUM7T0FDdEU7S0FDRjtJQUNELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0dBQ2hFOztFQUVELE1BQU0sSUFBSSxTQUFTLENBQUMsc0NBQXNDLENBQUM7Q0FDNUQ7O0FBRUQsU0FBUyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtFQUMxRCxJQUFJLFNBQVMsR0FBRyxFQUFDO0VBQ2pCLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFNO0VBQzFCLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFNOztFQUUxQixJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7SUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEdBQUU7SUFDekMsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxPQUFPO1FBQzNDLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLFVBQVUsRUFBRTtNQUNyRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDO09BQ1Y7TUFDRCxTQUFTLEdBQUcsRUFBQztNQUNiLFNBQVMsSUFBSSxFQUFDO01BQ2QsU0FBUyxJQUFJLEVBQUM7TUFDZCxVQUFVLElBQUksRUFBQztLQUNoQjtHQUNGOztFQUVELFNBQVMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDckIsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO01BQ25CLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNkLE1BQU07TUFDTCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztLQUN2QztHQUNGOztFQUVELElBQUksRUFBQztFQUNMLElBQUksR0FBRyxFQUFFO0lBQ1AsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFDO0lBQ25CLEtBQUssQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO01BQ3ZDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO1FBQ3RFLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxFQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFLE9BQU8sVUFBVSxHQUFHLFNBQVM7T0FDcEUsTUFBTTtRQUNMLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVTtRQUMxQyxVQUFVLEdBQUcsQ0FBQyxFQUFDO09BQ2hCO0tBQ0Y7R0FDRixNQUFNO0lBQ0wsSUFBSSxVQUFVLEdBQUcsU0FBUyxHQUFHLFNBQVMsRUFBRSxVQUFVLEdBQUcsU0FBUyxHQUFHLFVBQVM7SUFDMUUsS0FBSyxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7TUFDaEMsSUFBSSxLQUFLLEdBQUcsS0FBSTtNQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRTtVQUNyQyxLQUFLLEdBQUcsTUFBSztVQUNiLEtBQUs7U0FDTjtPQUNGO01BQ0QsSUFBSSxLQUFLLEVBQUUsT0FBTyxDQUFDO0tBQ3BCO0dBQ0Y7O0VBRUQsT0FBTyxDQUFDLENBQUM7Q0FDVjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxTQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtFQUN4RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDdEQ7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7RUFDdEUsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0VBQ25FOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFNBQVMsV0FBVyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0VBQzlFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztFQUNwRTs7QUFFRCxTQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7RUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDO0VBQzVCLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTTtFQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ1gsTUFBTSxHQUFHLFVBQVM7R0FDbkIsTUFBTTtJQUNMLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFDO0lBQ3ZCLElBQUksTUFBTSxHQUFHLFNBQVMsRUFBRTtNQUN0QixNQUFNLEdBQUcsVUFBUztLQUNuQjtHQUNGOzs7RUFHRCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTTtFQUMxQixJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLENBQUM7O0VBRS9ELElBQUksTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDdkIsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0dBQ3BCO0VBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMvQixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBQztJQUNsRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDM0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFNO0dBQ3pCO0VBQ0QsT0FBTyxDQUFDO0NBQ1Q7O0FBRUQsU0FBUyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0VBQy9DLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztDQUNqRjs7QUFFRCxTQUFTLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7RUFDaEQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQzdEOztBQUVELFNBQVMsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtFQUNqRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDL0M7O0FBRUQsU0FBUyxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0VBQ2pELE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztDQUM5RDs7QUFFRCxTQUFTLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7RUFDL0MsT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQ3BGOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTs7RUFFekUsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0lBQ3hCLFFBQVEsR0FBRyxPQUFNO0lBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTTtJQUNwQixNQUFNLEdBQUcsRUFBQzs7R0FFWCxNQUFNLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU07SUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFNO0lBQ3BCLE1BQU0sR0FBRyxFQUFDOztHQUVYLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDM0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0lBQ25CLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO01BQ3BCLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBQztNQUNuQixJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsUUFBUSxHQUFHLE9BQU07S0FDOUMsTUFBTTtNQUNMLFFBQVEsR0FBRyxPQUFNO01BQ2pCLE1BQU0sR0FBRyxVQUFTO0tBQ25COztHQUVGLE1BQU07SUFDTCxNQUFNLElBQUksS0FBSztNQUNiLHlFQUF5RTtLQUMxRTtHQUNGOztFQUVELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTTtFQUNwQyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxHQUFHLFNBQVMsRUFBRSxNQUFNLEdBQUcsVUFBUzs7RUFFbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQzdFLE1BQU0sSUFBSSxVQUFVLENBQUMsd0NBQXdDLENBQUM7R0FDL0Q7O0VBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsT0FBTTs7RUFFaEMsSUFBSSxXQUFXLEdBQUcsTUFBSztFQUN2QixTQUFTO0lBQ1AsUUFBUSxRQUFRO01BQ2QsS0FBSyxLQUFLO1FBQ1IsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDOztNQUUvQyxLQUFLLE1BQU0sQ0FBQztNQUNaLEtBQUssT0FBTztRQUNWLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7TUFFaEQsS0FBSyxPQUFPO1FBQ1YsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDOztNQUVqRCxLQUFLLFFBQVEsQ0FBQztNQUNkLEtBQUssUUFBUTtRQUNYLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7TUFFbEQsS0FBSyxRQUFROztRQUVYLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7TUFFbEQsS0FBSyxNQUFNLENBQUM7TUFDWixLQUFLLE9BQU8sQ0FBQztNQUNiLEtBQUssU0FBUyxDQUFDO01BQ2YsS0FBSyxVQUFVO1FBQ2IsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDOztNQUVoRDtRQUNFLElBQUksV0FBVyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1FBQ3JFLFFBQVEsR0FBRyxDQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsV0FBVyxHQUFFO1FBQ3hDLFdBQVcsR0FBRyxLQUFJO0tBQ3JCO0dBQ0Y7RUFDRjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLE1BQU0sSUFBSTtFQUMzQyxPQUFPO0lBQ0wsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztHQUN2RDtFQUNGOztBQUVELFNBQVMsV0FBVyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0VBQ3JDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtJQUNyQyxPQUFPQyxhQUFvQixDQUFDLEdBQUcsQ0FBQztHQUNqQyxNQUFNO0lBQ0wsT0FBT0EsYUFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztHQUNuRDtDQUNGOztBQUVELFNBQVMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0VBQ25DLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFDO0VBQy9CLElBQUksR0FBRyxHQUFHLEdBQUU7O0VBRVosSUFBSSxDQUFDLEdBQUcsTUFBSztFQUNiLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUNkLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUM7SUFDdEIsSUFBSSxTQUFTLEdBQUcsS0FBSTtJQUNwQixJQUFJLGdCQUFnQixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3pDLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3RCLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3RCLEVBQUM7O0lBRUwsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLElBQUksR0FBRyxFQUFFO01BQy9CLElBQUksVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYTs7TUFFcEQsUUFBUSxnQkFBZ0I7UUFDdEIsS0FBSyxDQUFDO1VBQ0osSUFBSSxTQUFTLEdBQUcsSUFBSSxFQUFFO1lBQ3BCLFNBQVMsR0FBRyxVQUFTO1dBQ3RCO1VBQ0QsS0FBSztRQUNQLEtBQUssQ0FBQztVQUNKLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQztVQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksTUFBTSxJQUFJLEVBQUU7WUFDaEMsYUFBYSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxHQUFHLElBQUksRUFBQztZQUMvRCxJQUFJLGFBQWEsR0FBRyxJQUFJLEVBQUU7Y0FDeEIsU0FBUyxHQUFHLGNBQWE7YUFDMUI7V0FDRjtVQUNELEtBQUs7UUFDUCxLQUFLLENBQUM7VUFDSixVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUM7VUFDdkIsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1VBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sSUFBSSxFQUFFO1lBQy9ELGFBQWEsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxHQUFHLElBQUksU0FBUyxHQUFHLElBQUksRUFBQztZQUMxRixJQUFJLGFBQWEsR0FBRyxLQUFLLEtBQUssYUFBYSxHQUFHLE1BQU0sSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLEVBQUU7Y0FDL0UsU0FBUyxHQUFHLGNBQWE7YUFDMUI7V0FDRjtVQUNELEtBQUs7UUFDUCxLQUFLLENBQUM7VUFDSixVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUM7VUFDdkIsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1VBQ3RCLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQztVQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE1BQU0sSUFBSSxFQUFFO1lBQy9GLGFBQWEsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEdBQUcsSUFBSSxFQUFDO1lBQ3hILElBQUksYUFBYSxHQUFHLE1BQU0sSUFBSSxhQUFhLEdBQUcsUUFBUSxFQUFFO2NBQ3RELFNBQVMsR0FBRyxjQUFhO2FBQzFCO1dBQ0Y7T0FDSjtLQUNGOztJQUVELElBQUksU0FBUyxLQUFLLElBQUksRUFBRTs7O01BR3RCLFNBQVMsR0FBRyxPQUFNO01BQ2xCLGdCQUFnQixHQUFHLEVBQUM7S0FDckIsTUFBTSxJQUFJLFNBQVMsR0FBRyxNQUFNLEVBQUU7O01BRTdCLFNBQVMsSUFBSSxRQUFPO01BQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFDO01BQzNDLFNBQVMsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLE1BQUs7S0FDdkM7O0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUM7SUFDbkIsQ0FBQyxJQUFJLGlCQUFnQjtHQUN0Qjs7RUFFRCxPQUFPLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztDQUNsQzs7Ozs7QUFLRCxJQUFJLG9CQUFvQixHQUFHLE9BQU07O0FBRWpDLFNBQVMscUJBQXFCLEVBQUUsVUFBVSxFQUFFO0VBQzFDLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFNO0VBQzNCLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFO0lBQy9CLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztHQUNyRDs7O0VBR0QsSUFBSSxHQUFHLEdBQUcsR0FBRTtFQUNaLElBQUksQ0FBQyxHQUFHLEVBQUM7RUFDVCxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUU7SUFDZCxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLO01BQzlCLE1BQU07TUFDTixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUM7TUFDL0M7R0FDRjtFQUNELE9BQU8sR0FBRztDQUNYOztBQUVELFNBQVMsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0VBQ3BDLElBQUksR0FBRyxHQUFHLEdBQUU7RUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQzs7RUFFL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUNoQyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFDO0dBQzFDO0VBQ0QsT0FBTyxHQUFHO0NBQ1g7O0FBRUQsU0FBUyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7RUFDckMsSUFBSSxHQUFHLEdBQUcsR0FBRTtFQUNaLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFDOztFQUUvQixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ2hDLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQztHQUNuQztFQUNELE9BQU8sR0FBRztDQUNYOztBQUVELFNBQVMsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0VBQ2xDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFNOztFQUVwQixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUM7RUFDbEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUc7O0VBRTNDLElBQUksR0FBRyxHQUFHLEdBQUU7RUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ2hDLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDO0dBQ3JCO0VBQ0QsT0FBTyxHQUFHO0NBQ1g7O0FBRUQsU0FBUyxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7RUFDdEMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFDO0VBQ2pDLElBQUksR0FBRyxHQUFHLEdBQUU7RUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ3hDLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBQztHQUMxRDtFQUNELE9BQU8sR0FBRztDQUNYOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7RUFDbkQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU07RUFDckIsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFLO0VBQ2YsR0FBRyxHQUFHLEdBQUcsS0FBSyxTQUFTLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFHOztFQUVyQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7SUFDYixLQUFLLElBQUksSUFBRztJQUNaLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBQztHQUN6QixNQUFNLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtJQUN0QixLQUFLLEdBQUcsSUFBRztHQUNaOztFQUVELElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtJQUNYLEdBQUcsSUFBSSxJQUFHO0lBQ1YsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFDO0dBQ3JCLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQ3BCLEdBQUcsR0FBRyxJQUFHO0dBQ1Y7O0VBRUQsSUFBSSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsR0FBRyxNQUFLOztFQUU1QixJQUFJLE9BQU07RUFDVixJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtJQUM5QixNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ2xDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVM7R0FDcEMsTUFBTTtJQUNMLElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxNQUFLO0lBQzFCLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFDO0lBQ3hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUU7TUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFDO0tBQzVCO0dBQ0Y7O0VBRUQsT0FBTyxNQUFNO0VBQ2Q7Ozs7O0FBS0QsU0FBUyxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7RUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztFQUNoRixJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxFQUFFLE1BQU0sSUFBSSxVQUFVLENBQUMsdUNBQXVDLENBQUM7Q0FDekY7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7RUFDL0UsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0VBQ25CLFVBQVUsR0FBRyxVQUFVLEdBQUcsRUFBQztFQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUM7O0VBRTNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUM7RUFDdEIsSUFBSSxHQUFHLEdBQUcsRUFBQztFQUNYLElBQUksQ0FBQyxHQUFHLEVBQUM7RUFDVCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7SUFDekMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBRztHQUM5Qjs7RUFFRCxPQUFPLEdBQUc7RUFDWDs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtFQUMvRSxNQUFNLEdBQUcsTUFBTSxHQUFHLEVBQUM7RUFDbkIsVUFBVSxHQUFHLFVBQVUsR0FBRyxFQUFDO0VBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDYixXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDO0dBQzdDOztFQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxVQUFVLEVBQUM7RUFDckMsSUFBSSxHQUFHLEdBQUcsRUFBQztFQUNYLE9BQU8sVUFBVSxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7SUFDdkMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFHO0dBQ3pDOztFQUVELE9BQU8sR0FBRztFQUNYOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDakUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDO0VBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztFQUNwQjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQztFQUNsRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM5Qzs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQztFQUNsRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUM5Qzs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQzs7RUFFbEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztPQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztPQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztFQUNuQzs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQzs7RUFFbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTO0tBQzdCLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO0tBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDcEI7O0FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7RUFDN0UsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0VBQ25CLFVBQVUsR0FBRyxVQUFVLEdBQUcsRUFBQztFQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFF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TUFBTSxFQUFDO0VBQ2xELE9BQU9DLElBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQy9DOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFNBQVMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDckUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDO0VBQ2xELE9BQU9BLElBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQ2hEOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDO0VBQ2xELE9BQU9BLElBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQy9DOztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFDO0VBQ2xELE9BQU9BLElBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQ2hEOztBQUVELFNBQVMsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUksU0FB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QUFFLENBQUMsR0FBRyxVQUFVLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFO0lBQ3pDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtNQUN4RCxHQUFHLEdBQUcsRUFBQztLQUNSO0lBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUk7R0FDckQ7O0VBRUQsT0FBTyxNQUFNLEdBQUcsVUFBVTtFQUMzQjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7RUFDdEYsS0FBSyxHQUFHLENBQUMsTUFBSztFQUNkLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBQztFQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFO0lBQ2IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUM7O0lBRTNDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBQztHQUM3RDs7RUFFRCxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsRUFBQztFQUN0QixJQUFJLEdBQUcsR0FBRyxFQUFDO0VBQ1gsSUFBSSxHQUFHLEdBQUcsRUFBQztFQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEtBQUk7RUFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFO0lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtNQUN4RCxHQUFHLEdBQUcsRUFBQztLQUNSO0lBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUk7R0FDckQ7O0VBRUQsT0FBTyxNQUFNLEdBQUcsVUFBVTtFQUMzQjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtFQUN4RSxLQUFLLEdBQUcsQ0FBQyxNQUFLO0VBQ2QsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0VBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUM7RUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUM7RUFDMUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUM7RUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLEVBQUM7RUFDN0IsT0FBTyxNQUFNLEdBQUcsQ0FBQztFQUNsQjs7QUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtFQUM5RSxLQUFLLEdBQUcsQ0FBQyxNQUFLO0VBQ2QsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFDO0VBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFF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\n","import {hierarchy as hierarchyFunctions, \r\n common, getTemplateApi, getAuthApi } from \"budibase-core\"; \r\nimport {find, filter, includes, keyBy, some,\r\n flatten, map} from \"lodash/fp\";\r\n\r\nexport const chain = common.$;\r\n\r\nexport const events = common.eventsList;\r\n\r\nexport const getNode = (hierarchy, nodeId) => \r\n chain(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n find(n => n.nodeId === nodeId || n.nodeKey() === nodeId)\r\n ]);\r\n\r\nexport const constructHierarchy = node => {\r\n if(!node) return node;\r\n return templateApi(node).constructHierarchy(node);\r\n}\r\n\r\nexport const createNewHierarchy = () => {\r\n return templateApi().getNewRootLevel();\r\n}\r\n\r\nexport const templateApi = hierarchy => getTemplateApi({hierarchy})\r\nexport const authApi = (hierarchy, actions) => getAuthApi({\r\n hierarchy, actions: keyBy(\"name\")(actions), publish:()=>{}})\r\n\r\nexport const allTypes = templateApi({}).allTypes;\r\n\r\nexport const validate = {\r\n all: templateApi({}).validateAll,\r\n node: templateApi({}).validateNode,\r\n field: templateApi({}).validateField\r\n};\r\n\r\nexport const getPotentialReverseReferenceIndexes = (hierarchy, refIndex) => {\r\n const res = chain(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(n => hierarchyFunctions.isAncestor(refIndex)(n)\r\n || hierarchyFunctions.isAncestor(refIndex)(n.parent())),\r\n map(n => n.indexes),\r\n flatten,\r\n filter(hierarchyFunctions.isReferenceIndex)\r\n ]);\r\n\r\n return res;\r\n}\r\n\r\nexport const getPotentialReferenceIndexes = (hierarchy, record) =>\r\n chain(hierarchy, [\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(hierarchyFunctions.isAncestorIndex),\r\n filter(i => hierarchyFunctions.isAncestor(record)(i.parent())\r\n || i.parent().nodeId === record.parent().nodeId\r\n || hierarchyFunctions.isRoot(i.parent()))\r\n ]);\r\n\r\nexport const getDefaultTypeOptions = type => \r\n !type ? {} : allTypes[type].getDefaultOptions();\r\n\r\nexport const getNewAction = () => templateApi({}).createAction();\r\nexport const getNewTrigger = () => templateApi({}).createTrigger();\r\n\r\nexport const validateActions = actions => templateApi({}).validateActions(actions);\r\nexport const validateTriggers = (triggers, actions) => templateApi({}).validateTriggers(triggers, actions);\r\n\r\nexport const generateFullPermissions = (hierarchy, actions) => \r\n authApi(hierarchy,actions).generateFullPermissions();\r\n\r\nexport const getNewAccessLevel = () => \r\n authApi().getNewAccessLevel();\r\n\r\nexport const validateAccessLevels = (hierarchy, actions, accessLevels) => \r\n authApi(hierarchy, actions).validateAccessLevels(accessLevels);","import { safe_not_equal, noop, run_all, is_function } from '../internal';\nexport { get_store_value as get } from '../internal';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe,\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\n */\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","export const defaultPagesObject = () => ({\r\n main: {\r\n index: {\r\n _component : \"./components/indexHtml\"\r\n },\r\n appBody: \"bbapp.main.json\"\r\n },\r\n unauthenticated: {\r\n index: {\r\n _component : \"./components/indexHtml\"\r\n },\r\n appBody: \"bbapp.unauthenticated.json\"\r\n },\r\n componentLibraries: [\"./components\"]\r\n});","\r\nconst apiCall = (method) => (url, body, returnResponse=false) => \r\n fetch(url, {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body && JSON.stringify(body), \r\n }).then(r => returnResponse ? r : r.json());\r\n\r\nconst post = apiCall(\"POST\");\r\nconst get = apiCall(\"GET\");\r\nconst patch = apiCall(\"PATCH\");\r\nconst del = apiCall(\"DELETE\");\r\n\r\nexport default {\r\n post, get, patch, delete:del\r\n};","import {\r\n hierarchy as hierarchyFunctions, \r\n common \r\n} from \"budibase-core\";\r\nimport {\r\n filter, \r\n cloneDeep, \r\n sortBy, \r\n map, \r\n last, \r\n keys,\r\n concat,\r\n find, \r\n isEmpty, \r\n groupBy, \r\n reduce\r\n} from \"lodash/fp\";\r\nimport {\r\n chain, \r\n getNode, \r\n validate,\r\n constructHierarchy, \r\n templateApi\r\n} from \"../common/core\";\r\nimport {writable} from \"svelte/store\";\r\nimport { defaultPagesObject } from \"../userInterface/pagesParsing/defaultPagesObject\"\r\nimport api from \"./api\";\r\n\r\nconst pipe = common.$;\r\n\r\nexport const getStore = () => {\r\n\r\n const initial = {\r\n apps:[],\r\n appname:\"\",\r\n hierarchy: {},\r\n actions: [],\r\n triggers: [],\r\n pages:defaultPagesObject(),\r\n mainUi:{},\r\n unauthenticatedUi:{},\r\n derivedComponents:[],\r\n rootComponents:[],\r\n currentNodeIsNew: false,\r\n errors: [],\r\n activeNav: \"database\",\r\n hasAppPackage: false,\r\n accessLevels: [],\r\n currentNode: null,\r\n };\r\n\r\n const store = writable(initial);\r\n\r\n store.initialise = initialise(store, initial);\r\n store.newChildRecord = newRecord(store, false);\r\n store.newRootRecord = newRecord(store, true);\r\n store.selectExistingNode = selectExistingNode(store);\r\n store.newChildIndex = newIndex(store, false);\r\n store.newRootIndex = newIndex(store, true);\r\n store.saveCurrentNode = saveCurrentNode(store);\r\n store.importAppDefinition = importAppDefinition(store);\r\n store.deleteCurrentNode = deleteCurrentNode(store);\r\n store.saveField = saveField(store);\r\n store.deleteField = deleteField(store);\r\n store.saveAction = saveAction(store);\r\n store.deleteAction = deleteAction(store);\r\n store.saveTrigger = saveTrigger(store);\r\n store.deleteTrigger = deleteTrigger(store);\r\n store.saveLevel = saveLevel(store);\r\n store.deleteLevel = deleteLevel(store);\r\n store.setActiveNav = setActiveNav(store);\r\n store.saveDerivedComponent = saveDerivedComponent(store);\r\n store.refreshComponents = refreshComponents(store);\r\n store.addComponentLibrary = addComponentLibrary(store);\r\n store.renameDerivedComponent = renameDerivedComponent(store);\r\n store.deleteDerivedComponent = deleteDerivedComponent(store);\r\n return store;\r\n} \r\n\r\nexport default getStore;\r\n\r\nconst initialise = (store, initial) => async () => {\r\n\r\n const appname = window.location.hash \r\n ? last(window.location.hash.substr(1).split(\"/\"))\r\n : \"\";\r\n\r\n if(!appname) {\r\n initial.apps = await api.get(`/_builder/api/apps`);\r\n initial.hasAppPackage = false;\r\n store.set(initial);\r\n return initial;\r\n }\r\n\r\n const pkg = await api.get(`/_builder/api/${appname}/appPackage`);\r\n\r\n initial.appname = appname;\r\n initial.hasAppPackage = true;\r\n initial.hierarchy = pkg.appDefinition.hierarchy;\r\n initial.accessLevels = pkg.accessLevels;\r\n initial.derivedComponents = pkg.derivedComponents;\r\n initial.rootComponents = pkg.rootComponents;\r\n initial.actions = reduce((arr, action) => {\r\n arr.push(action);\r\n return arr;\r\n })(pkg.appDefinition.actions, []);\r\n initial.triggers = pkg.appDefinition.triggers;\r\n\r\n if(!!initial.hierarchy && !isEmpty(initial.hierarchy)) {\r\n initial.hierarchy = constructHierarchy(initial.hierarchy);\r\n const shadowHierarchy = createShadowHierarchy(initial.hierarchy);\r\n if(initial.currentNode !== null)\r\n initial.currentNode = getNode(\r\n shadowHierarchy, initial.currentNode.nodeId\r\n );\r\n }\r\n store.set(initial);\r\n return initial;\r\n}\r\n\r\nconst newRecord = (store, useRoot) => () => {\r\n store.update(s => {\r\n s.currentNodeIsNew = true;\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n parent = useRoot ? shadowHierarchy\r\n : getNode(\r\n shadowHierarchy, \r\n s.currentNode.nodeId);\r\n s.errors = [];\r\n s.currentNode = templateApi(shadowHierarchy)\r\n .getNewRecordTemplate(parent, \"\", true);\r\n return s;\r\n });\r\n}\r\n\r\n\r\nconst selectExistingNode = (store) => (nodeId) => {\r\n store.update(s => {\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n s.currentNode = getNode(\r\n shadowHierarchy, nodeId\r\n );\r\n s.currentNodeIsNew = false;\r\n s.errors = [];\r\n return s;\r\n })\r\n}\r\n\r\nconst newIndex = (store, useRoot) => () => {\r\n store.update(s => {\r\n s.currentNodeIsNew = true;\r\n s.errors = [];\r\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\r\n parent = useRoot ? shadowHierarchy\r\n : getNode(\r\n shadowHierarchy, \r\n s.currentNode.nodeId);\r\n\r\n s.currentNode = templateApi(shadowHierarchy)\r\n .getNewIndexTemplate(parent);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveCurrentNode = (store) => () => {\r\n store.update(s => {\r\n\r\n const errors = validate.node(s.currentNode);\r\n s.errors = errors;\r\n if(errors.length > 0) {\r\n return s;\r\n }\r\n\r\n const parentNode = getNode(\r\n s.hierarchy, s.currentNode.parent().nodeId);\r\n\r\n const existingNode = getNode(\r\n s.hierarchy, s.currentNode.nodeId);\r\n\r\n let index = parentNode.children.length;\r\n if(!!existingNode) {\r\n // remove existing\r\n index = existingNode.parent().children.indexOf(existingNode);\r\n existingNode.parent().children = chain(existingNode.parent().children, [\r\n filter(c => c.nodeId !== existingNode.nodeId)\r\n ]);\r\n }\r\n\r\n // should add node into existing hierarchy\r\n const cloned = cloneDeep(s.currentNode);\r\n templateApi(s.hierarchy).constructNode(\r\n parentNode, \r\n cloned\r\n );\r\n\r\n const newIndexOfchild = child => {\r\n if(child === cloned) return index;\r\n const currentIndex = parentNode.children.indexOf(child);\r\n return currentIndex >= index ? currentIndex + 1 : currentIndex;\r\n }\r\n\r\n parentNode.children = chain(parentNode.children, [\r\n sortBy(newIndexOfchild)\r\n ]);\r\n\r\n s.currentNodeIsNew = false;\r\n \r\n savePackage(store, s);\r\n\r\n return s;\r\n });\r\n}\r\n\r\nconst importAppDefinition = store => appDefinition => {\r\n store.update(s => {\r\n s.hierarchy = appDefinition.hierarchy;\r\n s.currentNode = appDefinition.hierarchy.children.length > 0\r\n ? appDefinition.hierarchy.children[0] \r\n : null;\r\n s.actions = appDefinition.actions;\r\n s.triggers = appDefinition.triggers;\r\n s.currentNodeIsNew = false; \r\n return s;\r\n });\r\n} \r\n\r\nconst deleteCurrentNode = store => () => {\r\n store.update(s => {\r\n const nodeToDelete = getNode(s.hierarchy, s.currentNode.nodeId);\r\n s.currentNode = hierarchyFunctions.isRoot(nodeToDelete.parent())\r\n ? find(n => n != s.currentNode)\r\n (s.hierarchy.children)\r\n : nodeToDelete.parent();\r\n if(hierarchyFunctions.isRecord(nodeToDelete)) {\r\n nodeToDelete.parent().children = filter(c => c.nodeId !== nodeToDelete.nodeId)\r\n (nodeToDelete.parent().children);\r\n } else {\r\n nodeToDelete.parent().indexes = filter(c => c.nodeId !== nodeToDelete.nodeId)\r\n (nodeToDelete.parent().indexes);\r\n }\r\n s.errors = [];\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveField = databaseStore => (field) => {\r\n databaseStore.update(db => {\r\n db.currentNode.fields = filter(f => f.name !== field.name)\r\n (db.currentNode.fields);\r\n \r\n templateApi(db.hierarchy).addField(db.currentNode, field);\r\n return db;\r\n });\r\n}\r\n\r\n\r\nconst deleteField = databaseStore => field => {\r\n databaseStore.update(db => {\r\n db.currentNode.fields = filter(f => f.name !== field.name)\r\n (db.currentNode.fields);\r\n\r\n return db;\r\n });\r\n}\r\n\r\n\r\nconst saveAction = store => (newAction, isNew, oldAction=null) => {\r\n store.update(s => {\r\n\r\n const existingAction = isNew \r\n ? null\r\n : find(a => a.name === oldAction.name)(s.actions);\r\n \r\n if(existingAction) {\r\n s.actions = chain(s.actions, [\r\n map(a => a === existingAction ? newAction : a)\r\n ]);\r\n } else {\r\n s.actions.push(newAction);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteAction = store => action => {\r\n store.update(s => {\r\n s.actions = filter(a => a.name !== action.name)(s.actions);\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveTrigger = store => (newTrigger, isNew, oldTrigger=null) => {\r\n store.update(s => {\r\n\r\n const existingTrigger = isNew \r\n ? null\r\n : find(a => a.name === oldTrigger.name)(s.triggers);\r\n \r\n if(existingTrigger) {\r\n s.triggers = chain(s.triggers, [\r\n map(a => a === existingTrigger ? newTrigger : a)\r\n ]);\r\n } else {\r\n s.triggers.push(newTrigger);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteTrigger = store => trigger => {\r\n store.update(s => {\r\n s.triggers = filter(t => t.name !== trigger.name)(s.triggers);\r\n return s;\r\n });\r\n}\r\n\r\nconst saveLevel = store => (newLevel, isNew, oldLevel=null) => {\r\n store.update(s => {\r\n\r\n const existingLevel = isNew \r\n ? null\r\n : find(a => a.name === oldLevel.name)(s.accessLevels);\r\n \r\n if(existingLevel) {\r\n s.accessLevels = chain(s.accessLevels, [\r\n map(a => a === existingLevel ? newLevel : a)\r\n ]);\r\n } else {\r\n s.accessLevels.push(newLevel);\r\n }\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst deleteLevel = store => level => {\r\n store.update(s => {\r\n s.accessLevels = filter(t => t.name !== level.name)(s.accessLevels);\r\n savePackage(store, s);\r\n return s;\r\n });\r\n}\r\n\r\nconst setActiveNav = store => navName => {\r\n store.update(s => {\r\n s.activeNav = navName;\r\n return s;\r\n });\r\n}\r\n\r\nconst createShadowHierarchy = hierarchy => \r\n constructHierarchy(JSON.parse(JSON.stringify(hierarchy)));\r\n\r\nconst saveDerivedComponent = store => (derivedComponent) => {\r\n\r\n store.update(s => {\r\n\r\n const derivedComponents = pipe(s.derivedComponents, [\r\n filter(c => c._name !== derivedComponent._name)\r\n ]);\r\n\r\n s.derivedComponents = derivedComponents;\r\n\r\n api.post(`/_builder/api/${s.appname}/derivedcomponent`, derivedComponent);\r\n\r\n return s;\r\n })\r\n};\r\n\r\nconst deleteDerivedComponent = store => name => {\r\n store.update(s => {\r\n\r\n const derivedComponents = pipe(s.derivedComponents, [\r\n filter(c => c._name !== name)\r\n ]);\r\n\r\n s.derivedComponents = derivedComponents;\r\n\r\n api.delete(`/_builder/api/${s.appname}/derivedcomponent/${name}`);\r\n\r\n return s;\r\n })\r\n}\r\n\r\nconst renameDerivedComponent = store => (oldname, newname) => {\r\n store.update(s => {\r\n\r\n const component = pipe(s.derivedComponents, [\r\n find(c => c._name === name)\r\n ]);\r\n\r\n component._name = newname;\r\n\r\n const derivedComponents = pipe(s.derivedComponents, [\r\n filter(c => c._name !== name),\r\n concat(component)\r\n ]);\r\n\r\n s.derivedComponent = derivedComponents;\r\n\r\n api.patch(`/_builder/api/${s.appname}/derivedcomponent`, {\r\n oldname, newname\r\n });\r\n\r\n return s;\r\n })\r\n}\r\n\r\nconst addComponentLibrary = store => async lib => {\r\n\r\n const response = \r\n await api.get(`/_builder/api/${db.appname}/components?${encodeURI(lib)}`,undefined, true);\r\n\r\n const success = response.status === 200;\r\n\r\n const error = response.status === 404 \r\n ? `Could not find library ${lib}`\r\n : success\r\n ? \"\"\r\n : response.statusText;\r\n \r\n const components = success\r\n ? await response.json()\r\n : [];\r\n\r\n store.update(s => {\r\n s.componentsErrors.addComponent = error;\r\n if(success) {\r\n s.pages.componentLibraries.push(lib);\r\n s.rootComponents = [...s.rootComponents, components];\r\n }\r\n\r\n return s;\r\n })\r\n \r\n\r\n}\r\n\r\nconst refreshComponents = store => async () => {\r\n\r\n const components = \r\n await api.get(`/_builder/api/${db.appname}/components`);\r\n\r\n const rootComponents = pipe(components, [\r\n keys,\r\n map(k => ({...components[k], _name:k}))\r\n ]);\r\n\r\n store.update(s => {\r\n s.rootComponents = rootComponents;\r\n return s;\r\n });\r\n};\r\n\r\nconst savePackage = (store, s) => {\r\n\r\n const appDefinition = {\r\n hierarchy:s.hierarchy,\r\n triggers:s.triggers,\r\n actions: groupBy(\"name\")(s.actions),\r\n pages:s.pages,\r\n mainUi: s.mainUi,\r\n unauthenticatedUi: s.unauthenticatedUi\r\n };\r\n\r\n const data = {\r\n appDefinition,\r\n accessLevels:s.accessLevels\r\n }\r\n\r\n api.post(`/_builder/api/${s.appname}/appPackage`, data);\r\n}\r\n","import {createPackage} from \"./createPackage\";\r\nimport getStore from \"./store\";\r\nimport { last } from \"lodash/fp\";\r\n\r\nexport const database = getStore();\r\n\r\nexport const createNewPackage = () =>\r\n createPackage(packageInfo, database);\r\n\r\nexport const initialise = async () => {\r\n try {\r\n setupRouter(database);\r\n await database.initialise();\r\n } catch(err) {\r\n console.log(err);\r\n }\r\n\r\n} \r\n\r\nconst setupRouter = (writable) => {\r\n const pushState = history.pushState;\r\n history.pushState = () => {\r\n pushState.apply(history, arguments);\r\n //fireEvents('pushState', arguments); \r\n writable.initialise();\r\n }\r\n window.addEventListener('hashchange',()=>{\r\n writable.initialise();\r\n })\r\n}\r\n","<script>\r\n\r\nimport Button from \"./common/Button.svelte\"\r\nimport { database } from \"./builderStore\";\r\n\r\nlet errors = [];\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"inner\">\r\n <img src=\"/_builder/assets/budibase-logo.png\" class=\"logo\" alt=\"budibase logo\"/>\r\n <div>\r\n \r\n <div>\r\n <h4 style=\"margin-bottom: 20px\">Choose an Application</h4>\r\n {#each $database.apps as app}\r\n <a href={`#/${app}`} class=\"app-link\">{app}</a>\r\n {/each}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n position: fixed;\r\n margin: 0 auto;\r\n text-align: center;\r\n top: 20%;\r\n /*color: #333333;\r\n background-color: #fdfdfd;*/\r\n width:100%;\r\n}\r\n\r\n.inner {\r\n display:inline-block;\r\n margin: auto;\r\n}\r\n\r\n.logo {\r\n width: 300px;\r\n margin-bottom: 40px;\r\n}\r\n\r\n.root :global(.option) {\r\n width:250px;\r\n}\r\n\r\n.app-link {\r\n margin-top: 10px;\r\n display: block;\r\n}\r\n\r\n</style>","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"feather\"] = factory();\n\telse\n\t\troot[\"feather\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dist/icons.json\":\n/*!*************************!*\\\n !*** ./dist/icons.json ***!\n \\*************************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, download-cloud, download, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":\"<polyline points=\\\"22 12 18 12 15 21 9 3 6 12 2 12\\\"></polyline>\",\"airplay\":\"<path d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"></path><polygon points=\\\"12 15 17 21 7 21 12 15\\\"></polygon>\",\"alert-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"alert-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"alert-triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"13\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line>\",\"align-center\":\"<line x1=\\\"18\\\" y1=\\\"10\\\" x2=\\\"6\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"18\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line>\",\"align-justify\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-left\":\"<line x1=\\\"17\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"17\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-right\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"7\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"7\\\" y2=\\\"18\\\"></line>\",\"anchor\":\"<circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><path d=\\\"M5 12H2a10 10 0 0 0 20 0h-3\\\"></path>\",\"aperture\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"14.31\\\" y1=\\\"8\\\" x2=\\\"20.05\\\" y2=\\\"17.94\\\"></line><line x1=\\\"9.69\\\" y1=\\\"8\\\" x2=\\\"21.17\\\" y2=\\\"8\\\"></line><line x1=\\\"7.38\\\" y1=\\\"12\\\" x2=\\\"13.12\\\" y2=\\\"2.06\\\"></line><line x1=\\\"9.69\\\" y1=\\\"16\\\" x2=\\\"3.95\\\" y2=\\\"6.06\\\"></line><line x1=\\\"14.31\\\" y1=\\\"16\\\" x2=\\\"2.83\\\" y2=\\\"16\\\"></line><line x1=\\\"16.62\\\" y1=\\\"12\\\" x2=\\\"10.88\\\" y2=\\\"21.94\\\"></line>\",\"archive\":\"<polyline points=\\\"21 8 21 21 3 21 3 8\\\"></polyline><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"22\\\" height=\\\"5\\\"></rect><line x1=\\\"10\\\" y1=\\\"12\\\" x2=\\\"14\\\" y2=\\\"12\\\"></line>\",\"arrow-down-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"8 12 12 16 16 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"arrow-down-left\":\"<line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 17 7 17 7 7\\\"></polyline>\",\"arrow-down-right\":\"<line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"17\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 7 17 17 7 17\\\"></polyline>\",\"arrow-down\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><polyline points=\\\"19 12 12 19 5 12\\\"></polyline>\",\"arrow-left-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 8 8 12 12 16\\\"></polyline><line x1=\\\"16\\\" y1=\\\"12\\\" x2=\\\"8\\\" y2=\\\"12\\\"></line>\",\"arrow-left\":\"<line x1=\\\"19\\\" y1=\\\"12\\\" x2=\\\"5\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 19 5 12 12 5\\\"></polyline>\",\"arrow-right-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 16 16 12 12 8\\\"></polyline><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"arrow-right\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 5 19 12 12 19\\\"></polyline>\",\"arrow-up-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"16 12 12 8 8 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line>\",\"arrow-up-left\":\"<line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 17 7 7 17 7\\\"></polyline>\",\"arrow-up-right\":\"<line x1=\\\"7\\\" y1=\\\"17\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 7 17 7 17 17\\\"></polyline>\",\"arrow-up\":\"<line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"5\\\"></line><polyline points=\\\"5 12 12 5 19 12\\\"></polyline>\",\"at-sign\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><path d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\\\"></path>\",\"award\":\"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"></circle><polyline points=\\\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\\\"></polyline>\",\"bar-chart-2\":\"<line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"10\\\"></line><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"14\\\"></line>\",\"bar-chart\":\"<line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"10\\\"></line><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line>\",\"battery-charging\":\"<path d=\\\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\\\"></path><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line><polyline points=\\\"11 6 7 12 13 12 9 18\\\"></polyline>\",\"battery\":\"<rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line>\",\"bell-off\":\"<path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path><path d=\\\"M18.63 13A17.89 17.89 0 0 1 18 8\\\"></path><path d=\\\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\\\"></path><path d=\\\"M18 8a6 6 0 0 0-9.33-5\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"bell\":\"<path d=\\\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\\\"></path><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path>\",\"bluetooth\":\"<polyline points=\\\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\\\"></polyline>\",\"bold\":\"<path d=\\\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path><path d=\\\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path>\",\"book-open\":\"<path d=\\\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\\\"></path><path d=\\\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\\\"></path>\",\"book\":\"<path d=\\\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\\\"></path><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\\\"></path>\",\"bookmark\":\"<path d=\\\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\\\"></path>\",\"box\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"briefcase\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\\\"></path>\",\"calendar\":\"<rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"16\\\" y1=\\\"2\\\" x2=\\\"16\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"10\\\"></line>\",\"camera-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\\\"></path>\",\"camera\":\"<path d=\\\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\\\"></path><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"></circle>\",\"cast\":\"<path d=\\\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\"></path><line x1=\\\"2\\\" y1=\\\"20\\\" x2=\\\"2\\\" y2=\\\"20\\\"></line>\",\"check-circle\":\"<path d=\\\"M22 11.08V12a10 10 0 1 1-5.93-9.14\\\"></path><polyline points=\\\"22 4 12 14.01 9 11.01\\\"></polyline>\",\"check-square\":\"<polyline points=\\\"9 11 12 14 22 4\\\"></polyline><path d=\\\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\\\"></path>\",\"check\":\"<polyline points=\\\"20 6 9 17 4 12\\\"></polyline>\",\"chevron-down\":\"<polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\",\"chevron-left\":\"<polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\",\"chevron-right\":\"<polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\",\"chevron-up\":\"<polyline points=\\\"18 15 12 9 6 15\\\"></polyline>\",\"chevrons-down\":\"<polyline points=\\\"7 13 12 18 17 13\\\"></polyline><polyline points=\\\"7 6 12 11 17 6\\\"></polyline>\",\"chevrons-left\":\"<polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\",\"chevrons-right\":\"<polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\",\"chevrons-up\":\"<polyline points=\\\"17 11 12 6 7 11\\\"></polyline><polyline points=\\\"17 18 12 13 7 18\\\"></polyline>\",\"chrome\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"21.17\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><line x1=\\\"3.95\\\" y1=\\\"6.06\\\" x2=\\\"8.54\\\" y2=\\\"14\\\"></line><line x1=\\\"10.88\\\" y1=\\\"21.94\\\" x2=\\\"15.46\\\" y2=\\\"14\\\"></line>\",\"circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle>\",\"clipboard\":\"<path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\"></path><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"></rect>\",\"clock\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 6 12 12 16 14\\\"></polyline>\",\"cloud-drizzle\":\"<line x1=\\\"8\\\" y1=\\\"19\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"15\\\"></line><line x1=\\\"16\\\" y1=\\\"19\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-lightning\":\"<path d=\\\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\\\"></path><polyline points=\\\"13 11 9 17 15 17 11 23\\\"></polyline>\",\"cloud-off\":\"<path d=\\\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"cloud-rain\":\"<line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-snow\":\"<path d=\\\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\\\"></path><line x1=\\\"8\\\" y1=\\\"16\\\" x2=\\\"8\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"20\\\" x2=\\\"8\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"16\\\" y1=\\\"16\\\" x2=\\\"16\\\" y2=\\\"16\\\"></line><line x1=\\\"16\\\" y1=\\\"20\\\" x2=\\\"16\\\" y2=\\\"20\\\"></line>\",\"cloud\":\"<path d=\\\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\\\"></path>\",\"code\":\"<polyline points=\\\"16 18 22 12 16 6\\\"></polyline><polyline points=\\\"8 6 2 12 8 18\\\"></polyline>\",\"codepen\":\"<polygon points=\\\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"15.5\\\"></line><polyline points=\\\"22 8.5 12 15.5 2 8.5\\\"></polyline><polyline points=\\\"2 15.5 12 8.5 22 15.5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"8.5\\\"></line>\",\"codesandbox\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"7.5 4.21 12 6.81 16.5 4.21\\\"></polyline><polyline points=\\\"7.5 19.79 7.5 14.6 3 12\\\"></polyline><polyline points=\\\"21 12 16.5 14.6 16.5 19.79\\\"></polyline><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"coffee\":\"<path d=\\\"M18 8h1a4 4 0 0 1 0 8h-1\\\"></path><path d=\\\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\\\"></path><line x1=\\\"6\\\" y1=\\\"1\\\" x2=\\\"6\\\" y2=\\\"4\\\"></line><line x1=\\\"10\\\" y1=\\\"1\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"1\\\" x2=\\\"14\\\" y2=\\\"4\\\"></line>\",\"columns\":\"<path d=\\\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\\\"></path>\",\"command\":\"<path d=\\\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\\\"></path>\",\"compass\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"></polygon>\",\"copy\":\"<rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\\\"></path>\",\"corner-down-left\":\"<polyline points=\\\"9 10 4 15 9 20\\\"></polyline><path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\"></path>\",\"corner-down-right\":\"<polyline points=\\\"15 10 20 15 15 20\\\"></polyline><path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\"></path>\",\"corner-left-down\":\"<polyline points=\\\"14 15 9 20 4 15\\\"></polyline><path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\"></path>\",\"corner-left-up\":\"<polyline points=\\\"14 9 9 4 4 9\\\"></polyline><path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\"></path>\",\"corner-right-down\":\"<polyline points=\\\"10 15 15 20 20 15\\\"></polyline><path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\"></path>\",\"corner-right-up\":\"<polyline points=\\\"10 9 15 4 20 9\\\"></polyline><path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\"></path>\",\"corner-up-left\":\"<polyline points=\\\"9 14 4 9 9 4\\\"></polyline><path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\"></path>\",\"corner-up-right\":\"<polyline points=\\\"15 14 20 9 15 4\\\"></polyline><path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\"></path>\",\"cpu\":\"<rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect><line x1=\\\"9\\\" y1=\\\"1\\\" x2=\\\"9\\\" y2=\\\"4\\\"></line><line x1=\\\"15\\\" y1=\\\"1\\\" x2=\\\"15\\\" y2=\\\"4\\\"></line><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"9\\\" y2=\\\"23\\\"></line><line x1=\\\"15\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"23\\\"></line><line x1=\\\"20\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"9\\\"></line><line x1=\\\"20\\\" y1=\\\"14\\\" x2=\\\"23\\\" y2=\\\"14\\\"></line><line x1=\\\"1\\\" y1=\\\"9\\\" x2=\\\"4\\\" y2=\\\"9\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line>\",\"credit-card\":\"<rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"1\\\" y1=\\\"10\\\" x2=\\\"23\\\" y2=\\\"10\\\"></line>\",\"crop\":\"<path d=\\\"M6.13 1L6 16a2 2 0 0 0 2 2h15\\\"></path><path d=\\\"M1 6.13L16 6a2 2 0 0 1 2 2v15\\\"></path>\",\"crosshair\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"18\\\" y2=\\\"12\\\"></line><line x1=\\\"6\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"database\":\"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"></ellipse><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"></path><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"></path>\",\"delete\":\"<path d=\\\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\\\"></path><line x1=\\\"18\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"18\\\" y2=\\\"15\\\"></line>\",\"disc\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"dollar-sign\":\"<line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"></path>\",\"download-cloud\":\"<polyline points=\\\"8 17 12 21 16 17\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\\\"></path>\",\"download\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"7 10 12 15 17 10\\\"></polyline><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line>\",\"droplet\":\"<path d=\\\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\\\"></path>\",\"edit-2\":\"<path d=\\\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"></path>\",\"edit-3\":\"<path d=\\\"M12 20h9\\\"></path><path d=\\\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\\\"></path>\",\"edit\":\"<path d=\\\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\"></path><path d=\\\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\\\"></path>\",\"external-link\":\"<path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\"></path><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><line x1=\\\"10\\\" y1=\\\"14\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line>\",\"eye-off\":\"<path d=\\\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"eye\":\"<path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"></path><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"facebook\":\"<path d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"></path>\",\"fast-forward\":\"<polygon points=\\\"13 19 22 12 13 5 13 19\\\"></polygon><polygon points=\\\"2 19 11 12 2 5 2 19\\\"></polygon>\",\"feather\":\"<path d=\\\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\\\"></path><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"2\\\" y2=\\\"22\\\"></line><line x1=\\\"17.5\\\" y1=\\\"15\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"figma\":\"<path d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"></path><path d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"></path><path d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"></path>\",\"file-minus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-plus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-text\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"13\\\"></line><line x1=\\\"16\\\" y1=\\\"17\\\" x2=\\\"8\\\" y2=\\\"17\\\"></line><polyline points=\\\"10 9 9 9 8 9\\\"></polyline>\",\"file\":\"<path d=\\\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\\\"></path><polyline points=\\\"13 2 13 9 20 9\\\"></polyline>\",\"film\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"></rect><line x1=\\\"7\\\" y1=\\\"2\\\" x2=\\\"7\\\" y2=\\\"22\\\"></line><line x1=\\\"17\\\" y1=\\\"2\\\" x2=\\\"17\\\" y2=\\\"22\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"2\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><line x1=\\\"2\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"22\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"22\\\" y2=\\\"7\\\"></line>\",\"filter\":\"<polygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"></polygon>\",\"flag\":\"<path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\\\"></path><line x1=\\\"4\\\" y1=\\\"22\\\" x2=\\\"4\\\" y2=\\\"15\\\"></line>\",\"folder-minus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder-plus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"12\\\" y1=\\\"11\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path>\",\"framer\":\"<path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></path>\",\"frown\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"gift\":\"<polyline points=\\\"20 12 20 22 4 22 4 12\\\"></polyline><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"5\\\"></rect><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"7\\\"></line><path d=\\\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\\\"></path><path d=\\\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\\\"></path>\",\"git-branch\":\"<line x1=\\\"6\\\" y1=\\\"3\\\" x2=\\\"6\\\" y2=\\\"15\\\"></line><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><path d=\\\"M18 9a9 9 0 0 1-9 9\\\"></path>\",\"git-commit\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"1.05\\\" y1=\\\"12\\\" x2=\\\"7\\\" y2=\\\"12\\\"></line><line x1=\\\"17.01\\\" y1=\\\"12\\\" x2=\\\"22.96\\\" y2=\\\"12\\\"></line>\",\"git-merge\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"></path>\",\"git-pull-request\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"></path><line x1=\\\"6\\\" y1=\\\"9\\\" x2=\\\"6\\\" y2=\\\"21\\\"></line>\",\"github\":\"<path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\\\"></path>\",\"gitlab\":\"<path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\\\"></path>\",\"globe\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><path d=\\\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\\\"></path>\",\"grid\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"3\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect>\",\"hard-drive\":\"<line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path><line x1=\\\"6\\\" y1=\\\"16\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line><line x1=\\\"10\\\" y1=\\\"16\\\" x2=\\\"10\\\" y2=\\\"16\\\"></line>\",\"hash\":\"<line x1=\\\"4\\\" y1=\\\"9\\\" x2=\\\"20\\\" y2=\\\"9\\\"></line><line x1=\\\"4\\\" y1=\\\"15\\\" x2=\\\"20\\\" y2=\\\"15\\\"></line><line x1=\\\"10\\\" y1=\\\"3\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"21\\\"></line>\",\"headphones\":\"<path d=\\\"M3 18v-6a9 9 0 0 1 18 0v6\\\"></path><path d=\\\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\\\"></path>\",\"heart\":\"<path d=\\\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\\\"></path>\",\"help-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\"></path><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line>\",\"hexagon\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path>\",\"home\":\"<path d=\\\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\"></path><polyline points=\\\"9 22 9 12 15 12 15 22\\\"></polyline>\",\"image\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><polyline points=\\\"21 15 16 10 5 21\\\"></polyline>\",\"inbox\":\"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\"></polyline><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path>\",\"info\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line>\",\"instagram\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"></rect><path d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"></path><line x1=\\\"17.5\\\" y1=\\\"6.5\\\" x2=\\\"17.5\\\" y2=\\\"6.5\\\"></line>\",\"italic\":\"<line x1=\\\"19\\\" y1=\\\"4\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"20\\\" x2=\\\"5\\\" y2=\\\"20\\\"></line><line x1=\\\"15\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"20\\\"></line>\",\"key\":\"<path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"></path>\",\"layers\":\"<polygon points=\\\"12 2 2 7 12 12 22 7 12 2\\\"></polygon><polyline points=\\\"2 17 12 22 22 17\\\"></polyline><polyline points=\\\"2 12 12 17 22 12\\\"></polyline>\",\"layout\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"3\\\" y1=\\\"9\\\" x2=\\\"21\\\" y2=\\\"9\\\"></line><line x1=\\\"9\\\" y1=\\\"21\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"life-buoy\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"9.17\\\" y2=\\\"9.17\\\"></line><line x1=\\\"14.83\\\" y1=\\\"14.83\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"18.36\\\" y2=\\\"5.64\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"9.17\\\" y2=\\\"14.83\\\"></line>\",\"link-2\":\"<path d=\\\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\\\"></path><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"link\":\"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"></path><path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"></path>\",\"linkedin\":\"<path d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"></path><rect x=\\\"2\\\" y=\\\"9\\\" width=\\\"4\\\" height=\\\"12\\\"></rect><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"></circle>\",\"list\":\"<line x1=\\\"8\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"8\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"loader\":\"<line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"7.76\\\" y2=\\\"7.76\\\"></line><line x1=\\\"16.24\\\" y1=\\\"16.24\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"6\\\" y2=\\\"12\\\"></line><line x1=\\\"18\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"7.76\\\" y2=\\\"16.24\\\"></line><line x1=\\\"16.24\\\" y1=\\\"7.76\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line>\",\"lock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"></path>\",\"log-in\":\"<path d=\\\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\\\"></path><polyline points=\\\"10 17 15 12 10 7\\\"></polyline><line x1=\\\"15\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line>\",\"log-out\":\"<path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\"></path><polyline points=\\\"16 17 21 12 16 7\\\"></polyline><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"9\\\" y2=\\\"12\\\"></line>\",\"mail\":\"<path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"></path><polyline points=\\\"22,6 12,13 2,6\\\"></polyline>\",\"map-pin\":\"<path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\\\"></path><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"></circle>\",\"map\":\"<polygon points=\\\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\\\"></polygon><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"18\\\"></line><line x1=\\\"16\\\" y1=\\\"6\\\" x2=\\\"16\\\" y2=\\\"22\\\"></line>\",\"maximize-2\":\"<polyline points=\\\"15 3 21 3 21 9\\\"></polyline><polyline points=\\\"9 21 3 21 3 15\\\"></polyline><line x1=\\\"21\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"10\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"maximize\":\"<path d=\\\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\\\"></path>\",\"meh\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"15\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"menu\":\"<line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line>\",\"message-circle\":\"<path d=\\\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\\\"></path>\",\"message-square\":\"<path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\"></path>\",\"mic-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\\\"></path><path d=\\\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"mic\":\"<path d=\\\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\\\"></path><path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"minimize-2\":\"<polyline points=\\\"4 14 10 14 10 20\\\"></polyline><polyline points=\\\"20 10 14 10 14 4\\\"></polyline><line x1=\\\"14\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"minimize\":\"<path d=\\\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\\\"></path>\",\"minus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"monitor\":\"<rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"21\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line>\",\"moon\":\"<path d=\\\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\\\"></path>\",\"more-horizontal\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle>\",\"more-vertical\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"mouse-pointer\":\"<path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\\\"></path><path d=\\\"M13 13l6 6\\\"></path>\",\"move\":\"<polyline points=\\\"5 9 2 12 5 15\\\"></polyline><polyline points=\\\"9 5 12 2 15 5\\\"></polyline><polyline points=\\\"15 19 12 22 9 19\\\"></polyline><polyline points=\\\"19 9 22 12 19 15\\\"></polyline><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line>\",\"music\":\"<path d=\\\"M9 18V5l12-2v13\\\"></path><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"></circle>\",\"navigation-2\":\"<polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon>\",\"navigation\":\"<polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon>\",\"octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon>\",\"package\":\"<line x1=\\\"16.5\\\" y1=\\\"9.4\\\" x2=\\\"7.5\\\" y2=\\\"4.21\\\"></line><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"paperclip\":\"<path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\\\"></path>\",\"pause-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"10\\\" y1=\\\"15\\\" x2=\\\"10\\\" y2=\\\"9\\\"></line><line x1=\\\"14\\\" y1=\\\"15\\\" x2=\\\"14\\\" y2=\\\"9\\\"></line>\",\"pause\":\"<rect x=\\\"6\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect><rect x=\\\"14\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect>\",\"pen-tool\":\"<path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"></path><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\\\"></path><path d=\\\"M2 2l7.586 7.586\\\"></path><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"></circle>\",\"percent\":\"<line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"5\\\" y2=\\\"19\\\"></line><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"></circle>\",\"phone-call\":\"<path d=\\\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-forwarded\":\"<polyline points=\\\"19 1 23 5 19 9\\\"></polyline><line x1=\\\"15\\\" y1=\\\"5\\\" x2=\\\"23\\\" y2=\\\"5\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-incoming\":\"<polyline points=\\\"16 2 16 8 22 8\\\"></polyline><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"16\\\" y2=\\\"8\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-missed\":\"<line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><line x1=\\\"17\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"7\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-off\":\"<path d=\\\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\\\"></path><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"23\\\"></line>\",\"phone-outgoing\":\"<polyline points=\\\"23 7 23 1 17 1\\\"></polyline><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"1\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone\":\"<path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"pie-chart\":\"<path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\"></path><path d=\\\"M22 12A10 10 0 0 0 12 2v10z\\\"></path>\",\"play-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"10 8 16 12 10 16 10 8\\\"></polygon>\",\"play\":\"<polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon>\",\"plus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"pocket\":\"<path d=\\\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\\\"></path><polyline points=\\\"8 10 12 14 16 10\\\"></polyline>\",\"power\":\"<path d=\\\"M18.36 6.64a9 9 0 1 1-12.73 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"printer\":\"<polyline points=\\\"6 9 6 2 18 2 18 9\\\"></polyline><path d=\\\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\"></path><rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\"></rect>\",\"radio\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle><path d=\\\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\\\"></path>\",\"refresh-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><polyline points=\\\"23 20 23 14 17 14\\\"></polyline><path d=\\\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\\\"></path>\",\"refresh-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><polyline points=\\\"1 20 1 14 7 14\\\"></polyline><path d=\\\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\\\"></path>\",\"repeat\":\"<polyline points=\\\"17 1 21 5 17 9\\\"></polyline><path d=\\\"M3 11V9a4 4 0 0 1 4-4h14\\\"></path><polyline points=\\\"7 23 3 19 7 15\\\"></polyline><path d=\\\"M21 13v2a4 4 0 0 1-4 4H3\\\"></path>\",\"rewind\":\"<polygon points=\\\"11 19 2 12 11 5 11 19\\\"></polygon><polygon points=\\\"22 19 13 12 22 5 22 19\\\"></polygon>\",\"rotate-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><path d=\\\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\\\"></path>\",\"rotate-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><path d=\\\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\\\"></path>\",\"rss\":\"<path d=\\\"M4 11a9 9 0 0 1 9 9\\\"></path><path d=\\\"M4 4a16 16 0 0 1 16 16\\\"></path><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"save\":\"<path d=\\\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\\\"></path><polyline points=\\\"17 21 17 13 7 13 7 21\\\"></polyline><polyline points=\\\"7 3 7 8 15 8\\\"></polyline>\",\"scissors\":\"<circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><line x1=\\\"20\\\" y1=\\\"4\\\" x2=\\\"8.12\\\" y2=\\\"15.88\\\"></line><line x1=\\\"14.47\\\" y1=\\\"14.48\\\" x2=\\\"20\\\" y2=\\\"20\\\"></line><line x1=\\\"8.12\\\" y1=\\\"8.12\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"search\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line>\",\"send\":\"<line x1=\\\"22\\\" y1=\\\"2\\\" x2=\\\"11\\\" y2=\\\"13\\\"></line><polygon points=\\\"22 2 15 22 11 13 2 9 22 2\\\"></polygon>\",\"server\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"6\\\"></line><line x1=\\\"6\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line>\",\"settings\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><path d=\\\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\\\"></path>\",\"share-2\":\"<circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"></circle><line x1=\\\"8.59\\\" y1=\\\"13.51\\\" x2=\\\"15.42\\\" y2=\\\"17.49\\\"></line><line x1=\\\"15.41\\\" y1=\\\"6.51\\\" x2=\\\"8.59\\\" y2=\\\"10.49\\\"></line>\",\"share\":\"<path d=\\\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\\\"></path><polyline points=\\\"16 6 12 2 8 6\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"shield-off\":\"<path d=\\\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\\\"></path><path d=\\\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"shield\":\"<path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"></path>\",\"shopping-bag\":\"<path d=\\\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\\\"></path><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><path d=\\\"M16 10a4 4 0 0 1-8 0\\\"></path>\",\"shopping-cart\":\"<circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><path d=\\\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\\\"></path>\",\"shuffle\":\"<polyline points=\\\"16 3 21 3 21 8\\\"></polyline><line x1=\\\"4\\\" y1=\\\"20\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><polyline points=\\\"21 16 21 21 16 21\\\"></polyline><line x1=\\\"15\\\" y1=\\\"15\\\" x2=\\\"21\\\" y2=\\\"21\\\"></line><line x1=\\\"4\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"sidebar\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"3\\\" x2=\\\"9\\\" y2=\\\"21\\\"></line>\",\"skip-back\":\"<polygon points=\\\"19 20 9 12 19 4 19 20\\\"></polygon><line x1=\\\"5\\\" y1=\\\"19\\\" x2=\\\"5\\\" y2=\\\"5\\\"></line>\",\"skip-forward\":\"<polygon points=\\\"5 4 15 12 5 20 5 4\\\"></polygon><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"19\\\" y2=\\\"19\\\"></line>\",\"slack\":\"<path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\\\"></path><path d=\\\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\\\"></path><path d=\\\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\\\"></path><path d=\\\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\\\"></path><path d=\\\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\\\"></path><path d=\\\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"></path>\",\"slash\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line>\",\"sliders\":\"<line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line><line x1=\\\"4\\\" y1=\\\"10\\\" x2=\\\"4\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"20\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"16\\\"></line><line x1=\\\"20\\\" y1=\\\"12\\\" x2=\\\"20\\\" y2=\\\"3\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"7\\\" y2=\\\"14\\\"></line><line x1=\\\"9\\\" y1=\\\"8\\\" x2=\\\"15\\\" y2=\\\"8\\\"></line><line x1=\\\"17\\\" y1=\\\"16\\\" x2=\\\"23\\\" y2=\\\"16\\\"></line>\",\"smartphone\":\"<rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"smile\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"speaker\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"></circle><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line>\",\"square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"star\":\"<polygon points=\\\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\\\"></polygon>\",\"stop-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect>\",\"sun\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"4.22\\\" y1=\\\"4.22\\\" x2=\\\"5.64\\\" y2=\\\"5.64\\\"></line><line x1=\\\"18.36\\\" y1=\\\"18.36\\\" x2=\\\"19.78\\\" y2=\\\"19.78\\\"></line><line x1=\\\"1\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"23\\\" y2=\\\"12\\\"></line><line x1=\\\"4.22\\\" y1=\\\"19.78\\\" x2=\\\"5.64\\\" y2=\\\"18.36\\\"></line><line x1=\\\"18.36\\\" y1=\\\"5.64\\\" x2=\\\"19.78\\\" y2=\\\"4.22\\\"></line>\",\"sunrise\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"9\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"8 6 12 2 16 6\\\"></polyline>\",\"sunset\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"16 5 12 9 8 5\\\"></polyline>\",\"tablet\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\" transform=\\\"rotate(180 12 12)\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"tag\":\"<path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\\\"></path><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line>\",\"target\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle>\",\"terminal\":\"<polyline points=\\\"4 17 10 11 4 5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"20\\\" y2=\\\"19\\\"></line>\",\"thermometer\":\"<path d=\\\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\\\"></path>\",\"thumbs-down\":\"<path d=\\\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\\\"></path>\",\"thumbs-up\":\"<path d=\\\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\\\"></path>\",\"toggle-left\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"toggle-right\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"trash-2\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path><line x1=\\\"10\\\" y1=\\\"11\\\" x2=\\\"10\\\" y2=\\\"17\\\"></line><line x1=\\\"14\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"17\\\"></line>\",\"trash\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path>\",\"trello\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"7\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><rect x=\\\"14\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"5\\\"></rect>\",\"trending-down\":\"<polyline points=\\\"23 18 13.5 8.5 8.5 13.5 1 6\\\"></polyline><polyline points=\\\"17 18 23 18 23 12\\\"></polyline>\",\"trending-up\":\"<polyline points=\\\"23 6 13.5 15.5 8.5 10.5 1 18\\\"></polyline><polyline points=\\\"17 6 23 6 23 12\\\"></polyline>\",\"triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path>\",\"truck\":\"<rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"15\\\" height=\\\"13\\\"></rect><polygon points=\\\"16 8 20 8 23 11 23 16 16 16 16 8\\\"></polygon><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle>\",\"tv\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><polyline points=\\\"17 2 12 7 7 2\\\"></polyline>\",\"twitter\":\"<path d=\\\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\\\"></path>\",\"type\":\"<polyline points=\\\"4 7 4 4 20 4 20 7\\\"></polyline><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"4\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"umbrella\":\"<path d=\\\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\\\"></path>\",\"underline\":\"<path d=\\\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\\\"></path><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"21\\\"></line>\",\"unlock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 9.9-1\\\"></path>\",\"upload-cloud\":\"<polyline points=\\\"16 16 12 12 8 16\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\\\"></path><polyline points=\\\"16 16 12 12 8 16\\\"></polyline>\",\"upload\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"17 8 12 3 7 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"3\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"user-check\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><polyline points=\\\"17 11 19 13 23 9\\\"></polyline>\",\"user-minus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-plus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"20\\\" y1=\\\"8\\\" x2=\\\"20\\\" y2=\\\"14\\\"></line><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-x\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"18\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"13\\\"></line><line x1=\\\"23\\\" y1=\\\"8\\\" x2=\\\"18\\\" y2=\\\"13\\\"></line>\",\"user\":\"<path d=\\\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle>\",\"users\":\"<path d=\\\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><path d=\\\"M23 21v-2a4 4 0 0 0-3-3.87\\\"></path><path d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"></path>\",\"video-off\":\"<path d=\\\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"video\":\"<polygon points=\\\"23 7 16 12 23 17 23 7\\\"></polygon><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"voicemail\":\"<circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><line x1=\\\"5.5\\\" y1=\\\"16\\\" x2=\\\"18.5\\\" y2=\\\"16\\\"></line>\",\"volume-1\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-2\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-x\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><line x1=\\\"23\\\" y1=\\\"9\\\" x2=\\\"17\\\" y2=\\\"15\\\"></line><line x1=\\\"17\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"15\\\"></line>\",\"volume\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon>\",\"watch\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"></circle><polyline points=\\\"12 9 12 12 13.5 13.5\\\"></polyline><path d=\\\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\\\"></path>\",\"wifi-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\\\"></path><path d=\\\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\\\"></path><path d=\\\"M10.71 5.05A16 16 0 0 1 22.58 9\\\"></path><path d=\\\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"wifi\":\"<path d=\\\"M5 12.55a11 11 0 0 1 14.08 0\\\"></path><path d=\\\"M1.42 9a16 16 0 0 1 21.16 0\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"wind\":\"<path d=\\\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\\\"></path>\",\"x-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"x\":\"<line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\"></line>\",\"youtube\":\"<path d=\\\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\\\"></path><polygon points=\\\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\\\"></polygon>\",\"zap-off\":\"<polyline points=\\\"12.41 6.75 13 2 10.57 4.92\\\"></polyline><polyline points=\\\"18.57 12.91 21 10 15.66 10\\\"></polyline><polyline points=\\\"8 8 3 14 12 14 11 22 16 16\\\"></polyline><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"zap\":\"<polygon points=\\\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\\\"></polygon>\",\"zoom-in\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"11\\\" y1=\\\"8\\\" x2=\\\"11\\\" y2=\\\"14\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\",\"zoom-out\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\"};\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tfor (var k in object) {\n\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/es/array/from.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/es/array/from.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/a-function.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/a-function.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/an-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/an-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-from.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/array-from.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(/*! ../internals/bind-context */ \"./node_modules/core-js/internals/bind-context.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-includes.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/array-includes.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/bind-context.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/bind-context.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof-raw.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/classof-raw.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/classof.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/copy-constructor-properties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/correct-prototype-getter.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-iterator-constructor.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property-descriptor.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/define-iterator.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/define-iterator.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/descriptors.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/descriptors.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/document-create-element.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/document-create-element.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/enum-bug-keys.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/export.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/export.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f;\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/fails.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/core-js/internals/fails.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/function-to-string.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/internals/function-to-string.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/get-iterator-method.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/internals/get-iterator-method.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/global.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/global.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/has.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/has.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hidden-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/hidden-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hide.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/hide.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/html.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/html.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/ie8-dom-define.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/indexed-object.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/indexed-object.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/internal-state.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/internal-state.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-array-iterator-method.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-forced.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-forced.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-pure.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/is-pure.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators-core.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators-core.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-symbol.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-symbol.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-weak-map.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-weak-map.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-create.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/object-create.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-properties.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-properties.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-property.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-property.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-names.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys-internal.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys-internal.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-property-is-enumerable.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-set-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\");\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/own-keys.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/own-keys.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/path.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/path.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/redefine.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/redefine.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/require-object-coercible.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/require-object-coercible.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-global.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/set-global.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-to-string-tag.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/set-to-string-tag.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared-key.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/shared-key.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/shared.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/string-at.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/string-at.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-absolute-index.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-absolute-index.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-indexed-object.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-indexed-object.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-integer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/to-integer.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-length.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-length.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-primitive.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/to-primitive.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/uid.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/uid.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/well-known-symbol.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/well-known-symbol.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\");\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.array.from.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/modules/es.array.from.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.string.iterator.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/modules/es.string.iterator.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar codePointAt = __webpack_require__(/*! ../internals/string-at */ \"./node_modules/core-js/internals/string-at.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ \"./src/default-attrs.json\":\n/*!********************************!*\\\n !*** ./src/default-attrs.json ***!\n \\********************************/\n/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */\n/***/ (function(module) {\n\nmodule.exports = {\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":2,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"};\n\n/***/ }),\n\n/***/ \"./src/icon.js\":\n/*!*********************!*\\\n !*** ./src/icon.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ \"./src/default-attrs.json\");\n\nvar _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Icon = function () {\n function Icon(name, contents) {\n var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Icon);\n\n this.name = name;\n this.contents = contents;\n this.tags = tags;\n this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });\n }\n\n /**\n * Create an SVG string.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\n _createClass(Icon, [{\n key: 'toSvg',\n value: function toSvg() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });\n\n return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';\n }\n\n /**\n * Return string representation of an `Icon`.\n *\n * Added for backward compatibility. If old code expects `feather.icons.<name>`\n * to be a string, `toString()` will get implicitly called.\n *\n * @returns {string}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.contents;\n }\n }]);\n\n return Icon;\n}();\n\n/**\n * Convert attributes object to string of HTML attributes.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\nfunction attrsToString(attrs) {\n return Object.keys(attrs).map(function (key) {\n return key + '=\"' + attrs[key] + '\"';\n }).join(' ');\n}\n\nexports.default = Icon;\n\n/***/ }),\n\n/***/ \"./src/icons.js\":\n/*!**********************!*\\\n !*** ./src/icons.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icon = __webpack_require__(/*! ./icon */ \"./src/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _icons = __webpack_require__(/*! ../dist/icons.json */ \"./dist/icons.json\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _tags = __webpack_require__(/*! ./tags.json */ \"./src/tags.json\");\n\nvar _tags2 = _interopRequireDefault(_tags);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = Object.keys(_icons2.default).map(function (key) {\n return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);\n}).reduce(function (object, icon) {\n object[icon.name] = icon;\n return object;\n}, {});\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _toSvg = __webpack_require__(/*! ./to-svg */ \"./src/to-svg.js\");\n\nvar _toSvg2 = _interopRequireDefault(_toSvg);\n\nvar _replace = __webpack_require__(/*! ./replace */ \"./src/replace.js\");\n\nvar _replace2 = _interopRequireDefault(_replace);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };\n\n/***/ }),\n\n/***/ \"./src/replace.js\":\n/*!************************!*\\\n !*** ./src/replace.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */\n\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Replace all HTML elements that have a `data-feather` attribute with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {Object} attrs\n */\nfunction replace() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof document === 'undefined') {\n throw new Error('`feather.replace()` only works in a browser environment.');\n }\n\n var elementsToReplace = document.querySelectorAll('[data-feather]');\n\n Array.from(elementsToReplace).forEach(function (element) {\n return replaceElement(element, attrs);\n });\n}\n\n/**\n * Replace a single HTML element with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {HTMLElement} element\n * @param {Object} attrs\n */\nfunction replaceElement(element) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var elementAttrs = getAttrs(element);\n var name = elementAttrs['data-feather'];\n delete elementAttrs['data-feather'];\n\n var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));\n var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');\n var svgElement = svgDocument.querySelector('svg');\n\n element.parentNode.replaceChild(svgElement, element);\n}\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nfunction getAttrs(element) {\n return Array.from(element.attributes).reduce(function (attrs, attr) {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n}\n\nexports.default = replace;\n\n/***/ }),\n\n/***/ \"./src/tags.json\":\n/*!***********************!*\\\n !*** ./src/tags.json ***!\n \\***********************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, at-sign, award, aperture, bell, bell-off, bluetooth, book-open, book, bookmark, briefcase, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, coffee, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, film, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, global, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, life-bouy, linkedin, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, play, play-circle, plus, plus-circle, plus-square, pocket, power, radio, rewind, rss, save, search, send, settings, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slash, sliders, smile, speaker, star, sun, sunrise, sunset, tag, target, terminal, thumbs-down, thumbs-up, toggle-left, toggle-right, trash, trash-2, triangle, truck, twitter, umbrella, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":[\"pulse\",\"health\",\"action\",\"motion\"],\"airplay\":[\"stream\",\"cast\",\"mirroring\"],\"alert-circle\":[\"warning\"],\"alert-octagon\":[\"warning\"],\"alert-triangle\":[\"warning\"],\"at-sign\":[\"mention\"],\"award\":[\"achievement\",\"badge\"],\"aperture\":[\"camera\",\"photo\"],\"bell\":[\"alarm\",\"notification\"],\"bell-off\":[\"alarm\",\"notification\",\"silent\"],\"bluetooth\":[\"wireless\"],\"book-open\":[\"read\"],\"book\":[\"read\",\"dictionary\",\"booklet\",\"magazine\"],\"bookmark\":[\"read\",\"clip\",\"marker\",\"tag\"],\"briefcase\":[\"work\",\"bag\",\"baggage\",\"folder\"],\"clipboard\":[\"copy\"],\"clock\":[\"time\",\"watch\",\"alarm\"],\"cloud-drizzle\":[\"weather\",\"shower\"],\"cloud-lightning\":[\"weather\",\"bolt\"],\"cloud-rain\":[\"weather\"],\"cloud-snow\":[\"weather\",\"blizzard\"],\"cloud\":[\"weather\"],\"codepen\":[\"logo\"],\"codesandbox\":[\"logo\"],\"coffee\":[\"drink\",\"cup\",\"mug\",\"tea\",\"cafe\",\"hot\",\"beverage\"],\"command\":[\"keyboard\",\"cmd\"],\"compass\":[\"navigation\",\"safari\",\"travel\"],\"copy\":[\"clone\",\"duplicate\"],\"corner-down-left\":[\"arrow\"],\"corner-down-right\":[\"arrow\"],\"corner-left-down\":[\"arrow\"],\"corner-left-up\":[\"arrow\"],\"corner-right-down\":[\"arrow\"],\"corner-right-up\":[\"arrow\"],\"corner-up-left\":[\"arrow\"],\"corner-up-right\":[\"arrow\"],\"credit-card\":[\"purchase\",\"payment\",\"cc\"],\"crop\":[\"photo\",\"image\"],\"crosshair\":[\"aim\",\"target\"],\"database\":[\"storage\"],\"delete\":[\"remove\"],\"disc\":[\"album\",\"cd\",\"dvd\",\"music\"],\"dollar-sign\":[\"currency\",\"money\",\"payment\"],\"droplet\":[\"water\"],\"edit\":[\"pencil\",\"change\"],\"edit-2\":[\"pencil\",\"change\"],\"edit-3\":[\"pencil\",\"change\"],\"eye\":[\"view\",\"watch\"],\"eye-off\":[\"view\",\"watch\"],\"external-link\":[\"outbound\"],\"facebook\":[\"logo\"],\"fast-forward\":[\"music\"],\"figma\":[\"logo\",\"design\",\"tool\"],\"film\":[\"movie\",\"video\"],\"folder-minus\":[\"directory\"],\"folder-plus\":[\"directory\"],\"folder\":[\"directory\"],\"framer\":[\"logo\",\"design\",\"tool\"],\"frown\":[\"emoji\",\"face\",\"bad\",\"sad\",\"emotion\"],\"gift\":[\"present\",\"box\",\"birthday\",\"party\"],\"git-branch\":[\"code\",\"version control\"],\"git-commit\":[\"code\",\"version control\"],\"git-merge\":[\"code\",\"version control\"],\"git-pull-request\":[\"code\",\"version control\"],\"github\":[\"logo\",\"version control\"],\"gitlab\":[\"logo\",\"version control\"],\"global\":[\"world\",\"browser\",\"language\",\"translate\"],\"hard-drive\":[\"computer\",\"server\"],\"hash\":[\"hashtag\",\"number\",\"pound\"],\"headphones\":[\"music\",\"audio\"],\"heart\":[\"like\",\"love\"],\"help-circle\":[\"question mark\"],\"hexagon\":[\"shape\",\"node.js\",\"logo\"],\"home\":[\"house\"],\"image\":[\"picture\"],\"inbox\":[\"email\"],\"instagram\":[\"logo\",\"camera\"],\"key\":[\"password\",\"login\",\"authentication\"],\"life-bouy\":[\"help\",\"life ring\",\"support\"],\"linkedin\":[\"logo\"],\"lock\":[\"security\",\"password\"],\"log-in\":[\"sign in\",\"arrow\"],\"log-out\":[\"sign out\",\"arrow\"],\"mail\":[\"email\"],\"map-pin\":[\"location\",\"navigation\",\"travel\",\"marker\"],\"map\":[\"location\",\"navigation\",\"travel\"],\"maximize\":[\"fullscreen\"],\"maximize-2\":[\"fullscreen\",\"arrows\"],\"meh\":[\"emoji\",\"face\",\"neutral\",\"emotion\"],\"menu\":[\"bars\",\"navigation\",\"hamburger\"],\"message-circle\":[\"comment\",\"chat\"],\"message-square\":[\"comment\",\"chat\"],\"mic-off\":[\"record\"],\"mic\":[\"record\"],\"minimize\":[\"exit fullscreen\"],\"minimize-2\":[\"exit fullscreen\",\"arrows\"],\"monitor\":[\"tv\"],\"moon\":[\"dark\",\"night\"],\"more-horizontal\":[\"ellipsis\"],\"more-vertical\":[\"ellipsis\"],\"mouse-pointer\":[\"arrow\",\"cursor\"],\"move\":[\"arrows\"],\"navigation\":[\"location\",\"travel\"],\"navigation-2\":[\"location\",\"travel\"],\"octagon\":[\"stop\"],\"package\":[\"box\"],\"paperclip\":[\"attachment\"],\"pause\":[\"music\",\"stop\"],\"pause-circle\":[\"music\",\"stop\"],\"pen-tool\":[\"vector\",\"drawing\"],\"play\":[\"music\",\"start\"],\"play-circle\":[\"music\",\"start\"],\"plus\":[\"add\",\"new\"],\"plus-circle\":[\"add\",\"new\"],\"plus-square\":[\"add\",\"new\"],\"pocket\":[\"logo\",\"save\"],\"power\":[\"on\",\"off\"],\"radio\":[\"signal\"],\"rewind\":[\"music\"],\"rss\":[\"feed\",\"subscribe\"],\"save\":[\"floppy disk\"],\"search\":[\"find\",\"magnifier\",\"magnifying glass\"],\"send\":[\"message\",\"mail\",\"paper airplane\"],\"settings\":[\"cog\",\"edit\",\"gear\",\"preferences\"],\"shield\":[\"security\"],\"shield-off\":[\"security\"],\"shopping-bag\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shopping-cart\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shuffle\":[\"music\"],\"skip-back\":[\"music\"],\"skip-forward\":[\"music\"],\"slash\":[\"ban\",\"no\"],\"sliders\":[\"settings\",\"controls\"],\"smile\":[\"emoji\",\"face\",\"happy\",\"good\",\"emotion\"],\"speaker\":[\"music\"],\"star\":[\"bookmark\",\"favorite\",\"like\"],\"sun\":[\"brightness\",\"weather\",\"light\"],\"sunrise\":[\"weather\"],\"sunset\":[\"weather\"],\"tag\":[\"label\"],\"target\":[\"bullseye\"],\"terminal\":[\"code\",\"command line\"],\"thumbs-down\":[\"dislike\",\"bad\"],\"thumbs-up\":[\"like\",\"good\"],\"toggle-left\":[\"on\",\"off\",\"switch\"],\"toggle-right\":[\"on\",\"off\",\"switch\"],\"trash\":[\"garbage\",\"delete\",\"remove\"],\"trash-2\":[\"garbage\",\"delete\",\"remove\"],\"triangle\":[\"delta\"],\"truck\":[\"delivery\",\"van\",\"shipping\"],\"twitter\":[\"logo\"],\"umbrella\":[\"rain\",\"weather\"],\"video-off\":[\"camera\",\"movie\",\"film\"],\"video\":[\"camera\",\"movie\",\"film\"],\"voicemail\":[\"phone\"],\"volume\":[\"music\",\"sound\",\"mute\"],\"volume-1\":[\"music\",\"sound\"],\"volume-2\":[\"music\",\"sound\"],\"volume-x\":[\"music\",\"sound\",\"mute\"],\"watch\":[\"clock\",\"time\"],\"wind\":[\"weather\",\"air\"],\"x-circle\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x-octagon\":[\"delete\",\"stop\",\"alert\",\"warning\",\"times\"],\"x-square\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"youtube\":[\"logo\",\"video\",\"play\"],\"zap-off\":[\"flash\",\"camera\",\"lightning\"],\"zap\":[\"flash\",\"camera\",\"lightning\"]};\n\n/***/ }),\n\n/***/ \"./src/to-svg.js\":\n/*!***********************!*\\\n !*** ./src/to-svg.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an SVG string.\n * @deprecated\n * @param {string} name\n * @param {Object} attrs\n * @returns {string}\n */\nfunction toSvg(name) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');\n\n if (!name) {\n throw new Error('The required `key` (icon name) parameter is missing.');\n }\n\n if (!_icons2.default[name]) {\n throw new Error('No icon matching \\'' + name + '\\'. See the complete list of icons at https://feathericons.com');\n }\n\n return _icons2.default[name].toSvg(attrs);\n}\n\nexports.default = toSvg;\n\n/***/ }),\n\n/***/ 0:\n/*!**************************************************!*\\\n !*** multi core-js/es/array/from ./src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! core-js/es/array/from */\"./node_modules/core-js/es/array/from.js\");\nmodule.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=feather.js.map","import feather from \"feather-icons\";\r\nexport default icon => feather.toSvg(icon);","<script>\r\n\r\nimport {database} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let name = \"\";\r\nexport let label = \"\";\r\nexport let icon = \"\";\r\n\r\nlet navActive = \"\";\r\n\r\ndatabase.subscribe(db => {\r\n navActive = (db.activeNav === name ? \"active\" : \"\")\r\n});\r\n\r\nconst setActive = () => \r\n database.setActiveNav(name);\r\n\r\n</script>\r\n\r\n<div class=\"{navActive}\">\r\n <div class=\"nav-item\" \r\n on:click={setActive}>\r\n <div class=\"inner\">\r\n <div class=\"icon\">{@html getIcon(icon)}</div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.nav-item {\r\n padding: 0px 5px;\r\n display: block;\r\n padding: 10px;\r\n color: var(--slate);\r\n cursor: pointer;\r\n}\r\n\r\n.inner {\r\n padding: 0px 20px 10px 0px;\r\n display: inline-block;\r\n width:100%;\r\n}\r\n\r\n.nav-item:hover {\r\n background-color: var(--primary25);\r\n}\r\n\r\n.icon {\r\n font-size:0.9em; \r\n display: inline-block; \r\n position: relative;\r\n top: 5px;\r\n margin-right:5px;\r\n width:100%;\r\n}\r\n\r\n.active > div {\r\n background-color: var(--primary10);\r\n color: var(--secondary100);\r\n}\r\n\r\n.active>div:hover {\r\n background-color: var(--slate);\r\n color: var(--secondary100);\r\n}\r\n\r\n.active {\r\n background-color: white; \r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport NavItem from \"./NavItem.svelte\";\r\n\r\nexport let width=50;\r\n\r\n</script>\r\n\r\n<nav class=\"nav\"\r\n style=\"width: {width};\">\r\n <img src=\"/_builder/assets/budibase-logo-only.png\" class=\"logo\" alt=\"budibase logo\"/>\r\n <NavItem name=\"database\" label=\"Database\" icon=\"database\" />\r\n <NavItem name=\"actions\" label=\"Actions\" icon=\"zap\" />\r\n <NavItem name=\"access levels\" label=\"Access Levels\" icon=\"user\" />\r\n <NavItem name=\"user interface\" label=\"User Interface\" icon=\"monitor\"/>\r\n <NavItem name=\"package\" label=\"Package\" icon=\"package\"/>\r\n</nav>\r\n\r\n\r\n\r\n<style>\r\n\r\n.nav {\r\n height: 100%;\r\n position: fixed;\r\n left: 0px;\r\n background-color: var(--secondary100);\r\n color: var(--darkslate);\r\n}\r\n\r\n.nav > img {\r\n width:100%;\r\n margin-bottom: 30px;\r\n margin-top: 5px;\r\n margin-left:0px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport {database} from \"../builderStore\";\r\nimport {cloneDeep} from \"lodash\";\r\nexport let level = 0;\r\nexport let node;\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"title\" on:click={() => database.selectExistingNode(node.nodeId)} style=\"padding-left: {20 + (level * 20)}px\">\r\n {node.name}\r\n </div>\r\n {#if node.children}\r\n {#each node.children as child}\r\n <svelte:self node={child} \r\n level={level+1}/>\r\n {/each}\r\n {/if}\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root { \r\n display: block;\r\n font-size: 13pt;\r\n width: 100%;\r\n cursor: pointer;\r\n}\r\n\r\n.title {\r\n font: var(--bodytext);\r\n padding-top: 10px;\r\n padding-right: 5px;\r\n padding-bottom: 10px;\r\n color: var(--secondary100);\r\n}\r\n\r\n.title:hover {\r\n background-color: var(--secondary10);\r\n}\r\n\r\n</style>","<script>\r\nexport let text = \"\";\r\nexport let label = \"\";\r\n</script>\r\n\r\n<div class=\"container\">\r\n <div class=\"label\">{label}</div>\r\n <input class=\"control uk-input\" bind:value={text} >\r\n</div>\r\n\r\n<style>\r\n\r\n.container {\r\n display: grid;\r\n grid-template-columns: [label] 100px [control] auto;\r\n margin: 20px 0px;\r\n}\r\n.label {\r\n grid-column-start: label;\r\n align-self: center;\r\n}\r\n.control {\r\n grid-column-start: control;\r\n align-self: center;\r\n margin: 0;\r\n}\r\n\r\ninput {\r\n width:300px;\r\n}\r\n\r\n</style>","<script>\r\nimport {createEventDispatcher} from \"svelte\";\r\n\r\nexport let selected;\r\nexport let label;\r\nexport let options;\r\nexport let valueMember;\r\nexport let textMember;\r\nexport let multiple=false;\r\n\r\nconst dispatch =createEventDispatcher();\r\n\r\n\r\n</script>\r\n\r\n<div class=\"container\">\r\n <div class=\"label\">{label}</div>\r\n\r\n {#if multiple}\r\n \r\n <select class=\"control uk-select\" multiple bind:value={selected} on:change>\r\n {#each options as option}\r\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\r\n {/each}\r\n </select>\r\n\r\n {:else}\r\n\r\n <select class=\"control uk-select\" bind:value={selected} on:change>\r\n {#each options as option}\r\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\r\n {/each}\r\n </select>\r\n {/if}\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.container {\r\n display: grid;\r\n grid-template-columns: [label] 100px [control] auto;\r\n margin: 20px 0px;\r\n}\r\n.label {\r\n grid-column-start: label;\r\n align-self: center;\r\n}\r\n.control {\r\n grid-column-start: control;\r\n align-self: center;\r\n margin: 0;\r\n}\r\n\r\nselect {\r\n width:300px;\r\n}\r\n\r\n</style>","<script>\r\nexport let style=\"\";\r\n</script>\r\n\r\n<div class=\"root\" style={style}>\r\n <slot />\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n display: flex;\r\n}\r\n\r\n.root:last-child {\r\n border-radius: 0 var(--borderradius) var(--borderradius) 0;\r\n}\r\n\r\n.root:first-child {\r\n border-radius: var(--borderradius) 0 0 var(--borderradius); \r\n}\r\n\r\n.root:not(:first-child):not(:last-child) {\r\n border-radius: 0;\r\n}\r\n\r\n</style>","<script>\r\n\r\nexport let value;\r\nexport let label;\r\n\r\nconst inputChanged = ev => {\r\n try {\r\n value = Number(ev.target.value);\r\n } catch(_) {\r\n value = null;\r\n }\r\n}\r\n\r\nlet numberText = value === null || value === undefined\r\n ? \"\" : value.toString();\r\n\r\n\r\n</script>\r\n\r\n<div class=\"container\">\r\n <div class=\"label\">{label}</div>\r\n <input class=\"control\" type=\"text\" value={value} on:change={inputChanged} >\r\n</div>\r\n\r\n<style>\r\n\r\n.container {\r\n display: grid;\r\n grid-template-columns: [label] 100px [control] auto;\r\n margin: 20px 0px;\r\n}\r\n.label {\r\n grid-column-start: label;\r\n align-self: center;\r\n}\r\n.control {\r\n grid-column-start: control;\r\n align-self: center;\r\n margin: 0;\r\n}\r\n\r\ninput {\r\n width:300px;\r\n}\r\n\r\n</style>","<script>\r\nimport {join} from \"lodash/fp\";\r\n\r\nexport let values;\r\nexport let label;\r\n\r\nconst inputChanged = ev => {\r\n try {\r\n values = ev.target.value.split(\"\\n\");\r\n } catch(_) {\r\n values = [];\r\n }\r\n}\r\n\r\n$: valuesText = join(\"\\n\")(values);\r\n\r\n\r\n</script>\r\n\r\n<div class=\"container\">\r\n <div class=\"label\">{label}</div>\r\n <textarea class=\"control\" value={valuesText} on:change={inputChanged} ></textarea>\r\n</div>\r\n\r\n<style>\r\n\r\n.container {\r\n display: grid;\r\n grid-template-columns: [label] 100px [control] auto;\r\n margin: 20px 0px;\r\n}\r\n.label {\r\n grid-column-start: label;\r\n align-self: center;\r\n}\r\n.control {\r\n grid-column-start: control;\r\n align-self: center;\r\n margin: 0;\r\n}\r\n\r\ntextarea {\r\n width:300px;\r\n height:200px;\r\n}\r\n\r\n</style>","<script>\r\nexport let errors = [];\r\n\r\n$:hasErrors = errors.length > 0;\r\n</script>\r\n\r\n{#if hasErrors}\r\n<div class=\"error-container\">\r\n {#each errors as error}\r\n <div class=\"error-row\">{error.field ? `${error.field}: ` : \"\"}{error.error}</div>\r\n {/each}\r\n</div>\r\n{/if}\r\n\r\n<style>\r\n\r\n.error-container {\r\n padding:10px;\r\n border-style: solid;\r\n border-color: var(--deletion100);\r\n border-radius: var(--borderradiusall);\r\n background: var(--deletion75);\r\n}\r\n\r\n.error-row {\r\n padding: 5px 0px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nexport let checked=false;\r\nexport let label=\"\";\r\n\r\n</script>\r\n\r\n<input class=\"uk-checkbox\" type=\"checkbox\" bind:checked on:change />{label}\r\n\r\n<style>\r\n\r\ninput {\r\n margin-right:7px;\r\n}\r\n\r\n</style>","/* flatpickr v4.6.2, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","<script>\r\n\r\nimport flatpickr from \"flatpickr\";\r\nimport \"flatpickr/dist/flatpickr.css\";\r\nimport { onMount } from 'svelte';\r\n\r\nexport let value;\r\nexport let label;\r\nlet input;\r\nlet fpInstance;\r\n\r\n$: if (fpInstance) fpInstance.setDate(value);\r\n\r\nonMount(() => {\r\n fpInstance = flatpickr(input, {});\r\n\r\n fpInstance.config.onChange.push(selectedDates => {\r\n if(selectedDates.length > 0)\r\n value = new Date(selectedDates[0]);\r\n });\r\n\r\n return fpInstance;\r\n})\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n</script>\r\n\r\n\r\n <div class=\"container\" >\r\n <div class=\"label\">{label}</div>\r\n <input class=\"control\" bind:this={input} />\r\n</div>\r\n\r\n<style>\r\n.container {\r\n display: grid;\r\n grid-template-columns: [label] 100px [control] auto;\r\n margin: 20px 0px;\r\n}\r\n.label {\r\n grid-column-start: label;\r\n align-self: center;\r\n} \r\n\r\n.control {\r\n grid-column-start: control;\r\n align-self: center;\r\n margin: 0;\r\n}\r\n\r\ninput {\r\n width:300px;\r\n}\r\n\r\n\r\n</style>","<script>\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport NumberBox from \"../common/NumberBox.svelte\";\r\nimport ValuesList from \"../common/ValuesList.svelte\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport DatePicker from \"../common/DatePicker.svelte\";\r\nimport {cloneDeep, assign, keys, \r\n isNumber, includes, map, isBoolean} from \"lodash/fp\";\r\nimport {allTypes, validate, getPotentialReferenceIndexes,\r\n getDefaultTypeOptions, getNode,\r\n getPotentialReverseReferenceIndexes} from \"../common/core\";\r\n\r\nexport let field;\r\nexport let allFields;\r\nexport let onFinished = () => {};\r\nexport let database;\r\n\r\nlet errors = [];\r\nlet clonedField = cloneDeep(field);\r\n\r\n$: isNew = !!field && field.name.length === 0;\r\n\r\n$: possibleReferenceIndexes = getPotentialReferenceIndexes(\r\n database.hierarchy, database.currentNode\r\n);\r\n\r\n$: selectedReverseRefIndex = \r\n !clonedField.typeOptions.indexNodeKey \r\n ? \"\"\r\n : getNode(database.hierarchy, clonedField.typeOptions.indexNodeKey);\r\n\r\n$: possibleReverseReferenceIndexes = \r\n !selectedReverseRefIndex \r\n ? []\r\n : getPotentialReverseReferenceIndexes(\r\n database.hierarchy, selectedReverseRefIndex);\r\n\r\nconst typeChanged = (ev) => \r\n clonedField.typeOptions = getDefaultTypeOptions(ev.detail);\r\n\r\n\r\nconst save = () => {\r\n\r\n errors = validate.field(allFields)(clonedField);\r\n if(errors.length > 0) return;\r\n field.typeOptions = cloneDeep(clonedField.typeOptions);\r\n onFinished(\r\n assign(field)(clonedField)\r\n );\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <ErrorsBox errors={errors} />\r\n\r\n <Dropdown label=\"Type\" bind:selected={clonedField.type} options={keys(allTypes)} on:change={typeChanged} />\r\n\r\n {#if isNew}\r\n <Textbox label=\"Field Name\" bind:text={clonedField.name} />\r\n {:else}\r\n <div style=\"font-weight: bold\">{clonedField.name}</div>\r\n {/if}\r\n\r\n <Textbox label=\"Label\" bind:text={clonedField.label} />\r\n \r\n {#if clonedField.type === \"string\"}\r\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\r\n <ValuesList label=\"Values (options)\" bind:values={clonedField.typeOptions.values} />\r\n <Checkbox label=\"Declared Values Only\" bind:checked={clonedField.typeOptions.allowDeclaredValuesOnly} />\r\n {:else if clonedField.type === \"bool\"}\r\n <Checkbox label=\"Allow Null\" bind:checked={clonedField.typeOptions.allowNulls} />\r\n {:else if clonedField.type === \"datetime\"}\r\n <DatePicker label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\r\n <DatePicker label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\r\n {:else if clonedField.type === \"number\"}\r\n <NumberBox label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\r\n <NumberBox label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\r\n <NumberBox label=\"Decimal Places\" bind:value={clonedField.typeOptions.decimalPlaces} />\r\n {:else if clonedField.type === \"reference\"}\r\n <Dropdown label=\"Lookup Index\" \r\n options={possibleReferenceIndexes} \r\n valueMember={n => n.nodeKey()}\r\n textMember={n => n.name}\r\n bind:selected={clonedField.typeOptions.indexNodeKey} />\r\n\r\n <Dropdown label=\"Reverse Reference Index\" \r\n options={possibleReverseReferenceIndexes} \r\n multiple=true\r\n valueMember={n => n.nodeKey()}\r\n textMember={n => n.name}\r\n bind:selected={clonedField.typeOptions.reverseIndexNodeKeys} />\r\n\r\n <Textbox label=\"Display Value\" bind:text={clonedField.typeOptions.displayValue} />\r\n\r\n {:else if clonedField.type.startsWith(\"array\")}\r\n <NumberBox label=\"Min Length\" bind:value={clonedField.typeOptions.minLength} />\r\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\r\n {/if}\r\n\r\n <ButtonGroup style=\"float: right;\">\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"secondary\" grouped on:click={() => onFinished(false)}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n\r\n\r\n</style>","/*! UIkit 3.1.6 | http://www.getuikit.com | (c) 2014 - 2018 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = global || self, global.UIkit = factory());\n}(this, function () { 'use strict';\n\n function bind(fn, context) {\n return function (a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(context, arguments) : fn.call(context, a) : fn.call(context);\n };\n }\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateCache = {};\n var hyphenateRe = /([a-z\\d])([A-Z])/g;\n\n function hyphenate(str) {\n\n if (!(str in hyphenateCache)) {\n hyphenateCache[str] = str\n .replace(hyphenateRe, '$1-$2')\n .toLowerCase();\n }\n\n return hyphenateCache[str];\n }\n\n var camelizeRe = /-(\\w)/g;\n\n function camelize(str) {\n return str.replace(camelizeRe, toUpper);\n }\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function ucfirst(str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n }\n\n var strPrototype = String.prototype;\n var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function (search, i) { return ~this.indexOf(search, i); };\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) === objPrototype;\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return isObject(obj) && obj.nodeType === 9;\n }\n\n function isJQuery(obj) {\n return isObject(obj) && !!obj.jquery;\n }\n\n function isNode(obj) {\n return obj instanceof Node || isObject(obj) && obj.nodeType >= 1;\n }\n\n var toString = objPrototype.toString;\n function isNodeCollection(obj) {\n return toString.call(obj).match(/^\\[object (NodeList|HTMLCollection)\\]$/);\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj)\n ? obj.length\n : isObject(obj)\n ? Object.keys(obj).length\n : false\n );\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return isNode(element) || isWindow(element) || isDocument(element)\n ? element\n : isNodeCollection(element) || isJQuery(element)\n ? element[0]\n : isArray(element)\n ? toNode(element[0])\n : null;\n }\n\n function toNodes(element) {\n return isNode(element)\n ? [element]\n : isNodeCollection(element)\n ? arrPrototype.slice.call(element)\n : isArray(element)\n ? element.map(toNode).filter(Boolean)\n : isJQuery(element)\n ? element.toArray()\n : [];\n }\n\n function toList(value) {\n return isArray(value)\n ? value\n : isString(value)\n ? value.split(/,(?![^(]*\\))/).map(function (value) { return isNumeric(value)\n ? toNumber(value)\n : toBoolean(value.trim()); })\n : [value];\n }\n\n function toMs(time) {\n return !time\n ? 0\n : endsWith(time, 'ms')\n ? toFloat(time)\n : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other\n || isObject(value)\n && isObject(other)\n && Object.keys(value).length === Object.keys(other).length\n && each(value, function (val, key) { return val === other[key]; });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp((a + \"|\" + b), 'mg'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n target = Object(target);\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n\n function sortBy(array, prop) {\n return array.sort(function (ref, ref$1) {\n var propA = ref[prop]; if ( propA === void 0 ) propA = 0;\n var propB = ref$1[prop]; if ( propB === void 0 ) propB = 0;\n\n return propA > propB\n ? 1\n : propB > propA\n ? -1\n : 0;\n }\n );\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n\n return seen.has(check)\n ? false\n : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if ( min === void 0 ) min = 0;\n if ( max === void 0 ) max = 1;\n\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect(r1, r2) {\n return r1.left < r2.right &&\n r1.right > r2.left &&\n r1.top < r2.bottom &&\n r1.bottom > r2.top;\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top;\n }\n\n var Dimensions = {\n\n ratio: function(dimensions, prop, value) {\n var obj;\n\n\n var aProp = prop === 'width' ? 'height' : 'width';\n\n return ( obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj );\n },\n\n contain: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = assign({}, dimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n },\n\n cover: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = this.contain(dimensions, maxDimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n }\n\n };\n\n function attr(element, name, value) {\n\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) { return element.hasAttribute(name); });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.hasAttribute(name) && element.removeAttribute(name); }\n ); }\n );\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, (\"data-\" + attribute)]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n\n function query(selector, context) {\n return toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if ( context === void 0 ) context = document;\n\n return isContextSelector(selector) || isDocument(context)\n ? context\n : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if ( context === void 0 ) context = document;\n\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n var removes;\n\n if (isContextSelector(selector)) {\n\n removes = [];\n\n selector = splitSelector(selector).map(function (selector, i) {\n\n var ctx = context;\n\n if (selector[0] === '!') {\n\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(context.parentNode, selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n\n }\n\n if (selector[0] === '-') {\n\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n\n }\n\n if (!ctx) {\n return null;\n }\n\n if (!ctx.id) {\n ctx.id = \"uk-\" + (Date.now()) + i;\n removes.push(function () { return removeAttr(ctx, 'id'); });\n }\n\n return (\"#\" + (escape(ctx.id)) + \" \" + selector);\n\n }).filter(Boolean).join(',');\n\n context = document;\n\n }\n\n try {\n\n return context[queryFn](selector);\n\n } catch (e) {\n\n return null;\n\n } finally {\n\n removes && removes.forEach(function (remove) { return remove(); });\n\n }\n\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n\n function isContextSelector(selector) {\n return isString(selector) && selector.match(contextSelectorRe);\n }\n\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n\n function splitSelector(selector) {\n return selector.match(selectorRe).map(function (selector) { return selector.replace(/,$/, '').trim(); });\n }\n\n var elProto = Element.prototype;\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) { return matchesFn.call(element, selector); });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n\n ancestor = ancestor.parentNode;\n\n } while (ancestor && ancestor.nodeType === 1);\n };\n\n function closest(element, selector) {\n\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isNode(element)\n ? element.parentNode && closestFn.call(element, selector)\n : toNodes(element).map(function (element) { return closest(element, selector); }).filter(Boolean);\n }\n\n function parents(element, selector) {\n var elements = [];\n var parent = toNode(element).parentNode;\n\n while (parent && parent.nodeType === 1) {\n\n if (matches(parent, selector)) {\n elements.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n return elements;\n }\n\n var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) { return (\"\\\\\" + match); }); };\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; });\n }\n\n var selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some(function (element) { return matches(element, selInput); });\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) { return matches(element, selector); });\n }\n\n function within(element, selector) {\n return !isString(selector)\n ? element === selector || (isDocument(selector)\n ? selector.documentElement\n : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || closest(element, selector);\n }\n\n function on() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n\n targets = toEventTargets(targets);\n\n if (selector) {\n listener = delegate(targets, selector, listener);\n }\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.addEventListener(type, listener, useCapture); }\n ); }\n );\n return function () { return off(targets, type, listener, useCapture); };\n }\n\n function off(targets, type, listener, useCapture) {\n if ( useCapture === void 0 ) useCapture = false;\n\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.removeEventListener(type, listener, useCapture); }\n ); }\n );\n }\n\n function once() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }\n , true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if ( bubbles === void 0 ) bubbles = true;\n if ( cancelable === void 0 ) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n\n function delegate(delegates, selector, listener) {\n var this$1 = this;\n\n return function (e) {\n\n delegates.forEach(function (delegate) {\n\n var current = selector[0] === '>'\n ? findAll(selector, delegate).reverse().filter(function (element) { return within(e.target, element); })[0]\n : closest(e.target, selector);\n\n if (current) {\n e.delegate = delegate;\n e.current = current;\n\n listener.call(this$1, e);\n }\n\n });\n\n };\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : isString(target)\n ? findAll(target)\n : isEventTarget(target)\n ? [target]\n : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || e.touches;\n }\n\n function getEventPos(e, prop) {\n if ( prop === void 0 ) prop = 'client';\n\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref[(prop + \"X\")];\n var y = ref[(prop + \"Y\")];\n\n return {x: x, y: y};\n }\n\n /* global setImmediate */\n\n var Promise = 'Promise' in window ? window.Promise : PromiseFn;\n\n var Deferred = function() {\n var this$1 = this;\n\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n\n var async = 'setImmediate' in window ? setImmediate : setTimeout;\n\n function PromiseFn(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(\n function (x) {\n promise.resolve(x);\n },\n function (r) {\n promise.reject(r);\n }\n );\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(\n x,\n function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n },\n function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n }\n );\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n return new Promise(function (resolve, reject) {\n\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n\n env.beforeSend(env);\n\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n\n xhr[prop] = env[prop];\n\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n\n });\n\n on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); });\n on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); });\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = reject;\n img.onload = function () { return resolve(img); };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n\n }\n\n /* global DocumentTouch */\n\n var isIE = /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = attr(document.documentElement, 'dir') === 'rtl';\n\n var hasTouchEvents = 'ontouchstart' in window;\n var hasPointerEvents = window.PointerEvent;\n var hasTouch = hasTouchEvents\n || window.DocumentTouch && document instanceof DocumentTouch\n || navigator.maxTouchPoints; // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n\n function ready(fn) {\n\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\n }\n\n function index(element, ref) {\n return ref\n ? toNodes(element).indexOf(toNode(ref))\n : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element);\n }\n\n function getIndex(i, elements, current, finite) {\n if ( current === void 0 ) current = 0;\n if ( finite === void 0 ) finite = false;\n\n\n elements = toNodes(elements);\n\n var length = elements.length;\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : index(elements, i);\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html)\n ? parent.innerHTML\n : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n\n parent = $(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); });\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) { return parent.appendChild(element); });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.nextSibling\n ? before(ref.nextSibling, element)\n : append(ref.parentNode, element); }\n );\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element\n ? 'length' in element\n ? toNodes(element).map(fn)\n : fn(element)\n : null;\n }\n\n function remove(element) {\n toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });\n }\n\n function wrapAll(element, structure) {\n\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); }\n ));\n }\n\n function unwrap(element) {\n toNodes(element)\n .map(function (element) { return element.parentNode; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .forEach(function (parent) {\n before(parent, parent.childNodes);\n remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n\n var matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n\n }\n\n function apply(node, fn) {\n\n if (!node || node.nodeType !== 1) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n\n function $(selector, context) {\n return !isString(selector)\n ? toNode(selector)\n : isHtml(selector)\n ? toNode(fragment(selector))\n : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector)\n ? toNodes(selector)\n : isHtml(selector)\n ? toNodes(fragment(selector))\n : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s*</);\n }\n\n function addClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) { return (value || '').replace(new RegExp((\"\\\\b\" + cls + \"\\\\b\"), 'g'), ''); });\n }\n\n function replaceClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n return cls && toNodes(element).some(function (element) { return element.classList.contains(cls.split(' ')[0]); });\n }\n\n function toggleClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n\n if (!args.length) {\n return;\n }\n\n args = getArgs$1(args);\n\n var force = !isString(args[args.length - 1]) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false\n\n args = args.filter(Boolean);\n\n toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n for (var i = 0; i < args.length; i++) {\n supports.Force\n ? classList.toggle.apply(classList, [args[i]].concat(force))\n : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));\n }\n });\n\n }\n\n function apply$1(element, args, fn) {\n args = getArgs$1(args).filter(Boolean);\n\n args.length && toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n supports.Multiple\n ? classList[fn].apply(classList, args)\n : args.forEach(function (cls) { return classList[fn](cls); });\n });\n }\n\n function getArgs$1(args) {\n return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }\n , []);\n }\n\n // IE 11\n var supports = {\n\n get Multiple() {\n return this.get('_multiple');\n },\n\n get Force() {\n return this.get('_force');\n },\n\n get: function(key) {\n\n if (!hasOwn(this, key)) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n this._multiple = classList.contains('b');\n this._force = !classList.contains('c');\n }\n\n return this[key];\n }\n\n };\n\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value) {\n\n return toNodes(element).map(function (element) {\n\n if (isString(property)) {\n\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + \"px\") : value;\n }\n\n } else if (isArray(property)) {\n\n var styles = getStyles(element);\n\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n\n } else if (isObject(property)) {\n each(property, function (value, property) { return css(element, property, value); });\n }\n\n return element;\n\n })[0];\n\n }\n\n function getStyles(element, pseudoElt) {\n element = toNode(element);\n return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var vars = {};\n\n function getCssVar(name) {\n\n var docEl = document.documentElement;\n\n if (!isIE) {\n return getStyles(docEl).getPropertyValue((\"--uk-\" + name));\n }\n\n if (!(name in vars)) {\n\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n\n var element = append(docEl, document.createElement('div'));\n\n addClass(element, (\"uk-\" + name));\n\n vars[name] = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n remove(element);\n\n }\n\n return vars[name];\n\n }\n\n var cssProps = {};\n\n function propName(name) {\n\n var ret = cssProps[name];\n if (!ret) {\n ret = cssProps[name] = vendorPropName(name) || name;\n }\n return ret;\n }\n\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n\n name = hyphenate(name);\n\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length, prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + (cssPrefixes[i]) + \"-\" + name;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if ( duration === void 0 ) duration = 400;\n if ( timing === void 0 ) timing = 'linear';\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n for (var name in props) {\n var value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);\n\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n 'transition-property': '',\n 'transition-duration': '',\n 'transition-timing-function': ''\n });\n type === 'transitioncanceled' ? reject() : resolve();\n }, false, function (ref) {\n var target = ref.target;\n\n return element === target;\n });\n\n addClass(element, 'uk-transition');\n css(element, assign({\n 'transition-property': Object.keys(props).map(propName).join(','),\n 'transition-duration': (duration + \"ms\"),\n 'transition-timing-function': timing\n }, props));\n\n }); }\n ));\n\n }\n\n var Transition = {\n\n start: transition,\n\n stop: function(element) {\n trigger(element, 'transitionend');\n return Promise.resolve();\n },\n\n cancel: function(element) {\n trigger(element, 'transitioncanceled');\n },\n\n inProgress: function(element) {\n return hasClass(element, 'uk-transition');\n }\n\n };\n\n var animationPrefix = 'uk-animation-';\n var clsCancelAnimation = 'uk-cancel-animation';\n\n function animate(element, animation, duration, origin, out) {\n var arguments$1 = arguments;\n if ( duration === void 0 ) duration = 200;\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n if (hasClass(element, clsCancelAnimation)) {\n requestAnimationFrame(function () { return Promise.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); }\n ); }\n );\n return;\n }\n\n var cls = animation + \" \" + animationPrefix + (out ? 'leave' : 'enter');\n\n if (startsWith(animation, animationPrefix)) {\n\n if (origin) {\n cls += \" uk-transform-origin-\" + origin;\n }\n\n if (out) {\n cls += \" \" + animationPrefix + \"reverse\";\n }\n\n }\n\n reset();\n\n once(element, 'animationend animationcancel', function (ref) {\n var type = ref.type;\n\n\n var hasReset = false;\n\n if (type === 'animationcancel') {\n reject();\n reset();\n } else {\n resolve();\n Promise.resolve().then(function () {\n hasReset = true;\n reset();\n });\n }\n\n requestAnimationFrame(function () {\n if (!hasReset) {\n addClass(element, clsCancelAnimation);\n\n requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); });\n }\n });\n\n }, false, function (ref) {\n var target = ref.target;\n\n return element === target;\n });\n\n css(element, 'animationDuration', (duration + \"ms\"));\n addClass(element, cls);\n\n function reset() {\n css(element, 'animationDuration', '');\n removeClasses(element, (animationPrefix + \"\\\\S*\"));\n }\n\n }); }\n ));\n\n }\n\n var inProgress = new RegExp((animationPrefix + \"(enter|leave)\"));\n var Animation = {\n\n in: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, false);\n },\n\n out: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress: function(element) {\n return inProgress.test(attr(element, 'class'));\n },\n\n cancel: function(element) {\n trigger(element, 'animationcancel');\n }\n\n };\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n\n var flipped = {element: elAttach, target: targetAttach};\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = getDimensions(element);\n var targetDim = getDimensions(target);\n var position = targetDim;\n\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n\n var boundaries = [getDimensions(getWindow(element))];\n\n if (boundary) {\n boundaries.unshift(getDimensions(boundary));\n }\n\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n\n var elemOffset = elAttach[dir] === align\n ? -dim[prop]\n : elAttach[dir] === alignFlip\n ? dim[prop]\n : 0;\n\n var targetOffset = targetAttach[dir] === align\n ? targetDim[prop]\n : targetAttach[dir] === alignFlip\n ? -targetDim[prop]\n : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n\n return elAttach[dir] === 'center' && (\n apply(centerOffset, centerTargetOffset)\n || apply(-centerOffset, -centerTargetOffset)\n ) || apply(elemOffset, targetOffset);\n\n }\n\n function apply(elemOffset, targetOffset) {\n\n var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset\n ? flipped[el][dir]\n : flipped[el][dir] === dirs[prop][1]\n ? dirs[prop][2]\n : dirs[prop][1];\n });\n\n return true;\n }\n\n }\n\n });\n\n });\n }\n\n offset(element, position);\n\n return flipped;\n }\n\n function offset(element, coordinates) {\n\n element = toNode(element);\n\n if (coordinates) {\n\n var currentOffset = offset(element);\n var pos = css(element, 'position');\n\n ['left', 'top'].forEach(function (prop) {\n if (prop in coordinates) {\n var value = css(element, prop);\n css(element, prop, coordinates[prop] - currentOffset[prop]\n + toFloat(pos === 'absolute' && value === 'auto'\n ? position(element)[prop]\n : value)\n );\n }\n });\n\n return;\n }\n\n return getDimensions(element);\n }\n\n function getDimensions(element) {\n\n element = toNode(element);\n\n var ref = getWindow(element);\n var top = ref.pageYOffset;\n var left = ref.pageXOffset;\n\n if (isWindow(element)) {\n\n var height = element.innerHeight;\n var width = element.innerWidth;\n\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n bottom: top + height,\n right: left + width\n };\n }\n\n var style, hidden;\n\n if (!isVisible(element) && css(element, 'display') === 'none') {\n\n style = attr(element, 'style');\n hidden = attr(element, 'hidden');\n\n attr(element, {\n style: ((style || '') + \";display:block !important;\"),\n hidden: null\n });\n }\n\n var rect = element.getBoundingClientRect();\n\n if (!isUndefined(style)) {\n attr(element, {style: style, hidden: hidden});\n }\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top + top,\n left: rect.left + left,\n bottom: rect.bottom + top,\n right: rect.right + left\n };\n }\n\n function position(element) {\n element = toNode(element);\n\n var parent = element.offsetParent || getDocEl(element);\n var parentOffset = offset(parent);\n var ref = ['top', 'left'].reduce(function (props, prop) {\n var propName = ucfirst(prop);\n props[prop] -= parentOffset[prop]\n + toFloat(css(element, (\"margin\" + propName)))\n + toFloat(css(parent, (\"border\" + propName + \"Width\")));\n return props;\n }, offset(element));\n var top = ref.top;\n var left = ref.left;\n\n return {top: top, left: left};\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n\n element = toNode(element);\n\n if (isUndefined(value)) {\n\n if (isWindow(element)) {\n return element[(\"inner\" + propName)];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[(\"offset\" + propName)], doc[(\"scroll\" + propName)]);\n }\n\n value = css(element, prop);\n value = value === 'auto' ? element[(\"offset\" + propName)] : toFloat(value) || 0;\n\n return value - boxModelAdjust(prop, element);\n\n } else {\n\n css(element, prop, !value && value !== 0\n ? ''\n : +value + boxModelAdjust(prop, element) + 'px'\n );\n\n }\n\n };\n }\n\n function boxModelAdjust(prop, element, sizing) {\n if ( sizing === void 0 ) sizing = 'border-box';\n\n return css(element, 'boxSizing') === sizing\n ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value\n + toFloat(css(element, (\"padding\" + prop)))\n + toFloat(css(element, (\"border\" + prop + \"Width\"))); }\n , 0)\n : 0;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0])\n ? pos.concat(['center'])\n : y.test(pos[0])\n ? ['center'].concat(pos)\n : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n function flipPosition(pos) {\n switch (pos) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n default:\n return pos;\n }\n }\n\n function isInView(element, topOffset, leftOffset) {\n if ( topOffset === void 0 ) topOffset = 0;\n if ( leftOffset === void 0 ) leftOffset = 0;\n\n\n if (!isVisible(element)) {\n return false;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var client = element.getBoundingClientRect();\n var bounding = {\n top: -topOffset,\n left: -leftOffset,\n bottom: topOffset + height(win),\n right: leftOffset + width(win)\n };\n\n return intersectRect(client, bounding) || pointInRect({x: client.left, y: client.top}, bounding);\n\n }\n\n function scrolledOver(element, heightOffset) {\n if ( heightOffset === void 0 ) heightOffset = 0;\n\n\n if (!isVisible(element)) {\n return 0;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var doc = getDocument(element);\n var elHeight = element.offsetHeight + heightOffset;\n var ref = offsetPosition(element);\n var top = ref[0];\n var vp = height(win);\n var vh = vp + Math.min(0, top - vp);\n var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight)));\n\n return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100);\n }\n\n function scrollTop(element, top) {\n element = toNode(element);\n\n if (isWindow(element) || isDocument(element)) {\n var ref = getWindow(element);\n var scrollTo = ref.scrollTo;\n var pageXOffset = ref.pageXOffset;\n scrollTo(pageXOffset, top);\n } else {\n element.scrollTop = top;\n }\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n\n do {\n\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = getWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n\n } while ((element = element.offsetParent));\n\n return offset;\n }\n\n function toPx(value, property, element) {\n if ( property === void 0 ) property = 'width';\n if ( element === void 0 ) element = window;\n\n return isNumeric(value)\n ? +value\n : endsWith(value, 'vh')\n ? percent(height(getWindow(element)), value)\n : endsWith(value, 'vw')\n ? percent(width(getWindow(element)), value)\n : endsWith(value, '%')\n ? percent(getDimensions(element)[property], value)\n : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n\n function getWindow(element) {\n return isWindow(element) ? element : getDocument(element).defaultView;\n }\n\n function getDocument(element) {\n return toNode(element).ownerDocument;\n }\n\n function getDocEl(element) {\n return getDocument(element).documentElement;\n }\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n var fastdom = {\n\n reads: [],\n writes: [],\n\n read: function(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write: function(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear: function(task) {\n return remove$1(this.reads, task) || remove$1(this.writes, task);\n },\n\n flush: flush\n\n };\n\n function flush() {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0, fastdom.writes.length));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(true);\n }\n }\n\n function scheduleFlush(microtask) {\n if ( microtask === void 0 ) microtask = false;\n\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n if (microtask) {\n Promise.resolve().then(flush);\n } else {\n requestAnimationFrame(flush);\n }\n }\n }\n\n function runTasks(tasks) {\n var task;\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n\n positions: [],\n position: null,\n\n init: function() {\n var this$1 = this;\n\n\n this.positions = [];\n this.position = null;\n\n var ticking = false;\n this.unbind = on(document, 'mousemove', function (e) {\n\n if (ticking) {\n return;\n }\n\n setTimeout(function () {\n\n var time = Date.now();\n var ref = this$1.positions;\n var length = ref.length;\n\n if (length && (time - this$1.positions[length - 1].time > 100)) {\n this$1.positions.splice(0, length);\n }\n\n this$1.positions.push({time: time, x: e.pageX, y: e.pageY});\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n\n ticking = false;\n }, 5);\n\n ticking = true;\n });\n\n },\n\n cancel: function() {\n if (this.unbind) {\n this.unbind();\n }\n },\n\n movesTo: function(target) {\n\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = offset(target);\n var position = this.positions[this.positions.length - 1];\n var ref = this.positions;\n var prevPos = ref[0];\n\n if (p.left <= position.x && position.x <= p.right && p.top <= position.y && position.y <= p.bottom) {\n return false;\n }\n\n var points = [\n [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],\n [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]\n ];\n\n if (p.right <= position.x) ; else if (p.left >= position.x) {\n points[0].reverse();\n points[1].reverse();\n } else if (p.bottom <= position.y) {\n points[0].reverse();\n } else if (p.top >= position.y) {\n points[1].reverse();\n }\n\n return !!points.reduce(function (result, point) {\n return result + (slope(prevPos, point[0]) < slope(position, point[0]) && slope(prevPos, point[1]) > slope(position, point[1]));\n }, 0);\n }\n\n };\n\n function slope(a, b) {\n return (b.y - a.y) / (b.x - a.x);\n }\n\n var strats = {};\n\n strats.events =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy = concatStrat;\n\n // args strategy\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return sortBy(concatStrat(parentVal, isFunction(childVal) ? {read: childVal} : childVal), 'order');\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed =\n strats.methods = function (parentVal, childVal) {\n return childVal\n ? parentVal\n ? assign({}, parentVal, childVal)\n : childVal\n : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n\n if (!vm) {\n\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal)\n ? parentVal.call(vm, vm)\n : parentVal,\n isFunction(childVal)\n ? childVal.call(vm, vm)\n : childVal\n );\n }\n\n // concat strategy\n function concatStrat(parentVal, childVal) {\n\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n }\n\n // default strategy\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n\n if ( args === void 0 ) args = [];\n\n try {\n\n return !options\n ? {}\n : startsWith(options, '{')\n ? JSON.parse(options)\n : args.length && !includes(options, ':')\n ? (( obj = {}, obj[args[0]] = options, obj ))\n : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {});\n\n } catch (e) {\n return {};\n }\n\n }\n\n var id = 0;\n\n var Player = function(el) {\n this.id = ++id;\n this.el = toNode(el);\n };\n\n Player.prototype.isVideo = function () {\n return this.isYoutube() || this.isVimeo() || this.isHTML5();\n };\n\n Player.prototype.isHTML5 = function () {\n return this.el.tagName === 'VIDEO';\n };\n\n Player.prototype.isIFrame = function () {\n return this.el.tagName === 'IFRAME';\n };\n\n Player.prototype.isYoutube = function () {\n return this.isIFrame() && !!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n };\n\n Player.prototype.isVimeo = function () {\n return this.isIFrame() && !!this.el.src.match(/vimeo\\.com\\/video\\/.*/);\n };\n\n Player.prototype.enableApi = function () {\n var this$1 = this;\n\n\n if (this.ready) {\n return this.ready;\n }\n\n var youtube = this.isYoutube();\n var vimeo = this.isVimeo();\n\n var poller;\n\n if (youtube || vimeo) {\n\n return this.ready = new Promise(function (resolve) {\n\n once(this$1.el, 'load', function () {\n if (youtube) {\n var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); };\n poller = setInterval(listener, 100);\n listener();\n }\n });\n\n listen(function (data) { return youtube && data.id === this$1.id && data.event === 'onReady' || vimeo && Number(data.player_id) === this$1.id; })\n .then(function () {\n resolve();\n poller && clearInterval(poller);\n });\n\n attr(this$1.el, 'src', (\"\" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : (\"api=1&player_id=\" + (this$1.id)))));\n\n });\n\n }\n\n return Promise.resolve();\n\n };\n\n Player.prototype.play = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); });\n } else if (this.isHTML5()) {\n try {\n var promise = this.el.play();\n\n if (promise) {\n promise.catch(noop);\n }\n } catch (e) {}\n }\n };\n\n Player.prototype.pause = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); });\n } else if (this.isHTML5()) {\n this.el.pause();\n }\n };\n\n Player.prototype.mute = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); });\n } else if (this.isHTML5()) {\n this.el.muted = true;\n attr(this.el, 'muted', '');\n }\n\n };\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');\n } catch (e) {}\n }\n\n function listen(cb) {\n\n return new Promise(function (resolve) {\n\n once(window, 'message', function (_, data) { return resolve(data); }, false, function (ref) {\n var data = ref.data;\n\n\n if (!data || !isString(data)) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (e) {\n return;\n }\n\n return data && cb(data);\n\n });\n\n });\n\n }\n\n var IntersectionObserver = 'IntersectionObserver' in window\n ? window.IntersectionObserver\n : /*@__PURE__*/(function () {\n function IntersectionObserverClass(callback, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var rootMargin = ref.rootMargin; if ( rootMargin === void 0 ) rootMargin = '0 0';\n\n\n this.targets = [];\n\n var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat);\n var offsetTop = ref$1[0];\n var offsetLeft = ref$1[1];\n\n this.offsetTop = offsetTop;\n this.offsetLeft = offsetLeft;\n\n var pending;\n this.apply = function () {\n\n if (pending) {\n return;\n }\n\n pending = requestAnimationFrame(function () { return setTimeout(function () {\n var records = this$1.takeRecords();\n\n if (records.length) {\n callback(records, this$1);\n }\n\n pending = false;\n }); });\n\n };\n\n this.off = on(window, 'scroll resize load', this.apply, {passive: true, capture: true});\n\n }\n\n IntersectionObserverClass.prototype.takeRecords = function () {\n var this$1 = this;\n\n return this.targets.filter(function (entry) {\n\n var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft);\n\n if (entry.isIntersecting === null || inView ^ entry.isIntersecting) {\n entry.isIntersecting = inView;\n return true;\n }\n\n });\n };\n\n IntersectionObserverClass.prototype.observe = function (target) {\n this.targets.push({\n target: target,\n isIntersecting: null\n });\n this.apply();\n };\n\n IntersectionObserverClass.prototype.disconnect = function () {\n this.targets = [];\n this.off();\n };\n\n return IntersectionObserverClass;\n }());\n\n\n\n var util = /*#__PURE__*/Object.freeze({\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n positionAt: positionAt,\n offset: offset,\n position: position,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n isInView: isInView,\n scrolledOver: scrolledOver,\n scrollTop: scrollTop,\n offsetPosition: offsetPosition,\n toPx: toPx,\n ready: ready,\n index: index,\n getIndex: getIndex,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n $: $,\n $$: $$,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n filter: filter,\n within: within,\n bind: bind,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isJQuery: isJQuery,\n isNode: isNode,\n isNodeCollection: isNodeCollection,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toList: toList,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n each: each,\n sortBy: sortBy,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n Player: Player,\n Promise: Promise,\n Deferred: Deferred,\n IntersectionObserver: IntersectionObserver,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n matches: matches,\n closest: closest,\n parents: parents,\n escape: escape,\n css: css,\n getStyles: getStyles,\n getStyle: getStyle,\n getCssVar: getCssVar,\n propName: propName\n });\n\n function componentAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n var components = {};\n\n UIkit.component = function (name, options) {\n\n if (!options) {\n\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\n\n\n var component = UIkit.component(name);\n\n if (isPlainObject(element)) {\n return new component({data: element});\n }\n\n if (component.options.functional) {\n return new component({data: [].concat( argsArray )});\n }\n\n return element && element.nodeType ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({el: element, data: data});\n\n }\n\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n var id = hyphenate(name);\n fastdom.read(function () { return UIkit[name]((\"[uk-\" + id + \"],[data-uk-\" + id + \"]\")); });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) { return element && element[DATA] || {}; };\n UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; };\n\n UIkit.connect = function (node) {\n\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n\n }\n\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n\n }\n\n function getComponentName(attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-')\n ? camelize(attribute.replace('data-uk-', '').replace('uk-', ''))\n : false;\n }\n\n function boot (UIkit) {\n\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!('MutationObserver' in window)) {\n return;\n }\n\n if (document.body) {\n\n init();\n\n } else {\n\n (new MutationObserver(function () {\n\n if (document.body) {\n this.disconnect();\n init();\n }\n\n })).observe(document, {childList: true, subtree: true});\n\n }\n\n function init() {\n\n apply(document.body, connect);\n\n // Safari renders prior to first animation frame\n fastdom.flush();\n\n (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n\n UIkit._initialized = true;\n }\n\n function applyMutation(mutation) {\n\n var target = mutation.target;\n var type = mutation.type;\n\n var update = type !== 'attributes'\n ? applyChildList(mutation)\n : applyAttribute(mutation);\n\n update && UIkit.update(target);\n\n }\n\n function applyAttribute(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n\n\n if (attributeName === 'href') {\n return true;\n }\n\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return true;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n return true;\n }\n\n }\n\n function applyChildList(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(removedNodes[i$1], disconnect);\n }\n\n return true;\n }\n\n function apply(node, fn) {\n\n if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n var next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n }\n\n function globalAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n\n options = options || {};\n\n var Super = this;\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub.super = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n\n element = element ? toNode(element) : document.body;\n\n path(element, function (element) { return update(element[DATA], e); });\n apply(element, function (element) { return update(element[DATA], e); });\n\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n\n get: function() {\n return container || document.body;\n },\n\n set: function(element) {\n container = $(element);\n }\n\n });\n\n function update(data, e) {\n\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n\n }\n\n function path(node, fn) {\n if (node && node !== document.body && node.parentNode) {\n path(node.parentNode, fn);\n fn(node.parentNode);\n }\n }\n\n }\n\n function hooksAPI (UIkit) {\n\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n\n\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) { return handler.call(this$1); });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObserver();\n\n this._callHook('connected');\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n if ( e === void 0 ) e = 'update';\n\n\n var type = e.type || e;\n\n if (includes(['update', 'resize'], type)) {\n this._callWatches();\n }\n\n var updates = this.$options.update;\n var ref = this._frames;\n var reads = ref.reads;\n var writes = ref.writes;\n\n if (!updates) {\n return;\n }\n\n updates.forEach(function (ref, i) {\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n\n if (type !== 'update' && !includes(events, type)) {\n return;\n }\n\n if (read && !includes(fastdom.reads, reads[i])) {\n reads[i] = fastdom.read(function () {\n\n var result = this$1._connected && read.call(this$1, this$1._data, type);\n\n if (result === false && write) {\n fastdom.clear(writes[i]);\n } else if (isPlainObject(result)) {\n assign(this$1._data, result);\n }\n });\n }\n\n if (write && !includes(fastdom.writes, writes[i])) {\n writes[i] = fastdom.write(function () { return this$1._connected && write.call(this$1, this$1._data, type); });\n }\n\n });\n\n };\n\n }\n\n function stateAPI (UIkit) {\n\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._frames = {reads: {}, writes: {}};\n this._events = [];\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n\n var ref = this.$options;\n var data = ref.data; if ( data === void 0 ) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = bind(methods[key], this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n\n var ref = this.$options;\n var computed = ref.computed;\n\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._callWatches = function () {\n\n var ref = this;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in _computeds) {\n\n var value = _computeds[key];\n delete _computeds[key];\n\n if (computed[key].watch && !isEqual(value, this[key])) {\n computed[key].watch.call(this, this[key], value);\n }\n\n }\n\n };\n\n UIkit.prototype._initProps = function (props) {\n\n var key;\n\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n\n events.forEach(function (event) {\n\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) { return unbind(); });\n this._events = [];\n };\n\n UIkit.prototype._initObserver = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var attrs = ref.attrs;\n var props = ref.props;\n var el = ref.el;\n if (this._observer || !props || attrs === false) {\n return;\n }\n\n attrs = isArray(attrs) ? attrs : Object.keys(props);\n\n this._observer = new MutationObserver(function () {\n\n var data = getProps(this$1.$options, this$1.$name);\n if (attrs.some(function (key) { return !isUndefined(data[key]) && data[key] !== this$1.$props[key]; })) {\n this$1.$reset();\n }\n\n });\n\n var filter = attrs.map(function (key) { return hyphenate(key); }).concat(this.$name);\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) { return (\"data-\" + key); }))\n });\n };\n\n function getProps(opts, name) {\n\n var data$1 = {};\n var args = opts.args; if ( args === void 0 ) args = [];\n var props = opts.props; if ( props === void 0 ) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (!isUndefined(value)) {\n\n value = props[key] === Boolean && value === ''\n ? true\n : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n\n enumerable: true,\n\n get: function() {\n\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n\n set: function(value) {\n\n var _computeds = component._computeds;\n\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n\n });\n }\n\n function registerEvent(component, event, key) {\n\n if (!isPlainObject(event)) {\n event = ({name: key, handler: event});\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el)\n ? el.call(component)\n : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n handler = detail(isString(handler) ? component[handler] : bind(handler, component));\n\n if (self) {\n handler = selfFilter(handler);\n }\n\n component._events.push(\n on(\n el,\n name,\n !delegate\n ? null\n : isString(delegate)\n ? delegate\n : delegate.call(component),\n handler,\n isBoolean(passive)\n ? {passive: passive, capture: capture}\n : capture\n )\n );\n\n }\n\n function selfFilter(handler) {\n return function selfHandler(e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return handler.call(null, e);\n }\n };\n }\n\n function notIn(options, key) {\n return options.every(function (arr) { return !arr || !hasOwn(arr, key); });\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function coerce(type, value) {\n\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var el = ref.el;\n var args = ref$1.args;\n var props = ref$1.props; if ( props === void 0 ) props = {};\n\n data = isArray(data)\n ? !isEmpty(args)\n ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n return data;\n }, {})\n : undefined\n : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n }\n\n function instanceAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.prototype.$mount = function (el) {\n\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if ( removeEl === void 0 ) removeEl = false;\n\n\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove(this.$el);\n }\n };\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$update = UIkit.update;\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n var names = {};\n Object.defineProperties(UIkit.prototype, {\n\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n\n $name: {\n\n get: function() {\n var ref = this.$options;\n var name = ref.name;\n\n if (!names[name]) {\n names[name] = UIkit.prefix + hyphenate(name);\n }\n\n return names[name];\n }\n\n }\n\n });\n\n }\n\n var UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n var Class = {\n\n connected: function() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n\n };\n\n var Togglable = {\n\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String,\n queued: Boolean\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n queued: false,\n\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n\n },\n\n computed: {\n\n hasAnimation: function(ref) {\n var animation = ref.animation;\n\n return !!animation[0];\n },\n\n hasTransition: function(ref) {\n var animation = ref.animation;\n\n return this.hasAnimation && animation[0] === true;\n }\n\n },\n\n methods: {\n\n toggleElement: function(targets, show, animate) {\n var this$1 = this;\n\n return new Promise(function (resolve) {\n\n targets = toNodes(targets);\n\n var all = function (targets) { return Promise.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate); })); };\n var toggled = targets.filter(function (el) { return this$1.isToggled(el); });\n var untoggled = targets.filter(function (el) { return !includes(toggled, el); });\n\n var p;\n\n if (!this$1.queued || !isUndefined(animate) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) {\n\n p = all(untoggled.concat(toggled));\n\n } else {\n\n var body = document.body;\n var scroll = body.scrollTop;\n var el = toggled[0];\n var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave')\n || Transition.inProgress(el) && el.style.height === '0px';\n\n p = all(toggled);\n\n if (!inProgress) {\n p = p.then(function () {\n var p = all(untoggled);\n body.scrollTop = scroll;\n return p;\n });\n }\n\n }\n\n p.then(resolve, noop);\n\n });\n },\n\n toggleNow: function(targets, show) {\n var this$1 = this;\n\n return new Promise(function (resolve) { return Promise.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); });\n },\n\n isToggled: function(el) {\n var nodes = toNodes(el || this.$el);\n return this.cls\n ? hasClass(nodes, this.cls.split(' ')[0])\n : !hasAttr(nodes, 'hidden');\n },\n\n updateAria: function(el) {\n if (this.cls === false) {\n attr(el, 'aria-hidden', !this.isToggled(el));\n }\n },\n\n _toggleElement: function(el, show, animate) {\n var this$1 = this;\n\n\n show = isBoolean(show)\n ? show\n : Animation.inProgress(el)\n ? hasClass(el, 'uk-animation-leave')\n : Transition.inProgress(el)\n ? el.style.height === '0px'\n : !this.isToggled(el);\n\n if (!trigger(el, (\"before\" + (show ? 'show' : 'hide')), [this])) {\n return Promise.reject();\n }\n\n var promise = (\n isFunction(animate)\n ? animate\n : animate === false || !this.hasAnimation\n ? this._toggle\n : this.hasTransition\n ? toggleHeight(this)\n : toggleAnimation(this)\n )(el, show);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n var final = function () {\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(final) : Promise.resolve(final());\n },\n\n _toggle: function(el, toggled) {\n\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n\n var changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === hasAttr(el, 'hidden');\n changed && attr(el, 'hidden', !toggled ? '' : null);\n }\n\n $$('[autofocus]', el).some(function (el) { return isVisible(el) ? el.focus() || true : el.blur(); });\n\n this.updateAria(el);\n changed && this.$update(el);\n }\n\n }\n\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, '');\n\n // Update child components first\n fastdom.flush();\n\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n\n return (show\n ? Transition.start(el, assign({}, initProps, {overflow: 'hidden', height: endHeight}), Math.round(duration * (1 - currentHeight / endHeight)), transition)\n : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () { return _toggle(el, false); })\n ).then(function () { return css(el, initProps); });\n\n };\n }\n\n function toggleAnimation(ref) {\n var animation = ref.animation;\n var duration = ref.duration;\n var origin = ref.origin;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n Animation.cancel(el);\n\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, origin).then(function () { return _toggle(el, false); });\n };\n }\n\n var Accordion = {\n\n mixins: [Class, Togglable],\n\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease'\n },\n\n computed: {\n\n items: function(ref, $el) {\n var targets = ref.targets;\n\n return $$(targets, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.targets) + \" \" + (this.$props.toggle));\n },\n\n handler: function(e) {\n e.preventDefault();\n this.toggle(index($$(((this.targets) + \" \" + (this.$props.toggle)), this.$el), e.current));\n }\n\n }\n\n ],\n\n connected: function() {\n\n if (this.active === false) {\n return;\n }\n\n var active = this.items[Number(this.active)];\n if (active && !hasClass(active, this.clsOpen)) {\n this.toggle(active, false);\n }\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.items.forEach(function (el) { return this$1._toggle($(this$1.content, el), hasClass(el, this$1.clsOpen)); });\n\n var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n\n methods: {\n\n toggle: function(item, animate) {\n var this$1 = this;\n\n\n var index = getIndex(item, this.items);\n var active = filter(this.items, (\".\" + (this.clsOpen)));\n\n item = this.items[index];\n\n item && [item]\n .concat(!this.multiple && !includes(active, item) && active || [])\n .forEach(function (el) {\n\n var isItem = el === item;\n var state = isItem && !hasClass(el, this$1.clsOpen);\n\n if (!state && isItem && !this$1.collapsible && active.length < 2) {\n return;\n }\n\n toggleClass(el, this$1.clsOpen, state);\n\n var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '<div>');\n attr(el._wrapper, 'hidden', state ? '' : null);\n }\n\n this$1._toggle(content, true);\n this$1.toggleElement(el._wrapper, state, animate).then(function () {\n\n if (hasClass(el, this$1.clsOpen) !== state) {\n return;\n }\n\n if (!state) {\n this$1._toggle(content, false);\n }\n\n el._wrapper = null;\n unwrap(content);\n\n });\n\n });\n }\n\n }\n\n };\n\n var Alert = {\n\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n close: String\n },\n\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({opacity: 0}, Togglable.data.hideProps)\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.close();\n }\n\n }\n\n ],\n\n methods: {\n\n close: function() {\n var this$1 = this;\n\n this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); });\n }\n\n }\n\n };\n\n function Core (UIkit) {\n\n ready(function () {\n\n UIkit.update();\n on(window, 'load resize', function () { return UIkit.update(null, 'resize'); });\n on(document, 'loadedmetadata load', function (ref) {\n var target = ref.target;\n\n return UIkit.update(target, 'resize');\n }, true);\n\n // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n var pending;\n on(window, 'scroll', function (e) {\n\n if (pending) {\n return;\n }\n pending = true;\n fastdom.write(function () { return pending = false; });\n\n var target = e.target;\n UIkit.update(target.nodeType !== 1 ? document.body : target, e.type);\n\n }, {passive: true, capture: true});\n\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n\n started++;\n css(document.body, 'overflowX', 'hidden');\n setTimeout(function () {\n if (!--started) {\n css(document.body, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n\n var off;\n on(document, pointerDown, function (e) {\n\n off && off();\n\n if (!isTouch(e)) {\n return;\n }\n\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : e.target.parentNode;\n off = once(document, pointerUp, function (e) {\n\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y;\n\n // swipe\n if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, (\"swipe\" + (swipeDirection(pos.x, pos.y, x, y))));\n });\n\n }\n\n });\n }, {passive: true});\n\n });\n\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2)\n ? x1 - x2 > 0\n ? 'Left'\n : 'Right'\n : y1 - y2 > 0\n ? 'Up'\n : 'Down';\n }\n\n var Video = {\n\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n computed: {\n\n inView: function(ref) {\n var autoplay = ref.autoplay;\n\n return autoplay === 'inview';\n }\n\n },\n\n connected: function() {\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n this.player = new Player(this.$el);\n\n if (this.automute) {\n this.player.mute();\n }\n\n },\n\n update: {\n\n read: function() {\n\n return !this.player\n ? false\n : {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write: function(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n\n if (!visible || this.inView && !inView) {\n this.player.pause();\n } else if (this.autoplay === true || this.inView && inView) {\n this.player.play();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n };\n\n var Cover = {\n\n mixins: [Class, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n update: {\n\n read: function() {\n\n var el = this.$el;\n\n if (!isVisible(el)) {\n return false;\n }\n\n var ref = el.parentNode;\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n\n return {height: height, width: width};\n },\n\n write: function(ref) {\n var height = ref.height;\n var width = ref.width;\n\n\n var el = this.$el;\n var elWidth = this.width || el.naturalWidth || el.videoWidth || el.clientWidth;\n var elHeight = this.height || el.naturalHeight || el.videoHeight || el.clientHeight;\n\n if (!elWidth || !elHeight) {\n return;\n }\n\n css(el, Dimensions.cover(\n {\n width: elWidth,\n height: elHeight\n },\n {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n }\n ));\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Position = {\n\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n\n data: {\n pos: (\"bottom-\" + (!isRtl ? 'left' : 'right')),\n flip: true,\n offset: false,\n clsPos: ''\n },\n\n computed: {\n\n pos: function(ref) {\n var pos = ref.pos;\n\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n\n dir: function() {\n return this.pos[0];\n },\n\n align: function() {\n return this.pos[1];\n }\n\n },\n\n methods: {\n\n positionAt: function(element, target, boundary) {\n\n removeClasses(element, ((this.clsPos) + \"-(top|bottom|left|right)(-[a-z]+)?\"));\n css(element, {top: '', left: ''});\n\n var node;\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n node = $(offset$1);\n offset$1 = node\n ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom']\n : 0;\n }\n\n var ref$1 = positionAt(\n element,\n target,\n axis === 'x' ? ((flipPosition(this.dir)) + \" \" + (this.align)) : ((this.align) + \" \" + (flipPosition(this.dir))),\n axis === 'x' ? ((this.dir) + \" \" + (this.align)) : ((this.align) + \" \" + (this.dir)),\n axis === 'x' ? (\"\" + (this.dir === 'left' ? -offset$1 : offset$1)) : (\" \" + (this.dir === 'top' ? -offset$1 : offset$1)),\n null,\n this.flip,\n boundary\n ).target;\n var x = ref$1.x;\n var y = ref$1.y;\n\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n\n toggleClass(element, ((this.clsPos) + \"-\" + (this.dir) + \"-\" + (this.align)), this.offset === false);\n\n },\n\n getAxis: function() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n\n }\n\n };\n\n var active;\n\n var Drop = {\n\n mixins: [Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: window,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n hoverIdle: 200,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n\n return query(boundary, $el);\n },\n\n clsDrop: function(ref) {\n var clsDrop = ref.clsDrop;\n\n return clsDrop || (\"uk-\" + (this.$options.name));\n },\n\n clsPos: function() {\n return this.clsDrop;\n }\n\n },\n\n created: function() {\n this.tracker = new MouseTracker();\n },\n\n connected: function() {\n\n addClass(this.$el, this.clsDrop);\n\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n\n !this.toggle && trigger(this.$el, 'updatearia');\n\n },\n\n events: [\n\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\".\" + (this.clsDrop) + \"-close\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(e) {\n\n var id = e.target.hash;\n\n if (!id) {\n e.preventDefault();\n }\n\n if (!id || !within(id, this.$el)) {\n this.hide(false);\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n handler: function() {\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n\n },\n\n {\n\n name: pointerEnter,\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (isTouch(e)) {\n return;\n }\n\n if (active\n && active !== this\n && active.toggle\n && includes(active.toggle.mode, 'hover')\n && !within(e.target, active.toggle.$el)\n && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el))\n ) {\n active.hide(false);\n }\n\n e.preventDefault();\n this.show(this.toggle);\n }\n\n },\n\n {\n\n name: 'toggleshow',\n\n handler: function(e, toggle) {\n\n if (toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n this.show(toggle || this.toggle);\n }\n\n },\n\n {\n\n name: (\"togglehide \" + pointerLeave),\n\n handler: function(e, toggle) {\n\n if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n\n if (this.toggle && includes(this.toggle.mode, 'hover')) {\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforeshow',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n Animation.cancel(this.$el);\n this.position();\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n this.tracker.init();\n trigger(this.$el, 'updatearia');\n registerEvent();\n }\n\n },\n\n {\n\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n }\n\n },\n\n {\n\n name: 'hide',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n trigger(this.$el, 'updatearia');\n this.tracker.cancel();\n }\n\n },\n\n {\n\n name: 'updatearia',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n this.updateAria(this.$el);\n\n if (toggle || this.toggle) {\n attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled() ? 'true' : 'false');\n toggleClass(this.toggle.$el, this.cls, this.isToggled());\n }\n }\n }\n\n ],\n\n update: {\n\n write: function() {\n\n if (this.isToggled() && !Animation.inProgress(this.$el)) {\n this.position();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n show: function(toggle, delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); };\n var tryShow = function () {\n\n this$1.toggle = toggle || this$1.toggle;\n\n this$1.clearTimers();\n\n if (this$1.isActive()) {\n return;\n } else if (delay && active && active !== this$1 && active.isDelaying) {\n this$1.showTimer = setTimeout(this$1.show, 10);\n return;\n } else if (this$1.isParentOf(active)) {\n\n if (active.hideTimer) {\n active.hide(false);\n } else {\n return;\n }\n\n } else if (active && this$1.isChildOf(active)) {\n\n active.clearTimers();\n\n } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) {\n\n var prev;\n while (active && active !== prev && !this$1.isChildOf(active)) {\n prev = active;\n active.hide(false);\n }\n\n }\n\n if (delay && this$1.delayShow) {\n this$1.showTimer = setTimeout(show, this$1.delayShow);\n } else {\n show();\n }\n\n active = this$1;\n };\n\n if (toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n\n once(this.$el, 'hide', tryShow);\n this.hide(false);\n\n } else {\n tryShow();\n }\n },\n\n hide: function(delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var hide = function () { return this$1.toggleNow(this$1.$el, false); };\n\n this.clearTimers();\n\n this.isDelaying = this.tracker.movesTo(this.$el);\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, this.hoverIdle);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers: function() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive: function() {\n return active === this;\n },\n\n isChildOf: function(drop) {\n return drop && drop !== this && within(this.$el, drop.$el);\n },\n\n isParentOf: function(drop) {\n return drop && drop !== this && within(drop.$el, this.$el);\n },\n\n position: function() {\n\n removeClasses(this.$el, ((this.clsDrop) + \"-(stack|boundary)\"));\n css(this.$el, {top: '', left: '', display: 'block'});\n toggleClass(this.$el, ((this.clsDrop) + \"-boundary\"), this.boundaryAlign);\n\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, ((this.clsDrop) + \"-stack\"));\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n\n css(this.$el, 'display', '');\n\n }\n\n }\n\n };\n\n var registered;\n\n function registerEvent() {\n\n if (registered) {\n return;\n }\n\n registered = true;\n on(document, pointerUp, function (ref) {\n var target = ref.target;\n var defaultPrevented = ref.defaultPrevented;\n\n var prev;\n\n if (defaultPrevented) {\n return;\n }\n\n while (active && active !== prev && !within(target, active.$el) && !(active.toggle && within(target, active.toggle.$el))) {\n prev = active;\n active.hide(false);\n }\n });\n }\n\n var Dropdown = {\n\n extends: Drop\n\n };\n\n var FormCustom = {\n\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n\n input: function(_, $el) {\n return $(selInput, $el);\n },\n\n state: function() {\n return this.input.nextElementSibling;\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && (target === true\n && this.input.parentNode === $el\n && this.input.nextElementSibling\n || query(target, $el));\n }\n\n },\n\n update: function() {\n\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0]\n ? input.files[0].name\n : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0])\n ? option.textContent\n : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n\n },\n\n events: [\n\n {\n name: 'change',\n\n handler: function() {\n this.$emit();\n }\n },\n\n {\n name: 'reset',\n\n el: function() {\n return closest(this.$el, 'form');\n },\n\n handler: function() {\n this.$emit();\n }\n }\n\n ]\n\n };\n\n // Deprecated\n var Gif = {\n\n update: {\n\n read: function(data) {\n\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n\n write: function() {\n this.$el.src = this.$el.src;\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n var Margin = {\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n update: {\n\n read: function(data) {\n\n var items = this.$el.children;\n var rows = [[]];\n\n if (!items.length || !isVisible(this.$el)) {\n return data.rows = rows;\n }\n\n data.rows = getRows(items);\n data.stacks = !data.rows.some(function (row) { return row.length > 1; });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var rows = ref.rows;\n\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) {\n toggleClass(el, this$1.margin, i !== 0);\n toggleClass(el, this$1.firstColumn, j === 0);\n }); }\n );\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function getRows(items) {\n var rows = [[]];\n\n for (var i = 0; i < items.length; i++) {\n\n var el = items[i];\n var dim = getOffset(el);\n\n if (!dim.height) {\n continue;\n }\n\n for (var j = rows.length - 1; j >= 0; j--) {\n\n var row = rows[j];\n\n if (!row[0]) {\n row.push(el);\n break;\n }\n\n var leftDim = (void 0);\n if (row[0].offsetParent === el.offsetParent) {\n leftDim = getOffset(row[0]);\n } else {\n dim = getOffset(el, true);\n leftDim = getOffset(row[0], true);\n }\n\n if (dim.top >= leftDim.bottom - 1) {\n rows.push([el]);\n break;\n }\n\n if (dim.bottom > leftDim.top) {\n\n if (dim.left < leftDim.left && !isRtl) {\n row.unshift(el);\n break;\n }\n\n row.push(el);\n break;\n }\n\n if (j === 0) {\n rows.unshift([el]);\n break;\n }\n\n }\n\n }\n\n return rows;\n\n }\n\n function getOffset(element, offset) {\n var assign;\n\n if ( offset === void 0 ) offset = false;\n\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n\n if (offset) {\n (assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]);\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n height: offsetHeight,\n bottom: offsetTop + offsetHeight\n };\n }\n\n var Grid = {\n\n extends: Margin,\n\n mixins: [Class],\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n computed: {\n\n length: function(_, $el) {\n return $el.children.length;\n },\n\n parallax: function(ref) {\n var parallax = ref.parallax;\n\n return parallax && this.length ? Math.abs(parallax) : '';\n }\n\n },\n\n connected: function() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n\n\n if (this.masonry || this.parallax) {\n rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); });\n\n if (isRtl) {\n rows.map(function (row) { return row.reverse(); });\n }\n\n }\n\n var transitionInProgress = rows.some(function (elements) { return elements.some(Transition.inProgress); });\n var translates = false;\n var elHeight = '';\n\n if (this.masonry && this.length) {\n\n var height = 0;\n\n translates = rows.reduce(function (translates, row, i) {\n\n translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); });\n height = row.reduce(function (height, el) { return Math.max(height, el.offsetHeight); }, 0);\n\n return translates;\n\n }, []);\n\n elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1);\n\n }\n\n return {rows: rows, translates: translates, height: !transitionInProgress ? elHeight : false};\n\n },\n\n write: function(ref) {\n var stacks = ref.stacks;\n var height = ref.height;\n\n\n toggleClass(this.$el, this.clsStack, stacks);\n\n css(this.$el, 'paddingBottom', this.parallax);\n height !== false && css(this.$el, 'height', height);\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var height$1 = ref.height;\n\n return {\n scrolled: this.parallax\n ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * this.parallax\n : false\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n\n if (scrolled === false && !translates) {\n return;\n }\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : (\"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\")); }\n ); }\n );\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n function getMarginTop(root, cls) {\n\n var nodes = toNodes(root.children);\n var ref = nodes.filter(function (el) { return hasClass(el, cls); });\n var node = ref[0];\n\n return toFloat(node\n ? css(node, 'marginTop')\n : css(nodes[0], 'paddingLeft'));\n }\n\n function maxColumnHeight(rows) {\n return Math.max.apply(Math, rows.reduce(function (sum, row) {\n row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; });\n return sum;\n }, []));\n }\n\n // IE 11 fix (min-height on a flex container won't apply to its flex items)\n var FlexBug = isIE ? {\n\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n css(this.elements, 'height', '');\n },\n\n order: -5,\n\n events: ['resize']\n\n },\n\n {\n\n write: function() {\n var this$1 = this;\n\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust('height', el, 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n\n order: 5,\n\n events: ['resize']\n\n }\n\n ]\n\n } : {};\n\n var HeightMatch = {\n\n mixins: [FlexBug],\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return $$(target, $el);\n }\n\n },\n\n update: {\n\n read: function() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n\n return elements.forEach(function (el, i) { return css(el, 'minHeight', heights[i]); }\n );\n }\n );\n },\n\n events: ['resize']\n\n }\n\n };\n\n function match(elements) {\n var assign;\n\n\n if (elements.length < 2) {\n return {heights: [''], elements: elements};\n }\n\n var ref = getHeights(elements);\n var heights = ref.heights;\n var max = ref.max;\n var hasMinHeight = elements.some(function (el) { return el.style.minHeight; });\n var hasShrunk = elements.some(function (el, i) { return !el.style.minHeight && heights[i] < max; });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n ((assign = getHeights(elements), heights = assign.heights, max = assign.max));\n }\n\n heights = elements.map(function (el, i) { return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max; }\n );\n\n return {heights: heights, elements: elements};\n }\n\n function getHeights(elements) {\n var heights = elements.map(function (el) { return offset(el).height - boxModelAdjust('height', el, 'content-box'); });\n var max = Math.max.apply(null, heights);\n\n return {heights: heights, max: max};\n }\n\n var HeightViewport = {\n\n mixins: [FlexBug],\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n update: {\n\n read: function(ref) {\n var prev = ref.minHeight;\n\n\n var minHeight = '';\n var box = boxModelAdjust('height', this.$el, 'content-box');\n\n if (this.expand) {\n\n minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || '';\n\n } else {\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top < height(window) / 2 ? (\" - \" + top + \"px\") : '';\n\n }\n\n if (this.offsetBottom === true) {\n\n minHeight += \" - \" + (offsetHeight(this.$el.nextElementSibling)) + \"px\";\n\n } else if (isNumeric(this.offsetBottom)) {\n\n minHeight += \" - \" + (this.offsetBottom) + \"vh\";\n\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n\n minHeight += \" - \" + (toFloat(this.offsetBottom)) + \"px\";\n\n } else if (isString(this.offsetBottom)) {\n\n minHeight += \" - \" + (offsetHeight(query(this.offsetBottom, this.$el))) + \"px\";\n\n }\n\n minHeight += (box ? (\" - \" + box + \"px\") : '') + \")\";\n\n }\n\n return {minHeight: minHeight, prev: prev};\n },\n\n write: function(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n\n\n css(this.$el, {minHeight: minHeight});\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function offsetHeight(el) {\n return el && el.offsetHeight || 0;\n }\n\n var Svg = {\n\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n 'class': String,\n strokeAnimation: Boolean,\n attributes: 'list'\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class'],\n 'class': '',\n strokeAnimation: false\n },\n\n beforeConnect: function() {\n var this$1 = this;\n var assign;\n\n\n this.class += ' uk-svg';\n\n if (!this.icon && includes(this.src, '#')) {\n\n var parts = this.src.split('#');\n\n if (parts.length > 1) {\n (assign = parts, this.src = assign[0], this.icon = assign[1]);\n }\n }\n\n this.svg = this.getSvg().then(function (el) {\n this$1.applyAttributes(el);\n return this$1.svgEl = insertSVG(el, this$1.$el);\n }, noop);\n\n },\n\n disconnected: function() {\n var this$1 = this;\n\n\n if (isVoidElement(this.$el)) {\n attr(this.$el, 'hidden', null);\n }\n\n if (this.svg) {\n this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop);\n }\n\n this.svg = this.svgEl = null;\n\n },\n\n update: {\n\n read: function() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n\n write: function() {\n applyAnimation(this.svgEl);\n },\n\n type: ['resize']\n\n },\n\n methods: {\n\n getSvg: function() {\n var this$1 = this;\n\n return loadSVG(this.src).then(function (svg) { return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.'); }\n );\n },\n\n applyAttributes: function(el) {\n var this$1 = this;\n\n\n for (var prop in this.$options.props) {\n if (this[prop] && includes(this.include, prop)) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref = this.attributes[attribute].split(':', 2);\n var prop$1 = ref[0];\n var value = ref[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = [this.width, this.height];\n\n if (!dimensions.some(function (val) { return val; })) {\n dimensions = props.map(function (prop) { return attr(el, prop); });\n }\n\n var viewBox = attr(el, 'viewBox');\n if (viewBox && !dimensions.some(function (val) { return val; })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n val = (val | 0) * this$1.ratio;\n val && attr(el, props[i], val);\n\n if (val && !dimensions[i ^ 1]) {\n removeAttr(el, props[i ^ 1]);\n }\n });\n\n attr(el, 'data-svg', this.icon || this.src);\n\n }\n\n }\n\n };\n\n var svgs = {};\n\n function loadSVG(src) {\n\n if (svgs[src]) {\n return svgs[src];\n }\n\n return svgs[src] = new Promise(function (resolve, reject) {\n\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n\n ajax(src).then(\n function (xhr) { return resolve(xhr.response); },\n function () { return reject('SVG not found.'); }\n );\n\n }\n\n });\n }\n\n function parseSVG(svg, icon) {\n\n if (icon && includes(svg, '<symbol')) {\n svg = parseSymbols(svg, icon) || svg;\n }\n\n svg = $(svg.substr(svg.indexOf('<svg')));\n return svg && svg.hasChildNodes() && svg;\n }\n\n var symbolRe = /<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n\n if (!symbols[svg]) {\n\n symbols[svg] = {};\n\n var match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + (match[1]) + \"svg>\";\n }\n\n symbolRe.lastIndex = 0;\n\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, $$('[stroke]', el).map(function (stroke) { return stroke.getTotalLength && stroke.getTotalLength() || 0; }\n ).concat([0])));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n\n attr(root, 'hidden', true);\n\n var next = root.nextElementSibling;\n return equals(el, next)\n ? next\n : after(root, el);\n\n } else {\n\n var last = root.lastElementChild;\n return equals(el, last)\n ? last\n : append(root, el);\n\n }\n }\n\n function equals(el, other) {\n return attr(el, 'data-svg') === attr(other, 'data-svg');\n }\n\n var closeIcon = \"<svg width=\\\"14\\\" height=\\\"14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"13\\\" y2=\\\"13\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"13\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"13\\\"/></svg>\";\n\n var closeLarge = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"19\\\" y2=\\\"19\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"19\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"19\\\"/></svg>\";\n\n var marker = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"9\\\" y=\\\"4\\\" width=\\\"1\\\" height=\\\"11\\\"/><rect x=\\\"4\\\" y=\\\"9\\\" width=\\\"11\\\" height=\\\"1\\\"/></svg>\";\n\n var navbarToggleIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect y=\\\"9\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"3\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"15\\\" width=\\\"20\\\" height=\\\"2\\\"/></svg>\";\n\n var overlayIcon = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"19\\\" y=\\\"0\\\" width=\\\"1\\\" height=\\\"40\\\"/><rect x=\\\"0\\\" y=\\\"19\\\" width=\\\"40\\\" height=\\\"1\\\"/></svg>\";\n\n var paginationNext = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 1 6 6 1 11\\\"/></svg>\";\n\n var paginationPrevious = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"6 1 1 6 6 11\\\"/></svg>\";\n\n var searchIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\"/><path fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" d=\\\"M14,14 L18,18 L14,14 Z\\\"/></svg>\";\n\n var searchLarge = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"16.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" x1=\\\"38\\\" y1=\\\"39\\\" x2=\\\"29\\\" y2=\\\"30\\\"/></svg>\";\n\n var searchNavbar = \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"23\\\" y1=\\\"23\\\" x2=\\\"17\\\" y2=\\\"17\\\"/></svg>\";\n\n var slidenavNext = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"1.225,23 12.775,12 1.225,1 \\\"/></svg>\";\n\n var slidenavNextLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"4.002,38.547 22.527,20.024 4,1.5 \\\"/></svg>\";\n\n var slidenavPrevious = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"12.775,1 1.225,12 12.775,23 \\\"/></svg>\";\n\n var slidenavPreviousLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"20.527,1.5 2,20.024 20.525,38.547 \\\"/></svg>\";\n\n var spinner = \"<svg width=\\\"30\\\" height=\\\"30\\\" viewBox=\\\"0 0 30 30\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" cx=\\\"15\\\" cy=\\\"15\\\" r=\\\"14\\\"/></svg>\";\n\n var totop = \"<svg width=\\\"18\\\" height=\\\"10\\\" viewBox=\\\"0 0 18 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 9 9 1 17 9 \\\"/></svg>\";\n\n var parsed = {};\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n\n var Icon = {\n\n install: install,\n\n extends: Svg,\n\n args: 'icon',\n\n props: ['icon'],\n\n data: {include: []},\n\n isIcon: true,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n\n getSvg: function() {\n\n var icon = getIcon(applyRtl(this.icon));\n\n if (!icon) {\n return Promise.reject('Icon not found.');\n }\n\n return Promise.resolve(icon);\n }\n\n }\n\n };\n\n var IconComponent = {\n\n args: false,\n\n extends: Icon,\n\n data: function (vm) { return ({\n icon: hyphenate(vm.constructor.options.name)\n }); },\n\n beforeConnect: function() {\n addClass(this.$el, this.$name);\n }\n\n };\n\n var Slidenav = {\n\n extends: IconComponent,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-slidenav');\n },\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-slidenav-large')\n ? (icon + \"-large\")\n : icon;\n }\n\n }\n\n };\n\n var Search = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length\n ? 'search-large'\n : parents($el, '.uk-search-navbar').length\n ? 'search-navbar'\n : icon;\n }\n\n }\n\n };\n\n var Close = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function() {\n return (\"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'));\n }\n\n }\n\n };\n\n var Spinner = {\n\n extends: IconComponent,\n\n connected: function() {\n var this$1 = this;\n\n this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop);\n }\n\n };\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n\n\n var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n }); }\n );\n }\n };\n }\n\n function getIcon(icon) {\n\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $(icons[icon].trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var Img = {\n\n args: 'dataSrc',\n\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: 0,\n target: false\n },\n\n computed: {\n\n cacheKey: function(ref) {\n var dataSrc = ref.dataSrc;\n\n return ((this.$name) + \".\" + dataSrc);\n },\n\n width: function(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n\n return width || dataWidth;\n },\n\n height: function(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n\n return height || dataHeight;\n },\n\n sizes: function(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n\n return sizes || dataSizes;\n },\n\n isImg: function(_, $el) {\n return isImg($el);\n },\n\n target: {\n\n get: function(ref) {\n var target = ref.target;\n\n return [this.$el].concat(queryAll(target, this.$el));\n },\n\n watch: function() {\n this.observe();\n }\n\n },\n\n offsetTop: function(ref) {\n var offsetTop = ref.offsetTop;\n\n return toPx(offsetTop, 'height');\n },\n\n offsetLeft: function(ref) {\n var offsetLeft = ref.offsetLeft;\n\n return toPx(offsetLeft, 'width');\n }\n\n },\n\n connected: function() {\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: ((this.offsetTop) + \"px \" + (this.offsetLeft) + \"px\")\n });\n\n requestAnimationFrame(this.observe);\n\n },\n\n disconnected: function() {\n this.observer.disconnect();\n },\n\n update: {\n\n read: function(ref) {\n var this$1 = this;\n var image = ref.image;\n\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) { return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img)); });\n\n },\n\n write: function(data) {\n\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n\n var bgSize = css(this.$el, 'backgroundSize');\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', ((data.bgSize) + \"px\"));\n }\n\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n load: function(entries) {\n var this$1 = this;\n\n\n if (!entries.some(function (entry) { return entry.isIntersecting; })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n\n }, noop);\n\n this.observer.disconnect();\n },\n\n observe: function() {\n var this$1 = this;\n\n if (!this._data.image && this._connected) {\n this.target.forEach(function (el) { return this$1.observer.observe(el); });\n }\n }\n\n }\n\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n\n if (isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.src = src);\n } else if (src) {\n\n var change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, 'backgroundImage', (\"url(\" + (escape(src)) + \")\"));\n trigger(el, createEvent('load', false));\n }\n\n }\n\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n\n if (sizes) {\n ((assign = Dimensions.ratio({width: width, height: height}, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height));\n }\n\n return (\"data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\"></svg>\");\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n function sizesToPixel(sizes) {\n var matches;\n\n sizesRe.lastIndex = 0;\n\n while ((matches = sizesRe.exec(sizes))) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n function evaluateSize(size) {\n return startsWith(size, 'calc')\n ? size\n .substring(5, size.length - 1)\n .replace(sizeRe, function (size) { return toPx(size); })\n .replace(/ /g, '')\n .match(additionRe)\n .reduce(function (a, b) { return a + +b; }, 0)\n : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) { return a - b; });\n\n return descriptors.filter(function (size) { return size >= srcSize; })[0] || descriptors.pop() || '';\n }\n\n function isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage;\n\n // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n\n props: {\n media: Boolean\n },\n\n data: {\n media: false\n },\n\n computed: {\n\n matchMedia: function() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n\n }\n\n };\n\n function toMedia(value) {\n\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + (value.substr(1));\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? (\"(min-width: \" + value + \"px)\") : false;\n }\n\n var Leader = {\n\n mixins: [Class, Media],\n\n props: {\n fill: String\n },\n\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n\n fill: function(ref) {\n var fill = ref.fill;\n\n return fill || getCssVar('leader-fill-content');\n }\n\n },\n\n connected: function() {\n var assign;\n\n (assign = wrapInner(this.$el, (\"<span class=\\\"\" + (this.clsWrapper) + \"\\\">\")), this.wrapper = assign[0]);\n },\n\n disconnected: function() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: {\n\n read: function(ref) {\n var changed = ref.changed;\n var width = ref.width;\n\n\n var prev = width;\n\n width = Math.floor(this.$el.offsetWidth / 2);\n\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n\n write: function(data) {\n\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Container = {\n\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n\n container: function(ref) {\n var container = ref.container;\n\n return container === true && this.$container || container && $(container);\n }\n\n }\n\n };\n\n var active$1;\n\n var Modal = {\n\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n\n panel: function(ref, $el) {\n var selPanel = ref.selPanel;\n\n return $(selPanel, $el);\n },\n\n transitionElement: function() {\n return this.panel;\n },\n\n bgClose: function(ref) {\n var bgClose = ref.bgClose;\n\n return bgClose && this.panel;\n }\n\n },\n\n beforeDisconnect: function() {\n if (this.isToggled()) {\n this.toggleNow(this.$el, false);\n }\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler: function(e) {\n\n var prev = active$1 && active$1 !== this && active$1;\n\n active$1 = this;\n\n if (prev) {\n if (this.stack) {\n this.prev = prev;\n } else {\n\n active$1 = prev;\n\n if (prev.isToggled()) {\n prev.hide().then(this.show);\n } else {\n once(prev.$el, 'beforeshow hidden', this.show, false, function (ref) {\n var target = ref.target;\n var type = ref.type;\n\n return type === 'hidden' && target === prev.$el;\n });\n }\n e.preventDefault();\n\n }\n\n return;\n }\n\n registerEvents();\n\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (!hasClass(document.documentElement, this.clsPage)) {\n this.scrollbarWidth = width(window) - width(document);\n css(document.body, 'overflowY', this.scrollbarWidth && this.overlay ? 'scroll' : '');\n }\n\n addClass(document.documentElement, this.clsPage);\n\n }\n\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n if (!active$1 || active$1 === this && !this.prev) {\n deregisterEvents();\n }\n }\n\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n var found;\n var ref = this;\n var prev = ref.prev;\n\n active$1 = active$1 && active$1 !== this && active$1 || prev;\n\n if (!active$1) {\n\n css(document.body, 'overflowY', '');\n\n } else {\n while (prev) {\n\n if (prev.clsPage === this.clsPage) {\n found = true;\n break;\n }\n\n prev = prev.prev;\n\n }\n\n }\n\n if (!found) {\n removeClass(document.documentElement, this.clsPage);\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n toggle: function() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show: function() {\n var this$1 = this;\n\n\n if (this.isToggled()) {\n return Promise.resolve();\n }\n\n if (this.container && this.$el.parentNode !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) { return requestAnimationFrame(function () { return this$1.show().then(resolve); }\n ); }\n );\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n\n hide: function() {\n return this.isToggled()\n ? this.toggleElement(this.$el, false, animate$1(this))\n : Promise.resolve();\n },\n\n getActive: function() {\n return active$1;\n }\n\n }\n\n };\n\n var events;\n\n function registerEvents() {\n\n if (events) {\n return;\n }\n\n events = [\n on(document, pointerUp, function (ref) {\n var target = ref.target;\n var defaultPrevented = ref.defaultPrevented;\n\n if (active$1 && active$1.bgClose && !defaultPrevented && (!active$1.overlay || within(target, active$1.$el)) && !within(target, active$1.panel)) {\n active$1.hide();\n }\n }),\n on(document, 'keydown', function (e) {\n if (e.keyCode === 27 && active$1 && active$1.escClose) {\n e.preventDefault();\n active$1.hide();\n }\n })\n ];\n }\n\n function deregisterEvents() {\n events && events.forEach(function (unbind) { return unbind(); });\n events = null;\n }\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n\n return function (el, show) { return new Promise(function (resolve, reject) { return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n if (toMs(css(transitionElement, 'transitionDuration'))) {\n once(transitionElement, 'transitionend', resolve, false, function (e) { return e.target === transitionElement; });\n } else {\n resolve();\n }\n }); }\n ); };\n }\n\n var Modal$1 = {\n\n install: install$1,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n\n }\n }\n\n ]\n\n };\n\n function install$1(UIkit) {\n\n UIkit.modal.dialog = function (content, options) {\n\n var dialog = UIkit.modal((\" <div class=\\\"uk-modal\\\"> <div class=\\\"uk-modal-dialog\\\">\" + content + \"</div> </div> \"), options);\n\n dialog.show();\n\n on(dialog.$el, 'hidden', function (ref) {\n var target = ref.target;\n var currentTarget = ref.currentTarget;\n\n if (target === currentTarget) {\n Promise.resolve(function () { return dialog.$destroy(true); });\n }\n });\n\n return dialog;\n };\n\n UIkit.modal.alert = function (message, options) {\n\n options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options);\n\n return new Promise(\n function (resolve) { return on(UIkit.modal.dialog((\" <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-primary uk-modal-close\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> \"), options).$el, 'hide', resolve); }\n );\n };\n\n UIkit.modal.confirm = function (message, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve, reject) {\n\n var confirm = UIkit.modal.dialog((\" <form> <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> </form> \"), options);\n\n var resolved = false;\n\n on(confirm.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve();\n resolved = true;\n confirm.hide();\n });\n on(confirm.$el, 'hide', function () {\n if (!resolved) {\n reject();\n }\n });\n\n });\n };\n\n UIkit.modal.prompt = function (message, value, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve) {\n\n var prompt = UIkit.modal.dialog((\" <form class=\\\"uk-form-stacked\\\"> <div class=\\\"uk-modal-body\\\"> <label>\" + (isString(message) ? message : html(message)) + \"</label> <input class=\\\"uk-input\\\" autofocus> </div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\">\" + (options.labels.ok) + \"</button> </div> </form> \"), options),\n input = $('input', prompt.$el);\n\n input.value = value;\n\n var resolved = false;\n\n on(prompt.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve(input.value);\n resolved = true;\n prompt.hide();\n });\n on(prompt.$el, 'hide', function () {\n if (!resolved) {\n resolve(null);\n }\n });\n\n });\n };\n\n UIkit.modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n }\n\n var Nav = {\n\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n\n };\n\n var Navbar = {\n\n mixins: [Class, FlexBug],\n\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n\n return (boundary === true || boundaryAlign) ? $el : boundary;\n },\n\n dropbarAnchor: function(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n\n return query(dropbarAnchor, $el);\n },\n\n pos: function(ref) {\n var align = ref.align;\n\n return (\"bottom-\" + align);\n },\n\n dropdowns: function(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n\n return $$((dropdown + \" .\" + clsDrop), $el);\n }\n\n },\n\n beforeConnect: function() {\n\n var ref = this.$props;\n var dropbar = ref.dropbar;\n\n this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>'));\n\n if (this.dropbar) {\n\n addClass(this.dropbar, 'uk-navbar-dropbar');\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n }\n\n },\n\n disconnected: function() {\n this.dropbar && remove(this.dropbar);\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.$create(\n 'drop',\n this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }),\n assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset})\n );\n\n },\n\n events: [\n\n {\n name: 'mouseover',\n\n delegate: function() {\n return this.dropdown;\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n var active = this.getActive();\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n\n },\n\n {\n name: 'mouseleave',\n\n el: function() {\n return this.dropbar;\n },\n\n handler: function() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) { return matches(el, ':hover'); })) {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function() {\n\n if (!this.dropbar.parentNode) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n\n }\n },\n\n {\n name: 'show',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, drop) {\n\n var $el = drop.$el;\n var dir = drop.dir;\n\n this.clsDrop && addClass($el, ((this.clsDrop) + \"-dropbar\"));\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n },\n\n {\n name: 'beforehide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(e, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }\n\n ],\n\n methods: {\n\n getActive: function() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop && drop.isActive(); });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n\n transitionTo: function(newHeight, el) {\n var this$1 = this;\n\n\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clip', (\"rect(0,\" + (el.offsetWidth) + \"px,\" + oldHeight + \"px,0)\"));\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n return Promise.all([\n Transition.start(dropbar, {height: newHeight}, this.duration),\n Transition.start(el, {clip: (\"rect(0,\" + (el.offsetWidth) + \"px,\" + newHeight + \"px,0)\")}, this.duration)\n ])\n .catch(noop)\n .then(function () {\n css(el, {clip: ''});\n this$1.$update(dropbar);\n });\n },\n\n getDropdown: function(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n\n }\n\n };\n\n var Offcanvas = {\n\n mixins: [Modal],\n\n args: 'mode',\n\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close'\n },\n\n computed: {\n\n clsFlip: function(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n\n return flip ? clsFlip : '';\n },\n\n clsOverlay: function(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n\n return overlay ? clsOverlay : '';\n },\n\n clsMode: function(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n\n return (clsMode + \"-\" + mode);\n },\n\n clsSidebarAnimation: function(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContainerAnimation: function(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n\n transitionElement: function(ref) {\n var mode = ref.mode;\n\n return mode === 'reveal' ? this.panel.parentNode : this.panel;\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n if (current.hash && $(current.hash, document.body)) {\n this.hide();\n }\n }\n\n },\n\n {\n name: 'touchstart',\n\n passive: true,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(ref) {\n var targetTouches = ref.targetTouches;\n\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n\n }\n\n },\n\n {\n name: 'touchmove',\n\n self: true,\n passive: false,\n\n filter: function() {\n return this.overlay;\n },\n\n handler: function(e) {\n e.cancelable && e.preventDefault();\n }\n\n },\n\n {\n name: 'touchmove',\n\n passive: false,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(e) {\n\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = event.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight\n || scrollTop === 0 && clientY > 0\n || scrollHeight - scrollTop <= clientHeight && clientY < 0\n ) {\n e.cancelable && e.preventDefault();\n }\n\n }\n\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) {\n wrapAll(this.panel, '<div>');\n addClass(this.panel.parentNode, this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n\n height(document.body); // force reflow\n addClass(document.body, this.clsContainerAnimation);\n\n this.clsContainerAnimation && suppressUserScale();\n\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler: function() {\n removeClass(document.body, this.clsContainerAnimation);\n\n var active = this.getActive();\n if (this.mode === 'none' || active && active !== this && active !== this.prev) {\n trigger(this.panel, 'transitionend');\n }\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n\n css(document.documentElement, 'overflowY', '');\n\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler: function(e) {\n\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n\n }\n }\n\n ]\n\n };\n\n // Chrome in responsive mode zooms page upon opening offcanvas\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '<meta name=\"viewport\">');\n }\n\n var OverflowAuto = {\n\n mixins: [Class],\n\n props: {\n selContainer: String,\n selContent: String\n },\n\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\n },\n\n computed: {\n\n container: function(ref, $el) {\n var selContainer = ref.selContainer;\n\n return closest($el, selContainer);\n },\n\n content: function(ref, $el) {\n var selContent = ref.selContent;\n\n return closest($el, selContent);\n }\n\n },\n\n connected: function() {\n css(this.$el, 'minHeight', 150);\n },\n\n update: {\n\n read: function() {\n\n if (!this.content || !this.container) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))\n };\n },\n\n write: function(ref) {\n var current = ref.current;\n var max = ref.max;\n\n css(this.$el, 'maxHeight', max);\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Responsive = {\n\n props: ['width', 'height'],\n\n connected: function() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n\n read: function() {\n return isVisible(this.$el) && this.width && this.height\n ? {width: width(this.$el.parentNode), height: this.height}\n : false;\n },\n\n write: function(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Scroll = {\n\n props: {\n duration: Number,\n offset: Number\n },\n\n data: {\n duration: 1000,\n offset: 0\n },\n\n methods: {\n\n scrollTo: function(el) {\n var this$1 = this;\n\n\n el = el && $(el) || document.body;\n\n var docHeight = height(document);\n var winHeight = height(window);\n\n var target = offset(el).top - this.offset;\n if (target + winHeight > docHeight) {\n target = docHeight - winHeight;\n }\n\n if (!trigger(this.$el, 'beforescroll', [this, el])) {\n return;\n }\n\n var start = Date.now();\n var startY = window.pageYOffset;\n var step = function () {\n\n var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration));\n\n scrollTop(window, currentY);\n\n // scroll more if we have not reached our destination\n if (currentY !== target) {\n requestAnimationFrame(step);\n } else {\n trigger(this$1.$el, 'scrolled', [this$1, el]);\n }\n\n };\n\n step();\n\n }\n\n },\n\n events: {\n\n click: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1));\n }\n\n }\n\n };\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n var Scrollspy = {\n\n args: 'cls',\n\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n\n data: function () { return ({\n cls: false,\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }); },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return target ? $$(target, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n if (this.hidden) {\n css(filter(this.elements, (\":not(.\" + (this.inViewClass) + \")\")), 'visibility', 'hidden');\n }\n }\n\n },\n\n {\n\n read: function(ref) {\n var this$1 = this;\n var update = ref.update;\n\n\n if (!update) {\n return;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n\n if (!state) {\n state = {cls: data(el, 'uk-scrollspy-class') || this$1.cls};\n }\n\n state.show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n el._ukScrollspyState = state;\n\n });\n\n },\n\n write: function(data) {\n var this$1 = this;\n\n\n // Let child components be applied at least once first\n if (!data.update) {\n this.$emit();\n return data.update = true;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n var cls = state.cls;\n\n if (state.show && !state.inview && !state.queued) {\n\n var show = function () {\n\n css(el, 'visibility', '');\n addClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'inview');\n\n this$1.$update(el);\n\n state.inview = true;\n state.abort && state.abort();\n };\n\n if (this$1.delay) {\n\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return !state.inview && new Promise(function (resolve) {\n\n var timer = setTimeout(function () {\n\n show();\n resolve();\n\n }, data.promise || this$1.elements.length === 1 ? this$1.delay : 0);\n\n state.abort = function () {\n clearTimeout(timer);\n resolve();\n state.queued = false;\n };\n\n });\n\n });\n\n } else {\n show();\n }\n\n } else if (!state.show && (state.inview || state.queued) && this$1.repeat) {\n\n state.abort && state.abort();\n\n if (!state.inview) {\n return;\n }\n\n css(el, 'visibility', this$1.hidden ? 'hidden' : '');\n removeClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'outview');\n\n this$1.$update(el);\n\n state.inview = false;\n\n }\n\n\n });\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var ScrollspyNav = {\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n\n links: function(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) { return el.hash; });\n },\n\n elements: function(ref) {\n var selector = ref.closest;\n\n return closest(this.links, selector || '*');\n },\n\n targets: function() {\n return $$(this.links.map(function (el) { return escape(el.hash).substr(1); }).join(','));\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n if (this.scroll) {\n this.$create('scroll', this.links, {offset: this.offset || 0});\n }\n }\n\n },\n\n {\n\n read: function(data) {\n var this$1 = this;\n\n\n var scroll = window.pageYOffset + this.offset + 1;\n var max = height(document) - height(window) + this.offset;\n\n data.active = false;\n\n this.targets.every(function (el, i) {\n\n var ref = offset(el);\n var top = ref.top;\n var last = i + 1 === this$1.targets.length;\n\n if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) {\n return false;\n }\n\n if (!last && offset(this$1.targets[i + 1]).top <= scroll) {\n return true;\n }\n\n if (scroll >= max) {\n for (var j = this$1.targets.length - 1; j > i; j--) {\n if (isInView(this$1.targets[j])) {\n el = this$1.targets[j];\n break;\n }\n }\n }\n\n return !(data.active = $(filter(this$1.links, (\"[href=\\\"#\" + (el.id) + \"\\\"]\"))));\n\n });\n\n },\n\n write: function(ref) {\n var active = ref.active;\n\n\n this.links.forEach(function (el) { return el.blur(); });\n removeClass(this.elements, this.cls);\n\n if (active) {\n trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]);\n }\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var Sticky = {\n\n mixins: [Class, Media],\n\n props: {\n top: null,\n bottom: Boolean,\n offset: Number,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n\n computed: {\n\n selTarget: function(ref, $el) {\n var selTarget = ref.selTarget;\n\n return selTarget && $(selTarget, $el) || $el;\n },\n\n widthElement: function(ref, $el) {\n var widthElement = ref.widthElement;\n\n return query(widthElement, $el) || this.placeholder;\n },\n\n isActive: {\n\n get: function() {\n return hasClass(this.selTarget, this.clsActive);\n },\n\n set: function(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n\n }\n\n },\n\n connected: function() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class=\"uk-sticky-placeholder\"></div>');\n this.isFixed = false;\n this.isActive = false;\n },\n\n disconnected: function() {\n\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n\n events: [\n\n {\n\n name: 'load hashchange popstate',\n\n el: window,\n\n handler: function() {\n var this$1 = this;\n\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n\n });\n }\n\n }\n\n }\n\n ],\n\n update: [\n\n {\n\n read: function(ref, type) {\n var height = ref.height;\n\n\n if (this.isActive && type !== 'update') {\n\n this.hide();\n height = this.$el.offsetHeight;\n this.show();\n\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\n\n var bottom = parseProp('bottom', this);\n\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - height;\n this.inactive = !this.matchMedia;\n\n return {\n lastScroll: false,\n height: height,\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n\n write: function(ref) {\n var height = ref.height;\n var margins = ref.margins;\n\n\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n\n css(placeholder, assign({height: height}, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n attr(placeholder, 'hidden', '');\n }\n\n // ensure active/inactive classes are applied\n this.isActive = this.isActive;\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var scroll = ref.scroll; if ( scroll === void 0 ) scroll = 0;\n\n\n this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth;\n\n this.scroll = window.pageYOffset;\n\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll,\n visible: isVisible(this.$el),\n top: offsetPosition(this.placeholder)[0]\n };\n },\n\n write: function(data, type) {\n var this$1 = this;\n\n\n var initTimestamp = data.initTimestamp; if ( initTimestamp === void 0 ) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n var visible = data.visible;\n var now = performance.now();\n\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll || !visible || this.disabled || this.showOnUp && type !== 'scroll') {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive\n || scroll < this.top\n || this.showOnUp && (scroll <= this.top || dir === 'down' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)\n ) {\n\n if (!this.isFixed) {\n\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop);\n } else {\n this.hide();\n }\n\n } else if (this.isFixed) {\n\n this.update();\n\n } else if (this.animation) {\n\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n\n } else {\n this.show();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n ],\n\n methods: {\n\n show: function() {\n\n this.isFixed = true;\n this.update();\n attr(this.placeholder, 'hidden', null);\n\n },\n\n hide: function() {\n\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {position: '', top: '', width: ''});\n attr(this.placeholder, 'hidden', '');\n\n },\n\n update: function() {\n\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (this.bottom && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: (top + \"px\"),\n width: this.width\n });\n\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n\n }\n\n }\n\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[(prop + \"Offset\")];\n\n\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isNumeric(value)) {\n\n return propOffset + toFloat(value);\n\n } else if (isString(value) && value.match(/^-?\\d+vh$/)) {\n\n return height(window) * toFloat(value) / 100;\n\n } else {\n\n var el = value === true ? $el.parentNode : query(value, $el);\n\n if (el) {\n return offset(el).top + el.offsetHeight;\n }\n\n }\n }\n\n var Switcher = {\n\n mixins: [Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n clsContainer: 'uk-switcher',\n attrItem: 'uk-switcher-item',\n queued: true\n },\n\n computed: {\n\n connects: function(ref, $el) {\n var connect = ref.connect;\n\n return queryAll(connect, $el);\n },\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(toNodes(this.$el.children).filter(function (el) { return within(e.current, el); })[0]);\n }\n\n },\n\n {\n name: 'click',\n\n el: function() {\n return this.connects;\n },\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter: function() {\n return this.swiping;\n },\n\n el: function() {\n return this.connects;\n },\n\n handler: function(ref) {\n var type = ref.type;\n\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }\n\n ],\n\n update: function() {\n var this$1 = this;\n\n\n this.connects.forEach(function (list) { return this$1.updateAria(list.children); });\n var ref = this.$el;\n var children = ref.children;\n this.show(filter(children, (\".\" + (this.cls)))[0] || children[this.active] || children[0]);\n\n },\n\n methods: {\n\n index: function() {\n return !isEmpty(this.connects) && index(filter(this.connects[0].children, (\".\" + (this.cls)))[0]);\n },\n\n show: function(item) {\n var this$1 = this;\n\n\n var ref = this.$el;\n var children = ref.children;\n var length = children.length;\n var prev = this.index();\n var hasPrev = prev >= 0;\n var dir = item === 'previous' ? -1 : 1;\n\n var toggle, active, next = getIndex(item, children, prev);\n\n for (var i = 0; i < length; i++, next = (next + dir + length) % length) {\n if (!matches(this.toggles[next], '.uk-disabled *, .uk-disabled, [disabled]')) {\n toggle = this.toggles[next];\n active = children[next];\n break;\n }\n }\n\n if (!active || prev >= 0 && hasClass(active, this.cls) || prev === next) {\n return;\n }\n\n removeClass(children, this.cls);\n addClass(active, this.cls);\n attr(this.toggles, 'aria-expanded', false);\n attr(toggle, 'aria-expanded', true);\n\n this.connects.forEach(function (list) {\n if (!hasPrev) {\n this$1.toggleNow(list.children[next]);\n } else {\n this$1.toggleElement([list.children[prev], list.children[next]]);\n }\n });\n\n }\n\n }\n\n };\n\n var Tab = {\n\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: Boolean\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected: function() {\n\n var cls = hasClass(this.$el, 'uk-tab-left')\n ? 'uk-tab-left'\n : hasClass(this.$el, 'uk-tab-right')\n ? 'uk-tab-right'\n : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media});\n }\n }\n\n };\n\n var Toggle = {\n\n mixins: [Media, Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list'\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n\n computed: {\n\n target: function(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n }\n\n },\n\n connected: function() {\n trigger(this.target, 'updatearia', [this]);\n },\n\n events: [\n\n {\n\n name: (pointerEnter + \" \" + pointerLeave),\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n this.toggle((\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide')));\n }\n }\n\n },\n\n {\n\n name: 'click',\n\n filter: function() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n // TODO better isToggled handling\n var link;\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]')\n || (link = closest(e.target, 'a[href]')) && (\n this.cls\n || !isVisible(this.target)\n || link.hash && matches(this.target, link.hash)\n )\n ) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n\n }\n\n ],\n\n update: {\n\n read: function() {\n return includes(this.mode, 'media') && this.media\n ? {match: this.matchMedia}\n : false;\n },\n\n write: function(ref) {\n var match = ref.match;\n\n\n var toggled = this.isToggled(this.target);\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n toggle: function(type) {\n if (trigger(this.target, type || 'toggle', [this])) {\n this.toggleElement(this.target);\n }\n }\n\n }\n\n };\n\n function core (UIkit) {\n\n // core components\n UIkit.component('accordion', Accordion);\n UIkit.component('alert', Alert);\n UIkit.component('cover', Cover);\n UIkit.component('drop', Drop);\n UIkit.component('dropdown', Dropdown);\n UIkit.component('formCustom', FormCustom);\n UIkit.component('gif', Gif);\n UIkit.component('grid', Grid);\n UIkit.component('heightMatch', HeightMatch);\n UIkit.component('heightViewport', HeightViewport);\n UIkit.component('icon', Icon);\n UIkit.component('img', Img);\n UIkit.component('leader', Leader);\n UIkit.component('margin', Margin);\n UIkit.component('modal', Modal$1);\n UIkit.component('nav', Nav);\n UIkit.component('navbar', Navbar);\n UIkit.component('offcanvas', Offcanvas);\n UIkit.component('overflowAuto', OverflowAuto);\n UIkit.component('responsive', Responsive);\n UIkit.component('scroll', Scroll);\n UIkit.component('scrollspy', Scrollspy);\n UIkit.component('scrollspyNav', ScrollspyNav);\n UIkit.component('sticky', Sticky);\n UIkit.component('svg', Svg);\n UIkit.component('switcher', Switcher);\n UIkit.component('tab', Tab);\n UIkit.component('toggle', Toggle);\n UIkit.component('video', Video);\n\n // Icon components\n UIkit.component('close', Close);\n UIkit.component('marker', IconComponent);\n UIkit.component('navbarToggleIcon', IconComponent);\n UIkit.component('overlayIcon', IconComponent);\n UIkit.component('paginationNext', IconComponent);\n UIkit.component('paginationPrevious', IconComponent);\n UIkit.component('searchIcon', Search);\n UIkit.component('slidenavNext', Slidenav);\n UIkit.component('slidenavPrevious', Slidenav);\n UIkit.component('spinner', Spinner);\n UIkit.component('totop', IconComponent);\n\n // core functionality\n UIkit.use(Core);\n\n }\n\n UIkit.version = '3.1.6';\n\n core(UIkit);\n\n var Countdown = {\n\n mixins: [Class],\n\n props: {\n date: String,\n clsWrapper: String\n },\n\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n\n computed: {\n\n date: function(ref) {\n var date = ref.date;\n\n return Date.parse(date);\n },\n\n days: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n\n hours: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n\n minutes: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n\n seconds: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n\n units: function() {\n var this$1 = this;\n\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; });\n }\n\n },\n\n connected: function() {\n this.start();\n },\n\n disconnected: function() {\n var this$1 = this;\n\n this.stop();\n this.units.forEach(function (unit) { return empty(this$1[unit]); });\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n\n this.stop();\n\n timespan.days\n = timespan.hours\n = timespan.minutes\n = timespan.seconds\n = 0;\n }\n\n this.units.forEach(function (unit) {\n\n var digits = String(Math.floor(timespan[unit]));\n\n digits = digits.length < 2 ? (\"0\" + digits) : digits;\n\n var el = this$1[unit];\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () { return '<span></span>'; }).join(''));\n }\n\n digits.forEach(function (digit, i) { return el.children[i].textContent = digit; });\n }\n\n });\n\n }\n\n },\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.stop();\n\n if (this.date && this.units.length) {\n this.$emit();\n this.timer = setInterval(function () { return this$1.$emit(); }, 1000);\n }\n\n },\n\n stop: function() {\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n }\n\n }\n\n };\n\n function getTimeSpan(date) {\n\n var total = date - Date.now();\n\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var targetClass = 'uk-animation-target';\n\n var Animate = {\n\n props: {\n animation: Number\n },\n\n data: {\n animation: 150\n },\n\n computed: {\n\n target: function() {\n return this.$el;\n }\n\n },\n\n methods: {\n\n animate: function(action) {\n var this$1 = this;\n\n\n addStyle();\n\n var children = toNodes(this.target.children);\n var propsFrom = children.map(function (el) { return getProps(el, true); });\n\n var oldHeight = height(this.target);\n var oldScrollY = window.pageYOffset;\n\n action();\n\n Transition.cancel(this.target);\n children.forEach(Transition.cancel);\n\n reset(this.target);\n this.$update(this.target);\n fastdom.flush();\n\n var newHeight = height(this.target);\n\n children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); }));\n\n var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom\n ? propsFrom[i]\n ? isVisible(el)\n ? getPositionWithMargin(el)\n : {opacity: 0}\n : {opacity: isVisible(el) ? 1 : 0}\n : false; }\n );\n\n propsFrom = propsTo.map(function (props, i) {\n var from = children[i].parentNode === this$1.target\n ? propsFrom[i] || getProps(children[i])\n : false;\n\n if (from) {\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n }\n\n return from;\n });\n\n addClass(this.target, targetClass);\n children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); });\n css(this.target, 'height', oldHeight);\n scrollTop(window, oldScrollY);\n\n return Promise.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i]\n ? Transition.start(el, propsTo[i], this$1.animation, 'ease')\n : Promise.resolve(); }\n ).concat(Transition.start(this.target, {height: newHeight}, this.animation, 'ease'))).then(function () {\n children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); });\n reset(this$1.target);\n this$1.$update(this$1.target);\n fastdom.flush(); // needed for IE11\n }, noop);\n\n }\n }\n };\n\n function getProps(el, opacity) {\n\n var zIndex = css(el, 'zIndex');\n\n return isVisible(el)\n ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el))\n : false;\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n width: ''\n });\n removeClass(el, targetClass);\n css(el, 'height', '');\n }\n\n function getPositionWithMargin(el) {\n var ref = el.getBoundingClientRect();\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n top += toFloat(css(el, 'marginTop'));\n\n return {top: top, left: left, height: height, width: width};\n }\n\n var style;\n\n function addStyle() {\n if (style) {\n return;\n }\n style = append(document.head, '<style>').sheet;\n style.insertRule(\n (\".\" + targetClass + \" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\"), 0\n );\n }\n\n var Filter = {\n\n mixins: [Animate],\n\n args: 'target',\n\n props: {\n target: Boolean,\n selActive: Boolean\n },\n\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n animation: 250\n },\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var attrItem = ref.attrItem;\n\n return $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), $el);\n },\n\n watch: function() {\n this.updateState();\n }\n\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return $(target, $el);\n },\n\n children: {\n\n get: function() {\n return toNodes(this.target && this.target.children);\n },\n\n watch: function(list, old) {\n if (!isEqualList(list, old)) {\n this.updateState();\n }\n }\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n\n e.preventDefault();\n this.apply(e.current);\n\n }\n\n }\n\n ],\n\n connected: function() {\n var this$1 = this;\n\n\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); });\n }\n\n },\n\n methods: {\n\n apply: function(el) {\n this.setState(mergeState(el, this.attrItem, this.getState()));\n },\n\n getState: function() {\n var this$1 = this;\n\n return this.toggles\n .filter(function (item) { return hasClass(item, this$1.cls); })\n .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []});\n },\n\n setState: function(state, animate) {\n var this$1 = this;\n if ( animate === void 0 ) animate = true;\n\n\n state = assign({filter: {'': ''}, sort: []}, state);\n\n trigger(this.$el, 'beforeFilter', [this, state]);\n\n var ref = this;\n var children = ref.children;\n\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state)); });\n\n var apply = function () {\n\n var selector = getSelector(state);\n\n children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); });\n\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n sorted.forEach(function (el) { return append(this$1.target, el); });\n }\n }\n\n };\n\n if (animate) {\n this.animate(apply).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); });\n } else {\n apply();\n trigger(this.$el, 'afterFilter', [this]);\n }\n\n },\n\n updateState: function() {\n var this$1 = this;\n\n fastdom.write(function () { return this$1.setState(this$1.getState(), false); });\n }\n\n }\n\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function mergeState(el, attr, state) {\n\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order; if ( order === void 0 ) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n\n if (group) {\n\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {'': filter || ''};\n }\n\n }\n\n } else {\n state.filter = {'': filter || ''};\n }\n\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter; if ( stateFilter === void 0 ) stateFilter = {'': ''};\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n\n\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter; if ( filter === void 0 ) filter = '';\n var group = ref$1.group; if ( group === void 0 ) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order; if ( order === void 0 ) order = 'asc';\n\n return isUndefined(sort)\n ? group in stateFilter && filter === stateFilter[group]\n || !filter && group && !(group in stateFilter) && !stateFilter['']\n : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length\n && listA.every(function (el) { return ~listB.indexOf(el); });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n\n var selector = '';\n each(filter, function (value) { return selector += value || ''; });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort), undefined, {numeric: true}) * (order === 'asc' || -1); });\n }\n\n var Animations = {\n\n slide: {\n\n show: function(dir) {\n return [\n {transform: translate(dir * -100)},\n {transform: translate()}\n ];\n },\n\n percent: function(current) {\n return translated(current);\n },\n\n translate: function(percent, dir) {\n return [\n {transform: translate(dir * -100 * percent)},\n {transform: translate(dir * 100 * (1 - percent))}\n ];\n }\n\n }\n\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function translate(value, unit) {\n if ( value === void 0 ) value = 0;\n if ( unit === void 0 ) unit = '%';\n\n value += value ? unit : '';\n return isIE ? (\"translateX(\" + value + \")\") : (\"translate3d(\" + value + \", 0, 0)\"); // currently not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return (\"scale3d(\" + value + \", \" + value + \", 1)\");\n }\n\n var Animations$1 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0},\n {opacity: 1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent},\n {opacity: percent}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 - .2)},\n {opacity: 1, transform: scale3d(1)}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},\n {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}\n ];\n }\n\n }\n\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n\n\n var percent = animation.percent;\n var translate = animation.translate;\n var show = animation.show; if ( show === void 0 ) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n var this$1 = this;\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n stop: function() {\n return Transition.stop([next, prev]);\n },\n\n cancel: function() {\n Transition.cancel([next, prev]);\n },\n\n reset: function() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n\n },\n\n translate: function(percent) {\n\n this.reset();\n\n var props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir});\n\n },\n\n percent: function() {\n return percent(prev || next, next, dir);\n },\n\n getDistance: function() {\n return prev && prev.offsetWidth;\n }\n\n };\n\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n\n connected: function() {\n this.autoplay && this.startAutoplay();\n },\n\n disconnected: function() {\n this.stopAutoplay();\n },\n\n update: function() {\n attr(this.slides, 'tabindex', '-1');\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n\n },\n\n {\n\n name: 'mouseenter',\n\n filter: function() {\n return this.autoplay && this.pauseOnHover;\n },\n\n handler: function() {\n this.isHovering = true;\n }\n\n },\n\n {\n\n name: 'mouseleave',\n\n filter: function() {\n return this.autoplay && this.pauseOnHover;\n },\n\n handler: function() {\n this.isHovering = false;\n }\n\n }\n\n ],\n\n methods: {\n\n startAutoplay: function() {\n var this$1 = this;\n\n\n this.stopAutoplay();\n\n this.interval = setInterval(\n function () { return !within(document.activeElement, this$1.$el)\n && !this$1.isHovering\n && !this$1.stack.length\n && this$1.show('next'); },\n this.autoplayInterval\n );\n\n },\n\n stopAutoplay: function() {\n this.interval && clearInterval(this.interval);\n }\n\n }\n\n };\n\n var SliderDrag = {\n\n props: {\n draggable: Boolean\n },\n\n data: {\n draggable: true,\n threshold: 10\n },\n\n created: function() {\n var this$1 = this;\n\n\n ['start', 'move', 'end'].forEach(function (key) {\n\n var fn = this$1[key];\n this$1[key] = function (e) {\n\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n\n fn(e);\n };\n\n });\n\n },\n\n events: [\n\n {\n\n name: pointerDown,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (!this.draggable\n || !isTouch(e) && hasTextNodesOnly(e.target)\n || e.button > 0\n || this.length < 2\n ) {\n return;\n }\n\n this.start(e);\n }\n\n },\n\n {\n\n // Workaround for iOS 11 bug: https://bugs.webkit.org/show_bug.cgi?id=184250\n\n name: 'touchmove',\n passive: false,\n handler: 'move',\n delegate: function() {\n return this.selSlides;\n }\n\n },\n\n {\n name: 'dragstart',\n\n handler: function(e) {\n e.preventDefault();\n }\n }\n\n ],\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.drag = this.pos;\n\n if (this._transitioner) {\n\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n\n this.stack = [];\n\n } else {\n this.prevIndex = this.index;\n }\n\n // See above workaround notice\n var off = pointerMove !== 'touchmove'\n ? on(document, pointerMove, this.move, {passive: false})\n : noop;\n this.unbindMove = function () {\n off();\n this$1.unbindMove = null;\n };\n on(window, 'scroll', this.unbindMove);\n on(document, pointerUp, this.end, true);\n\n css(this.list, 'userSelect', 'none');\n\n },\n\n move: function(e) {\n var this$1 = this;\n\n\n // See above workaround notice\n if (!this.unbindMove) {\n return;\n }\n\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n\n css(this.list, 'pointerEvents', 'none');\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = (distance < 0 ? 1 : -1);\n\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n\n this.drag -= width * this.dir;\n\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n }\n\n this.percent = dis / width;\n\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n\n var itemShown;\n\n [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n\n },\n\n end: function() {\n\n off(window, 'scroll', this.unbindMove);\n this.unbindMove && this.unbindMove();\n off(document, pointerUp, this.end, true);\n\n if (this.dragging) {\n\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n\n }\n\n css(this.list, {userSelect: '', pointerEvents: ''});\n\n this.drag\n = this.percent\n = null;\n\n }\n\n }\n\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n\n data: {\n selNav: false\n },\n\n computed: {\n\n nav: function(ref, $el) {\n var selNav = ref.selNav;\n\n return $(selNav, $el);\n },\n\n selNavItem: function(ref) {\n var attrItem = ref.attrItem;\n\n return (\"[\" + attrItem + \"],[data-\" + attrItem + \"]\");\n },\n\n navItems: function(_, $el) {\n return $$(this.selNavItem, $el);\n }\n\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) { return (\"<li \" + (this$1.attrItem) + \"=\\\"\" + i + \"\\\"><a href=\\\"#\\\"></a></li>\"); }).join(''));\n }\n\n toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);\n\n this.updateNav();\n\n },\n\n events: ['resize']\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selNavItem;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n\n },\n\n {\n\n name: 'itemshow',\n handler: 'updateNav'\n\n }\n\n ],\n\n methods: {\n\n updateNav: function() {\n var this$1 = this;\n\n\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n\n var cmd = data(el, this$1.attrItem);\n\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n\n }\n\n }\n\n };\n\n var Slider = {\n\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n\n data: function () { return ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n }); },\n\n computed: {\n\n duration: function(ref, $el) {\n var velocity = ref.velocity;\n\n return speedUp($el.offsetWidth / velocity);\n },\n\n length: function() {\n return this.slides.length;\n },\n\n list: function(ref, $el) {\n var selList = ref.selList;\n\n return $(selList, $el);\n },\n\n maxIndex: function() {\n return this.length - 1;\n },\n\n selSlides: function(ref) {\n var selList = ref.selList;\n\n return (selList + \" > *\");\n },\n\n slides: function() {\n return toNodes(this.list.children);\n }\n\n },\n\n events: {\n\n itemshown: function() {\n this.$update(this.list);\n }\n\n },\n\n methods: {\n\n show: function(index, force) {\n var this$1 = this;\n if ( force === void 0 ) force = false;\n\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n var reset = function () {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.index;\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n prev && trigger(prev, 'beforeitemhide', [this]);\n if (!trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n resolve();\n });\n });\n\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n\n },\n\n getIndex: function(index, prev) {\n if ( index === void 0 ) index = this.index;\n if ( prev === void 0 ) prev = this.index;\n\n return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n return this.getIndex(index, prevIndex);\n },\n\n _show: function(prev, next, force) {\n\n this._transitioner = this._getTransitioner(\n prev,\n next,\n this.dir,\n assign({\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing\n }, this.transitionOptions)\n );\n\n if (!force && !prev) {\n this._transitioner.translate(1);\n return Promise.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n\n },\n\n _getDistance: function(prev, next) {\n return new this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate: function(percent, prev, next) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner: function(prev, next, dir, options) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n if ( dir === void 0 ) dir = this.dir || 1;\n if ( options === void 0 ) options = this.transitionOptions;\n\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n\n }\n\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next'\n ? 1\n : index === 'previous'\n ? -1\n : index < prevIndex\n ? -1\n : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n\n mixins: [Slider],\n\n props: {\n animation: String\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n\n computed: {\n\n animation: function(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n\n return assign(animation in Animations ? Animations[animation] : Animations.slide, {name: animation});\n },\n\n transitionOptions: function() {\n return {animation: this.animation};\n }\n\n },\n\n events: {\n\n 'itemshow itemhide itemshown itemhidden': function(ref) {\n var target = ref.target;\n\n this.$update(target);\n },\n\n beforeitemshow: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActive);\n },\n\n itemshown: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActivated);\n },\n\n itemhidden: function(ref) {\n var target = ref.target;\n\n removeClass(target, this.clsActive, this.clsActivated);\n }\n\n }\n\n };\n\n var lightboxPanel = {\n\n mixins: [Container, Modal, Togglable, Slideshow],\n\n functional: true,\n\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n\n data: function () { return ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"<div class=\\\"uk-lightbox uk-overflow-hidden\\\"> <ul class=\\\"uk-lightbox-items\\\"></ul> <div class=\\\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\\\"> <button class=\\\"uk-lightbox-toolbar-icon uk-close-large\\\" type=\\\"button\\\" uk-close></button> </div> <a class=\\\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-previous uk-lightbox-item=\\\"previous\\\"></a> <a class=\\\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-next uk-lightbox-item=\\\"next\\\"></a> <div class=\\\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\\\"></div> </div>\"\n }); },\n\n created: function() {\n var this$1 = this;\n\n\n this.$mount(append(this.container, this.template));\n\n this.caption = $('.uk-lightbox-caption', this.$el);\n\n this.items.forEach(function () { return append(this$1.list, '<li></li>'); });\n\n },\n\n events: [\n\n {\n\n name: (pointerMove + \" \" + pointerDown + \" keydown\"),\n\n handler: 'showControls'\n\n },\n\n {\n\n name: 'click',\n\n self: true,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n\n },\n\n {\n\n name: 'shown',\n\n self: true,\n\n handler: function() {\n this.showControls();\n }\n\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n\n this.hideControls();\n\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n\n }\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n this.$destroy(true);\n }\n\n },\n\n {\n\n name: 'keyup',\n\n el: document,\n\n handler: function(e) {\n\n if (!this.isToggled(this.$el)) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n case 39:\n this.show('next');\n break;\n }\n }\n },\n\n {\n\n name: 'beforeitemshow',\n\n handler: function(e) {\n\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n\n e.preventDefault();\n\n this.toggleNow(this.$el, true);\n\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n\n }\n\n },\n\n {\n\n name: 'itemshow',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n var i = index(target);\n var ref$1 = this.getItem(i);\n var caption = ref$1.caption;\n\n css(this.caption, 'display', caption ? '' : 'none');\n html(this.caption, caption);\n\n for (var j = 0; j <= this.preload; j++) {\n this.loadItem(this.getIndex(i + j));\n this.loadItem(this.getIndex(i - j));\n }\n\n }\n\n },\n\n {\n\n name: 'itemshown',\n\n handler: function() {\n this.draggable = this.$props.draggable;\n }\n\n },\n\n {\n\n name: 'itemload',\n\n handler: function(_, item) {\n var this$1 = this;\n\n\n var source = item.source;\n var type = item.type;\n var alt = item.alt;\n\n this.setItem(item, '<span uk-spinner></span>');\n\n if (!source) {\n return;\n }\n\n var matches;\n\n // Image\n if (type === 'image' || source.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i)) {\n\n getImage(source).then(\n function (img) { return this$1.setItem(item, (\"<img width=\\\"\" + (img.width) + \"\\\" height=\\\"\" + (img.height) + \"\\\" src=\\\"\" + source + \"\\\" alt=\\\"\" + (alt ? alt : '') + \"\\\">\")); },\n function () { return this$1.setError(item); }\n );\n\n // Video\n } else if (type === 'video' || source.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n\n var video = $((\"<video controls playsinline\" + (item.poster ? (\" poster=\\\"\" + (item.poster) + \"\\\"\") : '') + \" uk-video=\\\"\" + (this.videoAutoplay) + \"\\\"></video>\"));\n attr(video, 'src', source);\n\n once(video, 'error loadedmetadata', function (type) {\n if (type === 'error') {\n this$1.setError(item);\n } else {\n attr(video, {width: video.videoWidth, height: video.videoHeight});\n this$1.setItem(item, video);\n }\n });\n\n // Iframe\n } else if (type === 'iframe' || source.match(/\\.(html|php)($|\\?)/i)) {\n\n this.setItem(item, (\"<iframe class=\\\"uk-lightbox-iframe\\\" src=\\\"\" + source + \"\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"));\n\n // YouTube\n } else if ((matches = source.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/) || source.match(/()youtu\\.be\\/(.*)/))) {\n\n var id = matches[2];\n var setIframe = function (width, height) {\n if ( width === void 0 ) width = 640;\n if ( height === void 0 ) height = 450;\n\n return this$1.setItem(item, getIframe((\"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + id), width, height, this$1.videoAutoplay));\n };\n\n getImage((\"https://img.youtube.com/vi/\" + id + \"/maxresdefault.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n // YouTube default 404 thumb, fall back to low resolution\n if (width === 120 && height === 90) {\n getImage((\"https://img.youtube.com/vi/\" + id + \"/0.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n return setIframe(width, height);\n },\n setIframe\n );\n } else {\n setIframe(width, height);\n }\n },\n setIframe\n );\n\n // Vimeo\n } else if ((matches = source.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))) {\n\n ajax((\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + (encodeURI(source))), {responseType: 'json', withCredentials: false})\n .then(\n function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n\n return this$1.setItem(item, getIframe((\"https://player.vimeo.com/video/\" + (matches[2])), width, height, this$1.videoAutoplay));\n },\n function () { return this$1.setError(item); }\n );\n\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n loadItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n\n var item = this.getItem(index);\n\n if (item.content) {\n return;\n }\n\n trigger(this.$el, 'itemload', [item]);\n },\n\n getItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n return this.items[index] || {};\n },\n\n setItem: function(item, content) {\n assign(item, {content: content});\n var el = html(this.slides[this.items.indexOf(item)], content);\n trigger(this.$el, 'itemloaded', [this, el]);\n this.$update(el);\n },\n\n setError: function(item) {\n this.setItem(item, '<span uk-icon=\"icon: bolt; ratio: 2\"></span>');\n },\n\n showControls: function() {\n\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n\n },\n\n hideControls: function() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n\n }\n\n };\n\n function getIframe(src, width, height, autoplay) {\n return (\"<iframe src=\\\"\" + src + \"\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\" style=\\\"max-width: 100%; box-sizing: border-box;\\\" frameborder=\\\"0\\\" allowfullscreen uk-video=\\\"autoplay: \" + autoplay + \"\\\" uk-responsive></iframe>\");\n }\n\n var Lightbox = {\n\n install: install$2,\n\n props: {toggle: String},\n\n data: {toggle: 'a'},\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n },\n\n watch: function() {\n this.hide();\n }\n\n },\n\n items: function() {\n return uniqueBy(this.toggles.map(toItem), 'source');\n }\n\n },\n\n disconnected: function() {\n this.hide();\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n var src = data(e.current, 'href');\n this.show(findIndex(this.items, function (ref) {\n var source = ref.source;\n\n return source === src;\n }));\n }\n\n }\n\n ],\n\n methods: {\n\n show: function(index) {\n var this$1 = this;\n\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {items: this.items}));\n\n on(this.panel.$el, 'hidden', function () { return this$1.panel = false; });\n\n return this.panel.show(index);\n\n },\n\n hide: function() {\n\n return this.panel && this.panel.hide();\n\n }\n\n }\n\n };\n\n function install$2(UIkit, Lightbox) {\n\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', lightboxPanel);\n }\n\n assign(\n Lightbox.props,\n UIkit.component('lightboxPanel').options.props\n );\n\n }\n\n function toItem(el) {\n return ['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr) {\n obj[attr === 'href' ? 'source' : attr] = data(el, attr);\n return obj;\n }, {});\n }\n\n var obj;\n\n var containers = {};\n\n var Notification = {\n\n functional: true,\n\n args: ['message', 'status'],\n\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n\n install: install$3,\n\n computed: {\n\n marginProp: function(ref) {\n var pos = ref.pos;\n\n return (\"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom'));\n },\n\n startProps: function() {\n var obj;\n\n return ( obj = {opacity: 0}, obj[this.marginProp] = -this.$el.offsetHeight, obj );\n }\n\n },\n\n created: function() {\n\n if (!containers[this.pos]) {\n containers[this.pos] = append(this.$container, (\"<div class=\\\"uk-notification uk-notification-\" + (this.pos) + \"\\\"></div>\"));\n }\n\n var container = css(containers[this.pos], 'display', 'block');\n\n this.$mount(append(container,\n (\"<div class=\\\"\" + (this.clsMsg) + (this.status ? (\" \" + (this.clsMsg) + \"-\" + (this.status)) : '') + \"\\\"> <a href=\\\"#\\\" class=\\\"\" + (this.clsClose) + \"\\\" data-uk-close></a> <div>\" + (this.message) + \"</div> </div>\")\n ));\n\n },\n\n connected: function() {\n var this$1 = this;\n var obj;\n\n\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(\n css(this.$el, this.startProps),\n ( obj = {opacity: 1}, obj[this.marginProp] = margin, obj )\n ).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n\n },\n\n events: ( obj = {\n\n click: function(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n }\n\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj ),\n\n methods: {\n\n close: function(immediate) {\n var this$1 = this;\n\n\n var removeFn = function () {\n\n trigger(this$1.$el, 'close', [this$1]);\n remove(this$1.$el);\n\n if (!containers[this$1.pos].children.length) {\n css(containers[this$1.pos], 'display', 'none');\n }\n\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn();\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n\n }\n\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n\n var Parallax = {\n\n mixins: [Media],\n\n props: props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n\n data: props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n\n computed: {\n\n props: function(properties, $el) {\n var this$1 = this;\n\n\n return props.reduce(function (props, prop) {\n\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n\n var pos, bgPos, diff;\n var steps = properties[prop].slice(0);\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale'\n ? 1\n : isCssProp\n ? css($el, prop)\n : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) { return parseColor($el, step); });\n $el.style.color = color;\n\n } else if (startsWith(prop, 'bg')) {\n\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) { return toPx(step, attr, this$1.$el); });\n\n css($el, (\"background-position-\" + (prop[2])), '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n\n diff = max - min;\n\n steps = steps.map(function (step) { return step - (down ? min : max); });\n pos = (down ? -diff : 0) + \"px\";\n\n } else {\n\n pos = bgPos;\n\n }\n\n } else {\n\n steps = steps.map(toFloat);\n\n }\n\n if (prop === 'stroke') {\n\n if (!steps.some(function (step) { return step; })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$el);\n css($el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) { return step * length / 100; });\n }\n\n steps = steps.reverse();\n\n prop = 'strokeDashoffset';\n }\n\n props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff};\n\n return props;\n\n }, {});\n\n },\n\n bgProps: function() {\n var this$1 = this;\n\n return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; });\n },\n\n covers: function(_, $el) {\n return covers($el);\n }\n\n },\n\n disconnected: function() {\n delete this._image;\n },\n\n update: {\n\n read: function(data) {\n var this$1 = this;\n\n\n data.active = this.matchMedia;\n\n if (!data.active) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () { return this$1.$emit(); };\n }\n }\n\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n\n var dim = Dimensions.cover(dimImage, dimEl);\n\n this.bgProps.forEach(function (prop) {\n\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / posPercentage; });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n\n data.dim = dim;\n },\n\n write: function(ref) {\n var dim = ref.dim;\n var active = ref.active;\n\n\n if (!active) {\n css(this.$el, {backgroundSize: '', backgroundRepeat: ''});\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: ((dim.width) + \"px \" + (dim.height) + \"px\"),\n backgroundRepeat: 'no-repeat'\n });\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n reset: function() {\n var this$1 = this;\n\n each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); });\n },\n\n getCss: function(percent) {\n\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n\n // transforms\n case 'x':\n case 'y': {\n unit = unit || 'px';\n css.transform += \" translate\" + (ucfirst(prop)) + \"(\" + (toFloat(value).toFixed(unit === 'px' ? 0 : 2)) + unit + \")\";\n break;\n }\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n\n // bg image\n case 'bgy':\n case 'bgx':\n css[(\"background-position-\" + (prop[2]))] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n\n // color\n case 'color':\n case 'backgroundColor':\n case 'borderColor': {\n\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n\n css[prop] = \"rgba(\" + (start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',')) + \")\";\n break;\n }\n // CSS Filter\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n default:\n css[prop] = value;\n }\n\n return css;\n\n }, {transform: '', filter: ''});\n\n }\n\n }\n\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color')\n .split(/[(),]/g)\n .slice(1, -1)\n .concat(1)\n .slice(0, 4)\n .map(toFloat);\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index, index + 2);\n\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if ( digits === void 0 ) digits = 2;\n\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start)\n ? start + Math.abs(start - end) * p * (start < end ? 1 : -1)\n : +end\n ).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) { return isString(step) && step.replace(/-|\\d/g, '').trim() || unit; }, '');\n }\n\n function covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var Parallax$1 = {\n\n mixins: [Parallax],\n\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n\n computed: {\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return getOffsetElement(target && query(target, $el) || $el);\n }\n\n },\n\n update: {\n\n read: function(ref, type) {\n var percent = ref.percent;\n var active = ref.active;\n\n\n if (type !== 'scroll') {\n percent = false;\n }\n\n if (!active) {\n return;\n }\n\n var prev = percent;\n percent = ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing);\n\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\n };\n },\n\n write: function(ref) {\n var style = ref.style;\n var active = ref.active;\n\n\n if (!active) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n function ease$1(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n }\n\n // SVG elements do not inherit from HTMLElement\n function getOffsetElement(el) {\n return el\n ? 'offsetTop' in el\n ? el\n : getOffsetElement(el.parentNode)\n : document.body;\n }\n\n var SliderReactive = {\n\n update: {\n\n write: function() {\n\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex();\n delete this.index;\n removeClass(this.slides, this.clsActive, this.clsActivated);\n this.show(index);\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function Transitioner$1 (prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n\n\n var deferred = new Deferred();\n\n var from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + bounds(next).width * dir;\n var to = next\n ? getLeft(next, list, center)\n : from + bounds(prev).width * dir * (isRtl ? -1 : 1);\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Transition\n .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)\n .then(deferred.resolve, noop);\n\n return deferred.promise;\n\n },\n\n stop: function() {\n return Transition.stop(list);\n },\n\n cancel: function() {\n Transition.cancel(list);\n },\n\n reset: function() {\n css(list, 'transform', '');\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate: function(percent) {\n\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(list, 'transform', translate(clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n bounds(list).width\n ) * (isRtl ? -1 : 1), 'px'));\n\n this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir});\n }\n\n },\n\n percent: function() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n\n getDistance: function() {\n return Math.abs(to - from);\n },\n\n getItemIn: function(out) {\n if ( out === void 0 ) out = false;\n\n\n var actives = this.getActives();\n var all = sortBy(slides(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n\n return ~i && all[i + (prev && !out ? dir : 0)];\n\n },\n\n getActives: function() {\n\n var left = getLeft(prev || next, list, center);\n\n return sortBy(slides(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft >= left && slideLeft + bounds(slide).width <= bounds(list).width + left;\n }), 'offsetLeft');\n\n },\n\n updateTranslates: function() {\n\n var actives = this.getActives();\n\n slides(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n\n triggerUpdate$1(slide, (\"itemtranslate\" + (isActive ? 'in' : 'out')), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\n }\n\n };\n\n }\n\n function getLeft(el, list, center) {\n\n var left = getElLeft(el, list);\n\n return center\n ? left - centerEl(el, list)\n : Math.min(left, getMax(list));\n\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - bounds(list).width);\n }\n\n function getWidth(list) {\n return slides(list).reduce(function (right, el) { return bounds(el).width + right; }, 0);\n }\n\n function getMaxWidth(list) {\n return slides(list).reduce(function (right, el) { return Math.max(right, bounds(el).width); }, 0);\n }\n\n function centerEl(el, list) {\n return bounds(list).width / 2 - bounds(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return (position(el).left + (isRtl ? bounds(el).width - bounds(list).width : 0)) * (isRtl ? -1 : 1);\n }\n\n function bounds(el) {\n return el.getBoundingClientRect();\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n function slides(list) {\n return toNodes(list.children);\n }\n\n var Slider$1 = {\n\n mixins: [Class, Slider, SliderReactive],\n\n props: {\n center: Boolean,\n sets: Boolean\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n\n computed: {\n\n avgWidth: function() {\n return getWidth(this.list) / this.length;\n },\n\n finite: function(ref) {\n var finite = ref.finite;\n\n return finite || getWidth(this.list) < bounds(this.list).width + getMaxWidth(this.list) + this.center;\n },\n\n maxIndex: function() {\n\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return this.sets[this.sets.length - 1];\n }\n\n css(this.slides, 'order', '');\n\n var max = getMax(this.list);\n var i = this.length;\n\n while (i--) {\n if (getElLeft(this.list.children[i], this.list) < max) {\n return Math.min(i + 1, this.length - 1);\n }\n }\n\n return 0;\n },\n\n sets: function(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n\n var width = bounds(this.list).width / (this.center ? 2 : 1);\n\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n\n sets = sets && this.slides.reduce(function (sets, slide, i) {\n\n var ref = bounds(slide);\n var slideWidth = ref.width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n\n var cmp = this$1.slides[i + 1];\n if (this$1.center && cmp && slideWidth < leftCenter - bounds(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);\n }\n\n }\n }\n\n slideLeft += slideWidth;\n\n return sets;\n\n }, []);\n\n return !isEmpty(sets) && sets;\n\n },\n\n transitionOptions: function() {\n return {\n center: this.center,\n list: this.list\n };\n }\n\n },\n\n connected: function() {\n toggleClass(this.$el, this.clsContainer, !$((\".\" + (this.clsContainer)), this.$el));\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), this.$el).forEach(function (el) {\n var index = data(el, this$1.attrItem);\n this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex));\n });\n\n },\n\n events: ['resize']\n\n },\n\n events: {\n\n beforeitemshow: function(e) {\n\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(\n this.index\n - this.prevIndex\n + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n\n if (!this.dragging && diff > 1) {\n\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n this.duration = speedUp(this.avgWidth / this.velocity)\n * (bounds(\n this.dir < 0 || !this.slides[this.prevIndex]\n ? this.slides[this.index]\n : this.slides[this.prevIndex]\n ).width / this.avgWidth);\n\n this.reorder();\n\n },\n\n itemshow: function() {\n !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n },\n\n itemshown: function() {\n var this$1 = this;\n\n var actives = this._getTransitioner(this.index).getActives();\n this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); });\n (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); });\n }\n\n },\n\n methods: {\n\n reorder: function() {\n var this$1 = this;\n\n\n css(this.slides, 'order', '');\n\n if (this.finite) {\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index\n ? 1\n : this$1.dir < 0 && i >= this$1.index\n ? -1\n : ''\n ); }\n );\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = bounds(this.list).width / 2 - bounds(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= bounds(slide).width;\n }\n\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n\n } while (index !== prev);\n\n return index;\n }\n\n }\n\n };\n\n var SliderParallax = {\n\n mixins: [Parallax],\n\n data: {\n selItem: '!li'\n },\n\n computed: {\n\n item: function(ref, $el) {\n var selItem = ref.selItem;\n\n return query(selItem, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'itemshown',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n css(this.$el, this.getCss(.5));\n }\n\n },\n\n {\n name: 'itemin itemout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n\n Transition.start(this.$el, this.getCss(isIn(type)\n ? .5\n : dir > 0\n ? 1\n : 0\n ), duration, timing).catch(noop);\n\n }\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n Transition.cancel(this.$el);\n }\n\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n }\n }\n\n ]\n\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrent(type, dir, percent) {\n\n percent /= 2;\n\n return !isIn(type)\n ? dir < 0\n ? percent\n : 1 - percent\n : dir < 0\n ? 1 - percent\n : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0, zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 + .5), zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n pull: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ]\n : [\n {transform: translate(-100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir < 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(30 * percent), zIndex: -1},\n {transform: translate(-100 * (1 - percent)), zIndex: 0}\n ]\n : [\n {transform: translate(-percent * 100), zIndex: 0},\n {transform: translate(30 * (1 - percent)), zIndex: -1}\n ];\n }\n\n },\n\n push: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ]\n : [\n {transform: translate(-30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir > 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(percent * 100), zIndex: 0},\n {transform: translate(-30 * (1 - percent)), zIndex: -1}\n ]\n : [\n {transform: translate(-30 * percent), zIndex: -1},\n {transform: translate(100 * (1 - percent)), zIndex: 0}\n ];\n }\n\n }\n\n });\n\n var Slideshow$1 = {\n\n mixins: [Class, Slideshow, SliderReactive],\n\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n\n update: {\n\n read: function() {\n\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {height: height - boxModelAdjust(this.list, 'content-box')};\n },\n\n write: function(ref) {\n var height = ref.height;\n\n css(this.list, 'minHeight', height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Sortable = {\n\n mixins: [Class, Animate],\n\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false\n },\n\n created: function() {\n var this$1 = this;\n\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n this$1[key] = function (e) {\n this$1.scrollY = window.pageYOffset;\n var ref = getEventPos(e, 'page');\n var x = ref.x;\n var y = ref.y;\n this$1.pos = {x: x, y: y};\n\n fn(e);\n };\n });\n },\n\n events: {\n\n name: pointerDown,\n passive: false,\n handler: 'init'\n\n },\n\n update: {\n\n write: function() {\n\n if (this.clsEmpty) {\n toggleClass(this.$el, this.clsEmpty, isEmpty(this.$el.children));\n }\n\n css(this.handle ? $$(this.handle, this.$el) : this.$el.children, {touchAction: 'none', userSelect: 'none'});\n\n if (!this.drag) {\n return;\n }\n\n offset(this.drag, {top: this.pos.y + this.origin.top, left: this.pos.x + this.origin.left});\n\n var ref = offset(this.drag);\n var top = ref.top;\n var offsetHeight = ref.height;\n var bottom = top + offsetHeight;\n var scroll;\n\n if (top > 0 && top < this.scrollY) {\n scroll = this.scrollY - 5;\n } else if (bottom < height(document) && bottom > height(window) + this.scrollY) {\n scroll = this.scrollY + 5;\n }\n\n scroll && setTimeout(function () { return scrollTop(window, scroll); }, 5);\n }\n\n },\n\n methods: {\n\n init: function(e) {\n\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); });\n var placeholder = ref[0];\n\n if (!placeholder\n || defaultPrevented\n || button > 0\n || isInput(target)\n || within(target, (\".\" + (this.clsNoDrag)))\n || this.handle && !within(target, this.handle)\n ) {\n return;\n }\n\n e.preventDefault();\n\n this.touched = [this];\n this.placeholder = placeholder;\n this.origin = assign({target: target, index: index(placeholder)}, this.pos);\n\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n on(window, 'scroll', this.scroll);\n\n if (!this.threshold) {\n this.start(e);\n }\n\n },\n\n start: function(e) {\n\n this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>'));\n\n css(this.drag, assign({\n boxSizing: 'border-box',\n width: this.placeholder.offsetWidth,\n height: this.placeholder.offsetHeight\n }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n attr(this.drag, 'uk-no-boot', '');\n addClass(this.drag, this.clsDrag, this.clsCustom);\n\n height(this.drag.firstElementChild, height(this.placeholder.firstElementChild));\n\n var ref = offset(this.placeholder);\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y});\n\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.$el.children, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n\n trigger(this.$el, 'start', [this, this.placeholder]);\n\n this.move(e);\n },\n\n move: function(e) {\n\n if (!this.drag) {\n\n if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n\n return;\n }\n\n this.$emit();\n\n var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - window.pageXOffset, this.pos.y - window.pageYOffset);\n\n var sortable = this.getSortable(target);\n var previous = this.getSortable(this.placeholder);\n var move = sortable !== previous;\n\n if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {\n return;\n }\n\n target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0];\n\n if (move) {\n previous.remove(this.placeholder);\n } else if (!target) {\n return;\n }\n\n sortable.insert(this.placeholder, target);\n\n if (!includes(this.touched, sortable)) {\n this.touched.push(sortable);\n }\n\n },\n\n end: function(e) {\n\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n if (e.type === 'touchend') {\n e.target.click();\n }\n\n return;\n }\n\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n remove(this.drag);\n this.drag = null;\n\n var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + \" \" + (sortable.clsItem)); }).join(' ');\n this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); });\n\n removeClass(document.documentElement, this.clsDragState);\n\n },\n\n scroll: function() {\n var scroll = window.pageYOffset;\n if (scroll !== this.scrollY) {\n this.pos.y += scroll - this.scrollY;\n this.scrollY = scroll;\n this.$emit();\n }\n },\n\n insert: function(element, target) {\n var this$1 = this;\n\n\n addClass(this.$el.children, this.clsItem);\n\n var insert = function () {\n\n if (target) {\n\n if (!within(element, this$1.$el) || isPredecessor(element, target)) {\n before(target, element);\n } else {\n after(target, element);\n }\n\n } else {\n append(this$1.$el, element);\n }\n\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n\n },\n\n remove: function(element) {\n\n if (!within(element, this.$el)) {\n return;\n }\n\n css(this.handle ? $$(this.handle, element) : element, {touchAction: '', userSelect: ''});\n\n if (this.animation) {\n this.animate(function () { return remove(element); });\n } else {\n remove(element);\n }\n\n },\n\n getSortable: function(element) {\n return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode));\n }\n\n }\n\n };\n\n function isPredecessor(element, target) {\n return element.parentNode === target.parentNode && index(element) > index(target);\n }\n\n var obj$1;\n\n var actives = [];\n\n var Tooltip = {\n\n mixins: [Container, Togglable, Position],\n\n args: 'title',\n\n props: {\n delay: Number,\n title: String\n },\n\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n\n beforeConnect: function() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, {title: '', 'aria-expanded': false});\n },\n\n disconnected: function() {\n this.hide();\n attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null});\n },\n\n methods: {\n\n show: function() {\n var this$1 = this;\n\n\n if (this.isActive()) {\n return;\n }\n\n actives.forEach(function (active) { return active.hide(); });\n actives.push(this);\n\n this._unbind = on(document, pointerUp, function (e) { return !within(e.target, this$1.$el) && this$1.hide(); });\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(function () {\n this$1._show();\n this$1.hideTimer = setInterval(function () {\n\n if (!isVisible(this$1.$el)) {\n this$1.hide();\n }\n\n }, 150);\n }, this.delay);\n },\n\n hide: function() {\n\n if (!this.isActive() || matches(this.$el, 'input') && this.$el === document.activeElement) {\n return;\n }\n\n actives.splice(actives.indexOf(this), 1);\n\n clearTimeout(this.showTimer);\n clearInterval(this.hideTimer);\n attr(this.$el, 'aria-expanded', false);\n this.toggleElement(this.tooltip, false);\n this.tooltip && remove(this.tooltip);\n this.tooltip = false;\n this._unbind();\n\n },\n\n _show: function() {\n\n this.tooltip = append(this.container,\n (\"<div class=\\\"\" + (this.clsPos) + \"\\\" aria-expanded=\\\"true\\\" aria-hidden> <div class=\\\"\" + (this.clsPos) + \"-inner\\\">\" + (this.title) + \"</div> </div>\")\n );\n\n this.positionAt(this.tooltip, this.$el);\n\n this.origin = this.getAxis() === 'y'\n ? ((flipPosition(this.dir)) + \"-\" + (this.align))\n : ((this.align) + \"-\" + (flipPosition(this.dir)));\n\n this.toggleElement(this.tooltip, true);\n\n },\n\n isActive: function() {\n return includes(actives, this);\n }\n\n },\n\n events: ( obj$1 = {\n\n focus: 'show',\n blur: 'hide'\n\n }, obj$1[(pointerEnter + \" \" + pointerLeave)] = function (e) {\n if (isTouch(e)) {\n return;\n }\n e.type === pointerEnter\n ? this.show()\n : this.hide();\n }, obj$1[pointerDown] = function (e) {\n if (!isTouch(e)) {\n return;\n }\n this.isActive()\n ? this.hide()\n : this.show();\n }, obj$1 )\n\n };\n\n var Upload = {\n\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n\n events: {\n\n change: function(e) {\n\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n\n drop: function(e) {\n stop(e);\n\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n\n this.upload(transfer.files);\n },\n\n dragenter: function(e) {\n stop(e);\n },\n\n dragover: function(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n\n dragleave: function(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n\n },\n\n methods: {\n\n upload: function(files) {\n var this$1 = this;\n\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n\n var chunks = chunk(files, this.concurrent);\n var upload = function (files) {\n\n var data = new FormData();\n\n files.forEach(function (file) { return data.append(this$1.name, file); });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function (env) {\n\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); }\n );\n\n this$1.beforeSend(env);\n\n }\n }).then(\n function (xhr) {\n\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n\n },\n function (e) { return this$1.error(e); }\n );\n\n };\n\n upload(chunks.shift());\n\n }\n\n }\n\n };\n\n function match$1(pattern, path) {\n return path.match(new RegExp((\"^\" + (pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.')) + \"$\"), 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n chunks.push(chunk);\n }\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n UIkit.component('countdown', Countdown);\n UIkit.component('filter', Filter);\n UIkit.component('lightbox', Lightbox);\n UIkit.component('lightboxPanel', lightboxPanel);\n UIkit.component('notification', Notification);\n UIkit.component('parallax', Parallax$1);\n UIkit.component('slider', Slider$1);\n UIkit.component('sliderParallax', SliderParallax);\n UIkit.component('slideshow', Slideshow$1);\n UIkit.component('slideshowParallax', SliderParallax);\n UIkit.component('sortable', Sortable);\n UIkit.component('tooltip', Tooltip);\n UIkit.component('upload', Upload);\n\n {\n boot(UIkit);\n }\n\n return UIkit;\n\n}));\n","<script>\r\nimport UIkit from \"uikit\";\r\n\r\nexport let isOpen = false;\r\nexport let onClosed = () => {};\r\n\r\nlet ukModal;\r\nlet listenerAdded = false;\r\n\r\n$: if(ukModal && !listenerAdded) {\r\n listenerAdded = true;\r\n ukModal.addEventListener(\"hide\", onClosed);\r\n}\r\n\r\n$: {\r\n if(ukModal) {\r\n if(isOpen) {\r\n UIkit.modal(ukModal).show();\r\n } else {\r\n UIkit.modal(ukModal).hide();\r\n }\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<div bind:this={ukModal} uk-modal >\r\n <div class=\"uk-modal-dialog uk-modal-body\" uk-overflow-auto>\r\n <slot />\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport getIcon from \"../common/icon\";\r\nimport FieldView from \"./FieldView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport {map, join, filter, some, \r\n find, keys, isDate} from \"lodash/fp\";\r\nimport { database } from \"../builderStore\";\r\nimport {common, hierarchy as h} from \"budibase-core\";\r\nimport {templateApi, chain, validate} from \"../common/core\";\r\n\r\nlet record;\r\nlet getIndexAllowedRecords;\r\nlet editingField = false;\r\nlet fieldToEdit;\r\nlet isNewField = false;\r\nlet newField;\r\nlet editField;\r\nlet deleteField;\r\nlet onFinishedFieldEdit;\r\nlet editIndex;\r\n\r\ndatabase.subscribe($database => {\r\n record = $database.currentNode;\r\n const flattened = h.getFlattenedHierarchy($database.hierarchy);\r\n getIndexAllowedRecords = index => \r\n chain(index.allowedRecordNodeIds, [\r\n filter(id => some(n => n.nodeId === id)(flattened)),\r\n map(id => find(n => n.nodeId === id)\r\n (flattened).name),\r\n join(\", \")\r\n ]);\r\n\r\n newField = () => {\r\n isNewField = true;\r\n fieldToEdit = templateApi($database.hierarchy).getNewField(\"string\");\r\n editingField = true;\r\n }\r\n\r\n onFinishedFieldEdit = (field) => {\r\n if(field) {\r\n database.saveField(field);\r\n }\r\n editingField = false;\r\n }\r\n\r\n editField = (field) => {\r\n isNewField = false;\r\n fieldToEdit = field;\r\n editingField = true;\r\n }\r\n\r\n deleteField = (field) => {\r\n database.deleteField(field);\r\n }\r\n\r\n editIndex = index => {\r\n database.selectExistingNode(index.nodeId);\r\n }\r\n\r\n})\r\n\r\nlet getTypeOptionsValueText = value => {\r\n if(value === Number.MAX_SAFE_INTEGER\r\n || value === Number.MIN_SAFE_INTEGER\r\n || new Date(value).getTime() === new Date(8640000000000000).getTime()\r\n || new Date(value).getTime() === new Date(-8640000000000000).getTime()) return \"(any)\";\r\n \r\n if(value === null) return \"(not set)\";\r\n return value;\r\n}\r\n\r\nlet getTypeOptions = typeOptions => \r\n chain(typeOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${getTypeOptionsValueText(typeOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <Textbox label=\"Name\" bind:text={record.name} />\r\n <div>{record.nodeKey()}</div>\r\n {#if !record.isSingle}\r\n <Textbox label=\"Collection Name\" bind:text={record.collectionName} />\r\n <Textbox label=\"Shard Factor\" bind:text={record.allidsShardFactor} />\r\n {/if}\r\n\r\n <h4>\r\n Fields <span class=\"add-field-button\" on:click={newField}>{@html getIcon(\"plus\")}</span>\r\n </h4>\r\n\r\n {#if record.fields.length > 0}\r\n <table class=\"fields-table uk-table\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Type</th>\r\n <th>Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each record.fields as field}\r\n <tr>\r\n <td >\r\n <div>{field.label}</div>\r\n <div style=\"font-size: 0.7em; color: var(--slate)\">{field.name}</div>\r\n </td>\r\n <td >{field.type}</td>\r\n <td >{@html getTypeOptions(field.typeOptions)}</td>\r\n <td>\r\n <span class=\"edit-button\" on:click={() => editField(field)}>{@html getIcon(\"edit\")}</span>\r\n <span class=\"edit-button\" on:click={() => deleteField(field)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n </table>\r\n {:else}\r\n (no fields added)\r\n {/if}\r\n\r\n {#if editingField}\r\n <Modal bind:isOpen={editingField}>\r\n <FieldView field={fieldToEdit} \r\n onFinished={onFinishedFieldEdit}\r\n allFields={record.fields} \r\n database={$database}/>\r\n </Modal>\r\n {/if}\r\n\r\n <h4>\r\n Indexes \r\n </h4>\r\n\r\n {#each record.indexes as index}\r\n <div class=\"index-container\">\r\n <div class=\"index-name\">\r\n {index.name}\r\n <span style=\"margin-left: 7px\" on:click={() => editIndex(index)}>{@html getIcon(\"edit\")}</span>\r\n </div>\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">records indexed: </span> \r\n <span>{getIndexAllowedRecords(index)}</span>\r\n <span class=\"index-label\" style=\"margin-left: 15px\">type:</span> \r\n <span>{index.indexType}</span>\r\n </div>\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">map:</span>\r\n <code class=\"index-mapfilter\">{index.map}</code>\r\n </div>\r\n {#if index.filter}\r\n <div class=\"index-field-row\">\r\n <span class=\"index-label\">filter:</span>\r\n <code class=\"index-mapfilter\">{index.filter}</code>\r\n </div>\r\n {/if}\r\n </div>\r\n {:else}\r\n (no indexes added)\r\n {/each}\r\n\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n padding: 15px;\r\n}\r\n\r\n.fields-table {\r\n margin:10px;\r\n border-collapse:collapse;\r\n}\r\n\r\n.add-field-button {\r\n margin-left:15px;\r\n cursor:pointer;\r\n}\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--white);\r\n}\r\n\r\n.edit-button:hover {\r\n color: var(--secondary75);\r\n}\r\n\r\nth {\r\n text-align: left;\r\n}\r\n\r\ntd {\r\n padding: 5px 30px 5px 0px;\r\n margin:0;\r\n \r\n}\r\n\r\nthead > tr {\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n border-color: var(--secondary75);\r\n margin-bottom: 20px;\r\n}\r\n\r\ntbody > tr {\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n border-color: var(--primary10);\r\n}\r\n\r\ntbody > tr:hover {\r\n background-color: var(--primary10);\r\n}\r\n\r\ntbody > tr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n.index-container {\r\n border-style: solid;\r\n border-width: 0 0 1px 0;\r\n border-color: var(--secondary25);\r\n padding: 10px;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.index-label {\r\n color: var(--slate);\r\n}\r\n\r\n.index-name {\r\n font-weight: bold;\r\n color: var(--primary100);\r\n}\r\n\r\n.index-container code {\r\n margin: 0;\r\n display: inline;\r\n background-color: var(--primary10);\r\n color: var(--secondary100);\r\n padding:3px;\r\n}\r\n\r\n.index-field-row {\r\n margin-top: 7px;\r\n}\r\n\r\n</style>","<script>\r\n// todo: use https://ace.c9.io\r\nexport let text = \"\";\r\nexport let label = \"\";\r\n</script>\r\n\r\n<div>{label}</div>\r\n<textarea bind:value={text}></textarea>\r\n\r\n<style>\r\n\r\ntextarea {\r\n padding:3px;\r\n background: var(--darkslate);\r\n color: var(--white);\r\n font-family: 'Courier New', Courier, monospace;\r\n width:95%;\r\n height:100px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport CodeArea from \"../common/CodeArea.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport {database} from \"../builderStore\";\r\nimport {filter, some, map} from \"lodash/fp\";\r\nimport {hierarchy as hierarchyFunctions, common} from \"budibase-core\";\r\n\r\nconst chain = common.$;\r\n\r\nlet index;\r\nlet indexableRecords = [];\r\n\r\ndatabase.subscribe($database => {\r\n index = $database.currentNode;\r\n indexableRecords = chain($database.hierarchy,[\r\n hierarchyFunctions.getFlattenedHierarchy,\r\n filter(hierarchyFunctions.isDecendant(index.parent())),\r\n filter(hierarchyFunctions.isRecord),\r\n map(n => ({\r\n node:n,\r\n isallowed: some(id => n.nodeId === id)(index.allowedRecordNodeIds)\r\n }))\r\n ]);\r\n});\r\n\r\nconst toggleAllowedRecord = record => {\r\n if(record.isallowed) {\r\n index.allowedRecordNodeIds = filter(id => id !== record.node.nodeId)\r\n (index.allowedRecordNodeIds);\r\n } else {\r\n index.allowedRecordNodeIds.push(record.node.nodeId);\r\n }\r\n};\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <Textbox bind:text={index.name} label=\"Name\"/>\r\n \r\n <div class=\"allowed-records\">\r\n <div>Records to Index</div>\r\n {#each indexableRecords as rec}\r\n <input type=\"checkbox\" checked={rec.isallowed} on:change={() => toggleAllowedRecord(rec)}/>\r\n <span>{rec.node.name}</span>\r\n {/each}\r\n </div>\r\n\r\n\r\n <Dropdown label=\"Index Type\" bind:selected={index.indexType} options={[\"ancestor\", \"reference\"]} />\r\n\r\n <CodeArea bind:text={index.map} label=\"Map (javascript)\"/>\r\n <CodeArea bind:text={index.filter} label=\"Filter (javascript expression)\"/>\r\n <CodeArea bind:text={index.getShardName} label=\"Shard Name (javascript expression)\"/>\r\n\r\n \r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n height: 100%;\r\n padding: 15px;\r\n}\r\n\r\n.allowed-records {\r\n margin: 20px 0px;\r\n}\r\n\r\n.allowed-records > span {\r\n margin-right:30px;\r\n}\r\n\r\n</style>","<script>\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport {database} from \"../builderStore\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\n\r\nexport let left;\r\nlet confirmDelete = false;\r\nconst openConfirmDelete = () => {\r\n confirmDelete = true;\r\n}\r\n\r\nconst deleteCurrentNode = () => {\r\n confirmDelete = false;\r\n database.deleteCurrentNode();\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\" style=\"left: {left}\">\r\n\r\n <ButtonGroup>\r\n <Button color=\"secondary\" grouped on:click={database.saveCurrentNode}>\r\n {#if $database.currentNodeIsNew}\r\n Create\r\n {:else}\r\n Update\r\n {/if}\r\n </Button>\r\n\r\n {#if !$database.currentNodeIsNew}\r\n <Button color=\"secondary\" grouped on:click={openConfirmDelete}>\r\n Delete\r\n </Button>\r\n {/if}\r\n </ButtonGroup>\r\n\r\n {#if !!$database.errors && $database.errors.length > 0}\r\n <div style=\"width: 500px\">\r\n <ErrorsBox errors={$database.errors}/>\r\n </div>\r\n {/if}\r\n \r\n <Modal bind:isOpen={confirmDelete}>\r\n <div style=\"margin: 10px 0px 20px 0px\">Are you sure you want to delete {$database.currentNode.name} ?</div>\r\n <div style=\"float:right\">\r\n <Button color=\"primary\" on:click={deleteCurrentNode}>Yes</Button>\r\n <Button color=\"secondary\" on:click={() => confirmDelete = false}>No</Button>\r\n </div>\r\n </Modal>\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding:5px;\r\n top:0;\r\n width:100%;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"./icon\";\r\nexport let iconName;\r\nexport let actions = []; // [ {label: \"Action Name\", onclick: () => {...} } ]\r\nlet isDroppedDown = false;\r\n\r\n</script>\r\n\r\n\r\n<div class=\"root\" on:click={() => isDroppedDown = !isDroppedDown}>\r\n {@html getIcon(iconName)}\r\n \r\n <div class=\"dropdown-background\" on:click|stopPropagation={() => isDroppedDown = false} style=\"display: {isDroppedDown ? 'block' : 'none'}\"></div>\r\n\r\n <div class=\"dropdown-content\" style=\"display: {isDroppedDown ? 'inline-block' : 'none'}\">\r\n {#each actions as action}\r\n <div class=\"action-row\" on:click={action.onclick}>\r\n {action.label}\r\n </div>\r\n {/each}\r\n </div>\r\n \r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.dropdown-background {\r\n position: fixed;\r\n top:0;\r\n left:0;\r\n width:100vw;\r\n height:100vh;\r\n}\r\n\r\n.root {\r\n cursor: pointer;\r\n z-index: 1;\r\n}\r\n\r\n.dropdown-content {\r\n position: absolute;\r\n background-color: var(--white);\r\n min-width: 160px;\r\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\r\n z-index: 1;\r\n font-weight: normal;\r\n border-style:solid;\r\n border-width: 1px;\r\n border-color: var(--secondary10);\r\n}\r\n\r\n.dropdown-content:not(:focus) {\r\n display: none;\r\n}\r\n\r\n.action-row {\r\n padding: 7px 10px;\r\n cursor:pointer;\r\n}\r\n\r\n.action-row:hover {\r\n background-color: var(--primary100);\r\n color:var(--white);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport HierarchyRow from \"./HierarchyRow.svelte\";\r\nimport RecordView from \"./RecordView.svelte\";\r\nimport IndexView from \"./IndexView.svelte\";\r\nimport ActionsHeader from \"./ActionsHeader.svelte\";\r\nimport {database} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\nimport DropdownButton from \"../common/DropdownButton.svelte\";\r\nimport {hierarchy as hierarchyFunctions} from \"budibase-core\";\r\n\r\nconst hierarchyWidth = \"200px\";\r\n\r\nconst defaultNewIndexActions = [{\r\n label:\"New Root Index\", \r\n onclick: database.newRootIndex\r\n}];\r\n\r\nconst defaultNewRecordActions = [{\r\n label:\"New Root Record\", \r\n onclick: database.newRootRecord\r\n}];\r\n\r\nlet newIndexActions = defaultNewIndexActions;\r\nlet newRecordActions = defaultNewRecordActions;\r\n\r\ndatabase.subscribe(db => {\r\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\r\n newRecordActions = defaultNewRecordActions;\r\n newIndexActions = defaultNewIndexActions;\r\n } else {\r\n newRecordActions = [\r\n ...defaultNewRecordActions,\r\n {label: `New Child Record of ${db.currentNode.name}`, \r\n onclick: database.newChildRecord}\r\n ];\r\n\r\n newIndexActions = [\r\n ...defaultNewIndexActions,\r\n {label: `New Index on ${db.currentNode.name}`, \r\n onclick: database.newChildIndex}\r\n ];\r\n }\r\n});\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"hierarchy\" style=\"width: {hierarchyWidth}\">\r\n <div class=\"hierarchy-title-row\">\r\n <div class=\"hierarchy-title\">Records</div>\r\n <DropdownButton iconName=\"plus\" actions={newRecordActions} />\r\n </div>\r\n {#each $database.hierarchy.children as record}\r\n <HierarchyRow node={record} />\r\n {/each}\r\n\r\n <div class=\"hierarchy-title-row\" style=\"margin-top: 20px\">\r\n <div class=\"hierarchy-title\">Indexes</div>\r\n <DropdownButton iconName=\"plus\" actions={newIndexActions} />\r\n </div>\r\n {#each $database.hierarchy.indexes as index}\r\n <HierarchyRow node={index} />\r\n {/each}\r\n </div>\r\n <div class=\"node-container\">\r\n <div class=\"actions-header\">\r\n {#if $database.currentNode}\r\n <ActionsHeader left={hierarchyWidth}/>\r\n {/if}\r\n </div>\r\n <div class=\"node-view\">\r\n {#if !$database.currentNode}\r\n <h1 style=\"margin-left: 100px\">:)</h1>\r\n {:else if $database.currentNode.type === \"record\"}\r\n <RecordView />\r\n {:else}\r\n <IndexView />\r\n {/if}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n.root {\r\n display: flex;\r\n height: 100%;\r\n position: relative;\r\n}\r\n\r\n.hierarchy {\r\n flex: 0 1 auto;\r\n background-color: var(--primary10);\r\n overflow-y: auto;\r\n height: 100%;\r\n}\r\n\r\n.node-container {\r\n flex: 1 1 auto;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.actions-header {\r\n flex: 0 1 auto;\r\n}\r\n\r\n.node-view {\r\n overflow-y: auto;\r\n flex: 1 1 auto;\r\n}\r\n\r\n.hierarchy-title-row {\r\n padding: 15px 7px;\r\n /*background-color: var(--secondary75);\r\n color: var(--white);*/\r\n font-size: 11pt;\r\n display: flex;\r\n font-weight: bold;\r\n}\r\n\r\n.hierarchy-title {\r\n flex: auto 1 1;\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport {cloneDeep, filter, keys,\r\nmap, isUndefined} from \"lodash/fp\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport {validateActions, chain} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let action;\r\nexport let onFinished = (action) => {};\r\nexport let allActions;\r\nexport let isNew = true;\r\n\r\nlet optKey = \"\";\r\nlet optValue = \"\";\r\n\r\nlet clonedAction = cloneDeep(action); \r\nlet initialOptions = chain(action.initialOptions, [\r\n keys,\r\n map(k => ({key:k, value:action.initialOptions[k]}))\r\n]);\r\nlet errors = [];\r\n\r\nconst addNewOption = () => {\r\n\r\n if(optKey && optValue && isUndefined(clonedAction.initialOptions[optKey])) {\r\n clonedAction.initialOptions[optKey] = optValue;\r\n initialOptions = [...initialOptions, {\r\n key:optKey, value: optValue\r\n }];\r\n optKey = \"\";\r\n optValue = \"\";\r\n }\r\n}\r\n\r\nconst removeOption = (opt) => {\r\n if(opt) {\r\n delete clonedAction.initialOptions[opt.key]\r\n initialOptions = chain(initialOptions, [\r\n filter(o => o.key !== opt.key)\r\n ]);\r\n }\r\n}\r\n\r\nconst save = () => {\r\n\r\n const newActionsList = [\r\n ...chain(allActions ,[filter(a => a !== action)]),\r\n clonedAction]\r\n\r\n errors = chain(newActionsList ,[\r\n validateActions,\r\n map(e => e.error)\r\n ]);\r\n\r\n if(errors.length === 0)\r\n onFinished(clonedAction);\r\n}\r\n\r\nconst cancel = () => {\r\n onFinished();\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n <ErrorsBox {errors} />\r\n\r\n <Textbox label=\"Name\" bind:text={clonedAction.name} />\r\n <Textbox label=\"Behaviour Source\" bind:text={clonedAction.behaviourSource} />\r\n <Textbox label=\"Behaviour\" bind:text={clonedAction.behaviourName} />\r\n\r\n\r\n <div class=\" uk-form-stacked\" style=\"margin-bottom: 20px\">\r\n <label class=\"uk-form-label\">Default Options</label>\r\n <div class=\"uk-grid-small\" uk-grid>\r\n <input class=\"uk-input uk-width-1-4\" placeholder=\"key\" bind:value={optKey} > \r\n <input class=\"uk-input uk-width-1-4\" placeholder=\"value\" bind:value={optValue} > \r\n <Button color=\"primary-outline uk-width-1-4\" on:click={addNewOption}>Add</Button>\r\n </div>\r\n <div style=\"margin-top: 10px\">\r\n {#each initialOptions as option}\r\n <span class=\"option-container\">{option.key} : {option.value} <span style=\"font-size:10pt; cursor: pointer\" on:click={() => removeOption(option)}>{@html getIcon(\"trash-2\")}</span></span>\r\n {/each}\r\n </div>\r\n </div>\r\n\r\n <ButtonGroup>\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"secondary\" grouped on:click={cancel}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n \r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.root {\r\n padding: 10px;\r\n}\r\n\r\n.option-container {\r\n border-style: dotted;\r\n border-width: 1px;\r\n border-color: var(--primary75);\r\n padding: 3px;\r\n margin-right: 5px;\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"../common/icon\";\r\nimport {database} from \"../builderStore\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport ActionView from \"./ActionView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport {chain} from \"../common/core\";\r\nimport {keys, map, join} from \"lodash/fp\";\r\n\r\nexport let editingActionIsNew = false;\r\nexport let editingAction = null;\r\nexport let onActionEdit = (action) => {};\r\nexport let onActionDelete = (action) => {};\r\nexport let onActionSave = (action) => {};\r\nexport let onActionCancel = () => {};\r\n\r\n$: isEditing = (editingAction !== null); \r\n\r\nlet getDefaultOptionsHtml = defaultOptions => \r\n chain(defaultOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.stringify(defaultOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\n\r\nlet actionEditingFinished = (action) => {\r\n \r\n if(action) {\r\n onActionSave(action)\r\n } else {\r\n onActionCancel();\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<h3>Actions</h3>\r\n\r\n{#if $database.actions}\r\n<table class=\"fields-table uk-table uk-table-small\">\r\n <thead>\r\n <tr>\r\n <th>Description</th>\r\n <th>Behaviour Source</th>\r\n <th>Behaviour Name</th>\r\n <th>Default Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each $database.actions as action}\r\n <tr>\r\n <td >{action.name}</td>\r\n <td >{action.behaviourSource}</td>\r\n <td >{action.behaviourName}</td>\r\n <td >{@html getDefaultOptionsHtml(action.initialOptions)}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onActionEdit(action)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onActionDelete(action)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no actions added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <ActionView action={editingAction}\r\n allActions={$database.actions}\r\n onFinished={actionEditingFinished}\r\n isNew={editingActionIsNew}/>\r\n {/if} \r\n</Modal>\r\n\r\n\r\n<style>\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--white);\r\n}\r\n\r\ntr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Dropdown from \"../common/Dropdown.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport CodeArea from \"../common/CodeArea.svelte\";\r\nimport {cloneDeep, filter, keys, some,\r\nmap, isUndefined} from \"lodash/fp\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\nimport {validateTriggers, chain, events} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\n\r\nexport let trigger;\r\nexport let onFinished = (action) => {};\r\nexport let allTriggers;\r\nexport let allActions;\r\nexport let isNew = true;\r\n\r\nlet clonedTrigger = cloneDeep(trigger); \r\nlet errors = [];\r\n$: actionNames = map(a => a.name)(allActions);\r\n\r\nlet cancel = () => onFinished();\r\nlet save = () => {\r\n const newTriggersList = [\r\n ...chain(allTriggers ,[filter(t => t !== trigger)]),\r\n clonedTrigger]\r\n\r\n errors = validateTriggers(newTriggersList, allActions);\r\n\r\n const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)\r\n\r\n if(errors.length === 0)\r\n onFinished(clonedTrigger);\r\n}\r\n\r\n</script>\r\n\r\n<div>\r\n\r\n <ErrorsBox {errors} style=\"margin-bottom:20px\"/>\r\n \r\n <Dropdown label=\"Event\" \r\n options={[\"\",...events]}\r\n bind:selected={clonedTrigger.eventName} />\r\n <Dropdown label=\"Action\" \r\n options={[\"\",...actionNames]}\r\n bind:selected={clonedTrigger.actionName} />\r\n <CodeArea label=\"Condition (javascript)\"\r\n bind:text={clonedTrigger.condition} />\r\n <CodeArea label=\"Action Options Creator (javascript)\"\r\n bind:text={clonedTrigger.optionsCreator} />\r\n\r\n <ButtonGroup>\r\n <Button grouped on:click={save}>Save</Button>\r\n <Button grouped on:click={cancel}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\r\nimport {database} from \"../builderStore\";\r\nimport getIcon from \"../common/icon\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\nimport TriggerView from \"./TriggerView.svelte\";\r\n\r\n\r\nexport let editingTrigger = null;\r\nexport let editingTriggerIsNew = true;\r\nexport let onTriggerEdit = (trigger) => {};\r\nexport let onTriggerDelete = (trigger) => {};\r\nexport let onTriggerSave = (trigger) => {};\r\nexport let onTriggerCancel = () => {};\r\n\r\n$: isEditing = (editingTrigger !== null); \r\n\r\nlet triggerEditingFinished = (trigger) => {\r\n \r\n if(trigger) {\r\n onTriggerSave(trigger)\r\n } else {\r\n onTriggerCancel();\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<h3>Triggers</h3>\r\n\r\n{#if $database.triggers}\r\n<table class=\"fields-table uk-table uk-table-small\">\r\n <thead>\r\n <tr>\r\n <th>Event</th>\r\n <th>Action</th>\r\n <th>Condition</th>\r\n <th>Create Options</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each $database.triggers as trigger}\r\n <tr>\r\n <td >{trigger.eventName}</td>\r\n <td >{trigger.actionName}</td>\r\n <td >{trigger.condition}</td>\r\n <td >{trigger.optionsCreator}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onTriggerEdit(trigger)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onTriggerDelete(trigger)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no triggers added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <TriggerView trigger={editingTrigger}\r\n allActions={$database.actions}\r\n allTriggers={$database.triggers}\r\n onFinished={triggerEditingFinished}\r\n isNew={editingTriggerIsNew}/>\r\n {/if} \r\n</Modal>\r\n\r\n<style>\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--white);\r\n}\r\n\r\ntr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n</style>","<script>\r\n\r\nimport getIcon from \"../common/icon\";\r\nimport {database} from \"../builderStore\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Actions from \"./Actions.svelte\";\r\nimport Triggers from \"./Triggers.svelte\";\r\nimport {getNewAction, getNewTrigger} from \"../common/core\";\r\n\r\nlet editingAction = null;\r\nlet editingActionIsNew = true;\r\nlet editingTrigger = null;\r\nlet editingTriggerIsNew = true;\r\n\r\nlet getDefaultOptionsHtml = defaultOptions => \r\n chain(defaultOptions, [\r\n keys,\r\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.parse(typeOptions[k])}`),\r\n join(\"<br>\")\r\n ]);\r\n\r\nlet onActionEdit = (action) => {\r\n editingAction = action;\r\n editingActionIsNew = false;\r\n}\r\n\r\nlet newAction = () => {\r\n editingAction = getNewAction();\r\n editingActionIsNew = true;\r\n}\r\n\r\nlet onActionDelete = (action) => {\r\n database.deleteAction(action);\r\n}\r\n\r\nlet deleteTrigger = () => {}\r\n\r\nlet editTrigger = (trigger) => {\r\n editingTrigger = trigger;\r\n editingTriggerIsNew = false;\r\n}\r\n\r\nlet newTrigger = () => {\r\n editingTrigger = getNewTrigger();\r\n editingTriggerIsNew = true;\r\n}\r\n\r\nlet onActionSave = action => {\r\n database.saveAction(\r\n action, \r\n editingActionIsNew, \r\n editingAction);\r\n\r\n editingAction = null;\r\n}\r\n\r\nlet onActionCancel = () => {\r\n editingAction = null;\r\n}\r\n\r\nlet onTriggerSave = trigger => {\r\n database.saveTrigger(\r\n trigger, \r\n editingTriggerIsNew, \r\n editingTrigger);\r\n\r\n editingTrigger = null;\r\n}\r\n\r\nlet onTriggerCancel = () => {\r\n editingTrigger = null;\r\n}\r\n\r\nlet onTriggerEdit = (trigger) => {\r\n editingTrigger = trigger;\r\n editingTriggerIsNew = false;\r\n}\r\n\r\n\r\nlet onTriggerDelete = (trigger) => {\r\n database.deleteTrigger(trigger);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n<ButtonGroup>\r\n <Button color=\"secondary\" \r\n grouped\r\n on:click={newAction}>Create New Action</Button>\r\n <Button color=\"secondary\" \r\n grouped\r\n on:click={newTrigger}>Create New Trigger</Button>\r\n</ButtonGroup>\r\n\r\n<Actions {editingActionIsNew} {editingAction} \r\n {onActionEdit} {onActionDelete} {onActionSave}\r\n {onActionCancel} />\r\n\r\n<Triggers {editingTriggerIsNew} {editingTrigger} \r\n {onTriggerEdit} {onTriggerDelete} {onTriggerSave}\r\n {onTriggerCancel} />\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding: 10px;\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport {cloneDeep, map, some, filter} from \"lodash/fp\";\r\nimport Textbox from \"../common/Textbox.svelte\";\r\nimport Checkbox from \"../common/Checkbox.svelte\";\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport {validateAccessLevels} from \"../common/core\";\r\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\r\n\r\nexport let level;\r\nexport let allPermissions;\r\nexport let onFinished;\r\nexport let isNew;\r\nexport let allLevels;\r\nexport let hierarchy;\r\nexport let actions;\r\n\r\nlet errors = [];\r\nlet clonedLevel = cloneDeep(level);\r\n\r\nconst matchPermissions = (p1, p2) => \r\n p1.type === p2.type\r\n && \r\n ((!p2.nodeKey && !p1.nodeKey)\r\n || p2.nodeKey === p1.nodeKey);\r\n\r\nconst hasPermission = hasPerm => \r\n some(p => matchPermissions(p, hasPerm))\r\n (clonedLevel.permissions);\r\n\r\n$: permissionMatrix = \r\n map(p => ({permission:p, hasPermission: hasPermission(p)}))\r\n (allPermissions)\r\n\r\nconst getPermissionName = perm => \r\n perm.nodeKey\r\n ? `${perm.type} - ${perm.nodeKey}`\r\n : perm.type;\r\n\r\nconst save = () => {\r\n\r\n const newLevels = \r\n isNew \r\n ? [...allLevels, clonedLevel]\r\n : [...filter(l => l.name !== level.name)(allLevels), clonedLevel];\r\n\r\n errors = validateAccessLevels(\r\n hierarchy,\r\n actions,\r\n newLevels\r\n );\r\n\r\n if(errors.length > 0) return;\r\n\r\n onFinished(clonedLevel);\r\n}\r\n\r\nconst permissionChanged = perm => ev => {\r\n const hasPermission = ev.target.checked;\r\n\r\n if(hasPermission) {\r\n clonedLevel.permissions.push(perm);\r\n } else {\r\n clonedLevel.permissions = filter(p => !matchPermissions(p, perm));\r\n }\r\n}\r\n\r\n</script>\r\n\r\n<div>\r\n\r\n <ErrorsBox {errors} />\r\n\r\n <Textbox label=\"Name\" bind:text={clonedLevel.name} />\r\n\r\n {#each permissionMatrix as permission}\r\n <div>\r\n <Checkbox label={getPermissionName(permission.permission)} \r\n checked={permission.hasPermission} \r\n on:change={permissionChanged(permission.permission)} />\r\n </div>\r\n {/each}\r\n\r\n\r\n <ButtonGroup style=\"margin-top: 10px\">\r\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\r\n <Button color=\"secondary\" grouped on:click={() => onFinished()}>Cancel</Button>\r\n </ButtonGroup>\r\n\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n</style>","<script>\r\n\r\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport {database} from \"../builderStore\";\r\nimport {generateFullPermissions, getNewAccessLevel} from \"../common/core\";\r\nimport getIcon from \"../common/icon\";\r\nimport AccessLevelView from \"./AccessLevelView.svelte\";\r\nimport Modal from \"../common/Modal.svelte\";\r\n\r\nlet editingLevel = null;\r\nlet editingLevelIsNew = false;\r\n$: isEditing = (editingLevel !== null); \r\n\r\nlet allPermissions = [];\r\ndatabase.subscribe(db => {\r\n allPermissions = generateFullPermissions(db.hierarchy, db.actions);\r\n})\r\n\r\nlet onLevelEdit = (level) => {\r\n editingLevel = level;\r\n editingLevelIsNew = false;\r\n};\r\n\r\nlet onLevelCancel = () => {\r\n editingAction = null;\r\n};\r\n\r\nlet onLevelDelete = (level) => {\r\n database.deleteLevel(level);\r\n};\r\n\r\n\r\nlet createNewLevel = () => {\r\n editingLevelIsNew = true;\r\n editingLevel = getNewAccessLevel();\r\n}\r\n\r\nlet onEditingFinished = (level) => {\r\n if(level) {\r\n database.saveLevel(level, editingLevelIsNew, editingLevel);\r\n }\r\n editingLevel = null;\r\n}\r\n\r\nconst getPermissionsString = perms => {\r\n return `${perms.length} / ${allPermissions.length}`;\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n\r\n<ButtonGroup>\r\n <Button grouped color=\"secondary\" on:click={createNewLevel}>Create New Access Level</Button>\r\n</ButtonGroup>\r\n\r\n{#if $database.accessLevels}\r\n<table class=\"fields-table uk-table uk-table-small\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Permissions</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {#each $database.accessLevels as level}\r\n <tr>\r\n <td >{level.name}</td>\r\n <td >{getPermissionsString(level.permissions)}</td>\r\n <td class=\"edit-button\">\r\n <span on:click={() => onLevelEdit(level)}>{@html getIcon(\"edit\")}</span>\r\n <span on:click={() => onLevelDelete(level)}>{@html getIcon(\"trash\")}</span>\r\n </td>\r\n </tr>\r\n {/each}\r\n </tbody>\r\n</table>\r\n{:else}\r\n(no actions added)\r\n{/if}\r\n\r\n\r\n<Modal bind:isOpen={isEditing}>\r\n {#if isEditing}\r\n <AccessLevelView level={editingLevel}\r\n allPermissions={allPermissions}\r\n onFinished={onEditingFinished}\r\n isNew={editingLevelIsNew}\r\n allLevels={$database.accessLevels}\r\n hierarchy={$database.hierarchy}\r\n actions={$database.actions} />\r\n {/if} \r\n</Modal>\r\n\r\n\r\n</div>\r\n\r\n<style>\r\n\r\n.root {\r\n padding:10px;\r\n}\r\n\r\n.edit-button {\r\n cursor:pointer;\r\n color: var(--white);\r\n}\r\n\r\ntr:hover .edit-button {\r\n color: var(--secondary75);\r\n}\r\n\r\n\r\n</style>","<script>\r\n\r\nimport Nav from \"./nav/Nav.svelte\";\r\nimport Database from \"./database/DatabaseRoot.svelte\" ;\r\nimport UserInterface from \"./userInterface/UserInterfaceRoot.svelte\" ;\r\nimport ActionsAndTriggers from \"./actionsAndTriggers/ActionsAndTriggersRoot.svelte\" ;\r\nimport AccessLevels from \"./accessLevels/AccessLevelsRoot.svelte\" ;\r\nimport ComingSoon from \"./common/ComingSoon.svelte\";\r\n\r\nimport {database} from \"./builderStore\";\r\n\r\nexport let navWidth = \"50px\";\r\n\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <Nav width={navWidth} />\r\n <div class=\"content\" \r\n style=\"width: calc(100% - {navWidth}); left: {navWidth}\"> \r\n {#if $database.activeNav === \"database\"}\r\n <Database />\r\n {:else if $database.activeNav === \"actions\"}\r\n <ActionsAndTriggers />\r\n {:else if $database.activeNav === \"access levels\"}\r\n <AccessLevels />\r\n {:else if $database.activeNav === \"user interface\"}\r\n <UserInterface />\r\n {/if}\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<style>\r\n\t.root {\r\n height: 100%;\r\n\t}\r\n \r\n\r\n .content {\r\n position: fixed;\r\n height: 100%;\r\n background-color: var(--white);\r\n margin:0;\r\n }\r\n\r\n\r\n</style>","<script>\n\t\n\timport NoPackage from \"./NoPackage.svelte\";\n\timport PackageRoot from \"./PackageRoot.svelte\";\n\timport {database, initialise} from \"./builderStore\";\n\timport { onMount } from 'svelte';\n\t\n\tlet init = initialise();\n\n</script>\n\n<main>\n\n\t{#await init}\n\t\n\t\t<h1>loading</h1>\n\n\t{:then result}\n\t\t{#if $database.hasAppPackage}\n\t\t<PackageRoot />\n\t\t{/if}\n\n\t\t{#if !$database.hasAppPackage}\n\t\t<NoPackage />\n\t\t{/if}\n\n\t{:catch err}\n\t\t<h1 style=\"color:red\">{err}</h1>\n\t{/await}\n</main>\n\n<style>\n\tmain {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tfont-family: \"Lato\", Helvetica, Arial, sans-serif;\n\t}\n</style>","/*! UIkit 3.1.6 | http://www.getuikit.com | (c) 2014 - 2018 YOOtheme | MIT License */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"uikit\",e):(t=t||self).UIkit=e()}(this,function(){\"use strict\";function l(n,i){return function(t){var e=arguments.length;return e?1<e?n.apply(i,arguments):n.call(i,t):n.call(i)}}var e=Object.prototype,n=e.hasOwnProperty;function c(t,e){return n.call(t,e)}var i={},r=/([a-z\\d])([A-Z])/g;function d(t){return t in i||(i[t]=t.replace(r,\"$1-$2\").toLowerCase()),i[t]}var o=/-(\\w)/g;function f(t){return t.replace(o,s)}function s(t,e){return e?e.toUpperCase():\"\"}function p(t){return t.length?s(0,t.charAt(0))+t.slice(1):\"\"}var t=String.prototype,a=t.startsWith||function(t){return 0===this.lastIndexOf(t,0)};function w(t,e){return a.call(t,e)}var h=t.endsWith||function(t){return this.substr(-t.length)===t};function u(t,e){return h.call(t,e)}function m(t,e){return~this.indexOf(t,e)}var g=Array.prototype,v=t.includes||m,b=g.includes||m;function y(t,e){return t&&(D(t)?v:b).call(t,e)}var x=g.findIndex||function(t){for(var e=arguments,n=0;n<this.length;n++)if(t.call(e[1],this[n],n,this))return n;return-1};function k(t,e){return x.call(t,e)}var $=Array.isArray;function I(t){return\"function\"==typeof t}function S(t){return null!==t&&\"object\"==typeof t}function T(t){return S(t)&&Object.getPrototypeOf(t)===e}function E(t){return S(t)&&t===t.window}function A(t){return S(t)&&9===t.nodeType}function C(t){return S(t)&&!!t.jquery}function N(t){return t instanceof Node||S(t)&&1<=t.nodeType}var _=e.toString;function M(t){return _.call(t).match(/^\\[object (NodeList|HTMLCollection)\\]$/)}function O(t){return\"boolean\"==typeof t}function D(t){return\"string\"==typeof t}function B(t){return\"number\"==typeof t}function z(t){return B(t)||D(t)&&!isNaN(t-parseFloat(t))}function P(t){return!($(t)?t.length:S(t)&&Object.keys(t).length)}function H(t){return void 0===t}function L(t){return O(t)?t:\"true\"===t||\"1\"===t||\"\"===t||\"false\"!==t&&\"0\"!==t&&t}function F(t){var e=Number(t);return!isNaN(e)&&e}function j(t){return parseFloat(t)||0}function W(t){return N(t)||E(t)||A(t)?t:M(t)||C(t)?t[0]:$(t)?W(t[0]):null}function V(t){return N(t)?[t]:M(t)?g.slice.call(t):$(t)?t.map(W).filter(Boolean):C(t)?t.toArray():[]}function Y(t){return $(t)?t:D(t)?t.split(/,(?![^(]*\\))/).map(function(t){return z(t)?F(t):L(t.trim())}):[t]}function R(t){return t?u(t,\"ms\")?j(t):1e3*j(t):0}function q(t,n){return t===n||S(t)&&S(n)&&Object.keys(t).length===Object.keys(n).length&&K(t,function(t,e){return t===n[e]})}function U(t,e,n){return t.replace(new RegExp(e+\"|\"+n,\"mg\"),function(t){return t===e?n:e})}var X=Object.assign||function(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];t=Object(t);for(var i=0;i<e.length;i++){var r=e[i];if(null!==r)for(var o in r)c(r,o)&&(t[o]=r[o])}return t};function K(t,e){for(var n in t)if(!1===e(t[n],n))return!1;return!0}function G(t,r){return t.sort(function(t,e){var n=t[r];void 0===n&&(n=0);var i=e[r];return void 0===i&&(i=0),i<n?1:n<i?-1:0})}function J(t,n){var i=new Set;return t.filter(function(t){var e=t[n];return!i.has(e)&&(i.add(e)||!0)})}function Z(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),Math.min(Math.max(F(t)||0,e),n)}function Q(){}function tt(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}function et(t,e){return t.x<=e.right&&t.x>=e.left&&t.y<=e.bottom&&t.y>=e.top}var nt={ratio:function(t,e,n){var i,r=\"width\"===e?\"height\":\"width\";return(i={})[r]=t[e]?Math.round(n*t[r]/t[e]):t[r],i[e]=n,i},contain:function(n,i){var r=this;return K(n=X({},n),function(t,e){return n=n[e]>i[e]?r.ratio(n,e,i[e]):n}),n},cover:function(n,i){var r=this;return K(n=this.contain(n,i),function(t,e){return n=n[e]<i[e]?r.ratio(n,e,i[e]):n}),n}};function it(t,e,n){if(S(e))for(var i in e)it(t,i,e[i]);else{if(H(n))return(t=W(t))&&t.getAttribute(e);V(t).forEach(function(t){I(n)&&(n=n.call(t,it(t,e))),null===n?ot(t,e):t.setAttribute(e,n)})}}function rt(t,e){return V(t).some(function(t){return t.hasAttribute(e)})}function ot(t,e){t=V(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.hasAttribute(e)&&t.removeAttribute(e)})})}function st(t,e){for(var n=0,i=[e,\"data-\"+e];n<i.length;n++)if(rt(t,i[n]))return it(t,i[n])}function at(t,e){return W(t)||ut(t,ct(t,e))}function ht(t,e){var n=V(t);return n.length&&n||lt(t,ct(t,e))}function ct(t,e){return void 0===e&&(e=document),mt(t)||A(e)?e:e.ownerDocument}function ut(t,e){return W(dt(t,e,\"querySelector\"))}function lt(t,e){return V(dt(t,e,\"querySelectorAll\"))}function dt(t,s,e){if(void 0===s&&(s=document),!t||!D(t))return null;var a;mt(t=t.replace(pt,\"$1 *\"))&&(a=[],t=function(t){return t.match(gt).map(function(t){return t.replace(/,$/,\"\").trim()})}(t).map(function(t,e){var n=s;if(\"!\"===t[0]){var i=t.substr(1).trim().split(\" \");n=xt(s.parentNode,i[0]),t=i.slice(1).join(\" \").trim()}if(\"-\"===t[0]){var r=t.substr(1).trim().split(\" \"),o=(n||s).previousElementSibling;n=bt(o,t.substr(1))?o:null,t=r.slice(1).join(\" \")}return n?(n.id||(n.id=\"uk-\"+Date.now()+e,a.push(function(){return ot(n,\"id\")})),\"#\"+It(n.id)+\" \"+t):null}).filter(Boolean).join(\",\"),s=document);try{return s[e](t)}catch(t){return null}finally{a&&a.forEach(function(t){return t()})}}var ft=/(^|[^\\\\],)\\s*[!>+~-]/,pt=/([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;function mt(t){return D(t)&&t.match(ft)}var gt=/.*?[^\\\\](?:,|$)/g;var vt=Element.prototype,wt=vt.matches||vt.webkitMatchesSelector||vt.msMatchesSelector;function bt(t,e){return V(t).some(function(t){return wt.call(t,e)})}var yt=vt.closest||function(t){var e=this;do{if(bt(e,t))return e;e=e.parentNode}while(e&&1===e.nodeType)};function xt(t,e){return w(e,\">\")&&(e=e.slice(1)),N(t)?t.parentNode&&yt.call(t,e):V(t).map(function(t){return xt(t,e)}).filter(Boolean)}function kt(t,e){for(var n=[],i=W(t).parentNode;i&&1===i.nodeType;)bt(i,e)&&n.push(i),i=i.parentNode;return n}var $t=window.CSS&&CSS.escape||function(t){return t.replace(/([^\\x7f-\\uFFFF\\w-])/g,function(t){return\"\\\\\"+t})};function It(t){return D(t)?$t.call(null,t):\"\"}var St={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function Tt(t){return V(t).some(function(t){return St[t.tagName.toLowerCase()]})}function Et(t){return V(t).some(function(t){return t.offsetWidth||t.offsetHeight||t.getClientRects().length})}var At=\"input,select,textarea,button\";function Ct(t){return V(t).some(function(t){return bt(t,At)})}function Nt(t,e){return V(t).filter(function(t){return bt(t,e)})}function _t(t,e){return D(e)?bt(t,e)||xt(t,e):t===e||(A(e)?e.documentElement:W(e)).contains(W(t))}function Mt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Pt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4];return i=Ft(i),o&&(s=function(t,i,r){var o=this;return function(n){t.forEach(function(t){var e=\">\"===i[0]?lt(i,t).reverse().filter(function(t){return _t(n.target,t)})[0]:xt(n.target,i);e&&(n.delegate=t,n.current=e,r.call(o,n))})}}(i,o,s)),1<s.length&&(s=function(e){return function(t){return $(t.detail)?e.apply(void 0,[t].concat(t.detail)):e(t)}}(s)),r.split(\" \").forEach(function(e){return i.forEach(function(t){return t.addEventListener(e,s,a)})}),function(){return Ot(i,r,s,a)}}function Ot(t,e,n,i){void 0===i&&(i=!1),t=Ft(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.removeEventListener(e,n,i)})})}function Dt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Pt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4],h=n[5],c=Mt(i,r,o,function(t){var e=!h||h(t);e&&(c(),s(t,e))},a);return c}function Bt(t,n,i){return Ft(t).reduce(function(t,e){return t&&e.dispatchEvent(zt(n,!0,!0,i))},!0)}function zt(t,e,n,i){if(void 0===e&&(e=!0),void 0===n&&(n=!1),D(t)){var r=document.createEvent(\"CustomEvent\");r.initCustomEvent(t,e,n,i),t=r}return t}function Pt(t){return I(t[2])&&t.splice(2,0,!1),t}function Ht(t){return t&&\"addEventListener\"in t}function Lt(t){return Ht(t)?t:W(t)}function Ft(t){return $(t)?t.map(Lt).filter(Boolean):D(t)?lt(t):Ht(t)?[t]:V(t)}function jt(t){return\"touch\"===t.pointerType||t.touches}function Wt(t,e){void 0===e&&(e=\"client\");var n=t.touches,i=t.changedTouches,r=n&&n[0]||i&&i[0]||t;return{x:r[e+\"X\"],y:r[e+\"Y\"]}}function Vt(){var n=this;this.promise=new Yt(function(t,e){n.reject=e,n.resolve=t})}var Yt=\"Promise\"in window?window.Promise:Ut,Rt=2,qt=\"setImmediate\"in window?setImmediate:setTimeout;function Ut(t){this.state=Rt,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}Ut.reject=function(n){return new Ut(function(t,e){e(n)})},Ut.resolve=function(n){return new Ut(function(t,e){t(n)})},Ut.all=function(s){return new Ut(function(n,t){var i=[],r=0;function e(e){return function(t){i[e]=t,(r+=1)===s.length&&n(i)}}0===s.length&&n(i);for(var o=0;o<s.length;o+=1)Ut.resolve(s[o]).then(e(o),t)})},Ut.race=function(i){return new Ut(function(t,e){for(var n=0;n<i.length;n+=1)Ut.resolve(i[n]).then(t,e)})};var Xt=Ut.prototype;function Kt(s,a){return new Yt(function(t,e){var n=X({data:null,method:\"GET\",headers:{},xhr:new XMLHttpRequest,beforeSend:Q,responseType:\"\"},a);n.beforeSend(n);var i=n.xhr;for(var r in n)if(r in i)try{i[r]=n[r]}catch(t){}for(var o in i.open(n.method.toUpperCase(),s),n.headers)i.setRequestHeader(o,n.headers[o]);Mt(i,\"load\",function(){0===i.status||200<=i.status&&i.status<300||304===i.status?t(i):e(X(Error(i.statusText),{xhr:i,status:i.status}))}),Mt(i,\"error\",function(){return e(X(Error(\"Network Error\"),{xhr:i}))}),Mt(i,\"timeout\",function(){return e(X(Error(\"Network Timeout\"),{xhr:i}))}),i.send(n.data)})}function Gt(i,r,o){return new Yt(function(t,e){var n=new Image;n.onerror=e,n.onload=function(){return t(n)},o&&(n.sizes=o),r&&(n.srcset=r),n.src=i})}Xt.resolve=function(t){var e=this;if(e.state===Rt){if(t===e)throw new TypeError(\"Promise settled with itself.\");var n=!1;try{var i=t&&t.then;if(null!==t&&S(t)&&I(i))return void i.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},Xt.reject=function(t){var e=this;if(e.state===Rt){if(t===e)throw new TypeError(\"Promise settled with itself.\");e.state=1,e.value=t,e.notify()}},Xt.notify=function(){var o=this;qt(function(){if(o.state!==Rt)for(;o.deferred.length;){var t=o.deferred.shift(),e=t[0],n=t[1],i=t[2],r=t[3];try{0===o.state?I(e)?i(e.call(void 0,o.value)):i(o.value):1===o.state&&(I(n)?i(n.call(void 0,o.value)):r(o.value))}catch(t){r(t)}}})},Xt.then=function(n,i){var r=this;return new Ut(function(t,e){r.deferred.push([n,i,t,e]),r.notify()})},Xt.catch=function(t){return this.then(void 0,t)};var Jt=/msie|trident/i.test(window.navigator.userAgent),Zt=\"rtl\"===it(document.documentElement,\"dir\"),Qt=\"ontouchstart\"in window,te=window.PointerEvent,ee=Qt||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,ne=te?\"pointerdown\":Qt?\"touchstart\":\"mousedown\",ie=te?\"pointermove\":Qt?\"touchmove\":\"mousemove\",re=te?\"pointerup\":Qt?\"touchend\":\"mouseup\",oe=te?\"pointerenter\":Qt?\"\":\"mouseenter\",se=te?\"pointerleave\":Qt?\"\":\"mouseleave\",ae=te?\"pointercancel\":\"touchcancel\";function he(t){if(\"loading\"===document.readyState)var e=Mt(document,\"DOMContentLoaded\",function(){e(),t()});else t()}function ce(t,e){return e?V(t).indexOf(W(e)):V((t=W(t))&&t.parentNode.children).indexOf(t)}function ue(t,e,n,i){void 0===n&&(n=0),void 0===i&&(i=!1);var r=(e=V(e)).length;return t=z(t)?F(t):\"next\"===t?n+1:\"previous\"===t?n-1:ce(e,t),i?Z(t,0,r-1):(t%=r)<0?t+r:t}function le(t){return(t=Se(t)).innerHTML=\"\",t}function de(t,e){return t=Se(t),H(e)?t.innerHTML:fe(t.hasChildNodes()?le(t):t,e)}function fe(e,t){return e=Se(e),ge(t,function(t){return e.appendChild(t)})}function pe(e,t){return e=Se(e),ge(t,function(t){return e.parentNode.insertBefore(t,e)})}function me(e,t){return e=Se(e),ge(t,function(t){return e.nextSibling?pe(e.nextSibling,t):fe(e.parentNode,t)})}function ge(t,e){return(t=D(t)?$e(t):t)?\"length\"in t?V(t).map(e):e(t):null}function ve(t){V(t).map(function(t){return t.parentNode&&t.parentNode.removeChild(t)})}function we(t,e){for(e=W(pe(t,e));e.firstChild;)e=e.firstChild;return fe(e,t),e}function be(t,e){return V(V(t).map(function(t){return t.hasChildNodes?we(V(t.childNodes),e):fe(t,e)}))}function ye(t){V(t).map(function(t){return t.parentNode}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){pe(t,t.childNodes),ve(t)})}var xe=/^\\s*<(\\w+|!)[^>]*>/,ke=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;function $e(t){var e=ke.exec(t);if(e)return document.createElement(e[1]);var n=document.createElement(\"div\");return xe.test(t)?n.insertAdjacentHTML(\"beforeend\",t.trim()):n.textContent=t,1<n.childNodes.length?V(n.childNodes):n.firstChild}function Ie(t,e){if(t&&1===t.nodeType)for(e(t),t=t.firstElementChild;t;)Ie(t,e),t=t.nextElementSibling}function Se(t,e){return D(t)?Ee(t)?W($e(t)):ut(t,e):W(t)}function Te(t,e){return D(t)?Ee(t)?V($e(t)):lt(t,e):V(t)}function Ee(t){return\"<\"===t[0]||t.match(/^\\s*</)}function Ae(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];De(t,e,\"add\")}function Ce(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];De(t,e,\"remove\")}function Ne(t,e){it(t,\"class\",function(t){return(t||\"\").replace(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"g\"),\"\")})}function _e(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];e[0]&&Ce(t,e[0]),e[1]&&Ae(t,e[1])}function Me(t,e){return e&&V(t).some(function(t){return t.classList.contains(e.split(\" \")[0])})}function Oe(t){for(var i=[],e=arguments.length-1;0<e--;)i[e]=arguments[e+1];if(i.length){var r=D((i=Be(i))[i.length-1])?[]:i.pop();i=i.filter(Boolean),V(t).forEach(function(t){for(var e=t.classList,n=0;n<i.length;n++)ze.Force?e.toggle.apply(e,[i[n]].concat(r)):e[(H(r)?!e.contains(i[n]):r)?\"add\":\"remove\"](i[n])})}}function De(t,n,i){(n=Be(n).filter(Boolean)).length&&V(t).forEach(function(t){var e=t.classList;ze.Multiple?e[i].apply(e,n):n.forEach(function(t){return e[i](t)})})}function Be(t){return t.reduce(function(t,e){return t.concat.call(t,D(e)&&y(e,\" \")?e.trim().split(\" \"):e)},[])}var ze={get Multiple(){return this.get(\"_multiple\")},get Force(){return this.get(\"_force\")},get:function(t){if(!c(this,t)){var e=document.createElement(\"_\").classList;e.add(\"a\",\"b\"),e.toggle(\"c\",!1),this._multiple=e.contains(\"b\"),this._force=!e.contains(\"c\")}return this[t]}},Pe={\"animation-iteration-count\":!0,\"column-count\":!0,\"fill-opacity\":!0,\"flex-grow\":!0,\"flex-shrink\":!0,\"font-weight\":!0,\"line-height\":!0,opacity:!0,order:!0,orphans:!0,\"stroke-dasharray\":!0,\"stroke-dashoffset\":!0,widows:!0,\"z-index\":!0,zoom:!0};function He(t,e,r){return V(t).map(function(n){if(D(e)){if(e=Ye(e),H(r))return Fe(n,e);r||B(r)?n.style[e]=z(r)&&!Pe[e]?r+\"px\":r:n.style.removeProperty(e)}else{if($(e)){var i=Le(n);return e.reduce(function(t,e){return t[e]=i[Ye(e)],t},{})}S(e)&&K(e,function(t,e){return He(n,e,t)})}return n})[0]}function Le(t,e){return(t=W(t)).ownerDocument.defaultView.getComputedStyle(t,e)}function Fe(t,e,n){return Le(t,n)[e]}var je={};function We(t){var e=document.documentElement;if(!Jt)return Le(e).getPropertyValue(\"--uk-\"+t);if(!(t in je)){var n=fe(e,document.createElement(\"div\"));Ae(n,\"uk-\"+t),je[t]=Fe(n,\"content\",\":before\").replace(/^[\"'](.*)[\"']$/,\"$1\"),ve(n)}return je[t]}var Ve={};function Ye(t){var e=Ve[t];return e=e||(Ve[t]=function(t){t=d(t);var e=document.documentElement.style;if(t in e)return t;var n,i=Re.length;for(;i--;)if((n=\"-\"+Re[i]+\"-\"+t)in e)return n}(t)||t)}var Re=[\"webkit\",\"moz\",\"ms\"];function qe(t,s,a,h){return void 0===a&&(a=400),void 0===h&&(h=\"linear\"),Yt.all(V(t).map(function(o){return new Yt(function(n,i){for(var t in s){var e=He(o,t);\"\"===e&&He(o,t,e)}var r=setTimeout(function(){return Bt(o,\"transitionend\")},a);Dt(o,\"transitionend transitioncanceled\",function(t){var e=t.type;clearTimeout(r),Ce(o,\"uk-transition\"),He(o,{\"transition-property\":\"\",\"transition-duration\":\"\",\"transition-timing-function\":\"\"}),\"transitioncanceled\"===e?i():n()},!1,function(t){var e=t.target;return o===e}),Ae(o,\"uk-transition\"),He(o,X({\"transition-property\":Object.keys(s).map(Ye).join(\",\"),\"transition-duration\":a+\"ms\",\"transition-timing-function\":h},s))})}))}var Ue={start:qe,stop:function(t){return Bt(t,\"transitionend\"),Yt.resolve()},cancel:function(t){Bt(t,\"transitioncanceled\")},inProgress:function(t){return Me(t,\"uk-transition\")}},Xe=\"uk-animation-\",Ke=\"uk-cancel-animation\";function Ge(t,e,n,a,h){var c=arguments;return void 0===n&&(n=200),Yt.all(V(t).map(function(s){return new Yt(function(i,r){if(Me(s,Ke))requestAnimationFrame(function(){return Yt.resolve().then(function(){return Ge.apply(void 0,c).then(i,r)})});else{var t=e+\" \"+Xe+(h?\"leave\":\"enter\");w(e,Xe)&&(a&&(t+=\" uk-transform-origin-\"+a),h&&(t+=\" \"+Xe+\"reverse\")),o(),Dt(s,\"animationend animationcancel\",function(t){var e=t.type,n=!1;\"animationcancel\"===e?(r(),o()):(i(),Yt.resolve().then(function(){n=!0,o()})),requestAnimationFrame(function(){n||(Ae(s,Ke),requestAnimationFrame(function(){return Ce(s,Ke)}))})},!1,function(t){var e=t.target;return s===e}),He(s,\"animationDuration\",n+\"ms\"),Ae(s,t)}function o(){He(s,\"animationDuration\",\"\"),Ne(s,Xe+\"\\\\S*\")}})}))}var Je=new RegExp(Xe+\"(enter|leave)\"),Ze={in:function(t,e,n,i){return Ge(t,e,n,i,!1)},out:function(t,e,n,i){return Ge(t,e,n,i,!0)},inProgress:function(t){return Je.test(it(t,\"class\"))},cancel:function(t){Bt(t,\"animationcancel\")}},Qe={width:[\"x\",\"left\",\"right\"],height:[\"y\",\"top\",\"bottom\"]};function tn(t,e,u,l,d,n,i,r){u=un(u),l=un(l);var f={element:u,target:l};if(!t||!e)return f;var p=nn(t),m=nn(e),g=m;if(cn(g,u,p,-1),cn(g,l,m,1),d=ln(d,p.width,p.height),n=ln(n,m.width,m.height),d.x+=n.x,d.y+=n.y,g.left+=d.x,g.top+=d.y,i){var o=[nn(bn(t))];r&&o.unshift(nn(r)),K(Qe,function(t,s){var a=t[0],h=t[1],c=t[2];!0!==i&&!y(i,a)||o.some(function(i){var t=u[a]===h?-p[s]:u[a]===c?p[s]:0,e=l[a]===h?m[s]:l[a]===c?-m[s]:0;if(g[h]<i[h]||g[h]+p[s]>i[c]){var n=p[s]/2,r=\"center\"===l[a]?-m[s]/2:0;return\"center\"===u[a]&&(o(n,r)||o(-n,-r))||o(t,e)}function o(e,t){var n=g[h]+e+t-2*d[a];if(n>=i[h]&&n+p[s]<=i[c])return g[h]=n,[\"element\",\"target\"].forEach(function(t){f[t][a]=e?f[t][a]===Qe[s][1]?Qe[s][2]:Qe[s][1]:f[t][a]}),!0}})})}return en(t,g),f}function en(n,i){if(n=W(n),!i)return nn(n);var r=en(n),o=He(n,\"position\");[\"left\",\"top\"].forEach(function(t){if(t in i){var e=He(n,t);He(n,t,i[t]-r[t]+j(\"absolute\"===o&&\"auto\"===e?rn(n)[t]:e))}})}function nn(t){var e,n,i=bn(t=W(t)),r=i.pageYOffset,o=i.pageXOffset;if(E(t)){var s=t.innerHeight,a=t.innerWidth;return{top:r,left:o,height:s,width:a,bottom:r+s,right:o+a}}Et(t)||\"none\"!==He(t,\"display\")||(e=it(t,\"style\"),n=it(t,\"hidden\"),it(t,{style:(e||\"\")+\";display:block !important;\",hidden:null}));var h=t.getBoundingClientRect();return H(e)||it(t,{style:e,hidden:n}),{height:h.height,width:h.width,top:h.top+r,left:h.left+o,bottom:h.bottom+r,right:h.right+o}}function rn(i){var r=(i=W(i)).offsetParent||function(t){return yn(t).documentElement}(i),o=en(r),t=[\"top\",\"left\"].reduce(function(t,e){var n=p(e);return t[e]-=o[e]+j(He(i,\"margin\"+n))+j(He(r,\"border\"+n+\"Width\")),t},en(i));return{top:t.top,left:t.left}}var on=an(\"height\"),sn=an(\"width\");function an(i){var r=p(i);return function(t,e){if(t=W(t),H(e)){if(E(t))return t[\"inner\"+r];if(A(t)){var n=t.documentElement;return Math.max(n[\"offset\"+r],n[\"scroll\"+r])}return(e=\"auto\"===(e=He(t,i))?t[\"offset\"+r]:j(e)||0)-hn(i,t)}He(t,i,e||0===e?+e+hn(i,t)+\"px\":\"\")}}function hn(t,n,e){return void 0===e&&(e=\"border-box\"),He(n,\"boxSizing\")===e?Qe[t].slice(1).map(p).reduce(function(t,e){return t+j(He(n,\"padding\"+e))+j(He(n,\"border\"+e+\"Width\"))},0):0}function cn(o,s,a,h){K(Qe,function(t,e){var n=t[0],i=t[1],r=t[2];s[n]===r?o[i]+=a[e]*h:\"center\"===s[n]&&(o[i]+=a[e]*h/2)})}function un(t){var e=/left|center|right/,n=/top|center|bottom/;return 1===(t=(t||\"\").split(\" \")).length&&(t=e.test(t[0])?t.concat([\"center\"]):n.test(t[0])?[\"center\"].concat(t):[\"center\",\"center\"]),{x:e.test(t[0])?t[0]:\"center\",y:n.test(t[1])?t[1]:\"center\"}}function ln(t,e,n){var i=(t||\"\").split(\" \"),r=i[0],o=i[1];return{x:r?j(r)*(u(r,\"%\")?e/100:1):0,y:o?j(o)*(u(o,\"%\")?n/100:1):0}}function dn(t){switch(t){case\"left\":return\"right\";case\"right\":return\"left\";case\"top\":return\"bottom\";case\"bottom\":return\"top\";default:return t}}function fn(t,e,n){if(void 0===e&&(e=0),void 0===n&&(n=0),!Et(t))return!1;var i=bn(t=W(t)),r=t.getBoundingClientRect(),o={top:-e,left:-n,bottom:e+on(i),right:n+sn(i)};return tt(r,o)||et({x:r.left,y:r.top},o)}function pn(t,e){if(void 0===e&&(e=0),!Et(t))return 0;var n=bn(t=W(t)),i=yn(t),r=t.offsetHeight+e,o=gn(t)[0],s=on(n),a=s+Math.min(0,o-s),h=Math.max(0,s-(on(i)+e-(o+r)));return Z((a+n.pageYOffset-o)/((a+(r-(h<s?h:0)))/100)/100)}function mn(t,e){if(E(t=W(t))||A(t)){var n=bn(t);(0,n.scrollTo)(n.pageXOffset,e)}else t.scrollTop=e}function gn(t){var e=[0,0];do{if(e[0]+=t.offsetTop,e[1]+=t.offsetLeft,\"fixed\"===He(t,\"position\")){var n=bn(t);return e[0]+=n.pageYOffset,e[1]+=n.pageXOffset,e}}while(t=t.offsetParent);return e}function vn(t,e,n){return void 0===e&&(e=\"width\"),void 0===n&&(n=window),z(t)?+t:u(t,\"vh\")?wn(on(bn(n)),t):u(t,\"vw\")?wn(sn(bn(n)),t):u(t,\"%\")?wn(nn(n)[e],t):j(t)}function wn(t,e){return t*j(e)/100}function bn(t){return E(t)?t:yn(t).defaultView}function yn(t){return W(t).ownerDocument}var xn={reads:[],writes:[],read:function(t){return this.reads.push(t),$n(),t},write:function(t){return this.writes.push(t),$n(),t},clear:function(t){return Sn(this.reads,t)||Sn(this.writes,t)},flush:kn};function kn(){In(xn.reads),In(xn.writes.splice(0,xn.writes.length)),xn.scheduled=!1,(xn.reads.length||xn.writes.length)&&$n(!0)}function $n(t){void 0===t&&(t=!1),xn.scheduled||(xn.scheduled=!0,t?Yt.resolve().then(kn):requestAnimationFrame(kn))}function In(t){for(var e;e=t.shift();)e()}function Sn(t,e){var n=t.indexOf(e);return!!~n&&!!t.splice(n,1)}function Tn(){}function En(t,e){return(e.y-t.y)/(e.x-t.x)}Tn.prototype={positions:[],position:null,init:function(){var i=this;this.positions=[],this.position=null;var r=!1;this.unbind=Mt(document,\"mousemove\",function(n){r||(setTimeout(function(){var t=Date.now(),e=i.positions.length;e&&100<t-i.positions[e-1].time&&i.positions.splice(0,e),i.positions.push({time:t,x:n.pageX,y:n.pageY}),5<i.positions.length&&i.positions.shift(),r=!1},5),r=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(t){if(this.positions.length<2)return!1;var e=en(t),n=this.positions[this.positions.length-1],i=this.positions[0];if(e.left<=n.x&&n.x<=e.right&&e.top<=n.y&&n.y<=e.bottom)return!1;var r=[[{x:e.left,y:e.top},{x:e.right,y:e.bottom}],[{x:e.right,y:e.top},{x:e.left,y:e.bottom}]];return e.right<=n.x||(e.left>=n.x?(r[0].reverse(),r[1].reverse()):e.bottom<=n.y?r[0].reverse():e.top>=n.y&&r[1].reverse()),!!r.reduce(function(t,e){return t+(En(i,e[0])<En(n,e[0])&&En(i,e[1])>En(n,e[1]))},0)}};var An={};function Cn(t,e,n){return An.computed(I(t)?t.call(n,n):t,I(e)?e.call(n,n):e)}function Nn(t,e){return t=t&&!$(t)?[t]:t,e?t?t.concat(e):$(e)?e:[e]:t}function _n(e,n,i){var r={};if(I(n)&&(n=n.options),n.extends&&(e=_n(e,n.extends,i)),n.mixins)for(var t=0,o=n.mixins.length;t<o;t++)e=_n(e,n.mixins[t],i);for(var s in e)h(s);for(var a in n)c(e,a)||h(a);function h(t){r[t]=(An[t]||function(t,e){return H(e)?t:e})(e[t],n[t],i)}return r}function Mn(t,e){var n;void 0===e&&(e=[]);try{return t?w(t,\"{\")?JSON.parse(t):e.length&&!y(t,\":\")?((n={})[e[0]]=t,n):t.split(\";\").reduce(function(t,e){var n=e.split(/:(.*)/),i=n[0],r=n[1];return i&&!H(r)&&(t[i.trim()]=r.trim()),t},{}):{}}catch(t){return{}}}An.events=An.created=An.beforeConnect=An.connected=An.beforeDisconnect=An.disconnected=An.destroy=Nn,An.args=function(t,e){return!1!==e&&Nn(e||t)},An.update=function(t,e){return G(Nn(t,I(e)?{read:e}:e),\"order\")},An.props=function(t,e){return $(e)&&(e=e.reduce(function(t,e){return t[e]=String,t},{})),An.methods(t,e)},An.computed=An.methods=function(t,e){return e?t?X({},t,e):e:t},An.data=function(e,n,t){return t?Cn(e,n,t):n?e?function(t){return Cn(e,n,t)}:n:e};function On(t){this.id=++Dn,this.el=W(t)}var Dn=0;function Bn(t,e){try{t.contentWindow.postMessage(JSON.stringify(X({event:\"command\"},e)),\"*\")}catch(t){}}On.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},On.prototype.isHTML5=function(){return\"VIDEO\"===this.el.tagName},On.prototype.isIFrame=function(){return\"IFRAME\"===this.el.tagName},On.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/)},On.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\\.com\\/video\\/.*/)},On.prototype.enableApi=function(){var e=this;if(this.ready)return this.ready;var n,i=this.isYoutube(),r=this.isVimeo();return i||r?this.ready=new Yt(function(t){Dt(e.el,\"load\",function(){if(i){var t=function(){return Bn(e.el,{event:\"listening\",id:e.id})};n=setInterval(t,100),t()}}),function(i){return new Yt(function(n){Dt(window,\"message\",function(t,e){return n(e)},!1,function(t){var e=t.data;if(e&&D(e)){try{e=JSON.parse(e)}catch(t){return}return e&&i(e)}})})}(function(t){return i&&t.id===e.id&&\"onReady\"===t.event||r&&Number(t.player_id)===e.id}).then(function(){t(),n&&clearInterval(n)}),it(e.el,\"src\",e.el.src+(y(e.el.src,\"?\")?\"&\":\"?\")+(i?\"enablejsapi=1\":\"api=1&player_id=\"+e.id))}):Yt.resolve()},On.prototype.play=function(){var t=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return Bn(t.el,{func:\"playVideo\",method:\"play\"})});else if(this.isHTML5())try{var e=this.el.play();e&&e.catch(Q)}catch(t){}},On.prototype.pause=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"pauseVideo\",method:\"pause\"})}):this.isHTML5()&&this.el.pause())},On.prototype.mute=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"mute\",method:\"setVolume\",value:0})}):this.isHTML5()&&(this.el.muted=!0,it(this.el,\"muted\",\"\")))};var zn=\"IntersectionObserver\"in window?window.IntersectionObserver:function(){function t(e,t){var n=this;void 0===t&&(t={});var i=t.rootMargin;void 0===i&&(i=\"0 0\"),this.targets=[];var r,o=(i||\"0 0\").split(\" \").map(j),s=o[0],a=o[1];this.offsetTop=s,this.offsetLeft=a,this.apply=function(){r=r||requestAnimationFrame(function(){return setTimeout(function(){var t=n.takeRecords();t.length&&e(t,n),r=!1})})},this.off=Mt(window,\"scroll resize load\",this.apply,{passive:!0,capture:!0})}return t.prototype.takeRecords=function(){var n=this;return this.targets.filter(function(t){var e=fn(t.target,n.offsetTop,n.offsetLeft);if(null===t.isIntersecting||e^t.isIntersecting)return t.isIntersecting=e,!0})},t.prototype.observe=function(t){this.targets.push({target:t,isIntersecting:null}),this.apply()},t.prototype.disconnect=function(){this.targets=[],this.off()},t}();function Pn(t){return!(!w(t,\"uk-\")&&!w(t,\"data-uk-\"))&&f(t.replace(\"data-uk-\",\"\").replace(\"uk-\",\"\"))}function Hn(t){this._init(t)}var Ln,Fn,jn,Wn,Vn,Yn,Rn,qn,Un;function Xn(t,e){if(t)for(var n in t)t[n]._connected&&t[n]._callUpdate(e)}function Kn(t,e){var n={},i=t.args;void 0===i&&(i=[]);var r=t.props;void 0===r&&(r={});var o=t.el;if(!r)return n;for(var s in r){var a=d(s),h=st(o,a);if(!H(h)){if(h=r[s]===Boolean&&\"\"===h||Qn(r[s],h),\"target\"===a&&(!h||w(h,\"_\")))continue;n[s]=h}}var c=Mn(st(o,e),i);for(var u in c){var l=f(u);void 0!==r[l]&&(n[l]=Qn(r[l],c[u]))}return n}function Gn(i,r,o){Object.defineProperty(i,r,{enumerable:!0,get:function(){var t=i._computeds,e=i.$props,n=i.$el;return c(t,r)||(t[r]=(o.get||o).call(i,e,n)),t[r]},set:function(t){var e=i._computeds;e[r]=o.set?o.set.call(i,t):t,H(e[r])&&delete e[r]}})}function Jn(e,n,i){T(n)||(n={name:i,handler:n});var t=n.name,r=n.el,o=n.handler,s=n.capture,a=n.passive,h=n.delegate,c=n.filter,u=n.self;r=I(r)?r.call(e):r||e.$el,$(r)?r.forEach(function(t){return Jn(e,X({},n,{el:t}),i)}):!r||c&&!c.call(e)||(o=function(e){return function(t){return $(t.detail)?e.apply(void 0,[t].concat(t.detail)):e(t)}}(D(o)?e[o]:l(o,e)),u&&(o=function(e){return function(t){if(t.target===t.currentTarget||t.target===t.current)return e.call(null,t)}}(o)),e._events.push(Mt(r,t,h?D(h)?h:h.call(e):null,o,O(a)?{passive:a,capture:s}:s)))}function Zn(t,e){return t.every(function(t){return!t||!c(t,e)})}function Qn(t,e){return t===Boolean?L(e):t===Number?F(e):\"list\"===t?Y(e):t?t(e):e}Hn.util=Object.freeze({ajax:Kt,getImage:Gt,transition:qe,Transition:Ue,animate:Ge,Animation:Ze,attr:it,hasAttr:rt,removeAttr:ot,data:st,addClass:Ae,removeClass:Ce,removeClasses:Ne,replaceClass:_e,hasClass:Me,toggleClass:Oe,positionAt:tn,offset:en,position:rn,height:on,width:sn,boxModelAdjust:hn,flipPosition:dn,isInView:fn,scrolledOver:pn,scrollTop:mn,offsetPosition:gn,toPx:vn,ready:he,index:ce,getIndex:ue,empty:le,html:de,prepend:function(e,t){return(e=Se(e)).hasChildNodes()?ge(t,function(t){return e.insertBefore(t,e.firstChild)}):fe(e,t)},append:fe,before:pe,after:me,remove:ve,wrapAll:we,wrapInner:be,unwrap:ye,fragment:$e,apply:Ie,$:Se,$$:Te,isIE:Jt,isRtl:Zt,hasTouch:ee,pointerDown:ne,pointerMove:ie,pointerUp:re,pointerEnter:oe,pointerLeave:se,pointerCancel:ae,on:Mt,off:Ot,once:Dt,trigger:Bt,createEvent:zt,toEventTargets:Ft,isTouch:jt,getEventPos:Wt,fastdom:xn,isVoidElement:Tt,isVisible:Et,selInput:At,isInput:Ct,filter:Nt,within:_t,bind:l,hasOwn:c,hyphenate:d,camelize:f,ucfirst:p,startsWith:w,endsWith:u,includes:y,findIndex:k,isArray:$,isFunction:I,isObject:S,isPlainObject:T,isWindow:E,isDocument:A,isJQuery:C,isNode:N,isNodeCollection:M,isBoolean:O,isString:D,isNumber:B,isNumeric:z,isEmpty:P,isUndefined:H,toBoolean:L,toNumber:F,toFloat:j,toNode:W,toNodes:V,toList:Y,toMs:R,isEqual:q,swap:U,assign:X,each:K,sortBy:G,uniqueBy:J,clamp:Z,noop:Q,intersectRect:tt,pointInRect:et,Dimensions:nt,MouseTracker:Tn,mergeOptions:_n,parseOptions:Mn,Player:On,Promise:Yt,Deferred:Vt,IntersectionObserver:zn,query:at,queryAll:ht,find:ut,findAll:lt,matches:bt,closest:xt,parents:kt,escape:It,css:He,getStyles:Le,getStyle:Fe,getCssVar:We,propName:Ye}),Hn.data=\"__uikit__\",Hn.prefix=\"uk-\",Hn.options={},jn=(Ln=Hn).data,Ln.use=function(t){if(!t.installed)return t.call(null,this),t.installed=!0,this},Ln.mixin=function(t,e){(e=(D(e)?Ln.component(e):e)||this).options=_n(e.options,t)},Ln.extend=function(t){function e(t){this._init(t)}return t=t||{},((e.prototype=Object.create(this.prototype)).constructor=e).options=_n(this.options,t),e.super=this,e.extend=this.extend,e},Ln.update=function(t,e){(function t(e,n){e&&e!==document.body&&e.parentNode&&(t(e.parentNode,n),n(e.parentNode))})(t=t?W(t):document.body,function(t){return Xn(t[jn],e)}),Ie(t,function(t){return Xn(t[jn],e)})},Object.defineProperty(Ln,\"container\",{get:function(){return Fn||document.body},set:function(t){Fn=Se(t)}}),(Wn=Hn).prototype._callHook=function(t){var e=this,n=this.$options[t];n&&n.forEach(function(t){return t.call(e)})},Wn.prototype._callConnected=function(){this._connected||(this._data={},this._computeds={},this._initProps(),this._callHook(\"beforeConnect\"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook(\"connected\"),this._callUpdate())},Wn.prototype._callDisconnected=function(){this._connected&&(this._callHook(\"beforeDisconnect\"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook(\"disconnected\"),this._connected=!1)},Wn.prototype._callUpdate=function(t){var o=this;void 0===t&&(t=\"update\");var s=t.type||t;y([\"update\",\"resize\"],s)&&this._callWatches();var e=this.$options.update,n=this._frames,a=n.reads,h=n.writes;e&&e.forEach(function(t,e){var n=t.read,i=t.write,r=t.events;\"update\"!==s&&!y(r,s)||(n&&!y(xn.reads,a[e])&&(a[e]=xn.read(function(){var t=o._connected&&n.call(o,o._data,s);!1===t&&i?xn.clear(h[e]):T(t)&&X(o._data,t)})),i&&!y(xn.writes,h[e])&&(h[e]=xn.write(function(){return o._connected&&i.call(o,o._data,s)})))})},Yn=0,(Vn=Hn).prototype._init=function(t){(t=t||{}).data=function(t,e){var n=t.data,i=(t.el,e.args),r=e.props;if(void 0===r&&(r={}),n=$(n)?P(i)?void 0:n.slice(0,i.length).reduce(function(t,e,n){return T(e)?X(t,e):t[i[n]]=e,t},{}):n)for(var o in n)H(n[o])?delete n[o]:n[o]=r[o]?Qn(r[o],n[o]):n[o];return n}(t,this.constructor.options),this.$options=_n(this.constructor.options,t,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=Yn++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook(\"created\"),t.el&&this.$mount(t.el)},Vn.prototype._initData=function(){var t=this.$options.data;for(var e in void 0===t&&(t={}),t)this.$props[e]=this[e]=t[e]},Vn.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=l(t[e],this)},Vn.prototype._initComputeds=function(){var t=this.$options.computed;if(this._computeds={},t)for(var e in t)Gn(this,e,t[e])},Vn.prototype._callWatches=function(){var t=this.$options.computed,e=this._computeds;for(var n in e){var i=e[n];delete e[n],t[n].watch&&!q(i,this[n])&&t[n].watch.call(this,this[n],i)}},Vn.prototype._initProps=function(t){var e;for(e in t=t||Kn(this.$options,this.$name))H(t[e])||(this.$props[e]=t[e]);var n=[this.$options.computed,this.$options.methods];for(e in this.$props)e in t&&Zn(n,e)&&(this[e]=this.$props[e])},Vn.prototype._initEvents=function(){var n=this,t=this.$options.events;t&&t.forEach(function(t){if(c(t,\"handler\"))Jn(n,t);else for(var e in t)Jn(n,t[e],e)})},Vn.prototype._unbindEvents=function(){this._events.forEach(function(t){return t()}),this._events=[]},Vn.prototype._initObserver=function(){var n=this,t=this.$options,i=t.attrs,e=t.props,r=t.el;if(!this._observer&&e&&!1!==i){i=$(i)?i:Object.keys(e),this._observer=new MutationObserver(function(){var e=Kn(n.$options,n.$name);i.some(function(t){return!H(e[t])&&e[t]!==n.$props[t]})&&n.$reset()});var o=i.map(function(t){return d(t)}).concat(this.$name);this._observer.observe(r,{attributes:!0,attributeFilter:o.concat(o.map(function(t){return\"data-\"+t}))})}},qn=(Rn=Hn).data,Un={},Rn.component=function(s,t){if(!t)return T(Un[s])&&(Un[s]=Rn.extend(Un[s])),Un[s];Rn[s]=function(t,n){for(var e=arguments.length,i=Array(e);e--;)i[e]=arguments[e];var r=Rn.component(s);return T(t)?new r({data:t}):r.options.functional?new r({data:[].concat(i)}):t&&t.nodeType?o(t):Te(t).map(o)[0];function o(t){var e=Rn.getComponent(t,s);if(e){if(!n)return e;e.$destroy()}return new r({el:t,data:n})}};var e=T(t)?X({},t):t.options;if(e.name=s,e.install&&e.install(Rn,e,s),Rn._initialized&&!e.functional){var n=d(s);xn.read(function(){return Rn[s](\"[uk-\"+n+\"],[data-uk-\"+n+\"]\")})}return Un[s]=T(t)?e:t},Rn.getComponents=function(t){return t&&t[qn]||{}},Rn.getComponent=function(t,e){return Rn.getComponents(t)[e]},Rn.connect=function(t){if(t[qn])for(var e in t[qn])t[qn][e]._callConnected();for(var n=0;n<t.attributes.length;n++){var i=Pn(t.attributes[n].name);i&&i in Un&&Rn[i](t)}},Rn.disconnect=function(t){for(var e in t[qn])t[qn][e]._callDisconnected()},function(i){var r=i.data;i.prototype.$mount=function(t){var e=this.$options.name;t[r]||(t[r]={}),t[r][e]||((t[r][e]=this).$el=this.$options.el=this.$options.el||t,_t(t,document)&&this._callConnected())},i.prototype.$emit=function(t){this._callUpdate(t)},i.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},i.prototype.$destroy=function(t){void 0===t&&(t=!1);var e=this.$options,n=e.el,i=e.name;n&&this._callDisconnected(),this._callHook(\"destroy\"),n&&n[r]&&(delete n[r][i],P(n[r])||delete n[r],t&&ve(this.$el))},i.prototype.$create=function(t,e,n){return i[t](e,n)},i.prototype.$update=i.update,i.prototype.$getComponent=i.getComponent;var e={};Object.defineProperties(i.prototype,{$container:Object.getOwnPropertyDescriptor(i,\"container\"),$name:{get:function(){var t=this.$options.name;return e[t]||(e[t]=i.prefix+d(t)),e[t]}}})}(Hn);var ti={connected:function(){Me(this.$el,this.$name)||Ae(this.$el,this.$name)}},ei={props:{cls:Boolean,animation:\"list\",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:\"linear\",queued:!1,initProps:{overflow:\"\",height:\"\",paddingTop:\"\",paddingBottom:\"\",marginTop:\"\",marginBottom:\"\"},hideProps:{overflow:\"hidden\",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(t){return!!t.animation[0]},hasTransition:function(t){var e=t.animation;return this.hasAnimation&&!0===e[0]}},methods:{toggleElement:function(c,u,l){var d=this;return new Yt(function(t){c=V(c);function e(t){return Yt.all(t.map(function(t){return d._toggleElement(t,u,l)}))}var n,i=c.filter(function(t){return d.isToggled(t)}),r=c.filter(function(t){return!y(i,t)});if(d.queued&&H(l)&&H(u)&&d.hasAnimation&&!(c.length<2)){var o=document.body,s=o.scrollTop,a=i[0],h=Ze.inProgress(a)&&Me(a,\"uk-animation-leave\")||Ue.inProgress(a)&&\"0px\"===a.style.height;n=e(i),h||(n=n.then(function(){var t=e(r);return o.scrollTop=s,t}))}else n=e(r.concat(i));n.then(t,Q)})},toggleNow:function(e,n){var i=this;return new Yt(function(t){return Yt.all(V(e).map(function(t){return i._toggleElement(t,n,!1)})).then(t,Q)})},isToggled:function(t){var e=V(t||this.$el);return this.cls?Me(e,this.cls.split(\" \")[0]):!rt(e,\"hidden\")},updateAria:function(t){!1===this.cls&&it(t,\"aria-hidden\",!this.isToggled(t))},_toggleElement:function(t,e,n){var i=this;if(e=O(e)?e:Ze.inProgress(t)?Me(t,\"uk-animation-leave\"):Ue.inProgress(t)?\"0px\"===t.style.height:!this.isToggled(t),!Bt(t,\"before\"+(e?\"show\":\"hide\"),[this]))return Yt.reject();var r=(I(n)?n:!1!==n&&this.hasAnimation?this.hasTransition?function(t){var s=t.isToggled,a=t.duration,h=t.initProps,c=t.hideProps,u=t.transition,l=t._toggle;return function(t,e){var n=Ue.inProgress(t),i=t.hasChildNodes?j(He(t.firstElementChild,\"marginTop\"))+j(He(t.lastElementChild,\"marginBottom\")):0,r=Et(t)?on(t)+(n?0:i):0;Ue.cancel(t),s(t)||l(t,!0),on(t,\"\"),xn.flush();var o=on(t)+(n?0:i);return on(t,r),(e?Ue.start(t,X({},h,{overflow:\"hidden\",height:o}),Math.round(a*(1-r/o)),u):Ue.start(t,c,Math.round(a*(r/o)),u).then(function(){return l(t,!1)})).then(function(){return He(t,h)})}}(this):function(t){var n=t.animation,i=t.duration,r=t.origin,o=t._toggle;return function(t,e){return Ze.cancel(t),e?(o(t,!0),Ze.in(t,n[0],i,r)):Ze.out(t,n[1]||n[0],i,r).then(function(){return o(t,!1)})}}(this):this._toggle)(t,e);Bt(t,e?\"show\":\"hide\",[this]);function o(){Bt(t,e?\"shown\":\"hidden\",[i]),i.$update(t)}return r?r.then(o):Yt.resolve(o())},_toggle:function(t,e){var n;t&&(e=Boolean(e),this.cls?(n=y(this.cls,\" \")||e!==Me(t,this.cls))&&Oe(t,this.cls,y(this.cls,\" \")?void 0:e):(n=e===rt(t,\"hidden\"))&&it(t,\"hidden\",e?null:\"\"),Te(\"[autofocus]\",t).some(function(t){return Et(t)?t.focus()||!0:t.blur()}),this.updateAria(t),n&&this.$update(t))}}};var ni={mixins:[ti,ei],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:\"> *\",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:\"uk-open\",toggle:\"> .uk-accordion-title\",content:\"> .uk-accordion-content\",transition:\"ease\"},computed:{items:function(t,e){return Te(t.targets,e)}},events:[{name:\"click\",delegate:function(){return this.targets+\" \"+this.$props.toggle},handler:function(t){t.preventDefault(),this.toggle(ce(Te(this.targets+\" \"+this.$props.toggle,this.$el),t.current))}}],connected:function(){if(!1!==this.active){var t=this.items[Number(this.active)];t&&!Me(t,this.clsOpen)&&this.toggle(t,!1)}},update:function(){var e=this;this.items.forEach(function(t){return e._toggle(Se(e.content,t),Me(t,e.clsOpen))});var t=!this.collapsible&&!Me(this.items,this.clsOpen)&&this.items[0];t&&this.toggle(t,!1)},methods:{toggle:function(r,o){var s=this,t=ue(r,this.items),a=Nt(this.items,\".\"+this.clsOpen);(r=this.items[t])&&[r].concat(!this.multiple&&!y(a,r)&&a||[]).forEach(function(t){var e=t===r,n=e&&!Me(t,s.clsOpen);if(n||!e||s.collapsible||!(a.length<2)){Oe(t,s.clsOpen,n);var i=t._wrapper?t._wrapper.firstElementChild:Se(s.content,t);t._wrapper||(t._wrapper=we(i,\"<div>\"),it(t._wrapper,\"hidden\",n?\"\":null)),s._toggle(i,!0),s.toggleElement(t._wrapper,n,o).then(function(){Me(t,s.clsOpen)===n&&(n||s._toggle(i,!1),t._wrapper=null,ye(i))})}})}}},ii={mixins:[ti,ei],args:\"animation\",props:{close:String},data:{animation:[!0],selClose:\".uk-alert-close\",duration:150,hideProps:X({opacity:0},ei.data.hideProps)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.close()}}],methods:{close:function(){var t=this;this.toggleElement(this.$el).then(function(){return t.$destroy(!0)})}}};function ri(r){he(function(){var n;r.update(),Mt(window,\"load resize\",function(){return r.update(null,\"resize\")}),Mt(document,\"loadedmetadata load\",function(t){var e=t.target;return r.update(e,\"resize\")},!0),Mt(window,\"scroll\",function(t){if(!n){n=!0,xn.write(function(){return n=!1});var e=t.target;r.update(1!==e.nodeType?document.body:e,t.type)}},{passive:!0,capture:!0});var e,i=0;Mt(document,\"animationstart\",function(t){var e=t.target;(He(e,\"animationName\")||\"\").match(/^uk-.*(left|right)/)&&(i++,He(document.body,\"overflowX\",\"hidden\"),setTimeout(function(){--i||He(document.body,\"overflowX\",\"\")},R(He(e,\"animationDuration\"))+100))},!0),Mt(document,ne,function(t){if(e&&e(),jt(t)){var r=Wt(t),o=\"tagName\"in t.target?t.target:t.target.parentNode;e=Dt(document,re,function(t){var e=Wt(t),n=e.x,i=e.y;(o&&n&&100<Math.abs(r.x-n)||i&&100<Math.abs(r.y-i))&&setTimeout(function(){Bt(o,\"swipe\"),Bt(o,\"swipe\"+function(t,e,n,i){return Math.abs(t-n)>=Math.abs(e-i)?0<t-n?\"Left\":\"Right\":0<e-i?\"Up\":\"Down\"}(r.x,r.y,n,i))})})}},{passive:!0})})}var oi,si,ai={args:\"autoplay\",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(t){return\"inview\"===t.autoplay}},connected:function(){this.inView&&!rt(this.$el,\"preload\")&&(this.$el.preload=\"none\"),this.player=new On(this.$el),this.automute&&this.player.mute()},update:{read:function(){return!!this.player&&{visible:Et(this.$el)&&\"hidden\"!==He(this.$el,\"visibility\"),inView:this.inView&&fn(this.$el)}},write:function(t){var e=t.visible,n=t.inView;!e||this.inView&&!n?this.player.pause():(!0===this.autoplay||this.inView&&n)&&this.player.play()},events:[\"resize\",\"scroll\"]}},hi={mixins:[ti,ai],props:{width:Number,height:Number},data:{automute:!0},update:{read:function(){var t=this.$el;if(!Et(t))return!1;var e=t.parentNode;return{height:e.offsetHeight,width:e.offsetWidth}},write:function(t){var e=t.height,n=t.width,i=this.$el,r=this.width||i.naturalWidth||i.videoWidth||i.clientWidth,o=this.height||i.naturalHeight||i.videoHeight||i.clientHeight;r&&o&&He(i,nt.cover({width:r,height:o},{width:n+(n%2?1:0),height:e+(e%2?1:0)}))},events:[\"resize\"]}},ci={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:\"bottom-\"+(Zt?\"right\":\"left\"),flip:!0,offset:!1,clsPos:\"\"},computed:{pos:function(t){var e=t.pos;return(e+(y(e,\"-\")?\"\":\"-center\")).split(\"-\")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(t,e,n){var i;Ne(t,this.clsPos+\"-(top|bottom|left|right)(-[a-z]+)?\"),He(t,{top:\"\",left:\"\"});var r=this.offset,o=this.getAxis();z(r)||(r=(i=Se(r))?en(i)[\"x\"===o?\"left\":\"top\"]-en(e)[\"x\"===o?\"right\":\"bottom\"]:0);var s=tn(t,e,\"x\"===o?dn(this.dir)+\" \"+this.align:this.align+\" \"+dn(this.dir),\"x\"===o?this.dir+\" \"+this.align:this.align+\" \"+this.dir,\"x\"===o?\"\"+(\"left\"===this.dir?-r:r):\" \"+(\"top\"===this.dir?-r:r),null,this.flip,n).target,a=s.x,h=s.y;this.dir=\"x\"===o?a:h,this.align=\"x\"===o?h:a,Oe(t,this.clsPos+\"-\"+this.dir+\"-\"+this.align,!1===this.offset)},getAxis:function(){return\"top\"===this.dir||\"bottom\"===this.dir?\"y\":\"x\"}}},ui={mixins:[ci,ei],args:\"pos\",props:{mode:\"list\",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:[\"click\",\"hover\"],toggle:\"- *\",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:[\"uk-animation-fade\"],cls:\"uk-open\"},computed:{boundary:function(t,e){return at(t.boundary,e)},clsDrop:function(t){return t.clsDrop||\"uk-\"+this.$options.name},clsPos:function(){return this.clsDrop}},created:function(){this.tracker=new Tn},connected:function(){Ae(this.$el,this.clsDrop);var t=this.$props.toggle;this.toggle=t&&this.$create(\"toggle\",at(t,this.$el),{target:this.$el,mode:this.mode}),this.toggle||Bt(this.$el,\"updatearia\")},events:[{name:\"click\",delegate:function(){return\".\"+this.clsDrop+\"-close\"},handler:function(t){t.preventDefault(),this.hide(!1)}},{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.target.hash;e||t.preventDefault(),e&&_t(e,this.$el)||this.hide(!1)}},{name:\"beforescroll\",handler:function(){this.hide(!1)}},{name:\"toggle\",self:!0,handler:function(t,e){t.preventDefault(),this.isToggled()?this.hide(!1):this.show(e,!1)}},{name:oe,filter:function(){return y(this.mode,\"hover\")},handler:function(t){jt(t)||(oi&&oi!==this&&oi.toggle&&y(oi.toggle.mode,\"hover\")&&!_t(t.target,oi.toggle.$el)&&!et({x:t.pageX,y:t.pageY},en(oi.$el))&&oi.hide(!1),t.preventDefault(),this.show(this.toggle))}},{name:\"toggleshow\",handler:function(t,e){e&&!y(e.target,this.$el)||(t.preventDefault(),this.show(e||this.toggle))}},{name:\"togglehide \"+se,handler:function(t,e){jt(t)||e&&!y(e.target,this.$el)||(t.preventDefault(),this.toggle&&y(this.toggle.mode,\"hover\")&&this.hide())}},{name:\"beforeshow\",self:!0,handler:function(){this.clearTimers(),Ze.cancel(this.$el),this.position()}},{name:\"show\",self:!0,handler:function(){this.tracker.init(),Bt(this.$el,\"updatearia\"),function(){if(si)return;si=!0,Mt(document,re,function(t){var e,n=t.target;if(!t.defaultPrevented)for(;oi&&oi!==e&&!_t(n,oi.$el)&&(!oi.toggle||!_t(n,oi.toggle.$el));)(e=oi).hide(!1)})}()}},{name:\"beforehide\",self:!0,handler:function(){this.clearTimers()}},{name:\"hide\",handler:function(t){var e=t.target;this.$el===e?(oi=this.isActive()?null:oi,Bt(this.$el,\"updatearia\"),this.tracker.cancel()):oi=null===oi&&_t(e,this.$el)&&this.isToggled()?this:oi}},{name:\"updatearia\",self:!0,handler:function(t,e){t.preventDefault(),this.updateAria(this.$el),(e||this.toggle)&&(it((e||this.toggle).$el,\"aria-expanded\",this.isToggled()?\"true\":\"false\"),Oe(this.toggle.$el,this.cls,this.isToggled()))}}],update:{write:function(){this.isToggled()&&!Ze.inProgress(this.$el)&&this.position()},events:[\"resize\"]},methods:{show:function(e,n){var i=this;void 0===n&&(n=!0);function r(){return!i.isToggled()&&i.toggleElement(i.$el,!0)}function t(){if(i.toggle=e||i.toggle,i.clearTimers(),!i.isActive())if(n&&oi&&oi!==i&&oi.isDelaying)i.showTimer=setTimeout(i.show,10);else{if(i.isParentOf(oi)){if(!oi.hideTimer)return;oi.hide(!1)}else if(oi&&i.isChildOf(oi))oi.clearTimers();else if(oi&&!i.isChildOf(oi)&&!i.isParentOf(oi))for(var t;oi&&oi!==t&&!i.isChildOf(oi);)(t=oi).hide(!1);n&&i.delayShow?i.showTimer=setTimeout(r,i.delayShow):r(),oi=i}}e&&this.toggle&&e.$el!==this.toggle.$el?(Dt(this.$el,\"hide\",t),this.hide(!1)):t()},hide:function(t){var e=this;void 0===t&&(t=!0);function n(){return e.toggleNow(e.$el,!1)}this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),t&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):t&&this.delayHide?this.hideTimer=setTimeout(n,this.delayHide):n()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return oi===this},isChildOf:function(t){return t&&t!==this&&_t(this.$el,t.$el)},isParentOf:function(t){return t&&t!==this&&_t(t.$el,this.$el)},position:function(){Ne(this.$el,this.clsDrop+\"-(stack|boundary)\"),He(this.$el,{top:\"\",left:\"\",display:\"block\"}),Oe(this.$el,this.clsDrop+\"-boundary\",this.boundaryAlign);var t=en(this.boundary),e=this.boundaryAlign?t:en(this.toggle.$el);if(\"justify\"===this.align){var n=\"y\"===this.getAxis()?\"width\":\"height\";He(this.$el,n,e[n])}else this.$el.offsetWidth>Math.max(t.right-e.left,e.right-t.left)&&Ae(this.$el,this.clsDrop+\"-stack\");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),He(this.$el,\"display\",\"\")}}};var li={extends:ui},di={mixins:[ti],args:\"target\",props:{target:Boolean},data:{target:!1},computed:{input:function(t,e){return Se(At,e)},state:function(){return this.input.nextElementSibling},target:function(t,e){var n=t.target;return n&&(!0===n&&this.input.parentNode===e&&this.input.nextElementSibling||at(n,e))}},update:function(){var t=this.target,e=this.input;if(t){var n,i=Ct(t)?\"value\":\"textContent\",r=t[i],o=e.files&&e.files[0]?e.files[0].name:bt(e,\"select\")&&(n=Te(\"option\",e).filter(function(t){return t.selected})[0])?n.textContent:e.value;r!==o&&(t[i]=o)}},events:[{name:\"change\",handler:function(){this.$emit()}},{name:\"reset\",el:function(){return xt(this.$el,\"form\")},handler:function(){this.$emit()}}]},fi={update:{read:function(t){var e=fn(this.$el);if(!e||t.isInView===e)return!1;t.isInView=e},write:function(){this.$el.src=this.$el.src},events:[\"scroll\",\"resize\"]}},pi={props:{margin:String,firstColumn:Boolean},data:{margin:\"uk-margin-small-top\",firstColumn:\"uk-first-column\"},update:{read:function(t){var e=this.$el.children;if(!e.length||!Et(this.$el))return t.rows=[[]];t.rows=mi(e),t.stacks=!t.rows.some(function(t){return 1<t.length})},write:function(t){var i=this;t.rows.forEach(function(t,n){return t.forEach(function(t,e){Oe(t,i.margin,0!==n),Oe(t,i.firstColumn,0===e)})})},events:[\"resize\"]}};function mi(t){for(var e=[[]],n=0;n<t.length;n++){var i=t[n],r=gi(i);if(r.height)for(var o=e.length-1;0<=o;o--){var s=e[o];if(!s[0]){s.push(i);break}var a=void 0;if(a=s[0].offsetParent===i.offsetParent?gi(s[0]):(r=gi(i,!0),gi(s[0],!0)),r.top>=a.bottom-1){e.push([i]);break}if(r.bottom>a.top){if(r.left<a.left&&!Zt){s.unshift(i);break}s.push(i);break}if(0===o){e.unshift([i]);break}}}return e}function gi(t,e){var n;void 0===e&&(e=!1);var i=t.offsetTop,r=t.offsetLeft,o=t.offsetHeight;return e&&(i=(n=gn(t))[0],r=n[1]),{top:i,left:r,height:o,bottom:i+o}}var vi={extends:pi,mixins:[ti],name:\"grid\",props:{masonry:Boolean,parallax:Number},data:{margin:\"uk-grid-margin\",clsStack:\"uk-grid-stack\",masonry:!1,parallax:0},computed:{length:function(t,e){return e.children.length},parallax:function(t){var e=t.parallax;return e&&this.length?Math.abs(e):\"\"}},connected:function(){this.masonry&&Ae(this.$el,\"uk-flex-top uk-flex-wrap-top\")},update:[{read:function(t){var r=t.rows;(this.masonry||this.parallax)&&(r=r.map(function(t){return G(t,\"offsetLeft\")}),Zt&&r.map(function(t){return t.reverse()}));var e=r.some(function(t){return t.some(Ue.inProgress)}),n=!1,i=\"\";if(this.masonry&&this.length){var o=0;n=r.reduce(function(n,t,i){return n[i]=t.map(function(t,e){return 0===i?0:j(n[i-1][e])+(o-j(r[i-1][e]&&r[i-1][e].offsetHeight))}),o=t.reduce(function(t,e){return Math.max(t,e.offsetHeight)},0),n},[]),i=function(t){return Math.max.apply(Math,t.reduce(function(n,t){return t.forEach(function(t,e){return n[e]=(n[e]||0)+t.offsetHeight}),n},[]))}(r)+function(t,e){var n=V(t.children),i=n.filter(function(t){return Me(t,e)})[0];return j(i?He(i,\"marginTop\"):He(n[0],\"paddingLeft\"))}(this.$el,this.margin)*(r.length-1)}return{rows:r,translates:n,height:!e&&i}},write:function(t){var e=t.stacks,n=t.height;Oe(this.$el,this.clsStack,e),He(this.$el,\"paddingBottom\",this.parallax),!1!==n&&He(this.$el,\"height\",n)},events:[\"resize\"]},{read:function(t){var e=t.height;return{scrolled:!!this.parallax&&pn(this.$el,e?e-on(this.$el):0)*this.parallax}},write:function(t){var e=t.rows,i=t.scrolled,r=t.translates;!1===i&&!r||e.forEach(function(t,n){return t.forEach(function(t,e){return He(t,\"transform\",i||r?\"translateY(\"+((r&&-r[n][e])+(i?e%2?i:i/8:0))+\"px)\":\"\")})})},events:[\"scroll\",\"resize\"]}]};var wi=Jt?{data:{selMinHeight:!1,forceHeight:!1},computed:{elements:function(t,e){var n=t.selMinHeight;return n?Te(n,e):[e]}},update:[{read:function(){He(this.elements,\"height\",\"\")},order:-5,events:[\"resize\"]},{write:function(){var n=this;this.elements.forEach(function(t){var e=j(He(t,\"minHeight\"));e&&(n.forceHeight||Math.round(e+hn(\"height\",t,\"content-box\"))>=t.offsetHeight)&&He(t,\"height\",e)})},order:5,events:[\"resize\"]}]}:{},bi={mixins:[wi],args:\"target\",props:{target:String,row:Boolean},data:{target:\"> *\",row:!0,forceHeight:!0},computed:{elements:function(t,e){return Te(t.target,e)}},update:{read:function(){return{rows:(this.row?mi(this.elements):[this.elements]).map(yi)}},write:function(t){t.rows.forEach(function(t){var n=t.heights;return t.elements.forEach(function(t,e){return He(t,\"minHeight\",n[e])})})},events:[\"resize\"]}};function yi(t){var e;if(t.length<2)return{heights:[\"\"],elements:t};var n=xi(t),i=n.heights,r=n.max,o=t.some(function(t){return t.style.minHeight}),s=t.some(function(t,e){return!t.style.minHeight&&i[e]<r});return o&&s&&(He(t,\"minHeight\",\"\"),e=xi(t),i=e.heights,r=e.max),{heights:i=t.map(function(t,e){return i[e]===r&&j(t.style.minHeight).toFixed(2)!==r.toFixed(2)?\"\":r}),elements:t}}function xi(t){var e=t.map(function(t){return en(t).height-hn(\"height\",t,\"content-box\")});return{heights:e,max:Math.max.apply(null,e)}}var ki={mixins:[wi],props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{read:function(t){var e=t.minHeight,n=\"\",i=hn(\"height\",this.$el,\"content-box\");if(this.expand)n=on(window)-($i(document.documentElement)-$i(this.$el))-i||\"\";else{if(n=\"calc(100vh\",this.offsetTop){var r=en(this.$el).top;n+=r<on(window)/2?\" - \"+r+\"px\":\"\"}!0===this.offsetBottom?n+=\" - \"+$i(this.$el.nextElementSibling)+\"px\":z(this.offsetBottom)?n+=\" - \"+this.offsetBottom+\"vh\":this.offsetBottom&&u(this.offsetBottom,\"px\")?n+=\" - \"+j(this.offsetBottom)+\"px\":D(this.offsetBottom)&&(n+=\" - \"+$i(at(this.offsetBottom,this.$el))+\"px\"),n+=(i?\" - \"+i+\"px\":\"\")+\")\"}return{minHeight:n,prev:e}},write:function(t){var e=t.minHeight,n=t.prev;He(this.$el,{minHeight:e}),e!==n&&this.$update(this.$el,\"resize\"),this.minHeight&&j(He(this.$el,\"minHeight\"))<this.minHeight&&He(this.$el,\"minHeight\",this.minHeight)},events:[\"resize\"]}};function $i(t){return t&&t.offsetHeight||0}var Ii={args:\"src\",props:{id:Boolean,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String,strokeAnimation:Boolean,attributes:\"list\"},data:{ratio:1,include:[\"style\",\"class\"],class:\"\",strokeAnimation:!1},beforeConnect:function(){var t,e=this;if(this.class+=\" uk-svg\",!this.icon&&y(this.src,\"#\")){var n=this.src.split(\"#\");1<n.length&&(t=n,this.src=t[0],this.icon=t[1])}this.svg=this.getSvg().then(function(t){return e.applyAttributes(t),e.svgEl=function(t,e){{if(Tt(e)||\"CANVAS\"===e.tagName){it(e,\"hidden\",!0);var n=e.nextElementSibling;return Ci(t,n)?n:me(e,t)}var i=e.lastElementChild;return Ci(t,i)?i:fe(e,t)}}(t,e.$el)},Q)},disconnected:function(){var e=this;Tt(this.$el)&&it(this.$el,\"hidden\",null),this.svg&&this.svg.then(function(t){return(!e._connected||t!==e.svgEl)&&ve(t)},Q),this.svg=this.svgEl=null},update:{read:function(){return!!(this.strokeAnimation&&this.svgEl&&Et(this.svgEl))},write:function(){!function(t){var e=Ai(t);e&&t.style.setProperty(\"--uk-animation-stroke\",e)}(this.svgEl)},type:[\"resize\"]},methods:{getSvg:function(){var e=this;return function(n){if(Si[n])return Si[n];return Si[n]=new Yt(function(e,t){n?w(n,\"data:\")?e(decodeURIComponent(n.split(\",\")[1])):Kt(n).then(function(t){return e(t.response)},function(){return t(\"SVG not found.\")}):t()})}(this.src).then(function(t){return function(t,e){e&&y(t,\"<symbol\")&&(t=function(t,e){if(!Ei[t]){var n;for(Ei[t]={};n=Ti.exec(t);)Ei[t][n[3]]='<svg xmlns=\"http://www.w3.org/2000/svg\"'+n[1]+\"svg>\";Ti.lastIndex=0}return Ei[t][e]}(t,e)||t);return(t=Se(t.substr(t.indexOf(\"<svg\"))))&&t.hasChildNodes()&&t}(t,e.icon)||Yt.reject(\"SVG not found.\")})},applyAttributes:function(n){var i=this;for(var t in this.$options.props)this[t]&&y(this.include,t)&&it(n,t,this[t]);for(var e in this.attributes){var r=this.attributes[e].split(\":\",2),o=r[0],s=r[1];it(n,o,s)}this.id||ot(n,\"id\");var a=[\"width\",\"height\"],h=[this.width,this.height];h.some(function(t){return t})||(h=a.map(function(t){return it(n,t)}));var c=it(n,\"viewBox\");c&&!h.some(function(t){return t})&&(h=c.split(\" \").slice(2)),h.forEach(function(t,e){(t=(0|t)*i.ratio)&&it(n,a[e],t),t&&!h[1^e]&&ot(n,a[1^e])}),it(n,\"data-svg\",this.icon||this.src)}}},Si={};var Ti=/<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g,Ei={};function Ai(t){return Math.ceil(Math.max.apply(Math,Te(\"[stroke]\",t).map(function(t){return t.getTotalLength&&t.getTotalLength()||0}).concat([0])))}function Ci(t,e){return it(t,\"data-svg\")===it(e,\"data-svg\")}var Ni={},_i={spinner:'<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>',totop:'<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>',marker:'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>',\"close-icon\":'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>',\"close-large\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>',\"navbar-toggle-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>',\"overlay-icon\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>',\"pagination-next\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>',\"pagination-previous\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>',\"search-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>',\"search-large\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>',\"search-navbar\":'<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>',\"slidenav-next\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>',\"slidenav-next-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>',\"slidenav-previous\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>',\"slidenav-previous-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>'},Mi={install:function(r){r.icon.add=function(t,e){var n,i=D(t)?((n={})[t]=e,n):t;K(i,function(t,e){_i[e]=t,delete Ni[e]}),r._initialized&&Ie(document.body,function(t){return K(r.getComponents(t),function(t){t.$options.isIcon&&t.icon in i&&t.$reset()})})}},extends:Ii,args:\"icon\",props:[\"icon\"],data:{include:[]},isIcon:!0,beforeConnect:function(){Ae(this.$el,\"uk-icon\")},methods:{getSvg:function(){var t=function(t){if(!_i[t])return null;Ni[t]||(Ni[t]=Se(_i[t].trim()));return Ni[t].cloneNode(!0)}(function(t){return Zt?U(U(t,\"left\",\"right\"),\"previous\",\"next\"):t}(this.icon));return t?Yt.resolve(t):Yt.reject(\"Icon not found.\")}}},Oi={args:!1,extends:Mi,data:function(t){return{icon:d(t.constructor.options.name)}},beforeConnect:function(){Ae(this.$el,this.$name)}},Di={extends:Oi,beforeConnect:function(){Ae(this.$el,\"uk-slidenav\")},computed:{icon:function(t,e){var n=t.icon;return Me(e,\"uk-slidenav-large\")?n+\"-large\":n}}},Bi={extends:Oi,computed:{icon:function(t,e){var n=t.icon;return Me(e,\"uk-search-icon\")&&kt(e,\".uk-search-large\").length?\"search-large\":kt(e,\".uk-search-navbar\").length?\"search-navbar\":n}}},zi={extends:Oi,computed:{icon:function(){return\"close-\"+(Me(this.$el,\"uk-close-large\")?\"large\":\"icon\")}}},Pi={extends:Oi,connected:function(){var e=this;this.svg.then(function(t){return 1!==e.ratio&&He(Se(\"circle\",t),\"strokeWidth\",1/e.ratio)},Q)}};var Hi={args:\"dataSrc\",props:{dataSrc:String,dataSrcset:Boolean,sizes:String,width:Number,height:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:\"\",dataSrcset:!1,sizes:!1,width:!1,height:!1,offsetTop:\"50vh\",offsetLeft:0,target:!1},computed:{cacheKey:function(t){var e=t.dataSrc;return this.$name+\".\"+e},width:function(t){var e=t.width,n=t.dataWidth;return e||n},height:function(t){var e=t.height,n=t.dataHeight;return e||n},sizes:function(t){var e=t.sizes,n=t.dataSizes;return e||n},isImg:function(t,e){return Ri(e)},target:{get:function(t){var e=t.target;return[this.$el].concat(ht(e,this.$el))},watch:function(){this.observe()}},offsetTop:function(t){return vn(t.offsetTop,\"height\")},offsetLeft:function(t){return vn(t.offsetLeft,\"width\")}},connected:function(){Ui[this.cacheKey]?Li(this.$el,Ui[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&Li(this.$el,function(t,e,n){var i;n&&(i=nt.ratio({width:t,height:e},\"width\",vn(ji(n))),t=i.width,e=i.height);return'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"'+t+'\" height=\"'+e+'\"></svg>'}(this.width,this.height,this.sizes)),this.observer=new zn(this.load,{rootMargin:this.offsetTop+\"px \"+this.offsetLeft+\"px\"}),requestAnimationFrame(this.observe)},disconnected:function(){this.observer.disconnect()},update:{read:function(t){var e=this,n=t.image;if(n||\"complete\"!==document.readyState||this.load(this.observer.takeRecords()),this.isImg)return!1;n&&n.then(function(t){return t&&\"\"!==t.currentSrc&&Li(e.$el,qi(t))})},write:function(t){if(this.dataSrcset&&1!==window.devicePixelRatio){var e=He(this.$el,\"backgroundSize\");!e.match(/^(auto\\s?)+$/)&&j(e)!==t.bgSize||(t.bgSize=function(t,e){var n=vn(ji(e)),i=(t.match(Yi)||[]).map(j).sort(function(t,e){return t-e});return i.filter(function(t){return n<=t})[0]||i.pop()||\"\"}(this.dataSrcset,this.sizes),He(this.$el,\"backgroundSize\",t.bgSize+\"px\"))}},events:[\"resize\"]},methods:{load:function(t){var e=this;t.some(function(t){return t.isIntersecting})&&(this._data.image=Gt(this.dataSrc,this.dataSrcset,this.sizes).then(function(t){return Li(e.$el,qi(t),t.srcset,t.sizes),Ui[e.cacheKey]=qi(t),t},Q),this.observer.disconnect())},observe:function(){var e=this;!this._data.image&&this._connected&&this.target.forEach(function(t){return e.observer.observe(t)})}}};function Li(t,e,n,i){if(Ri(t))i&&(t.sizes=i),n&&(t.srcset=n),e&&(t.src=e);else if(e){!y(t.style.backgroundImage,e)&&(He(t,\"backgroundImage\",\"url(\"+It(e)+\")\"),Bt(t,zt(\"load\",!1)))}}var Fi=/\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;function ji(t){var e,n;for(Fi.lastIndex=0;e=Fi.exec(t);)if(!e[1]||window.matchMedia(e[1]).matches){e=w(n=e[2],\"calc\")?n.substring(5,n.length-1).replace(Wi,function(t){return vn(t)}).replace(/ /g,\"\").match(Vi).reduce(function(t,e){return t+ +e},0):n;break}return e||\"100vw\"}var Wi=/\\d+(?:\\w+|%)/g,Vi=/[+-]?(\\d+)/g;var Yi=/\\s+\\d+w\\s*(?:,|$)/g;function Ri(t){return\"IMG\"===t.tagName}function qi(t){return t.currentSrc||t.src}var Ui,Xi=\"__test__\";try{(Ui=window.sessionStorage||{})[Xi]=1,delete Ui[Xi]}catch(t){Ui={}}var Ki={props:{media:Boolean},data:{media:!1},computed:{matchMedia:function(){var t=function(t){if(D(t)){if(\"@\"===t[0])t=j(We(\"breakpoint-\"+t.substr(1)));else if(isNaN(t))return t}return!(!t||isNaN(t))&&\"(min-width: \"+t+\"px)\"}(this.media);return!t||window.matchMedia(t).matches}}};var Gi,Ji,Zi={mixins:[ti,Ki],props:{fill:String},data:{fill:\"\",clsWrapper:\"uk-leader-fill\",clsHide:\"uk-leader-hide\",attrFill:\"data-fill\"},computed:{fill:function(t){return t.fill||We(\"leader-fill-content\")}},connected:function(){var t;t=be(this.$el,'<span class=\"'+this.clsWrapper+'\">'),this.wrapper=t[0]},disconnected:function(){ye(this.wrapper.childNodes)},update:{read:function(t){var e=t.changed,n=t.width,i=n;return{width:n=Math.floor(this.$el.offsetWidth/2),fill:this.fill,changed:e||i!==n,hide:!this.matchMedia}},write:function(t){Oe(this.wrapper,this.clsHide,t.hide),t.changed&&(t.changed=!1,it(this.wrapper,this.attrFill,new Array(t.width).join(t.fill)))},events:[\"resize\"]}},Qi={props:{container:Boolean},data:{container:!0},computed:{container:function(t){var e=t.container;return!0===e&&this.$container||e&&Se(e)}}},tr={mixins:[ti,Qi,ei],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:\"uk-open\",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(t,e){return Se(t.selPanel,e)},transitionElement:function(){return this.panel},bgClose:function(t){return t.bgClose&&this.panel}},beforeDisconnect:function(){this.isToggled()&&this.toggleNow(this.$el,!1)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.hide()}},{name:\"toggle\",self:!0,handler:function(t){t.defaultPrevented||(t.preventDefault(),this.toggle())}},{name:\"beforeshow\",self:!0,handler:function(t){var n=Gi&&Gi!==this&&Gi;Gi=this,n?this.stack?this.prev=n:((Gi=n).isToggled()?n.hide().then(this.show):Dt(n.$el,\"beforeshow hidden\",this.show,!1,function(t){var e=t.target;return\"hidden\"===t.type&&e===n.$el}),t.preventDefault()):function(){if(Ji)return;Ji=[Mt(document,re,function(t){var e=t.target,n=t.defaultPrevented;!Gi||!Gi.bgClose||n||Gi.overlay&&!_t(e,Gi.$el)||_t(e,Gi.panel)||Gi.hide()}),Mt(document,\"keydown\",function(t){27===t.keyCode&&Gi&&Gi.escClose&&(t.preventDefault(),Gi.hide())})]}()}},{name:\"show\",self:!0,handler:function(){Me(document.documentElement,this.clsPage)||(this.scrollbarWidth=sn(window)-sn(document),He(document.body,\"overflowY\",this.scrollbarWidth&&this.overlay?\"scroll\":\"\")),Ae(document.documentElement,this.clsPage)}},{name:\"hide\",self:!0,handler:function(){Gi&&(Gi!==this||this.prev)||(Ji&&Ji.forEach(function(t){return t()}),Ji=null)}},{name:\"hidden\",self:!0,handler:function(){var t,e=this.prev;if(Gi=Gi&&Gi!==this&&Gi||e)for(;e;){if(e.clsPage===this.clsPage){t=!0;break}e=e.prev}else He(document.body,\"overflowY\",\"\");t||Ce(document.documentElement,this.clsPage)}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){var e=this;return this.isToggled()?Yt.resolve():this.container&&this.$el.parentNode!==this.container?(fe(this.container,this.$el),new Yt(function(t){return requestAnimationFrame(function(){return e.show().then(t)})})):this.toggleElement(this.$el,!0,er(this))},hide:function(){return this.isToggled()?this.toggleElement(this.$el,!1,er(this)):Yt.resolve()},getActive:function(){return Gi}}};function er(t){var r=t.transitionElement,o=t._toggle;return function(n,i){return new Yt(function(t,e){return Dt(n,\"show hide\",function(){n._reject&&n._reject(),n._reject=e,o(n,i),R(He(r,\"transitionDuration\"))?Dt(r,\"transitionend\",t,!1,function(t){return t.target===r}):t()})})}}var nr={install:function(a){a.modal.dialog=function(t,e){var n=a.modal(' <div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">'+t+\"</div> </div> \",e);return n.show(),Mt(n.$el,\"hidden\",function(t){t.target===t.currentTarget&&Yt.resolve(function(){return n.$destroy(!0)})}),n},a.modal.alert=function(e,n){return n=X({bgClose:!1,escClose:!1,labels:a.modal.labels},n),new Yt(function(t){return Mt(a.modal.dialog(' <div class=\"uk-modal-body\">'+(D(e)?e:de(e))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>'+n.labels.ok+\"</button> </div> \",n).$el,\"hide\",t)})},a.modal.confirm=function(r,o){return o=X({bgClose:!1,escClose:!0,labels:a.modal.labels},o),new Yt(function(e,t){var n=a.modal.dialog(' <form> <div class=\"uk-modal-body\">'+(D(r)?r:de(r))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+o.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\" autofocus>'+o.labels.ok+\"</button> </div> </form> \",o),i=!1;Mt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(),i=!0,n.hide()}),Mt(n.$el,\"hide\",function(){i||t()})})},a.modal.prompt=function(t,o,s){return s=X({bgClose:!1,escClose:!0,labels:a.modal.labels},s),new Yt(function(e){var n=a.modal.dialog(' <form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>'+(D(t)?t:de(t))+'</label> <input class=\"uk-input\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+s.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\">'+s.labels.ok+\"</button> </div> </form> \",s),i=Se(\"input\",n.$el);i.value=o;var r=!1;Mt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(i.value),r=!0,n.hide()}),Mt(n.$el,\"hide\",function(){r||e(null)})})},a.modal.labels={ok:\"Ok\",cancel:\"Cancel\"}},mixins:[tr],data:{clsPage:\"uk-modal-page\",selPanel:\".uk-modal-dialog\",selClose:\".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full\"},events:[{name:\"show\",self:!0,handler:function(){Me(this.panel,\"uk-margin-auto-vertical\")?Ae(this.$el,\"uk-flex\"):He(this.$el,\"display\",\"block\"),on(this.$el)}},{name:\"hidden\",self:!0,handler:function(){He(this.$el,\"display\",\"\"),Ce(this.$el,\"uk-flex\")}}]};var ir={extends:ni,data:{targets:\"> .uk-parent\",toggle:\"> a\",content:\"> ul\"}},rr={mixins:[ti,wi],props:{dropdown:String,mode:\"list\",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:\".uk-navbar-nav > li\",align:Zt?\"right\":\"left\",clsDrop:\"uk-navbar-dropdown\",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:\"x\",boundary:!0,dropbar:!1,dropbarMode:\"slide\",dropbarAnchor:!1,duration:200,forceHeight:!0,selMinHeight:\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\"},computed:{boundary:function(t,e){var n=t.boundary,i=t.boundaryAlign;return!0===n||i?e:n},dropbarAnchor:function(t,e){return at(t.dropbarAnchor,e)},pos:function(t){return\"bottom-\"+t.align},dropdowns:function(t,e){return Te(t.dropdown+\" .\"+t.clsDrop,e)}},beforeConnect:function(){var t=this.$props.dropbar;this.dropbar=t&&(at(t,this.$el)||Se(\"+ .uk-navbar-dropbar\",this.$el)||Se(\"<div></div>\")),this.dropbar&&(Ae(this.dropbar,\"uk-navbar-dropbar\"),\"slide\"===this.dropbarMode&&Ae(this.dropbar,\"uk-navbar-dropbar-slide\"))},disconnected:function(){this.dropbar&&ve(this.dropbar)},update:function(){var e=this;this.$create(\"drop\",this.dropdowns.filter(function(t){return!e.getDropdown(t)}),X({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:\"mouseover\",delegate:function(){return this.dropdown},handler:function(t){var e=t.current,n=this.getActive();n&&n.toggle&&!_t(n.toggle.$el,e)&&!n.tracker.movesTo(n.$el)&&n.hide(!1)}},{name:\"mouseleave\",el:function(){return this.dropbar},handler:function(){var t=this.getActive();t&&!this.dropdowns.some(function(t){return bt(t,\":hover\")})&&t.hide()}},{name:\"beforeshow\",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||me(this.dropbarAnchor||this.$el,this.dropbar)}},{name:\"show\",capture:!0,filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=e.dir;this.clsDrop&&Ae(n,this.clsDrop+\"-dropbar\"),\"bottom\"===i&&this.transitionTo(n.offsetHeight+j(He(n,\"marginTop\"))+j(He(n,\"marginBottom\")),n)}},{name:\"beforehide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();bt(this.dropbar,\":hover\")&&i&&i.$el===n&&t.preventDefault()}},{name:\"hide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();(!i||i&&i.$el===n)&&this.transitionTo(0)}}],methods:{getActive:function(){var t=this.dropdowns.map(this.getDropdown).filter(function(t){return t&&t.isActive()})[0];return t&&y(t.mode,\"hover\")&&_t(t.toggle.$el,this.$el)&&t},transitionTo:function(t,e){var n=this,i=this.dropbar,r=Et(i)?on(i):0;return He(e=r<t&&e,\"clip\",\"rect(0,\"+e.offsetWidth+\"px,\"+r+\"px,0)\"),on(i,r),Ue.cancel([e,i]),Yt.all([Ue.start(i,{height:t},this.duration),Ue.start(e,{clip:\"rect(0,\"+e.offsetWidth+\"px,\"+t+\"px,0)\"},this.duration)]).catch(Q).then(function(){He(e,{clip:\"\"}),n.$update(i)})},getDropdown:function(t){return this.$getComponent(t,\"drop\")||this.$getComponent(t,\"dropdown\")}}},or={mixins:[tr],args:\"mode\",props:{mode:String,flip:Boolean,overlay:Boolean},data:{mode:\"slide\",flip:!1,overlay:!1,clsPage:\"uk-offcanvas-page\",clsContainer:\"uk-offcanvas-container\",selPanel:\".uk-offcanvas-bar\",clsFlip:\"uk-offcanvas-flip\",clsContainerAnimation:\"uk-offcanvas-container-animation\",clsSidebarAnimation:\"uk-offcanvas-bar-animation\",clsMode:\"uk-offcanvas\",clsOverlay:\"uk-offcanvas-overlay\",selClose:\".uk-offcanvas-close\"},computed:{clsFlip:function(t){var e=t.flip,n=t.clsFlip;return e?n:\"\"},clsOverlay:function(t){var e=t.overlay,n=t.clsOverlay;return e?n:\"\"},clsMode:function(t){var e=t.mode;return t.clsMode+\"-\"+e},clsSidebarAnimation:function(t){var e=t.mode,n=t.clsSidebarAnimation;return\"none\"===e||\"reveal\"===e?\"\":n},clsContainerAnimation:function(t){var e=t.mode,n=t.clsContainerAnimation;return\"push\"!==e&&\"reveal\"!==e?\"\":n},transitionElement:function(t){return\"reveal\"===t.mode?this.panel.parentNode:this.panel}},events:[{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.current;e.hash&&Se(e.hash,document.body)&&this.hide()}},{name:\"touchstart\",passive:!0,el:function(){return this.panel},handler:function(t){var e=t.targetTouches;1===e.length&&(this.clientY=e[0].clientY)}},{name:\"touchmove\",self:!0,passive:!1,filter:function(){return this.overlay},handler:function(t){t.cancelable&&t.preventDefault()}},{name:\"touchmove\",passive:!1,el:function(){return this.panel},handler:function(t){if(1===t.targetTouches.length){var e=event.targetTouches[0].clientY-this.clientY,n=this.panel,i=n.scrollTop,r=n.scrollHeight,o=n.clientHeight;(r<=o||0===i&&0<e||r-i<=o&&e<0)&&t.cancelable&&t.preventDefault()}}},{name:\"show\",self:!0,handler:function(){\"reveal\"!==this.mode||Me(this.panel.parentNode,this.clsMode)||(we(this.panel,\"<div>\"),Ae(this.panel.parentNode,this.clsMode)),He(document.documentElement,\"overflowY\",this.overlay?\"hidden\":\"\"),Ae(document.body,this.clsContainer,this.clsFlip),He(this.$el,\"display\",\"block\"),Ae(this.$el,this.clsOverlay),Ae(this.panel,this.clsSidebarAnimation,\"reveal\"!==this.mode?this.clsMode:\"\"),on(document.body),Ae(document.body,this.clsContainerAnimation),this.clsContainerAnimation&&(sr().content+=\",user-scalable=0\")}},{name:\"hide\",self:!0,handler:function(){Ce(document.body,this.clsContainerAnimation);var t=this.getActive();(\"none\"===this.mode||t&&t!==this&&t!==this.prev)&&Bt(this.panel,\"transitionend\")}},{name:\"hidden\",self:!0,handler:function(){this.clsContainerAnimation&&function(){var t=sr();t.content=t.content.replace(/,user-scalable=0$/,\"\")}(),\"reveal\"===this.mode&&ye(this.panel),Ce(this.panel,this.clsSidebarAnimation,this.clsMode),Ce(this.$el,this.clsOverlay),He(this.$el,\"display\",\"\"),Ce(document.body,this.clsContainer,this.clsFlip),He(document.documentElement,\"overflowY\",\"\")}},{name:\"swipeLeft swipeRight\",handler:function(t){this.isToggled()&&u(t.type,\"Left\")^this.flip&&this.hide()}}]};function sr(){return Se('meta[name=\"viewport\"]',document.head)||fe(document.head,'<meta name=\"viewport\">')}var ar={mixins:[ti],props:{selContainer:String,selContent:String},data:{selContainer:\".uk-modal\",selContent:\".uk-modal-dialog\"},computed:{container:function(t,e){return xt(e,t.selContainer)},content:function(t,e){return xt(e,t.selContent)}},connected:function(){He(this.$el,\"minHeight\",150)},update:{read:function(){return!(!this.content||!this.container)&&{current:j(He(this.$el,\"maxHeight\")),max:Math.max(150,on(this.container)-(en(this.content).height-on(this.$el)))}},write:function(t){var e=t.current,n=t.max;He(this.$el,\"maxHeight\",n),Math.round(e)!==Math.round(n)&&Bt(this.$el,\"resize\")},events:[\"resize\"]}},hr={props:[\"width\",\"height\"],connected:function(){Ae(this.$el,\"uk-responsive-width\")},update:{read:function(){return!!(Et(this.$el)&&this.width&&this.height)&&{width:sn(this.$el.parentNode),height:this.height}},write:function(t){on(this.$el,nt.contain({height:this.height,width:this.width},t).height)},events:[\"resize\"]}},cr={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(e){var n=this;e=e&&Se(e)||document.body;var t=on(document),i=on(window),r=en(e).top-this.offset;if(t<r+i&&(r=t-i),Bt(this.$el,\"beforescroll\",[this,e])){var o=Date.now(),s=window.pageYOffset,a=function(){var t=s+(r-s)*function(t){return.5*(1-Math.cos(Math.PI*t))}(Z((Date.now()-o)/n.duration));mn(window,t),t!==r?requestAnimationFrame(a):Bt(n.$el,\"scrolled\",[n,e])};a()}}},events:{click:function(t){t.defaultPrevented||(t.preventDefault(),this.scrollTo(It(decodeURIComponent(this.$el.hash)).substr(1)))}}};var ur={args:\"cls\",props:{cls:String,target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:!1,target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:\"uk-scrollspy-inview\"}},computed:{elements:function(t,e){var n=t.target;return n?Te(n,e):[e]}},update:[{write:function(){this.hidden&&He(Nt(this.elements,\":not(.\"+this.inViewClass+\")\"),\"visibility\",\"hidden\")}},{read:function(t){var n=this;t.update&&this.elements.forEach(function(t){var e=t._ukScrollspyState;(e=e||{cls:st(t,\"uk-scrollspy-class\")||n.cls}).show=fn(t,n.offsetTop,n.offsetLeft),t._ukScrollspyState=e})},write:function(r){var o=this;if(!r.update)return this.$emit(),r.update=!0;this.elements.forEach(function(t){var n=t._ukScrollspyState,e=n.cls;if(!n.show||n.inview||n.queued){if(!n.show&&(n.inview||n.queued)&&o.repeat){if(n.abort&&n.abort(),!n.inview)return;He(t,\"visibility\",o.hidden?\"hidden\":\"\"),Ce(t,o.inViewClass),Oe(t,e),Bt(t,\"outview\"),o.$update(t),n.inview=!1}}else{var i=function(){He(t,\"visibility\",\"\"),Ae(t,o.inViewClass),Oe(t,e),Bt(t,\"inview\"),o.$update(t),n.inview=!0,n.abort&&n.abort()};o.delay?(n.queued=!0,r.promise=(r.promise||Yt.resolve()).then(function(){return!n.inview&&new Yt(function(t){var e=setTimeout(function(){i(),t()},r.promise||1===o.elements.length?o.delay:0);n.abort=function(){clearTimeout(e),t(),n.queued=!1}})})):i()}})},events:[\"scroll\",\"resize\"]}]},lr={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:\"uk-active\",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(t,e){return Te('a[href^=\"#\"]',e).filter(function(t){return t.hash})},elements:function(t){var e=t.closest;return xt(this.links,e||\"*\")},targets:function(){return Te(this.links.map(function(t){return It(t.hash).substr(1)}).join(\",\"))}},update:[{read:function(){this.scroll&&this.$create(\"scroll\",this.links,{offset:this.offset||0})}},{read:function(o){var s=this,a=window.pageYOffset+this.offset+1,h=on(document)-on(window)+this.offset;o.active=!1,this.targets.every(function(t,e){var n=en(t).top,i=e+1===s.targets.length;if(!s.overflow&&(0===e&&a<n||i&&n+t.offsetTop<a))return!1;if(!i&&en(s.targets[e+1]).top<=a)return!0;if(h<=a)for(var r=s.targets.length-1;e<r;r--)if(fn(s.targets[r])){t=s.targets[r];break}return!(o.active=Se(Nt(s.links,'[href=\"#'+t.id+'\"]')))})},write:function(t){var e=t.active;this.links.forEach(function(t){return t.blur()}),Ce(this.elements,this.cls),e&&Bt(this.$el,\"active\",[e,Ae(this.closest?xt(e,this.closest):e,this.cls)])},events:[\"scroll\",\"resize\"]}]},dr={mixins:[ti,Ki],props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:\"\",clsActive:\"uk-active\",clsInactive:\"\",clsFixed:\"uk-sticky-fixed\",clsBelow:\"uk-sticky-below\",selTarget:\"\",widthElement:!1,showOnUp:!1,targetOffset:!1},computed:{selTarget:function(t,e){var n=t.selTarget;return n&&Se(n,e)||e},widthElement:function(t,e){return at(t.widthElement,e)||this.placeholder},isActive:{get:function(){return Me(this.selTarget,this.clsActive)},set:function(t){t&&!this.isActive?(_e(this.selTarget,this.clsInactive,this.clsActive),Bt(this.$el,\"active\")):t||Me(this.selTarget,this.clsInactive)||(_e(this.selTarget,this.clsActive,this.clsInactive),Bt(this.$el,\"inactive\"))}}},connected:function(){this.placeholder=Se(\"+ .uk-sticky-placeholder\",this.$el)||Se('<div class=\"uk-sticky-placeholder\"></div>'),this.isFixed=!1,this.isActive=!1},disconnected:function(){this.isFixed&&(this.hide(),Ce(this.selTarget,this.clsInactive)),ve(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:\"load hashchange popstate\",el:window,handler:function(){var i=this;if(!1!==this.targetOffset&&location.hash&&0<window.pageYOffset){var r=Se(location.hash);r&&xn.read(function(){var t=en(r).top,e=en(i.$el).top,n=i.$el.offsetHeight;i.isFixed&&t<=e+n&&e<=t+r.offsetHeight&&mn(window,t-n-(z(i.targetOffset)?i.targetOffset:0)-i.offset)})}}}],update:[{read:function(t,e){var n=t.height;this.isActive&&\"update\"!==e&&(this.hide(),n=this.$el.offsetHeight,this.show()),n=this.isActive?n:this.$el.offsetHeight,this.topOffset=en(this.isFixed?this.placeholder:this.$el).top,this.bottomOffset=this.topOffset+n;var i=fr(\"bottom\",this);return this.top=Math.max(j(fr(\"top\",this)),this.topOffset)-this.offset,this.bottom=i&&i-n,this.inactive=!this.matchMedia,{lastScroll:!1,height:n,margins:He(this.$el,[\"marginTop\",\"marginBottom\",\"marginLeft\",\"marginRight\"])}},write:function(t){var e=t.height,n=t.margins,i=this.placeholder;He(i,X({height:e},n)),_t(i,document)||(me(this.$el,i),it(i,\"hidden\",\"\")),this.isActive=this.isActive},events:[\"resize\"]},{read:function(t){var e=t.scroll;return void 0===e&&(e=0),this.width=(Et(this.widthElement)?this.widthElement:this.$el).offsetWidth,this.scroll=window.pageYOffset,{dir:e<=this.scroll?\"down\":\"up\",scroll:this.scroll,visible:Et(this.$el),top:gn(this.placeholder)[0]}},write:function(t,e){var n=this,i=t.initTimestamp;void 0===i&&(i=0);var r=t.dir,o=t.lastDir,s=t.lastScroll,a=t.scroll,h=t.top,c=t.visible,u=performance.now();if(!((t.lastScroll=a)<0||a===s||!c||this.disabled||this.showOnUp&&\"scroll\"!==e||((300<u-i||r!==o)&&(t.initScroll=a,t.initTimestamp=u),t.lastDir=r,this.showOnUp&&Math.abs(t.initScroll-a)<=30&&Math.abs(s-a)<=10)))if(this.inactive||a<this.top||this.showOnUp&&(a<=this.top||\"down\"===r||\"up\"===r&&!this.isFixed&&a<=this.bottomOffset)){if(!this.isFixed)return void(Ze.inProgress(this.$el)&&a<h&&(Ze.cancel(this.$el),this.hide()));this.isFixed=!1,this.animation&&a>this.topOffset?(Ze.cancel(this.$el),Ze.out(this.$el,this.animation).then(function(){return n.hide()},Q)):this.hide()}else this.isFixed?this.update():this.animation?(Ze.cancel(this.$el),this.show(),Ze.in(this.$el,this.animation).catch(Q)):this.show()},events:[\"resize\",\"scroll\"]}],methods:{show:function(){this.isFixed=!0,this.update(),it(this.placeholder,\"hidden\",null)},hide:function(){this.isActive=!1,Ce(this.$el,this.clsFixed,this.clsBelow),He(this.$el,{position:\"\",top:\"\",width:\"\"}),it(this.placeholder,\"hidden\",\"\")},update:function(){var t=0!==this.top||this.scroll>this.top,e=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(e=this.bottom-this.scroll),He(this.$el,{position:\"fixed\",top:e+\"px\",width:this.width}),this.isActive=t,Oe(this.$el,this.clsBelow,this.scroll>this.bottomOffset),Ae(this.$el,this.clsFixed)}}};function fr(t,e){var n=e.$props,i=e.$el,r=e[t+\"Offset\"],o=n[t];if(o){if(z(o))return r+j(o);if(D(o)&&o.match(/^-?\\d+vh$/))return on(window)*j(o)/100;var s=!0===o?i.parentNode:at(o,i);return s?en(s).top+s.offsetHeight:void 0}}var pr,mr={mixins:[ei],args:\"connect\",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:\"~.uk-switcher\",toggle:\"> * > :first-child\",active:0,swiping:!0,cls:\"uk-active\",clsContainer:\"uk-switcher\",attrItem:\"uk-switcher-item\",queued:!0},computed:{connects:function(t,e){return ht(t.connect,e)},toggles:function(t,e){return Te(t.toggle,e)}},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(e){e.preventDefault(),this.show(V(this.$el.children).filter(function(t){return _t(e.current,t)})[0])}},{name:\"click\",el:function(){return this.connects},delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"swipeRight swipeLeft\",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(t){var e=t.type;this.show(u(e,\"Left\")?\"next\":\"previous\")}}],update:function(){var e=this;this.connects.forEach(function(t){return e.updateAria(t.children)});var t=this.$el.children;this.show(Nt(t,\".\"+this.cls)[0]||t[this.active]||t[0])},methods:{index:function(){return!P(this.connects)&&ce(Nt(this.connects[0].children,\".\"+this.cls)[0])},show:function(t){for(var e,n,i=this,r=this.$el.children,o=r.length,s=this.index(),a=0<=s,h=\"previous\"===t?-1:1,c=ue(t,r,s),u=0;u<o;u++,c=(c+h+o)%o)if(!bt(this.toggles[c],\".uk-disabled *, .uk-disabled, [disabled]\")){e=this.toggles[c],n=r[c];break}!n||0<=s&&Me(n,this.cls)||s===c||(Ce(r,this.cls),Ae(n,this.cls),it(this.toggles,\"aria-expanded\",!1),it(e,\"aria-expanded\",!0),this.connects.forEach(function(t){a?i.toggleElement([t.children[s],t.children[c]]):i.toggleNow(t.children[c])}))}}},gr={mixins:[ti],extends:mr,props:{media:Boolean},data:{media:960,attrItem:\"uk-tab-item\"},connected:function(){var t=Me(this.$el,\"uk-tab-left\")?\"uk-tab-left\":!!Me(this.$el,\"uk-tab-right\")&&\"uk-tab-right\";t&&this.$create(\"toggle\",this.$el,{cls:t,mode:\"media\",media:this.media})}},vr={mixins:[Ki,ei],args:\"target\",props:{href:String,target:null,mode:\"list\"},data:{href:!1,target:!1,mode:\"click\",queued:!0},computed:{target:function(t,e){var n=t.href,i=t.target;return(i=ht(i||n,e)).length&&i||[e]}},connected:function(){Bt(this.target,\"updatearia\",[this])},events:[{name:oe+\" \"+se,filter:function(){return y(this.mode,\"hover\")},handler:function(t){jt(t)||this.toggle(\"toggle\"+(t.type===oe?\"show\":\"hide\"))}},{name:\"click\",filter:function(){return y(this.mode,\"click\")||ee&&y(this.mode,\"hover\")},handler:function(t){var e;(xt(t.target,'a[href=\"#\"], a[href=\"\"]')||(e=xt(t.target,\"a[href]\"))&&(this.cls||!Et(this.target)||e.hash&&bt(this.target,e.hash)))&&t.preventDefault(),this.toggle()}}],update:{read:function(){return!(!y(this.mode,\"media\")||!this.media)&&{match:this.matchMedia}},write:function(t){var e=t.match,n=this.isToggled(this.target);(e?!n:n)&&this.toggle()},events:[\"resize\"]},methods:{toggle:function(t){Bt(this.target,t||\"toggle\",[this])&&this.toggleElement(this.target)}}};Hn.version=\"3.1.6\",(pr=Hn).component(\"accordion\",ni),pr.component(\"alert\",ii),pr.component(\"cover\",hi),pr.component(\"drop\",ui),pr.component(\"dropdown\",li),pr.component(\"formCustom\",di),pr.component(\"gif\",fi),pr.component(\"grid\",vi),pr.component(\"heightMatch\",bi),pr.component(\"heightViewport\",ki),pr.component(\"icon\",Mi),pr.component(\"img\",Hi),pr.component(\"leader\",Zi),pr.component(\"margin\",pi),pr.component(\"modal\",nr),pr.component(\"nav\",ir),pr.component(\"navbar\",rr),pr.component(\"offcanvas\",or),pr.component(\"overflowAuto\",ar),pr.component(\"responsive\",hr),pr.component(\"scroll\",cr),pr.component(\"scrollspy\",ur),pr.component(\"scrollspyNav\",lr),pr.component(\"sticky\",dr),pr.component(\"svg\",Ii),pr.component(\"switcher\",mr),pr.component(\"tab\",gr),pr.component(\"toggle\",vr),pr.component(\"video\",ai),pr.component(\"close\",zi),pr.component(\"marker\",Oi),pr.component(\"navbarToggleIcon\",Oi),pr.component(\"overlayIcon\",Oi),pr.component(\"paginationNext\",Oi),pr.component(\"paginationPrevious\",Oi),pr.component(\"searchIcon\",Bi),pr.component(\"slidenavNext\",Di),pr.component(\"slidenavPrevious\",Di),pr.component(\"spinner\",Pi),pr.component(\"totop\",Oi),pr.use(ri);var wr={mixins:[ti],props:{date:String,clsWrapper:String},data:{date:\"\",clsWrapper:\".uk-countdown-%unit%\"},computed:{date:function(t){var e=t.date;return Date.parse(e)},days:function(t,e){return Se(t.clsWrapper.replace(\"%unit%\",\"days\"),e)},hours:function(t,e){return Se(t.clsWrapper.replace(\"%unit%\",\"hours\"),e)},minutes:function(t,e){return Se(t.clsWrapper.replace(\"%unit%\",\"minutes\"),e)},seconds:function(t,e){return Se(t.clsWrapper.replace(\"%unit%\",\"seconds\"),e)},units:function(){var e=this;return[\"days\",\"hours\",\"minutes\",\"seconds\"].filter(function(t){return e[t]})}},connected:function(){this.start()},disconnected:function(){var e=this;this.stop(),this.units.forEach(function(t){return le(e[t])})},events:[{name:\"visibilitychange\",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var i=this,r=function(t){var e=t-Date.now();return{total:e,seconds:e/1e3%60,minutes:e/1e3/60%60,hours:e/1e3/60/60%24,days:e/1e3/60/60/24}}(this.date);r.total<=0&&(this.stop(),r.days=r.hours=r.minutes=r.seconds=0),this.units.forEach(function(t){var e=String(Math.floor(r[t]));e=e.length<2?\"0\"+e:e;var n=i[t];n.textContent!==e&&((e=e.split(\"\")).length!==n.children.length&&de(n,e.map(function(){return\"<span></span>\"}).join(\"\")),e.forEach(function(t,e){return n.children[e].textContent=t}))})}},methods:{start:function(){var t=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return t.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var br,yr=\"uk-animation-target\",xr={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(t){var i=this;!function(){if(br)return;(br=fe(document.head,\"<style>\").sheet).insertRule(\".\"+yr+\" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\",0)}();var r=V(this.target.children),o=r.map(function(t){return kr(t,!0)}),e=on(this.target),n=window.pageYOffset;t(),Ue.cancel(this.target),r.forEach(Ue.cancel),$r(this.target),this.$update(this.target),xn.flush();var s=on(this.target),a=(r=r.concat(V(this.target.children).filter(function(t){return!y(r,t)}))).map(function(t,e){return!!(t.parentNode&&e in o)&&(o[e]?Et(t)?Ir(t):{opacity:0}:{opacity:Et(t)?1:0})});return o=a.map(function(t,e){var n=r[e].parentNode===i.target&&(o[e]||kr(r[e]));if(n)if(t){if(!(\"opacity\"in t)){n.opacity%1?t.opacity=1:delete n.opacity}}else delete n.opacity;return n}),Ae(this.target,yr),r.forEach(function(t,e){return o[e]&&He(t,o[e])}),He(this.target,\"height\",e),mn(window,n),Yt.all(r.map(function(t,e){return o[e]&&a[e]?Ue.start(t,a[e],i.animation,\"ease\"):Yt.resolve()}).concat(Ue.start(this.target,{height:s},this.animation,\"ease\"))).then(function(){r.forEach(function(t,e){return He(t,{display:0===a[e].opacity?\"none\":\"\",zIndex:\"\"})}),$r(i.target),i.$update(i.target),xn.flush()},Q)}}};function kr(t,e){var n=He(t,\"zIndex\");return!!Et(t)&&X({display:\"\",opacity:e?He(t,\"opacity\"):\"0\",pointerEvents:\"none\",position:\"absolute\",zIndex:\"auto\"===n?ce(t):n},Ir(t))}function $r(t){He(t.children,{height:\"\",left:\"\",opacity:\"\",pointerEvents:\"\",position:\"\",top:\"\",width:\"\"}),Ce(t,yr),He(t,\"height\",\"\")}function Ir(t){var e=t.getBoundingClientRect(),n=e.height,i=e.width,r=rn(t),o=r.top,s=r.left;return{top:o+=j(He(t,\"marginTop\")),left:s,height:n,width:i}}var Sr={mixins:[xr],args:\"target\",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:\"uk-filter-control\",cls:\"uk-active\",animation:250},computed:{toggles:{get:function(t,e){t.attrItem;return Te(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",e)},watch:function(){this.updateState()}},target:function(t,e){return Se(t.target,e)},children:{get:function(){return V(this.target&&this.target.children)},watch:function(t,e){!function(t,e){return t.length===e.length&&t.every(function(t){return~e.indexOf(t)})}(t,e)&&this.updateState()}}},events:[{name:\"click\",delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.apply(t.current)}}],connected:function(){var e=this;if(this.updateState(),!1!==this.selActive){var n=Te(this.selActive,this.$el);this.toggles.forEach(function(t){return Oe(t,e.cls,y(n,t))})}},methods:{apply:function(t){this.setState(Er(t,this.attrItem,this.getState()))},getState:function(){var n=this;return this.toggles.filter(function(t){return Me(t,n.cls)}).reduce(function(t,e){return Er(e,n.attrItem,t)},{filter:{\"\":\"\"},sort:[]})},setState:function(o,t){var s=this;void 0===t&&(t=!0),o=X({filter:{\"\":\"\"},sort:[]},o),Bt(this.$el,\"beforeFilter\",[this,o]);var a=this.children;this.toggles.forEach(function(t){return Oe(t,s.cls,!!function(t,e,n){var i=n.filter;void 0===i&&(i={\"\":\"\"});var r=n.sort,o=r[0],s=r[1],a=Tr(t,e),h=a.filter;void 0===h&&(h=\"\");var c=a.group;void 0===c&&(c=\"\");var u=a.sort,l=a.order;void 0===l&&(l=\"asc\");return H(u)?c in i&&h===i[c]||!h&&c&&!(c in i)&&!i[\"\"]:o===u&&s===l}(t,s.attrItem,o))});function e(){var e=function(t){var e=t.filter,n=\"\";return K(e,function(t){return n+=t||\"\"}),n}(o);a.forEach(function(t){return He(t,\"display\",e&&!bt(t,e)?\"none\":\"\")});var t=o.sort,n=t[0],i=t[1];if(n){var r=function(t,n,i){return X([],t).sort(function(t,e){return st(t,n).localeCompare(st(e,n),void 0,{numeric:!0})*(\"asc\"===i||-1)})}(a,n,i);q(r,a)||r.forEach(function(t){return fe(s.target,t)})}}t?this.animate(e).then(function(){return Bt(s.$el,\"afterFilter\",[s])}):(e(),Bt(this.$el,\"afterFilter\",[this]))},updateState:function(){var t=this;xn.write(function(){return t.setState(t.getState(),!1)})}}};function Tr(t,e){return Mn(st(t,e),[\"filter\"])}function Er(t,e,n){var i=Tr(t,e),r=i.filter,o=i.group,s=i.sort,a=i.order;return void 0===a&&(a=\"asc\"),(r||H(s))&&(o?r?(delete n.filter[\"\"],n.filter[o]=r):(delete n.filter[o],(P(n.filter)||\"\"in n.filter)&&(n.filter={\"\":r||\"\"})):n.filter={\"\":r||\"\"}),H(s)||(n.sort=[s,a]),n}var Ar={slide:{show:function(t){return[{transform:Nr(-100*t)},{transform:Nr()}]},percent:function(t){return Cr(t)},translate:function(t,e){return[{transform:Nr(-100*e*t)},{transform:Nr(100*e*(1-t))}]}}};function Cr(t){return Math.abs(He(t,\"transform\").split(\",\")[4]/t.offsetWidth)||0}function Nr(t,e){return void 0===t&&(t=0),void 0===e&&(e=\"%\"),t+=t?e:\"\",Jt?\"translateX(\"+t+\")\":\"translate3d(\"+t+\", 0, 0)\"}function _r(t){return\"scale3d(\"+t+\", \"+t+\", 1)\"}var Mr=X({},Ar,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(t){return 1-He(t,\"opacity\")},translate:function(t){return[{opacity:1-t},{opacity:t}]}},scale:{show:function(){return[{opacity:0,transform:_r(.8)},{opacity:1,transform:_r(1)}]},percent:function(t){return 1-He(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:_r(1-.2*t)},{opacity:t,transform:_r(.8+.2*t)}]}}});function Or(t,e,n){Bt(t,zt(e,!1,!1,n))}var Dr={mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.autoplay&&this.startAutoplay()},disconnected:function(){this.stopAutoplay()},update:function(){it(this.slides,\"tabindex\",\"-1\")},events:[{name:\"visibilitychange\",el:document,filter:function(){return this.autoplay},handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:\"mouseenter\",filter:function(){return this.autoplay&&this.pauseOnHover},handler:function(){this.isHovering=!0}},{name:\"mouseleave\",filter:function(){return this.autoplay&&this.pauseOnHover},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var t=this;this.stopAutoplay(),this.interval=setInterval(function(){return!_t(document.activeElement,t.$el)&&!t.isHovering&&!t.stack.length&&t.show(\"next\")},this.autoplayInterval)},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{props:{draggable:Boolean},data:{draggable:!0,threshold:10},created:function(){var i=this;[\"start\",\"move\",\"end\"].forEach(function(t){var n=i[t];i[t]=function(t){var e=Wt(t).x*(Zt?-1:1);i.prevPos=e!==i.pos?i.pos:i.prevPos,i.pos=e,n(t)}})},events:[{name:ne,delegate:function(){return this.selSlides},handler:function(t){!this.draggable||!jt(t)&&function(t){return!t.children.length&&t.childNodes.length}(t.target)||0<t.button||this.length<2||this.start(t)}},{name:\"touchmove\",passive:!1,handler:\"move\",delegate:function(){return this.selSlides}},{name:\"dragstart\",handler:function(t){t.preventDefault()}}],methods:{start:function(){var t=this;this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index;var e=\"touchmove\"!=ie?Mt(document,ie,this.move,{passive:!1}):Q;this.unbindMove=function(){e(),t.unbindMove=null},Mt(window,\"scroll\",this.unbindMove),Mt(document,re,this.end,!0),He(this.list,\"userSelect\",\"none\")},move:function(t){var e=this;if(this.unbindMove){var n=this.pos-this.drag;if(!(0==n||this.prevPos===this.pos||!this.dragging&&Math.abs(n)<this.threshold)){He(this.list,\"pointerEvents\",\"none\"),t.cancelable&&t.preventDefault(),this.dragging=!0,this.dir=n<0?1:-1;for(var i=this.slides,r=this.prevIndex,o=Math.abs(n),s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;s!==r&&a<o;)this.drag-=a*this.dir,r=s,o-=a,s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;this.percent=o/a;var h,c=i[r],u=i[s],l=this.index!==s,d=r===s;[this.index,this.prevIndex].filter(function(t){return!y([s,r],t)}).forEach(function(t){Bt(i[t],\"itemhidden\",[e]),d&&(h=!0,e.prevIndex=r)}),(this.index===r&&this.prevIndex!==r||h)&&Bt(i[this.index],\"itemshown\",[this]),l&&(this.prevIndex=r,this.index=s,d||Bt(c,\"beforeitemhide\",[this]),Bt(u,\"beforeitemshow\",[this])),this._transitioner=this._translate(Math.abs(this.percent),c,!d&&u),l&&(d||Bt(c,\"itemhide\",[this]),Bt(u,\"itemshow\",[this]))}}},end:function(){if(Ot(window,\"scroll\",this.unbindMove),this.unbindMove&&this.unbindMove(),Ot(document,re,this.end,!0),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var t=(Zt?this.dir*(Zt?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=t?this.index:this.prevIndex,t&&(this.percent=1-this.percent),this.show(0<this.dir&&!t||this.dir<0&&t?\"next\":\"previous\",!0)}He(this.list,{userSelect:\"\",pointerEvents:\"\"}),this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(t,e){return Se(t.selNav,e)},selNavItem:function(t){var e=t.attrItem;return\"[\"+e+\"],[data-\"+e+\"]\"},navItems:function(t,e){return Te(this.selNavItem,e)}},update:{write:function(){var n=this;this.nav&&this.length!==this.nav.children.length&&de(this.nav,this.slides.map(function(t,e){return\"<li \"+n.attrItem+'=\"'+e+'\"><a href=\"#\"></a></li>'}).join(\"\")),Oe(Te(this.selNavItem,this.$el).concat(this.nav),\"uk-hidden\",!this.maxIndex),this.updateNav()},events:[\"resize\"]},events:[{name:\"click\",delegate:function(){return this.selNavItem},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"itemshow\",handler:\"updateNav\"}],methods:{updateNav:function(){var n=this,i=this.getValidIndex();this.navItems.forEach(function(t){var e=st(t,n.attrItem);Oe(t,n.clsActive,F(e)===i),Oe(t,\"uk-invisible\",n.finite&&(\"previous\"===e&&0===i||\"next\"===e&&i>=n.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:\"ease\",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:\"uk-active\",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(t,e){var n=t.velocity;return Br(e.offsetWidth/n)},length:function(){return this.slides.length},list:function(t,e){return Se(t.selList,e)},maxIndex:function(){return this.length-1},selSlides:function(t){return t.selList+\" > *\"},slides:function(){return V(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(t,e){var n=this;if(void 0===e&&(e=!1),!this.dragging&&this.length){var i=this.stack,r=e?0:i.length,o=function(){i.splice(r,1),i.length&&n.show(i.shift(),!0)};if(i[e?\"unshift\":\"push\"](t),!e&&1<i.length)2===i.length&&this._transitioner.forward(Math.min(this.duration,200));else{var s=this.index,a=Me(this.slides,this.clsActive)&&this.slides[s],h=this.getIndex(t,this.index),c=this.slides[h];if(a!==c){if(this.dir=function(t,e){return\"next\"===t?1:\"previous\"===t?-1:t<e?-1:1}(t,s),this.prevIndex=s,this.index=h,a&&Bt(a,\"beforeitemhide\",[this]),!Bt(c,\"beforeitemshow\",[this,a]))return this.index=this.prevIndex,void o();var u=this._show(a,c,e).then(function(){return a&&Bt(a,\"itemhidden\",[n]),Bt(c,\"itemshown\",[n]),new Yt(function(t){xn.write(function(){i.shift(),i.length?n.show(i.shift(),!0):n._transitioner=null,t()})})});return a&&Bt(a,\"itemhide\",[this]),Bt(c,\"itemshow\",[this]),u}o()}}},getIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.index),Z(ue(t,this.slides,e,this.finite),0,this.maxIndex)},getValidIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),this.getIndex(t,e)},_show:function(t,e,n){if(this._transitioner=this._getTransitioner(t,e,this.dir,X({easing:n?e.offsetWidth<600?\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\":\"cubic-bezier(0.165, 0.84, 0.44, 1)\":this.easing},this.transitionOptions)),!n&&!t)return this._transitioner.translate(1),Yt.resolve();var i=this.stack.length;return this._transitioner[1<i?\"forward\":\"show\"](1<i?Math.min(this.duration,75+75/(i-1)):this.duration,this.percent)},_getDistance:function(t,e){return new this._getTransitioner(t,t!==e&&e).getDistance()},_translate:function(t,e,n){void 0===e&&(e=this.prevIndex),void 0===n&&(n=this.index);var i=this._getTransitioner(e!==n&&e,n);return i.translate(t),i},_getTransitioner:function(t,e,n,i){return void 0===t&&(t=this.prevIndex),void 0===e&&(e=this.index),void 0===n&&(n=this.dir||1),void 0===i&&(i=this.transitionOptions),new this.Transitioner(B(t)?this.slides[t]:t,B(e)?this.slides[e]:e,n*(Zt?-1:1),i)}}};function Br(t){return.5*t+300}var zr={mixins:[Dr],props:{animation:String},data:{animation:\"slide\",clsActivated:\"uk-transition-active\",Animations:Ar,Transitioner:function(o,s,a,t){var e=t.animation,h=t.easing,n=e.percent,i=e.translate,r=e.show;void 0===r&&(r=Q);var c=r(a),u=new Vt;return{dir:a,show:function(t,e,n){var i=this;void 0===e&&(e=0);var r=n?\"linear\":h;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),Or(s,\"itemin\",{percent:e,duration:t,timing:r,dir:a}),Or(o,\"itemout\",{percent:1-e,duration:t,timing:r,dir:a}),Yt.all([Ue.start(s,c[1],t,r),Ue.start(o,c[0],t,r)]).then(function(){i.reset(),u.resolve()},Q),u.promise},stop:function(){return Ue.stop([s,o])},cancel:function(){Ue.cancel([s,o])},reset:function(){for(var t in c[0])He([s,o],t,\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Ue.cancel([s,o]),this.show(t,e,!0)},translate:function(t){this.reset();var e=i(t,a);He(s,e[1]),He(o,e[0]),Or(s,\"itemtranslatein\",{percent:t,dir:a}),Or(o,\"itemtranslateout\",{percent:1-t,dir:a})},percent:function(){return n(o||s,s,a)},getDistance:function(){return o&&o.offsetWidth}}}},computed:{animation:function(t){var e=t.animation,n=t.Animations;return X(e in n?n[e]:n.slide,{name:e})},transitionOptions:function(){return{animation:this.animation}}},events:{\"itemshow itemhide itemshown itemhidden\":function(t){var e=t.target;this.$update(e)},beforeitemshow:function(t){Ae(t.target,this.clsActive)},itemshown:function(t){Ae(t.target,this.clsActivated)},itemhidden:function(t){Ce(t.target,this.clsActive,this.clsActivated)}}},Pr={mixins:[Qi,tr,ei,zr],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:\"uk-open\",clsPage:\"uk-lightbox-page\",selList:\".uk-lightbox-items\",attrItem:\"uk-lightbox-item\",selClose:\".uk-close-large\",pauseOnHover:!1,velocity:2,Animations:Mr,template:'<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>'}},created:function(){var t=this;this.$mount(fe(this.container,this.template)),this.caption=Se(\".uk-lightbox-caption\",this.$el),this.items.forEach(function(){return fe(t.list,\"<li></li>\")})},events:[{name:ie+\" \"+ne+\" keydown\",handler:\"showControls\"},{name:\"click\",self:!0,delegate:function(){return this.selSlides},handler:function(t){t.defaultPrevented||this.hide()}},{name:\"shown\",self:!0,handler:function(){this.showControls()}},{name:\"hide\",self:!0,handler:function(){this.hideControls(),Ce(this.slides,this.clsActive),Ue.stop(this.slides)}},{name:\"hidden\",self:!0,handler:function(){this.$destroy(!0)}},{name:\"keyup\",el:document,handler:function(t){if(this.isToggled(this.$el))switch(t.keyCode){case 37:this.show(\"previous\");break;case 39:this.show(\"next\")}}},{name:\"beforeitemshow\",handler:function(t){this.isToggled()||(this.draggable=!1,t.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Mr.scale,Ce(t.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:\"itemshow\",handler:function(t){var e=ce(t.target),n=this.getItem(e).caption;He(this.caption,\"display\",n?\"\":\"none\"),de(this.caption,n);for(var i=0;i<=this.preload;i++)this.loadItem(this.getIndex(e+i)),this.loadItem(this.getIndex(e-i))}},{name:\"itemshown\",handler:function(){this.draggable=this.$props.draggable}},{name:\"itemload\",handler:function(t,r){var o,s=this,e=r.source,n=r.type,i=r.alt;if(this.setItem(r,\"<span uk-spinner></span>\"),e)if(\"image\"===n||e.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i))Gt(e).then(function(t){return s.setItem(r,'<img width=\"'+t.width+'\" height=\"'+t.height+'\" src=\"'+e+'\" alt=\"'+(i||\"\")+'\">')},function(){return s.setError(r)});else if(\"video\"===n||e.match(/\\.(mp4|webm|ogv)($|\\?)/i)){var a=Se(\"<video controls playsinline\"+(r.poster?' poster=\"'+r.poster+'\"':\"\")+' uk-video=\"'+this.videoAutoplay+'\"></video>');it(a,\"src\",e),Dt(a,\"error loadedmetadata\",function(t){\"error\"===t?s.setError(r):(it(a,{width:a.videoWidth,height:a.videoHeight}),s.setItem(r,a))})}else if(\"iframe\"===n||e.match(/\\.(html|php)($|\\?)/i))this.setItem(r,'<iframe class=\"uk-lightbox-iframe\" src=\"'+e+'\" frameborder=\"0\" allowfullscreen></iframe>');else if(o=e.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/)||e.match(/()youtu\\.be\\/(.*)/)){var h=o[2],c=function(t,e){return void 0===t&&(t=640),void 0===e&&(e=450),s.setItem(r,Hr(\"https://www.youtube\"+(o[1]||\"\")+\".com/embed/\"+h,t,e,s.videoAutoplay))};Gt(\"https://img.youtube.com/vi/\"+h+\"/maxresdefault.jpg\").then(function(t){var e=t.width,n=t.height;120===e&&90===n?Gt(\"https://img.youtube.com/vi/\"+h+\"/0.jpg\").then(function(t){var e=t.width,n=t.height;return c(e,n)},c):c(e,n)},c)}else(o=e.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))&&Kt(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\"+encodeURI(e),{responseType:\"json\",withCredentials:!1}).then(function(t){var e=t.response,n=e.height,i=e.width;return s.setItem(r,Hr(\"https://player.vimeo.com/video/\"+o[2],i,n,s.videoAutoplay))},function(){return s.setError(r)})}}],methods:{loadItem:function(t){void 0===t&&(t=this.index);var e=this.getItem(t);e.content||Bt(this.$el,\"itemload\",[e])},getItem:function(t){return void 0===t&&(t=this.index),this.items[t]||{}},setItem:function(t,e){X(t,{content:e});var n=de(this.slides[this.items.indexOf(t)],e);Bt(this.$el,\"itemloaded\",[this,n]),this.$update(n)},setError:function(t){this.setItem(t,'<span uk-icon=\"icon: bolt; ratio: 2\"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Ae(this.$el,\"uk-active\",\"uk-transition-active\")},hideControls:function(){Ce(this.$el,\"uk-active\",\"uk-transition-active\")}}};function Hr(t,e,n,i){return'<iframe src=\"'+t+'\" width=\"'+e+'\" height=\"'+n+'\" style=\"max-width: 100%; box-sizing: border-box;\" frameborder=\"0\" allowfullscreen uk-video=\"autoplay: '+i+'\" uk-responsive></iframe>'}var Lr,Fr={install:function(t,e){t.lightboxPanel||t.component(\"lightboxPanel\",Pr);X(e.props,t.component(\"lightboxPanel\").options.props)},props:{toggle:String},data:{toggle:\"a\"},computed:{toggles:{get:function(t,e){return Te(t.toggle,e)},watch:function(){this.hide()}},items:function(){return J(this.toggles.map(jr),\"source\")}},disconnected:function(){this.hide()},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(t){t.preventDefault();var e=st(t.current,\"href\");this.show(k(this.items,function(t){return t.source===e}))}}],methods:{show:function(t){var e=this;return this.panel=this.panel||this.$create(\"lightboxPanel\",X({},this.$props,{items:this.items})),Mt(this.panel.$el,\"hidden\",function(){return e.panel=!1}),this.panel.show(t)},hide:function(){return this.panel&&this.panel.hide()}}};function jr(n){return[\"href\",\"caption\",\"type\",\"poster\",\"alt\"].reduce(function(t,e){return t[\"href\"===e?\"source\":e]=st(n,e),t},{})}var Wr={},Vr={functional:!0,args:[\"message\",\"status\"],data:{message:\"\",status:\"\",timeout:5e3,group:null,pos:\"top-center\",clsClose:\"uk-notification-close\",clsMsg:\"uk-notification-message\"},install:function(r){r.notification.closeAll=function(n,i){Ie(document.body,function(t){var e=r.getComponent(t,\"notification\");!e||n&&n!==e.group||e.close(i)})}},computed:{marginProp:function(t){return\"margin\"+(w(t.pos,\"top\")?\"Top\":\"Bottom\")},startProps:function(){var t;return(t={opacity:0})[this.marginProp]=-this.$el.offsetHeight,t}},created:function(){Wr[this.pos]||(Wr[this.pos]=fe(this.$container,'<div class=\"uk-notification uk-notification-'+this.pos+'\"></div>'));var t=He(Wr[this.pos],\"display\",\"block\");this.$mount(fe(t,'<div class=\"'+this.clsMsg+(this.status?\" \"+this.clsMsg+\"-\"+this.status:\"\")+'\"> <a href=\"#\" class=\"'+this.clsClose+'\" data-uk-close></a> <div>'+this.message+\"</div> </div>\"))},connected:function(){var t,e=this,n=j(He(this.$el,this.marginProp));Ue.start(He(this.$el,this.startProps),((t={opacity:1})[this.marginProp]=n,t)).then(function(){e.timeout&&(e.timer=setTimeout(e.close,e.timeout))})},events:(Lr={click:function(t){xt(t.target,'a[href=\"#\"],a[href=\"\"]')&&t.preventDefault(),this.close()}},Lr[oe]=function(){this.timer&&clearTimeout(this.timer)},Lr[se]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},Lr),methods:{close:function(t){function e(){Bt(n.$el,\"close\",[n]),ve(n.$el),Wr[n.pos].children.length||He(Wr[n.pos],\"display\",\"none\")}var n=this;this.timer&&clearTimeout(this.timer),t?e():Ue.start(this.$el,this.startProps).then(e)}}};var Yr=[\"x\",\"y\",\"bgx\",\"bgy\",\"rotate\",\"scale\",\"color\",\"backgroundColor\",\"borderColor\",\"opacity\",\"blur\",\"hue\",\"grayscale\",\"invert\",\"saturate\",\"sepia\",\"fopacity\",\"stroke\"],Rr={mixins:[Ki],props:Yr.reduce(function(t,e){return t[e]=\"list\",t},{}),data:Yr.reduce(function(t,e){return t[e]=void 0,t},{}),computed:{props:function(m,g){var v=this;return Yr.reduce(function(t,e){if(H(m[e]))return t;var n,i,r,o=e.match(/color/i),s=o||\"opacity\"===e,a=m[e].slice(0);s&&He(g,e,\"\"),a.length<2&&a.unshift((\"scale\"===e?1:s?He(g,e):0)||0);var h=function(t){return t.reduce(function(t,e){return D(e)&&e.replace(/-|\\d/g,\"\").trim()||t},\"\")}(a);if(o){var c=g.style.color;a=a.map(function(t){return function(t,e){return He(He(t,\"color\",e),\"color\").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(j)}(g,t)}),g.style.color=c}else if(w(e,\"bg\")){var u=\"bgy\"===e?\"height\":\"width\";if(a=a.map(function(t){return vn(t,u,v.$el)}),He(g,\"background-position-\"+e[2],\"\"),i=He(g,\"backgroundPosition\").split(\" \")[\"x\"===e[2]?0:1],v.covers){var l=Math.min.apply(Math,a),d=Math.max.apply(Math,a),f=a.indexOf(l)<a.indexOf(d);r=d-l,a=a.map(function(t){return t-(f?l:d)}),n=(f?-r:0)+\"px\"}else n=i}else a=a.map(j);if(\"stroke\"===e){if(!a.some(function(t){return t}))return t;var p=Ai(v.$el);He(g,\"strokeDasharray\",p),\"%\"===h&&(a=a.map(function(t){return t*p/100})),a=a.reverse(),e=\"strokeDashoffset\"}return t[e]={steps:a,unit:h,pos:n,bgPos:i,diff:r},t},{})},bgProps:function(){var e=this;return[\"bgx\",\"bgy\"].filter(function(t){return t in e.props})},covers:function(t,e){return function(t){var e=t.style.backgroundSize,n=\"cover\"===He(He(t,\"backgroundSize\",\"\"),\"backgroundSize\");return t.style.backgroundSize=e,n}(e)}},disconnected:function(){delete this._image},update:{read:function(t){var h=this;if(t.active=this.matchMedia,t.active){if(!t.image&&this.covers&&this.bgProps.length){var e=He(this.$el,\"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/,\"$1\");if(e){var n=new Image;n.src=e,(t.image=n).naturalWidth||(n.onload=function(){return h.$emit()})}}var i=t.image;if(i&&i.naturalWidth){var c={width:this.$el.offsetWidth,height:this.$el.offsetHeight},u={width:i.naturalWidth,height:i.naturalHeight},l=nt.cover(u,c);this.bgProps.forEach(function(t){var e=h.props[t],n=e.diff,i=e.bgPos,r=e.steps,o=\"bgy\"===t?\"height\":\"width\",s=l[o]-c[o];if(s<n)c[o]=l[o]+n-s;else if(n<s){var a=c[o]/vn(i,o,h.$el);a&&(h.props[t].steps=r.map(function(t){return t-(s-n)/a}))}l=nt.cover(u,c)}),t.dim=l}}},write:function(t){var e=t.dim;t.active?e&&He(this.$el,{backgroundSize:e.width+\"px \"+e.height+\"px\",backgroundRepeat:\"no-repeat\"}):He(this.$el,{backgroundSize:\"\",backgroundRepeat:\"\"})},events:[\"resize\"]},methods:{reset:function(){var n=this;K(this.getCss(0),function(t,e){return He(n.$el,e,\"\")})},getCss:function(l){var d=this.props;return Object.keys(d).reduce(function(t,e){var n=d[e],i=n.steps,r=n.unit,o=n.pos,s=function(t,e,n){void 0===n&&(n=2);var i=qr(t,e),r=i[0],o=i[1],s=i[2];return(B(r)?r+Math.abs(r-o)*s*(r<o?1:-1):+o).toFixed(n)}(i,l);switch(e){case\"x\":case\"y\":r=r||\"px\",t.transform+=\" translate\"+p(e)+\"(\"+j(s).toFixed(\"px\"===r?0:2)+r+\")\";break;case\"rotate\":r=r||\"deg\",t.transform+=\" rotate(\"+(s+r)+\")\";break;case\"scale\":t.transform+=\" scale(\"+s+\")\";break;case\"bgy\":case\"bgx\":t[\"background-position-\"+e[2]]=\"calc(\"+o+\" + \"+s+\"px)\";break;case\"color\":case\"backgroundColor\":case\"borderColor\":var a=qr(i,l),h=a[0],c=a[1],u=a[2];t[e]=\"rgba(\"+h.map(function(t,e){return t+=u*(c[e]-t),3===e?j(t):parseInt(t,10)}).join(\",\")+\")\";break;case\"blur\":r=r||\"px\",t.filter+=\" blur(\"+(s+r)+\")\";break;case\"hue\":r=r||\"deg\",t.filter+=\" hue-rotate(\"+(s+r)+\")\";break;case\"fopacity\":r=r||\"%\",t.filter+=\" opacity(\"+(s+r)+\")\";break;case\"grayscale\":case\"invert\":case\"saturate\":case\"sepia\":r=r||\"%\",t.filter+=\" \"+e+\"(\"+(s+r)+\")\";break;default:t[e]=s}return t},{transform:\"\",filter:\"\"})}}};function qr(t,e){var n=t.length-1,i=Math.min(Math.floor(n*e),n-1),r=t.slice(i,i+2);return r.push(1===e?1:e%(1/n)*n),r}var Ur={mixins:[Rr],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(t,e){var n=t.target;return function t(e){return e?\"offsetTop\"in e?e:t(e.parentNode):document.body}(n&&at(n,e)||e)}},update:{read:function(t,e){var n=t.percent;if(\"scroll\"!==e&&(n=!1),t.active){var i=n;return{percent:n=function(t,e){return Z(t*(1-(e-e*t)))}(pn(this.target)/(this.viewport||1),this.easing),style:i!==n&&this.getCss(n)}}},write:function(t){var e=t.style;t.active?e&&He(this.$el,e):this.reset()},events:[\"scroll\",\"resize\"]}};var Xr={update:{write:function(){if(!this.stack.length&&!this.dragging){var t=this.getValidIndex();delete this.index,Ce(this.slides,this.clsActive,this.clsActivated),this.show(t)}},events:[\"resize\"]}};function Kr(t,e,n){var i=Zr(t,e);return n?i-function(t,e){return Qr(e).width/2-Qr(t).width/2}(t,e):Math.min(i,Gr(e))}function Gr(t){return Math.max(0,Jr(t)-Qr(t).width)}function Jr(t){return eo(t).reduce(function(t,e){return Qr(e).width+t},0)}function Zr(t,e){return(rn(t).left+(Zt?Qr(t).width-Qr(e).width:0))*(Zt?-1:1)}function Qr(t){return t.getBoundingClientRect()}function to(t,e,n){Bt(t,zt(e,!1,!1,n))}function eo(t){return V(t.children)}var no={mixins:[ti,Dr,Xr],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:\"uk-slider-item\",selList:\".uk-slider-items\",selNav:\".uk-slider-nav\",clsContainer:\"uk-slider-container\",Transitioner:function(r,i,o,t){var e=t.center,s=t.easing,a=t.list,h=new Vt,n=r?Kr(r,a,e):Kr(i,a,e)+Qr(i).width*o,c=i?Kr(i,a,e):n+Qr(r).width*o*(Zt?-1:1);return{dir:o,show:function(t,e,n){void 0===e&&(e=0);var i=n?\"linear\":s;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),r&&this.updateTranslates(),e=r?e:Z(e,0,1),to(this.getItemIn(),\"itemin\",{percent:e,duration:t,timing:i,dir:o}),r&&to(this.getItemIn(!0),\"itemout\",{percent:1-e,duration:t,timing:i,dir:o}),Ue.start(a,{transform:Nr(-c*(Zt?-1:1),\"px\")},t,i).then(h.resolve,Q),h.promise},stop:function(){return Ue.stop(a)},cancel:function(){Ue.cancel(a)},reset:function(){He(a,\"transform\",\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Ue.cancel(a),this.show(t,e,!0)},translate:function(t){var e=this.getDistance()*o*(Zt?-1:1);He(a,\"transform\",Nr(Z(e-e*t-c,-Jr(a),Qr(a).width)*(Zt?-1:1),\"px\")),this.updateTranslates(),r&&(t=Z(t,-1,1),to(this.getItemIn(),\"itemtranslatein\",{percent:t,dir:o}),to(this.getItemIn(!0),\"itemtranslateout\",{percent:1-t,dir:o}))},percent:function(){return Math.abs((He(a,\"transform\").split(\",\")[4]*(Zt?-1:1)+n)/(c-n))},getDistance:function(){return Math.abs(c-n)},getItemIn:function(t){void 0===t&&(t=!1);var e=this.getActives(),n=G(eo(a),\"offsetLeft\"),i=ce(n,e[0<o*(t?-1:1)?e.length-1:0]);return~i&&n[i+(r&&!t?o:0)]},getActives:function(){var n=Kr(r||i,a,e);return G(eo(a).filter(function(t){var e=Zr(t,a);return n<=e&&e+Qr(t).width<=Qr(a).width+n}),\"offsetLeft\")},updateTranslates:function(){var n=this.getActives();eo(a).forEach(function(t){var e=y(n,t);to(t,\"itemtranslate\"+(e?\"in\":\"out\"),{percent:e?1:0,dir:t.offsetLeft<=i.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return Jr(this.list)/this.length},finite:function(t){return t.finite||Jr(this.list)<Qr(this.list).width+function(t){return eo(t).reduce(function(t,e){return Math.max(t,Qr(e).width)},0)}(this.list)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];He(this.slides,\"order\",\"\");for(var t=Gr(this.list),e=this.length;e--;)if(Zr(this.list.children[e],this.list)<t)return Math.min(e+1,this.length-1);return 0},sets:function(t){var o=this,e=t.sets,s=Qr(this.list).width/(this.center?2:1),a=0,h=s,c=0;return!P(e=e&&this.slides.reduce(function(t,e,n){var i=Qr(e).width;if(a<c+i&&(!o.center&&n>o.maxIndex&&(n=o.maxIndex),!y(t,n))){var r=o.slides[n+1];o.center&&r&&i<h-Qr(r).width/2?h-=i:(h=s,t.push(n),a=c+s+(o.center?i/2:0))}return c+=i,t},[]))&&e},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){Oe(this.$el,this.clsContainer,!Se(\".\"+this.clsContainer,this.$el))},update:{write:function(){var n=this;Te(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",this.$el).forEach(function(t){var e=st(t,n.attrItem);n.maxIndex&&Oe(t,\"uk-hidden\",z(e)&&(n.sets&&!y(n.sets,j(e))||e>n.maxIndex))})},events:[\"resize\"]},events:{beforeitemshow:function(t){!this.dragging&&this.sets&&this.stack.length<2&&!y(this.sets,this.index)&&(this.index=this.getValidIndex());var e=Math.abs(this.index-this.prevIndex+(0<this.dir&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&1<e){for(var n=0;n<e;n++)this.stack.splice(1,0,0<this.dir?\"next\":\"previous\");t.preventDefault()}else this.duration=Br(this.avgWidth/this.velocity)*(Qr(this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).width/this.avgWidth),this.reorder()},itemshow:function(){H(this.prevIndex)||Ae(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var e=this,n=this._getTransitioner(this.index).getActives();this.slides.forEach(function(t){return Oe(t,e.clsActive,y(n,t))}),this.sets&&!y(this.sets,j(this.index))||this.slides.forEach(function(t){return Oe(t,e.clsActivated,y(n,t))})}},methods:{reorder:function(){var n=this;if(He(this.slides,\"order\",\"\"),!this.finite){var i=0<this.dir&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(t,e){return He(t,\"order\",0<n.dir&&e<i?1:n.dir<0&&e>=n.index?-1:\"\")}),this.center)for(var t=this.slides[i],e=Qr(this.list).width/2-Qr(t).width/2,r=0;0<e;){var o=this.getIndex(--r+i,i),s=this.slides[o];He(s,\"order\",i<o?-2:-1),e-=Qr(s).width}}},getValidIndex:function(t,e){if(void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),t=this.getIndex(t,e),!this.sets)return t;var n;do{if(y(this.sets,t))return t;n=t,t=this.getIndex(t+this.dir,e)}while(t!==n);return t}}},io={mixins:[Rr],data:{selItem:\"!li\"},computed:{item:function(t,e){return at(t.selItem,e)}},events:[{name:\"itemshown\",self:!0,el:function(){return this.item},handler:function(){He(this.$el,this.getCss(.5))}},{name:\"itemin itemout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.duration,o=n.timing,s=n.dir;Ue.cancel(this.$el),He(this.$el,this.getCss(oo(e,s,i))),Ue.start(this.$el,this.getCss(ro(e)?.5:0<s?1:0),r,o).catch(Q)}},{name:\"transitioncanceled transitionend\",self:!0,el:function(){return this.item},handler:function(){Ue.cancel(this.$el)}},{name:\"itemtranslatein itemtranslateout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.dir;Ue.cancel(this.$el),He(this.$el,this.getCss(oo(e,r,i)))}}]};function ro(t){return u(t,\"in\")}function oo(t,e,n){return n/=2,ro(t)?e<0?1-n:n:e<0?n:1-n}var so,ao=X({},Ar,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(t){return 1-He(t,\"opacity\")},translate:function(t){return[{opacity:1-t,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:_r(1.5),zIndex:0},{zIndex:-1}]},percent:function(t){return 1-He(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:_r(1+.5*t),zIndex:0},{zIndex:-1}]}},pull:{show:function(t){return t<0?[{transform:Nr(30),zIndex:-1},{transform:Nr(),zIndex:0}]:[{transform:Nr(-100),zIndex:0},{transform:Nr(),zIndex:-1}]},percent:function(t,e,n){return n<0?1-Cr(e):Cr(t)},translate:function(t,e){return e<0?[{transform:Nr(30*t),zIndex:-1},{transform:Nr(-100*(1-t)),zIndex:0}]:[{transform:Nr(100*-t),zIndex:0},{transform:Nr(30*(1-t)),zIndex:-1}]}},push:{show:function(t){return t<0?[{transform:Nr(100),zIndex:0},{transform:Nr(),zIndex:-1}]:[{transform:Nr(-30),zIndex:-1},{transform:Nr(),zIndex:0}]},percent:function(t,e,n){return 0<n?1-Cr(e):Cr(t)},translate:function(t,e){return e<0?[{transform:Nr(100*t),zIndex:0},{transform:Nr(-30*(1-t)),zIndex:-1}]:[{transform:Nr(-30*t),zIndex:-1},{transform:Nr(100*(1-t)),zIndex:0}]}}}),ho={mixins:[ti,zr,Xr],props:{ratio:String,minHeight:Number,maxHeight:Number},data:{ratio:\"16:9\",minHeight:!1,maxHeight:!1,selList:\".uk-slideshow-items\",attrItem:\"uk-slideshow-item\",selNav:\".uk-slideshow-nav\",Animations:ao},update:{read:function(){var t=this.ratio.split(\":\").map(Number),e=t[0],n=t[1];return n=n*this.list.offsetWidth/e||0,this.minHeight&&(n=Math.max(this.minHeight,n)),this.maxHeight&&(n=Math.min(this.maxHeight,n)),{height:n-hn(this.list,\"content-box\")}},write:function(t){var e=t.height;He(this.list,\"minHeight\",e)},events:[\"resize\"]}},co={mixins:[ti,xr],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:\"uk-sortable-item\",clsPlaceholder:\"uk-sortable-placeholder\",clsDrag:\"uk-sortable-drag\",clsDragState:\"uk-drag\",clsBase:\"uk-sortable\",clsNoDrag:\"uk-sortable-nodrag\",clsEmpty:\"uk-sortable-empty\",clsCustom:\"\",handle:!1},created:function(){var o=this;[\"init\",\"start\",\"move\",\"end\"].forEach(function(t){var r=o[t];o[t]=function(t){o.scrollY=window.pageYOffset;var e=Wt(t,\"page\"),n=e.x,i=e.y;o.pos={x:n,y:i},r(t)}})},events:{name:ne,passive:!1,handler:\"init\"},update:{write:function(){if(this.clsEmpty&&Oe(this.$el,this.clsEmpty,P(this.$el.children)),He(this.handle?Te(this.handle,this.$el):this.$el.children,{touchAction:\"none\",userSelect:\"none\"}),this.drag){en(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var t,e=en(this.drag),n=e.top,i=n+e.height;0<n&&n<this.scrollY?t=this.scrollY-5:i<on(document)&&i>on(window)+this.scrollY&&(t=this.scrollY+5),t&&setTimeout(function(){return mn(window,t)},5)}}},methods:{init:function(t){var e=t.target,n=t.button,i=t.defaultPrevented,r=V(this.$el.children).filter(function(t){return _t(e,t)})[0];!r||i||0<n||Ct(e)||_t(e,\".\"+this.clsNoDrag)||this.handle&&!_t(e,this.handle)||(t.preventDefault(),this.touched=[this],this.placeholder=r,this.origin=X({target:e,index:ce(r)},this.pos),Mt(document,ie,this.move),Mt(document,re,this.end),Mt(window,\"scroll\",this.scroll),this.threshold||this.start(t))},start:function(t){this.drag=fe(this.$container,this.placeholder.outerHTML.replace(/^<li/i,\"<div\").replace(/li>$/i,\"div>\")),He(this.drag,X({boxSizing:\"border-box\",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},He(this.placeholder,[\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"paddingBottom\"]))),it(this.drag,\"uk-no-boot\",\"\"),Ae(this.drag,this.clsDrag,this.clsCustom),on(this.drag.firstElementChild,on(this.placeholder.firstElementChild));var e=en(this.placeholder),n=e.left,i=e.top;X(this.origin,{left:n-this.pos.x,top:i-this.pos.y}),Ae(this.placeholder,this.clsPlaceholder),Ae(this.$el.children,this.clsItem),Ae(document.documentElement,this.clsDragState),Bt(this.$el,\"start\",[this,this.placeholder]),this.move(t)},move:function(t){if(this.drag){this.$emit();var e=\"mousemove\"===t.type?t.target:document.elementFromPoint(this.pos.x-window.pageXOffset,this.pos.y-window.pageYOffset),n=this.getSortable(e),i=this.getSortable(this.placeholder),r=n!==i;if(n&&!_t(e,this.placeholder)&&(!r||n.group&&n.group===i.group)){if(e=n.$el===e.parentNode&&e||V(n.$el.children).filter(function(t){return _t(e,t)})[0],r)i.remove(this.placeholder);else if(!e)return;n.insert(this.placeholder,e),y(this.touched,n)||this.touched.push(n)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(t)},end:function(t){if(Ot(document,ie,this.move),Ot(document,re,this.end),Ot(window,\"scroll\",this.scroll),this.drag){var e=this.getSortable(this.placeholder);this===e?this.origin.index!==ce(this.placeholder)&&Bt(this.$el,\"moved\",[this,this.placeholder]):(Bt(e.$el,\"added\",[e,this.placeholder]),Bt(this.$el,\"removed\",[this,this.placeholder])),Bt(this.$el,\"stop\",[this,this.placeholder]),ve(this.drag),this.drag=null;var n=this.touched.map(function(t){return t.clsPlaceholder+\" \"+t.clsItem}).join(\" \");this.touched.forEach(function(t){return Ce(t.$el.children,n)}),Ce(document.documentElement,this.clsDragState)}else\"touchend\"===t.type&&t.target.click()},scroll:function(){var t=window.pageYOffset;t!==this.scrollY&&(this.pos.y+=t-this.scrollY,this.scrollY=t,this.$emit())},insert:function(t,e){var n=this;Ae(this.$el.children,this.clsItem);function i(){e?!_t(t,n.$el)||function(t,e){return t.parentNode===e.parentNode&&ce(t)>ce(e)}(t,e)?pe(e,t):me(e,t):fe(n.$el,t)}this.animation?this.animate(i):i()},remove:function(t){_t(t,this.$el)&&(He(this.handle?Te(this.handle,t):t,{touchAction:\"\",userSelect:\"\"}),this.animation?this.animate(function(){return ve(t)}):ve(t))},getSortable:function(t){return t&&(this.$getComponent(t,\"sortable\")||this.getSortable(t.parentNode))}}};var uo,lo,fo,po=[],mo={mixins:[Qi,ei,ci],args:\"title\",props:{delay:Number,title:String},data:{pos:\"top\",title:\"\",delay:0,animation:[\"uk-animation-scale-up\"],duration:100,cls:\"uk-active\",clsPos:\"uk-tooltip\"},beforeConnect:function(){this._hasTitle=rt(this.$el,\"title\"),it(this.$el,{title:\"\",\"aria-expanded\":!1})},disconnected:function(){this.hide(),it(this.$el,{title:this._hasTitle?this.title:null,\"aria-expanded\":null})},methods:{show:function(){var e=this;this.isActive()||(po.forEach(function(t){return t.hide()}),po.push(this),this._unbind=Mt(document,re,function(t){return!_t(t.target,e.$el)&&e.hide()}),clearTimeout(this.showTimer),this.showTimer=setTimeout(function(){e._show(),e.hideTimer=setInterval(function(){Et(e.$el)||e.hide()},150)},this.delay))},hide:function(){!this.isActive()||bt(this.$el,\"input\")&&this.$el===document.activeElement||(po.splice(po.indexOf(this),1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),it(this.$el,\"aria-expanded\",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&ve(this.tooltip),this.tooltip=!1,this._unbind())},_show:function(){this.tooltip=fe(this.container,'<div class=\"'+this.clsPos+'\" aria-expanded=\"true\" aria-hidden> <div class=\"'+this.clsPos+'-inner\">'+this.title+\"</div> </div>\"),this.positionAt(this.tooltip,this.$el),this.origin=\"y\"===this.getAxis()?dn(this.dir)+\"-\"+this.align:this.align+\"-\"+dn(this.dir),this.toggleElement(this.tooltip,!0)},isActive:function(){return y(po,this)}},events:(so={focus:\"show\",blur:\"hide\"},so[oe+\" \"+se]=function(t){jt(t)||(t.type===oe?this.show():this.hide())},so[ne]=function(t){jt(t)&&(this.isActive()?this.hide():this.show())},so)},go={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:\"uk-dragover\",concurrent:1,maxSize:0,method:\"POST\",mime:!1,msgInvalidMime:\"Invalid File Type: %s\",msgInvalidName:\"Invalid File Name: %s\",msgInvalidSize:\"Invalid File Size: %s Kilobytes Max\",multiple:!1,name:\"files[]\",params:{},type:\"\",url:\"\",abort:Q,beforeAll:Q,beforeSend:Q,complete:Q,completeAll:Q,error:Q,fail:Q,load:Q,loadEnd:Q,loadStart:Q,progress:Q},events:{change:function(t){bt(t.target,'input[type=\"file\"]')&&(t.preventDefault(),t.target.files&&this.upload(t.target.files),t.target.value=\"\")},drop:function(t){wo(t);var e=t.dataTransfer;e&&e.files&&(Ce(this.$el,this.clsDragover),this.upload(e.files))},dragenter:function(t){wo(t)},dragover:function(t){wo(t),Ae(this.$el,this.clsDragover)},dragleave:function(t){wo(t),Ce(this.$el,this.clsDragover)}},methods:{upload:function(t){var i=this;if(t.length){Bt(this.$el,\"upload\",[t]);for(var e=0;e<t.length;e++){if(this.maxSize&&1e3*this.maxSize<t[e].size)return void this.fail(this.msgInvalidSize.replace(\"%s\",this.maxSize));if(this.allow&&!vo(this.allow,t[e].name))return void this.fail(this.msgInvalidName.replace(\"%s\",this.allow));if(this.mime&&!vo(this.mime,t[e].type))return void this.fail(this.msgInvalidMime.replace(\"%s\",this.mime))}this.multiple||(t=[t[0]]),this.beforeAll(this,t);var r=function(t,e){for(var n=[],i=0;i<t.length;i+=e){for(var r=[],o=0;o<e;o++)r.push(t[i+o]);n.push(r)}return n}(t,this.concurrent),o=function(t){var e=new FormData;for(var n in t.forEach(function(t){return e.append(i.name,t)}),i.params)e.append(n,i.params[n]);Kt(i.url,{data:e,method:i.method,responseType:i.type,beforeSend:function(t){var e=t.xhr;e.upload&&Mt(e.upload,\"progress\",i.progress),[\"loadStart\",\"load\",\"loadEnd\",\"abort\"].forEach(function(t){return Mt(e,t.toLowerCase(),i[t])}),i.beforeSend(t)}}).then(function(t){i.complete(t),r.length?o(r.shift()):i.completeAll(t)},function(t){return i.error(t)})};o(r.shift())}}}};function vo(t,e){return e.match(new RegExp(\"^\"+t.replace(/\\//g,\"\\\\/\").replace(/\\*\\*/g,\"(\\\\/[^\\\\/]+)*\").replace(/\\*/g,\"[^\\\\/]+\").replace(/((?!\\\\))\\?/g,\"$1.\")+\"$\",\"i\"))}function wo(t){t.preventDefault(),t.stopPropagation()}function bo(){xo(document.body,lo),xn.flush(),new MutationObserver(function(t){return t.forEach(yo)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),uo._initialized=!0}function yo(t){var e=t.target;(\"attributes\"!==t.type?function(t){for(var e=t.addedNodes,n=t.removedNodes,i=0;i<e.length;i++)xo(e[i],lo);for(var r=0;r<n.length;r++)xo(n[r],fo);return!0}(t):function(t){var e=t.target,n=t.attributeName;if(\"href\"===n)return!0;var i=Pn(n);if(!(i&&i in uo))return;if(rt(e,n))return uo[i](e),!0;var r=uo.getComponent(e,i);if(r)return r.$destroy(),!0}(t))&&uo.update(e)}function xo(t,e){if(1===t.nodeType&&!rt(t,\"uk-no-boot\"))for(e(t),t=t.firstElementChild;t;){var n=t.nextElementSibling;xo(t,e),t=n}}return Hn.component(\"countdown\",wr),Hn.component(\"filter\",Sr),Hn.component(\"lightbox\",Fr),Hn.component(\"lightboxPanel\",Pr),Hn.component(\"notification\",Vr),Hn.component(\"parallax\",Ur),Hn.component(\"slider\",no),Hn.component(\"sliderParallax\",io),Hn.component(\"slideshow\",ho),Hn.component(\"slideshowParallax\",io),Hn.component(\"sortable\",co),Hn.component(\"tooltip\",mo),Hn.component(\"upload\",go),lo=(uo=Hn).connect,fo=uo.disconnect,\"MutationObserver\"in window&&(document.body?bo():new MutationObserver(function(){document.body&&(this.disconnect(),bo())}).observe(document,{childList:!0,subtree:!0})),Hn});","import App from \"./App.svelte\";\nimport \"./global.css\";\nimport \"./fonts.css\";\nimport \"/assets/lato-latin-ext.woff2\";\nimport \"/assets/lato-latin.woff2\";\nimport \"/assets/budibase-logo.png\";\nimport \"/assets/budibase-logo-only.png\";\nimport \"uikit/dist/css/uikit.min.css\";\nimport \"uikit/dist/js/uikit.min.js\";\n\nconst app = new App({\n\ttarget: document.getElementById(\"app\")\n});\n\n\n"],"names":["union","reduce","generate","isUndefined","cloneDeep","split","flow","trim","split$1","replace","isArray$1","join$1","dropRight","takeRight","head","isUndefined$1","isNull","isNaN$1","reduce$1","isEmpty","constant","some","isString","tail","includes","startsWith","findIndex","isInteger","isDate","toNumber","map","filter","compileExpression$1","compileCode$1","isEmpty$1","countBy","keys","includes$1","last","find","constant$1","take","first","intersection","has","merge","mapValues","isBoolean","isNumber","isObjectLike","isNull$1","has$1","isNumber$1","isString$1","file","assign","clone","values","init","find$1","max","each$1","keys$1","flatten","isBoolean$1","defaultCase$1","every","uniqBy","join$2","concat","uniqWith","each","difference","common","events","getNode","hierarchy","hierarchyFunctions","constructHierarchy","keyBy","allTypes","validateActions","validateTriggers","generateFullPermissions","getNewAccessLevel","validateAccessLevels","sortBy","groupBy","initialise","this","feather","join","UIkit","h","index"],"mappings":"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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,C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AC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,OAAO,EAAE,CAAC,CA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CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,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C,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAA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,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC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C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAA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"}