{"version":3,"sources":["jsdelivr-header.js","/npm/tom-select@2.6.0/dist/esm/tom-select.complete.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA;AACA;AACA","file":"/npm/tom-select@2.6.0/dist/esm/tom-select.complete.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/tom-select@2.6.0/dist/esm/tom-select.complete.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import{Sifter as e}from\"/npm/@orchidjs/sifter@1.1.0/+esm\";import{escape_regex as t}from\"/npm/@orchidjs/unicode-variants@1.1.2/+esm\";function i(e,t){e.split(/\\s+/).forEach((e=>{t(e)}))}class s{constructor(){this._events={}}on(e,t){i(e,(e=>{const i=this._events[e]||[];i.push(t),this._events[e]=i}))}off(e,t){var s=arguments.length;0!==s?i(e,(e=>{if(1===s)return void delete this._events[e];const i=this._events[e];void 0!==i&&(i.splice(i.indexOf(t),1),this._events[e]=i)})):this._events={}}trigger(e,...t){var s=this;i(e,(e=>{const i=s._events[e];void 0!==i&&i.forEach((e=>{e.apply(s,t)}))}))}}const n=e=>null==e?null:o(e),o=e=>\"boolean\"==typeof e?e?\"1\":\"0\":e+\"\",r=e=>(e+\"\").replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\"),l=(e,t)=>{var i;return function(s,n){var o=this;i&&(o.loading=Math.max(o.loading-1,0),clearTimeout(i)),i=setTimeout((function(){i=null,o.loadedSearches[s]=!0,e.call(o,s,n)}),t)}},a=(e,t,i)=>{var s,n=e.trigger,o={};for(s of(e.trigger=function(){var i=arguments[0];if(-1===t.indexOf(i))return n.apply(e,arguments);o[i]=arguments},i.apply(e,[]),e.trigger=n,t))s in o&&n.apply(e,o[s])},c=(e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())},d=(e,t,i,s)=>{e.addEventListener(t,i,s)},p=(e,t)=>!!t&&(!!t[e]&&1===(t.altKey?1:0)+(t.ctrlKey?1:0)+(t.shiftKey?1:0)+(t.metaKey?1:0)),u=(e,t)=>{const i=e.getAttribute(\"id\");return i||(e.setAttribute(\"id\",t),t)},h=e=>e.replace(/[\\\\\"']/g,\"\\\\$&\"),g=(e,t)=>{t&&e.append(t)},m=(e,t)=>{if(Array.isArray(e))e.forEach(t);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)},v=e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(f(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)},f=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1,y=(e,t)=>{var i=document.createEvent(\"HTMLEvents\");i.initEvent(t,!0,!1),e.dispatchEvent(i)},O=(e,t)=>{Object.assign(e.style,t)},b=(e,...t)=>{var i=C(t);(e=A(e)).map((e=>{i.map((t=>{e.classList.add(t)}))}))},w=(e,...t)=>{var i=C(t);(e=A(e)).map((e=>{i.map((t=>{e.classList.remove(t)}))}))},C=e=>{var t=[];return m(e,(e=>{\"string\"==typeof e&&(e=e.trim().split(/[\\t\\n\\f\\r\\s]/)),Array.isArray(e)&&(t=t.concat(e))})),t.filter(Boolean)},A=e=>(Array.isArray(e)||(e=[e]),e),S=(e,t,i)=>{if(!i||i.contains(e))for(;e&&e.matches;){if(e.matches(t))return e;e=e.parentNode}},_=(e,t=0)=>t>0?e[e.length-1]:e[0],I=(e,t)=>{if(!e)return-1;t=t||e.nodeName;for(var i=0;e=e.previousElementSibling;)e.matches(t)&&i++;return i},x=(e,t)=>{m(t,((t,i)=>{null==t?e.removeAttribute(i):e.setAttribute(i,\"\"+t)}))},k=(e,t)=>{e.parentNode&&e.parentNode.replaceChild(t,e)},L=(e,t)=>{if(null===t)return;if(\"string\"==typeof t){if(!t.length)return;t=new RegExp(t,\"i\")}const i=e=>3===e.nodeType?(e=>{var i=e.data.match(t);if(i&&e.data.length>0){var s=document.createElement(\"span\");s.className=\"highlight\";var n=e.splitText(i.index);n.splitText(i[0].length);var o=n.cloneNode(!0);return s.appendChild(o),k(n,s),1}return 0})(e):((e=>{1!==e.nodeType||!e.childNodes||/(script|style)/i.test(e.tagName)||\"highlight\"===e.className&&\"SPAN\"===e.tagName||Array.from(e.childNodes).forEach((e=>{i(e)}))})(e),0);i(e)},F=\"undefined\"!=typeof navigator&&/Mac/.test(navigator.userAgent)?\"metaKey\":\"ctrlKey\";var E={options:[],optgroups:[],plugins:[],delimiter:\",\",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,clearAfterSelect:!1,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,refreshThrottle:300,loadThrottle:300,loadingClass:\"loading\",dataAttr:null,optgroupField:\"optgroup\",valueField:\"value\",labelField:\"text\",disabledField:\"disabled\",optgroupLabelField:\"label\",optgroupValueField:\"value\",lockOptgroupOrder:!1,sortField:\"$order\",searchField:[\"text\"],searchConjunction:\"and\",mode:null,wrapperClass:\"ts-wrapper\",controlClass:\"ts-control\",dropdownClass:\"ts-dropdown\",dropdownContentClass:\"ts-dropdown-content\",itemClass:\"item\",optionClass:\"option\",dropdownParent:null,controlInput:'<input type=\"text\" autocomplete=\"off\" size=\"1\" />',copyClassesToDropdown:!1,placeholder:null,hidePlaceholder:null,shouldLoad:function(e){return e.length>0},render:{}};function T(e,t){var i=Object.assign({},E,t),s=i.dataAttr,o=i.labelField,r=i.valueField,l=i.disabledField,a=i.optgroupField,c=i.optgroupLabelField,d=i.optgroupValueField,p=e.tagName.toLowerCase(),u=e.getAttribute(\"placeholder\")||e.getAttribute(\"data-placeholder\");if(!u&&!i.allowEmptyOption){let t=e.querySelector('option[value=\"\"]');t&&(u=t.textContent)}var h={placeholder:u,options:[],optgroups:[],items:[],maxItems:null};return\"select\"===p?(()=>{var t,p=h.options,u={},g=1;let v=0;var f=e=>{var t=Object.assign({},e.dataset),i=s&&t[s];return\"string\"==typeof i&&i.length&&(t=Object.assign(t,JSON.parse(i))),t},y=(e,t)=>{var s=n(e.value);if(null!=s&&(s||i.allowEmptyOption)){if(u.hasOwnProperty(s)){if(t){var c=u[s][a];c?Array.isArray(c)?c.push(t):u[s][a]=[c,t]:u[s][a]=t}}else{var d=f(e);d[o]=d[o]||e.textContent,d[r]=d[r]||s,d[l]=d[l]||e.disabled,d[a]=d[a]||t,d.$option=e,d.$order=d.$order||++v,u[s]=d,p.push(d)}e.selected&&h.items.push(s)}};h.maxItems=e.hasAttribute(\"multiple\")?null:1,m(e.children,(e=>{var i,s,n;\"optgroup\"===(t=e.tagName.toLowerCase())?((n=f(i=e))[c]=n[c]||i.getAttribute(\"label\")||\"\",n[d]=n[d]||g++,n[l]=n[l]||i.disabled,n.$order=n.$order||++v,h.optgroups.push(n),s=n[d],m(i.children,(e=>{y(e,s)}))):\"option\"===t&&y(e)}))})():(()=>{const t=e.getAttribute(s);if(t)h.options=JSON.parse(t),m(h.options,(e=>{h.items.push(e[r])}));else{var n=e.value.trim()||\"\";if(!i.allowEmptyOption&&!n.length)return;const t=n.split(i.delimiter);m(t,(e=>{const t={};t[o]=e,t[r]=e,h.options.push(t)})),h.items=t}})(),Object.assign({},E,h,t)}var P=0;class D extends(function(e){return e.plugins={},class extends e{constructor(){super(...arguments),this.plugins={names:[],settings:{},requested:{},loaded:{}}}static define(t,i){e.plugins[t]={name:t,fn:i}}initializePlugins(e){var t,i;const s=this,n=[];if(Array.isArray(e))e.forEach((e=>{\"string\"==typeof e?n.push(e):(s.plugins.settings[e.name]=e.options,n.push(e.name))}));else if(e)for(t in e)e.hasOwnProperty(t)&&(s.plugins.settings[t]=e[t],n.push(t));for(;i=n.shift();)s.require(i)}loadPlugin(t){var i=this,s=i.plugins,n=e.plugins[t];if(!e.plugins.hasOwnProperty(t))throw new Error('Unable to find \"'+t+'\" plugin');s.requested[t]=!0,s.loaded[t]=n.fn.apply(i,[i.plugins.settings[t]||{}]),s.names.push(t)}require(e){var t=this,i=t.plugins;if(!t.plugins.loaded.hasOwnProperty(e)){if(i.requested[e])throw new Error('Plugin has circular dependency (\"'+e+'\")');t.loadPlugin(e)}return i.loaded[e]}}}(s)){constructor(t,i){var s;super(),this.order=0,this.isOpen=!1,this.isDisabled=!1,this.isReadOnly=!1,this.isInvalid=!1,this.isValid=!0,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.isDropdownContentStale=!0,this.ignoreFocus=!1,this.ignoreHover=!1,this.hasOptions=!1,this.lastValue=\"\",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.userOptions={},this.items=[],this.refreshTimeout=null,P++;var n=v(t);if(n.tomselect)throw new Error(\"Tom Select already initialized on this element\");n.tomselect=this,s=(window.getComputedStyle&&window.getComputedStyle(n,null)).getPropertyValue(\"direction\");const o=T(n,i);this.settings=o,this.input=n,this.tabIndex=n.tabIndex||0,this.is_select_tag=\"select\"===n.tagName.toLowerCase(),this.rtl=/rtl/i.test(s),this.inputId=u(n,\"tomselect-\"+P),this.isRequired=n.required,this.sifter=new e(this.options,{diacritics:o.diacritics}),o.mode=o.mode||(1===o.maxItems?\"single\":\"multi\"),\"boolean\"!=typeof o.hideSelected&&(o.hideSelected=\"multi\"===o.mode),\"boolean\"!=typeof o.hidePlaceholder&&(o.hidePlaceholder=\"multi\"!==o.mode);var r=o.createFilter;\"function\"!=typeof r&&(\"string\"==typeof r&&(r=new RegExp(r)),r instanceof RegExp?o.createFilter=e=>r.test(e):o.createFilter=e=>this.settings.duplicates||!this.options[e]),this.initializePlugins(o.plugins),this.setupCallbacks(),this.setupTemplates();const l=v(\"<div>\"),a=v(\"<div>\"),c=this._render(\"dropdown\"),d=v('<div role=\"listbox\" tabindex=\"-1\">'),p=this.input.getAttribute(\"class\")||\"\",h=o.mode;var y;if(b(l,o.wrapperClass,p,h),b(a,o.controlClass),g(l,a),b(c,o.dropdownClass,h),o.copyClassesToDropdown&&b(c,p),b(d,o.dropdownContentClass),g(c,d),v(o.dropdownParent||l).appendChild(c),f(o.controlInput)){y=v(o.controlInput);m([\"autocorrect\",\"autocapitalize\",\"autocomplete\",\"spellcheck\",\"aria-label\"],(e=>{n.getAttribute(e)&&x(y,{[e]:n.getAttribute(e)})})),y.tabIndex=-1,a.appendChild(y),this.focus_node=y}else o.controlInput?(y=v(o.controlInput),this.focus_node=y):(y=v(\"<input/>\"),this.focus_node=a);this.wrapper=l,this.dropdown=c,this.dropdown_content=d,this.control=a,this.control_input=y,this.setup()}setup(){const e=this,i=e.settings,s=e.control_input,n=e.dropdown,o=e.dropdown_content,r=e.wrapper,a=e.control,p=e.input,h=e.focus_node,g={passive:!0},m=e.inputId+\"-ts-dropdown\";x(o,{id:m}),x(h,{role:\"combobox\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":\"false\",\"aria-controls\":m});const v=u(h,e.inputId+\"-ts-control\"),f=\"label[for='\"+(e=>e.replace(/['\"\\\\]/g,\"\\\\$&\"))(e.inputId)+\"']\",y=document.querySelector(f),O=e.focus.bind(e);if(y){d(y,\"click\",O),x(y,{for:v});const t=u(y,e.inputId+\"-ts-label\");x(h,{\"aria-labelledby\":t}),x(o,{\"aria-labelledby\":t})}if(r.style.width=p.style.width,r.style.minWidth=p.style.minWidth,r.style.maxWidth=p.style.maxWidth,e.plugins.names.length){const t=\"plugin-\"+e.plugins.names.join(\" plugin-\");b([r,n],t)}(null===i.maxItems||i.maxItems>1)&&e.is_select_tag&&x(p,{multiple:\"multiple\"}),i.placeholder&&x(s,{placeholder:i.placeholder}),!i.splitOn&&i.delimiter&&(i.splitOn=new RegExp(\"\\\\s*\"+t(i.delimiter)+\"+\\\\s*\")),i.load&&i.loadThrottle&&(i.load=l(i.load,i.loadThrottle)),d(n,\"mousemove\",(()=>{e.ignoreHover=!1})),d(n,\"mouseenter\",(t=>{var i=S(t.target,\"[data-selectable]\",n);i&&e.onOptionHover(t,i)}),{capture:!0}),d(n,\"click\",(t=>{const i=S(t.target,\"[data-selectable]\");i&&(e.onOptionSelect(t,i),c(t,!0))})),d(a,\"click\",(t=>{var i=S(t.target,\"[data-ts-item]\",a);i&&e.onItemSelect(t,i)?c(t,!0):\"\"==s.value&&(e.onClick(),c(t,!0))})),d(h,\"keydown\",(t=>e.onKeyDown(t))),d(s,\"keypress\",(t=>e.onKeyPress(t))),d(s,\"input\",(t=>e.onInput(t))),d(h,\"blur\",(t=>e.onBlur(t))),d(h,\"focus\",(t=>e.onFocus(t))),d(s,\"paste\",(t=>e.onPaste(t)));const w=t=>{const i=t.composedPath()[0];if(!r.contains(i)&&!n.contains(i))return e.isFocused&&e.blur(),void e.inputState();i==s&&e.isOpen?t.stopPropagation():c(t,!0)},C=()=>{e.isOpen&&e.positionDropdown()},A=()=>{e.isValid&&(e.isValid=!1,e.isInvalid=!0,e.refreshState())};d(p,\"invalid\",A),d(document,\"mousedown\",w),d(window,\"scroll\",C,g),d(window,\"resize\",C,g),this._destroy=()=>{p.removeEventListener(\"invalid\",A),document.removeEventListener(\"mousedown\",w),window.removeEventListener(\"scroll\",C),window.removeEventListener(\"resize\",C),y&&y.removeEventListener(\"click\",O)},this.revertSettings={innerHTML:p.innerHTML,tabIndex:p.tabIndex},p.tabIndex=-1,p.insertAdjacentElement(\"afterend\",e.wrapper),e.sync(!1),i.items=[],delete i.optgroups,delete i.options,e.refreshItems(),e.close(!1),e.inputState(),e.isSetup=!0,p.disabled?e.disable():p.readOnly?e.setReadOnly(!0):e.enable(),e.on(\"change\",this.onChange),b(p,\"tomselected\",\"ts-hidden-accessible\"),e.trigger(\"initialize\"),!0===i.preload&&e.preload()}setupOptions(e=[],t=[]){this.addOptions(e),m(t,(e=>{this.registerOptionGroup(e)}))}setupTemplates(){var e=this,t=e.settings.labelField,i=e.settings.optgroupLabelField,s={optgroup:e=>{let t=document.createElement(\"div\");return t.className=\"optgroup\",t.appendChild(e.options),t},optgroup_header:(e,t)=>'<div class=\"optgroup-header\">'+t(e[i])+\"</div>\",option:(e,i)=>\"<div>\"+i(e[t])+\"</div>\",item:(e,i)=>\"<div>\"+i(e[t])+\"</div>\",option_create:(e,t)=>'<div class=\"create\">Add <strong>'+t(e.input)+\"</strong>&hellip;</div>\",no_results:()=>'<div class=\"no-results\">No results found</div>',loading:()=>'<div class=\"spinner\"></div>',not_loading:()=>{},dropdown:()=>\"<div></div>\"};e.settings.render=Object.assign({},s,e.settings.render)}setupCallbacks(){var e,t,i={initialize:\"onInitialize\",change:\"onChange\",item_add:\"onItemAdd\",item_remove:\"onItemRemove\",item_select:\"onItemSelect\",clear:\"onClear\",option_add:\"onOptionAdd\",option_remove:\"onOptionRemove\",option_clear:\"onOptionClear\",optgroup_add:\"onOptionGroupAdd\",optgroup_remove:\"onOptionGroupRemove\",optgroup_clear:\"onOptionGroupClear\",dropdown_open:\"onDropdownOpen\",dropdown_close:\"onDropdownClose\",type:\"onType\",load:\"onLoad\",focus:\"onFocus\",blur:\"onBlur\"};for(e in i)(t=this.settings[i[e]])&&this.on(e,t)}sync(e=!0){const t=this,i=e?T(t.input,{delimiter:t.settings.delimiter,allowEmptyOption:t.settings.allowEmptyOption}):t.settings;t.setupOptions(i.options,i.optgroups),t.setValue(i.items||[],!0)}onClick(){var e=this;if(e.activeItems.length>0)return e.clearActiveItems(),void e.focus();e.isFocused&&e.isOpen?e.blur():e.focus()}onMouseDown(){}onChange(){y(this.input,\"input\"),y(this.input,\"change\")}onPaste(e){var t=this;t.isInputHidden||t.isLocked?c(e):t.settings.splitOn&&setTimeout((()=>{var e=t.inputValue();if(e.match(t.settings.splitOn)){var i=e.trim().split(t.settings.splitOn);m(i,(e=>{n(e)&&(this.options[e]?t.addItem(e):t.createItem(e))}))}}),0)}onKeyPress(e){var t=this;if(!t.isLocked){var i=String.fromCharCode(e.keyCode||e.which);return t.settings.create&&\"multi\"===t.settings.mode&&i===t.settings.delimiter?(t.createItem(),void c(e)):void 0}c(e)}onKeyDown(e){var t=this;if(t.ignoreHover=!0,t.isLocked)9!==e.keyCode&&c(e);else{switch(e.keyCode){case 65:if(p(F,e)&&\"\"==t.control_input.value)return c(e),void t.selectAll();break;case 27:return t.isOpen&&(c(e,!0),t.close()),void t.clearActiveItems();case 40:if(!t.isOpen&&t.hasOptions)t.open();else if(t.activeOption){let e=t.getAdjacent(t.activeOption,1);e&&t.setActiveOption(e)}return void c(e);case 38:if(t.activeOption){let e=t.getAdjacent(t.activeOption,-1);e&&t.setActiveOption(e)}return void c(e);case 13:return void(t.canSelect(t.activeOption)?(t.onOptionSelect(e,t.activeOption),c(e)):(t.settings.create&&t.createItem()||document.activeElement==t.control_input&&t.isOpen)&&c(e));case 37:return void t.advanceSelection(-1,e);case 39:return void t.advanceSelection(1,e);case 9:return void(t.settings.selectOnTab&&(t.canSelect(t.activeOption)?(t.onOptionSelect(e,t.activeOption),c(e)):t.settings.create&&t.createItem()&&c(e)));case 8:case 46:return void t.deleteSelection(e)}t.isInputHidden&&!p(F,e)&&c(e)}}onInput(e){if(this.isLocked)return;const t=this.inputValue();this.lastValue!==t&&(this.lastValue=t,\"\"!=t?(this.refreshTimeout&&window.clearTimeout(this.refreshTimeout),this.refreshTimeout=((e,t)=>t>0?window.setTimeout(e,t):(e.call(null),null))((()=>{this.refreshTimeout=null,this._onInput()}),this.settings.refreshThrottle)):this._onInput())}_onInput(){const e=this.lastValue;this.settings.shouldLoad.call(this,e)&&this.load(e),this.refreshOptions(),this.trigger(\"type\",e)}onOptionHover(e,t){this.ignoreHover||this.setActiveOption(t,!1)}onFocus(e){var t=this,i=t.isFocused;if(t.isDisabled||t.isReadOnly)return t.blur(),void c(e);t.ignoreFocus||(t.isFocused=!0,\"focus\"===t.settings.preload&&t.preload(),i||t.trigger(\"focus\"),t.activeItems.length||(t.inputState(),t.refreshOptions(!!t.settings.openOnFocus)),t.refreshState())}onBlur(e){if(!1!==document.hasFocus()){var t=this;if(t.isFocused){t.isFocused=!1,t.ignoreFocus=!1;var i=()=>{t.close(),t.setActiveItem(),t.setCaret(t.items.length),t.trigger(\"blur\")};t.settings.create&&t.settings.createOnBlur?t.createItem(null,i):i()}}}onOptionSelect(e,t){var i,s=this;t.parentElement&&t.parentElement.matches(\"[data-disabled]\")||(t.classList.contains(\"create\")?s.createItem(null,(()=>{s.settings.closeAfterSelect?s.close():s.settings.clearAfterSelect&&s.setTextboxValue()})):void 0!==(i=t.dataset.value)&&(s.isDropdownContentStale=s.settings.hideSelected,s.addItem(i),s.settings.closeAfterSelect?s.close():s.settings.clearAfterSelect&&s.setTextboxValue(),!s.settings.hideSelected&&e.type&&/click/.test(e.type)&&s.setActiveOption(t)))}canSelect(e){return!!(this.isOpen&&e&&this.dropdown_content.contains(e))}onItemSelect(e,t){var i=this;return!i.isLocked&&\"multi\"===i.settings.mode&&(c(e),i.setActiveItem(t,e),!0)}canLoad(e){return!!this.settings.load&&!this.loadedSearches.hasOwnProperty(e)}load(e){const t=this;if(!t.canLoad(e))return;b(t.wrapper,t.settings.loadingClass),t.loading++;const i=t.loadCallback.bind(t);t.settings.load.call(t,e,i)}loadCallback(e,t){const i=this;i.loading=Math.max(i.loading-1,0),i.isDropdownContentStale=!0,i.clearActiveOption(),i.setupOptions(e,t),i.refreshOptions(i.isFocused&&!i.isInputHidden),i.loading||w(i.wrapper,i.settings.loadingClass),i.trigger(\"load\",e,t)}preload(){var e=this.wrapper.classList;e.contains(\"preloaded\")||(e.add(\"preloaded\"),this.load(\"\"))}setTextboxValue(e=\"\"){var t=this.control_input;t.value!==e&&(t.value=e,y(t,\"update\"),this.lastValue=e)}getValue(){return this.is_select_tag&&this.input.hasAttribute(\"multiple\")?this.items:this.items.join(this.settings.delimiter)}setValue(e,t){a(this,t?[]:[\"change\"],(()=>{this.clear(t),this.addItems(e,t)}))}setMaxItems(e){0===e&&(e=null),this.settings.maxItems=e,this.refreshState()}setActiveItem(e,t){var i,s,n,o,r,l,a=this;if(\"single\"!==a.settings.mode){if(!e)return a.clearActiveItems(),void(a.isFocused&&a.inputState());if(\"click\"===(i=t&&t.type.toLowerCase())&&p(\"shiftKey\",t)&&a.activeItems.length){for(l=a.getLastActive(),(n=Array.prototype.indexOf.call(a.control.children,l))>(o=Array.prototype.indexOf.call(a.control.children,e))&&(r=n,n=o,o=r),s=n;s<=o;s++)e=a.control.children[s],-1===a.activeItems.indexOf(e)&&a.setActiveItemClass(e);c(t)}else\"click\"===i&&p(F,t)||\"keydown\"===i&&p(\"shiftKey\",t)?e.classList.contains(\"active\")?a.removeActiveItem(e):a.setActiveItemClass(e):(a.clearActiveItems(),a.setActiveItemClass(e));a.inputState(),a.isFocused||a.focus()}}setActiveItemClass(e){const t=this,i=t.control.querySelector(\".last-active\");i&&w(i,\"last-active\"),b(e,\"active last-active\"),t.trigger(\"item_select\",e),-1==t.activeItems.indexOf(e)&&t.activeItems.push(e)}removeActiveItem(e){var t=this.activeItems.indexOf(e);this.activeItems.splice(t,1),w(e,\"active\")}clearActiveItems(){w(this.activeItems,\"active\"),this.activeItems=[]}setActiveOption(e,t=!0){e!==this.activeOption&&(this.clearActiveOption(),e&&(this.activeOption=e,x(this.focus_node,{\"aria-activedescendant\":e.getAttribute(\"id\")}),x(e,{\"aria-selected\":\"true\"}),b(e,\"active\"),t&&this.scrollToOption(e)))}scrollToOption(e,t){if(!e)return;const i=this.dropdown_content,s=i.clientHeight,n=i.scrollTop||0,o=e.offsetHeight,r=e.getBoundingClientRect().top-i.getBoundingClientRect().top+n;r+o>s+n?this.scroll(r-s+o,t):r<n&&this.scroll(r,t)}scroll(e,t){const i=this.dropdown_content;t&&(i.style.scrollBehavior=t),i.scrollTop=e,i.style.scrollBehavior=\"\"}clearActiveOption(){this.activeOption&&(w(this.activeOption,\"active\"),x(this.activeOption,{\"aria-selected\":null})),this.activeOption=null,x(this.focus_node,{\"aria-activedescendant\":null})}selectAll(){const e=this;if(\"single\"===e.settings.mode)return;const t=e.controlChildren();t.length&&(e.inputState(),e.close(),e.activeItems=t,m(t,(t=>{e.setActiveItemClass(t)})))}inputState(){var e=this;e.control.contains(e.control_input)&&(x(e.control_input,{placeholder:e.settings.placeholder}),e.activeItems.length>0||!e.isFocused&&e.settings.hidePlaceholder&&e.items.length>0?(e.setTextboxValue(),e.isInputHidden=!0):(e.settings.hidePlaceholder&&e.items.length>0&&x(e.control_input,{placeholder:\"\"}),e.isInputHidden=!1),e.wrapper.classList.toggle(\"input-hidden\",e.isInputHidden))}inputValue(){return this.control_input.value.trim()}focus(){var e=this;e.isDisabled||e.isReadOnly||(e.ignoreFocus=!0,e.control_input.offsetWidth?e.control_input.focus():e.focus_node.focus(),setTimeout((()=>{e.ignoreFocus=!1,e.onFocus()}),0))}blur(){this.focus_node.blur(),this.onBlur()}getScoreFunction(e){return this.sifter.getScoreFunction(e,this.getSearchOptions())}getSearchOptions(){var e=this.settings,t=e.sortField;return\"string\"==typeof e.sortField&&(t=[{field:e.sortField}]),{fields:e.searchField,conjunction:e.searchConjunction,sort:t,nesting:e.nesting}}search(e){var t,i,s=this,o=this.getSearchOptions();if(s.settings.score&&\"function\"!=typeof(i=s.settings.score.call(s,e)))throw new Error('Tom Select \"score\" setting must be a function that returns a function');return s.isDropdownContentStale||e!==s.lastQuery?(s.lastQuery=e,/(.)\\1{15,}/.test(e)&&(e=\"\"),t=s.sifter.search(e,Object.assign(o,{score:i})),s.currentResults=t):t=Object.assign({},s.currentResults),s.settings.hideSelected&&(t.items=t.items.filter((e=>{let t=n(e.id);return!(null!==t&&-1!==s.items.indexOf(t))}))),t}refreshOptions(e=!0){var t,i,s,n,r,l,a,c,d,p;const u={},h=[];var v=this,f=v.inputValue();const y=f===v.lastQuery||\"\"==f&&null==v.lastQuery;var O=v.search(f),b=null,C=v.settings.shouldOpen||!1,A=v.dropdown_content;y&&(b=v.activeOption)&&(d=b.closest(\"[data-group]\")),n=O.items.length,\"number\"==typeof v.settings.maxOptions&&(n=Math.min(n,v.settings.maxOptions)),n>0&&(C=!0);const S=(e,t)=>{let i=u[e];if(void 0!==i){let e=h[i];if(void 0!==e)return[i,e.fragment]}let s=document.createDocumentFragment();return i=h.length,h.push({fragment:s,order:t,optgroup:e}),[i,s]};for(t=0;t<n;t++){let e=O.items[t];if(!e)continue;let n=e.id,a=v.options[n];if(void 0===a)continue;let c=o(n),p=v.getOption(c,!0);for(v.settings.hideSelected||p.classList.toggle(\"selected\",v.items.includes(c)),r=a[v.settings.optgroupField]||\"\",i=0,s=(l=Array.isArray(r)?r:[r])&&l.length;i<s;i++){r=l[i];let e=a.$order,t=v.optgroups[r];var _;if(void 0===t&&\"function\"==typeof v.settings.optionGroupRegister)(_=v.settings.optionGroupRegister.apply(v,[r]))&&v.registerOptionGroup(_);t=v.optgroups[r],void 0===t?r=\"\":e=t.$order;const[s,o]=S(r,e);i>0&&(p=p.cloneNode(!0),x(p,{id:a.$id+\"-clone-\"+i,\"aria-selected\":null}),p.classList.add(\"ts-cloned\"),w(p,\"active\"),v.activeOption&&v.activeOption.dataset.value==n&&d&&d.dataset.group===r.toString()&&(b=p)),o.appendChild(p),\"\"!=r&&(u[r]=s)}}var I;v.settings.lockOptgroupOrder&&h.sort(((e,t)=>e.order-t.order)),a=document.createDocumentFragment(),m(h,(e=>{let t=e.fragment,i=e.optgroup;if(!t||!t.children.length)return;let s=v.optgroups[i];if(void 0!==s){let e=document.createDocumentFragment(),i=v.render(\"optgroup_header\",s);g(e,i),g(e,t);let n=v.render(\"optgroup\",{group:s,options:e});g(a,n)}else g(a,t)})),A.innerHTML=\"\",g(A,a),v.isDropdownContentStale=!1,v.settings.highlight&&(I=A.querySelectorAll(\"span.highlight\"),Array.prototype.forEach.call(I,(function(e){var t=e.parentNode;t.replaceChild(e.firstChild,e),t.normalize()})),O.query.length&&O.tokens.length&&m(O.tokens,(e=>{L(A,e.regex)})));var k=e=>{let t=v.render(e,{input:f});return t&&(C=!0,A.insertBefore(t,A.firstChild)),t};if(v.loading?k(\"loading\"):v.settings.shouldLoad.call(v,f)?0===O.items.length&&k(\"no_results\"):k(\"not_loading\"),(c=v.canCreate(f))&&(p=k(\"option_create\")),v.hasOptions=O.items.length>0||c,C){if(O.items.length>0){if(b||\"single\"!==v.settings.mode||null==v.items[0]||(b=v.getOption(v.items[0])),!A.contains(b)){let e=0;p&&!v.settings.addPrecedence&&(e=1),b=v.selectable()[e]}}else p&&(b=p);e&&!v.isOpen&&(v.open(),v.scrollToOption(b,\"auto\")),v.setActiveOption(b)}else v.clearActiveOption(),e&&v.isOpen&&v.close(!1)}selectable(){return this.dropdown_content.querySelectorAll(\"[data-selectable]\")}addOption(e,t=!1){const i=this;if(Array.isArray(e))return i.addOptions(e,t),!1;const s=n(e[i.settings.valueField]);return null===s||i.options.hasOwnProperty(s)?(i.updateOption(e[i.settings.valueField],e),!1):(e.$order=e.$order||++i.order,e.$id=i.inputId+\"-opt-\"+e.$order,i.options[s]=e,i.isDropdownContentStale=!0,t&&(i.userOptions[s]=t,i.trigger(\"option_add\",s,e)),s)}addOptions(e,t=!1){m(e,(e=>{this.addOption(e,t)}))}registerOption(e){return this.addOption(e)}registerOptionGroup(e){var t=n(e[this.settings.optgroupValueField]);return null!==t&&(e.$order=e.$order||++this.order,this.optgroups[t]=e,t)}addOptionGroup(e,t){var i;t[this.settings.optgroupValueField]=e,(i=this.registerOptionGroup(t))&&this.trigger(\"optgroup_add\",i,t)}removeOptionGroup(e){this.optgroups.hasOwnProperty(e)&&(delete this.optgroups[e],this.clearCache(),this.trigger(\"optgroup_remove\",e))}clearOptionGroups(){this.optgroups={},this.clearCache(),this.trigger(\"optgroup_clear\")}updateOption(e,t){const i=this;var s,o;const r=n(e),l=n(t[i.settings.valueField]);if(null===r)return;const a=i.options[r];if(null==a)return;if(\"string\"!=typeof l)throw new Error(\"Value must be set in option data\");const c=i.getOption(r),d=i.getItem(r);if(t.$order=t.$order||a.$order,delete i.options[r],i.uncacheValue(l),i.options[l]=t,c){if(i.dropdown_content.contains(c)){const e=i._render(\"option\",t);k(c,e),i.activeOption===c&&i.setActiveOption(e)}c.remove()}d&&(-1!==(o=i.items.indexOf(r))&&i.items.splice(o,1,l),s=i._render(\"item\",t),d.classList.contains(\"active\")&&b(s,\"active\"),k(d,s)),i.isDropdownContentStale=!0}removeOption(e,t){const i=this;e=o(e),i.uncacheValue(e),delete i.userOptions[e],delete i.options[e],i.isDropdownContentStale=!0,i.trigger(\"option_remove\",e),i.removeItem(e,t)}clearOptions(e){const t=(e||this.clearFilter).bind(this);this.loadedSearches={},this.userOptions={},this.clearCache();const i={};m(this.options,((e,s)=>{t(e,s)&&(i[s]=e)})),this.options=this.sifter.items=i,this.isDropdownContentStale=!0,this.trigger(\"option_clear\")}clearFilter(e,t){return this.items.indexOf(t)>=0}getOption(e,t=!1){const i=n(e);if(null===i)return null;const s=this.options[i];if(null!=s){if(s.$div)return s.$div;if(t)return this._render(\"option\",s)}return null}getAdjacent(e,t,i=\"option\"){var s;if(!e)return null;s=\"item\"==i?this.controlChildren():this.dropdown_content.querySelectorAll(\"[data-selectable]\");for(let i=0;i<s.length;i++)if(s[i]==e)return t>0?s[i+1]:s[i-1];return null}getItem(e){if(\"object\"==typeof e)return e;var t=n(e);return null!==t?this.control.querySelector(`[data-value=\"${h(t)}\"]`):null}addItems(e,t){var i=this,s=Array.isArray(e)?e:[e];const n=(s=s.filter((e=>-1===i.items.indexOf(e))))[s.length-1];s.forEach((e=>{i.isPending=e!==n,i.addItem(e,t)}))}addItem(e,t){a(this,t?[]:[\"change\",\"dropdown_close\"],(()=>{var i,s;const o=this,r=o.settings.mode,l=n(e);if((!l||-1===o.items.indexOf(l)||(\"single\"===r&&o.close(),\"single\"!==r&&o.settings.duplicates))&&null!==l&&o.options.hasOwnProperty(l)&&(\"single\"===r&&o.clear(t),\"multi\"!==r||!o.isFull())){if(i=o._render(\"item\",o.options[l]),o.control.contains(i)&&(i=i.cloneNode(!0)),s=o.isFull(),o.items.splice(o.caretPos,0,l),o.insertAtCaret(i),o.isSetup){if(!o.isPending&&o.settings.hideSelected){let e=o.getOption(l),t=o.getAdjacent(e,1);t&&o.setActiveOption(t)}o.settings.clearAfterSelect&&o.setTextboxValue(),o.isPending||o.settings.closeAfterSelect||o.refreshOptions(o.isFocused&&\"single\"!==r),0!=o.settings.closeAfterSelect&&o.isFull()?o.close():o.isPending||o.positionDropdown(),o.trigger(\"item_add\",l,i),o.isPending||o.updateOriginalInput({silent:t})}(!o.isPending||!s&&o.isFull())&&(o.inputState(),o.refreshState())}}))}removeItem(e=null,t){const i=this;if(!(e=i.getItem(e)))return;var s,n;const o=e.dataset.value;s=I(e),e.remove(),e.classList.contains(\"active\")&&(n=i.activeItems.indexOf(e),i.activeItems.splice(n,1),w(e,\"active\")),i.items.splice(s,1),i.isDropdownContentStale=!0,!i.settings.persist&&i.userOptions.hasOwnProperty(o)&&i.removeOption(o,t),s<i.caretPos&&i.setCaret(i.caretPos-1),i.updateOriginalInput({silent:t}),i.refreshState(),i.positionDropdown(),i.trigger(\"item_remove\",o,e)}createItem(e=null,t=()=>{}){3===arguments.length&&(t=arguments[2]),\"function\"!=typeof t&&(t=()=>{});var i,s=this,o=s.caretPos;if(e=e||s.inputValue(),!s.canCreate(e)){return n(e)&&this.options[e]&&s.addItem(e),t(),!1}s.lock();var r=!1,l=e=>{if(s.unlock(),!e||\"object\"!=typeof e)return t();var i=n(e[s.settings.valueField]);if(\"string\"!=typeof i)return t();s.setTextboxValue(),s.addOption(e,!0),s.setCaret(o),s.addItem(i),t(e),r=!0};return i=\"function\"==typeof s.settings.create?s.settings.create.call(this,e,l):{[s.settings.labelField]:e,[s.settings.valueField]:e},r||l(i),!0}refreshItems(){var e=this;e.isDropdownContentStale=!0,e.isSetup&&e.addItems(e.items),e.updateOriginalInput(),e.refreshState()}refreshState(){const e=this;e.refreshValidityState();const t=e.isFull(),i=e.isLocked;e.wrapper.classList.toggle(\"rtl\",e.rtl);const s=e.wrapper.classList;var n;s.toggle(\"focus\",e.isFocused),s.toggle(\"disabled\",e.isDisabled),s.toggle(\"readonly\",e.isReadOnly),s.toggle(\"required\",e.isRequired),s.toggle(\"invalid\",!e.isValid),s.toggle(\"locked\",i),s.toggle(\"full\",t),s.toggle(\"input-active\",e.isFocused&&!e.isInputHidden),s.toggle(\"dropdown-active\",e.isOpen),s.toggle(\"has-options\",(n=e.options,0===Object.keys(n).length)),s.toggle(\"has-items\",e.items.length>0)}refreshValidityState(){var e=this;e.input.validity&&(e.isValid=e.input.validity.valid,e.isInvalid=!e.isValid)}isFull(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems}updateOriginalInput(e={}){const t=this;var i,s;const n=t.input.querySelector('option[value=\"\"]');if(t.is_select_tag){const o=[],l=t.input.querySelectorAll(\"option:checked\").length;function a(e,i,s){return e||(e=v('<option value=\"'+r(i)+'\">'+r(s)+\"</option>\")),e!=n&&t.input.append(e),o.push(e),(e!=n||l>0)&&(e.selected=!0),e}t.input.querySelectorAll(\"option:checked\").forEach((e=>{e.selected=!1})),0==t.items.length&&\"single\"==t.settings.mode?a(n,\"\",\"\"):t.items.forEach((e=>{if(i=t.options[e],s=i[t.settings.labelField]||\"\",o.includes(i.$option)){a(t.input.querySelector(`option[value=\"${h(e)}\"]:not(:checked)`),e,s)}else i.$option=a(i.$option,e,s)}))}else t.input.value=t.getValue();t.isSetup&&(e.silent||t.trigger(\"change\",t.getValue()))}open(){var e=this;e.isLocked||e.isOpen||\"multi\"===e.settings.mode&&e.isFull()||(e.isOpen=!0,x(e.focus_node,{\"aria-expanded\":\"true\"}),e.refreshState(),O(e.dropdown,{visibility:\"hidden\",display:\"block\"}),e.positionDropdown(),O(e.dropdown,{visibility:\"visible\",display:\"block\"}),e.focus(),e.trigger(\"dropdown_open\",e.dropdown))}close(e=!0){var t=this,i=t.isOpen;e&&(t.setTextboxValue(),\"single\"===t.settings.mode&&t.items.length&&t.inputState()),t.isOpen=!1,x(t.focus_node,{\"aria-expanded\":\"false\"}),O(t.dropdown,{display:\"none\"}),t.settings.hideSelected&&t.clearActiveOption(),t.refreshState(),i&&t.trigger(\"dropdown_close\",t.dropdown)}positionDropdown(){if(\"body\"===this.settings.dropdownParent){var e=this.control,t=e.getBoundingClientRect(),i=e.offsetHeight+t.top+window.scrollY,s=t.left+window.scrollX;O(this.dropdown,{width:t.width+\"px\",top:i+\"px\",left:s+\"px\"})}}clear(e){var t=this;if(t.items.length){var i=t.controlChildren();m(i,(e=>{t.removeItem(e,!0)})),t.inputState(),e||t.updateOriginalInput(),t.trigger(\"clear\")}}insertAtCaret(e){const t=this,i=t.caretPos,s=t.control;s.insertBefore(e,s.children[i]||null),t.setCaret(i+1)}deleteSelection(e){var t,i,s,n,o,r=this;t=e&&8===e.keyCode?-1:1,i={start:(o=r.control_input).selectionStart||0,length:(o.selectionEnd||0)-(o.selectionStart||0)};const l=[];if(r.activeItems.length)n=_(r.activeItems,t),s=I(n),t>0&&s++,m(r.activeItems,(e=>l.push(e)));else if((r.isFocused||\"single\"===r.settings.mode)&&r.items.length){const e=r.controlChildren();let s;t<0&&0===i.start&&0===i.length?s=e[r.caretPos-1]:t>0&&i.start===r.inputValue().length&&(s=e[r.caretPos]),void 0!==s&&l.push(s)}if(!r.shouldDelete(l,e))return!1;for(c(e,!0),void 0!==s&&r.setCaret(s);l.length;)r.removeItem(l.pop());return r.inputState(),r.positionDropdown(),r.refreshOptions(!1),!0}shouldDelete(e,t){const i=e.map((e=>e.dataset.value));return!(!i.length||\"function\"==typeof this.settings.onDelete&&!1===this.settings.onDelete.call(this,i,t))}advanceSelection(e,t){var i,s,n=this;n.rtl&&(e*=-1),n.inputValue().length||(p(F,t)||p(\"shiftKey\",t)?(s=(i=n.getLastActive(e))?i.classList.contains(\"active\")?n.getAdjacent(i,e,\"item\"):i:e>0?n.control_input.nextElementSibling:n.control_input.previousElementSibling)&&(s.classList.contains(\"active\")&&n.removeActiveItem(i),n.setActiveItemClass(s)):n.moveCaret(e))}moveCaret(e){}getLastActive(e){let t=this.control.querySelector(\".last-active\");if(t)return t;var i=this.control.querySelectorAll(\".active\");return i?_(i,e):void 0}setCaret(e){this.caretPos=this.items.length}controlChildren(){return Array.from(this.control.querySelectorAll(\"[data-ts-item]\"))}lock(){this.setLocked(!0)}unlock(){this.setLocked(!1)}setLocked(e=this.isReadOnly||this.isDisabled){this.isLocked=e,this.refreshState()}disable(){this.setDisabled(!0),this.close()}enable(){this.setDisabled(!1)}setDisabled(e){this.focus_node.tabIndex=e?-1:this.tabIndex,this.isDisabled=e,this.input.disabled=e,this.control_input.disabled=e,this.setLocked()}setReadOnly(e){this.isReadOnly=e,this.input.readOnly=e,this.control_input.readOnly=e,this.setLocked()}destroy(){var e=this,t=e.revertSettings;e.trigger(\"destroy\"),e.off(),e.wrapper.remove(),e.dropdown.remove(),e.input.innerHTML=t.innerHTML,e.input.tabIndex=t.tabIndex,w(e.input,\"tomselected\",\"ts-hidden-accessible\"),e._destroy(),delete e.input.tomselect}render(e,t){var i,s;const n=this;if(\"function\"!=typeof this.settings.render[e])return null;if(!(s=n.settings.render[e].call(this,t,r)))return null;if(s=v(s),\"option\"===e||\"option_create\"===e?t[n.settings.disabledField]?x(s,{\"aria-disabled\":\"true\"}):x(s,{\"data-selectable\":\"\"}):\"optgroup\"===e&&(i=t.group[n.settings.optgroupValueField],x(s,{\"data-group\":i}),t.group[n.settings.disabledField]&&x(s,{\"data-disabled\":\"\"})),\"option\"===e||\"item\"===e){const i=o(t[n.settings.valueField]);x(s,{\"data-value\":i}),\"item\"===e?(b(s,n.settings.itemClass),x(s,{\"data-ts-item\":\"\"})):(b(s,n.settings.optionClass),x(s,{role:\"option\",id:t.$id}),t.$div=s,n.options[i]=t)}return s}_render(e,t){const i=this.render(e,t);if(null==i)throw\"HTMLElement expected\";return i}clearCache(){m(this.options,(e=>{e.$div&&(e.$div.remove(),delete e.$div)}))}uncacheValue(e){const t=this.getOption(e);t&&t.remove()}canCreate(e){return this.settings.create&&e.length>0&&this.settings.createFilter.call(this,e)}hook(e,t,i){var s=this,n=s[t];s[t]=function(){var t,o;return\"after\"===e&&(t=n.apply(s,arguments)),o=i.apply(s,arguments),\"instead\"===e?o:(\"before\"===e&&(t=n.apply(s,arguments)),t)}}}const q=e=>\"boolean\"==typeof e?e?\"1\":\"0\":e+\"\",N=(e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())},V=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1;const H=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1;const j=(e,t,i,s)=>{e.addEventListener(t,i,s)},$=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1,M=(e,t)=>{((e,t)=>{if(Array.isArray(e))e.forEach(t);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)})(t,((t,i)=>{null==t?e.removeAttribute(i):e.setAttribute(i,\"\"+t)}))};const R=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1;const B=e=>{var t=[];return((e,t)=>{if(Array.isArray(e))e.forEach(t);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)})(e,(e=>{\"string\"==typeof e&&(e=e.trim().split(/[\\t\\n\\f\\r\\s]/)),Array.isArray(e)&&(t=t.concat(e))})),t.filter(Boolean)},z=e=>(Array.isArray(e)||(e=[e]),e);const K=e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(G(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)},G=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1,U=e=>{var t=[];return((e,t)=>{if(Array.isArray(e))e.forEach(t);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)})(e,(e=>{\"string\"==typeof e&&(e=e.trim().split(/[\\t\\n\\f\\r\\s]/)),Array.isArray(e)&&(t=t.concat(e))})),t.filter(Boolean)},W=e=>(Array.isArray(e)||(e=[e]),e);const Q=(e,t,i,s)=>{e.addEventListener(t,i,s)};const J=(e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())},X=(e,t,i,s)=>{e.addEventListener(t,i,s)},Y=e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(Z(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)},Z=e=>\"string\"==typeof e&&e.indexOf(\"<\")>-1;const ee=e=>{var t=[];return((e,t)=>{if(Array.isArray(e))e.forEach(t);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)})(e,(e=>{\"string\"==typeof e&&(e=e.trim().split(/[\\t\\n\\f\\r\\s]/)),Array.isArray(e)&&(t=t.concat(e))})),t.filter(Boolean)},te=e=>(Array.isArray(e)||(e=[e]),e);D.define(\"change_listener\",(function(){var e,t,i,s;e=this.input,t=\"change\",i=()=>{this.sync()},e.addEventListener(t,i,s)})),D.define(\"checkbox_options\",(function(e){var t=this,i=t.onOptionSelect;t.settings.hideSelected=!1;const s=Object.assign({className:\"tomselect-checkbox\",checkedClassNames:void 0,uncheckedClassNames:void 0},e);var n=function(e,t){t?(e.checked=!0,s.uncheckedClassNames&&e.classList.remove(...s.uncheckedClassNames),s.checkedClassNames&&e.classList.add(...s.checkedClassNames)):(e.checked=!1,s.checkedClassNames&&e.classList.remove(...s.checkedClassNames),s.uncheckedClassNames&&e.classList.add(...s.uncheckedClassNames))},o=function(e){setTimeout((()=>{var t=e.querySelector(\"input.\"+s.className);t instanceof HTMLInputElement&&n(t,e.classList.contains(\"selected\"))}),1)};t.hook(\"after\",\"setupTemplates\",(()=>{var e=t.settings.render.option;t.settings.render.option=(i,o)=>{var r=(e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(V(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)})(e.call(t,i,o)),l=document.createElement(\"input\");s.className&&l.classList.add(s.className),l.addEventListener(\"click\",(function(e){N(e)})),l.type=\"checkbox\";const a=null==(c=i[t.settings.valueField])?null:q(c);var c;return n(l,!!(a&&t.items.indexOf(a)>-1)),r.prepend(l),r}})),t.on(\"item_remove\",(e=>{var i=t.getOption(e);i&&(i.classList.remove(\"selected\"),o(i))})),t.on(\"item_add\",(e=>{var i=t.getOption(e);i&&o(i)})),t.hook(\"instead\",\"onOptionSelect\",((e,s)=>{if(s.classList.contains(\"selected\"))return s.classList.remove(\"selected\"),t.removeItem(s.dataset.value),t.refreshOptions(),void N(e,!0);i.call(t,e,s),o(s)}))})),D.define(\"clear_button\",(function(e){const t=this,i=Object.assign({className:\"clear-button\",title:\"Clear All\",role:\"button\",tabindex:0,html:e=>`<div class=\"${e.className}\" title=\"${e.title}\" role=\"${e.role}\" tabindex=\"${e.tabindex}\">&times;</div>`},e);t.on(\"initialize\",(()=>{var e=(e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(H(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)})(i.html(i));e.addEventListener(\"click\",(e=>{t.isLocked||(t.clear(),\"single\"===t.settings.mode&&t.settings.allowEmptyOption&&t.addItem(\"\"),t.refreshOptions(!1),e.preventDefault(),e.stopPropagation())})),t.control.appendChild(e)}))})),D.define(\"drag_drop\",(function(){var e=this;if(\"multi\"!==e.settings.mode)return;var t=e.lock,i=e.unlock;let s,n=!0;e.hook(\"after\",\"setupTemplates\",(()=>{var t=e.settings.render.item;e.settings.render.item=(i,o)=>{const r=(e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if($(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)})(t.call(e,i,o));M(r,{draggable:\"true\"});const l=e=>{e.preventDefault(),r.classList.add(\"ts-drag-over\"),a(r,s)},a=(e,t)=>{var i,s,n;void 0!==t&&(((e,t)=>{do{var i;if(e==(t=null==(i=t)?void 0:i.previousElementSibling))return!0}while(t&&t.previousElementSibling);return!1})(t,r)?(s=t,null==(n=(i=e).parentNode)||n.insertBefore(s,i.nextSibling)):((e,t)=>{var i;null==(i=e.parentNode)||i.insertBefore(t,e)})(e,t))};return j(r,\"mousedown\",(e=>{n||((e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())})(e),e.stopPropagation()})),j(r,\"dragstart\",(e=>{s=r,setTimeout((()=>{r.classList.add(\"ts-dragging\")}),0)})),j(r,\"dragenter\",l),j(r,\"dragover\",l),j(r,\"dragleave\",(()=>{r.classList.remove(\"ts-drag-over\")})),j(r,\"dragend\",(()=>{var t;document.querySelectorAll(\".ts-drag-over\").forEach((e=>e.classList.remove(\"ts-drag-over\"))),null==(t=s)||t.classList.remove(\"ts-dragging\"),s=void 0;var i=[];e.control.querySelectorAll(\"[data-value]\").forEach((e=>{if(e.dataset.value){let t=e.dataset.value;t&&i.push(t)}})),e.setValue(i)})),r}})),e.hook(\"instead\",\"lock\",(()=>(n=!1,t.call(e)))),e.hook(\"instead\",\"unlock\",(()=>(n=!0,i.call(e))))})),D.define(\"dropdown_header\",(function(e){const t=this,i=Object.assign({title:\"Untitled\",headerClass:\"dropdown-header\",titleRowClass:\"dropdown-header-title\",labelClass:\"dropdown-header-label\",closeClass:\"dropdown-header-close\",html:e=>'<div class=\"'+e.headerClass+'\"><div class=\"'+e.titleRowClass+'\"><span class=\"'+e.labelClass+'\">'+e.title+'</span><a class=\"'+e.closeClass+'\">&times;</a></div></div>'},e);t.on(\"initialize\",(()=>{var e=(e=>{if(e.jquery)return e[0];if(e instanceof HTMLElement)return e;if(R(e)){var t=document.createElement(\"template\");return t.innerHTML=e.trim(),t.content.firstChild}return document.querySelector(e)})(i.html(i)),s=e.querySelector(\".\"+i.closeClass);s&&s.addEventListener(\"click\",(e=>{((e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())})(e,!0),t.close()})),t.dropdown.insertBefore(e,t.dropdown.firstChild)}))})),D.define(\"caret_position\",(function(){var e=this;e.hook(\"instead\",\"setCaret\",(t=>{\"single\"!==e.settings.mode&&e.control.contains(e.control_input)?(t=Math.max(0,Math.min(e.items.length,t)))==e.caretPos||e.isPending||e.controlChildren().forEach(((i,s)=>{s<t?e.control_input.insertAdjacentElement(\"beforebegin\",i):e.control.appendChild(i)})):t=e.items.length,e.caretPos=t})),e.hook(\"instead\",\"moveCaret\",(t=>{if(!e.isFocused)return;const i=e.getLastActive(t);if(i){const s=((e,t)=>{if(!e)return-1;t=t||e.nodeName;for(var i=0;e=e.previousElementSibling;)e.matches(t)&&i++;return i})(i);e.setCaret(t>0?s+1:s),e.setActiveItem(),((e,...t)=>{var i=B(t);(e=z(e)).map((e=>{i.map((t=>{e.classList.remove(t)}))}))})(i,\"last-active\")}else e.setCaret(e.caretPos+t)}))})),D.define(\"dropdown_input\",(function(){const e=this;e.settings.shouldOpen=!0,e.hook(\"before\",\"setup\",(()=>{var t;e.focus_node=e.control,((e,...t)=>{var i=U(t);(e=W(e)).map((e=>{i.map((t=>{e.classList.add(t)}))}))})(e.control_input,\"dropdown-input\");const i=K('<div class=\"dropdown-input-wrap\">');i.append(e.control_input),e.dropdown.insertBefore(i,e.dropdown.firstChild);const s=K('<input class=\"items-placeholder\" tabindex=\"-1\" />');s.placeholder=e.settings.placeholder||\"\",e.control.append(s);const n=null==(t=e.input)?void 0:t.getAttribute(\"aria-label\");n&&s.setAttribute(\"aria-label\",n)})),e.on(\"initialize\",(()=>{e.control_input.addEventListener(\"keydown\",(t=>{switch(t.keyCode){case 27:return e.isOpen&&(((e,t=!1)=>{e&&(e.preventDefault(),t&&e.stopPropagation())})(t,!0),e.close()),void e.clearActiveItems();case 9:e.focus_node.tabIndex=-1}return e.onKeyDown.call(e,t)})),e.on(\"blur\",(()=>{e.focus_node.tabIndex=e.isDisabled?-1:e.tabIndex})),e.on(\"dropdown_open\",(()=>{e.control_input.focus()}));const t=e.onBlur;var i,s,n,o;e.hook(\"instead\",\"onBlur\",(i=>{if(!i||i.relatedTarget!=e.control_input)return t.call(e)})),i=e.control_input,s=\"blur\",n=()=>e.onBlur(),i.addEventListener(s,n,o),e.hook(\"before\",\"close\",(()=>{e.isOpen&&e.focus_node.focus({preventScroll:!0})}))}))})),D.define(\"input_autogrow\",(function(){var e=this;e.on(\"initialize\",(()=>{var t=document.createElement(\"span\"),i=e.control_input;t.style.cssText=\"position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; \",e.wrapper.appendChild(t);for(const e of[\"letterSpacing\",\"fontSize\",\"fontFamily\",\"fontWeight\",\"textTransform\"])t.style[e]=i.style[e];var s=()=>{t.textContent=i.value,i.style.width=t.clientWidth+\"px\"};s(),e.on(\"update item_add item_remove\",s),Q(i,\"input\",s),Q(i,\"keyup\",s),Q(i,\"blur\",s),Q(i,\"update\",s)}))})),D.define(\"no_backspace_delete\",(function(){var e=this,t=e.deleteSelection;this.hook(\"instead\",\"deleteSelection\",(i=>!!e.activeItems.length&&t.call(e,i)))})),D.define(\"no_active_items\",(function(){this.hook(\"instead\",\"setActiveItem\",(()=>{})),this.hook(\"instead\",\"selectAll\",(()=>{}))})),D.define(\"optgroup_columns\",(function(){var e=this,t=e.onKeyDown;e.hook(\"instead\",\"onKeyDown\",(i=>{var s,n,o,r;if(!e.isOpen||37!==i.keyCode&&39!==i.keyCode)return t.call(e,i);e.ignoreHover=!0,r=((e,t)=>{for(;e&&e.matches;){if(e.matches(t))return e;e=e.parentNode}})(e.activeOption,\"[data-group]\"),s=((e,t)=>{if(!e)return-1;t=t||e.nodeName;for(var i=0;e=e.previousElementSibling;)e.matches(t)&&i++;return i})(e.activeOption,\"[data-selectable]\"),r&&(r=37===i.keyCode?r.previousSibling:r.nextSibling)&&(n=(o=r.querySelectorAll(\"[data-selectable]\"))[Math.min(o.length-1,s)])&&e.setActiveOption(n)}))})),D.define(\"remove_button\",(function(e){const t=Object.assign({label:\"&times;\",title:\"Remove\",className:\"remove\",append:!0},e);var i=this;if(t.append){var s='<a href=\"javascript:void(0)\" class=\"'+t.className+'\" tabindex=\"-1\" title=\"'+((t.title+\"\").replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\")+'\">')+t.label+\"</a>\";i.hook(\"after\",\"setupTemplates\",(()=>{var e=i.settings.render.item;i.settings.render.item=(t,n)=>{var o=Y(e.call(i,t,n)),r=Y(s);return o.appendChild(r),X(r,\"mousedown\",(e=>{J(e,!0)})),X(r,\"click\",(e=>{i.isLocked||(J(e,!0),i.isLocked||i.shouldDelete([o],e)&&(i.removeItem(o),i.refreshOptions(!1),i.inputState()))})),o}}))}})),D.define(\"restore_on_backspace\",(function(e){const t=this,i=Object.assign({text:e=>e[t.settings.labelField]},e);t.on(\"item_remove\",(function(e){if(t.isFocused&&\"\"===t.control_input.value.trim()){var s=t.options[e];s&&t.setTextboxValue(i.text.call(t,s))}}))})),D.define(\"virtual_scroll\",(function(){const e=this,t=e.canLoad,i=e.clearActiveOption,s=e.loadCallback;var n,o,r={},l=!1,a=[];if(e.settings.shouldLoadMore||(e.settings.shouldLoadMore=()=>{if(n.clientHeight/(n.scrollHeight-n.scrollTop)>.9)return!0;if(e.activeOption){var t=e.selectable();if(Array.from(t).indexOf(e.activeOption)>=t.length-2)return!0}return!1}),!e.settings.firstUrl)throw\"virtual_scroll plugin requires a firstUrl() method\";e.settings.sortField=[{field:\"$order\"},{field:\"$score\"}];const c=t=>!(\"number\"==typeof e.settings.maxOptions&&n.children.length>=e.settings.maxOptions)&&!(!(t in r)||!r[t]),d=(t,i)=>e.items.indexOf(i)>=0||a.indexOf(i)>=0;e.setNextUrl=(e,t)=>{r[e]=t},e.getUrl=t=>{if(t in r){const e=r[t];return r[t]=!1,e}return e.clearPagination(),e.settings.firstUrl.call(e,t)},e.clearPagination=()=>{r={}},e.hook(\"instead\",\"clearActiveOption\",(()=>{if(!l)return i.call(e)})),e.hook(\"instead\",\"canLoad\",(i=>i in r?c(i):t.call(e,i))),e.hook(\"instead\",\"loadCallback\",((t,i)=>{if(l){if(o){const i=t[0];void 0!==i&&(o.dataset.value=i[e.settings.valueField])}}else e.clearOptions(d);s.call(e,t,i),l=!1})),e.hook(\"before\",\"refreshOptions\",(()=>{e.activeOption&&\"option\"!==e.activeOption.getAttribute(\"role\")&&e.setActiveOption(e.activeOption.previousElementSibling)})),e.hook(\"after\",\"refreshOptions\",(()=>{const t=e.lastValue;var i;c(t)?(i=e.render(\"loading_more\",{query:t}))&&(i.setAttribute(\"data-selectable\",\"\"),o=i):t in r&&!n.querySelector(\".no-results\")&&(i=e.render(\"no_more_results\",{query:t})),i&&(((e,...t)=>{var i=ee(t);(e=te(e)).map((e=>{i.map((t=>{e.classList.add(t)}))}))})(i,e.settings.optionClass),n.append(i))})),e.on(\"initialize\",(()=>{a=Object.keys(e.options),n=e.dropdown_content,e.settings.render=Object.assign({},{loading_more:()=>'<div class=\"loading-more-results\">Loading more results ... </div>',no_more_results:()=>'<div class=\"no-more-results\">No more results</div>'},e.settings.render),n.addEventListener(\"scroll\",(()=>{e.settings.shouldLoadMore.call(e)&&c(e.lastValue)&&(l||(l=!0,e.load.call(e,e.lastValue)))}))}))}));export{D as default};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JFdmVudHMiLCJldmVudHMiLCJjYWxsYmFjayIsInNwbGl0IiwiZm9yRWFjaCIsImV2ZW50IiwiTWljcm9FdmVudCIsImNvbnN0cnVjdG9yIiwidGhpcyIsIl9ldmVudHMiLCJvbiIsImZjdCIsImV2ZW50X2FycmF5IiwicHVzaCIsIm9mZiIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzcGxpY2UiLCJpbmRleE9mIiwidHJpZ2dlciIsImFyZ3MiLCJzZWxmIiwiYXBwbHkiLCJoYXNoX2tleSIsInZhbHVlIiwiZ2V0X2hhc2giLCJlc2NhcGVfaHRtbCIsInN0ciIsInJlcGxhY2UiLCJsb2FkRGVib3VuY2UiLCJmbiIsImRlbGF5IiwidGltZW91dCIsImxvYWRpbmciLCJNYXRoIiwibWF4IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImxvYWRlZFNlYXJjaGVzIiwiY2FsbCIsImRlYm91bmNlX2V2ZW50cyIsInR5cGVzIiwidHlwZSIsImV2ZW50X2FyZ3MiLCJwcmV2ZW50RGVmYXVsdCIsImV2dCIsInN0b3AiLCJzdG9wUHJvcGFnYXRpb24iLCJhZGRFdmVudCIsInRhcmdldCIsIm9wdGlvbnMiLCJhZGRFdmVudExpc3RlbmVyIiwiaXNLZXlEb3duIiwia2V5X25hbWUiLCJhbHRLZXkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJtZXRhS2V5IiwiZ2V0SWQiLCJlbCIsImlkIiwiZXhpc3RpbmdfaWQiLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJhZGRTbGFzaGVzIiwiYXBwZW5kIiwicGFyZW50Iiwibm9kZSIsIml0ZXJhdGUiLCJvYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImdldERvbSIsInF1ZXJ5IiwianF1ZXJ5IiwiSFRNTEVsZW1lbnQiLCJpc0h0bWxTdHJpbmciLCJ0cGwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJ0cmltIiwiY29udGVudCIsImZpcnN0Q2hpbGQiLCJxdWVyeVNlbGVjdG9yIiwiYXJnIiwidHJpZ2dlckV2ZW50IiwiZG9tX2VsIiwiZXZlbnRfbmFtZSIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsImFwcGx5Q1NTIiwiY3NzIiwiT2JqZWN0IiwiYXNzaWduIiwic3R5bGUiLCJhZGRDbGFzc2VzIiwiZWxtdHMiLCJjbGFzc2VzIiwibm9ybV9jbGFzc2VzIiwiY2xhc3Nlc0FycmF5IiwiY2FzdEFzQXJyYXkiLCJtYXAiLCJjbHMiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmVDbGFzc2VzIiwicmVtb3ZlIiwiX2NsYXNzZXMiLCJjb25jYXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicGFyZW50TWF0Y2giLCJzZWxlY3RvciIsIndyYXBwZXIiLCJjb250YWlucyIsIm1hdGNoZXMiLCJwYXJlbnROb2RlIiwiZ2V0VGFpbCIsImxpc3QiLCJkaXJlY3Rpb24iLCJub2RlSW5kZXgiLCJhbW9uZ3N0Iiwibm9kZU5hbWUiLCJpIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInNldEF0dHIiLCJhdHRycyIsInZhbCIsImF0dHIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZXBsYWNlTm9kZSIsImV4aXN0aW5nIiwicmVwbGFjZW1lbnQiLCJyZXBsYWNlQ2hpbGQiLCJoaWdobGlnaHQiLCJlbGVtZW50IiwicmVnZXgiLCJSZWdFeHAiLCJoaWdobGlnaHRSZWN1cnNpdmUiLCJub2RlVHlwZSIsIm1hdGNoIiwiZGF0YSIsInNwYW5ub2RlIiwiY2xhc3NOYW1lIiwibWlkZGxlYml0Iiwic3BsaXRUZXh0IiwiaW5kZXgiLCJtaWRkbGVjbG9uZSIsImNsb25lTm9kZSIsImFwcGVuZENoaWxkIiwiaGlnaGxpZ2h0VGV4dCIsImNoaWxkTm9kZXMiLCJ0ZXN0IiwidGFnTmFtZSIsImZyb20iLCJoaWdobGlnaHRDaGlsZHJlbiIsIktFWV9TSE9SVENVVCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImRlZmF1bHRzIiwib3B0Z3JvdXBzIiwicGx1Z2lucyIsImRlbGltaXRlciIsInNwbGl0T24iLCJwZXJzaXN0IiwiZGlhY3JpdGljcyIsImNyZWF0ZSIsImNyZWF0ZU9uQmx1ciIsImNyZWF0ZUZpbHRlciIsImNsZWFyQWZ0ZXJTZWxlY3QiLCJvcGVuT25Gb2N1cyIsInNob3VsZE9wZW4iLCJtYXhPcHRpb25zIiwibWF4SXRlbXMiLCJoaWRlU2VsZWN0ZWQiLCJkdXBsaWNhdGVzIiwiYWRkUHJlY2VkZW5jZSIsInNlbGVjdE9uVGFiIiwicHJlbG9hZCIsImFsbG93RW1wdHlPcHRpb24iLCJyZWZyZXNoVGhyb3R0bGUiLCJsb2FkVGhyb3R0bGUiLCJsb2FkaW5nQ2xhc3MiLCJkYXRhQXR0ciIsIm9wdGdyb3VwRmllbGQiLCJ2YWx1ZUZpZWxkIiwibGFiZWxGaWVsZCIsImRpc2FibGVkRmllbGQiLCJvcHRncm91cExhYmVsRmllbGQiLCJvcHRncm91cFZhbHVlRmllbGQiLCJsb2NrT3B0Z3JvdXBPcmRlciIsInNvcnRGaWVsZCIsInNlYXJjaEZpZWxkIiwic2VhcmNoQ29uanVuY3Rpb24iLCJtb2RlIiwid3JhcHBlckNsYXNzIiwiY29udHJvbENsYXNzIiwiZHJvcGRvd25DbGFzcyIsImRyb3Bkb3duQ29udGVudENsYXNzIiwiaXRlbUNsYXNzIiwib3B0aW9uQ2xhc3MiLCJkcm9wZG93blBhcmVudCIsImNvbnRyb2xJbnB1dCIsImNvcHlDbGFzc2VzVG9Ecm9wZG93biIsInBsYWNlaG9sZGVyIiwiaGlkZVBsYWNlaG9sZGVyIiwic2hvdWxkTG9hZCIsInJlbmRlciIsImdldFNldHRpbmdzIiwiaW5wdXQiLCJzZXR0aW5nc191c2VyIiwic2V0dGluZ3MiLCJhdHRyX2RhdGEiLCJmaWVsZF9sYWJlbCIsImZpZWxkX3ZhbHVlIiwiZmllbGRfZGlzYWJsZWQiLCJmaWVsZF9vcHRncm91cCIsImZpZWxkX29wdGdyb3VwX2xhYmVsIiwiZmllbGRfb3B0Z3JvdXBfdmFsdWUiLCJ0YWdfbmFtZSIsInRvTG93ZXJDYXNlIiwib3B0aW9uIiwidGV4dENvbnRlbnQiLCJzZXR0aW5nc19lbGVtZW50IiwiaXRlbXMiLCJvcHRpb25zTWFwIiwiZ3JvdXBfY291bnQiLCIkb3JkZXIiLCJyZWFkRGF0YSIsImRhdGFzZXQiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiYWRkT3B0aW9uIiwiZ3JvdXAiLCJhcnIiLCJvcHRpb25fZGF0YSIsImRpc2FibGVkIiwiJG9wdGlvbiIsInNlbGVjdGVkIiwiaGFzQXR0cmlidXRlIiwiY2hpbGRyZW4iLCJjaGlsZCIsIm9wdGdyb3VwIiwib3B0Z3JvdXBfZGF0YSIsImluaXRfc2VsZWN0IiwiZGF0YV9yYXciLCJvcHQiLCJ2YWx1ZXMiLCJpbml0X3RleHRib3giLCJpbnN0YW5jZV9pIiwiVG9tU2VsZWN0IiwiSW50ZXJmYWNlIiwibmFtZXMiLCJyZXF1ZXN0ZWQiLCJsb2FkZWQiLCJkZWZpbmUiLCJuYW1lIiwiaW5pdGlhbGl6ZVBsdWdpbnMiLCJxdWV1ZSIsInBsdWdpbiIsInNoaWZ0IiwicmVxdWlyZSIsImxvYWRQbHVnaW4iLCJFcnJvciIsIk1pY3JvUGx1Z2luIiwiaW5wdXRfYXJnIiwidXNlcl9zZXR0aW5ncyIsImRpciIsInN1cGVyIiwib3JkZXIiLCJpc09wZW4iLCJpc0Rpc2FibGVkIiwiaXNSZWFkT25seSIsImlzSW52YWxpZCIsImlzVmFsaWQiLCJpc0xvY2tlZCIsImlzRm9jdXNlZCIsImlzSW5wdXRIaWRkZW4iLCJpc1NldHVwIiwiaXNEcm9wZG93bkNvbnRlbnRTdGFsZSIsImlnbm9yZUZvY3VzIiwiaWdub3JlSG92ZXIiLCJoYXNPcHRpb25zIiwibGFzdFZhbHVlIiwiY2FyZXRQb3MiLCJhY3RpdmVPcHRpb24iLCJhY3RpdmVJdGVtcyIsInVzZXJPcHRpb25zIiwicmVmcmVzaFRpbWVvdXQiLCJ0b21zZWxlY3QiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRhYkluZGV4IiwiaXNfc2VsZWN0X3RhZyIsInJ0bCIsImlucHV0SWQiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJzaWZ0ZXIiLCJTaWZ0ZXIiLCJzZXR1cENhbGxiYWNrcyIsInNldHVwVGVtcGxhdGVzIiwiY29udHJvbCIsImRyb3Bkb3duIiwiX3JlbmRlciIsImRyb3Bkb3duX2NvbnRlbnQiLCJpbnB1dE1vZGUiLCJjb250cm9sX2lucHV0IiwiZm9jdXNfbm9kZSIsInNldHVwIiwicGFzc2l2ZV9ldmVudCIsInBhc3NpdmUiLCJsaXN0Ym94SWQiLCJyb2xlIiwiY29udHJvbF9pZCIsImVzY2FwZVF1ZXJ5IiwibGFiZWwiLCJsYWJlbF9jbGljayIsImZvY3VzIiwiYmluZCIsImZvciIsImxhYmVsX2lkIiwid2lkdGgiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiY2xhc3Nlc19wbHVnaW5zIiwiam9pbiIsIm11bHRpcGxlIiwiZXNjYXBlX3JlZ2V4IiwibG9hZCIsImUiLCJ0YXJnZXRfbWF0Y2giLCJvbk9wdGlvbkhvdmVyIiwiY2FwdHVyZSIsIm9uT3B0aW9uU2VsZWN0Iiwib25JdGVtU2VsZWN0Iiwib25DbGljayIsIm9uS2V5RG93biIsIm9uS2V5UHJlc3MiLCJvbklucHV0Iiwib25CbHVyIiwib25Gb2N1cyIsIm9uUGFzdGUiLCJkb2NfbW91c2Vkb3duIiwiY29tcG9zZWRQYXRoIiwiYmx1ciIsImlucHV0U3RhdGUiLCJ3aW5fc2Nyb2xsIiwicG9zaXRpb25Ecm9wZG93biIsImlucHV0X2ludmFsaWQiLCJyZWZyZXNoU3RhdGUiLCJfZGVzdHJveSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZXZlcnRTZXR0aW5ncyIsImluc2VydEFkamFjZW50RWxlbWVudCIsInN5bmMiLCJyZWZyZXNoSXRlbXMiLCJjbG9zZSIsImRpc2FibGUiLCJyZWFkT25seSIsInNldFJlYWRPbmx5IiwiZW5hYmxlIiwib25DaGFuZ2UiLCJzZXR1cE9wdGlvbnMiLCJhZGRPcHRpb25zIiwicmVnaXN0ZXJPcHRpb25Hcm91cCIsInRlbXBsYXRlcyIsIm9wdGdyb3VwX2hlYWRlciIsImVzY2FwZSIsIml0ZW0iLCJvcHRpb25fY3JlYXRlIiwibm9fcmVzdWx0cyIsIm5vdF9sb2FkaW5nIiwiY2FsbGJhY2tzIiwiaW5pdGlhbGl6ZSIsImNoYW5nZSIsIml0ZW1fYWRkIiwiaXRlbV9yZW1vdmUiLCJpdGVtX3NlbGVjdCIsImNsZWFyIiwib3B0aW9uX2FkZCIsIm9wdGlvbl9yZW1vdmUiLCJvcHRpb25fY2xlYXIiLCJvcHRncm91cF9hZGQiLCJvcHRncm91cF9yZW1vdmUiLCJvcHRncm91cF9jbGVhciIsImRyb3Bkb3duX29wZW4iLCJkcm9wZG93bl9jbG9zZSIsImdldF9zZXR0aW5ncyIsInNldFZhbHVlIiwiY2xlYXJBY3RpdmVJdGVtcyIsIm9uTW91c2VEb3duIiwicGFzdGVkVGV4dCIsImlucHV0VmFsdWUiLCJzcGxpdElucHV0IiwicGllY2UiLCJhZGRJdGVtIiwiY3JlYXRlSXRlbSIsImNoYXJhY3RlciIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImtleUNvZGUiLCJ3aGljaCIsImNvbnN0YW50cy5LRVlfU0hPUlRDVVQiLCJzZWxlY3RBbGwiLCJvcGVuIiwibmV4dCIsImdldEFkamFjZW50Iiwic2V0QWN0aXZlT3B0aW9uIiwicHJldiIsImNhblNlbGVjdCIsImFjdGl2ZUVsZW1lbnQiLCJhZHZhbmNlU2VsZWN0aW9uIiwiZGVsZXRlU2VsZWN0aW9uIiwiX29uSW5wdXQiLCJyZWZyZXNoT3B0aW9ucyIsIndhc0ZvY3VzZWQiLCJoYXNGb2N1cyIsImRlYWN0aXZhdGUiLCJzZXRBY3RpdmVJdGVtIiwic2V0Q2FyZXQiLCJwYXJlbnRFbGVtZW50IiwiY2xvc2VBZnRlclNlbGVjdCIsInNldFRleHRib3hWYWx1ZSIsImNhbkxvYWQiLCJsb2FkQ2FsbGJhY2siLCJjbGVhckFjdGl2ZU9wdGlvbiIsImdldFZhbHVlIiwic2lsZW50IiwiYWRkSXRlbXMiLCJzZXRNYXhJdGVtcyIsImV2ZW50TmFtZSIsImJlZ2luIiwiZW5kIiwic3dhcCIsImxhc3QiLCJnZXRMYXN0QWN0aXZlIiwicHJvdG90eXBlIiwic2V0QWN0aXZlSXRlbUNsYXNzIiwicmVtb3ZlQWN0aXZlSXRlbSIsImxhc3RfYWN0aXZlIiwiaWR4Iiwic2Nyb2xsIiwic2Nyb2xsVG9PcHRpb24iLCJiZWhhdmlvciIsImhlaWdodF9tZW51IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsVG9wIiwiaGVpZ2h0X2l0ZW0iLCJvZmZzZXRIZWlnaHQiLCJ5IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwic2Nyb2xsQmVoYXZpb3IiLCJjb250cm9sQ2hpbGRyZW4iLCJ0b2dnbGUiLCJvZmZzZXRXaWR0aCIsImdldFNjb3JlRnVuY3Rpb24iLCJnZXRTZWFyY2hPcHRpb25zIiwic29ydCIsImZpZWxkIiwiZmllbGRzIiwiY29uanVuY3Rpb24iLCJuZXN0aW5nIiwic2VhcmNoIiwicmVzdWx0IiwiY2FsY3VsYXRlU2NvcmUiLCJzY29yZSIsImxhc3RRdWVyeSIsImN1cnJlbnRSZXN1bHRzIiwiaGFzaGVkIiwidHJpZ2dlckRyb3Bkb3duIiwiaiIsImsiLCJodG1sIiwiaGFzX2NyZWF0ZV9vcHRpb24iLCJhY3RpdmVfZ3JvdXAiLCJncm91cHMiLCJncm91cHNfb3JkZXIiLCJzYW1lX3F1ZXJ5IiwicmVzdWx0cyIsImFjdGl2ZV9vcHRpb24iLCJzaG93X2Ryb3Bkb3duIiwiY2xvc2VzdCIsIm1pbiIsImdldEdyb3VwRnJhZ21lbnQiLCJncm91cF9vcmRlcl9pIiwib3JkZXJfZ3JvdXAiLCJmcmFnbWVudCIsImdyb3VwX2ZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm9wdF92YWx1ZSIsIm9wdF9oYXNoIiwib3B0aW9uX2VsIiwiZ2V0T3B0aW9uIiwiaW5jbHVkZXMiLCJzZWxmX29wdGdyb3VwIiwicmVnR3JvdXAiLCJvcHRpb25Hcm91cFJlZ2lzdGVyIiwiJGlkIiwidG9TdHJpbmciLCJlbGVtZW50cyIsImEiLCJiIiwiZ3JvdXBfb3JkZXIiLCJncm91cF9oZWFkaW5nIiwiZ3JvdXBfb3B0aW9ucyIsImhlYWRlciIsImdyb3VwX2h0bWwiLCJxdWVyeVNlbGVjdG9yQWxsIiwibm9ybWFsaXplIiwidG9rZW5zIiwidG9rIiwiYWRkX3RlbXBsYXRlIiwidGVtcGxhdGUiLCJpbnNlcnRCZWZvcmUiLCJjYW5DcmVhdGUiLCJhY3RpdmVfaW5kZXgiLCJzZWxlY3RhYmxlIiwidXNlcl9jcmVhdGVkIiwidXBkYXRlT3B0aW9uIiwiZGF0IiwicmVnaXN0ZXJPcHRpb24iLCJhZGRPcHRpb25Hcm91cCIsImhhc2hlZF9pZCIsInJlbW92ZU9wdGlvbkdyb3VwIiwiY2xlYXJDYWNoZSIsImNsZWFyT3B0aW9uR3JvdXBzIiwiaXRlbV9uZXciLCJpbmRleF9pdGVtIiwidmFsdWVfb2xkIiwidmFsdWVfbmV3IiwiZGF0YV9vbGQiLCJnZXRJdGVtIiwidW5jYWNoZVZhbHVlIiwib3B0aW9uX25ldyIsInJlbW92ZU9wdGlvbiIsInJlbW92ZUl0ZW0iLCJjbGVhck9wdGlvbnMiLCJib3VuZEZpbHRlciIsImNsZWFyRmlsdGVyIiwiJGRpdiIsImFsbCIsImxhc3RfaXRlbSIsIngiLCJpc1BlbmRpbmciLCJ3YXNGdWxsIiwiaXNGdWxsIiwiaW5zZXJ0QXRDYXJldCIsInVwZGF0ZU9yaWdpbmFsSW5wdXQiLCJvdXRwdXQiLCJjYXJldCIsImxvY2siLCJjcmVhdGVkIiwidW5sb2NrIiwicmVmcmVzaFZhbGlkaXR5U3RhdGUiLCJ3cmFwX2NsYXNzTGlzdCIsIm9iaiIsImtleXMiLCJ2YWxpZGl0eSIsInZhbGlkIiwib3B0cyIsImVtcHR5X29wdGlvbiIsImhhc19zZWxlY3RlZCIsIkFkZFNlbGVjdGVkIiwidmlzaWJpbGl0eSIsImRpc3BsYXkiLCJjb250ZXh0IiwicmVjdCIsInNjcm9sbFkiLCJsZWZ0Iiwic2Nyb2xsWCIsInNlbGVjdGlvbiIsInRhaWwiLCJzdGFydCIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwicm1faXRlbXMiLCJybV9pdGVtIiwic2hvdWxkRGVsZXRlIiwicG9wIiwib25EZWxldGUiLCJhZGphY2VudCIsIm5leHRFbGVtZW50U2libGluZyIsIm1vdmVDYXJldCIsIm5ld19wb3MiLCJzZXRMb2NrZWQiLCJzZXREaXNhYmxlZCIsImRlc3Ryb3kiLCJ0ZW1wbGF0ZU5hbWUiLCJob29rIiwid2hlbiIsIm1ldGhvZCIsIm5ld19mbiIsIm9yaWdfbWV0aG9kIiwicmVzdWx0X25ldyIsIm9yaWdfb25PcHRpb25TZWxlY3QiLCJjYk9wdGlvbnMiLCJjaGVja2VkQ2xhc3NOYW1lcyIsInVuY2hlY2tlZENsYXNzTmFtZXMiLCJVcGRhdGVDaGVja2VkIiwiY2hlY2tib3giLCJ0b0NoZWNrIiwiY2hlY2tlZCIsIlVwZGF0ZUNoZWNrYm94IiwiSFRNTElucHV0RWxlbWVudCIsIm9yaWdfcmVuZGVyX29wdGlvbiIsInJlbmRlcmVkIiwicHJlcGVuZCIsInRpdGxlIiwidGFiaW5kZXgiLCJidXR0b24iLCJvcmlnX2xvY2siLCJvcmlnX3VubG9jayIsImRyYWdfaXRlbSIsInNvcnRhYmxlIiwib3JpZ19yZW5kZXJfaXRlbSIsImRyYWdnYWJsZSIsImRyYWdPdmVyIiwibW92ZWl0ZW0iLCJ0YXJnZXRpdGVtIiwiZHJhZ2l0ZW0iLCJpbnNlcnRBZnRlciIsInJlZmVyZW5jZU5vZGUiLCJuZXdOb2RlIiwiX3JlZmVyZW5jZU5vZGUkcGFyZW50IiwiaXNCZWZvcmUiLCJfbmV3Tm9kZSIsIm5leHRTaWJsaW5nIiwiX3JlZmVyZW5jZU5vZGUkcGFyZW50MiIsImRyYWdMZWF2ZSIsImRyYWdlbmQiLCJfZHJhZ19pdGVtIiwiaGVhZGVyQ2xhc3MiLCJ0aXRsZVJvd0NsYXNzIiwibGFiZWxDbGFzcyIsImNsb3NlQ2xhc3MiLCJjbG9zZV9saW5rIiwiX3NlbGYkaW5wdXQiLCJkaXYiLCJvcmlnX29uQmx1ciIsInJlbGF0ZWRUYXJnZXQiLCJwcmV2ZW50U2Nyb2xsIiwidGVzdF9pbnB1dCIsImNzc1RleHQiLCJzdHlsZV9uYW1lIiwicmVzaXplIiwiY2xpZW50V2lkdGgiLCJvcmlnX2RlbGV0ZVNlbGVjdGlvbiIsIm9yaWdfa2V5ZG93biIsInByZXZpb3VzU2libGluZyIsImNsb3NlX2J1dHRvbiIsInRleHQiLCJvcmlnX2NhbkxvYWQiLCJvcmlnX2NsZWFyQWN0aXZlT3B0aW9uIiwib3JpZ19sb2FkQ2FsbGJhY2siLCJsb2FkX21vcmVfb3B0IiwicGFnaW5hdGlvbiIsImxvYWRpbmdfbW9yZSIsImRlZmF1bHRfdmFsdWVzIiwic2hvdWxkTG9hZE1vcmUiLCJzY3JvbGxIZWlnaHQiLCJmaXJzdFVybCIsImNhbkxvYWRNb3JlIiwic2V0TmV4dFVybCIsIm5leHRfdXJsIiwiZ2V0VXJsIiwiY2xlYXJQYWdpbmF0aW9uIiwiZmlyc3Rfb3B0aW9uIiwibm9fbW9yZV9yZXN1bHRzIl0sInNvdXJjZXMiOlsiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9jb250cmliL21pY3JvZXZlbnQudHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3V0aWxzLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy92YW5pbGxhLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9jb250cmliL2hpZ2hsaWdodC50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvY29uc3RhbnRzLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9kZWZhdWx0cy50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvZ2V0U2V0dGluZ3MudHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3RvbS1zZWxlY3QudHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL2NvbnRyaWIvbWljcm9wbHVnaW4udHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3RvbS1zZWxlY3QuY29tcGxldGUudHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3BsdWdpbnMvY2hhbmdlX2xpc3RlbmVyL3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy9jaGVja2JveF9vcHRpb25zL3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy9jbGVhcl9idXR0b24vcGx1Z2luLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9wbHVnaW5zL2RyYWdfZHJvcC9wbHVnaW4udHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3BsdWdpbnMvZHJvcGRvd25faGVhZGVyL3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy9jYXJldF9wb3NpdGlvbi9wbHVnaW4udHMiLCIvbnBtL3RvbS1zZWxlY3RAMi42LjAvc3JjL3BsdWdpbnMvZHJvcGRvd25faW5wdXQvcGx1Z2luLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9wbHVnaW5zL2lucHV0X2F1dG9ncm93L3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy9ub19iYWNrc3BhY2VfZGVsZXRlL3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy9ub19hY3RpdmVfaXRlbXMvcGx1Z2luLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9wbHVnaW5zL29wdGdyb3VwX2NvbHVtbnMvcGx1Z2luLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9wbHVnaW5zL3JlbW92ZV9idXR0b24vcGx1Z2luLnRzIiwiL25wbS90b20tc2VsZWN0QDIuNi4wL3NyYy9wbHVnaW5zL3Jlc3RvcmVfb25fYmFja3NwYWNlL3BsdWdpbi50cyIsIi9ucG0vdG9tLXNlbGVjdEAyLjYuMC9zcmMvcGx1Z2lucy92aXJ0dWFsX3Njcm9sbC9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsLCJcbmltcG9ydCB0eXBlIFRvbVNlbGVjdCBmcm9tICcuL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgVG9tTG9hZENhbGxiYWNrIH0gZnJvbSAnLi90eXBlcy9pbmRleC50cyc7XG5cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHNjYWxhciB0byBpdHMgYmVzdCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqIGZvciBoYXNoIGtleXMgYW5kIEhUTUwgYXR0cmlidXRlIHZhbHVlcy5cbiAqXG4gKiBUcmFuc2Zvcm1hdGlvbnM6XG4gKiAgICdzdHInICAgICAtPiAnc3RyJ1xuICogICBudWxsICAgICAgLT4gJydcbiAqICAgdW5kZWZpbmVkIC0+ICcnXG4gKiAgIHRydWUgICAgICAtPiAnMSdcbiAqICAgZmFsc2UgICAgIC0+ICcwJ1xuICogICAwICAgICAgICAgLT4gJzAnXG4gKiAgIDEgICAgICAgICAtPiAnMSdcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNoX2tleSA9ICh2YWx1ZTp1bmRlZmluZWR8bnVsbHxib29sZWFufHN0cmluZ3xudW1iZXIpOnN0cmluZ3xudWxsID0+IHtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuXHRyZXR1cm4gZ2V0X2hhc2godmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldF9oYXNoID0gKHZhbHVlOmJvb2xlYW58c3RyaW5nfG51bWJlcik6c3RyaW5nID0+IHtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWUgPyAnMScgOiAnMCc7XG5cdHJldHVybiB2YWx1ZSArICcnO1xufTtcblxuLyoqXG4gKiBFc2NhcGVzIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIEhUTUwuXG4gKlxuICovXG5leHBvcnQgY29uc3QgZXNjYXBlX2h0bWwgPSAoc3RyOnN0cmluZyk6c3RyaW5nID0+IHtcblx0cmV0dXJuIChzdHIgKyAnJylcblx0XHQucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuXHRcdC5yZXBsYWNlKC88L2csICcmbHQ7Jylcblx0XHQucmVwbGFjZSgvPi9nLCAnJmd0OycpXG5cdFx0LnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcbn07XG5cblxuLyoqXG4gKiB1c2Ugc2V0VGltZW91dCBpZiB0aW1lb3V0ID4gMCBcbiAqL1xuZXhwb3J0IGNvbnN0IHRpbWVvdXQgPSAoZm46KCk9PnZvaWQsdGltZW91dDpudW1iZXIpOiBudW1iZXIgfCBudWxsID0+IHtcblx0aWYoIHRpbWVvdXQgPiAwICl7XG5cdFx0cmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGZuLHRpbWVvdXQpO1xuXHR9XG5cblx0Zm4uY2FsbChudWxsKTtcblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRGVib3VuY2UgdGhlIHVzZXIgcHJvdmlkZWQgbG9hZCBmdW5jdGlvblxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWREZWJvdW5jZSA9IChmbjoodmFsdWU6c3RyaW5nLGNhbGxiYWNrOlRvbUxvYWRDYWxsYmFjaykgPT4gdm9pZCxkZWxheTpudW1iZXIpID0+IHtcblx0dmFyIHRpbWVvdXQ6IG51bGx8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cdHJldHVybiBmdW5jdGlvbih0aGlzOlRvbVNlbGVjdCwgdmFsdWU6c3RyaW5nLGNhbGxiYWNrOlRvbUxvYWRDYWxsYmFjaykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblxuXHRcdGlmKCB0aW1lb3V0ICl7XG5cdFx0XHRzZWxmLmxvYWRpbmcgPSBNYXRoLm1heChzZWxmLmxvYWRpbmcgLSAxLCAwKTtcblx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0XHR9XG5cdFx0dGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR0aW1lb3V0ID0gbnVsbDtcblx0XHRcdHNlbGYubG9hZGVkU2VhcmNoZXNbdmFsdWVdID0gdHJ1ZTtcblx0XHRcdGZuLmNhbGwoc2VsZiwgdmFsdWUsIGNhbGxiYWNrKTtcblxuXHRcdH0sIGRlbGF5KTtcblx0fTtcbn07XG5cblxuLyoqXG4gKiBEZWJvdW5jZSBhbGwgZmlyZWQgZXZlbnRzIHR5cGVzIGxpc3RlZCBpbiBgdHlwZXNgXG4gKiB3aGlsZSBleGVjdXRpbmcgdGhlIHByb3ZpZGVkIGBmbmAuXG4gKlxuICovXG5leHBvcnQgY29uc3QgZGVib3VuY2VfZXZlbnRzID0gKCBzZWxmOlRvbVNlbGVjdCwgdHlwZXM6c3RyaW5nW10sIGZuOigpID0+IHZvaWQgKSA9PiB7XG5cdHZhciB0eXBlOnN0cmluZztcblx0dmFyIHRyaWdnZXIgPSBzZWxmLnRyaWdnZXI7XG5cdHZhciBldmVudF9hcmdzOnsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuXHQvLyBvdmVycmlkZSB0cmlnZ2VyIG1ldGhvZFxuXHRzZWxmLnRyaWdnZXIgPSBmdW5jdGlvbigpe1xuXHRcdHZhciB0eXBlID0gYXJndW1lbnRzWzBdO1xuXHRcdGlmICh0eXBlcy5pbmRleE9mKHR5cGUpICE9PSAtMSkge1xuXHRcdFx0ZXZlbnRfYXJnc1t0eXBlXSA9IGFyZ3VtZW50cztcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRyaWdnZXIuYXBwbHkoc2VsZiwgYXJndW1lbnRzKTtcblx0XHR9XG5cdH07XG5cblx0Ly8gaW52b2tlIHByb3ZpZGVkIGZ1bmN0aW9uXG5cdGZuLmFwcGx5KHNlbGYsIFtdKTtcblx0c2VsZi50cmlnZ2VyID0gdHJpZ2dlcjtcblxuXHQvLyB0cmlnZ2VyIHF1ZXVlZCBldmVudHNcblx0Zm9yKCB0eXBlIG9mIHR5cGVzICl7XG5cdFx0aWYoIHR5cGUgaW4gZXZlbnRfYXJncyApe1xuXHRcdFx0dHJpZ2dlci5hcHBseShzZWxmLCBldmVudF9hcmdzW3R5cGVdKTtcblx0XHR9XG5cdH1cbn07XG5cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB3aXRoaW4gYSB0ZXh0IGlucHV0IGNvbnRyb2wuXG4gKiBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nOlxuICogICAtIHN0YXJ0XG4gKiAgIC0gbGVuZ3RoXG4gKlxuICogTm90ZTogXCJzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIC4uLiBhcHBseSBvbmx5IHRvIGlucHV0cyBvZiB0eXBlcyB0ZXh0LCBzZWFyY2gsIFVSTCwgdGVsIGFuZCBwYXNzd29yZFwiXG4gKiBcdC0gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJbnB1dEVsZW1lbnQvc2V0U2VsZWN0aW9uUmFuZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGlvbiA9IChpbnB1dDpIVE1MSW5wdXRFbGVtZW50KTp7IHN0YXJ0OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyIH0gPT4ge1xuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0XHQ6IGlucHV0LnNlbGVjdGlvblN0YXJ0IHx8IDAsXG5cdFx0bGVuZ3RoXHQ6IChpbnB1dC5zZWxlY3Rpb25FbmR8fDApIC0gKGlucHV0LnNlbGVjdGlvblN0YXJ0fHwwKSxcblx0fTtcbn07XG5cblxuLyoqXG4gKiBQcmV2ZW50IGRlZmF1bHRcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBwcmV2ZW50RGVmYXVsdCA9IChldnQ/OkV2ZW50LCBzdG9wOmJvb2xlYW49ZmFsc2UpOnZvaWQgPT4ge1xuXHRpZiggZXZ0ICl7XG5cdFx0ZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0aWYoIHN0b3AgKXtcblx0XHRcdGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH1cbn1cblxuXG4vKipcbiAqIEFkZCBldmVudCBoZWxwZXJcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRFdmVudCA9ICh0YXJnZXQ6RXZlbnRUYXJnZXQsIHR5cGU6c3RyaW5nLCBjYWxsYmFjazpFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzpvYmplY3QpOnZvaWQgPT4ge1xuXHR0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLGNhbGxiYWNrLG9wdGlvbnMpO1xufTtcblxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSByZXF1ZXN0ZWQga2V5IGlzIGRvd25cbiAqIFdpbGwgcmV0dXJuIGZhbHNlIGlmIG1vcmUgdGhhbiBvbmUgY29udHJvbCBjaGFyYWN0ZXIgaXMgcHJlc3NlZCAoIHdoZW4gW2N0cmwrc2hpZnQrYV0gIT0gW2N0cmwrYV0gKVxuICogVGhlIGN1cnJlbnQgZXZ0IG1heSBub3QgYWx3YXlzIHNldCAoIGVnIGNhbGxpbmcgYWR2YW5jZVNlbGVjdGlvbigpIClcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBpc0tleURvd24gPSAoIGtleV9uYW1lOmtleW9mIChLZXlib2FyZEV2ZW50fE1vdXNlRXZlbnQpLCBldnQ/OktleWJvYXJkRXZlbnR8TW91c2VFdmVudCApID0+IHtcblxuXHRpZiggIWV2dCApe1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmKCAhZXZ0W2tleV9uYW1lXSApe1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHZhciBjb3VudCA9IChldnQuYWx0S2V5PzE6MCkgKyAoZXZ0LmN0cmxLZXk/MTowKSArIChldnQuc2hpZnRLZXk/MTowKSArIChldnQubWV0YUtleT8xOjApO1xuXG5cdGlmKCBjb3VudCA9PT0gMSApe1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuXG4vKipcbiAqIEdldCB0aGUgaWQgb2YgYW4gZWxlbWVudFxuICogSWYgdGhlIGlkIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBzZXQgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBpZFxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldElkID0gKGVsOkVsZW1lbnQsaWQ6c3RyaW5nKSA9PiB7XG5cdGNvbnN0IGV4aXN0aW5nX2lkID0gZWwuZ2V0QXR0cmlidXRlKCdpZCcpO1xuXHRpZiggZXhpc3RpbmdfaWQgKXtcblx0XHRyZXR1cm4gZXhpc3RpbmdfaWQ7XG5cdH1cblxuXHRlbC5zZXRBdHRyaWJ1dGUoJ2lkJyxpZCk7XG5cdHJldHVybiBpZDtcbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHdpdGggYmFja3NsYXNoZXMgYWRkZWQgYmVmb3JlIGNoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVzY2FwZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRTbGFzaGVzID0gKHN0cjpzdHJpbmcpOnN0cmluZyA9PiB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvW1xcXFxcIiddL2csICdcXFxcJCYnKTtcbn07XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFwcGVuZCA9ICggcGFyZW50OkVsZW1lbnR8RG9jdW1lbnRGcmFnbWVudCwgbm9kZTogc3RyaW5nfE5vZGV8bnVsbHx1bmRlZmluZWQgKTp2b2lkID0+e1xuXHRpZiggbm9kZSApIHBhcmVudC5hcHBlbmQobm9kZSk7XG59O1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgYXJyYXlzIGFuZCBoYXNoZXMuXG4gKlxuICogYGBgXG4gKiBpdGVyYXRlKHRoaXMuaXRlbXMsIGZ1bmN0aW9uKGl0ZW0sIGlkKSB7XG4gKiAgICAvLyBpbnZva2VkIGZvciBlYWNoIGl0ZW1cbiAqIH0pO1xuICogYGBgXG4gKlxuICovXG5leHBvcnQgY29uc3QgaXRlcmF0ZSA9IChvYmplY3Q6W118e1trZXk6c3RyaW5nXTphbnl9LCBjYWxsYmFjazoodmFsdWU6YW55LGtleTphbnkpPT5hbnkpID0+IHtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuXHRcdG9iamVjdC5mb3JFYWNoKGNhbGxiYWNrKTtcblxuXHR9ZWxzZXtcblxuXHRcdGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcblx0XHRcdGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0XHRjYWxsYmFjayhvYmplY3Rba2V5XSwga2V5KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG4iLCJcbmltcG9ydCB7IGl0ZXJhdGUgfSBmcm9tICcuL3V0aWxzLnRzJztcblxuLyoqXG4gKiBSZXR1cm4gYSBkb20gZWxlbWVudCBmcm9tIGVpdGhlciBhIGRvbSBxdWVyeSBzdHJpbmcsIGpRdWVyeSBvYmplY3QsIGEgZG9tIGVsZW1lbnQgb3IgaHRtbCBzdHJpbmdcbiAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5NDE0My9jcmVhdGluZy1hLW5ldy1kb20tZWxlbWVudC1mcm9tLWFuLWh0bWwtc3RyaW5nLXVzaW5nLWJ1aWx0LWluLWRvbS1tZXRob2RzLW9yLXByby8zNTM4NTUxOCMzNTM4NTUxOFxuICpcbiAqIHBhcmFtIHF1ZXJ5IHNob3VsZCBiZSB7fVxuICovXG5leHBvcnQgY29uc3QgZ2V0RG9tID0gKCBxdWVyeTphbnkgKTpIVE1MRWxlbWVudCA9PiB7XG5cblx0aWYoIHF1ZXJ5LmpxdWVyeSApe1xuXHRcdHJldHVybiBxdWVyeVswXTtcblx0fVxuXG5cdGlmKCBxdWVyeSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICl7XG5cdFx0cmV0dXJuIHF1ZXJ5O1xuXHR9XG5cblx0aWYoIGlzSHRtbFN0cmluZyhxdWVyeSkgKXtcblx0XHR2YXIgdHBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcblx0XHR0cGwuaW5uZXJIVE1MID0gcXVlcnkudHJpbSgpOyAvLyBOZXZlciByZXR1cm4gYSB0ZXh0IG5vZGUgb2Ygd2hpdGVzcGFjZSBhcyB0aGUgcmVzdWx0XG5cdFx0cmV0dXJuIHRwbC5jb250ZW50LmZpcnN0Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG5cdH1cblxuXHRyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxdWVyeSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIdG1sU3RyaW5nID0gKGFyZzphbnkpOiBib29sZWFuID0+IHtcblx0aWYoIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICYmIGFyZy5pbmRleE9mKCc8JykgPiAtMSApe1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGVzY2FwZVF1ZXJ5ID0gKHF1ZXJ5OnN0cmluZyk6c3RyaW5nID0+IHtcblx0cmV0dXJuIHF1ZXJ5LnJlcGxhY2UoL1snXCJcXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYW4gZXZlbnRcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCB0cmlnZ2VyRXZlbnQgPSAoIGRvbV9lbDpIVE1MRWxlbWVudCwgZXZlbnRfbmFtZTpzdHJpbmcgKTp2b2lkID0+IHtcblx0dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcblx0ZXZlbnQuaW5pdEV2ZW50KGV2ZW50X25hbWUsIHRydWUsIGZhbHNlKTtcblx0ZG9tX2VsLmRpc3BhdGNoRXZlbnQoZXZlbnQpXG59O1xuXG4vKipcbiAqIEFwcGx5IENTUyBydWxlcyB0byBhIGRvbSBlbGVtZW50XG4gKlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlDU1MgPSAoIGRvbV9lbDpIVE1MRWxlbWVudCwgY3NzOnsgW2tleTogc3RyaW5nXTogc3RyaW5nfG51bWJlciB9KTp2b2lkID0+IHtcblx0T2JqZWN0LmFzc2lnbihkb21fZWwuc3R5bGUsIGNzcyk7XG59XG5cblxuLyoqXG4gKiBBZGQgY3NzIGNsYXNzZXNcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDbGFzc2VzID0gKCBlbG10czpIVE1MRWxlbWVudHxIVE1MRWxlbWVudFtdLCAuLi5jbGFzc2VzOnN0cmluZ1tdfHN0cmluZ1tdW10gKSA9PiB7XG5cblx0dmFyIG5vcm1fY2xhc3NlcyBcdD0gY2xhc3Nlc0FycmF5KGNsYXNzZXMpO1xuXHRlbG10c1x0XHRcdFx0PSBjYXN0QXNBcnJheShlbG10cyk7XG5cblx0ZWxtdHMubWFwKCBlbCA9PiB7XG5cdFx0bm9ybV9jbGFzc2VzLm1hcCggY2xzID0+IHtcblx0XHRcdGVsLmNsYXNzTGlzdC5hZGQoIGNscyApO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgY3NzIGNsYXNzZXNcbiAqXG4gKi9cbiBleHBvcnQgY29uc3QgcmVtb3ZlQ2xhc3NlcyA9ICggZWxtdHM6SFRNTEVsZW1lbnR8SFRNTEVsZW1lbnRbXSwgLi4uY2xhc3NlczpzdHJpbmdbXXxzdHJpbmdbXVtdICkgPT4ge1xuXG4gXHR2YXIgbm9ybV9jbGFzc2VzIFx0PSBjbGFzc2VzQXJyYXkoY2xhc3Nlcyk7XG5cdGVsbXRzXHRcdFx0XHQ9IGNhc3RBc0FycmF5KGVsbXRzKTtcblxuXHRlbG10cy5tYXAoIGVsID0+IHtcblx0XHRub3JtX2NsYXNzZXMubWFwKGNscyA9PiB7XG5cdCBcdFx0ZWwuY2xhc3NMaXN0LnJlbW92ZSggY2xzICk7XG5cdFx0fSk7XG4gXHR9KTtcbiB9XG5cblxuLyoqXG4gKiBSZXR1cm4gYXJndW1lbnRzXG4gKlxuICovXG5leHBvcnQgY29uc3QgY2xhc3Nlc0FycmF5ID0gKGFyZ3M6c3RyaW5nW118c3RyaW5nW11bXSk6c3RyaW5nW10gPT4ge1xuXHR2YXIgY2xhc3NlczpzdHJpbmdbXSA9IFtdO1xuXHRpdGVyYXRlKCBhcmdzLCAoX2NsYXNzZXMpID0+e1xuXHRcdGlmKCB0eXBlb2YgX2NsYXNzZXMgPT09ICdzdHJpbmcnICl7XG5cdFx0XHRfY2xhc3NlcyA9IF9jbGFzc2VzLnRyaW0oKS5zcGxpdCgvW1xcdFxcblxcZlxcclxcc10vKTtcblx0XHR9XG5cdFx0aWYoIEFycmF5LmlzQXJyYXkoX2NsYXNzZXMpICl7XG5cdFx0XHRjbGFzc2VzID0gY2xhc3Nlcy5jb25jYXQoX2NsYXNzZXMpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5cbi8qKlxuICogQ3JlYXRlIGFuIGFycmF5IGZyb20gYXJnIGlmIGl0J3Mgbm90IGFscmVhZHkgYW4gYXJyYXlcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjYXN0QXNBcnJheSA9IChhcmc6YW55KTpBcnJheTxhbnk+ID0+IHtcblx0aWYoICFBcnJheS5pc0FycmF5KGFyZykgKXtcbiBcdFx0YXJnID0gW2FyZ107XG4gXHR9XG5cdHJldHVybiBhcmc7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIGNsb3Nlc3Qgbm9kZSB0byB0aGUgZXZ0LnRhcmdldCBtYXRjaGluZyB0aGUgc2VsZWN0b3JcbiAqIFN0b3BzIGF0IHdyYXBwZXJcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJlbnRNYXRjaCA9ICggdGFyZ2V0Om51bGx8SFRNTEVsZW1lbnQsIHNlbGVjdG9yOnN0cmluZywgd3JhcHBlcj86SFRNTEVsZW1lbnQgKTpIVE1MRWxlbWVudHx2b2lkID0+IHtcblxuXHRpZiggd3JhcHBlciAmJiAhd3JhcHBlci5jb250YWlucyh0YXJnZXQpICl7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0d2hpbGUoIHRhcmdldCAmJiB0YXJnZXQubWF0Y2hlcyApe1xuXG5cdFx0aWYoIHRhcmdldC5tYXRjaGVzKHNlbGVjdG9yKSApe1xuXHRcdFx0cmV0dXJuIHRhcmdldDtcblx0XHR9XG5cblx0XHR0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcblx0fVxufVxuXG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBvciBsYXN0IGl0ZW0gZnJvbSBhbiBhcnJheVxuICpcbiAqID4gMCAtIHJpZ2h0IChsYXN0KVxuICogPD0gMCAtIGxlZnQgKGZpcnN0KVxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhaWwgPSAoIGxpc3Q6QXJyYXk8YW55PnxOb2RlTGlzdCwgZGlyZWN0aW9uOm51bWJlcj0wICk6YW55ID0+IHtcblxuXHRpZiggZGlyZWN0aW9uID4gMCApe1xuXHRcdHJldHVybiBsaXN0W2xpc3QubGVuZ3RoLTFdO1xuXHR9XG5cblx0cmV0dXJuIGxpc3RbMF07XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgYW4gb2JqZWN0IGlzIGVtcHR5XG4gKlxuICovXG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmo6b2JqZWN0KTpib29sZWFuID0+IHtcblx0cmV0dXJuIChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCk7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIGluZGV4IG9mIGFuIGVsZW1lbnQgYW1vbmdzdCBzaWJsaW5nIG5vZGVzIG9mIHRoZSBzYW1lIHR5cGVcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBub2RlSW5kZXggPSAoIGVsOm51bGx8RWxlbWVudCwgYW1vbmdzdD86c3RyaW5nICk6bnVtYmVyID0+IHtcblx0aWYgKCFlbCkgcmV0dXJuIC0xO1xuXG5cdGFtb25nc3QgPSBhbW9uZ3N0IHx8IGVsLm5vZGVOYW1lO1xuXG5cdHZhciBpID0gMDtcblx0d2hpbGUoIGVsID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZyApe1xuXG5cdFx0aWYoIGVsLm1hdGNoZXMoYW1vbmdzdCkgKXtcblx0XHRcdGkrKztcblx0XHR9XG5cdH1cblx0cmV0dXJuIGk7XG59XG5cblxuLyoqXG4gKiBTZXQgYXR0cmlidXRlcyBvZiBhbiBlbGVtZW50XG4gKlxuICovXG5leHBvcnQgY29uc3Qgc2V0QXR0ciA9IChlbDpFbGVtZW50LGF0dHJzOnsgW2tleTogc3RyaW5nXTogbnVsbHxzdHJpbmd8bnVtYmVyIH0pID0+IHtcblx0aXRlcmF0ZSggYXR0cnMsKHZhbCxhdHRyKSA9PiB7XG5cdFx0aWYoIHZhbCA9PSBudWxsICl7XG5cdFx0XHRlbC5yZW1vdmVBdHRyaWJ1dGUoYXR0ciBhcyBzdHJpbmcpO1xuXHRcdH1lbHNle1xuXHRcdFx0ZWwuc2V0QXR0cmlidXRlKGF0dHIgYXMgc3RyaW5nLCAnJyt2YWwpO1xuXHRcdH1cblx0fSk7XG59XG5cblxuLyoqXG4gKiBSZXBsYWNlIGEgbm9kZVxuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZU5vZGUgPSAoIGV4aXN0aW5nOk5vZGUsIHJlcGxhY2VtZW50Ok5vZGUgKSA9PiB7XG5cdGlmKCBleGlzdGluZy5wYXJlbnROb2RlICkgZXhpc3RpbmcucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocmVwbGFjZW1lbnQsIGV4aXN0aW5nKTtcbn1cbiIsbnVsbCwiZXhwb3J0IGNvbnN0IEtFWV9BXHRcdFx0XHQ9IDY1O1xuZXhwb3J0IGNvbnN0IEtFWV9SRVRVUk5cdFx0XHQ9IDEzO1xuZXhwb3J0IGNvbnN0IEtFWV9FU0NcdFx0XHQ9IDI3O1xuZXhwb3J0IGNvbnN0IEtFWV9MRUZUXHRcdFx0PSAzNztcbmV4cG9ydCBjb25zdCBLRVlfVVBcdFx0XHRcdD0gMzg7XG5leHBvcnQgY29uc3QgS0VZX1JJR0hUXHRcdFx0PSAzOTtcbmV4cG9ydCBjb25zdCBLRVlfRE9XTlx0XHRcdD0gNDA7XG5leHBvcnQgY29uc3QgS0VZX0JBQ0tTUEFDRVx0XHQ9IDg7XG5leHBvcnQgY29uc3QgS0VZX0RFTEVURVx0XHRcdD0gNDY7XG5leHBvcnQgY29uc3QgS0VZX1RBQlx0XHRcdD0gOTtcblxuZXhwb3J0IGNvbnN0IElTX01BQyAgICAgIFx0XHQ9IHR5cGVvZiBuYXZpZ2F0b3IgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiAvTWFjLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuZXhwb3J0IGNvbnN0IEtFWV9TSE9SVENVVFx0XHQ9IElTX01BQyA/ICdtZXRhS2V5JyA6ICdjdHJsS2V5JzsgLy8gY3RybCBrZXkgb3IgYXBwbGUga2V5IGZvciBtYVxuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIi8qKlxuICogUGx1Z2luOiBcImNoYW5nZV9saXN0ZW5lclwiIChUb20gU2VsZWN0KVxuICogQ29weXJpZ2h0IChjKSBjb250cmlidXRvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpc1xuICogZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GXG4gKiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB0eXBlIFRvbVNlbGVjdCBmcm9tICcuLi8uLi90b20tc2VsZWN0LnRzJztcbmltcG9ydCB7IGFkZEV2ZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMudHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0aGlzOlRvbVNlbGVjdCkge1xuXHRhZGRFdmVudCh0aGlzLmlucHV0LCdjaGFuZ2UnLCgpPT57XG5cdFx0dGhpcy5zeW5jKCk7XG5cdH0pO1xufTtcbiIsIi8qKlxuICogUGx1Z2luOiBcImNoZWNrYm94X29wdGlvbnNcIiAoVG9tIFNlbGVjdClcbiAqIENvcHlyaWdodCAoYykgY29udHJpYnV0b3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXNcbiAqIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRlxuICogQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuXG5pbXBvcnQgdHlwZSBUb21TZWxlY3QgZnJvbSAnLi4vLi4vdG9tLXNlbGVjdC50cyc7XG5pbXBvcnQgeyBUb21UZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzL2luZGV4LnRzJztcbmltcG9ydCB7IHByZXZlbnREZWZhdWx0LCBoYXNoX2tleSB9IGZyb20gJy4uLy4uL3V0aWxzLnRzJztcbmltcG9ydCB7IGdldERvbSB9IGZyb20gJy4uLy4uL3ZhbmlsbGEudHMnO1xuaW1wb3J0IHsgQ0JPcHRpb25zIH0gZnJvbSAnLi90eXBlcy50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QsIHVzZXJPcHRpb25zOkNCT3B0aW9ucykge1xuXHR2YXIgc2VsZiA9IHRoaXM7XG5cdHZhciBvcmlnX29uT3B0aW9uU2VsZWN0ID0gc2VsZi5vbk9wdGlvblNlbGVjdDtcblxuXHRzZWxmLnNldHRpbmdzLmhpZGVTZWxlY3RlZCA9IGZhbHNlO1xuXG5cdGNvbnN0IGNiT3B0aW9ucyA6IENCT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuXHRcdC8vIHNvIHRoYXQgdGhlIHVzZXIgbWF5IGFkZCBkaWZmZXJlbnQgb25lcyBhcyB3ZWxsXG5cdFx0Y2xhc3NOYW1lICAgICAgICAgICAgIDogXCJ0b21zZWxlY3QtY2hlY2tib3hcIixcblxuXHRcdC8vIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCB0byB0aGUgaGlzdG9yaWMgcGx1Z2luJ3MgdmFsdWVzXG5cdFx0Y2hlY2tlZENsYXNzTmFtZXMgICAgIDogdW5kZWZpbmVkLFxuXHRcdHVuY2hlY2tlZENsYXNzTmFtZXMgICA6IHVuZGVmaW5lZCxcblx0fSwgdXNlck9wdGlvbnMpO1xuXG5cblx0dmFyIFVwZGF0ZUNoZWNrZWQgPSBmdW5jdGlvbihjaGVja2JveDpIVE1MSW5wdXRFbGVtZW50LCB0b0NoZWNrIDogYm9vbGVhbikge1xuXHRcdGlmKCB0b0NoZWNrICl7XG5cdFx0XHRjaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdGlmIChjYk9wdGlvbnMudW5jaGVja2VkQ2xhc3NOYW1lcykge1xuXHRcdFx0XHRjaGVja2JveC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNiT3B0aW9ucy51bmNoZWNrZWRDbGFzc05hbWVzKTtcblx0XHRcdH1cblx0XHRcdGlmIChjYk9wdGlvbnMuY2hlY2tlZENsYXNzTmFtZXMpIHtcblx0XHRcdFx0Y2hlY2tib3guY2xhc3NMaXN0LmFkZCguLi5jYk9wdGlvbnMuY2hlY2tlZENsYXNzTmFtZXMpO1xuXHRcdFx0fVxuXHRcdH1lbHNle1xuXHRcdFx0Y2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKGNiT3B0aW9ucy5jaGVja2VkQ2xhc3NOYW1lcykge1xuXHRcdFx0XHRjaGVja2JveC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNiT3B0aW9ucy5jaGVja2VkQ2xhc3NOYW1lcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2JPcHRpb25zLnVuY2hlY2tlZENsYXNzTmFtZXMpIHtcblx0XHRcdFx0Y2hlY2tib3guY2xhc3NMaXN0LmFkZCguLi5jYk9wdGlvbnMudW5jaGVja2VkQ2xhc3NOYW1lcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gdXBkYXRlIHRoZSBjaGVja2JveCBmb3IgYW4gb3B0aW9uXG5cdHZhciBVcGRhdGVDaGVja2JveCA9IGZ1bmN0aW9uKG9wdGlvbjpIVE1MRWxlbWVudCl7XG5cdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0dmFyIGNoZWNrYm94ID0gb3B0aW9uLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0LicgKyBjYk9wdGlvbnMuY2xhc3NOYW1lKTtcblx0XHRcdGlmKCBjaGVja2JveCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgKXtcblx0XHRcdFx0VXBkYXRlQ2hlY2tlZChjaGVja2JveCwgb3B0aW9uLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0ZWQnKSk7XG5cdFx0XHR9XG5cdFx0fSwxKTtcblx0fTtcblxuXHQvLyBhZGQgY2hlY2tib3ggdG8gb3B0aW9uIHRlbXBsYXRlXG5cdHNlbGYuaG9vaygnYWZ0ZXInLCdzZXR1cFRlbXBsYXRlcycsKCkgPT4ge1xuXG5cdFx0dmFyIG9yaWdfcmVuZGVyX29wdGlvbiA9IHNlbGYuc2V0dGluZ3MucmVuZGVyLm9wdGlvbjtcblxuXHRcdHNlbGYuc2V0dGluZ3MucmVuZGVyLm9wdGlvbiA9ICgoZGF0YSwgZXNjYXBlX2h0bWwpID0+IHtcblx0XHRcdHZhciByZW5kZXJlZCA9IGdldERvbShvcmlnX3JlbmRlcl9vcHRpb24uY2FsbChzZWxmLCBkYXRhLCBlc2NhcGVfaHRtbCkpO1xuXHRcdFx0dmFyIGNoZWNrYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdGlmIChjYk9wdGlvbnMuY2xhc3NOYW1lKSB7XG5cdFx0XHRcdGNoZWNrYm94LmNsYXNzTGlzdC5hZGQoY2JPcHRpb25zLmNsYXNzTmFtZSk7XG5cdFx0XHR9XG5cdFx0XHRjaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZXZ0KXtcblx0XHRcdFx0cHJldmVudERlZmF1bHQoZXZ0KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRjaGVja2JveC50eXBlID0gJ2NoZWNrYm94Jztcblx0XHRcdGNvbnN0IGhhc2hlZCA9IGhhc2hfa2V5KGRhdGFbc2VsZi5zZXR0aW5ncy52YWx1ZUZpZWxkXSk7XG5cblx0XHRcdFVwZGF0ZUNoZWNrZWQoY2hlY2tib3gsICEhKGhhc2hlZCAmJiBzZWxmLml0ZW1zLmluZGV4T2YoaGFzaGVkKSA+IC0xKSApO1xuXG5cdFx0XHRyZW5kZXJlZC5wcmVwZW5kKGNoZWNrYm94KTtcblx0XHRcdHJldHVybiByZW5kZXJlZDtcblx0XHR9KSBzYXRpc2ZpZXMgVG9tVGVtcGxhdGU7XG5cdH0pO1xuXG5cdC8vIHVuY2hlY2sgd2hlbiBpdGVtIHJlbW92ZWRcblx0c2VsZi5vbignaXRlbV9yZW1vdmUnLCh2YWx1ZTpzdHJpbmcpID0+IHtcblx0XHR2YXIgb3B0aW9uID0gc2VsZi5nZXRPcHRpb24odmFsdWUpO1xuXG5cdFx0aWYoIG9wdGlvbiApeyAvLyBpZiBkcm9wZG93biBoYXNuJ3QgYmVlbiBvcGVuZWQgeWV0LCB0aGUgb3B0aW9uIHdvbid0IGV4aXN0XG5cdFx0XHRvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTsgLy8gc2VsZWN0ZWQgY2xhc3Mgd29uJ3QgYmUgcmVtb3ZlZCB5ZXRcblx0XHRcdFVwZGF0ZUNoZWNrYm94KG9wdGlvbik7XG5cdFx0fVxuXHR9KTtcblxuXHQvLyBjaGVjayB3aGVuIGl0ZW0gYWRkZWRcblx0c2VsZi5vbignaXRlbV9hZGQnLCh2YWx1ZTpzdHJpbmcpID0+IHtcblx0XHR2YXIgb3B0aW9uID0gc2VsZi5nZXRPcHRpb24odmFsdWUpO1xuXG5cdFx0aWYoIG9wdGlvbiApeyAvLyBpZiBkcm9wZG93biBoYXNuJ3QgYmVlbiBvcGVuZWQgeWV0LCB0aGUgb3B0aW9uIHdvbid0IGV4aXN0XG5cdFx0XHRVcGRhdGVDaGVja2JveChvcHRpb24pO1xuXHRcdH1cblx0fSk7XG5cblxuXHQvLyByZW1vdmUgaXRlbXMgd2hlbiBzZWxlY3RlZCBvcHRpb24gaXMgY2xpY2tlZFxuXHRzZWxmLmhvb2soJ2luc3RlYWQnLCdvbk9wdGlvblNlbGVjdCcsKCBldnQ6S2V5Ym9hcmRFdmVudCwgb3B0aW9uOkhUTUxFbGVtZW50ICk9PntcblxuXHRcdGlmKCBvcHRpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3RlZCcpICl7XG5cdFx0XHRvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXHRcdFx0c2VsZi5yZW1vdmVJdGVtKG9wdGlvbi5kYXRhc2V0LnZhbHVlKTtcblx0XHRcdHNlbGYucmVmcmVzaE9wdGlvbnMoKTtcblx0XHRcdHByZXZlbnREZWZhdWx0KGV2dCx0cnVlKTtcblx0XHRcdHJldHVybjtcbiAgICAgICAgfVxuXG5cdFx0b3JpZ19vbk9wdGlvblNlbGVjdC5jYWxsKHNlbGYsIGV2dCwgb3B0aW9uKTtcblxuXHRcdFVwZGF0ZUNoZWNrYm94KG9wdGlvbik7XG5cdH0pO1xuXG59O1xuIiwiLyoqXG4gKiBQbHVnaW46IFwiZHJvcGRvd25faGVhZGVyXCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgZ2V0RG9tIH0gZnJvbSAnLi4vLi4vdmFuaWxsYS50cyc7XG5pbXBvcnQgeyBDQk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLnRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QsIHVzZXJPcHRpb25zOkNCT3B0aW9ucykge1xuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG5cdFx0Y2xhc3NOYW1lOiAnY2xlYXItYnV0dG9uJyxcblx0XHR0aXRsZTogJ0NsZWFyIEFsbCcsXG5cdFx0cm9sZTogJ2J1dHRvbicsXG5cdFx0dGFiaW5kZXg6IDAsXG5cdFx0aHRtbDogKGRhdGE6Q0JPcHRpb25zKSA9PiB7XG5cblx0XHRyZXR1cm4gYDxkaXYgY2xhc3M9XCIke2RhdGEuY2xhc3NOYW1lfVwiIHRpdGxlPVwiJHtkYXRhLnRpdGxlfVwiIHJvbGU9XCIke2RhdGEucm9sZX1cIiB0YWJpbmRleD1cIiR7ZGF0YS50YWJpbmRleH1cIj4mdGltZXM7PC9kaXY+YDtcblx0XHR9XG5cdH0sIHVzZXJPcHRpb25zKTtcblxuXHRzZWxmLm9uKCdpbml0aWFsaXplJywoKT0+e1xuXHRcdHZhciBidXR0b24gPSBnZXREb20ob3B0aW9ucy5odG1sKG9wdGlvbnMpKTtcblx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLChldnQpPT57XG5cblx0XHRcdGlmKCBzZWxmLmlzTG9ja2VkICkgcmV0dXJuO1xuXG5cdFx0XHRzZWxmLmNsZWFyKCk7XG5cblx0XHRcdGlmKCBzZWxmLnNldHRpbmdzLm1vZGUgPT09ICdzaW5nbGUnICYmIHNlbGYuc2V0dGluZ3MuYWxsb3dFbXB0eU9wdGlvbiApe1xuXHRcdFx0XHRzZWxmLmFkZEl0ZW0oJycpO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRzZWxmLnJlZnJlc2hPcHRpb25zKGZhbHNlKTtcblxuXHRcdFx0ZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fSk7XG5cdFx0c2VsZi5jb250cm9sLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cdH0pO1xuXG59O1xuIiwiLyoqXG4gKiBQbHVnaW46IFwiZHJhZ19kcm9wXCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgVG9tT3B0aW9uLCBUb21JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvaW5kZXgudHMnO1xuaW1wb3J0IHsgZXNjYXBlX2h0bWwsIHByZXZlbnREZWZhdWx0LCBhZGRFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzLnRzJztcbmltcG9ydCB7IGdldERvbSwgc2V0QXR0ciB9IGZyb20gJy4uLy4uL3ZhbmlsbGEudHMnO1xuXG5cbmNvbnN0IGluc2VydEFmdGVyID0gKHJlZmVyZW5jZU5vZGU6RWxlbWVudCwgbmV3Tm9kZTpFbGVtZW50KSA9PiB7XG5cdHJlZmVyZW5jZU5vZGUucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUubmV4dFNpYmxpbmcpO1xufVxuXG5jb25zdCBpbnNlcnRCZWZvcmUgPSAocmVmZXJlbmNlTm9kZTpFbGVtZW50LCBuZXdOb2RlOkVsZW1lbnQpID0+IHtcblx0cmVmZXJlbmNlTm9kZS5wYXJlbnROb2RlPy5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmNvbnN0IGlzQmVmb3JlID0gKHJlZmVyZW5jZU5vZGU6RWxlbWVudHx1bmRlZmluZWR8bnVsbCwgbmV3Tm9kZTpFbGVtZW50fHVuZGVmaW5lZHxudWxsKSA9Pntcblx0XG5cdGRve1xuXHRcdG5ld05vZGUgPSBuZXdOb2RlPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG5cdFx0aWYoIHJlZmVyZW5jZU5vZGUgPT0gbmV3Tm9kZSApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdH13aGlsZSggbmV3Tm9kZSAmJiBuZXdOb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcgKTtcblxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRoaXM6VG9tU2VsZWN0KSB7XG5cdHZhciBzZWxmID0gdGhpcztcblx0aWYgKHNlbGYuc2V0dGluZ3MubW9kZSAhPT0gJ211bHRpJykgcmV0dXJuO1xuXG5cdHZhciBvcmlnX2xvY2tcdFx0PSBzZWxmLmxvY2s7XG5cdHZhciBvcmlnX3VubG9ja1x0XHQ9IHNlbGYudW5sb2NrO1xuXHRsZXQgc29ydGFibGUgPSB0cnVlO1xuXHRcdGxldCBkcmFnX2l0ZW06VG9tSXRlbXx1bmRlZmluZWQ7XG5cblxuXHQvKipcblx0ICogQWRkIGRyYWdnYWJsZSBhdHRyaWJ1dGUgdG8gaXRlbVxuXHQgKi9cblx0c2VsZi5ob29rKCdhZnRlcicsJ3NldHVwVGVtcGxhdGVzJywoKSA9PiB7XG5cblx0XHR2YXIgb3JpZ19yZW5kZXJfaXRlbSA9IHNlbGYuc2V0dGluZ3MucmVuZGVyLml0ZW07XG5cblx0XHRzZWxmLnNldHRpbmdzLnJlbmRlci5pdGVtID0gKGRhdGE6VG9tT3B0aW9uLCBlc2NhcGU6dHlwZW9mIGVzY2FwZV9odG1sKSA9PiB7XG5cdFx0XHRjb25zdCBpdGVtID0gZ2V0RG9tKG9yaWdfcmVuZGVyX2l0ZW0uY2FsbChzZWxmLCBkYXRhLCBlc2NhcGUpKSBhcyBUb21JdGVtO1xuXHRcdFx0c2V0QXR0cihpdGVtLHsnZHJhZ2dhYmxlJzondHJ1ZSd9KTtcblxuXG5cdFx0XHQvLyBwcmV2ZW50IGRvY19tb3VzZWRvd24gKHNlZSB0b20tc2VsZWN0LnRzKVxuXHRcdFx0Y29uc3QgbW91c2Vkb3duID0gKGV2dDpFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiggIXNvcnRhYmxlICkgcHJldmVudERlZmF1bHQoZXZ0KTtcblx0XHRcdFx0ZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkcmFnU3RhcnQgPSAoZXZ0OkV2ZW50KSA9PiB7XG5cdFx0XHRcdGRyYWdfaXRlbSA9IGl0ZW07XG5cdFx0XHRcdFxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRpdGVtLmNsYXNzTGlzdC5hZGQoJ3RzLWRyYWdnaW5nJyk7XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0XHRcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZHJhZ092ZXIgPSAoZXZ0OkV2ZW50KSA9Pntcblx0XHRcdFx0ZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGl0ZW0uY2xhc3NMaXN0LmFkZCgndHMtZHJhZy1vdmVyJyk7XG5cdFx0XHRcdG1vdmVpdGVtKGl0ZW0sZHJhZ19pdGVtKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZHJhZ0xlYXZlID0gKCkgPT4ge1xuXHRcdFx0XHRpdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ3RzLWRyYWctb3ZlcicpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBtb3ZlaXRlbSA9ICh0YXJnZXRpdGVtOlRvbUl0ZW0sIGRyYWdpdGVtOlRvbUl0ZW18dW5kZWZpbmVkKSA9PiB7XG5cdFx0XHRcdGlmKCBkcmFnaXRlbSA9PT0gdW5kZWZpbmVkICkgcmV0dXJuO1xuXHRcdFx0XHRcblx0XHRcdFx0aWYoIGlzQmVmb3JlKGRyYWdpdGVtLGl0ZW0pICl7XG5cdFx0XHRcdFx0aW5zZXJ0QWZ0ZXIodGFyZ2V0aXRlbSxkcmFnaXRlbSk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdGluc2VydEJlZm9yZSh0YXJnZXRpdGVtLGRyYWdpdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkcmFnZW5kID0gKCkgPT4ge1xuXHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHMtZHJhZy1vdmVyJykuZm9yRWFjaChlbD0+IGVsLmNsYXNzTGlzdC5yZW1vdmUoJ3RzLWRyYWctb3ZlcicpKTtcblx0XHRcdFx0ZHJhZ19pdGVtPy5jbGFzc0xpc3QucmVtb3ZlKCd0cy1kcmFnZ2luZycpO1xuXHRcdFx0XHRkcmFnX2l0ZW0gPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0dmFyIHZhbHVlczpzdHJpbmdbXSA9IFtdO1xuXHRcdFx0XHRzZWxmLmNvbnRyb2wucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdmFsdWVdYCkuZm9yRWFjaCgoZWw6RWxlbWVudCk9PiB7XG5cdFx0XHRcdFx0aWYoICg8SFRNTE9wdGlvbkVsZW1lbnQ+ZWwpLmRhdGFzZXQudmFsdWUgKXtcblx0XHRcdFx0XHRcdGxldCB2YWx1ZSA9ICg8SFRNTE9wdGlvbkVsZW1lbnQ+ZWwpLmRhdGFzZXQudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiggdmFsdWUgKXtcblx0XHRcdFx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0c2VsZi5zZXRWYWx1ZSh2YWx1ZXMpO1xuXHRcdFx0fVx0XG5cblxuXHRcdFx0YWRkRXZlbnQoaXRlbSwnbW91c2Vkb3duJywgbW91c2Vkb3duKTtcblx0XHRcdGFkZEV2ZW50KGl0ZW0sJ2RyYWdzdGFydCcsIGRyYWdTdGFydCk7XG5cdFx0XHRhZGRFdmVudChpdGVtLCdkcmFnZW50ZXInLCBkcmFnT3Zlcilcblx0XHRcdGFkZEV2ZW50KGl0ZW0sJ2RyYWdvdmVyJywgZHJhZ092ZXIpO1xuXHRcdFx0YWRkRXZlbnQoaXRlbSwnZHJhZ2xlYXZlJywgZHJhZ0xlYXZlKTtcblx0XHRcdGFkZEV2ZW50KGl0ZW0sJ2RyYWdlbmQnLCBkcmFnZW5kKTtcblx0XHRcdFx0XG5cdFx0XHRyZXR1cm4gaXRlbTtcblx0XHR9XHRcblx0fSk7XG5cblxuXG5cdHNlbGYuaG9vaygnaW5zdGVhZCcsJ2xvY2snLCgpPT57XG5cdFx0c29ydGFibGUgPSBmYWxzZTtcblx0XHRyZXR1cm4gb3JpZ19sb2NrLmNhbGwoc2VsZik7XG5cdH0pO1xuXG5cdHNlbGYuaG9vaygnaW5zdGVhZCcsJ3VubG9jaycsKCk9Pntcblx0XHRzb3J0YWJsZSA9IHRydWU7XG5cdFx0cmV0dXJuIG9yaWdfdW5sb2NrLmNhbGwoc2VsZik7XG5cdH0pO1xuXG59O1xuIiwiLyoqXG4gKiBQbHVnaW46IFwiZHJvcGRvd25faGVhZGVyXCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgZ2V0RG9tIH0gZnJvbSAnLi4vLi4vdmFuaWxsYS50cyc7XG5pbXBvcnQgeyBwcmV2ZW50RGVmYXVsdCB9IGZyb20gJy4uLy4uL3V0aWxzLnRzJztcbmltcG9ydCB7IERIT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMudHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0aGlzOlRvbVNlbGVjdCwgdXNlck9wdGlvbnM6REhPcHRpb25zKSB7XG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHR0aXRsZSAgICAgICAgIDogJ1VudGl0bGVkJyxcblx0XHRoZWFkZXJDbGFzcyAgIDogJ2Ryb3Bkb3duLWhlYWRlcicsXG5cdFx0dGl0bGVSb3dDbGFzcyA6ICdkcm9wZG93bi1oZWFkZXItdGl0bGUnLFxuXHRcdGxhYmVsQ2xhc3MgICAgOiAnZHJvcGRvd24taGVhZGVyLWxhYmVsJyxcblx0XHRjbG9zZUNsYXNzICAgIDogJ2Ryb3Bkb3duLWhlYWRlci1jbG9zZScsXG5cblx0XHRodG1sOiAoZGF0YTpESE9wdGlvbnMpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdCc8ZGl2IGNsYXNzPVwiJyArIGRhdGEuaGVhZGVyQ2xhc3MgKyAnXCI+JyArXG5cdFx0XHRcdFx0JzxkaXYgY2xhc3M9XCInICsgZGF0YS50aXRsZVJvd0NsYXNzICsgJ1wiPicgK1xuXHRcdFx0XHRcdFx0JzxzcGFuIGNsYXNzPVwiJyArIGRhdGEubGFiZWxDbGFzcyArICdcIj4nICsgZGF0YS50aXRsZSArICc8L3NwYW4+JyArXG5cdFx0XHRcdFx0XHQnPGEgY2xhc3M9XCInICsgZGF0YS5jbG9zZUNsYXNzICsgJ1wiPiZ0aW1lczs8L2E+JyArXG5cdFx0XHRcdFx0JzwvZGl2PicgK1xuXHRcdFx0XHQnPC9kaXY+J1xuXHRcdFx0KTtcblx0XHR9XG5cdH0sIHVzZXJPcHRpb25zKTtcblxuXHRzZWxmLm9uKCdpbml0aWFsaXplJywoKT0+e1xuXHRcdHZhciBoZWFkZXIgPSBnZXREb20ob3B0aW9ucy5odG1sKG9wdGlvbnMpKTtcblxuXHRcdHZhciBjbG9zZV9saW5rID0gaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy4nK29wdGlvbnMuY2xvc2VDbGFzcyk7XG5cdFx0aWYoIGNsb3NlX2xpbmsgKXtcblx0XHRcdGNsb3NlX2xpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLChldnQpPT57XG5cdFx0XHRcdHByZXZlbnREZWZhdWx0KGV2dCx0cnVlKTtcblx0XHRcdFx0c2VsZi5jbG9zZSgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0c2VsZi5kcm9wZG93bi5pbnNlcnRCZWZvcmUoaGVhZGVyLCBzZWxmLmRyb3Bkb3duLmZpcnN0Q2hpbGQpO1xuXHR9KTtcblxufTtcbiIsIi8qKlxuICogUGx1Z2luOiBcImRyb3Bkb3duX2lucHV0XCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgbm9kZUluZGV4LCByZW1vdmVDbGFzc2VzIH0gZnJvbSAnLi4vLi4vdmFuaWxsYS50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QpIHtcblx0dmFyIHNlbGYgPSB0aGlzO1xuXG5cdC8qKlxuXHQgKiBNb3ZlcyB0aGUgY2FyZXQgdG8gdGhlIHNwZWNpZmllZCBpbmRleC5cblx0ICpcblx0ICogVGhlIGlucHV0IG11c3QgYmUgbW92ZWQgYnkgbGVhdmluZyBpdCBpbiBwbGFjZSBhbmQgbW92aW5nIHRoZVxuXHQgKiBzaWJsaW5ncywgZHVlIHRvIHRoZSBmYWN0IHRoYXQgZm9jdXMgY2Fubm90IGJlIHJlc3RvcmVkIG9uY2UgbG9zdFxuXHQgKiBvbiBtb2JpbGUgd2Via2l0IGRldmljZXNcblx0ICpcblx0ICovXG5cdHNlbGYuaG9vaygnaW5zdGVhZCcsJ3NldENhcmV0JywobmV3X3BvczpudW1iZXIpID0+IHtcblxuXHRcdGlmKCBzZWxmLnNldHRpbmdzLm1vZGUgPT09ICdzaW5nbGUnIHx8ICFzZWxmLmNvbnRyb2wuY29udGFpbnMoc2VsZi5jb250cm9sX2lucHV0KSApIHtcblx0XHRcdG5ld19wb3MgPSBzZWxmLml0ZW1zLmxlbmd0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV3X3BvcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNlbGYuaXRlbXMubGVuZ3RoLCBuZXdfcG9zKSk7XG5cblx0XHRcdGlmKCBuZXdfcG9zICE9IHNlbGYuY2FyZXRQb3MgJiYgIXNlbGYuaXNQZW5kaW5nICl7XG5cblx0XHRcdFx0c2VsZi5jb250cm9sQ2hpbGRyZW4oKS5mb3JFYWNoKChjaGlsZCxqKSA9PiB7XG5cdFx0XHRcdFx0aWYoIGogPCBuZXdfcG9zICl7XG5cdFx0XHRcdFx0XHRzZWxmLmNvbnRyb2xfaW5wdXQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdiZWZvcmViZWdpbicsIGNoaWxkICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuY29udHJvbC5hcHBlbmRDaGlsZCggY2hpbGQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHNlbGYuY2FyZXRQb3MgPSBuZXdfcG9zO1xuXHR9KTtcblxuXHRzZWxmLmhvb2soJ2luc3RlYWQnLCdtb3ZlQ2FyZXQnLChkaXJlY3Rpb246bnVtYmVyKSA9PiB7XG5cblx0XHRpZiggIXNlbGYuaXNGb2N1c2VkICkgcmV0dXJuO1xuXG5cdFx0Ly8gbW92ZSBjYXJldCBiZWZvcmUgb3IgYWZ0ZXIgc2VsZWN0ZWQgaXRlbXNcblx0XHRjb25zdCBsYXN0X2FjdGl2ZVx0XHQ9IHNlbGYuZ2V0TGFzdEFjdGl2ZShkaXJlY3Rpb24pO1xuXHRcdGlmKCBsYXN0X2FjdGl2ZSApe1xuXHRcdFx0Y29uc3QgaWR4ID0gbm9kZUluZGV4KGxhc3RfYWN0aXZlKTtcblx0XHRcdHNlbGYuc2V0Q2FyZXQoZGlyZWN0aW9uID4gMCA/IGlkeCArIDE6IGlkeCk7XG5cdFx0XHRzZWxmLnNldEFjdGl2ZUl0ZW0oKTtcblx0XHRcdHJlbW92ZUNsYXNzZXMobGFzdF9hY3RpdmUgYXMgSFRNTEVsZW1lbnQsJ2xhc3QtYWN0aXZlJyk7XG5cblx0XHQvLyBtb3ZlIGNhcmV0IGxlZnQgb3IgcmlnaHQgb2YgY3VycmVudCBwb3NpdGlvblxuXHRcdH1lbHNle1xuXHRcdFx0c2VsZi5zZXRDYXJldChzZWxmLmNhcmV0UG9zICsgZGlyZWN0aW9uKTtcblxuXHRcdH1cblxuXHR9KTtcblxufTtcbiIsIi8qKlxuICogUGx1Z2luOiBcImRyb3Bkb3duX2lucHV0XCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2NvbnN0YW50cy50cyc7XG5pbXBvcnQgeyBnZXREb20sIGFkZENsYXNzZXMgfSBmcm9tICcuLi8uLi92YW5pbGxhLnRzJztcbmltcG9ydCB7IGFkZEV2ZW50LCBwcmV2ZW50RGVmYXVsdCB9IGZyb20gJy4uLy4uL3V0aWxzLnRzJztcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0aGlzOlRvbVNlbGVjdCkge1xuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLnNldHRpbmdzLnNob3VsZE9wZW4gPSB0cnVlOyAvLyBtYWtlIHN1cmUgdGhlIGlucHV0IGlzIHNob3duIGV2ZW4gaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd25cblxuXHRzZWxmLmhvb2soJ2JlZm9yZScsJ3NldHVwJywoKT0+e1xuXHRcdHNlbGYuZm9jdXNfbm9kZVx0XHQ9IHNlbGYuY29udHJvbDtcblxuXHRcdGFkZENsYXNzZXMoIHNlbGYuY29udHJvbF9pbnB1dCwgJ2Ryb3Bkb3duLWlucHV0Jyk7XG5cblx0IFx0Y29uc3QgZGl2ID0gZ2V0RG9tKCc8ZGl2IGNsYXNzPVwiZHJvcGRvd24taW5wdXQtd3JhcFwiPicpO1xuXHRcdGRpdi5hcHBlbmQoc2VsZi5jb250cm9sX2lucHV0KTtcblx0XHRzZWxmLmRyb3Bkb3duLmluc2VydEJlZm9yZShkaXYsIHNlbGYuZHJvcGRvd24uZmlyc3RDaGlsZCk7XG5cblx0XHQvLyBzZXQgYSBwbGFjZWhvbGRlciBpbiB0aGUgc2VsZWN0IGNvbnRyb2xcblx0XHRjb25zdCBwbGFjZWhvbGRlciA9IGdldERvbSgnPGlucHV0IGNsYXNzPVwiaXRlbXMtcGxhY2Vob2xkZXJcIiB0YWJpbmRleD1cIi0xXCIgLz4nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdHBsYWNlaG9sZGVyLnBsYWNlaG9sZGVyID0gc2VsZi5zZXR0aW5ncy5wbGFjZWhvbGRlciB8fCcnO1xuXHRcdHNlbGYuY29udHJvbC5hcHBlbmQocGxhY2Vob2xkZXIpO1xuXHRcdC8qKlxuXHRcdCAqIFRvbVNlbGVjdCByZW5kZXJzIGEgY3VzdG9tIGNvbnRyb2wgd2l0aCBhIGZvY3VzYWJsZSA8aW5wdXQgY2xhc3M9XCJpdGVtcy1wbGFjZWhvbGRlclwiPi5cblx0XHQgKiBUaGUgc291cmNlIDxzZWxlY3Q+J3MgYXJpYS1sYWJlbCBpcyBub3QgYXV0b21hdGljYWxseSBwcm9wYWdhdGVkIHRvIHRoYXQgaW5wdXQsXG5cdFx0ICogd2hpY2ggdHJpZ2dlcnMgXCJNaXNzaW5nIGZvcm0gbGFiZWxcIiBhY2Nlc3NpYmlsaXR5IHdhcm5pbmdzLlxuXHRcdCAqIFRoaXMgaGVscGVyIGNvcGllcyB0aGUgbGFiZWwgZnJvbSB0aGUgPHNlbGVjdD4gb250byB0aGUgZ2VuZXJhdGVkIGlucHV0LlxuXHRcdCAqL1xuXHRcdGNvbnN0IGxhYmVsID0gc2VsZi5pbnB1dD8uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG5cdFx0aWYgKCFsYWJlbCkgcmV0dXJuO1xuXHRcdHBsYWNlaG9sZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGxhYmVsKTtcblx0fSk7XG5cblx0c2VsZi5vbignaW5pdGlhbGl6ZScsKCk9Pntcblx0XHQvLyBzZXQgdGFiSW5kZXggb24gY29udHJvbCB0byAtMSwgb3RoZXJ3aXNlIFtzaGlmdCt0YWJdIHdpbGwgcHV0IGZvY3VzIHJpZ2h0IGJhY2sgb24gY29udHJvbF9pbnB1dFxuXHRcdHNlbGYuY29udHJvbF9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywoZXZ0OktleWJvYXJkRXZlbnQpID0+e1xuXHRcdC8vYWRkRXZlbnQoc2VsZi5jb250cm9sX2lucHV0LCdrZXlkb3duJyBhcyBjb25zdCwoZXZ0OktleWJvYXJkRXZlbnQpID0+e1xuXHRcdFx0c3dpdGNoKCBldnQua2V5Q29kZSApe1xuXHRcdFx0XHRjYXNlIGNvbnN0YW50cy5LRVlfRVNDOlxuXHRcdFx0XHRcdGlmIChzZWxmLmlzT3Blbikge1xuXHRcdFx0XHRcdFx0cHJldmVudERlZmF1bHQoZXZ0LHRydWUpO1xuXHRcdFx0XHRcdFx0c2VsZi5jbG9zZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZWxmLmNsZWFyQWN0aXZlSXRlbXMoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIGNvbnN0YW50cy5LRVlfVEFCOlxuXHRcdFx0XHRcdHNlbGYuZm9jdXNfbm9kZS50YWJJbmRleCA9IC0xO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHJldHVybiBzZWxmLm9uS2V5RG93bi5jYWxsKHNlbGYsZXZ0KTtcblx0XHR9KTtcblxuXHRcdHNlbGYub24oJ2JsdXInLCgpPT57XG5cdFx0XHRzZWxmLmZvY3VzX25vZGUudGFiSW5kZXggPSBzZWxmLmlzRGlzYWJsZWQgPyAtMSA6IHNlbGYudGFiSW5kZXg7XG5cdFx0fSk7XG5cblxuXHRcdC8vIGdpdmUgdGhlIGNvbnRyb2xfaW5wdXQgZm9jdXMgd2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlblxuXHRcdHNlbGYub24oJ2Ryb3Bkb3duX29wZW4nLCgpID0+e1xuXHRcdFx0c2VsZi5jb250cm9sX2lucHV0LmZvY3VzKCk7XG5cdFx0fSk7XG5cblx0XHQvLyBwcmV2ZW50IG9uQmx1ciBmcm9tIGNsb3Npbmcgd2hlbiBmb2N1cyBpcyBvbiB0aGUgY29udHJvbF9pbnB1dFxuXHRcdGNvbnN0IG9yaWdfb25CbHVyID0gc2VsZi5vbkJsdXI7XG5cdFx0c2VsZi5ob29rKCdpbnN0ZWFkJywnb25CbHVyJywoZXZ0PzpGb2N1c0V2ZW50KT0+e1xuXHRcdFx0aWYoIGV2dCAmJiBldnQucmVsYXRlZFRhcmdldCA9PSBzZWxmLmNvbnRyb2xfaW5wdXQgKSByZXR1cm47XG5cdFx0XHRyZXR1cm4gb3JpZ19vbkJsdXIuY2FsbChzZWxmKTtcblx0XHR9KTtcblxuXHRcdGFkZEV2ZW50KHNlbGYuY29udHJvbF9pbnB1dCwnYmx1cicsICgpID0+IHNlbGYub25CbHVyKCkgKTtcblxuXHRcdC8vIHJldHVybiBmb2N1cyB0byBjb250cm9sIHRvIGFsbG93IGZ1cnRoZXIga2V5Ym9hcmQgaW5wdXRcblx0XHRzZWxmLmhvb2soJ2JlZm9yZScsJ2Nsb3NlJywoKSA9PntcblxuXHRcdFx0aWYoICFzZWxmLmlzT3BlbiApIHJldHVybjtcblx0XHRcdHNlbGYuZm9jdXNfbm9kZS5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuXHRcdH0pO1xuXG5cdH0pO1xufTtcbiIsIi8qKlxuICogUGx1Z2luOiBcImlucHV0X2F1dG9ncm93XCIgKFRvbSBTZWxlY3QpXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXNcbiAqIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRlxuICogQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuXG5pbXBvcnQgdHlwZSBUb21TZWxlY3QgZnJvbSAnLi4vLi4vdG9tLXNlbGVjdC50cyc7XG5pbXBvcnQgeyBhZGRFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzLnRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QpIHtcblx0dmFyIHNlbGZcdFx0XHRcdFx0PSB0aGlzO1xuXG5cdHNlbGYub24oJ2luaXRpYWxpemUnLCgpPT57XG5cblxuXHRcdHZhciB0ZXN0X2lucHV0XHRcdFx0XHQ9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHR2YXIgY29udHJvbFx0XHRcdFx0XHQ9IHNlbGYuY29udHJvbF9pbnB1dDtcblx0XHR0ZXN0X2lucHV0LnN0eWxlLmNzc1RleHRcdD0gJ3Bvc2l0aW9uOmFic29sdXRlOyB0b3A6LTk5OTk5cHg7IGxlZnQ6LTk5OTk5cHg7IHdpZHRoOmF1dG87IHBhZGRpbmc6MDsgd2hpdGUtc3BhY2U6cHJlOyAnO1xuXG5cdFx0c2VsZi53cmFwcGVyLmFwcGVuZENoaWxkKHRlc3RfaW5wdXQpO1xuXG5cblx0XHR2YXIgdHJhbnNmZXJfc3R5bGVzXHRcdFx0PSBbICdsZXR0ZXJTcGFjaW5nJywgJ2ZvbnRTaXplJywgJ2ZvbnRGYW1pbHknLCAnZm9udFdlaWdodCcsICd0ZXh0VHJhbnNmb3JtJyBdO1xuXG5cdFx0Zm9yKCBjb25zdCBzdHlsZV9uYW1lIG9mIHRyYW5zZmVyX3N0eWxlcyApe1xuXHRcdFx0Ly8gQHRzLWlnbm9yZSBUUzcwMTUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzUwNTA2MTU0LzY5NzU3NlxuXHRcdFx0dGVzdF9pbnB1dC5zdHlsZVtzdHlsZV9uYW1lXSA9IGNvbnRyb2wuc3R5bGVbc3R5bGVfbmFtZV07XG5cdFx0fVxuXG5cblx0XHQvKipcblx0XHQgKiBTZXQgdGhlIGNvbnRyb2wgd2lkdGhcblx0XHQgKlxuXHRcdCAqL1xuXHRcdHZhciByZXNpemUgPSAoKT0+e1xuXHRcdFx0dGVzdF9pbnB1dC50ZXh0Q29udGVudFx0PSBjb250cm9sLnZhbHVlO1xuXHRcdFx0Y29udHJvbC5zdHlsZS53aWR0aFx0XHQ9IHRlc3RfaW5wdXQuY2xpZW50V2lkdGgrJ3B4Jztcblx0XHR9O1xuXG5cdFx0cmVzaXplKCk7XG5cdFx0c2VsZi5vbigndXBkYXRlIGl0ZW1fYWRkIGl0ZW1fcmVtb3ZlJyxyZXNpemUpO1xuXHRcdGFkZEV2ZW50KGNvbnRyb2wsJ2lucHV0JywgcmVzaXplICk7XG5cdFx0YWRkRXZlbnQoY29udHJvbCwna2V5dXAnLCByZXNpemUgKTtcblx0XHRhZGRFdmVudChjb250cm9sLCdibHVyJywgcmVzaXplICk7XG5cdFx0YWRkRXZlbnQoY29udHJvbCwndXBkYXRlJywgcmVzaXplICk7XG5cdH0pO1xuXG59O1xuIiwiLyoqXG4gKiBQbHVnaW46IFwiaW5wdXRfYXV0b2dyb3dcIiAoVG9tIFNlbGVjdClcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpc1xuICogZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GXG4gKiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB0eXBlIFRvbVNlbGVjdCBmcm9tICcuLi8uLi90b20tc2VsZWN0LnRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QpIHtcblx0dmFyIHNlbGYgPSB0aGlzO1xuXHR2YXIgb3JpZ19kZWxldGVTZWxlY3Rpb24gPSBzZWxmLmRlbGV0ZVNlbGVjdGlvbjtcblxuXHR0aGlzLmhvb2soJ2luc3RlYWQnLCdkZWxldGVTZWxlY3Rpb24nLChldnQ6S2V5Ym9hcmRFdmVudCkgPT4ge1xuXG5cdFx0aWYoIHNlbGYuYWN0aXZlSXRlbXMubGVuZ3RoICl7XG5cdFx0XHRyZXR1cm4gb3JpZ19kZWxldGVTZWxlY3Rpb24uY2FsbChzZWxmLCBldnQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cbn07XG4iLCIvKipcbiAqIFBsdWdpbjogXCJub19hY3RpdmVfaXRlbXNcIiAoVG9tIFNlbGVjdClcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpc1xuICogZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GXG4gKiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB0eXBlIFRvbVNlbGVjdCBmcm9tICcuLi8uLi90b20tc2VsZWN0LnRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QpIHtcblx0dGhpcy5ob29rKCdpbnN0ZWFkJywnc2V0QWN0aXZlSXRlbScsKCkgPT4ge30pO1xuXHR0aGlzLmhvb2soJ2luc3RlYWQnLCdzZWxlY3RBbGwnLCgpID0+IHt9KTtcbn07XG4iLCIvKipcbiAqIFBsdWdpbjogXCJvcHRncm91cF9jb2x1bW5zXCIgKFRvbSBTZWxlY3QuanMpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2NvbnN0YW50cy50cyc7XG5pbXBvcnQgeyBwYXJlbnRNYXRjaCwgbm9kZUluZGV4IH0gZnJvbSAnLi4vLi4vdmFuaWxsYS50cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRoaXM6VG9tU2VsZWN0KSB7XG5cdHZhciBzZWxmID0gdGhpcztcblxuXHR2YXIgb3JpZ19rZXlkb3duID0gc2VsZi5vbktleURvd247XG5cblx0c2VsZi5ob29rKCdpbnN0ZWFkJywnb25LZXlEb3duJywoZXZ0OktleWJvYXJkRXZlbnQpPT57XG5cdFx0dmFyIGluZGV4LCBvcHRpb24sIG9wdGlvbnMsIG9wdGdyb3VwO1xuXG5cdFx0aWYoICFzZWxmLmlzT3BlbiB8fCAhKGV2dC5rZXlDb2RlID09PSBjb25zdGFudHMuS0VZX0xFRlQgfHwgZXZ0LmtleUNvZGUgPT09IGNvbnN0YW50cy5LRVlfUklHSFQpKSB7XG5cdFx0XHRyZXR1cm4gb3JpZ19rZXlkb3duLmNhbGwoc2VsZixldnQpO1xuXHRcdH1cblxuXHRcdHNlbGYuaWdub3JlSG92ZXJcdD0gdHJ1ZTtcblx0XHRvcHRncm91cFx0XHRcdD0gcGFyZW50TWF0Y2goc2VsZi5hY3RpdmVPcHRpb24sJ1tkYXRhLWdyb3VwXScpO1xuXHRcdGluZGV4XHRcdFx0XHQ9IG5vZGVJbmRleChzZWxmLmFjdGl2ZU9wdGlvbiwnW2RhdGEtc2VsZWN0YWJsZV0nKTtcblxuXHRcdGlmKCAhb3B0Z3JvdXAgKXtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiggZXZ0LmtleUNvZGUgPT09IGNvbnN0YW50cy5LRVlfTEVGVCApe1xuXHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5wcmV2aW91c1NpYmxpbmc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAubmV4dFNpYmxpbmc7XG5cdFx0fVxuXG5cdFx0aWYoICFvcHRncm91cCApe1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG9wdGlvbnNcdFx0XHRcdD0gKDxIVE1MT3B0R3JvdXBFbGVtZW50Pm9wdGdyb3VwKS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zZWxlY3RhYmxlXScpO1xuXHRcdG9wdGlvblx0XHRcdFx0PSBvcHRpb25zWyBNYXRoLm1pbihvcHRpb25zLmxlbmd0aCAtIDEsIGluZGV4KSBdIGFzIEhUTUxFbGVtZW50O1xuXG5cdFx0aWYoIG9wdGlvbiApe1xuXHRcdFx0c2VsZi5zZXRBY3RpdmVPcHRpb24ob3B0aW9uKTtcblx0XHR9XG5cblx0fSk7XG5cbn07XG4iLCIvKipcbiAqIFBsdWdpbjogXCJyZW1vdmVfYnV0dG9uXCIgKFRvbSBTZWxlY3QpXG4gKiBDb3B5cmlnaHQgKGMpIGNvbnRyaWJ1dG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzXG4gKiBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0ZcbiAqIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgVG9tU2VsZWN0IGZyb20gJy4uLy4uL3RvbS1zZWxlY3QudHMnO1xuaW1wb3J0IHsgZ2V0RG9tIH0gZnJvbSAnLi4vLi4vdmFuaWxsYS50cyc7XG5pbXBvcnQgeyBlc2NhcGVfaHRtbCwgcHJldmVudERlZmF1bHQsIGFkZEV2ZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMudHMnO1xuaW1wb3J0IHsgVG9tT3B0aW9uLCBUb21JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvaW5kZXgudHMnO1xuaW1wb3J0IHsgUkJPcHRpb25zIH0gZnJvbSAnLi90eXBlcy50cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRoaXM6VG9tU2VsZWN0LCB1c2VyT3B0aW9uczpSQk9wdGlvbnMpIHtcblxuXHRjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG5cdFx0XHRsYWJlbCAgICAgOiAnJnRpbWVzOycsXG5cdFx0XHR0aXRsZSAgICAgOiAnUmVtb3ZlJyxcblx0XHRcdGNsYXNzTmFtZSA6ICdyZW1vdmUnLFxuXHRcdFx0YXBwZW5kICAgIDogdHJ1ZVxuXHRcdH0sIHVzZXJPcHRpb25zKTtcblxuXG5cdC8vb3B0aW9ucy5jbGFzc05hbWUgPSAncmVtb3ZlLXNpbmdsZSc7XG5cdHZhciBzZWxmXHRcdFx0PSB0aGlzO1xuXG5cdC8vIG92ZXJyaWRlIHRoZSByZW5kZXIgbWV0aG9kIHRvIGFkZCByZW1vdmUgYnV0dG9uIHRvIGVhY2ggaXRlbVxuXHRpZiggIW9wdGlvbnMuYXBwZW5kICl7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0dmFyIGh0bWwgPSAnPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiJyArIG9wdGlvbnMuY2xhc3NOYW1lICsgJ1wiIHRhYmluZGV4PVwiLTFcIiB0aXRsZT1cIicgKyBlc2NhcGVfaHRtbChvcHRpb25zLnRpdGxlKSArICdcIj4nICsgb3B0aW9ucy5sYWJlbCArICc8L2E+JztcblxuXHRzZWxmLmhvb2soJ2FmdGVyJywnc2V0dXBUZW1wbGF0ZXMnLCgpID0+IHtcblxuXHRcdHZhciBvcmlnX3JlbmRlcl9pdGVtID0gc2VsZi5zZXR0aW5ncy5yZW5kZXIuaXRlbTtcblxuXHRcdHNlbGYuc2V0dGluZ3MucmVuZGVyLml0ZW0gPSAoZGF0YTpUb21PcHRpb24sIGVzY2FwZTp0eXBlb2YgZXNjYXBlX2h0bWwpID0+IHtcblxuXHRcdFx0dmFyIGl0ZW0gPSBnZXREb20ob3JpZ19yZW5kZXJfaXRlbS5jYWxsKHNlbGYsIGRhdGEsIGVzY2FwZSkpIGFzIFRvbUl0ZW07XG5cblx0XHRcdHZhciBjbG9zZV9idXR0b24gPSBnZXREb20oaHRtbCk7XG5cdFx0XHRpdGVtLmFwcGVuZENoaWxkKGNsb3NlX2J1dHRvbik7XG5cblx0XHRcdGFkZEV2ZW50KGNsb3NlX2J1dHRvbiwnbW91c2Vkb3duJywoZXZ0KSA9PiB7XG5cdFx0XHRcdHByZXZlbnREZWZhdWx0KGV2dCx0cnVlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRhZGRFdmVudChjbG9zZV9idXR0b24sJ2NsaWNrJywoZXZ0KSA9PiB7XG5cblx0XHRcdFx0aWYoIHNlbGYuaXNMb2NrZWQgKSByZXR1cm47XG5cblx0XHRcdFx0Ly8gcHJvcGFnYXRpbmcgd2lsbCB0cmlnZ2VyIHRoZSBkcm9wZG93biB0byBzaG93IGZvciBzaW5nbGUgbW9kZVxuXHRcdFx0XHRwcmV2ZW50RGVmYXVsdChldnQsdHJ1ZSk7XG5cblx0XHRcdFx0aWYoIHNlbGYuaXNMb2NrZWQgKSByZXR1cm47XG5cdFx0XHRcdGlmKCAhc2VsZi5zaG91bGREZWxldGUoW2l0ZW1dLGV2dCBhcyBNb3VzZUV2ZW50KSApIHJldHVybjtcblxuXHRcdFx0XHRzZWxmLnJlbW92ZUl0ZW0oaXRlbSk7XG5cdFx0XHRcdHNlbGYucmVmcmVzaE9wdGlvbnMoZmFsc2UpO1xuXHRcdFx0XHRzZWxmLmlucHV0U3RhdGUoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gaXRlbTtcblx0XHR9O1xuXG5cdH0pO1xuXG5cbn07XG4iLCIvKipcbiAqIFBsdWdpbjogXCJyZXN0b3JlX29uX2JhY2tzcGFjZVwiIChUb20gU2VsZWN0KVxuICogQ29weXJpZ2h0IChjKSBjb250cmlidXRvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpc1xuICogZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GXG4gKiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5pbXBvcnQgdHlwZSBUb21TZWxlY3QgZnJvbSAnLi4vLi4vdG9tLXNlbGVjdC50cyc7XG5pbXBvcnQgeyBUb21PcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9pbmRleC50cyc7XG5cbnR5cGUgVFBsdWdpbk9wdGlvbnMgPSB7XG5cdHRleHQ/OihvcHRpb246VG9tT3B0aW9uKT0+c3RyaW5nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QsIHVzZXJPcHRpb25zOlRQbHVnaW5PcHRpb25zKSB7XG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHR0ZXh0OiAob3B0aW9uOlRvbU9wdGlvbikgPT4ge1xuXHRcdFx0cmV0dXJuIG9wdGlvbltzZWxmLnNldHRpbmdzLmxhYmVsRmllbGRdO1xuXHRcdH1cblx0fSx1c2VyT3B0aW9ucyk7XG5cblx0c2VsZi5vbignaXRlbV9yZW1vdmUnLGZ1bmN0aW9uKHZhbHVlOnN0cmluZyl7XG5cdFx0aWYoICFzZWxmLmlzRm9jdXNlZCApe1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmKCBzZWxmLmNvbnRyb2xfaW5wdXQudmFsdWUudHJpbSgpID09PSAnJyApe1xuXHRcdFx0dmFyIG9wdGlvbiA9IHNlbGYub3B0aW9uc1t2YWx1ZV07XG5cdFx0XHRpZiggb3B0aW9uICl7XG5cdFx0XHRcdHNlbGYuc2V0VGV4dGJveFZhbHVlKG9wdGlvbnMudGV4dC5jYWxsKHNlbGYsIG9wdGlvbikpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cbn07XG4iLCIvKipcbiAqIFBsdWdpbjogXCJ2aXJ0dWFsX3Njcm9sbFwiIChUb20gU2VsZWN0KVxuICogQ29weXJpZ2h0IChjKSBjb250cmlidXRvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpc1xuICogZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GXG4gKiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB0eXBlIFRvbVNlbGVjdCBmcm9tICcuLi8uLi90b20tc2VsZWN0LnRzJztcbmltcG9ydCB7IFRvbU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL2luZGV4LnRzJztcbmltcG9ydCB7IGFkZENsYXNzZXMgfSBmcm9tICcuLi8uLi92YW5pbGxhLnRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odGhpczpUb21TZWxlY3QpIHtcblx0Y29uc3Qgc2VsZlx0XHRcdFx0XHRcdFx0PSB0aGlzO1xuXHRjb25zdCBvcmlnX2NhbkxvYWRcdFx0XHRcdFx0PSBzZWxmLmNhbkxvYWQ7XG5cdGNvbnN0IG9yaWdfY2xlYXJBY3RpdmVPcHRpb25cdFx0PSBzZWxmLmNsZWFyQWN0aXZlT3B0aW9uO1xuXHRjb25zdCBvcmlnX2xvYWRDYWxsYmFja1x0XHRcdFx0PSBzZWxmLmxvYWRDYWxsYmFjaztcblxuXHR2YXIgcGFnaW5hdGlvbjp7W2tleTpzdHJpbmddOmFueX1cdD0ge307XG5cdHZhciBkcm9wZG93bl9jb250ZW50OkhUTUxFbGVtZW50O1xuXHR2YXIgbG9hZGluZ19tb3JlXHRcdFx0XHRcdD0gZmFsc2U7XG5cdHZhciBsb2FkX21vcmVfb3B0OkhUTUxFbGVtZW50O1xuXHR2YXIgZGVmYXVsdF92YWx1ZXM6IHN0cmluZ1tdXHRcdD0gW107XG5cblx0aWYoICFzZWxmLnNldHRpbmdzLnNob3VsZExvYWRNb3JlICl7XG5cblx0XHQvLyByZXR1cm4gdHJ1ZSBpZiBhZGRpdGlvbmFsIHJlc3VsdHMgc2hvdWxkIGJlIGxvYWRlZFxuXHRcdHNlbGYuc2V0dGluZ3Muc2hvdWxkTG9hZE1vcmUgPSAoKTpib29sZWFuPT57XG5cblx0XHRcdGNvbnN0IHNjcm9sbF9wZXJjZW50ID0gZHJvcGRvd25fY29udGVudC5jbGllbnRIZWlnaHQgLyAoZHJvcGRvd25fY29udGVudC5zY3JvbGxIZWlnaHQgLSBkcm9wZG93bl9jb250ZW50LnNjcm9sbFRvcCk7XG5cdFx0XHRpZiggc2Nyb2xsX3BlcmNlbnQgPiAwLjkgKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmKCBzZWxmLmFjdGl2ZU9wdGlvbiApe1xuXHRcdFx0XHR2YXIgc2VsZWN0YWJsZVx0PSBzZWxmLnNlbGVjdGFibGUoKTtcblx0XHRcdFx0dmFyIGluZGV4XHRcdD0gQXJyYXkuZnJvbShzZWxlY3RhYmxlKS5pbmRleE9mKHNlbGYuYWN0aXZlT3B0aW9uKTtcblx0XHRcdFx0aWYoIGluZGV4ID49IChzZWxlY3RhYmxlLmxlbmd0aC0yKSApe1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXG5cdGlmKCAhc2VsZi5zZXR0aW5ncy5maXJzdFVybCApe1xuXHRcdHRocm93ICd2aXJ0dWFsX3Njcm9sbCBwbHVnaW4gcmVxdWlyZXMgYSBmaXJzdFVybCgpIG1ldGhvZCc7XG5cdH1cblxuXG5cdC8vIGluIG9yZGVyIGZvciB2aXJ0dWFsIHNjcm9sbGluZyB0byB3b3JrLFxuXHQvLyBvcHRpb25zIG5lZWQgdG8gYmUgb3JkZXJlZCB0aGUgc2FtZSB3YXkgdGhleSdyZSByZXR1cm5lZCBmcm9tIHRoZSByZW1vdGUgZGF0YSBzb3VyY2Vcblx0c2VsZi5zZXR0aW5ncy5zb3J0RmllbGRcdFx0XHQ9IFt7ZmllbGQ6JyRvcmRlcid9LHtmaWVsZDonJHNjb3JlJ31dO1xuXG5cblx0Ly8gY2FuIHdlIGxvYWQgbW9yZSByZXN1bHRzIGZvciBnaXZlbiBxdWVyeT9cblx0Y29uc3QgY2FuTG9hZE1vcmUgPSAocXVlcnk6c3RyaW5nKTpib29sZWFuID0+IHtcblxuXHRcdGlmKCB0eXBlb2Ygc2VsZi5zZXR0aW5ncy5tYXhPcHRpb25zID09PSAnbnVtYmVyJyAmJiBkcm9wZG93bl9jb250ZW50LmNoaWxkcmVuLmxlbmd0aCA+PSBzZWxmLnNldHRpbmdzLm1heE9wdGlvbnMgKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiggKHF1ZXJ5IGluIHBhZ2luYXRpb24pICYmIHBhZ2luYXRpb25bcXVlcnldICl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG5cblx0Y29uc3QgY2xlYXJGaWx0ZXIgPSAob3B0aW9uOlRvbU9wdGlvbiwgdmFsdWU6c3RyaW5nKTpib29sZWFuID0+IHtcblx0XHRpZiggc2VsZi5pdGVtcy5pbmRleE9mKHZhbHVlKSA+PSAwIHx8IGRlZmF1bHRfdmFsdWVzLmluZGV4T2YodmFsdWUpID49IDAgKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG5cblxuXHQvLyBzZXQgdGhlIG5leHQgdXJsIHRoYXQgd2lsbCBiZVxuXHRzZWxmLnNldE5leHRVcmwgPSAodmFsdWU6c3RyaW5nLG5leHRfdXJsOmFueSk6dm9pZCA9PiB7XG5cdFx0cGFnaW5hdGlvblt2YWx1ZV0gPSBuZXh0X3VybDtcblx0fTtcblxuXHQvLyBnZXRVcmwoKSB0byBiZSB1c2VkIGluIHNldHRpbmdzLmxvYWQoKVxuXHRzZWxmLmdldFVybCA9IChxdWVyeTpzdHJpbmcpOmFueSA9PntcblxuXHRcdGlmKCBxdWVyeSBpbiBwYWdpbmF0aW9uICl7XG5cdFx0XHRjb25zdCBuZXh0X3VybCA9IHBhZ2luYXRpb25bcXVlcnldO1xuXHRcdFx0cGFnaW5hdGlvbltxdWVyeV0gPSBmYWxzZTtcblx0XHRcdHJldHVybiBuZXh0X3VybDtcblx0XHR9XG5cblx0XHQvLyBpZiB0aGUgdXNlciBnb2VzIGJhY2sgdG8gYSBwcmV2aW91cyBxdWVyeVxuXHRcdC8vIHdlIG5lZWQgdG8gbG9hZCB0aGUgZmlyc3QgcGFnZSBhZ2FpblxuXHRcdHNlbGYuY2xlYXJQYWdpbmF0aW9uKCk7XG5cblx0XHRyZXR1cm4gc2VsZi5zZXR0aW5ncy5maXJzdFVybC5jYWxsKHNlbGYscXVlcnkpO1xuXHR9O1xuXG5cdC8vIGNsZWFyIHBhZ2luYXRpb25cblx0c2VsZi5jbGVhclBhZ2luYXRpb24gPSAoKTp2b2lkID0+e1xuXHRcdHBhZ2luYXRpb24gPSB7fTtcblx0fTtcblxuXHQvLyBkb24ndCBjbGVhciB0aGUgYWN0aXZlIG9wdGlvbiAoYW5kIGNhdXNlIHVud2FudGVkIGRyb3Bkb3duIHNjcm9sbClcblx0Ly8gd2hpbGUgbG9hZGluZyBtb3JlIHJlc3VsdHNcblx0c2VsZi5ob29rKCdpbnN0ZWFkJywnY2xlYXJBY3RpdmVPcHRpb24nLCgpPT57XG5cblx0XHRpZiggbG9hZGluZ19tb3JlICl7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9yaWdfY2xlYXJBY3RpdmVPcHRpb24uY2FsbChzZWxmKTtcblx0fSk7XG5cblx0Ly8gb3ZlcnJpZGUgdGhlIGNhbkxvYWQgbWV0aG9kXG5cdHNlbGYuaG9vaygnaW5zdGVhZCcsJ2NhbkxvYWQnLChxdWVyeTpzdHJpbmcpPT57XG5cblx0XHQvLyBmaXJzdCB0aW1lIHRoZSBxdWVyeSBoYXMgYmVlbiBzZWVuXG5cdFx0aWYoICEocXVlcnkgaW4gcGFnaW5hdGlvbikgKXtcblx0XHRcdHJldHVybiBvcmlnX2NhbkxvYWQuY2FsbChzZWxmLHF1ZXJ5KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY2FuTG9hZE1vcmUocXVlcnkpO1xuXHR9KTtcblxuXG5cdC8vIHdyYXAgdGhlIGxvYWRcblx0c2VsZi5ob29rKCdpbnN0ZWFkJywnbG9hZENhbGxiYWNrJywoIG9wdGlvbnM6VG9tT3B0aW9uW10sIG9wdGdyb3VwczpUb21PcHRpb25bXSk9PntcblxuXHRcdGlmKCAhbG9hZGluZ19tb3JlICl7XG5cdFx0XHRzZWxmLmNsZWFyT3B0aW9ucyhjbGVhckZpbHRlcik7XG5cdFx0fWVsc2UgaWYoIGxvYWRfbW9yZV9vcHQgKXtcblx0XHRcdGNvbnN0IGZpcnN0X29wdGlvbiA9IG9wdGlvbnNbMF07XG5cdFx0XHRpZiggZmlyc3Rfb3B0aW9uICE9PSB1bmRlZmluZWQgKXtcblx0XHRcdFx0bG9hZF9tb3JlX29wdC5kYXRhc2V0LnZhbHVlXHRcdD0gZmlyc3Rfb3B0aW9uW3NlbGYuc2V0dGluZ3MudmFsdWVGaWVsZF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0b3JpZ19sb2FkQ2FsbGJhY2suY2FsbCggc2VsZiwgb3B0aW9ucywgb3B0Z3JvdXBzKTtcblxuXHRcdGxvYWRpbmdfbW9yZSA9IGZhbHNlO1xuXHR9KTtcblxuXG5cdC8vIGFzIHRoZSDigJxsb2FkaW5nX21vcmXigJ0gZWxlbWVudCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgZHJvcGRvd24sXG5cdC8vIHdlIGFjdGl2YXRlIHRoZSBwcmV2aW91cyBvcHRpb24gaWYgbmVlZGVkXG5cdC8vIHRvIGF2b2lkIHRoZSBkcm9wZG93biBiZWluZyBzY3JvbGxlZCBiYWNrIHRvIHRoZSBmaXJzdCBvbmVcblx0c2VsZi5ob29rKCdiZWZvcmUnLCdyZWZyZXNoT3B0aW9ucycsKCk9PntcblxuXHRcdGlmIChzZWxmLmFjdGl2ZU9wdGlvbiAmJiBcIm9wdGlvblwiICE9PSBzZWxmLmFjdGl2ZU9wdGlvbi5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG5cdFx0XHRzZWxmLnNldEFjdGl2ZU9wdGlvbihzZWxmLmFjdGl2ZU9wdGlvbi5wcmV2aW91c0VsZW1lbnRTaWJsaW5nIGFzIEhUTUxFbGVtZW50KTtcblx0XHR9XG5cblx0fSk7XG5cblxuXHQvLyBhZGQgdGVtcGxhdGVzIHRvIGRyb3Bkb3duXG5cdC8vXHRsb2FkaW5nX21vcmUgaWYgd2UgaGF2ZSBhbm90aGVyIHVybCBpbiB0aGUgcXVldWVcblx0Ly9cdG5vX21vcmVfcmVzdWx0cyBpZiB3ZSBkb24ndCBoYXZlIGFub3RoZXIgdXJsIGluIHRoZSBxdWV1ZVxuXHRzZWxmLmhvb2soJ2FmdGVyJywncmVmcmVzaE9wdGlvbnMnLCgpPT57XG5cblx0XHRjb25zdCBxdWVyeVx0XHQ9IHNlbGYubGFzdFZhbHVlO1xuXHRcdHZhciBvcHRpb247XG5cblx0XHRpZiggY2FuTG9hZE1vcmUocXVlcnkpICl7XG5cblx0XHRcdG9wdGlvbiA9IHNlbGYucmVuZGVyKCdsb2FkaW5nX21vcmUnLHtxdWVyeTpxdWVyeX0pO1xuXHRcdFx0aWYoIG9wdGlvbiApe1xuXHRcdFx0XHRvcHRpb24uc2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdGFibGUnLCcnKTsgLy8gc28gdGhhdCBuYXZpZ2F0aW5nIGRyb3Bkb3duIHdpdGggW2Rvd25dIGtleXByZXNzZXMgY2FuIG5hdmlnYXRlIHRvIHRoaXMgbm9kZVxuXHRcdFx0XHRsb2FkX21vcmVfb3B0ID0gb3B0aW9uO1xuXHRcdFx0fVxuXG5cdFx0fWVsc2UgaWYoIChxdWVyeSBpbiBwYWdpbmF0aW9uKSAmJiAhZHJvcGRvd25fY29udGVudC5xdWVyeVNlbGVjdG9yKCcubm8tcmVzdWx0cycpICl7XG5cdFx0XHRvcHRpb24gPSBzZWxmLnJlbmRlcignbm9fbW9yZV9yZXN1bHRzJyx7cXVlcnk6cXVlcnl9KTtcblx0XHR9XG5cblx0XHRpZiggb3B0aW9uICl7XG5cdFx0XHRhZGRDbGFzc2VzKG9wdGlvbixzZWxmLnNldHRpbmdzLm9wdGlvbkNsYXNzKTtcblx0XHRcdGRyb3Bkb3duX2NvbnRlbnQuYXBwZW5kKCBvcHRpb24gKTtcblx0XHR9XG5cblx0fSk7XG5cblxuXHQvLyBhZGQgc2Nyb2xsIGxpc3RlbmVyIGFuZCBkZWZhdWx0IHRlbXBsYXRlc1xuXHRzZWxmLm9uKCdpbml0aWFsaXplJywoKT0+e1xuXHRcdGRlZmF1bHRfdmFsdWVzID0gT2JqZWN0LmtleXMoc2VsZi5vcHRpb25zKTtcblx0XHRkcm9wZG93bl9jb250ZW50ID0gc2VsZi5kcm9wZG93bl9jb250ZW50O1xuXG5cdFx0Ly8gZGVmYXVsdCB0ZW1wbGF0ZXNcblx0XHRzZWxmLnNldHRpbmdzLnJlbmRlciA9IE9iamVjdC5hc3NpZ24oe30sIHtcblx0XHRcdGxvYWRpbmdfbW9yZTooKSA9PiB7XG5cdFx0XHRcdHJldHVybiBgPGRpdiBjbGFzcz1cImxvYWRpbmctbW9yZS1yZXN1bHRzXCI+TG9hZGluZyBtb3JlIHJlc3VsdHMgLi4uIDwvZGl2PmA7XG5cdFx0XHR9LFxuXHRcdFx0bm9fbW9yZV9yZXN1bHRzOigpID0+e1xuXHRcdFx0XHRyZXR1cm4gYDxkaXYgY2xhc3M9XCJuby1tb3JlLXJlc3VsdHNcIj5ObyBtb3JlIHJlc3VsdHM8L2Rpdj5gO1xuXHRcdFx0fVxuXHRcdH0sc2VsZi5zZXR0aW5ncy5yZW5kZXIpO1xuXG5cblx0XHQvLyB3YXRjaCBkcm9wZG93biBjb250ZW50IHNjcm9sbCBwb3NpdGlvblxuXHRcdGRyb3Bkb3duX2NvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywoKT0+e1xuXG5cdFx0XHRpZiggIXNlbGYuc2V0dGluZ3Muc2hvdWxkTG9hZE1vcmUuY2FsbChzZWxmKSApe1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vICFpbXBvcnRhbnQ6IHRoaXMgd2lsbCBnZXQgY2hlY2tlZCBhZ2FpbiBpbiBsb2FkKCkgYnV0IHdlIHN0aWxsIG5lZWQgdG8gY2hlY2sgaGVyZSBvdGhlcndpc2UgbG9hZGluZ19tb3JlIHdpbGwgYmUgc2V0IHRvIHRydWVcblx0XHRcdGlmKCAhY2FuTG9hZE1vcmUoc2VsZi5sYXN0VmFsdWUpICl7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gZG9uJ3QgY2FsbCBsb2FkKCkgdG9vIG11Y2hcblx0XHRcdGlmKCBsb2FkaW5nX21vcmUgKSByZXR1cm47XG5cblxuXHRcdFx0bG9hZGluZ19tb3JlID0gdHJ1ZTtcblx0XHRcdHNlbGYubG9hZC5jYWxsKHNlbGYsc2VsZi5sYXN0VmFsdWUpO1xuXHRcdH0pO1xuXHR9KTtcblxufTtcbiJdLCJtYXBwaW5ncyI6Im9JQWdCQSxTQUFTQSxFQUFVQyxFQUFjQyxHQUNoQ0QsRUFBT0UsTUFBTSxPQUFPQyxTQUFTQyxJQUM1QkgsRUFBU0csRUFBTSxHQUVqQixDQUVjLE1BQU9DLEVBSXBCLFdBQUFDLEdBQ0NDLEtBQUtDLFFBQVUsRSxDQUdoQixFQUFBQyxDQUFHVCxFQUFlVSxHQUNqQlgsRUFBVUMsR0FBUUksSUFDakIsTUFBTU8sRUFBY0osS0FBS0MsUUFBUUosSUFBVSxHQUMzQ08sRUFBWUMsS0FBS0YsR0FDakJILEtBQUtDLFFBQVFKLEdBQVNPLENBQVcsRyxDQUluQyxHQUFBRSxDQUFJYixFQUFlVSxHQUNsQixJQUFJSSxFQUFJQyxVQUFVQyxPQUNSLElBQU5GLEVBS0pmLEVBQVVDLEdBQVFJLElBRWpCLEdBQVUsSUFBTlUsRUFFSCxtQkFET1AsS0FBS0MsUUFBUUosR0FJckIsTUFBTU8sRUFBY0osS0FBS0MsUUFBUUosUUFDYmEsSUFBaEJOLElBRUpBLEVBQVlPLE9BQU9QLEVBQVlRLFFBQVFULEdBQU0sR0FDN0NILEtBQUtDLFFBQVFKLEdBQVNPLEVBQVcsSUFmakNKLEtBQUtDLFFBQVUsRSxDQW1CakIsT0FBQVksQ0FBUXBCLEtBQWtCcUIsR0FDekIsSUFBSUMsRUFBT2YsS0FFWFIsRUFBVUMsR0FBUUksSUFDakIsTUFBTU8sRUFBY1csRUFBS2QsUUFBUUosUUFDYmEsSUFBaEJOLEdBQ0pBLEVBQVlSLFNBQVFPLElBQ25CQSxFQUFJYSxNQUFN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"]}