{"version":3,"sources":["../../.yarn/cache/browser-pack-npm-6.1.0-67557e011b-9e5993d3ee.zip/node_modules/browser-pack/_prelude.js","public/ecmascript/collections/base.js","public/ecmascript/components/library_links/collections/libraries.js","public/ecmascript/components/library_links/main.js","public/ecmascript/components/library_links/models/library.js","public/ecmascript/components/library_links/templates/completeList.html.js","public/ecmascript/components/library_links/templates/heading.html.js","public/ecmascript/components/library_links/templates/selectBox.html.js","public/ecmascript/components/library_links/views/complete_list.js","public/ecmascript/components/library_links/views/layout.js","public/ecmascript/components/library_links/views/select_autocomplete_box.js","public/ecmascript/models/base.js","public/ecmascript/pages/library_links.js","public/ecmascript/templates/loader.html.js","public/ecmascript/util/keycodes.js","public/ecmascript/views/base.js"],"names":[],"mappings":"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","file":"library_links.bundle.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n const model = new LibraryModel();\n const collection = new LibraryCollection();\n const layoutView = new LayoutView({target, model, collection}); // eslint-disable-line no-unused-vars\n const selectView = new SelectView({target, model, collection}); // eslint-disable-line no-unused-vars\n const completeListView = new CompleteListView({target, model, collection}); // eslint-disable-line no-unused-vars\n\n collection.fetch();\n};\n\nexport default createComponent;\n","import BaseModel from '../../../models/base';\n\nconst LibraryModel = BaseModel.extend({\n idAttribute: 'branchId'\n});\n\nexport default LibraryModel;\n","const { html } = window;\n\nexport default ({ members }) => `\n
\n
\n ${members && members.map((library) =>\n `
`${child.branchName.toLowerCase().replace(/ /g, '')}`).join(' ') : ''}\">\n
\n
\n\n ${library.attributes.childBranches && library.attributes.childBranches.length ?\n `\n ${library.attributes.branchName}\n ` :\n `\n ${library.attributes.branchName}\n `}\n ${library.attributes.childBranches && library.attributes.childBranches.length ? `\n ` : ''}\n\n \n \n
\n
    \n ${library.attributes.childBranches && library.attributes.childBranches.map((child) =>\n `
  • ${child.branchName}
  • `\n ).join('')}\n
\n
\n
\n
\n ${html('getACard')}\n ${html('members.mainWebsite')}\n ${library.attributes.supportUrl ?\n `${html('getSupport')}`\n : library.attributes.supportEmail ?\n `${html('getSupport')}`\n : ''}\n
\n
`\n ).join('')}\n
\n
\n`;\n","const { html } = window;\n\nexport default ({ members }) => `\n
\n
\n
\n

${html('libraryLinks')}

\n ${!members || !members.length ? html('members.noLibLinks') : ''}\n
\n
\n
\n`;\n","const { html } = window;\n\nexport default ({ members, text}) => `\n
\n
\n \n ${members && members.map((library) => `\n\n \n\n \n\n
${text('members.noLibrariesFound')}
\n
\n
\n`;\n","import BaseView from '../../../views/base';\nimport CompleteListTemplate from '../templates/completeList.html';\nimport keycode from '../../../util/keycodes.js';\n\nconst CompleteListView = BaseView.extend({\n events: {\n 'click .js-complete-list-link': 'toggleCompleteList',\n 'click .js-toggle-children': 'toggleChildren',\n 'keypress .js-toggle-children': 'toggleChildren',\n },\n\n initialize({ target, model, collection }) {\n this.target = target;\n this.model = model;\n this.libraries = collection;\n this.listenTo(this.libraries, 'sync', this.maybeRender);\n this.template = CompleteListTemplate;\n },\n\n toggleChildren(evt) {\n const branchId = $(evt.target)\n .closest('.js-toggle-children')\n .data('branchid');\n const $children = $(`.js-children-container.js-${branchId}`);\n const $childrenList = $children.children('.js-child-branches');\n const $arrow = $(`.js-arrow.js-branch-${branchId}`);\n const $toggleLink = $(evt.target)\n .closest('.js-toggle-children')\n .children('.js-parentBranch');\n\n const expandKeyPressed =\n evt.which === keycode.ENTER ||\n evt.which === keycode.SPACE ||\n evt.which === keycode.RIGHT ||\n evt.which === keycode.LEFT;\n\n if (\n $children.children('.js-child-branches').children().length &&\n (evt.type === 'click' || expandKeyPressed)\n ) {\n $arrow.removeClass('icon-forward-arrow icon-down-arrow');\n\n if ($children.is(':visible')) {\n $children.hide();\n $arrow.addClass('icon-forward-arrow');\n $childrenList.attr('aria-hidden', true);\n $toggleLink.attr('aria-expanded', false);\n } else {\n $children.show().focus();\n $arrow.addClass('icon-down-arrow');\n $childrenList.attr('aria-hidden', false);\n $toggleLink.attr('aria-expanded', true);\n }\n }\n },\n\n afterRender() {\n this.$('.js-support-button')\n .filter((index, target) => !$(target).attr('href'))\n .addClass('hideMe');\n },\n\n maybeRender() {\n if (this.libraries.models.length) {\n this.render();\n }\n },\n\n getTemplateData() {\n return {\n members: this.libraries.models,\n };\n },\n\n onClose() {\n this.undelegateEvents();\n this.target.removeData().unbind();\n this.target.empty();\n },\n});\n\nexport default CompleteListView;\n","import BaseView from '../../../views/base';\nimport keycode from '../../../util/keycodes.js';\nimport HeadingTemplate from '../templates/heading.html';\n\nconst LayoutView = BaseView.extend({\n events: {\n 'keypress .js-members-container': 'keyPressEvent',\n },\n\n initialize({ target, model, collection }) {\n this.target = target;\n this.model = model;\n this.libraries = collection;\n this.listenTo(this.libraries, 'sync', this.render);\n this.template = HeadingTemplate;\n this.renderLoader();\n },\n\n keyPressEvent(e) {\n if (\n (e.which === keycode.ENTER || e.which === keycode.SPACE) &&\n $('.js-select-library').is(':focus')\n ) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n\n getTemplateData() {\n return {\n members: this.libraries.models,\n };\n },\n\n onClose() {\n this.undelegateEvents();\n this.target.removeData().unbind();\n this.target.empty();\n },\n});\n\nexport default LayoutView;\n","import BaseView from '../../../views/base';\nimport SelectBoxTemplate from '../templates/selectBox.html';\n\nconst SelectView = BaseView.extend({\n events: {\n 'input .js-select-library-autocomplete': 'filterShownLibraries',\n 'focus .js-select-library-autocomplete': 'onSelectFocus',\n 'blur .js-select-library-autocomplete': 'onSelectBlur',\n 'click .js-clear-input': 'clearInput',\n },\n\n initialize({ target, model, collection }) {\n this.target = target;\n this.model = model;\n this.libraries = collection;\n this.template = SelectBoxTemplate;\n this.listenTo(this.libraries, 'sync', this.maybeRender);\n },\n\n onSelectFocus() {\n this.$('.js-select-library-autocomplete')\n .addClass('is-focused')\n .removeClass('is-blur');\n },\n\n onSelectBlur() {\n this.$('.js-select-library-autocomplete')\n .removeClass('is-focused')\n .addClass('is-blur');\n this.$el.find('.js-no-matches-found').hide();\n },\n\n filterShownLibraries(evt) {\n const currentVal = $(evt.target).val().toLowerCase().replace(/ /g, '');\n const $noMatchesFound = this.$el.find('.js-no-matches-found');\n\n if (currentVal === '') {\n $('.js-branch').show();\n $('.js-clear-input').hide();\n $noMatchesFound.hide();\n } else {\n $('.js-branch').hide();\n $(`.js-branch[class*=\"${currentVal}\"]`).show();\n $('.js-clear-input').show();\n\n if (!$(`.js-branch[class*=\"${currentVal}\"]`).length) {\n $noMatchesFound.show();\n } else {\n $noMatchesFound.hide();\n }\n }\n },\n\n clearInput() {\n $('.js-select-library-autocomplete').val('');\n $('.js-branch').show();\n $('.js-clear-input').hide();\n this.$el.find('.js-no-matches-found').hide();\n },\n\n getTemplateData() {\n return {\n members: this.libraries.models,\n };\n },\n\n maybeRender() {\n if (this.libraries.models.length) {\n this.render();\n }\n },\n\n onClose() {\n this.undelegateEvents();\n this.target.removeData().unbind();\n this.target.empty();\n },\n});\n\nexport default SelectView;\n","// import when we move more to modules\nexport default window.Backbone.Model;\n","import createComponent from '../components/library_links/main.js';\n\n$(() => {\n const target = document.querySelector('.js-members-container');\n createComponent({target});\n});\n","const { html } = window;\n\nexport default () => `\n
\n

\n ${html('loading')}\n
\n`;\n","const keys = Object.freeze({\n TAB: 9,\n ENTER: 13,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32,\n ESC: 27\n});\nexport default keys;\n","// import when we move more to modules\nconst Backbone = window.Backbone;\nimport LoaderTemplate from '../templates/loader.html';\n\nconst BaseView = Backbone.View.extend({\n close() {\n this.trigger('close');\n this.remove();\n this.unbind();\n this.stopListening();\n // Views should define this in their extend declaration\n this.onClose && this.onClose();\n return this;\n },\n\n getHtml({ templateData } = {}) {\n const globals = {\n html: window.html,\n text: window.text,\n };\n const data = templateData || this.getTemplateData();\n return this.template(_.extend({}, data, globals));\n },\n\n buildElement(options) {\n return this.$el.html(this.getHtml(options));\n },\n\n doRender(options) {\n this.buildElement(options);\n if (this.target && !this.attached) {\n this.beforeAttach && this.beforeAttach();\n this.attach();\n this.attached = true;\n }\n },\n\n attach() {\n if (!(this.$target instanceof Backbone.$)) {\n this.$target = Backbone.$(this.target);\n }\n this.$target.append(this.$el);\n },\n\n render(options) {\n this.clearLoader();\n\n if (this.beforeRender) {\n this.beforeRender();\n }\n this.doRender(options);\n if (this.afterRender) {\n this.afterRender();\n }\n return this;\n },\n\n getTemplateData() {\n return (this.model && this.model.toJSON()) || {};\n },\n\n renderLoader() {\n const elem = $(this.target).length ? $(this.target) : this.$el;\n elem.empty().append(LoaderTemplate({ html: window.html }));\n },\n\n clearLoader() {\n // Clear loader if it exists\n const $loader = $('.js-es6loader');\n if ($loader.length) {\n $loader.remove();\n }\n },\n});\n\nexport default BaseView;\n"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy55YXJuL2NhY2hlL2Jyb3dzZXItcGFjay1ucG0tNi4xLjAtNjc1NTdlMDExYi05ZTU5OTNkM2VlLnppcC9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwicHVibGljL2VjbWFzY3JpcHQvY29sbGVjdGlvbnMvYmFzZS5qcyIsInB1YmxpYy9lY21hc2NyaXB0L2NvbXBvbmVudHMvbGlicmFyeV9saW5rcy9jb2xsZWN0aW9ucy9saWJyYXJpZXMuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC9jb21wb25lbnRzL2xpYnJhcnlfbGlua3MvbWFpbi5qcyIsInB1YmxpYy9lY21hc2NyaXB0L2NvbXBvbmVudHMvbGlicmFyeV9saW5rcy9tb2RlbHMvbGlicmFyeS5qcyIsInB1YmxpYy9lY21hc2NyaXB0L2NvbXBvbmVudHMvbGlicmFyeV9saW5rcy90ZW1wbGF0ZXMvY29tcGxldGVMaXN0Lmh0bWwuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC9jb21wb25lbnRzL2xpYnJhcnlfbGlua3MvdGVtcGxhdGVzL2hlYWRpbmcuaHRtbC5qcyIsInB1YmxpYy9lY21hc2NyaXB0L2NvbXBvbmVudHMvbGlicmFyeV9saW5rcy90ZW1wbGF0ZXMvc2VsZWN0Qm94Lmh0bWwuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC9jb21wb25lbnRzL2xpYnJhcnlfbGlua3Mvdmlld3MvY29tcGxldGVfbGlzdC5qcyIsInB1YmxpYy9lY21hc2NyaXB0L2NvbXBvbmVudHMvbGlicmFyeV9saW5rcy92aWV3cy9sYXlvdXQuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC9jb21wb25lbnRzL2xpYnJhcnlfbGlua3Mvdmlld3Mvc2VsZWN0X2F1dG9jb21wbGV0ZV9ib3guanMiLCJwdWJsaWMvZWNtYXNjcmlwdC9tb2RlbHMvYmFzZS5qcyIsInB1YmxpYy9lY21hc2NyaXB0L3BhZ2VzL2xpYnJhcnlfbGlua3MuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC90ZW1wbGF0ZXMvbG9hZGVyLmh0bWwuanMiLCJwdWJsaWMvZWNtYXNjcmlwdC91dGlsL2tleWNvZGVzLmpzIiwicHVibGljL2VjbWFzY3JpcHQvdmlld3MvYmFzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0FDQUE7cUJBQ2UsT0FBTyxRQUFQLENBQWdCLFU7Ozs7Ozs7OztBQ0QvQjs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNLG9CQUFvQixrQkFBZSxNQUFmLENBQXNCOztBQUU1QyxXQUFPLG9CQUZxQzs7QUFJNUMsT0FKNEMsaUJBSXRDO0FBQ0YsZUFBTyxPQUFPLEdBQVAsQ0FBVyxPQUFPLE1BQVAsQ0FBYyxXQUF6QixDQUFQO0FBQ0g7QUFOMkMsQ0FBdEIsQ0FBMUI7O3FCQVNlLGlCOzs7Ozs7Ozs7QUNaZjs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNLGtCQUFrQixTQUFsQixlQUFrQixPQUFjO0FBQUEsUUFBWixNQUFZLFFBQVosTUFBWTs7QUFDbEMsUUFBTSxRQUFRLElBQUksb0JBQUosRUFBZDtBQUNBLFFBQU0sYUFBYSxJQUFJLHNCQUFKLEVBQW5CO0FBQ0EsUUFBTSxhQUFhLElBQUksbUJBQUosQ0FBZSxFQUFDLGNBQUQsRUFBUyxZQUFULEVBQWdCLHNCQUFoQixFQUFmLENBQW5CLENBSGtDLENBRzhCO0FBQ2hFLFFBQU0sYUFBYSxJQUFJLG9DQUFKLENBQWUsRUFBQyxjQUFELEVBQVMsWUFBVCxFQUFnQixzQkFBaEIsRUFBZixDQUFuQixDQUprQyxDQUk4QjtBQUNoRSxRQUFNLG1CQUFtQixJQUFJLDBCQUFKLENBQXFCLEVBQUMsY0FBRCxFQUFTLFlBQVQsRUFBZ0Isc0JBQWhCLEVBQXJCLENBQXpCLENBTGtDLENBSzBDOztBQUU1RSxlQUFXLEtBQVg7QUFDSCxDQVJEOztxQkFVZSxlOzs7Ozs7Ozs7QUNoQmY7Ozs7OztBQUVBLElBQU0sZUFBZSxrQkFBVSxNQUFWLENBQWlCO0FBQ2xDLGlCQUFhO0FBRHFCLENBQWpCLENBQXJCOztxQkFJZSxZOzs7Ozs7Oztj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QUE4RGxDLGVBOURrQyx5QkE4RHBCO0FBQ1Y7QUFDQSxZQUFNLFVBQVUsRUFBRSxlQUFGLENBQWhCO0FBQ0EsWUFBSSxRQUFRLE1BQVosRUFBb0I7QUFDaEIsb0JBQVEsTUFBUjtBQUNIO0FBQ0o7QUFwRWlDLENBQXJCLENBQWpCOztxQkF1RWUsUSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIi8vIGltcG9ydCB3aGVuIHdlIG1vdmUgbW9yZSB0byBtb2R1bGVzXG5leHBvcnQgZGVmYXVsdCB3aW5kb3cuQmFja2JvbmUuQ29sbGVjdGlvbjtcbiIsImltcG9ydCBCYXNlQ29sbGVjdGlvbiBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9iYXNlJztcbmltcG9ydCBMaWJyYXJ5TW9kZWwgZnJvbSAnLi4vbW9kZWxzL2xpYnJhcnknO1xuXG5jb25zdCBMaWJyYXJ5Q29sbGVjdGlvbiA9IEJhc2VDb2xsZWN0aW9uLmV4dGVuZCh7XG5cbiAgICBtb2RlbDogTGlicmFyeU1vZGVsLFxuXG4gICAgdXJsKCkge1xuICAgICAgICByZXR1cm4gd2luZG93LnVybCh3aW5kb3cucm91dGVzLmdldEJyYW5jaGVzKTtcbiAgICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTGlicmFyeUNvbGxlY3Rpb247XG4iLCJpbXBvcnQgTGlicmFyeU1vZGVsIGZyb20gJy4vbW9kZWxzL2xpYnJhcnknO1xuaW1wb3J0IExpYnJhcnlDb2xsZWN0aW9uIGZyb20gJy4vY29sbGVjdGlvbnMvbGlicmFyaWVzJztcbmltcG9ydCBMYXlvdXRWaWV3IGZyb20gJy4vdmlld3MvbGF5b3V0LmpzJztcbmltcG9ydCBTZWxlY3RWaWV3IGZyb20gJy4vdmlld3Mvc2VsZWN0X2F1dG9jb21wbGV0ZV9ib3gnO1xuaW1wb3J0IENvbXBsZXRlTGlzdFZpZXcgZnJvbSAnLi92aWV3cy9jb21wbGV0ZV9saXN0JztcblxuY29uc3QgY3JlYXRlQ29tcG9uZW50ID0gKHt0YXJnZXR9KSA9PiB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTGlicmFyeU1vZGVsKCk7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBMaWJyYXJ5Q29sbGVjdGlvbigpO1xuICAgIGNvbnN0IGxheW91dFZpZXcgPSBuZXcgTGF5b3V0Vmlldyh7dGFyZ2V0LCBtb2RlbCwgY29sbGVjdGlvbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgY29uc3Qgc2VsZWN0VmlldyA9IG5ldyBTZWxlY3RWaWV3KHt0YXJnZXQsIG1vZGVsLCBjb2xsZWN0aW9ufSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCBjb21wbGV0ZUxpc3RWaWV3ID0gbmV3IENvbXBsZXRlTGlzdFZpZXcoe3RhcmdldCwgbW9kZWwsIGNvbGxlY3Rpb259KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gICAgY29sbGVjdGlvbi5mZXRjaCgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQ29tcG9uZW50O1xuIiwiaW1wb3J0IEJhc2VNb2RlbCBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZSc7XG5cbmNvbnN0IExpYnJhcnlNb2RlbCA9IEJhc2VNb2RlbC5leHRlbmQoe1xuICAgIGlkQXR0cmlidXRlOiAnYnJhbmNoSWQnXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTGlicmFyeU1vZGVsO1xuIiwiY29uc3QgeyBodG1sIH0gPSB3aW5kb3c7XG5cbmV4cG9ydCBkZWZhdWx0ICh7IG1lbWJlcnMgfSkgPT4gYFxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIHNtYWxsLTEyIE1lbWJlcnMtY29tcGxldGVMaXN0V3JhcHBlciBqcy1jb21wbGV0ZS1saXN0XCIgZGF0YS1oaWRkZW49dHJ1ZT5cbiAgICAgICAgJHttZW1iZXJzICYmIG1lbWJlcnMubWFwKChsaWJyYXJ5KSA9PlxuICAgICAgICAgICAgYDxkaXYgY2xhc3M9XCJqcy1icmFuY2ggTWVtYmVycy1icmFuY2hDb250YWluZXIgJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuYnJhbmNoTmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyAvZywgJycpfSBcbiAgICAgICAgICAgICAgICAke2xpYnJhcnkuYXR0cmlidXRlcy5jaGlsZEJyYW5jaGVzICYmIGxpYnJhcnkuYXR0cmlidXRlcy5jaGlsZEJyYW5jaGVzLmxlbmd0aCA/IGxpYnJhcnkuYXR0cmlidXRlcy5jaGlsZEJyYW5jaGVzLm1hcCgoY2hpbGQpID0+IGAke2NoaWxkLmJyYW5jaE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csICcnKX1gKS5qb2luKCcgJykgOiAnJ31cIj5cbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJNZW1iZXJzLWhvcml6QnJlYWtcIi8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgc21hbGwtMTIgbWVkaXVtLTQgTWVtYmVycy1icmFuY2hXcmFwcGVyIGpzLXRvZ2dsZS1jaGlsZHJlbiAkeyFsaWJyYXJ5LmF0dHJpYnV0ZXMuY2hpbGRCcmFuY2hlcyA/ICdpcy1lbXB0eScgOiAnJ31cIiBcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1icmFuY2hpZD1cIiR7bGlicmFyeS5hdHRyaWJ1dGVzLmJyYW5jaElkfVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICR7bGlicmFyeS5hdHRyaWJ1dGVzLmNoaWxkQnJhbmNoZXMgJiYgbGlicmFyeS5hdHRyaWJ1dGVzLmNoaWxkQnJhbmNoZXMubGVuZ3RoID9cbiAgICAgICAgICAgICAgICAgICAgICAgIGA8YSBjbGFzcz1cIk1lbWJlcnMtcGFyZW50QnJhbmNoIGpzLXBhcmVudEJyYW5jaFwiIHRhYmluZGV4PVwiMFwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtbGFiZWw9XCIke2xpYnJhcnkuYXR0cmlidXRlcy5icmFuY2hOYW1lfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGlicmFyeS5hdHRyaWJ1dGVzLmJyYW5jaE5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJNZW1iZXJzLXBhcmVudEJyYW5jaCBqcy1wYXJlbnRCcmFuY2hcIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxhYmVsPVwiJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuYnJhbmNoTmFtZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYnJhcnkuYXR0cmlidXRlcy5icmFuY2hOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPmB9XG4gICAgICAgICAgICAgICAgICAgICR7bGlicmFyeS5hdHRyaWJ1dGVzLmNoaWxkQnJhbmNoZXMgJiYgbGlicmFyeS5hdHRyaWJ1dGVzLmNoaWxkQnJhbmNoZXMubGVuZ3RoID8gYFxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWZvcndhcmQtYXJyb3cgTWVtYmVycy10b2dnbGVDaGlsZHJlbiBqcy1hcnJvdyBqcy1icmFuY2gtJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuYnJhbmNoSWR9XCI+PC9pPmAgOiAnJ31cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNvY2lhbCBsaW5rcyBhcmUgaGlkZGVuIHVudGlsIHVuYmxvY2tlZCBieSB0aHVuZGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiTWVtYmVycy1zb2NpYWxMaW5rcyBoaWRlTWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiTWVtYmVycy1zb2NpYWxMaW5rXCIgYXJpYS1sYWJlbD1cIlwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWZhY2Vib29rXCIgdGl0bGU9XCIke2h0bWwoJ2Zvb3Rlci52aXNpdEZhY2Vib29rJyl9XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiTWVtYmVycy1zb2NpYWxMaW5rXCIgYXJpYS1sYWJlbD1cIlwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLXR3aXR0ZXJcIiB0aXRsZT1cIiR7aHRtbCgnZm9vdGVyLnZpc2l0VHdpdHRlcicpfVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIk1lbWJlcnMtc29jaWFsTGlua1wiIGFyaWEtbGFiZWw9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub3JlZmVycmVyXCIgaHJlZj1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1waW50ZXJlc3RcIiB0aXRsZT1cIiR7aHRtbCgnZm9vdGVyLnZpc2l0UGludGVyZXN0Jyl9XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiTWVtYmVycy1zb2NpYWxMaW5rXCIgYXJpYS1sYWJlbD1cIlwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLXlvdXR1YmVcIiB0aXRsZT1cIiR7aHRtbCgnZm9vdGVyLnZpc2l0WW91dHViZScpfVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiTWVtYmVycy1jaGlsZEJyYW5jaGVzV3JhcHBlciBqcy1jaGlsZHJlbi1jb250YWluZXIganMtJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuYnJhbmNoSWR9IGhpZGVNZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiTWVtYmVycy1jaGlsZEJyYW5jaGVzIGpzLWNoaWxkLWJyYW5jaGVzXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuY2hpbGRCcmFuY2hlcyAmJiBsaWJyYXJ5LmF0dHJpYnV0ZXMuY2hpbGRCcmFuY2hlcy5tYXAoKGNoaWxkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgPGxpIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiTWVtYmVycy1jaGlsZEJyYW5jaFwiPiR7Y2hpbGQuYnJhbmNoTmFtZX08L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oJycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIk1lbWJlcnMtc3VwcG9ydEJ1dHRvbnNXcmFwcGVyIGNvbHVtbnMgc21hbGwtMTIgbWVkaXVtLThcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9yZWZlcnJlclwiIGhyZWY9XCIke2xpYnJhcnkuYXR0cmlidXRlcy5jYXJkQWNxdWlzaXRpb25Vcmx9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiByYWRpdXMgb3V0bGluZSBNZW1iZXJzLXN1cHBvcnRCdXR0b24ganMtc3VwcG9ydC1idXR0b24gdS1hbGxDYXBzIGpzLWdldC1jYXJkXCI+JHtodG1sKCdnZXRBQ2FyZCcpfTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9yZWZlcnJlclwiIGhyZWY9XCIke2xpYnJhcnkuYXR0cmlidXRlcy5icmFuY2hVcmx9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiByYWRpdXMgb3V0bGluZSBqcy1zdXBwb3J0LWJ1dHRvbiBNZW1iZXJzLXN1cHBvcnRCdXR0b24gdS1hbGxDYXBzXCI+JHtodG1sKCdtZW1iZXJzLm1haW5XZWJzaXRlJyl9PC9hPlxuICAgICAgICAgICAgICAgICAgICAke2xpYnJhcnkuYXR0cmlidXRlcy5zdXBwb3J0VXJsID9cbiAgICAgICAgICAgICAgICAgICAgYDxhIHRhYmluZGV4PVwiMFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIiBocmVmPVwiJHtsaWJyYXJ5LmF0dHJpYnV0ZXMuc3VwcG9ydFVybH1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHJhZGl1cyBvdXRsaW5lIGpzLXN1cHBvcnQtYnV0dG9uIE1lbWJlcnMtc3VwcG9ydEJ1dHRvbiB1LWFsbENhcHNcIj4ke2h0bWwoJ2dldFN1cHBvcnQnKX08L2E+YFxuICAgICAgICAgICAgICAgICAgICA6IGxpYnJhcnkuYXR0cmlidXRlcy5zdXBwb3J0RW1haWwgP1xuICAgICAgICAgICAgICAgICAgICBgPGEgdGFiaW5kZXg9XCIwXCIgaHJlZj1cIm1haWx0bzoke2xpYnJhcnkuYXR0cmlidXRlcy5zdXBwb3J0RW1haWx9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiByYWRpdXMgb3V0bGluZSBqcy1zdXBwb3J0LWJ1dHRvbiBlbWFpbCBNZW1iZXJzLXN1cHBvcnRCdXR0b24gdS1hbGxDYXBzXCI+JHtodG1sKCdnZXRTdXBwb3J0Jyl9PC9hPmBcbiAgICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgKS5qb2luKCcnKX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuYDtcbiIsImNvbnN0IHsgaHRtbCB9ID0gd2luZG93O1xuXG5leHBvcnQgZGVmYXVsdCAoeyBtZW1iZXJzIH0pID0+IGBcbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBzbWFsbC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiTWVtYmVycy10aXRsZVwiPlxuICAgICAgICAgICAgPGgxIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiaGVhZGVyLXhzbWFsbCBNZW1iZXJzLWhlYWRpbmdcIj4ke2h0bWwoJ2xpYnJhcnlMaW5rcycpfTwvaDE+XG4gICAgICAgICAgICAkeyFtZW1iZXJzIHx8ICFtZW1iZXJzLmxlbmd0aCA/IGh0bWwoJ21lbWJlcnMubm9MaWJMaW5rcycpIDogJyd9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5gO1xuIiwiY29uc3QgeyBodG1sIH0gPSB3aW5kb3c7XG5cbmV4cG9ydCBkZWZhdWx0ICh7IG1lbWJlcnMsIHRleHR9KSA9PiBgXG48ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cIk1lbWJlcnMtaW5wdXRXcmFwcGVyXCI+XG4gICAgICAgIDxkYXRhbGlzdCBpZD1cImxpYnJhcmllc1wiIGNsYXNzPVwianMtZGF0YWxpc3RcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICR7bWVtYmVycyAmJiBtZW1iZXJzLm1hcCgobGlicmFyeSkgPT4gYDxvcHRpb24gdmFsdWU9XCIke2xpYnJhcnkuYXR0cmlidXRlcy5icmFuY2hOYW1lfVwiPmApLmpvaW4oJycpfVxuICAgICAgICBcbiAgICAgICAgPC9kYXRhbGlzdD5cblxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBsaXN0PVwibGlicmFyaWVzXCIgcGxhY2Vob2xkZXI9XCIke2h0bWwoJ21lbWJlcnMubGlicmFyeUlucHV0UGxhY2Vob2xkZXInKX1cIiBcbiAgICAgICAgICAgIGNsYXNzPVwiTWVtYmVycy1zZWxlY3RBdXRvQ29tcGxldGUganMtc2VsZWN0LWxpYnJhcnktYXV0b2NvbXBsZXRlIGlzLWJsdXJcIiB0YWJpbmRleD1cIjBcIj5cblxuICAgICAgICA8aSBjbGFzcz1cIk1lbWJlcnMtY2xlYXJTZWFyY2gganMtY2xlYXItaW5wdXQgaWNvbi1jbGVhclwiPjwvaT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiTWVtYmVycy1ub01hdGNoZXNGb3VuZCBqcy1uby1tYXRjaGVzLWZvdW5kXCI+JHt0ZXh0KCdtZW1iZXJzLm5vTGlicmFyaWVzRm91bmQnKX08L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuYDtcbiIsImltcG9ydCBCYXNlVmlldyBmcm9tICcuLi8uLi8uLi92aWV3cy9iYXNlJztcbmltcG9ydCBDb21wbGV0ZUxpc3RUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvY29tcGxldGVMaXN0Lmh0bWwnO1xuaW1wb3J0IGtleWNvZGUgZnJvbSAnLi4vLi4vLi4vdXRpbC9rZXljb2Rlcy5qcyc7XG5cbmNvbnN0IENvbXBsZXRlTGlzdFZpZXcgPSBCYXNlVmlldy5leHRlbmQoe1xuICAgIGV2ZW50czoge1xuICAgICAgICAnY2xpY2sgLmpzLWNvbXBsZXRlLWxpc3QtbGluayc6ICd0b2dnbGVDb21wbGV0ZUxpc3QnLFxuICAgICAgICAnY2xpY2sgLmpzLXRvZ2dsZS1jaGlsZHJlbic6ICd0b2dnbGVDaGlsZHJlbicsXG4gICAgICAgICdrZXlwcmVzcyAuanMtdG9nZ2xlLWNoaWxkcmVuJzogJ3RvZ2dsZUNoaWxkcmVuJyxcbiAgICB9LFxuXG4gICAgaW5pdGlhbGl6ZSh7IHRhcmdldCwgbW9kZWwsIGNvbGxlY3Rpb24gfSkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmxpYnJhcmllcyA9IGNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5saWJyYXJpZXMsICdzeW5jJywgdGhpcy5tYXliZVJlbmRlcik7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBDb21wbGV0ZUxpc3RUZW1wbGF0ZTtcbiAgICB9LFxuXG4gICAgdG9nZ2xlQ2hpbGRyZW4oZXZ0KSB7XG4gICAgICAgIGNvbnN0IGJyYW5jaElkID0gJChldnQudGFyZ2V0KVxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5qcy10b2dnbGUtY2hpbGRyZW4nKVxuICAgICAgICAgICAgLmRhdGEoJ2JyYW5jaGlkJyk7XG4gICAgICAgIGNvbnN0ICRjaGlsZHJlbiA9ICQoYC5qcy1jaGlsZHJlbi1jb250YWluZXIuanMtJHticmFuY2hJZH1gKTtcbiAgICAgICAgY29uc3QgJGNoaWxkcmVuTGlzdCA9ICRjaGlsZHJlbi5jaGlsZHJlbignLmpzLWNoaWxkLWJyYW5jaGVzJyk7XG4gICAgICAgIGNvbnN0ICRhcnJvdyA9ICQoYC5qcy1hcnJvdy5qcy1icmFuY2gtJHticmFuY2hJZH1gKTtcbiAgICAgICAgY29uc3QgJHRvZ2dsZUxpbmsgPSAkKGV2dC50YXJnZXQpXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmpzLXRvZ2dsZS1jaGlsZHJlbicpXG4gICAgICAgICAgICAuY2hpbGRyZW4oJy5qcy1wYXJlbnRCcmFuY2gnKTtcblxuICAgICAgICBjb25zdCBleHBhbmRLZXlQcmVzc2VkID1cbiAgICAgICAgICAgIGV2dC53aGljaCA9PT0ga2V5Y29kZS5FTlRFUiB8fFxuICAgICAgICAgICAgZXZ0LndoaWNoID09PSBrZXljb2RlLlNQQUNFIHx8XG4gICAgICAgICAgICBldnQud2hpY2ggPT09IGtleWNvZGUuUklHSFQgfHxcbiAgICAgICAgICAgIGV2dC53aGljaCA9PT0ga2V5Y29kZS5MRUZUO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICRjaGlsZHJlbi5jaGlsZHJlbignLmpzLWNoaWxkLWJyYW5jaGVzJykuY2hpbGRyZW4oKS5sZW5ndGggJiZcbiAgICAgICAgICAgIChldnQudHlwZSA9PT0gJ2NsaWNrJyB8fCBleHBhbmRLZXlQcmVzc2VkKVxuICAgICAgICApIHtcbiAgICAgICAgICAgICRhcnJvdy5yZW1vdmVDbGFzcygnaWNvbi1mb3J3YXJkLWFycm93IGljb24tZG93bi1hcnJvdycpO1xuXG4gICAgICAgICAgICBpZiAoJGNoaWxkcmVuLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgJGNoaWxkcmVuLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkYXJyb3cuYWRkQ2xhc3MoJ2ljb24tZm9yd2FyZC1hcnJvdycpO1xuICAgICAgICAgICAgICAgICRjaGlsZHJlbkxpc3QuYXR0cignYXJpYS1oaWRkZW4nLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAkdG9nZ2xlTGluay5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkY2hpbGRyZW4uc2hvdygpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgJGFycm93LmFkZENsYXNzKCdpY29uLWRvd24tYXJyb3cnKTtcbiAgICAgICAgICAgICAgICAkY2hpbGRyZW5MaXN0LmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICR0b2dnbGVMaW5rLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBhZnRlclJlbmRlcigpIHtcbiAgICAgICAgdGhpcy4kKCcuanMtc3VwcG9ydC1idXR0b24nKVxuICAgICAgICAgICAgLmZpbHRlcigoaW5kZXgsIHRhcmdldCkgPT4gISQodGFyZ2V0KS5hdHRyKCdocmVmJykpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoJ2hpZGVNZScpO1xuICAgIH0sXG5cbiAgICBtYXliZVJlbmRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMubGlicmFyaWVzLm1vZGVscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0VGVtcGxhdGVEYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVtYmVyczogdGhpcy5saWJyYXJpZXMubW9kZWxzLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLnVuZGVsZWdhdGVFdmVudHMoKTtcbiAgICAgICAgdGhpcy50YXJnZXQucmVtb3ZlRGF0YSgpLnVuYmluZCgpO1xuICAgICAgICB0aGlzLnRhcmdldC5lbXB0eSgpO1xuICAgIH0sXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGxldGVMaXN0VmlldztcbiIsImltcG9ydCBCYXNlVmlldyBmcm9tICcuLi8uLi8uLi92aWV3cy9iYXNlJztcbmltcG9ydCBrZXljb2RlIGZyb20gJy4uLy4uLy4uL3V0aWwva2V5Y29kZXMuanMnO1xuaW1wb3J0IEhlYWRpbmdUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvaGVhZGluZy5odG1sJztcblxuY29uc3QgTGF5b3V0VmlldyA9IEJhc2VWaWV3LmV4dGVuZCh7XG4gICAgZXZlbnRzOiB7XG4gICAgICAgICdrZXlwcmVzcyAuanMtbWVtYmVycy1jb250YWluZXInOiAna2V5UHJlc3NFdmVudCcsXG4gICAgfSxcblxuICAgIGluaXRpYWxpemUoeyB0YXJnZXQsIG1vZGVsLCBjb2xsZWN0aW9uIH0pIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5saWJyYXJpZXMgPSBjb2xsZWN0aW9uO1xuICAgICAgICB0aGlzLmxpc3RlblRvKHRoaXMubGlicmFyaWVzLCAnc3luYycsIHRoaXMucmVuZGVyKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IEhlYWRpbmdUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5yZW5kZXJMb2FkZXIoKTtcbiAgICB9LFxuXG4gICAga2V5UHJlc3NFdmVudChlKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChlLndoaWNoID09PSBrZXljb2RlLkVOVEVSIHx8IGUud2hpY2ggPT09IGtleWNvZGUuU1BBQ0UpICYmXG4gICAgICAgICAgICAkKCcuanMtc2VsZWN0LWxpYnJhcnknKS5pcygnOmZvY3VzJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGdldFRlbXBsYXRlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lbWJlcnM6IHRoaXMubGlicmFyaWVzLm1vZGVscyxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy51bmRlbGVnYXRlRXZlbnRzKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0LnJlbW92ZURhdGEoKS51bmJpbmQoKTtcbiAgICAgICAgdGhpcy50YXJnZXQuZW1wdHkoKTtcbiAgICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dFZpZXc7XG4iLCJpbXBvcnQgQmFzZVZpZXcgZnJvbSAnLi4vLi4vLi4vdmlld3MvYmFzZSc7XG5pbXBvcnQgU2VsZWN0Qm94VGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL3NlbGVjdEJveC5odG1sJztcblxuY29uc3QgU2VsZWN0VmlldyA9IEJhc2VWaWV3LmV4dGVuZCh7XG4gICAgZXZlbnRzOiB7XG4gICAgICAgICdpbnB1dCAuanMtc2VsZWN0LWxpYnJhcnktYXV0b2NvbXBsZXRlJzogJ2ZpbHRlclNob3duTGlicmFyaWVzJyxcbiAgICAgICAgJ2ZvY3VzIC5qcy1zZWxlY3QtbGlicmFyeS1hdXRvY29tcGxldGUnOiAnb25TZWxlY3RGb2N1cycsXG4gICAgICAgICdibHVyIC5qcy1zZWxlY3QtbGlicmFyeS1hdXRvY29tcGxldGUnOiAnb25TZWxlY3RCbHVyJyxcbiAgICAgICAgJ2NsaWNrIC5qcy1jbGVhci1pbnB1dCc6ICdjbGVhcklucHV0JyxcbiAgICB9LFxuXG4gICAgaW5pdGlhbGl6ZSh7IHRhcmdldCwgbW9kZWwsIGNvbGxlY3Rpb24gfSkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmxpYnJhcmllcyA9IGNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBTZWxlY3RCb3hUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmxpYnJhcmllcywgJ3N5bmMnLCB0aGlzLm1heWJlUmVuZGVyKTtcbiAgICB9LFxuXG4gICAgb25TZWxlY3RGb2N1cygpIHtcbiAgICAgICAgdGhpcy4kKCcuanMtc2VsZWN0LWxpYnJhcnktYXV0b2NvbXBsZXRlJylcbiAgICAgICAgICAgIC5hZGRDbGFzcygnaXMtZm9jdXNlZCcpXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ2lzLWJsdXInKTtcbiAgICB9LFxuXG4gICAgb25TZWxlY3RCbHVyKCkge1xuICAgICAgICB0aGlzLiQoJy5qcy1zZWxlY3QtbGlicmFyeS1hdXRvY29tcGxldGUnKVxuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdpcy1mb2N1c2VkJylcbiAgICAgICAgICAgIC5hZGRDbGFzcygnaXMtYmx1cicpO1xuICAgICAgICB0aGlzLiRlbC5maW5kKCcuanMtbm8tbWF0Y2hlcy1mb3VuZCcpLmhpZGUoKTtcbiAgICB9LFxuXG4gICAgZmlsdGVyU2hvd25MaWJyYXJpZXMoZXZ0KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWwgPSAkKGV2dC50YXJnZXQpLnZhbCgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCAnJyk7XG4gICAgICAgIGNvbnN0ICRub01hdGNoZXNGb3VuZCA9IHRoaXMuJGVsLmZpbmQoJy5qcy1uby1tYXRjaGVzLWZvdW5kJyk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRWYWwgPT09ICcnKSB7XG4gICAgICAgICAgICAkKCcuanMtYnJhbmNoJykuc2hvdygpO1xuICAgICAgICAgICAgJCgnLmpzLWNsZWFyLWlucHV0JykuaGlkZSgpO1xuICAgICAgICAgICAgJG5vTWF0Y2hlc0ZvdW5kLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQoJy5qcy1icmFuY2gnKS5oaWRlKCk7XG4gICAgICAgICAgICAkKGAuanMtYnJhbmNoW2NsYXNzKj1cIiR7Y3VycmVudFZhbH1cIl1gKS5zaG93KCk7XG4gICAgICAgICAgICAkKCcuanMtY2xlYXItaW5wdXQnKS5zaG93KCk7XG5cbiAgICAgICAgICAgIGlmICghJChgLmpzLWJyYW5jaFtjbGFzcyo9XCIke2N1cnJlbnRWYWx9XCJdYCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgJG5vTWF0Y2hlc0ZvdW5kLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJG5vTWF0Y2hlc0ZvdW5kLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjbGVhcklucHV0KCkge1xuICAgICAgICAkKCcuanMtc2VsZWN0LWxpYnJhcnktYXV0b2NvbXBsZXRlJykudmFsKCcnKTtcbiAgICAgICAgJCgnLmpzLWJyYW5jaCcpLnNob3coKTtcbiAgICAgICAgJCgnLmpzLWNsZWFyLWlucHV0JykuaGlkZSgpO1xuICAgICAgICB0aGlzLiRlbC5maW5kKCcuanMtbm8tbWF0Y2hlcy1mb3VuZCcpLmhpZGUoKTtcbiAgICB9LFxuXG4gICAgZ2V0VGVtcGxhdGVEYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVtYmVyczogdGhpcy5saWJyYXJpZXMubW9kZWxzLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBtYXliZVJlbmRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMubGlicmFyaWVzLm1vZGVscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy51bmRlbGVnYXRlRXZlbnRzKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0LnJlbW92ZURhdGEoKS51bmJpbmQoKTtcbiAgICAgICAgdGhpcy50YXJnZXQuZW1wdHkoKTtcbiAgICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdFZpZXc7XG4iLCIvLyBpbXBvcnQgd2hlbiB3ZSBtb3ZlIG1vcmUgdG8gbW9kdWxlc1xuZXhwb3J0IGRlZmF1bHQgd2luZG93LkJhY2tib25lLk1vZGVsO1xuIiwiaW1wb3J0IGNyZWF0ZUNvbXBvbmVudCBmcm9tICcuLi9jb21wb25lbnRzL2xpYnJhcnlfbGlua3MvbWFpbi5qcyc7XG5cbiQoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1tZW1iZXJzLWNvbnRhaW5lcicpO1xuICAgIGNyZWF0ZUNvbXBvbmVudCh7dGFyZ2V0fSk7XG59KTtcbiIsImNvbnN0IHsgaHRtbCB9ID0gd2luZG93O1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiBgXG48ZGl2IGNsYXNzPVwiTG9hZGVyIGpzLWVzNmxvYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJMb2FkZXItZGlzcGxheVwiPjwvZGl2Pjxicj5cbiAgICA8c3BhbiBjbGFzcz1cIkxvYWRlci10ZXh0XCI+JHtodG1sKCdsb2FkaW5nJyl9PC9zcGFuPlxuPC9kaXY+XG5gO1xuIiwiY29uc3Qga2V5cyA9IE9iamVjdC5mcmVlemUoe1xuICAgIFRBQjogOSxcbiAgICBFTlRFUjogMTMsXG4gICAgTEVGVDogMzcsXG4gICAgVVA6IDM4LFxuICAgIFJJR0hUOiAzOSxcbiAgICBET1dOOiA0MCxcbiAgICBTUEFDRTogMzIsXG4gICAgRVNDOiAyN1xufSk7XG5leHBvcnQgZGVmYXVsdCBrZXlzO1xuIiwiLy8gaW1wb3J0IHdoZW4gd2UgbW92ZSBtb3JlIHRvIG1vZHVsZXNcbmNvbnN0IEJhY2tib25lID0gd2luZG93LkJhY2tib25lO1xuaW1wb3J0IExvYWRlclRlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9sb2FkZXIuaHRtbCc7XG5cbmNvbnN0IEJhc2VWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoe1xuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXIoJ2Nsb3NlJyk7XG4gICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMudW5iaW5kKCk7XG4gICAgICAgIHRoaXMuc3RvcExpc3RlbmluZygpO1xuICAgICAgICAvLyBWaWV3cyBzaG91bGQgZGVmaW5lIHRoaXMgaW4gdGhlaXIgZXh0ZW5kIGRlY2xhcmF0aW9uXG4gICAgICAgIHRoaXMub25DbG9zZSAmJiB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIGdldEh0bWwoeyB0ZW1wbGF0ZURhdGEgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbHMgPSB7XG4gICAgICAgICAgICBodG1sOiB3aW5kb3cuaHRtbCxcbiAgICAgICAgICAgIHRleHQ6IHdpbmRvdy50ZXh0LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gdGVtcGxhdGVEYXRhIHx8IHRoaXMuZ2V0VGVtcGxhdGVEYXRhKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlKF8uZXh0ZW5kKHt9LCBkYXRhLCBnbG9iYWxzKSk7XG4gICAgfSxcblxuICAgIGJ1aWxkRWxlbWVudChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRlbC5odG1sKHRoaXMuZ2V0SHRtbChvcHRpb25zKSk7XG4gICAgfSxcblxuICAgIGRvUmVuZGVyKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5idWlsZEVsZW1lbnQob3B0aW9ucyk7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCAmJiAhdGhpcy5hdHRhY2hlZCkge1xuICAgICAgICAgICAgdGhpcy5iZWZvcmVBdHRhY2ggJiYgdGhpcy5iZWZvcmVBdHRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRhY2goKSB7XG4gICAgICAgIGlmICghKHRoaXMuJHRhcmdldCBpbnN0YW5jZW9mIEJhY2tib25lLiQpKSB7XG4gICAgICAgICAgICB0aGlzLiR0YXJnZXQgPSBCYWNrYm9uZS4kKHRoaXMudGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiR0YXJnZXQuYXBwZW5kKHRoaXMuJGVsKTtcbiAgICB9LFxuXG4gICAgcmVuZGVyKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jbGVhckxvYWRlcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmJlZm9yZVJlbmRlcikge1xuICAgICAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvUmVuZGVyKG9wdGlvbnMpO1xuICAgICAgICBpZiAodGhpcy5hZnRlclJlbmRlcikge1xuICAgICAgICAgICAgdGhpcy5hZnRlclJlbmRlcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICBnZXRUZW1wbGF0ZURhdGEoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLnRvSlNPTigpKSB8fCB7fTtcbiAgICB9LFxuXG4gICAgcmVuZGVyTG9hZGVyKCkge1xuICAgICAgICBjb25zdCBlbGVtID0gJCh0aGlzLnRhcmdldCkubGVuZ3RoID8gJCh0aGlzLnRhcmdldCkgOiB0aGlzLiRlbDtcbiAgICAgICAgZWxlbS5lbXB0eSgpLmFwcGVuZChMb2FkZXJUZW1wbGF0ZSh7IGh0bWw6IHdpbmRvdy5odG1sIH0pKTtcbiAgICB9LFxuXG4gICAgY2xlYXJMb2FkZXIoKSB7XG4gICAgICAgIC8vIENsZWFyIGxvYWRlciBpZiBpdCBleGlzdHNcbiAgICAgICAgY29uc3QgJGxvYWRlciA9ICQoJy5qcy1lczZsb2FkZXInKTtcbiAgICAgICAgaWYgKCRsb2FkZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAkbG9hZGVyLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBCYXNlVmlldztcbiJdfQ=="}