New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@formspark/formtrack

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@formspark/formtrack - npm Package Compare versions

Comparing version 0.1.9 to 0.1.10

2

dist/index.js
/*! For license information please see index.js.LICENSE.txt */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Formtrack",[],e):"object"==typeof exports?exports.Formtrack=e():t.Formtrack=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={607:(t,e,r)=>{"use strict";r(449);var n=function(t){var e=t.formElement,r=t.id,n=t.name,o=t.value,i=document.getElementById(r);if(!i){var a=document.createElement("input");a.setAttribute("type","hidden"),a.setAttribute("id",r),a.setAttribute("name",n),e.appendChild(a),i=a}i.setAttribute("value",o)};document&&document.addEventListener("submit",(function(t){try{var e=t.target;if(e){var r=e;if(void 0!==r.dataset.formtrack)for(var o=new URLSearchParams(window.location.search),i=["referrer","utm_campaign","utm_content","utm_medium","utm_source","utm_term"],a=0;a<i.length;a++){var c=i[a],u="formtrack_"+c,s=c,f=o.get(c);f&&n({formElement:r,id:u,name:s,value:f})}}}catch(t){console.error(t)}return!0}))},449:function(t,e,r){!function(t){"use strict";var e,r=function(){try{if(t.URLSearchParams&&"bar"===new t.URLSearchParams("foo=bar").get("foo"))return t.URLSearchParams}catch(t){}return null}(),n=r&&"a=1"===new r({a:1}).toString(),o=r&&"+"===new r("s=%2B").get("s"),i=!r||((e=new r).append("s"," &"),"s=+%26"===e.toString()),a=f.prototype,c=!(!t.Symbol||!t.Symbol.iterator);if(!(r&&n&&o&&i)){a.append=function(t,e){d(this.__URLSearchParams__,t,e)},a.delete=function(t){delete this.__URLSearchParams__[t]},a.get=function(t){var e=this.__URLSearchParams__;return this.has(t)?e[t][0]:null},a.getAll=function(t){var e=this.__URLSearchParams__;return this.has(t)?e[t].slice(0):[]},a.has=function(t){return y(this.__URLSearchParams__,t)},a.set=function(t,e){this.__URLSearchParams__[t]=[""+e]},a.toString=function(){var t,e,r,n,o=this.__URLSearchParams__,i=[];for(e in o)for(r=h(e),t=0,n=o[e];t<n.length;t++)i.push(r+"="+h(n[t]));return i.join("&")};var u=!!o&&r&&!n&&t.Proxy;Object.defineProperty(t,"URLSearchParams",{value:u?new Proxy(r,{construct:function(t,e){return new t(new f(e[0]).toString())}}):f});var s=t.URLSearchParams.prototype;s.polyfill=!0,s.forEach=s.forEach||function(t,e){var r=m(this.toString());Object.getOwnPropertyNames(r).forEach((function(n){r[n].forEach((function(r){t.call(e,r,n,this)}),this)}),this)},s.sort=s.sort||function(){var t,e,r,n=m(this.toString()),o=[];for(t in n)o.push(t);for(o.sort(),e=0;e<o.length;e++)this.delete(o[e]);for(e=0;e<o.length;e++){var i=o[e],a=n[i];for(r=0;r<a.length;r++)this.append(i,a[r])}},s.keys=s.keys||function(){var t=[];return this.forEach((function(e,r){t.push(r)})),p(t)},s.values=s.values||function(){var t=[];return this.forEach((function(e){t.push(e)})),p(t)},s.entries=s.entries||function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),p(t)},c&&(s[t.Symbol.iterator]=s[t.Symbol.iterator]||s.entries)}function f(t){((t=t||"")instanceof URLSearchParams||t instanceof f)&&(t=t.toString()),this.__URLSearchParams__=m(t)}function h(t){var e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'\(\)~]|%20|%00/g,(function(t){return e[t]}))}function l(t){return t.replace(/[ +]/g,"%20").replace(/(%[a-f0-9]{2})+/gi,(function(t){return decodeURIComponent(t)}))}function p(e){var r={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return c&&(r[t.Symbol.iterator]=function(){return r}),r}function m(t){var e={};if("object"==typeof t)if(v(t))for(var r=0;r<t.length;r++){var n=t[r];if(!v(n)||2!==n.length)throw new TypeError("Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements");d(e,n[0],n[1])}else for(var o in t)t.hasOwnProperty(o)&&d(e,o,t[o]);else{0===t.indexOf("?")&&(t=t.slice(1));for(var i=t.split("&"),a=0;a<i.length;a++){var c=i[a],u=c.indexOf("=");-1<u?d(e,l(c.slice(0,u)),l(c.slice(u+1))):c&&d(e,l(c),"")}}return e}function d(t,e,r){var n="string"==typeof r?r:null!=r&&"function"==typeof r.toString?r.toString():JSON.stringify(r);y(t,e)?t[e].push(n):t[e]=[n]}function v(t){return!!t&&"[object Array]"===Object.prototype.toString.call(t)}function y(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(void 0!==r.g?r.g:"undefined"!=typeof window?window:this)}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(607)})().default}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Gb3JtdHJhY2svd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL0Zvcm10cmFjay8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9Gb3JtdHJhY2svLi9ub2RlX21vZHVsZXMvdXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vRm9ybXRyYWNrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0Zvcm10cmFjay93ZWJwYWNrL3N0YXJ0dXAiLCJ3ZWJwYWNrOi8vRm9ybXRyYWNrL3dlYnBhY2svcnVudGltZS9nbG9iYWwiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJhcHBlbmRPclVwZGF0ZUZvcm10cmFja0lucHV0IiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJ2YWx1ZSIsImlucHV0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwidGFyZ2V0IiwiZGF0YXNldCIsImZvcm10cmFjayIsInNlYXJjaFBhcmFtZXRlcnMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1cHBvcnRlZFBhcmFtZXRlck5hbWVzIiwiaSIsImxlbmd0aCIsInBhcmFtZXRlck5hbWUiLCJnZXQiLCJlIiwiY29uc29sZSIsImVycm9yIiwiYW1wZXJzYW5kVGVzdCIsIm5hdGl2ZVVSTFNlYXJjaFBhcmFtcyIsImlzU3VwcG9ydE9iamVjdENvbnN0cnVjdG9yIiwiYSIsInRvU3RyaW5nIiwiZGVjb2Rlc1BsdXNlc0NvcnJlY3RseSIsImVuY29kZXNBbXBlcnNhbmRzQ29ycmVjdGx5IiwiYXBwZW5kIiwicHJvdG90eXBlIiwiVVJMU2VhcmNoUGFyYW1zUG9seWZpbGwiLCJpdGVyYWJsZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiYXBwZW5kVG8iLCJkaWN0IiwiaGFzIiwiZ2V0QWxsIiwic2xpY2UiLCJoYXNPd25Qcm9wZXJ0eSIsInNldCIsImtleSIsInF1ZXJ5IiwiZW5jb2RlIiwicHVzaCIsImpvaW4iLCJ1c2VQcm94eSIsIlByb3h5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjb25zdHJ1Y3QiLCJhcmdzIiwiVVNQUHJvdG8iLCJwb2x5ZmlsbCIsImZvckVhY2giLCJjYWxsYmFjayIsInRoaXNBcmciLCJwYXJzZVRvRGljdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJjYWxsIiwic29ydCIsImsiLCJqIiwia2V5cyIsInZhbHVlcyIsIml0ZW1zIiwiaXRlbSIsIm1ha2VJdGVyYXRvciIsImVudHJpZXMiLCJzdHIiLCJyZXBsYWNlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWF0Y2giLCJkZWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJhcnIiLCJuZXh0Iiwic2hpZnQiLCJkb25lIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsIlR5cGVFcnJvciIsImluZGV4T2YiLCJwYWlycyIsInNwbGl0IiwiaW5kZXgiLCJ2YWwiLCJKU09OIiwic3RyaW5naWZ5Iiwib2JqIiwicHJvcCIsImciLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIl0sIm1hcHBpbmdzIjoiO0NBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxZQUFhLEdBQUlILEdBQ0UsaUJBQVpDLFFBQ2RBLFFBQW1CLFVBQUlELElBRXZCRCxF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QUFtRSxtQkFBbkJBLEVBQU0rQixTQUEwQi9CLEVBQU0rQixXQUFhOEQsS0FBS0MsVUFBVTlGLEdBSWxINkMsRUFBZUosRUFBTTFDLEdBQ3JCMEMsRUFBSzFDLEdBQU1tRCxLQUFLMEMsR0FFaEJuRCxFQUFLMUMsR0FBUSxDQUFDNkYsR0FJdEIsU0FBU04sRUFBUU0sR0FDYixRQUFTQSxHQUFPLG1CQUFxQnRDLE9BQU9uQixVQUFVSixTQUFTa0MsS0FBSzJCLEdBR3hFLFNBQVMvQyxFQUFla0QsRUFBS0MsR0FDekIsT0FBTzFDLE9BQU9uQixVQUFVVSxlQUFlb0IsS0FBSzhCLEVBQUtDLElBalZ6RCxNQW9WcUIsSUFBWCxFQUFBQyxFQUF5QixFQUFBQSxFQUE0QixvQkFBWGpGLE9BQXlCQSxPQUFTckIsUUMzVmxGdUcsRUFBMkIsR0FHL0IsU0FBU0MsRUFBb0JDLEdBRTVCLEdBQUdGLEVBQXlCRSxHQUMzQixPQUFPRixFQUF5QkUsR0FBVTlHLFFBRzNDLElBQUlDLEVBQVMyRyxFQUF5QkUsR0FBWSxDQUdqRDlHLFFBQVMsSUFPVixPQUhBK0csRUFBb0JELEdBQVVuQyxLQUFLMUUsRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBUzZHLEdBR3BFNUcsRUFBT0QsUUNqQmYsT0NIQTZHLEVBQW9CRixFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmSyxXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU8zRyxNQUFRLElBQUk0RyxTQUFTLGNBQWIsR0FDZCxNQUFPL0UsR0FDUixHQUFzQixpQkFBWFIsT0FBcUIsT0FBT0EsUUFMakIsR0RHakJtRixFQUFvQixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJGb3JtdHJhY2tcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiRm9ybXRyYWNrXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkZvcm10cmFja1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCJpbXBvcnQgXCJ1cmwtc2VhcmNoLXBhcmFtcy1wb2x5ZmlsbFwiO1xuXG5jb25zdCBhcHBlbmRPclVwZGF0ZUZvcm10cmFja0lucHV0ID0gKHtcbiAgZm9ybUVsZW1lbnQsXG4gIGlkLFxuICBuYW1lLFxuICB2YWx1ZSxcbn06IHtcbiAgZm9ybUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59KSA9PiB7XG4gIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgaWYgKCFpbnB1dCkge1xuICAgIGNvbnN0IG5ld0lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJoaWRkZW5cIik7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwiaWRcIiwgaWQpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcIm5hbWVcIiwgbmFtZSk7XG4gICAgZm9ybUVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3SW5wdXQpO1xuICAgIGlucHV0ID0gbmV3SW5wdXQ7XG4gIH1cbiAgaW5wdXQuc2V0QXR0cmlidXRlKFwidmFsdWVcIiwgdmFsdWUpO1xufTtcblxuY29uc3QgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyID0gKCkgPT4ge1xuICBpZiAoZG9jdW1lbnQpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChldmVudCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybUV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAoZm9ybUV2ZW50VGFyZ2V0KSB7XG4gICAgICAgICAgY29uc3QgZm9ybUVsZW1lbnQgPSBmb3JtRXZlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkVHJhY2sgPVxuICAgICAgICAgICAgdHlwZW9mIGZvcm1FbGVtZW50LmRhdGFzZXQuZm9ybXRyYWNrICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgICAgIGlmIChzaG91bGRUcmFjaykge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoXG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRQYXJhbWV0ZXJOYW1lcyA9IFtcbiAgICAgICAgICAgICAgXCJyZWZlcnJlclwiLFxuICAgICAgICAgICAgICBcInV0bV9jYW1wYWlnblwiLFxuICAgICAgICAgICAgICBcInV0bV9jb250ZW50XCIsXG4gICAgICAgICAgICAgIFwidXRtX21lZGl1bVwiLFxuICAgICAgICAgICAgICBcInV0bV9zb3VyY2VcIixcbiAgICAgICAgICAgICAgXCJ1dG1fdGVybVwiLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VwcG9ydGVkUGFyYW1ldGVyTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVyTmFtZSA9IHN1cHBvcnRlZFBhcmFtZXRlck5hbWVzW2ldO1xuICAgICAgICAgICAgICBjb25zdCBpZCA9IGBmb3JtdHJhY2tfJHtwYXJhbWV0ZXJOYW1lfWA7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYXJhbWV0ZXJOYW1lO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlYXJjaFBhcmFtZXRlcnMuZ2V0KHBhcmFtZXRlck5hbWUpO1xuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhcHBlbmRPclVwZGF0ZUZvcm10cmFja0lucHV0KHtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG59O1xuXG5hZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTtcbiIsIi8qKlxuICpcbiAqXG4gKiBAYXV0aG9yIEplcnJ5IEJlbmR5IDxqZXJyeUBpY2V3aW5nY2MuY29tPlxuICogQGxpY2VuY2UgTUlUXG4gKlxuICovXG5cbihmdW5jdGlvbihzZWxmKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIG5hdGl2ZVVSTFNlYXJjaFBhcmFtcyA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vICM0MSBGaXggaXNzdWUgaW4gUk5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuVVJMU2VhcmNoUGFyYW1zICYmIChuZXcgc2VsZi5VUkxTZWFyY2hQYXJhbXMoJ2Zvbz1iYXInKSkuZ2V0KCdmb28nKSA9PT0gJ2JhcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuVVJMU2VhcmNoUGFyYW1zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSkoKSxcbiAgICAgICAgaXNTdXBwb3J0T2JqZWN0Q29uc3RydWN0b3IgPSBuYXRpdmVVUkxTZWFyY2hQYXJhbXMgJiYgKG5ldyBuYXRpdmVVUkxTZWFyY2hQYXJhbXMoe2E6IDF9KSkudG9TdHJpbmcoKSA9PT0gJ2E9MScsXG4gICAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIHNhZmFyaSAxMC4xIChhbmQgZWFybGllcikgdGhhdCBpbmNvcnJlY3RseSBkZWNvZGVzIGAlMkJgIGFzIGFuIGVtcHR5IHNwYWNlIGFuZCBub3QgYSBwbHVzLlxuICAgICAgICBkZWNvZGVzUGx1c2VzQ29ycmVjdGx5ID0gbmF0aXZlVVJMU2VhcmNoUGFyYW1zICYmIChuZXcgbmF0aXZlVVJMU2VhcmNoUGFyYW1zKCdzPSUyQicpLmdldCgncycpID09PSAnKycpLFxuICAgICAgICBfX1VSTFNlYXJjaFBhcmFtc19fID0gXCJfX1VSTFNlYXJjaFBhcmFtc19fXCIsXG4gICAgICAgIC8vIEZpeCBidWcgaW4gRWRnZSB3aGljaCBjYW5ub3QgZW5jb2RlICcgJicgY29ycmVjdGx5XG4gICAgICAgIGVuY29kZXNBbXBlcnNhbmRzQ29ycmVjdGx5ID0gbmF0aXZlVVJMU2VhcmNoUGFyYW1zID8gKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGFtcGVyc2FuZFRlc3QgPSBuZXcgbmF0aXZlVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBhbXBlcnNhbmRUZXN0LmFwcGVuZCgncycsICcgJicpO1xuICAgICAgICAgICAgcmV0dXJuIGFtcGVyc2FuZFRlc3QudG9TdHJpbmcoKSA9PT0gJ3M9KyUyNic7XG4gICAgICAgIH0pKCkgOiB0cnVlLFxuICAgICAgICBwcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXNQb2x5ZmlsbC5wcm90b3R5cGUsXG4gICAgICAgIGl0ZXJhYmxlID0gISEoc2VsZi5TeW1ib2wgJiYgc2VsZi5TeW1ib2wuaXRlcmF0b3IpO1xuXG4gICAgaWYgKG5hdGl2ZVVSTFNlYXJjaFBhcmFtcyAmJiBpc1N1cHBvcnRPYmplY3RDb25zdHJ1Y3RvciAmJiBkZWNvZGVzUGx1c2VzQ29ycmVjdGx5ICYmIGVuY29kZXNBbXBlcnNhbmRzQ29ycmVjdGx5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIE1ha2UgYSBVUkxTZWFyY2hQYXJhbXMgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fHN0cmluZ3xVUkxTZWFyY2hQYXJhbXN9IHNlYXJjaFxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFVSTFNlYXJjaFBhcmFtc1BvbHlmaWxsKHNlYXJjaCkge1xuICAgICAgICBzZWFyY2ggPSBzZWFyY2ggfHwgXCJcIjtcblxuICAgICAgICAvLyBzdXBwb3J0IGNvbnN0cnVjdCBvYmplY3Qgd2l0aCBhbm90aGVyIFVSTFNlYXJjaFBhcmFtcyBpbnN0YW5jZVxuICAgICAgICBpZiAoc2VhcmNoIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8IHNlYXJjaCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc1BvbHlmaWxsKSB7XG4gICAgICAgICAgICBzZWFyY2ggPSBzZWFyY2gudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzIFtfX1VSTFNlYXJjaFBhcmFtc19fXSA9IHBhcnNlVG9EaWN0KHNlYXJjaCk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBcHBlbmRzIGEgc3BlY2lmaWVkIGtleS92YWx1ZSBwYWlyIGFzIGEgbmV3IHNlYXJjaCBwYXJhbWV0ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgICAqL1xuICAgIHByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICBhcHBlbmRUbyh0aGlzIFtfX1VSTFNlYXJjaFBhcmFtc19fXSwgbmFtZSwgdmFsdWUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVyLCBhbmQgaXRzIGFzc29jaWF0ZWQgdmFsdWUsXG4gICAgICogZnJvbSB0aGUgbGlzdCBvZiBhbGwgc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqL1xuICAgIHByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzIFtfX1VSTFNlYXJjaFBhcmFtc19fXSBbbmFtZV07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZpcnN0IHZhbHVlIGFzc29jaWF0ZWQgdG8gdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8bnVsbH1cbiAgICAgKi9cbiAgICBwcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB2YXIgZGljdCA9IHRoaXMgW19fVVJMU2VhcmNoUGFyYW1zX19dO1xuICAgICAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyBkaWN0W25hbWVdWzBdIDogbnVsbDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgdGhlIHZhbHVlcyBhc3NvY2lhdGlvbiB3aXRoIGEgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICogQHJldHVybnMge0FycmF5fVxuICAgICAqL1xuICAgIHByb3RvdHlwZS5nZXRBbGwgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHZhciBkaWN0ID0gdGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX107XG4gICAgICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IGRpY3QgW25hbWVdLnNsaWNlKDApIDogW107XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBCb29sZWFuIGluZGljYXRpbmcgaWYgc3VjaCBhIHNlYXJjaCBwYXJhbWV0ZXIgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBwcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkodGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX10sIG5hbWUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlciB0b1xuICAgICAqIHRoZSBnaXZlbiB2YWx1ZS4gSWYgdGhlcmUgd2VyZSBzZXZlcmFsIHZhbHVlcywgZGVsZXRlIHRoZVxuICAgICAqIG90aGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAgICovXG4gICAgcHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzIFtfX1VSTFNlYXJjaFBhcmFtc19fXVtuYW1lXSA9IFsnJyArIHZhbHVlXTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHN0cmluZyBjb250YWluZyBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgdXNlIGluIGEgVVJMLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGRpY3QgPSB0aGlzW19fVVJMU2VhcmNoUGFyYW1zX19dLCBxdWVyeSA9IFtdLCBpLCBrZXksIG5hbWUsIHZhbHVlO1xuICAgICAgICBmb3IgKGtleSBpbiBkaWN0KSB7XG4gICAgICAgICAgICBuYW1lID0gZW5jb2RlKGtleSk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwLCB2YWx1ZSA9IGRpY3Rba2V5XTsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkucHVzaChuYW1lICsgJz0nICsgZW5jb2RlKHZhbHVlW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHF1ZXJ5LmpvaW4oJyYnKTtcbiAgICB9O1xuXG4gICAgLy8gVGhlcmUgaXMgYSBidWcgaW4gU2FmYXJpIDEwLjEgYW5kIGBQcm94eWBpbmcgaXQgaXMgbm90IGVub3VnaC5cbiAgICB2YXIgZm9yU3VyZVVzZVBvbHlmaWxsID0gIWRlY29kZXNQbHVzZXNDb3JyZWN0bHk7XG4gICAgdmFyIHVzZVByb3h5ID0gKCFmb3JTdXJlVXNlUG9seWZpbGwgJiYgbmF0aXZlVVJMU2VhcmNoUGFyYW1zICYmICFpc1N1cHBvcnRPYmplY3RDb25zdHJ1Y3RvciAmJiBzZWxmLlByb3h5KTtcbiAgICAvKlxuICAgICAqIEFwcGx5IHBvbGlmaWxsIHRvIGdsb2JhbCBvYmplY3QgYW5kIGFwcGVuZCBvdGhlciBwcm90b3R5cGUgaW50byBpdFxuICAgICAqL1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLCAnVVJMU2VhcmNoUGFyYW1zJywge1xuICAgICAgICB2YWx1ZTogKHVzZVByb3h5ID9cbiAgICAgICAgICAgIC8vIFNhZmFyaSAxMC4wIGRvZXNuJ3Qgc3VwcG9ydCBQcm94eSwgc28gaXQgd29uJ3QgZXh0ZW5kIFVSTFNlYXJjaFBhcmFtcyBvbiBzYWZhcmkgMTAuMFxuICAgICAgICAgICAgbmV3IFByb3h5KG5hdGl2ZVVSTFNlYXJjaFBhcmFtcywge1xuICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGFyZ2V0KChuZXcgVVJMU2VhcmNoUGFyYW1zUG9seWZpbGwoYXJnc1swXSkudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pIDpcbiAgICAgICAgICAgIFVSTFNlYXJjaFBhcmFtc1BvbHlmaWxsKVxuICAgIH0pO1xuXG4gICAgdmFyIFVTUFByb3RvID0gc2VsZi5VUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xuXG4gICAgVVNQUHJvdG8ucG9seWZpbGwgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0aGlzQXJnXG4gICAgICovXG4gICAgVVNQUHJvdG8uZm9yRWFjaCA9IFVTUFByb3RvLmZvckVhY2ggfHwgZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICAgICAgdmFyIGRpY3QgPSBwYXJzZVRvRGljdCh0aGlzLnRvU3RyaW5nKCkpO1xuICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkaWN0KS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgIGRpY3RbbmFtZV0uZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWUsIG5hbWUsIHRoaXMpO1xuICAgICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIH0sIHRoaXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTb3J0IGFsbCBuYW1lLXZhbHVlIHBhaXJzXG4gICAgICovXG4gICAgVVNQUHJvdG8uc29ydCA9IFVTUFByb3RvLnNvcnQgfHwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBkaWN0ID0gcGFyc2VUb0RpY3QodGhpcy50b1N0cmluZygpKSwga2V5cyA9IFtdLCBrLCBpLCBqO1xuICAgICAgICBmb3IgKGsgaW4gZGljdCkge1xuICAgICAgICAgICAga2V5cy5wdXNoKGspO1xuICAgICAgICB9XG4gICAgICAgIGtleXMuc29ydCgpO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzWydkZWxldGUnXShrZXlzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV0sIHZhbHVlcyA9IGRpY3Rba2V5XTtcbiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB2YWx1ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZChrZXksIHZhbHVlc1tqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBhbGxvd2luZyB0byBnbyB0aHJvdWdoIGFsbCBrZXlzIG9mXG4gICAgICogdGhlIGtleS92YWx1ZSBwYWlycyBjb250YWluZWQgaW4gdGhpcyBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gICAgICovXG4gICAgVVNQUHJvdG8ua2V5cyA9IFVTUFByb3RvLmtleXMgfHwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBpdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgbmFtZSkge1xuICAgICAgICAgICAgaXRlbXMucHVzaChuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoaXRlbXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIGFsbG93aW5nIHRvIGdvIHRocm91Z2ggYWxsIHZhbHVlcyBvZlxuICAgICAqIHRoZSBrZXkvdmFsdWUgcGFpcnMgY29udGFpbmVkIGluIHRoaXMgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAqL1xuICAgIFVTUFByb3RvLnZhbHVlcyA9IFVTUFByb3RvLnZhbHVlcyB8fCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcihpdGVtcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gaXRlcmF0b3IgYWxsb3dpbmcgdG8gZ28gdGhyb3VnaCBhbGwga2V5L3ZhbHVlXG4gICAgICogcGFpcnMgY29udGFpbmVkIGluIHRoaXMgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAqL1xuICAgIFVTUFByb3RvLmVudHJpZXMgPSBVU1BQcm90by5lbnRyaWVzIHx8IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIG5hbWUpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goW25hbWUsIGl0ZW1dKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoaXRlbXMpO1xuICAgIH07XG5cblxuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgICBVU1BQcm90b1tzZWxmLlN5bWJvbC5pdGVyYXRvcl0gPSBVU1BQcm90b1tzZWxmLlN5bWJvbC5pdGVyYXRvcl0gfHwgVVNQUHJvdG8uZW50cmllcztcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgICAgdmFyIHJlcGxhY2UgPSB7XG4gICAgICAgICAgICAnISc6ICclMjEnLFxuICAgICAgICAgICAgXCInXCI6ICclMjcnLFxuICAgICAgICAgICAgJygnOiAnJTI4JyxcbiAgICAgICAgICAgICcpJzogJyUyOScsXG4gICAgICAgICAgICAnfic6ICclN0UnLFxuICAgICAgICAgICAgJyUyMCc6ICcrJyxcbiAgICAgICAgICAgICclMDAnOiAnXFx4MDAnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyKS5yZXBsYWNlKC9bISdcXChcXCl+XXwlMjB8JTAwL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVttYXRjaF07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlY29kZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0clxuICAgICAgICAgICAgLnJlcGxhY2UoL1sgK10vZywgJyUyMCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvKCVbYS1mMC05XXsyfSkrL2lnLCBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUl0ZXJhdG9yKGFycikge1xuICAgICAgICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBhcnIuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICBpdGVyYXRvcltzZWxmLlN5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlVG9EaWN0KHNlYXJjaCkge1xuICAgICAgICB2YXIgZGljdCA9IHt9O1xuXG4gICAgICAgIGlmICh0eXBlb2Ygc2VhcmNoID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAvLyBpZiBgc2VhcmNoYCBpcyBhbiBhcnJheSwgdHJlYXQgaXQgYXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAgaWYgKGlzQXJyYXkoc2VhcmNoKSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VhcmNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gc2VhcmNoW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShpdGVtKSAmJiBpdGVtLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG8oZGljdCwgaXRlbVswXSwgaXRlbVsxXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnVVJMU2VhcmNoUGFyYW1zJzogU2VxdWVuY2UgaW5pdGlhbGl6ZXIgbXVzdCBvbmx5IGNvbnRhaW4gcGFpciBlbGVtZW50c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2guaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG8oZGljdCwga2V5LCBzZWFyY2hba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBmaXJzdCAnPydcbiAgICAgICAgICAgIGlmIChzZWFyY2guaW5kZXhPZihcIj9cIikgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzZWFyY2ggPSBzZWFyY2guc2xpY2UoMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwYWlycyA9IHNlYXJjaC5zcGxpdChcIiZcIik7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhaXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcGFpcnMgW2pdLFxuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHZhbHVlLmluZGV4T2YoJz0nKTtcblxuICAgICAgICAgICAgICAgIGlmICgtMSA8IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvKGRpY3QsIGRlY29kZSh2YWx1ZS5zbGljZSgwLCBpbmRleCkpLCBkZWNvZGUodmFsdWUuc2xpY2UoaW5kZXggKyAxKSkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbyhkaWN0LCBkZWNvZGUodmFsdWUpLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGljdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBlbmRUbyhkaWN0LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgdmFsID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogKFxuICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsdWUudG9TdHJpbmcgPT09ICdmdW5jdGlvbicgPyB2YWx1ZS50b1N0cmluZygpIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gIzQ3IFByZXZlbnQgdXNpbmcgYGhhc093blByb3BlcnR5YCBhcyBhIHByb3BlcnR5IG5hbWVcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGRpY3QsIG5hbWUpKSB7XG4gICAgICAgICAgICBkaWN0W25hbWVdLnB1c2godmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpY3RbbmFtZV0gPSBbdmFsXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gICAgICAgIHJldHVybiAhIXZhbCAmJiAnW29iamVjdCBBcnJheV0nID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxufSkodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0aGlzKSk7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHRpZihfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdKSB7XG5cdFx0cmV0dXJuIF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0uZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIG1vZHVsZSBleHBvcnRzIG11c3QgYmUgcmV0dXJuZWQgZnJvbSBydW50aW1lIHNvIGVudHJ5IGlubGluaW5nIGlzIGRpc2FibGVkXG4vLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbnJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwNyk7XG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Gb3JtdHJhY2svd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL0Zvcm10cmFjay8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9Gb3JtdHJhY2svLi9ub2RlX21vZHVsZXMvdXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vRm9ybXRyYWNrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0Zvcm10cmFjay93ZWJwYWNrL3N0YXJ0dXAiLCJ3ZWJwYWNrOi8vRm9ybXRyYWNrL3dlYnBhY2svcnVudGltZS9nbG9iYWwiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJhcHBlbmRPclVwZGF0ZUZvcm10cmFja0lucHV0IiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJ2YWx1ZSIsImlucHV0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwidGFyZ2V0IiwiZGF0YXNldCIsImZvcm10cmFjayIsInNlYXJjaFBhcmFtZXRlcnMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1cHBvcnRlZFBhcmFtZXRlck5hbWVzIiwiaSIsImxlbmd0aCIsInBhcmFtZXRlck5hbWUiLCJnZXQiLCJlIiwiY29uc29sZSIsImVycm9yIiwiYW1wZXJzYW5kVGVzdCIsIm5hdGl2ZVVSTFNlYXJjaFBhcmFtcyIsImlzU3VwcG9ydE9iamVjdENvbnN0cnVjdG9yIiwiYSIsInRvU3RyaW5nIiwiZGVjb2Rlc1BsdXNlc0NvcnJlY3RseSIsImVuY29kZXNBbXBlcnNhbmRzQ29ycmVjdGx5IiwiYXBwZW5kIiwicHJvdG90eXBlIiwiVVJMU2VhcmNoUGFyYW1zUG9seWZpbGwiLCJpdGVyYWJsZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiYXBwZW5kVG8iLCJkaWN0IiwiaGFzIiwiZ2V0QWxsIiwic2xpY2UiLCJoYXNPd25Qcm9wZXJ0eSIsInNldCIsImtleSIsInF1ZXJ5IiwiZW5jb2RlIiwicHVzaCIsImpvaW4iLCJ1c2VQcm94eSIsIlByb3h5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjb25zdHJ1Y3QiLCJhcmdzIiwiVVNQUHJvdG8iLCJwb2x5ZmlsbCIsImZvckVhY2giLCJjYWxsYmFjayIsInRoaXNBcmciLCJwYXJzZVRvRGljdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJjYWxsIiwic29ydCIsImsiLCJqIiwia2V5cyIsInZhbHVlcyIsIml0ZW1zIiwiaXRlbSIsIm1ha2VJdGVyYXRvciIsImVudHJpZXMiLCJzdHIiLCJyZXBsYWNlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWF0Y2giLCJkZWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJhcnIiLCJuZXh0Iiwic2hpZnQiLCJkb25lIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsIlR5cGVFcnJvciIsImluZGV4T2YiLCJwYWlycyIsInNwbGl0IiwiaW5kZXgiLCJ2YWwiLCJKU09OIiwic3RyaW5naWZ5Iiwib2JqIiwicHJvcCIsImciLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIl0sIm1hcHBpbmdzIjoiO0NBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxZQUFhLEdBQUlILEdBQ0UsaUJBQVpDLFFBQ2RBLFFBQW1CLFVBQUlELElBRXZCRCxF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QUFtRSxtQkFBbkJBLEVBQU0rQixTQUEwQi9CLEVBQU0rQixXQUFhOEQsS0FBS0MsVUFBVTlGLEdBSWxINkMsRUFBZUosRUFBTTFDLEdBQ3JCMEMsRUFBSzFDLEdBQU1tRCxLQUFLMEMsR0FFaEJuRCxFQUFLMUMsR0FBUSxDQUFDNkYsR0FJdEIsU0FBU04sRUFBUU0sR0FDYixRQUFTQSxHQUFPLG1CQUFxQnRDLE9BQU9uQixVQUFVSixTQUFTa0MsS0FBSzJCLEdBR3hFLFNBQVMvQyxFQUFla0QsRUFBS0MsR0FDekIsT0FBTzFDLE9BQU9uQixVQUFVVSxlQUFlb0IsS0FBSzhCLEVBQUtDLElBalZ6RCxNQW9WcUIsSUFBWCxFQUFBQyxFQUF5QixFQUFBQSxFQUE0QixvQkFBWGpGLE9BQXlCQSxPQUFTckIsUUMzVmxGdUcsRUFBMkIsR0FHL0IsU0FBU0MsRUFBb0JDLEdBRTVCLEdBQUdGLEVBQXlCRSxHQUMzQixPQUFPRixFQUF5QkUsR0FBVTlHLFFBRzNDLElBQUlDLEVBQVMyRyxFQUF5QkUsR0FBWSxDQUdqRDlHLFFBQVMsSUFPVixPQUhBK0csRUFBb0JELEdBQVVuQyxLQUFLMUUsRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBUzZHLEdBR3BFNUcsRUFBT0QsUUNqQmYsT0NIQTZHLEVBQW9CRixFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmSyxXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU8zRyxNQUFRLElBQUk0RyxTQUFTLGNBQWIsR0FDZCxNQUFPL0UsR0FDUixHQUFzQixpQkFBWFIsT0FBcUIsT0FBT0EsUUFMakIsR0RHakJtRixFQUFvQixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJGb3JtdHJhY2tcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiRm9ybXRyYWNrXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkZvcm10cmFja1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCJpbXBvcnQgXCJ1cmwtc2VhcmNoLXBhcmFtcy1wb2x5ZmlsbFwiO1xuXG5jb25zdCBhcHBlbmRPclVwZGF0ZUZvcm10cmFja0lucHV0ID0gKHtcbiAgZm9ybUVsZW1lbnQsXG4gIGlkLFxuICBuYW1lLFxuICB2YWx1ZSxcbn06IHtcbiAgZm9ybUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59KSA9PiB7XG4gIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgaWYgKCFpbnB1dCkge1xuICAgIGNvbnN0IG5ld0lucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJoaWRkZW5cIik7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwiaWRcIiwgaWQpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcIm5hbWVcIiwgbmFtZSk7XG4gICAgZm9ybUVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3SW5wdXQpO1xuICAgIGlucHV0ID0gbmV3SW5wdXQ7XG4gIH1cbiAgaW5wdXQuc2V0QXR0cmlidXRlKFwidmFsdWVcIiwgdmFsdWUpO1xufTtcblxuY29uc3QgYWRkU3VibWl0TGlzdGVuZXIgPSAoKSA9PiB7XG4gIGlmIChkb2N1bWVudCkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgKGV2ZW50KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtRXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGlmIChmb3JtRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRWxlbWVudCA9IGZvcm1FdmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBjb25zdCBzaG91bGRUcmFjayA9XG4gICAgICAgICAgICB0eXBlb2YgZm9ybUVsZW1lbnQuZGF0YXNldC5mb3JtdHJhY2sgIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICAgICAgaWYgKHNob3VsZFRyYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hQYXJhbWV0ZXJzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZFBhcmFtZXRlck5hbWVzID0gW1xuICAgICAgICAgICAgICBcInJlZmVycmVyXCIsXG4gICAgICAgICAgICAgIFwidXRtX2NhbXBhaWduXCIsXG4gICAgICAgICAgICAgIFwidXRtX2NvbnRlbnRcIixcbiAgICAgICAgICAgICAgXCJ1dG1fbWVkaXVtXCIsXG4gICAgICAgICAgICAgIFwidXRtX3NvdXJjZVwiLFxuICAgICAgICAgICAgICBcInV0bV90ZXJtXCIsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdXBwb3J0ZWRQYXJhbWV0ZXJOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gc3VwcG9ydGVkUGFyYW1ldGVyTmFtZXNbaV07XG4gICAgICAgICAgICAgIGNvbnN0IGlkID0gYGZvcm10cmFja18ke3BhcmFtZXRlck5hbWV9YDtcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhcmFtZXRlck5hbWU7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VhcmNoUGFyYW1ldGVycy5nZXQocGFyYW1ldGVyTmFtZSk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFwcGVuZE9yVXBkYXRlRm9ybXRyYWNrSW5wdXQoe1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbn07XG5cbmFkZFN1Ym1pdExpc3RlbmVyKCk7XG4iLCIvKipcbiAqXG4gKlxuICogQGF1dGhvciBKZXJyeSBCZW5keSA8amVycnlAaWNld2luZ2NjLmNvbT5cbiAqIEBsaWNlbmNlIE1JVFxuICpcbiAqL1xuXG4oZnVuY3Rpb24oc2VsZikge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBuYXRpdmVVUkxTZWFyY2hQYXJhbXMgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyAjNDEgRml4IGlzc3VlIGluIFJOXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLlVSTFNlYXJjaFBhcmFtcyAmJiAobmV3IHNlbGYuVVJMU2VhcmNoUGFyYW1zKCdmb289YmFyJykpLmdldCgnZm9vJykgPT09ICdiYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLlVSTFNlYXJjaFBhcmFtcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pKCksXG4gICAgICAgIGlzU3VwcG9ydE9iamVjdENvbnN0cnVjdG9yID0gbmF0aXZlVVJMU2VhcmNoUGFyYW1zICYmIChuZXcgbmF0aXZlVVJMU2VhcmNoUGFyYW1zKHthOiAxfSkpLnRvU3RyaW5nKCkgPT09ICdhPTEnLFxuICAgICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBzYWZhcmkgMTAuMSAoYW5kIGVhcmxpZXIpIHRoYXQgaW5jb3JyZWN0bHkgZGVjb2RlcyBgJTJCYCBhcyBhbiBlbXB0eSBzcGFjZSBhbmQgbm90IGEgcGx1cy5cbiAgICAgICAgZGVjb2Rlc1BsdXNlc0NvcnJlY3RseSA9IG5hdGl2ZVVSTFNlYXJjaFBhcmFtcyAmJiAobmV3IG5hdGl2ZVVSTFNlYXJjaFBhcmFtcygncz0lMkInKS5nZXQoJ3MnKSA9PT0gJysnKSxcbiAgICAgICAgX19VUkxTZWFyY2hQYXJhbXNfXyA9IFwiX19VUkxTZWFyY2hQYXJhbXNfX1wiLFxuICAgICAgICAvLyBGaXggYnVnIGluIEVkZ2Ugd2hpY2ggY2Fubm90IGVuY29kZSAnICYnIGNvcnJlY3RseVxuICAgICAgICBlbmNvZGVzQW1wZXJzYW5kc0NvcnJlY3RseSA9IG5hdGl2ZVVSTFNlYXJjaFBhcmFtcyA/IChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhbXBlcnNhbmRUZXN0ID0gbmV3IG5hdGl2ZVVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgYW1wZXJzYW5kVGVzdC5hcHBlbmQoJ3MnLCAnICYnKTtcbiAgICAgICAgICAgIHJldHVybiBhbXBlcnNhbmRUZXN0LnRvU3RyaW5nKCkgPT09ICdzPSslMjYnO1xuICAgICAgICB9KSgpIDogdHJ1ZSxcbiAgICAgICAgcHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zUG9seWZpbGwucHJvdG90eXBlLFxuICAgICAgICBpdGVyYWJsZSA9ICEhKHNlbGYuU3ltYm9sICYmIHNlbGYuU3ltYm9sLml0ZXJhdG9yKTtcblxuICAgIGlmIChuYXRpdmVVUkxTZWFyY2hQYXJhbXMgJiYgaXNTdXBwb3J0T2JqZWN0Q29uc3RydWN0b3IgJiYgZGVjb2Rlc1BsdXNlc0NvcnJlY3RseSAmJiBlbmNvZGVzQW1wZXJzYW5kc0NvcnJlY3RseSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBNYWtlIGEgVVJMU2VhcmNoUGFyYW1zIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdHxzdHJpbmd8VVJMU2VhcmNoUGFyYW1zfSBzZWFyY2hcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBVUkxTZWFyY2hQYXJhbXNQb2x5ZmlsbChzZWFyY2gpIHtcbiAgICAgICAgc2VhcmNoID0gc2VhcmNoIHx8IFwiXCI7XG5cbiAgICAgICAgLy8gc3VwcG9ydCBjb25zdHJ1Y3Qgb2JqZWN0IHdpdGggYW5vdGhlciBVUkxTZWFyY2hQYXJhbXMgaW5zdGFuY2VcbiAgICAgICAgaWYgKHNlYXJjaCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fCBzZWFyY2ggaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXNQb2x5ZmlsbCkge1xuICAgICAgICAgICAgc2VhcmNoID0gc2VhcmNoLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX10gPSBwYXJzZVRvRGljdChzZWFyY2gpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBhIHNwZWNpZmllZCBrZXkvdmFsdWUgcGFpciBhcyBhIG5ldyBzZWFyY2ggcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICAgKi9cbiAgICBwcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgYXBwZW5kVG8odGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX10sIG5hbWUsIHZhbHVlKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlciwgYW5kIGl0cyBhc3NvY2lhdGVkIHZhbHVlLFxuICAgICAqIGZyb20gdGhlIGxpc3Qgb2YgYWxsIHNlYXJjaCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKi9cbiAgICBwcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBkZWxldGUgdGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX10gW25hbWVdO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfG51bGx9XG4gICAgICovXG4gICAgcHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgdmFyIGRpY3QgPSB0aGlzIFtfX1VSTFNlYXJjaFBhcmFtc19fXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gZGljdFtuYW1lXVswXSA6IG51bGw7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIHRoZSB2YWx1ZXMgYXNzb2NpYXRpb24gd2l0aCBhIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX1cbiAgICAgKi9cbiAgICBwcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB2YXIgZGljdCA9IHRoaXMgW19fVVJMU2VhcmNoUGFyYW1zX19dO1xuICAgICAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyBkaWN0IFtuYW1lXS5zbGljZSgwKSA6IFtdO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHN1Y2ggYSBzZWFyY2ggcGFyYW1ldGVyIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5KHRoaXMgW19fVVJMU2VhcmNoUGFyYW1zX19dLCBuYW1lKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB0byBhIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXIgdG9cbiAgICAgKiB0aGUgZ2l2ZW4gdmFsdWUuIElmIHRoZXJlIHdlcmUgc2V2ZXJhbCB2YWx1ZXMsIGRlbGV0ZSB0aGVcbiAgICAgKiBvdGhlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgICAqL1xuICAgIHByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcyBbX19VUkxTZWFyY2hQYXJhbXNfX11bbmFtZV0gPSBbJycgKyB2YWx1ZV07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmcgYSBxdWVyeSBzdHJpbmcgc3VpdGFibGUgZm9yIHVzZSBpbiBhIFVSTC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgcHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBkaWN0ID0gdGhpc1tfX1VSTFNlYXJjaFBhcmFtc19fXSwgcXVlcnkgPSBbXSwgaSwga2V5LCBuYW1lLCB2YWx1ZTtcbiAgICAgICAgZm9yIChrZXkgaW4gZGljdCkge1xuICAgICAgICAgICAgbmFtZSA9IGVuY29kZShrZXkpO1xuICAgICAgICAgICAgZm9yIChpID0gMCwgdmFsdWUgPSBkaWN0W2tleV07IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnB1c2gobmFtZSArICc9JyArIGVuY29kZSh2YWx1ZVtpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWVyeS5qb2luKCcmJyk7XG4gICAgfTtcblxuICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIFNhZmFyaSAxMC4xIGFuZCBgUHJveHlgaW5nIGl0IGlzIG5vdCBlbm91Z2guXG4gICAgdmFyIGZvclN1cmVVc2VQb2x5ZmlsbCA9ICFkZWNvZGVzUGx1c2VzQ29ycmVjdGx5O1xuICAgIHZhciB1c2VQcm94eSA9ICghZm9yU3VyZVVzZVBvbHlmaWxsICYmIG5hdGl2ZVVSTFNlYXJjaFBhcmFtcyAmJiAhaXNTdXBwb3J0T2JqZWN0Q29uc3RydWN0b3IgJiYgc2VsZi5Qcm94eSk7XG4gICAgLypcbiAgICAgKiBBcHBseSBwb2xpZmlsbCB0byBnbG9iYWwgb2JqZWN0IGFuZCBhcHBlbmQgb3RoZXIgcHJvdG90eXBlIGludG8gaXRcbiAgICAgKi9cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2VsZiwgJ1VSTFNlYXJjaFBhcmFtcycsIHtcbiAgICAgICAgdmFsdWU6ICh1c2VQcm94eSA/XG4gICAgICAgICAgICAvLyBTYWZhcmkgMTAuMCBkb2Vzbid0IHN1cHBvcnQgUHJveHksIHNvIGl0IHdvbid0IGV4dGVuZCBVUkxTZWFyY2hQYXJhbXMgb24gc2FmYXJpIDEwLjBcbiAgICAgICAgICAgIG5ldyBQcm94eShuYXRpdmVVUkxTZWFyY2hQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uKHRhcmdldCwgYXJncykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRhcmdldCgobmV3IFVSTFNlYXJjaFBhcmFtc1BvbHlmaWxsKGFyZ3NbMF0pLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSA6XG4gICAgICAgICAgICBVUkxTZWFyY2hQYXJhbXNQb2x5ZmlsbClcbiAgICB9KTtcblxuICAgIHZhciBVU1BQcm90byA9IHNlbGYuVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcblxuICAgIFVTUFByb3RvLnBvbHlmaWxsID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdGhpc0FyZ1xuICAgICAqL1xuICAgIFVTUFByb3RvLmZvckVhY2ggPSBVU1BQcm90by5mb3JFYWNoIHx8IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgICAgIHZhciBkaWN0ID0gcGFyc2VUb0RpY3QodGhpcy50b1N0cmluZygpKTtcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZGljdCkuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgICAgICBkaWN0W25hbWVdLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcbiAgICAgICAgICAgIH0sIHRoaXMpO1xuICAgICAgICB9LCB0aGlzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU29ydCBhbGwgbmFtZS12YWx1ZSBwYWlyc1xuICAgICAqL1xuICAgIFVTUFByb3RvLnNvcnQgPSBVU1BQcm90by5zb3J0IHx8IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZGljdCA9IHBhcnNlVG9EaWN0KHRoaXMudG9TdHJpbmcoKSksIGtleXMgPSBbXSwgaywgaSwgajtcbiAgICAgICAgZm9yIChrIGluIGRpY3QpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChrKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLnNvcnQoKTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpc1snZGVsZXRlJ10oa2V5c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2ldLCB2YWx1ZXMgPSBkaWN0W2tleV07XG4gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdmFsdWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoa2V5LCB2YWx1ZXNbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gaXRlcmF0b3IgYWxsb3dpbmcgdG8gZ28gdGhyb3VnaCBhbGwga2V5cyBvZlxuICAgICAqIHRoZSBrZXkvdmFsdWUgcGFpcnMgY29udGFpbmVkIGluIHRoaXMgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAqL1xuICAgIFVTUFByb3RvLmtleXMgPSBVU1BQcm90by5rZXlzIHx8IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIG5hbWUpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2gobmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKGl0ZW1zKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBhbGxvd2luZyB0byBnbyB0aHJvdWdoIGFsbCB2YWx1ZXMgb2ZcbiAgICAgKiB0aGUga2V5L3ZhbHVlIHBhaXJzIGNvbnRhaW5lZCBpbiB0aGlzIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAgICAgKi9cbiAgICBVU1BQcm90by52YWx1ZXMgPSBVU1BQcm90by52YWx1ZXMgfHwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBpdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3IoaXRlbXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIGFsbG93aW5nIHRvIGdvIHRocm91Z2ggYWxsIGtleS92YWx1ZVxuICAgICAqIHBhaXJzIGNvbnRhaW5lZCBpbiB0aGlzIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAgICAgKi9cbiAgICBVU1BQcm90by5lbnRyaWVzID0gVVNQUHJvdG8uZW50cmllcyB8fCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBuYW1lKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKFtuYW1lLCBpdGVtXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKGl0ZW1zKTtcbiAgICB9O1xuXG5cbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgICAgVVNQUHJvdG9bc2VsZi5TeW1ib2wuaXRlcmF0b3JdID0gVVNQUHJvdG9bc2VsZi5TeW1ib2wuaXRlcmF0b3JdIHx8IFVTUFByb3RvLmVudHJpZXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gICAgICAgIHZhciByZXBsYWNlID0ge1xuICAgICAgICAgICAgJyEnOiAnJTIxJyxcbiAgICAgICAgICAgIFwiJ1wiOiAnJTI3JyxcbiAgICAgICAgICAgICcoJzogJyUyOCcsXG4gICAgICAgICAgICAnKSc6ICclMjknLFxuICAgICAgICAgICAgJ34nOiAnJTdFJyxcbiAgICAgICAgICAgICclMjAnOiAnKycsXG4gICAgICAgICAgICAnJTAwJzogJ1xceDAwJ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvWyEnXFwoXFwpfl18JTIwfCUwMC9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VbbWF0Y2hdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWNvZGUoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bICtdL2csICclMjAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyglW2EtZjAtOV17Mn0pKy9pZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VJdGVyYXRvcihhcnIpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0ge1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgICAgICAgaXRlcmF0b3Jbc2VsZi5TeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVyYXRvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVRvRGljdChzZWFyY2gpIHtcbiAgICAgICAgdmFyIGRpY3QgPSB7fTtcblxuICAgICAgICBpZiAodHlwZW9mIHNlYXJjaCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgLy8gaWYgYHNlYXJjaGAgaXMgYW4gYXJyYXksIHRyZWF0IGl0IGFzIGEgc2VxdWVuY2VcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHNlYXJjaCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHNlYXJjaFtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoaXRlbSkgJiYgaXRlbS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvKGRpY3QsIGl0ZW1bMF0sIGl0ZW1bMV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1VSTFNlYXJjaFBhcmFtcyc6IFNlcXVlbmNlIGluaXRpYWxpemVyIG11c3Qgb25seSBjb250YWluIHBhaXIgZWxlbWVudHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvKGRpY3QsIGtleSwgc2VhcmNoW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgZmlyc3QgJz8nXG4gICAgICAgICAgICBpZiAoc2VhcmNoLmluZGV4T2YoXCI/XCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoID0gc2VhcmNoLnNsaWNlKDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcGFpcnMgPSBzZWFyY2guc3BsaXQoXCImXCIpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYWlycy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhaXJzIFtqXSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCc9Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoLTEgPCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbyhkaWN0LCBkZWNvZGUodmFsdWUuc2xpY2UoMCwgaW5kZXgpKSwgZGVjb2RlKHZhbHVlLnNsaWNlKGluZGV4ICsgMSkpKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG8oZGljdCwgZGVjb2RlKHZhbHVlKSwgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRpY3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwZW5kVG8oZGljdCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IChcbiAgICAgICAgICAgIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHZhbHVlLnRvU3RyaW5nID09PSAnZnVuY3Rpb24nID8gdmFsdWUudG9TdHJpbmcoKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vICM0NyBQcmV2ZW50IHVzaW5nIGBoYXNPd25Qcm9wZXJ0eWAgYXMgYSBwcm9wZXJ0eSBuYW1lXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShkaWN0LCBuYW1lKSkge1xuICAgICAgICAgICAgZGljdFtuYW1lXS5wdXNoKHZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWN0W25hbWVdID0gW3ZhbF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICAgICAgICByZXR1cm4gISF2YWwgJiYgJ1tvYmplY3QgQXJyYXldJyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbiAgICB9XG5cbn0pKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdGhpcykpO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0aWYoX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSkge1xuXHRcdHJldHVybiBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBtb2R1bGUgZXhwb3J0cyBtdXN0IGJlIHJldHVybmVkIGZyb20gcnVudGltZSBzbyBlbnRyeSBpbmxpbmluZyBpcyBkaXNhYmxlZFxuLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5yZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg2MDcpO1xuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiXSwic291cmNlUm9vdCI6IiJ9

@@ -5,3 +5,3 @@ {

"private": false,
"version": "0.1.9",
"version": "0.1.10",
"author": "Bjorn Krols (https://formspark.io)",

@@ -8,0 +8,0 @@ "license": "MIT",

@@ -26,3 +26,3 @@ import "url-search-params-polyfill";

const addDocumentEventListener = () => {
const addSubmitListener = () => {
if (document) {

@@ -72,2 +72,2 @@ document.addEventListener("submit", (event) => {

addDocumentEventListener();
addSubmitListener();
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc