@datagrok/eda 1.1.25 → 1.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/445.js ADDED
@@ -0,0 +1,2 @@
1
+ var eda;(()=>{"use strict";var e,r,t={8445:(e,r,t)=>{var o=t(6845),a=t(2086);onmessage=async function(e){(0,o.P)().then((r=>{let t=e.data,o=(0,a.Gz)(r,t,"fitLinearRegressionParamsWithDataNormalizing","number");postMessage({callResult:o,args:t})}))}}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return t[e](n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[902],(()=>a(8445)));return a.O(e)},a.amdO={},e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,o,n]=e[p],s=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<i&&(i=n));if(s){e.splice(p--,1);var l=o();void 0!==l&&(r=l)}}return r}n=n||0;for(var p=e.length;p>0&&e[p-1][2]>n;p--)e[p]=e[p-1];e[p]=[t,o,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=self.location+"";var e={445:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,n,i]=r;for(var s in n)a.o(n,s)&&(a.m[s]=n[s]);for(i&&i(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(902).then(r);var n=a.x();eda=n})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFtQkUsS0FBS0MsS0FBS0gsR0FDOURBLEVBQW1CRSxLQXZCQzVFLElBQ25CLElBQUtpQixFQUFVNkQsRUFBYUMsR0FBVy9FLEVBQ3ZDLElBQUksSUFBSUssS0FBWXlFLEVBQ2hCMUUsRUFBb0I4QixFQUFFNEMsRUFBYXpFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWXlFLEVBQVl6RSxJQUloRCxJQURHMEUsR0FBU0EsRUFBUTNFLEdBQ2RhLEVBQVNNLFFBQ2RrRCxFQUFnQnhELEVBQVMrRCxPQUFTLEVBQ25DTCxFQUEyQjNFLEVBQUssQyxLWG5CN0JQLEVBQU9XLEVBQW9CUyxFQUMvQlQsRUFBb0JTLEVBQUksSUFDaEJULEVBQW9CbUMsRUFBRSxLQUFLMUMsS0FBS0osR1lEeEMsSUFBSXFCLEVBQXNCVixFQUFvQlMsSSIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vZWRhLy4vd2FzbS93b3JrZXJzL2ZpdExpbmVhclJlZ3Jlc3Npb25QYXJhbXNXaXRoRGF0YU5vcm1hbGl6aW5nV29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhcm1vbnkgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9pbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSg5MDIpLnRoZW4obmV4dCk7XG59OyIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cblxuaW1wb3J0IHtleHBvcnRFREF9IGZyb20gJy4uLy4uL3dhc20vRURBRm9yV2ViV29ya2VyJztcbmltcG9ydCB7Y3BwV3JhcHBlcn0gZnJvbSAnLi4vLi4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyc7XG5cbm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uIChldnQpIHtcbiAgZXhwb3J0RURBKCkudGhlbihtb2R1bGUgPT4gXG4gICAge1xuICAgICAgbGV0IGFyZ3MgPSBldnQuZGF0YTtcbiAgICAgIGxldCByZXN1bHQgPSBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgJ2ZpdExpbmVhclJlZ3Jlc3Npb25QYXJhbXNXaXRoRGF0YU5vcm1hbGl6aW5nJywgJ251bWJlcicpO1xuICAgICAgcG9zdE1lc3NhZ2UoeydjYWxsUmVzdWx0JzogcmVzdWx0LCAnYXJncyc6IGFyZ3N9KTtcbiAgICB9IClcbn0iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFs5MDJdLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyg4NDQ1KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5hbWRPID0ge307IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZCA9IChtb2R1bGUpID0+IHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiAoKSA9PiB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0VTIE1vZHVsZXMgbWF5IG5vdCBhc3NpZ24gbW9kdWxlLmV4cG9ydHMgb3IgZXhwb3J0cy4qLCBVc2UgRVNNIGV4cG9ydCBzeW50YXgsIGluc3RlYWQ6ICcgKyBtb2R1bGUuaWQpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBzZWxmLmxvY2F0aW9uICsgXCJcIjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBjaHVua3Ncbi8vIFwiMVwiIG1lYW5zIFwiYWxyZWFkeSBsb2FkZWRcIlxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0NDQ1OiAxXG59O1xuXG4vLyBpbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmdcbnZhciBpbnN0YWxsQ2h1bmsgPSAoZGF0YSkgPT4ge1xuXHR2YXIgW2NodW5rSWRzLCBtb3JlTW9kdWxlcywgcnVudGltZV0gPSBkYXRhO1xuXHRmb3IodmFyIG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG5cdFx0fVxuXHR9XG5cdGlmKHJ1bnRpbWUpIHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdHdoaWxlKGNodW5rSWRzLmxlbmd0aClcblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZHMucG9wKCldID0gMTtcblx0cGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24oZGF0YSk7XG59O1xuX193ZWJwYWNrX3JlcXVpcmVfXy5mLmkgPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcblx0Ly8gXCIxXCIgaXMgdGhlIHNpZ25hbCBmb3IgXCJhbHJlYWR5IGxvYWRlZFwiXG5cdGlmKCFpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRpZih0cnVlKSB7IC8vIGFsbCBjaHVua3MgaGF2ZSBKU1xuXHRcdFx0aW1wb3J0U2NyaXB0cyhfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUoY2h1bmtJZCkpO1xuXHRcdH1cblx0fVxufTtcblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJvbm1lc3NhZ2UiLCJhc3luYyIsImV2dCIsInRoZW4iLCJtb2R1bGUiLCJhcmdzIiwiZGF0YSIsInJlc3VsdCIsInBvc3RNZXNzYWdlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJ4IiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJhbWRPIiwiY2h1bmtJZHMiLCJmbiIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiSW5maW5pdHkiLCJpIiwibGVuZ3RoIiwiZnVsZmlsbGVkIiwiaiIsIk9iamVjdCIsImtleXMiLCJldmVyeSIsImtleSIsInNwbGljZSIsInIiLCJkIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJmIiwiZSIsImNodW5rSWQiLCJQcm9taXNlIiwiYWxsIiwicmVkdWNlIiwicHJvbWlzZXMiLCJ1IiwiZyIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJobWQiLCJjcmVhdGUiLCJjaGlsZHJlbiIsInNldCIsIkVycm9yIiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJwIiwiYiIsInNlbGYiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsInB1c2giLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwicG9wIl0sInNvdXJjZVJvb3QiOiIifQ==
package/dist/901.js ADDED
@@ -0,0 +1,2 @@
1
+ var eda;(()=>{"use strict";var e,r,t={9901:(e,r,t)=>{var o=t(6845),a=t(2086);onmessage=async function(e){(0,o.P)().then((r=>{let t=e.data,o=(0,a.Gz)(r,t,"fitLinearRegressionParams","number");postMessage({callResult:o,args:t})}))}}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return t[e](n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[902],(()=>a(9901)));return a.O(e)},a.amdO={},e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(l=0;l<e.length;l++){for(var[t,o,n]=e[l],s=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<i&&(i=n));if(s){e.splice(l--,1);var p=o();void 0!==p&&(r=p)}}return r}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[t,o,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=self.location+"";var e={901:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,n,i]=r;for(var s in n)a.o(n,s)&&(a.m[s]=n[s]);for(i&&i(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(902).then(r);var n=a.x();eda=n})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFtQkUsS0FBS0MsS0FBS0gsR0FDOURBLEVBQW1CRSxLQXZCQzVFLElBQ25CLElBQUtpQixFQUFVNkQsRUFBYUMsR0FBVy9FLEVBQ3ZDLElBQUksSUFBSUssS0FBWXlFLEVBQ2hCMUUsRUFBb0I4QixFQUFFNEMsRUFBYXpFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWXlFLEVBQVl6RSxJQUloRCxJQURHMEUsR0FBU0EsRUFBUTNFLEdBQ2RhLEVBQVNNLFFBQ2RrRCxFQUFnQnhELEVBQVMrRCxPQUFTLEVBQ25DTCxFQUEyQjNFLEVBQUssQyxLWG5CN0JQLEVBQU9XLEVBQW9CUyxFQUMvQlQsRUFBb0JTLEVBQUksSUFDaEJULEVBQW9CbUMsRUFBRSxLQUFLMUMsS0FBS0osR1lEeEMsSUFBSXFCLEVBQXNCVixFQUFvQlMsSSIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vZWRhLy4vd2FzbS93b3JrZXJzL2ZpdExpbmVhclJlZ3Jlc3Npb25QYXJhbXNXb3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvYW1kIG9wdGlvbnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2Vuc3VyZSBjaHVuayIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZlcnJlZCA9IFtdO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuXHRpZihjaHVua0lkcykge1xuXHRcdHByaW9yaXR5ID0gcHJpb3JpdHkgfHwgMDtcblx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuXHRcdGRlZmVycmVkW2ldID0gW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldO1xuXHRcdHJldHVybjtcblx0fVxuXHR2YXIgbm90RnVsZmlsbGVkID0gSW5maW5pdHk7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWQubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG5cdFx0dmFyIGZ1bGZpbGxlZCA9IHRydWU7XG5cdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBjaHVua0lkcy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuXHRcdFx0XHRjaHVua0lkcy5zcGxpY2Uoai0tLCAxKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuXHRcdFx0XHRpZihwcmlvcml0eSA8IG5vdEZ1bGZpbGxlZCkgbm90RnVsZmlsbGVkID0gcHJpb3JpdHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKGZ1bGZpbGxlZCkge1xuXHRcdFx0ZGVmZXJyZWQuc3BsaWNlKGktLSwgMSlcblx0XHRcdHZhciByID0gZm4oKTtcblx0XHRcdGlmIChyICE9PSB1bmRlZmluZWQpIHJlc3VsdCA9IHI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59OyIsInZhciBuZXh0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy54O1xuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5lKDkwMikudGhlbihuZXh0KTtcbn07IiwiLy8gVGhlIGZvbGxvd2luZyBjb2RlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuXG5pbXBvcnQge2V4cG9ydEVEQX0gZnJvbSAnLi4vLi4vd2FzbS9FREFGb3JXZWJXb3JrZXInO1xuaW1wb3J0IHtjcHBXcmFwcGVyfSBmcm9tICcuLi8uLi93YXNtL2NhbGxXYXNtRm9yV2ViV29ya2VyLmpzJztcblxub25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24gKGV2dCkge1xuICBleHBvcnRFREEoKS50aGVuKG1vZHVsZSA9PiBcbiAgICB7XG4gICAgICBsZXQgYXJncyA9IGV2dC5kYXRhO1xuICAgICAgbGV0IHJlc3VsdCA9IGNwcFdyYXBwZXIobW9kdWxlLCBhcmdzLCAnZml0TGluZWFyUmVncmVzc2lvblBhcmFtcycsICdudW1iZXInKTtcbiAgICAgIHBvc3RNZXNzYWdlKHsnY2FsbFJlc3VsdCc6IHJlc3VsdCwgJ2FyZ3MnOiBhcmdzfSk7XG4gICAgfSApXG59IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbOTAyXSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oOTkwMSkpKVxuXHRfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKF9fd2VicGFja19leHBvcnRzX18pO1xuXHRyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfXztcbn07XG5cbiIsIl9fd2VicGFja19yZXF1aXJlX18uYW1kTyA9IHt9OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZiA9IHt9O1xuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLy8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSAoY2h1bmtJZCkgPT4ge1xuXHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG5cdFx0cmV0dXJuIHByb21pc2VzO1xuXHR9LCBbXSkpO1xufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3MgYW5kIHNpYmxpbmcgY2h1bmtzIGZvciB0aGUgZW50cnlwb2ludFxuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZSA9IE9iamVjdC5jcmVhdGUobW9kdWxlKTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCAnZXhwb3J0cycsIHtcblx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdHNldDogKCkgPT4ge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFUyBNb2R1bGVzIG1heSBub3QgYXNzaWduIG1vZHVsZS5leHBvcnRzIG9yIGV4cG9ydHMuKiwgVXNlIEVTTSBleHBvcnQgc3ludGF4LCBpbnN0ZWFkOiAnICsgbW9kdWxlLmlkKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gc2VsZi5sb2NhdGlvbiArIFwiXCI7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDkwMTogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiYXN5bmMiLCJldnQiLCJ0aGVuIiwibW9kdWxlIiwiYXJncyIsImRhdGEiLCJyZXN1bHQiLCJwb3N0TWVzc2FnZSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsImV4cG9ydHMiLCJpZCIsImxvYWRlZCIsIl9fd2VicGFja19tb2R1bGVzX18iLCJtIiwieCIsIl9fd2VicGFja19leHBvcnRzX18iLCJPIiwiYW1kTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImZ1bGZpbGxlZCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImUiLCJjaHVua0lkIiwiUHJvbWlzZSIsImFsbCIsInJlZHVjZSIsInByb21pc2VzIiwidSIsImciLCJnbG9iYWxUaGlzIiwidGhpcyIsIkZ1bmN0aW9uIiwid2luZG93IiwiaG1kIiwiY3JlYXRlIiwiY2hpbGRyZW4iLCJzZXQiLCJFcnJvciIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJyZXBsYWNlIiwicCIsImIiLCJzZWxmIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJwdXNoIiwiYmluZCIsIm1vcmVNb2R1bGVzIiwicnVudGltZSIsInBvcCJdLCJzb3VyY2VSb290IjoiIn0=
package/dist/902.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunkeda=self.webpackChunkeda||[]).push([[902],{6845:(t,n,e)=>{e.d(n,{P:()=>a}),t=e.hmd(t);var r,a=(r="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(t){var n,a,o=void 0!==(t=t||{})?t:{};o.ready=new Promise((function(t,e){n=t,a=e}));var s,i=Object.assign({},o),u=[],c="object"==typeof window,f="function"==typeof importScripts,l=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(c||f)&&(f?l=self.location.href:"undefined"!=typeof document&&document.currentScript&&(l=document.currentScript.src),r&&(l=r),l=0!==l.indexOf("blob:")?l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):"",f&&(s=t=>{var n=new XMLHttpRequest;return n.open("GET",t,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)})),o.print||console.log.bind(console);var p,m,h=o.printErr||console.warn.bind(console);Object.assign(o,i),i=null,o.arguments&&(u=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(p=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&F("no native wasm support detected");var d,y,_,w,b,A=!1,C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(t,n){return t?function(t,n,e){for(var r=n+e,a=n;t[a]&&!(a>=r);)++a;if(a-n>16&&t.buffer&&C)return C.decode(t.subarray(n,a));for(var o="";n<a;){var s=t[n++];if(128&s){var i=63&t[n++];if(192!=(224&s)){var u=63&t[n++];if((s=224==(240&s)?(15&s)<<12|i<<6|u:(7&s)<<18|i<<12|u<<6|63&t[n++])<65536)o+=String.fromCharCode(s);else{var c=s-65536;o+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else o+=String.fromCharCode((31&s)<<6|i)}else o+=String.fromCharCode(s)}return o}(_,t,n):""}function v(t){d=t,o.HEAP8=y=new Int8Array(t),o.HEAP16=new Int16Array(t),o.HEAP32=w=new Int32Array(t),o.HEAPU8=_=new Uint8Array(t),o.HEAPU16=new Uint16Array(t),o.HEAPU32=b=new Uint32Array(t),o.HEAPF32=new Float32Array(t),o.HEAPF64=new Float64Array(t)}o.INITIAL_MEMORY;var g=[],R=[],S=[],k=0,I=null,P=null;function F(t){o.onAbort&&o.onAbort(t),h(t="Aborted("+t+")"),A=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw a(n),n}var x,L;function M(t){return t.startsWith("data:application/octet-stream;base64,")}function O(t){try{if(t==x&&p)return new Uint8Array(p);if(s)return s(t);throw"both async and sync fetching of the wasm failed"}catch(t){F(t)}}function T(t){for(;t.length>0;)t.shift()(o)}function H(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){b[this.ptr+4>>2]=t},this.get_type=function(){return b[this.ptr+4>>2]},this.set_destructor=function(t){b[this.ptr+8>>2]=t},this.get_destructor=function(){return b[this.ptr+8>>2]},this.set_refcount=function(t){w[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,y[this.ptr+12>>0]=t},this.get_caught=function(){return 0!=y[this.ptr+12>>0]},this.set_rethrown=function(t){t=t?1:0,y[this.ptr+13>>0]=t},this.get_rethrown=function(){return 0!=y[this.ptr+13>>0]},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=w[this.ptr>>2];w[this.ptr>>2]=t+1},this.release_ref=function(){var t=w[this.ptr>>2];return w[this.ptr>>2]=t-1,1===t},this.set_adjusted_ptr=function(t){b[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return b[this.ptr+16>>2]},this.get_exception_ptr=function(){if(V(this.get_type()))return b[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function j(t){try{return m.grow(t-d.byteLength+65535>>>16),v(m.buffer),1}catch(t){}}function B(t){return o["_"+t]}function D(t,n,e,r,a){var o={string:t=>{var n=0;if(null!=t&&0!==t){var e=1+(t.length<<2);!function(t,n,e){!function(t,n,e,r){if(!(r>0))return 0;for(var a=e+r-1,o=0;o<t.length;++o){var s=t.charCodeAt(o);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++o)),s<=127){if(e>=a)break;n[e++]=s}else if(s<=2047){if(e+1>=a)break;n[e++]=192|s>>6,n[e++]=128|63&s}else if(s<=65535){if(e+2>=a)break;n[e++]=224|s>>12,n[e++]=128|s>>6&63,n[e++]=128|63&s}else{if(e+3>=a)break;n[e++]=240|s>>18,n[e++]=128|s>>12&63,n[e++]=128|s>>6&63,n[e++]=128|63&s}}n[e]=0}(t,_,n,e)}(t,n=q(e),e)}return n},array:t=>{var n=q(t.length);return function(t,n){y.set(t,n)}(t,n),n}},s=B(t),i=[],u=0;if(r)for(var c=0;c<r.length;c++){var f=o[e[c]];f?(0===u&&(u=z()),i[c]=f(r[c])):i[c]=r[c]}var l=s.apply(null,i);return function(t){return 0!==u&&N(u),function(t){return"string"===n?E(t):"boolean"===n?Boolean(t):t}(t)}(l)}M(x="EDA.wasm")||(L=x,x=o.locateFile?o.locateFile(L,l):l+L);var U,W={a:function(t,n,e,r){F("Assertion failed: "+E(t)+", at: "+[n?E(n):"unknown filename",e,r?E(r):"unknown function"])},b:function(t,n,e){throw new H(t).init(n,e),t},d:function(t,n,e){_.copyWithin(t,n,n+e)},c:function(t){var n,e=_.length,r=2147483648;if((t>>>=0)>r)return!1;for(var a=1;a<=4;a*=2){var o=e*(1+.2/a);if(o=Math.min(o,t+100663296),j(Math.min(r,(n=Math.max(t,o))+(65536-n%65536)%65536)))return!0}return!1}},z=(function(){var t={a:W};function n(t,n){var e,r=t.exports;o.asm=r,v((m=o.asm.e).buffer),o.asm.i,e=o.asm.f,R.unshift(e),function(t){if(k--,o.monitorRunDependencies&&o.monitorRunDependencies(k),0==k&&(null!==I&&(clearInterval(I),I=null),P)){var n=P;P=null,n()}}()}function r(t){n(t.instance)}function s(n){return(p||!c&&!f||"function"!=typeof fetch?Promise.resolve().then((function(){return O(x)})):fetch(new URL(e(1328),e.b)).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+x+"'";return t.arrayBuffer()})).catch((function(){return O(x)}))).then((function(n){return WebAssembly.instantiate(n,t)})).then((function(t){return t})).then(n,(function(t){h("failed to asynchronously prepare wasm: "+t),F(t)}))}if(k++,o.monitorRunDependencies&&o.monitorRunDependencies(k),o.instantiateWasm)try{return o.instantiateWasm(t,n)}catch(t){h("Module.instantiateWasm callback failed with error: "+t),a(t)}(p||"function"!=typeof WebAssembly.instantiateStreaming||M(x)||"function"!=typeof fetch?s(r):fetch(new URL(e(1328),e.b)).then((function(n){return WebAssembly.instantiateStreaming(n,t).then(r,(function(t){return h("wasm streaming compile failed: "+t),h("falling back to ArrayBuffer instantiation"),s(r)}))}))).catch(a)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.f).apply(null,arguments)},o._principalComponentAnalysis=function(){return(o._principalComponentAnalysis=o.asm.g).apply(null,arguments)},o._error=function(){return(o._error=o.asm.h).apply(null,arguments)},o._free=function(){return(o._free=o.asm.j).apply(null,arguments)},o._malloc=function(){return(o._malloc=o.asm.k).apply(null,arguments)},o._partialLeastSquareRegression=function(){return(o._partialLeastSquareRegression=o.asm.l).apply(null,arguments)},o._generateDataset=function(){return(o._generateDataset=o.asm.m).apply(null,arguments)},o._normalizeDataset=function(){return(o._normalizeDataset=o.asm.n).apply(null,arguments)},o._trainLSSVM=function(){return(o._trainLSSVM=o.asm.o).apply(null,arguments)},o._predictByLSSVM=function(){return(o._predictByLSSVM=o.asm.p).apply(null,arguments)},o._trainAndAnalyzeLSSVM=function(){return(o._trainAndAnalyzeLSSVM=o.asm.q).apply(null,arguments)},o.stackSave=function(){return(z=o.stackSave=o.asm.r).apply(null,arguments)}),N=o.stackRestore=function(){return(N=o.stackRestore=o.asm.s).apply(null,arguments)},q=o.stackAlloc=function(){return(q=o.stackAlloc=o.asm.t).apply(null,arguments)},V=o.___cxa_is_pointer_type=function(){return(V=o.___cxa_is_pointer_type=o.asm.u).apply(null,arguments)};function Y(t){function e(){U||(U=!0,o.calledRun=!0,A||(T(R),n(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)t=o.postRun.shift(),S.unshift(t);var t;T(S)}()))}t=t||u,k>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)t=o.preRun.shift(),g.unshift(t);var t;T(g)}(),k>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(o.ccall=D,o.cwrap=function(t,n,e,r){var a=(e=e||[]).every((t=>"number"===t||"boolean"===t));return"string"!==n&&a&&!r?B(t):function(){return D(t,n,e,arguments)}},P=function t(){U||Y(),U||(P=t)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Y(),t.ready});"object"==typeof exports?t.exports=a:"function"==typeof define&&e.amdO?define([],(function(){return a})):"object"==typeof exports&&(exports.exportEDA=a)},2086:(t,n,e)=>{e.d(n,{Gz:()=>w});const r="num",a="floatColumn",o="intColumn",s="floatColumns",i="newFloatColumns",u="intColumns",c="newIntColumns",f="newFloatColumn",l="newIntColumn",p="int",m="double",h="number",d={intColumn:"HEAP32",floatColumn:"HEAPF32",floatColumns:"HEAPF32",newFloatColumns:"HEAPF32",intColumns:"HEAP32",newIntColumns:"HEAP32",newFloatColumn:"HEAPF32",newIntColumn:"HEAP32"},y={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array},_={intColumn:2,floatColumn:2,floatColumns:2,newFloatColumns:2,intColumns:2,newIntColumns:2,newFloatColumn:2,newIntColumn:2};function w(t,n,e,w){!function(t,n){for(const e of n){const n=e.type;switch(n){case r:case p:case m:break;case o:case a:case f:case l:e.data.buf=t._malloc(e.data.numOfRows*y[n].BYTES_PER_ELEMENT);break;case u:case c:case s:case i:e.data.buf=t._malloc(e.data.numOfRows*e.data.numOfColumns*y[n].BYTES_PER_ELEMENT)}}}(t,n),function(t,n){let e,i;for(const c of n){const n=c.type;switch(n){case r:case p:case m:break;case o:case a:e=_[n],i=t[d[n]],i.set(c.data.array,c.data.buf>>e);break;case u:case s:e=_[n],i=t[d[n]];let f=y[n].BYTES_PER_ELEMENT,l=c.data.buf,h=c.data.numOfColumns,w=c.data.numOfRows,b=c.data.arrays;for(let t=0;t<h;t++)i.set(b[t],l+t*w*f>>e)}}}(t,n);let b=function(t){let n=[];for(const e of t)switch(e.type){case r:case p:case m:n.push(e.data);break;case o:case a:case f:case l:n.push(e.data.buf),n.push(e.data.numOfRows);break;case u:case c:case s:case i:n.push(e.data.buf),n.push(e.data.numOfRows),n.push(e.data.numOfColumns)}return n}(n),A=function(t){let n=[];for(const e of t)switch(e.type){case r:case p:case m:n.push(h);break;case o:case a:case f:case l:n.push(h),n.push(h);break;case u:case c:case s:case i:n.push(h),n.push(h),n.push(h)}return n}(n),C=t.ccall(e,w,A,b);return function(t,n){let e,h,_,w,b;for(const A of n){const n=A.type;switch(n){case r:case p:case m:case o:case a:case s:case u:break;case f:case l:e=t[d[n]],h=A.data.numOfRows,w=y[n].BYTES_PER_ELEMENT,b=A.data.buf;let C=new y[n](h);for(let t=0;t<h;t++)C[t]=e[b/w+t];A.array=C;break;case c:case i:e=t[d[n]],h=A.data.numOfRows,_=A.data.numOfColumns,w=y[n].BYTES_PER_ELEMENT,b=A.data.buf;let E=[];for(let t=0;t<_;t++){let r=new y[n](h);for(let n=0;n<h;n++)r[n]=e[b/w+n+t*h];E.push(r)}A.arrays=E}}}(t,n),function(t,n){for(const e of n)switch(e.type){case r:case p:case m:break;case o:case a:case u:case c:case s:case i:case f:case l:t._free(e.data.buf)}}(t,n),C}},1328:(t,n,e)=>{t.exports=e.p+"f5343e2c2e15952ce916.wasm"}}]);
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFLSSxhQUNyQkUsRUFBYVosRUFBUS9ILEdBQU13SSxrQkFDM0J4SyxFQUFNb0ssRUFBSUMsS0FBS3JLLElBQ2YsSUFBSTRLLEVBQVMsR0FFYixJQUFJLElBQUlsRyxFQUFJLEVBQUdBLEVBQUl5RyxFQUFXekcsSUFBSyxDQUNoQyxJQUFJTSxFQUFNLElBQUkrRSxFQUFRL0gsR0FBTXVJLEdBRTVCLElBQUksSUFBSWEsRUFBSSxFQUFHQSxFQUFJYixFQUFXYSxJQUMzQnBHLEVBQUlvRyxHQUFLNUcsRUFBS3hFLEVBQU0ySyxFQUFhUyxFQUFJMUcsRUFBSTZGLEdBRTVDSyxFQUFPRyxLQUFLL0YsRUFDZixDQUVBb0YsRUFBSVEsT0FBU0EsRUFRekIsQ0FDSixDQWdOSVMsQ0FBa0JwRSxFQUFRaEQsR0E3TTlCLFNBQThCZ0QsRUFBUWtELEdBQ2xDLElBQUksTUFBTUMsS0FBT0QsRUFDYixPQUFPQyxFQUFJcEksTUFHUCxLQUFLa0gsRUFDTCxLQUFLUyxFQUNMLEtBQUtDLEVBQ0QsTUFHSixLQUFLUixFQUNMLEtBQUtELEVBQ0wsS0FBS0ksRUFDTCxLQUFLQyxFQUNMLEtBQUtILEVBQ0wsS0FBS0MsRUFDTCxLQUFLRyxFQUNMLEtBQUtDLEVBQ0R6QyxFQUFPcUUsTUFBTWxCLEVBQUlDLEtBQUtySyxLQU90QyxDQXNMSXVMLENBQXFCdEUsRUFBUWhELEdBSXRCeUQsQ0FDWCxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZWRhLy4vd2FzbS9FREFGb3JXZWJXb3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCB2YXIgZXhwb3J0RURBID0gKCgpID0+IHtcbiAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyA6IHVuZGVmaW5lZDtcbiAgXG4gIHJldHVybiAoXG5mdW5jdGlvbihleHBvcnRFREEpIHtcbiAgZXhwb3J0RURBID0gZXhwb3J0RURBIHx8IHt9O1xuXG52YXIgTW9kdWxlPXR5cGVvZiBleHBvcnRFREEhPVwidW5kZWZpbmVkXCI/ZXhwb3J0RURBOnt9O3ZhciByZWFkeVByb21pc2VSZXNvbHZlLHJlYWR5UHJvbWlzZVJlamVjdDtNb2R1bGVbXCJyZWFkeVwiXT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7cmVhZHlQcm9taXNlUmVzb2x2ZT1yZXNvbHZlO3JlYWR5UHJvbWlzZVJlamVjdD1yZWplY3R9KTt2YXIgbW9kdWxlT3ZlcnJpZGVzPU9iamVjdC5hc3NpZ24oe30sTW9kdWxlKTt2YXIgYXJndW1lbnRzXz1bXTt2YXIgdGhpc1Byb2dyYW09XCIuL3RoaXMucHJvZ3JhbVwiO3ZhciBxdWl0Xz0oc3RhdHVzLHRvVGhyb3cpPT57dGhyb3cgdG9UaHJvd307dmFyIEVOVklST05NRU5UX0lTX1dFQj10eXBlb2Ygd2luZG93PT1cIm9iamVjdFwiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PVwiZnVuY3Rpb25cIjt2YXIgRU5WSVJPTk1FTlRfSVNfTk9ERT10eXBlb2YgcHJvY2Vzcz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PVwib2JqZWN0XCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PVwic3RyaW5nXCI7dmFyIHNjcmlwdERpcmVjdG9yeT1cIlwiO2Z1bmN0aW9uIGxvY2F0ZUZpbGUocGF0aCl7aWYoTW9kdWxlW1wibG9jYXRlRmlsZVwiXSl7cmV0dXJuIE1vZHVsZVtcImxvY2F0ZUZpbGVcIl0ocGF0aCxzY3JpcHREaXJlY3RvcnkpfXJldHVybiBzY3JpcHREaXJlY3RvcnkrcGF0aH12YXIgcmVhZF8scmVhZEFzeW5jLHJlYWRCaW5hcnksc2V0V2luZG93VGl0bGU7aWYoRU5WSVJPTk1FTlRfSVNfV0VCfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpe2lmKEVOVklST05NRU5UX0lTX1dPUktFUil7c2NyaXB0RGlyZWN0b3J5PXNlbGYubG9jYXRpb24uaHJlZn1lbHNlIGlmKHR5cGVvZiBkb2N1bWVudCE9XCJ1bmRlZmluZWRcIiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCl7c2NyaXB0RGlyZWN0b3J5PWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjfWlmKF9zY3JpcHREaXIpe3NjcmlwdERpcmVjdG9yeT1fc2NyaXB0RGlyfWlmKHNjcmlwdERpcmVjdG9yeS5pbmRleE9mKFwiYmxvYjpcIikhPT0wKXtzY3JpcHREaXJlY3Rvcnk9c2NyaXB0RGlyZWN0b3J5LnN1YnN0cigwLHNjcmlwdERpcmVjdG9yeS5yZXBsYWNlKC9bPyNdLiovLFwiXCIpLmxhc3RJbmRleE9mKFwiL1wiKSsxKX1lbHNle3NjcmlwdERpcmVjdG9yeT1cIlwifXtyZWFkXz11cmw9Pnt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbihcIkdFVFwiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKEVOVklST05NRU5UX0lTX1dPUktFUil7cmVhZEJpbmFyeT11cmw9Pnt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbihcIkdFVFwiLHVybCxmYWxzZSk7eGhyLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCI7eGhyLnNlbmQobnVsbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSl9fXJlYWRBc3luYz0odXJsLG9ubG9hZCxvbmVycm9yKT0+e3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKFwiR0VUXCIsdXJsLHRydWUpO3hoci5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiO3hoci5vbmxvYWQ9KCk9PntpZih4aHIuc3RhdHVzPT0yMDB8fHhoci5zdGF0dXM9PTAmJnhoci5yZXNwb25zZSl7b25sb2FkKHhoci5yZXNwb25zZSk7cmV0dXJufW9uZXJyb3IoKX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX19c2V0V2luZG93VGl0bGU9dGl0bGU9PmRvY3VtZW50LnRpdGxlPXRpdGxlfWVsc2V7fXZhciBvdXQ9TW9kdWxlW1wicHJpbnRcIl18fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIGVycj1Nb2R1bGVbXCJwcmludEVyclwiXXx8Y29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihNb2R1bGUsbW9kdWxlT3ZlcnJpZGVzKTttb2R1bGVPdmVycmlkZXM9bnVsbDtpZihNb2R1bGVbXCJhcmd1bWVudHNcIl0pYXJndW1lbnRzXz1Nb2R1bGVbXCJhcmd1bWVudHNcIl07aWYoTW9kdWxlW1widGhpc1Byb2dyYW1cIl0pdGhpc1Byb2dyYW09TW9kdWxlW1widGhpc1Byb2dyYW1cIl07aWYoTW9kdWxlW1wicXVpdFwiXSlxdWl0Xz1Nb2R1bGVbXCJxdWl0XCJdO3ZhciB3YXNtQmluYXJ5O2lmKE1vZHVsZVtcIndhc21CaW5hcnlcIl0pd2FzbUJpbmFyeT1Nb2R1bGVbXCJ3YXNtQmluYXJ5XCJdO3ZhciBub0V4aXRSdW50aW1lPU1vZHVsZVtcIm5vRXhpdFJ1bnRpbWVcIl18fHRydWU7aWYodHlwZW9mIFdlYkFzc2VtYmx5IT1cIm9iamVjdFwiKXthYm9ydChcIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWRcIil9dmFyIHdhc21NZW1vcnk7dmFyIEFCT1JUPWZhbHNlO3ZhciBFWElUU1RBVFVTO3ZhciBVVEY4RGVjb2Rlcj10eXBlb2YgVGV4dERlY29kZXIhPVwidW5kZWZpbmVkXCI/bmV3IFRleHREZWNvZGVyKFwidXRmOFwiKTp1bmRlZmluZWQ7ZnVuY3Rpb24gVVRGOEFycmF5VG9TdHJpbmcoaGVhcE9yQXJyYXksaWR4LG1heEJ5dGVzVG9SZWFkKXt2YXIgZW5kSWR4PWlkeCttYXhCeXRlc1RvUmVhZDt2YXIgZW5kUHRyPWlkeDt3aGlsZShoZWFwT3JBcnJheVtlbmRQdHJdJiYhKGVuZFB0cj49ZW5kSWR4KSkrK2VuZFB0cjtpZihlbmRQdHItaWR4PjE2JiZoZWFwT3JBcnJheS5idWZmZXImJlVURjhEZWNvZGVyKXtyZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKGhlYXBPckFycmF5LnN1YmFycmF5KGlkeCxlbmRQdHIpKX12YXIgc3RyPVwiXCI7d2hpbGUoaWR4PGVuZFB0cil7dmFyIHUwPWhlYXBPckFycmF5W2lkeCsrXTtpZighKHUwJjEyOCkpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh1MCk7Y29udGludWV9dmFyIHUxPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjI0KT09MTkyKXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHUwJjMxKTw8Nnx1MSk7Y29udGludWV9dmFyIHUyPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjQwKT09MjI0KXt1MD0odTAmMTUpPDwxMnx1MTw8Nnx1Mn1lbHNle3UwPSh1MCY3KTw8MTh8dTE8PDEyfHUyPDw2fGhlYXBPckFycmF5W2lkeCsrXSY2M31pZih1MDw2NTUzNil7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHUwKX1lbHNle3ZhciBjaD11MC02NTUzNjtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Y2g+PjEwLDU2MzIwfGNoJjEwMjMpfX1yZXR1cm4gc3RyfWZ1bmN0aW9uIFVURjhUb1N0cmluZyhwdHIsbWF4Qnl0ZXNUb1JlYWQpe3JldHVybiBwdHI/VVRGOEFycmF5VG9TdHJpbmcoSEVBUFU4LHB0cixtYXhCeXRlc1RvUmVhZCk6XCJcIn1mdW5jdGlvbiBzdHJpbmdUb1VURjhBcnJheShzdHIsaGVhcCxvdXRJZHgsbWF4Qnl0ZXNUb1dyaXRlKXtpZighKG1heEJ5dGVzVG9Xcml0ZT4wKSlyZXR1cm4gMDt2YXIgc3RhcnRJZHg9b3V0SWR4O3ZhciBlbmRJZHg9b3V0SWR4K21heEJ5dGVzVG9Xcml0ZS0xO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe3ZhciB1PXN0ci5jaGFyQ29kZUF0KGkpO2lmKHU+PTU1Mjk2JiZ1PD01NzM0Myl7dmFyIHUxPXN0ci5jaGFyQ29kZUF0KCsraSk7dT02NTUzNisoKHUmMTAyMyk8PDEwKXx1MSYxMDIzfWlmKHU8PTEyNyl7aWYob3V0SWR4Pj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109dX1lbHNlIGlmKHU8PTIwNDcpe2lmKG91dElkeCsxPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MTkyfHU+PjY7aGVhcFtvdXRJZHgrK109MTI4fHUmNjN9ZWxzZSBpZih1PD02NTUzNSl7aWYob3V0SWR4KzI+PWVuZElkeClicmVhaztoZWFwW291dElkeCsrXT0yMjR8dT4+MTI7aGVhcFtvdXRJZHgrK109MTI4fHU+PjYmNjM7aGVhcFtvdXRJZHgrK109MTI4fHUmNjN9ZWxzZXtpZihvdXRJZHgrMz49ZW5kSWR4KWJyZWFrO2hlYXBbb3V0SWR4KytdPTI0MHx1Pj4xODtoZWFwW291dElkeCsrXT0xMjh8dT4+MTImNjM7aGVhcFtvdXRJZHgrK109MTI4fHU+PjYmNjM7aGVhcFtvdXRJZHgrK109MTI4fHUmNjN9fWhlYXBbb3V0SWR4XT0wO3JldHVybiBvdXRJZHgtc3RhcnRJZHh9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4KHN0cixvdXRQdHIsbWF4Qnl0ZXNUb1dyaXRlKXtyZXR1cm4gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLEhFQVBVOCxvdXRQdHIsbWF4Qnl0ZXNUb1dyaXRlKX12YXIgYnVmZmVyLEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7ZnVuY3Rpb24gdXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MoYnVmKXtidWZmZXI9YnVmO01vZHVsZVtcIkhFQVA4XCJdPUhFQVA4PW5ldyBJbnQ4QXJyYXkoYnVmKTtNb2R1bGVbXCJIRUFQMTZcIl09SEVBUDE2PW5ldyBJbnQxNkFycmF5KGJ1Zik7TW9kdWxlW1wiSEVBUDMyXCJdPUhFQVAzMj1uZXcgSW50MzJBcnJheShidWYpO01vZHVsZVtcIkhFQVBVOFwiXT1IRUFQVTg9bmV3IFVpbnQ4QXJyYXkoYnVmKTtNb2R1bGVbXCJIRUFQVTE2XCJdPUhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1Zik7TW9kdWxlW1wiSEVBUFUzMlwiXT1IRUFQVTMyPW5ldyBVaW50MzJBcnJheShidWYpO01vZHVsZVtcIkhFQVBGMzJcIl09SEVBUEYzMj1uZXcgRmxvYXQzMkFycmF5KGJ1Zik7TW9kdWxlW1wiSEVBUEY2NFwiXT1IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmKX12YXIgSU5JVElBTF9NRU1PUlk9TW9kdWxlW1wiSU5JVElBTF9NRU1PUllcIl18fDI2ODQzNTQ1Njt2YXIgd2FzbVRhYmxlO3ZhciBfX0FUUFJFUlVOX189W107dmFyIF9fQVRJTklUX189W107dmFyIF9fQVRQT1NUUlVOX189W107dmFyIHJ1bnRpbWVJbml0aWFsaXplZD1mYWxzZTtmdW5jdGlvbiBwcmVSdW4oKXtpZihNb2R1bGVbXCJwcmVSdW5cIl0pe2lmKHR5cGVvZiBNb2R1bGVbXCJwcmVSdW5cIl09PVwiZnVuY3Rpb25cIilNb2R1bGVbXCJwcmVSdW5cIl09W01vZHVsZVtcInByZVJ1blwiXV07d2hpbGUoTW9kdWxlW1wicHJlUnVuXCJdLmxlbmd0aCl7YWRkT25QcmVSdW4oTW9kdWxlW1wicHJlUnVuXCJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7cnVudGltZUluaXRpYWxpemVkPXRydWU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVElOSVRfXyl9ZnVuY3Rpb24gcG9zdFJ1bigpe2lmKE1vZHVsZVtcInBvc3RSdW5cIl0pe2lmKHR5cGVvZiBNb2R1bGVbXCJwb3N0UnVuXCJdPT1cImZ1bmN0aW9uXCIpTW9kdWxlW1wicG9zdFJ1blwiXT1bTW9kdWxlW1wicG9zdFJ1blwiXV07d2hpbGUoTW9kdWxlW1wicG9zdFJ1blwiXS5sZW5ndGgpe2FkZE9uUG9zdFJ1bihNb2R1bGVbXCJwb3N0UnVuXCJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfWZ1bmN0aW9uIGFkZE9uSW5pdChjYil7X19BVElOSVRfXy51bnNoaWZ0KGNiKX1mdW5jdGlvbiBhZGRPblBvc3RSdW4oY2Ipe19fQVRQT1NUUlVOX18udW5zaGlmdChjYil9dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbXCJtb25pdG9yUnVuRGVwZW5kZW5jaWVzXCJdKXtNb2R1bGVbXCJtb25pdG9yUnVuRGVwZW5kZW5jaWVzXCJdKHJ1bkRlcGVuZGVuY2llcyl9fWZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koaWQpe3J1bkRlcGVuZGVuY2llcy0tO2lmKE1vZHVsZVtcIm1vbml0b3JSdW5EZXBlbmRlbmNpZXNcIl0pe01vZHVsZVtcIm1vbml0b3JSdW5EZXBlbmRlbmNpZXNcIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fWZ1bmN0aW9uIGFib3J0KHdoYXQpe2lmKE1vZHVsZVtcIm9uQWJvcnRcIl0pe01vZHVsZVtcIm9uQWJvcnRcIl0od2hhdCl9d2hhdD1cIkFib3J0ZWQoXCIrd2hhdCtcIilcIjtlcnIod2hhdCk7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPTE7d2hhdCs9XCIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uXCI7dmFyIGU9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcih3aGF0KTtyZWFkeVByb21pc2VSZWplY3QoZSk7dGhyb3cgZX12YXIgZGF0YVVSSVByZWZpeD1cImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxcIjtmdW5jdGlvbiBpc0RhdGFVUkkoZmlsZW5hbWUpe3JldHVybiBmaWxlbmFtZS5zdGFydHNXaXRoKGRhdGFVUklQcmVmaXgpfXZhciB3YXNtQmluYXJ5RmlsZTt3YXNtQmluYXJ5RmlsZT1cIkVEQS53YXNtXCI7aWYoIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkpe3dhc21CaW5hcnlGaWxlPWxvY2F0ZUZpbGUod2FzbUJpbmFyeUZpbGUpfWZ1bmN0aW9uIGdldEJpbmFyeShmaWxlKXt0cnl7aWYoZmlsZT09d2FzbUJpbmFyeUZpbGUmJndhc21CaW5hcnkpe3JldHVybiBuZXcgVWludDhBcnJheSh3YXNtQmluYXJ5KX1pZihyZWFkQmluYXJ5KXtyZXR1cm4gcmVhZEJpbmFyeShmaWxlKX10aHJvd1wiYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWRcIn1jYXRjaChlcnIpe2Fib3J0KGVycil9fWZ1bmN0aW9uIGdldEJpbmFyeVByb21pc2UoKXtpZighd2FzbUJpbmFyeSYmKEVOVklST05NRU5UX0lTX1dFQnx8RU5WSVJPTk1FTlRfSVNfV09SS0VSKSl7aWYodHlwZW9mIGZldGNoPT1cImZ1bmN0aW9uXCIpe3JldHVybiBmZXRjaChuZXcgVVJMKCcuLi93YXNtL0VEQS53YXNtJywgaW1wb3J0Lm1ldGEudXJsKSkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7aWYoIXJlc3BvbnNlW1wib2tcIl0pe3Rocm93XCJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICdcIit3YXNtQmluYXJ5RmlsZStcIidcIn1yZXR1cm4gcmVzcG9uc2VbXCJhcnJheUJ1ZmZlclwiXSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gZ2V0QmluYXJ5KHdhc21CaW5hcnlGaWxlKX0pfX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBnZXRCaW5hcnkod2FzbUJpbmFyeUZpbGUpfSl9ZnVuY3Rpb24gY3JlYXRlV2FzbSgpe3ZhciBpbmZvPXtcImFcIjphc21MaWJyYXJ5QXJnfTtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoaW5zdGFuY2UsbW9kdWxlKXt2YXIgZXhwb3J0cz1pbnN0YW5jZS5leHBvcnRzO01vZHVsZVtcImFzbVwiXT1leHBvcnRzO3dhc21NZW1vcnk9TW9kdWxlW1wiYXNtXCJdW1wiZVwiXTt1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7d2FzbVRhYmxlPU1vZHVsZVtcImFzbVwiXVtcImlcIl07YWRkT25Jbml0KE1vZHVsZVtcImFzbVwiXVtcImZcIl0pO3JlbW92ZVJ1bkRlcGVuZGVuY3koXCJ3YXNtLWluc3RhbnRpYXRlXCIpfWFkZFJ1bkRlcGVuZGVuY3koXCJ3YXNtLWluc3RhbnRpYXRlXCIpO2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KHJlc3VsdCl7cmVjZWl2ZUluc3RhbmNlKHJlc3VsdFtcImluc3RhbmNlXCJdKX1mdW5jdGlvbiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVyKXtyZXR1cm4gZ2V0QmluYXJ5UHJvbWlzZSgpLnRoZW4oZnVuY3Rpb24oYmluYXJ5KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYmluYXJ5LGluZm8pfSkudGhlbihmdW5jdGlvbihpbnN0YW5jZSl7cmV0dXJuIGluc3RhbmNlfSkudGhlbihyZWNlaXZlcixmdW5jdGlvbihyZWFzb24pe2VycihcImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206IFwiK3JlYXNvbik7YWJvcnQocmVhc29uKX0pfWZ1bmN0aW9uIGluc3RhbnRpYXRlQXN5bmMoKXtpZighd2FzbUJpbmFyeSYmdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nPT1cImZ1bmN0aW9uXCImJiFpc0RhdGFVUkkod2FzbUJpbmFyeUZpbGUpJiZ0eXBlb2YgZmV0Y2g9PVwiZnVuY3Rpb25cIil7cmV0dXJuIGZldGNoKG5ldyBVUkwoJy4uL3dhc20vRURBLndhc20nLCBpbXBvcnQubWV0YS51cmwpKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXt2YXIgcmVzdWx0PVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3BvbnNlLGluZm8pO3JldHVybiByZXN1bHQudGhlbihyZWNlaXZlSW5zdGFudGlhdGlvblJlc3VsdCxmdW5jdGlvbihyZWFzb24pe2VycihcIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiBcIityZWFzb24pO2VycihcImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uXCIpO3JldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KX0pfSl9ZWxzZXtyZXR1cm4gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihyZWNlaXZlSW5zdGFudGlhdGlvblJlc3VsdCl9fWlmKE1vZHVsZVtcImluc3RhbnRpYXRlV2FzbVwiXSl7dHJ5e3ZhciBleHBvcnRzPU1vZHVsZVtcImluc3RhbnRpYXRlV2FzbVwiXShpbmZvLHJlY2VpdmVJbnN0YW5jZSk7cmV0dXJuIGV4cG9ydHN9Y2F0Y2goZSl7ZXJyKFwiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogXCIrZSk7cmVhZHlQcm9taXNlUmVqZWN0KGUpfX1pbnN0YW50aWF0ZUFzeW5jKCkuY2F0Y2gocmVhZHlQcm9taXNlUmVqZWN0KTtyZXR1cm57fX1mdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3Mpe3doaWxlKGNhbGxiYWNrcy5sZW5ndGg+MCl7Y2FsbGJhY2tzLnNoaWZ0KCkoTW9kdWxlKX19ZnVuY3Rpb24gX19fYXNzZXJ0X2ZhaWwoY29uZGl0aW9uLGZpbGVuYW1lLGxpbmUsZnVuYyl7YWJvcnQoXCJBc3NlcnRpb24gZmFpbGVkOiBcIitVVEY4VG9TdHJpbmcoY29uZGl0aW9uKStcIiwgYXQ6IFwiK1tmaWxlbmFtZT9VVEY4VG9TdHJpbmcoZmlsZW5hbWUpOlwidW5rbm93biBmaWxlbmFtZVwiLGxpbmUsZnVuYz9VVEY4VG9TdHJpbmcoZnVuYyk6XCJ1bmtub3duIGZ1bmN0aW9uXCJdKX1mdW5jdGlvbiBFeGNlcHRpb25JbmZvKGV4Y1B0cil7dGhpcy5leGNQdHI9ZXhjUHRyO3RoaXMucHRyPWV4Y1B0ci0yNDt0aGlzLnNldF90eXBlPWZ1bmN0aW9uKHR5cGUpe0hFQVBVMzJbdGhpcy5wdHIrND4+Ml09dHlwZX07dGhpcy5nZXRfdHlwZT1mdW5jdGlvbigpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzQ+PjJdfTt0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKGRlc3RydWN0b3Ipe0hFQVBVMzJbdGhpcy5wdHIrOD4+Ml09ZGVzdHJ1Y3Rvcn07dGhpcy5nZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzg+PjJdfTt0aGlzLnNldF9yZWZjb3VudD1mdW5jdGlvbihyZWZjb3VudCl7SEVBUDMyW3RoaXMucHRyPj4yXT1yZWZjb3VudH07dGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKGNhdWdodCl7Y2F1Z2h0PWNhdWdodD8xOjA7SEVBUDhbdGhpcy5wdHIrMTI+PjBdPWNhdWdodH07dGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIEhFQVA4W3RoaXMucHRyKzEyPj4wXSE9MH07dGhpcy5zZXRfcmV0aHJvd249ZnVuY3Rpb24ocmV0aHJvd24pe3JldGhyb3duPXJldGhyb3duPzE6MDtIRUFQOFt0aGlzLnB0cisxMz4+MF09cmV0aHJvd259O3RoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIEhFQVA4W3RoaXMucHRyKzEzPj4wXSE9MH07dGhpcy5pbml0PWZ1bmN0aW9uKHR5cGUsZGVzdHJ1Y3Rvcil7dGhpcy5zZXRfYWRqdXN0ZWRfcHRyKDApO3RoaXMuc2V0X3R5cGUodHlwZSk7dGhpcy5zZXRfZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKTt0aGlzLnNldF9yZWZjb3VudCgwKTt0aGlzLnNldF9jYXVnaHQoZmFsc2UpO3RoaXMuc2V0X3JldGhyb3duKGZhbHNlKX07dGhpcy5hZGRfcmVmPWZ1bmN0aW9uKCl7dmFyIHZhbHVlPUhFQVAzMlt0aGlzLnB0cj4+Ml07SEVBUDMyW3RoaXMucHRyPj4yXT12YWx1ZSsxfTt0aGlzLnJlbGVhc2VfcmVmPWZ1bmN0aW9uKCl7dmFyIHByZXY9SEVBUDMyW3RoaXMucHRyPj4yXTtIRUFQMzJbdGhpcy5wdHI+PjJdPXByZXYtMTtyZXR1cm4gcHJldj09PTF9O3RoaXMuc2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbihhZGp1c3RlZFB0cil7SEVBUFUzMlt0aGlzLnB0cisxNj4+Ml09YWRqdXN0ZWRQdHJ9O3RoaXMuZ2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbigpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzE2Pj4yXX07dGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe3ZhciBpc1BvaW50ZXI9X19fY3hhX2lzX3BvaW50ZXJfdHlwZSh0aGlzLmdldF90eXBlKCkpO2lmKGlzUG9pbnRlcil7cmV0dXJuIEhFQVBVMzJbdGhpcy5leGNQdHI+PjJdfXZhciBhZGp1c3RlZD10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtpZihhZGp1c3RlZCE9PTApcmV0dXJuIGFkanVzdGVkO3JldHVybiB0aGlzLmV4Y1B0cn19dmFyIGV4Y2VwdGlvbkxhc3Q9MDt2YXIgdW5jYXVnaHRFeGNlcHRpb25Db3VudD0wO2Z1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXt2YXIgaW5mbz1uZXcgRXhjZXB0aW9uSW5mbyhwdHIpO2luZm8uaW5pdCh0eXBlLGRlc3RydWN0b3IpO2V4Y2VwdGlvbkxhc3Q9cHRyO3VuY2F1Z2h0RXhjZXB0aW9uQ291bnQrKzt0aHJvdyBwdHJ9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyhkZXN0LHNyYyxudW0pe0hFQVBVOC5jb3B5V2l0aGluKGRlc3Qsc3JjLHNyYytudW0pfWZ1bmN0aW9uIGdldEhlYXBNYXgoKXtyZXR1cm4gMjE0NzQ4MzY0OH1mdW5jdGlvbiBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKHNpemUpe3RyeXt3YXNtTWVtb3J5Lmdyb3coc2l6ZS1idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2KTt1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7cmV0dXJuIDF9Y2F0Y2goZSl7fX1mdW5jdGlvbiBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcChyZXF1ZXN0ZWRTaXplKXt2YXIgb2xkU2l6ZT1IRUFQVTgubGVuZ3RoO3JlcXVlc3RlZFNpemU9cmVxdWVzdGVkU2l6ZT4+PjA7dmFyIG1heEhlYXBTaXplPWdldEhlYXBNYXgoKTtpZihyZXF1ZXN0ZWRTaXplPm1heEhlYXBTaXplKXtyZXR1cm4gZmFsc2V9bGV0IGFsaWduVXA9KHgsbXVsdGlwbGUpPT54KyhtdWx0aXBsZS14JW11bHRpcGxlKSVtdWx0aXBsZTtmb3IodmFyIGN1dERvd249MTtjdXREb3duPD00O2N1dERvd24qPTIpe3ZhciBvdmVyR3Jvd25IZWFwU2l6ZT1vbGRTaXplKigxKy4yL2N1dERvd24pO292ZXJHcm93bkhlYXBTaXplPU1hdGgubWluKG92ZXJHcm93bkhlYXBTaXplLHJlcXVlc3RlZFNpemUrMTAwNjYzMjk2KTt2YXIgbmV3U2l6ZT1NYXRoLm1pbihtYXhIZWFwU2l6ZSxhbGlnblVwKE1hdGgubWF4KHJlcXVlc3RlZFNpemUsb3Zlckdyb3duSGVhcFNpemUpLDY1NTM2KSk7dmFyIHJlcGxhY2VtZW50PWVtc2NyaXB0ZW5fcmVhbGxvY19idWZmZXIobmV3U2l6ZSk7aWYocmVwbGFjZW1lbnQpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZ2V0Q0Z1bmMoaWRlbnQpe3ZhciBmdW5jPU1vZHVsZVtcIl9cIitpZGVudF07cmV0dXJuIGZ1bmN9ZnVuY3Rpb24gd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5LGJ1ZmZlcil7SEVBUDguc2V0KGFycmF5LGJ1ZmZlcil9ZnVuY3Rpb24gY2NhbGwoaWRlbnQscmV0dXJuVHlwZSxhcmdUeXBlcyxhcmdzLG9wdHMpe3ZhciB0b0M9e1wic3RyaW5nXCI6c3RyPT57dmFyIHJldD0wO2lmKHN0ciE9PW51bGwmJnN0ciE9PXVuZGVmaW5lZCYmc3RyIT09MCl7dmFyIGxlbj0oc3RyLmxlbmd0aDw8MikrMTtyZXQ9c3RhY2tBbGxvYyhsZW4pO3N0cmluZ1RvVVRGOChzdHIscmV0LGxlbil9cmV0dXJuIHJldH0sXCJhcnJheVwiOmFycj0+e3ZhciByZXQ9c3RhY2tBbGxvYyhhcnIubGVuZ3RoKTt3cml0ZUFycmF5VG9NZW1vcnkoYXJyLHJldCk7cmV0dXJuIHJldH19O2Z1bmN0aW9uIGNvbnZlcnRSZXR1cm5WYWx1ZShyZXQpe2lmKHJldHVyblR5cGU9PT1cInN0cmluZ1wiKXtyZXR1cm4gVVRGOFRvU3RyaW5nKHJldCl9aWYocmV0dXJuVHlwZT09PVwiYm9vbGVhblwiKXJldHVybiBCb29sZWFuKHJldCk7cmV0dXJuIHJldH12YXIgZnVuYz1nZXRDRnVuYyhpZGVudCk7dmFyIGNBcmdzPVtdO3ZhciBzdGFjaz0wO2lmKGFyZ3Mpe2Zvcih2YXIgaT0wO2k8YXJncy5sZW5ndGg7aSsrKXt2YXIgY29udmVydGVyPXRvQ1thcmdUeXBlc1tpXV07aWYoY29udmVydGVyKXtpZihzdGFjaz09PTApc3RhY2s9c3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtmdW5jdGlvbiBvbkRvbmUocmV0KXtpZihzdGFjayE9PTApc3RhY2tSZXN0b3JlKHN0YWNrKTtyZXR1cm4gY29udmVydFJldHVyblZhbHVlKHJldCl9cmV0PW9uRG9uZShyZXQpO3JldHVybiByZXR9ZnVuY3Rpb24gY3dyYXAoaWRlbnQscmV0dXJuVHlwZSxhcmdUeXBlcyxvcHRzKXthcmdUeXBlcz1hcmdUeXBlc3x8W107dmFyIG51bWVyaWNBcmdzPWFyZ1R5cGVzLmV2ZXJ5KHR5cGU9PnR5cGU9PT1cIm51bWJlclwifHx0eXBlPT09XCJib29sZWFuXCIpO3ZhciBudW1lcmljUmV0PXJldHVyblR5cGUhPT1cInN0cmluZ1wiO2lmKG51bWVyaWNSZXQmJm51bWVyaWNBcmdzJiYhb3B0cyl7cmV0dXJuIGdldENGdW5jKGlkZW50KX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gY2NhbGwoaWRlbnQscmV0dXJuVHlwZSxhcmdUeXBlcyxhcmd1bWVudHMsb3B0cyl9fXZhciBhc21MaWJyYXJ5QXJnPXtcImFcIjpfX19hc3NlcnRfZmFpbCxcImJcIjpfX19jeGFfdGhyb3csXCJkXCI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyxcImNcIjpfZW1zY3JpcHRlbl9yZXNpemVfaGVhcH07dmFyIGFzbT1jcmVhdGVXYXNtKCk7dmFyIF9fX3dhc21fY2FsbF9jdG9ycz1Nb2R1bGVbXCJfX193YXNtX2NhbGxfY3RvcnNcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX19fd2FzbV9jYWxsX2N0b3JzPU1vZHVsZVtcIl9fX3dhc21fY2FsbF9jdG9yc1wiXT1Nb2R1bGVbXCJhc21cIl1bXCJmXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXM9TW9kdWxlW1wiX3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9wcmluY2lwYWxDb21wb25lbnRBbmFseXNpcz1Nb2R1bGVbXCJfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNcIl09TW9kdWxlW1wiYXNtXCJdW1wiZ1wiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2Vycm9yPU1vZHVsZVtcIl9lcnJvclwiXT1mdW5jdGlvbigpe3JldHVybihfZXJyb3I9TW9kdWxlW1wiX2Vycm9yXCJdPU1vZHVsZVtcImFzbVwiXVtcImhcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9mcmVlPU1vZHVsZVtcIl9mcmVlXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9mcmVlPU1vZHVsZVtcIl9mcmVlXCJdPU1vZHVsZVtcImFzbVwiXVtcImpcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9tYWxsb2M9TW9kdWxlW1wiX21hbGxvY1wiXT1mdW5jdGlvbigpe3JldHVybihfbWFsbG9jPU1vZHVsZVtcIl9tYWxsb2NcIl09TW9kdWxlW1wiYXNtXCJdW1wia1wiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb249TW9kdWxlW1wiX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25cIl09ZnVuY3Rpb24oKXtyZXR1cm4oX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb249TW9kdWxlW1wiX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25cIl09TW9kdWxlW1wiYXNtXCJdW1wibFwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2dlbmVyYXRlRGF0YXNldD1Nb2R1bGVbXCJfZ2VuZXJhdGVEYXRhc2V0XCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9nZW5lcmF0ZURhdGFzZXQ9TW9kdWxlW1wiX2dlbmVyYXRlRGF0YXNldFwiXT1Nb2R1bGVbXCJhc21cIl1bXCJtXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfbm9ybWFsaXplRGF0YXNldD1Nb2R1bGVbXCJfbm9ybWFsaXplRGF0YXNldFwiXT1mdW5jdGlvbigpe3JldHVybihfbm9ybWFsaXplRGF0YXNldD1Nb2R1bGVbXCJfbm9ybWFsaXplRGF0YXNldFwiXT1Nb2R1bGVbXCJhc21cIl1bXCJuXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfdHJhaW5MU1NWTT1Nb2R1bGVbXCJfdHJhaW5MU1NWTVwiXT1mdW5jdGlvbigpe3JldHVybihfdHJhaW5MU1NWTT1Nb2R1bGVbXCJfdHJhaW5MU1NWTVwiXT1Nb2R1bGVbXCJhc21cIl1bXCJvXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfcHJlZGljdEJ5TFNTVk09TW9kdWxlW1wiX3ByZWRpY3RCeUxTU1ZNXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9wcmVkaWN0QnlMU1NWTT1Nb2R1bGVbXCJfcHJlZGljdEJ5TFNTVk1cIl09TW9kdWxlW1wiYXNtXCJdW1wicFwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX3RyYWluQW5kQW5hbHl6ZUxTU1ZNPU1vZHVsZVtcIl90cmFpbkFuZEFuYWx5emVMU1NWTVwiXT1mdW5jdGlvbigpe3JldHVybihfdHJhaW5BbmRBbmFseXplTFNTVk09TW9kdWxlW1wiX3RyYWluQW5kQW5hbHl6ZUxTU1ZNXCJdPU1vZHVsZVtcImFzbVwiXVtcInFcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIHN0YWNrU2F2ZT1Nb2R1bGVbXCJzdGFja1NhdmVcIl09ZnVuY3Rpb24oKXtyZXR1cm4oc3RhY2tTYXZlPU1vZHVsZVtcInN0YWNrU2F2ZVwiXT1Nb2R1bGVbXCJhc21cIl1bXCJyXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBzdGFja1Jlc3RvcmU9TW9kdWxlW1wic3RhY2tSZXN0b3JlXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKHN0YWNrUmVzdG9yZT1Nb2R1bGVbXCJzdGFja1Jlc3RvcmVcIl09TW9kdWxlW1wiYXNtXCJdW1wic1wiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgc3RhY2tBbGxvYz1Nb2R1bGVbXCJzdGFja0FsbG9jXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKHN0YWNrQWxsb2M9TW9kdWxlW1wic3RhY2tBbGxvY1wiXT1Nb2R1bGVbXCJhc21cIl1bXCJ0XCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX19jeGFfaXNfcG9pbnRlcl90eXBlPU1vZHVsZVtcIl9fX2N4YV9pc19wb2ludGVyX3R5cGVcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX19fY3hhX2lzX3BvaW50ZXJfdHlwZT1Nb2R1bGVbXCJfX19jeGFfaXNfcG9pbnRlcl90eXBlXCJdPU1vZHVsZVtcImFzbVwiXVtcInVcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlW1wiY2NhbGxcIl09Y2NhbGw7TW9kdWxlW1wiY3dyYXBcIl09Y3dyYXA7dmFyIGNhbGxlZFJ1bjtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIWNhbGxlZFJ1bilydW4oKTtpZighY2FsbGVkUnVuKWRlcGVuZGVuY2llc0Z1bGZpbGxlZD1ydW5DYWxsZXJ9O2Z1bmN0aW9uIHJ1bihhcmdzKXthcmdzPWFyZ3N8fGFyZ3VtZW50c187aWYocnVuRGVwZW5kZW5jaWVzPjApe3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7cmV0dXJufWZ1bmN0aW9uIGRvUnVuKCl7aWYoY2FsbGVkUnVuKXJldHVybjtjYWxsZWRSdW49dHJ1ZTtNb2R1bGVbXCJjYWxsZWRSdW5cIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlKE1vZHVsZSk7aWYoTW9kdWxlW1wib25SdW50aW1lSW5pdGlhbGl6ZWRcIl0pTW9kdWxlW1wib25SdW50aW1lSW5pdGlhbGl6ZWRcIl0oKTtwb3N0UnVuKCl9aWYoTW9kdWxlW1wic2V0U3RhdHVzXCJdKXtNb2R1bGVbXCJzZXRTdGF0dXNcIl0oXCJSdW5uaW5nLi4uXCIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TW9kdWxlW1wic2V0U3RhdHVzXCJdKFwiXCIpfSwxKTtkb1J1bigpfSwxKX1lbHNle2RvUnVuKCl9fWlmKE1vZHVsZVtcInByZUluaXRcIl0pe2lmKHR5cGVvZiBNb2R1bGVbXCJwcmVJbml0XCJdPT1cImZ1bmN0aW9uXCIpTW9kdWxlW1wicHJlSW5pdFwiXT1bTW9kdWxlW1wicHJlSW5pdFwiXV07d2hpbGUoTW9kdWxlW1wicHJlSW5pdFwiXS5sZW5ndGg+MCl7TW9kdWxlW1wicHJlSW5pdFwiXS5wb3AoKSgpfX1ydW4oKTtcblxuXG4gIHJldHVybiBleHBvcnRFREEucmVhZHlcbn1cbik7XG59KSgpO1xuaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JylcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRFREE7XG5lbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZVsnYW1kJ10pXG4gIGRlZmluZShbXSwgZnVuY3Rpb24oKSB7IHJldHVybiBleHBvcnRFREE7IH0pO1xuZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuICBleHBvcnRzW1wiZXhwb3J0RURBXCJdID0gZXhwb3J0RURBO1xuIiwiLy8gVXRpbGl0aWVzIGZvciBjYWxsaW5nIHdhc20tZnVuY3Rpb25zIHZpYSB3ZWJ3b3JrZXIuXG5cbi8vIFdlIHVzZSBhbiBhcHByb2FjaCB0aGF0IGlzIHdlbGwgZGVzY3JpYmVkIGhlcmU6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG4vLyBJdCBoYXMgYmVlbiBtb2RpZmllZCBmb3IgdXNhZ2UgaW4gREFUQUdST0suXG5cbi8vIENvbnN0YW50cyBmb3Igd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VycyBydW50aW1lIHN5c3RlbVxuY29uc3QgVFlQRSA9ICd0eXBlJztcbmNvbnN0IE5VTV9UWVBFID0gJ251bSc7XG5jb25zdCBGTE9BVF9DT0xVTU5fVFlQRSA9ICdmbG9hdENvbHVtbic7XG5jb25zdCBJTlRfQ09MVU1OX1RZUEUgPSAnaW50Q29sdW1uJztcbmNvbnN0IEZMT0FUX0NPTFVNTlNfVFlQRSA9ICdmbG9hdENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRSA9ICduZXdGbG9hdENvbHVtbnMnO1xuY29uc3QgSU5UX0NPTFVNTlNfVFlQRSA9ICdpbnRDb2x1bW5zJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OU19UWVBFID0gJ25ld0ludENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFID0gJ25ld0Zsb2F0Q29sdW1uJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OX1RZUEUgPSAnbmV3SW50Q29sdW1uJztcbmNvbnN0IENPTFVNTiA9ICdjb2x1bW4nO1xuY29uc3QgQ0FMTF9SRVNVTFQgPSAnX2NhbGxSZXN1bHQnO1xuY29uc3QgTlVNX09GX1JPV1MgPSAnbnVtT2ZSb3dzJztcbmNvbnN0IE5VTV9PRl9DT0xVTU5TID0gJ251bU9mQ29sdW1ucyc7XG5jb25zdCBSRUYgPSAncmVmJztcbmNvbnN0IFZBTFVFID0gJ3ZhbHVlJztcbmNvbnN0IFRBQkxFX09GX0NPTFVNTlMgPSAndGFibGVGcm9tQ29sdW1ucyc7XG5jb25zdCBPQkpFQ1RTID0gJ29iamVjdHMnO1xuY29uc3QgSU5UX1RZUEUgPSAnaW50JztcbmNvbnN0IERPVUJMRV9UWVBFID0gJ2RvdWJsZSc7XG5jb25zdCBOVU1CRVIgPSAnbnVtYmVyJztcblxuLy8gVHlwZS10by1oZWFwIGNvcnJlc3BvbmRlbmNlLlxuLy8gSXQgaXMgcmVxdWlyZWQgZm9yIEpTLW1vZHVsZSBnZW5lcmF0ZWQgYnkgRW1zY3JpcHRlbixcbi8vIGFuZCBpdCBpcyB1c2VkLCB3aGVuIHBhc3NpbmcgYXJyYXkgZGF0YSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG5jb25zdCBoZWFwTWFwID0ge1xuICAgICAgICAgICAgICAgICAnaW50Q29sdW1uJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbnMnOiBcIkhFQVBGMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IFwiSEVBUEYzMlwiLFxuICAgICAgICAgICAgICAgICAnaW50Q29sdW1ucyc6IFwiSEVBUDMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiBcIkhFQVAzMlwiXG4gICAgICAgICAgICAgICAgfTtcblxuLy8gVHlwZSBzaWduYXR1cmUgdG8gdHlwZWQgYXJyYXkgbWFwLlxuLy8gSXQgaXMgdXNlZCwgd2hlbiBtYW5pcHVsYXRpbmcgY29sdW1uKHMpLlxuY29uc3QgdHlwZU1hcCA9IHtcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbic6IEludDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbic6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiBJbnQzMkFycmF5LCAgXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogSW50MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogRmxvYXQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogSW50MzJBcnJheVxuICAgICAgICAgICAgICAgIH07IFxuXG4vLyBUeXBlLXRvLXNoaWZ0IG1hcC5cbi8vIEl0IGlzIHVzZWQsIHdoZW4gcGFzc2luZyBhcnJheSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3IFxuY29uc3Qgc2hpZnRNYXAgPSB7J2ludENvbHVtbic6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogMiwgXG4gICAgICAgICAgICAgICAgICAnZmxvYXRDb2x1bW5zJzogMiwgIFxuICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiAyLCAgXG4gICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6IDIsXG4gICAgICAgICAgICAgICAgICAnbmV3RmxvYXRDb2x1bW4nOiAyLFxuICAgICAgICAgICAgICAgICAgJ25ld0ludENvbHVtbic6IDJcbiAgICAgICAgICAgICAgICAgfTsgICAgICAgICBcblxuLy8gR2V0IGlucHV0IGZvciBDKystZnVuY3Rpb24uXG4vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHNwZWNpZmljYXRpb24gb2YgYXJndW1lbnRzIChhcmdzU3BlY2lmaWNhdGlvbikgJiBpbnB1dCBkYXRhIChpbnB1dFZhbHMpXG4vLyBhbmQgcmV0dXJucyBpbnB1dCB0aGF0IHdpbGwgYmUgZnVydGhlciB1c2VkIGluIGNwcC93YXNtLWZ1bmN0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGdldENwcElucHV0KGFyZ3NTcGVjaWZpY2F0aW9uLCBpbnB1dFZhbHMpIHtcbiAgICBsZXQgY3BwRnVuY0lucHV0ID0gW107XG4gICAgbGV0IHJlZjtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGNvbnN0IGtleSBpbiBhcmdzU3BlY2lmaWNhdGlvbikge1xuICAgICAgICBjb25zdCBhcmcgPSBhcmdzU3BlY2lmaWNhdGlvbltrZXldOyBcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PT0gQ0FMTF9SRVNVTFQpICAgICAgICAgICAgIFxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgLy8gaGVyZSwgd2UgY29uc2lkZXIgZWFjaCB0eXBlIG9mIGlucHV0XG4gICAgICAgIHN3aXRjaCh0eXBlKSB7ICAgICAgICAgICBcbiBcbiAgICAgICAgICAgIC8vIG51bWJlcnNcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmRhdGEgPSBpbnB1dFZhbHNbaV07XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcblxuICAgICAgICAgICAgICAgIGxldCBhcnJheTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgT0sgaWYgdHlwZSBvZiBjb2x1bW4gYW5kIHRhcmdldCB0eXBlIGNvaW5zaWRlXG4gICAgICAgICAgICAgICAgLy9hcnJheSA9IGlucHV0VmFsc1tpXS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgY29sID0gaW5wdXRWYWxzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gaGVyZSwgd2UgY2hlY2sgdHlwZXMgYW5kIHBlcmZvcm0gYW4gYXBwcm9wcmlhdGUgdHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgaWYoICggKGNvbC50eXBlID09PSBJTlRfVFlQRSkgJiYgKHR5cGUgPT09IElOVF9DT0xVTU5fVFlQRSkgKSBcbiAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgICAgIC8qaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gSU5UX0NPTFVNTl9UWVBFKSkgXG4gICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbC50eXBlID09ICdkb3VibGUnKSAmJiAodHlwZSA9PSBGTE9BVF9DT0xVTU5fVFlQRSkpKVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpOyovXG5cbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0eXBlc1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXknOiBhcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bU9mUm93cyc6IGFycmF5Lmxlbmd0aH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gbmV3IGNvbHVtbiBcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAwOyAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfUk9XU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIGlmIChhcmdzU3BlY2lmaWNhdGlvbltyZWZdLnR5cGUgPT09IE5VTV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGFbYXJnW05VTV9PRl9ST1dTXVtWQUxVRV1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyBvciBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBbXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIE9LIGlmIHR5cGUgb2YgY29sdW1ucyBhbmQgdGFyZ2V0IHR5cGUgY29pbnNpZGVcbiAgICAgICAgICAgICAgICAvL2ZvcihsZXQgY29sIG9mIGlucHV0VmFsc1tpXS50b0xpc3QoKSlcbiAgICAgICAgICAgICAgICAvLyAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBoZXJlLCB3ZSBjaGVjayB0eXBlcyBhbmQgcGVyZm9ybSBhbiBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICBmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICBpZiggKCAoY29sLnR5cGUgPT09IElOVF9UWVBFKSAmJiAodHlwZSA9PT0gSU5UX0NPTFVNTl9UWVBFKSApIFxuICAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgIGFycmF5cy5wdXNoKGNvbC5nZXRSYXdEYXRhKCkpO1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLypmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09IElOVF9DT0xVTU5fVFlQRSkpIFxuICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09IEZMT0FUX0NPTFVNTl9UWVBFKSkpXG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7Ki9cblxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXlzJzogYXJyYXlzLFxuICAgICAgICAgICAgICAgICAgICAnbnVtT2ZSb3dzJzogYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgJ251bU9mQ29sdW1ucyc6IGFycmF5cy5sZW5ndGh9O1xuXG4gICAgICAgICAgICAgICAgaSsrOyAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zIG9yIG5ldyBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgdmFsMSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHZhbDIgPSAwO1xuXG4gICAgICAgICAgICAgICAgcmVmID0gYXJnW05VTV9PRl9ST1dTXVtSRUZdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDEgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwxID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfUk9XU11bVkFMVUVdXTtcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfQ09MVU1OU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1JlZjonKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlZik7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDIgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwyID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfQ09MVU1OU11bVkFMVUVdXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsMSxcbiAgICAgICAgICAgICAgICAgICdudW1PZkNvbHVtbnMnOiB2YWwyfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICBcblxuICAgICAgICAgICAgZGVmYXVsdDogXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBUT0RPOiBzcGVjaWZ5IGJlaGF2aW91ciAgICAgICAgICAgXG4gICAgICAgICAgICB9IC8vIHN3aXRjaCAgICAgICAgXG5cbiAgICAgICAgY3BwRnVuY0lucHV0LnB1c2goYXJnKTtcbiAgICB9IC8vIGZvciBrZXlcblxuICAgIC8vY29uc29sZS5sb2coJ2NwcEZ1bmNJbnB1dDonKTtcbiAgICAvL2NvbnNvbGUubG9nKGNwcEZ1bmNJbnB1dCk7XG5cbiAgICByZXR1cm4gY3BwRnVuY0lucHV0O1xufSAvLyBnZXRDcHBJbnB1dFxuXG4vLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgZm9yIGFycmF5IGRhdGFcbmZ1bmN0aW9uIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSwgaW5wdXRzKSB7XG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHsgXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2godHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOiBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuZGF0YS5idWYgPSBtb2R1bGUuX21hbGxvYyhhcmcuZGF0YS5udW1PZlJvd3MgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOiAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTogLy8gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIGNvbHVtbnMgdGhhdCBhcmUgY3JlYXRlZFxuICAgICAgICAgICAgICAgIGFyZy5kYXRhLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKGFyZy5kYXRhLm51bU9mUm93cyAqIGFyZy5kYXRhLm51bU9mQ29sdW1ucyBcbiAgICAgICAgICAgICAgICAgICAgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gVE9ETzogcHJvY2VzcyBvdGhlciBjYXNlcyBhbmQgbWlzdGFrZXNcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICB9ICBcbiAgICB9XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygnaW5wdXRzIGFmdGVyIG1lbW9yeSBhbGxvY2F0aW9uOicpO1xuICAgIC8vY29uc29sZS5sb2coaW5wdXRzKTtcbn0gLy8gYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXJcblxuLy8gR2V0IGFycmF5IG9mIHZhbHVlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVBhcmFtcyhpbnB1dHMpIHtcbiAgICBsZXQgcGFyYW1zID0gW107XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcblxuICAgICAgICAgICAgLy8gbnVtYmVyc1xuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1uICYgbmV3IGNvbHVtblxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEuYnVmKTsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6IFxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhLmJ1Zik7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChhcmcuZGF0YS5udW1PZkNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn0gLy8gZ2V0QXJyT2ZXYXNtUGFyYW1zXG5cbi8vIEdldCBhcnJheSBvZiB0eXBlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVR5cGVzKGlucHV0cykge1xuICAgIGxldCB0eXBlcyA9IFtdO1xuXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgc3dpdGNoIChhcmcudHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufSAvLyBnZXRBcnJPZldhc21UeXBlc1xuXG4vLyBQdXQgYXJyYXkgZGF0YSB0byBidWZmZXJcbmZ1bmN0aW9uIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGxldCBzaGlmdDtcbiAgICBsZXQgaGVhcDsgICAgXG4gICAgXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNoaWZ0ID0gc2hpZnRNYXBbdHlwZV07XG4gICAgICAgICAgICAgICAgaGVhcCA9IG1vZHVsZVtoZWFwTWFwW3R5cGVdXTsgIFxuICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFyZy5kYXRhLmFycmF5LCBhcmcuZGF0YS5idWYgPj4gc2hpZnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICAgICAgICAgIGxldCBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQ29sdW1ucyA9IGFyZy5kYXRhLm51bU9mQ29sdW1ucztcbiAgICAgICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBhcmcuZGF0YS5hcnJheXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2x1bW5zOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFycmF5c1tpXSwgKGJ1ZiArIGkgKiBudW1PZlJvd3MgKiBudW1PZkJ5dGVzKSA+PiBzaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uKHMpXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn0gLy8gcHV0RGF0YVRvQnVmZmVyXG5cbi8vIEdldCBhcnJheSBkYXRhIGZyb20gYnVmZmVyLlxuZnVuY3Rpb24gZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlLCBpbnB1dHMpIHtcblxuICAgIGxldCBoZWFwO1xuICAgIGxldCBudW1PZlJvd3M7XG4gICAgbGV0IG51bU9mQ29scztcbiAgICBsZXQgbnVtT2ZCeXRlczsgICAgXG4gICAgbGV0IGJ1ZjtcblxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHsgLy8gUHJvY2VzcyBlYWNoIHR5cGUgb2YgaW5wdXRcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIGNvbHVtbihzKVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTogICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UOyAgICBcbiAgICAgICAgICAgICAgICBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqXTtcblxuICAgICAgICAgICAgICAgIGFyZy5hcnJheSA9IGFycmF5O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOiBcbiAgICAgICAgICAgICAgICBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgICAgIG51bU9mUm93cyA9IGFyZy5kYXRhLm51bU9mUm93cztcbiAgICAgICAgICAgICAgICBudW1PZkNvbHMgPSBhcmcuZGF0YS5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICAgICAgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgIFxuICAgICAgICAgICAgICAgIGJ1ZiA9IGFyZy5kYXRhLmJ1ZjtcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXlzID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgICBhcnJbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goYXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcmcuYXJyYXlzID0gYXJyYXlzO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSAgICAgICAgICAgIFxufSAvLyBnZXREYXRhRnJvbUJ1ZmZlclxuXG4vLyBDbGVhciBtZW1vcnkgYWxsb2NhdGVkIGZvciBhcnJheSBkYXRhXG5mdW5jdGlvbiBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSBcbiAgICAgICAgc3dpdGNoKGFyZy50eXBlKSB7IC8vIHByb2Nlc3MgZWFjaCB0eXBlIG9mIGlucHV0XG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBlYWNoIG5vbi1udW1iZXIgY2FzZVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIG1vZHVsZS5fZnJlZShhcmcuZGF0YS5idWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgIH0gICAgXG59IC8vIGNsZWFyTWVtb3J5Rm9yQnVmZmVyXG5cbi8vIEV4dHJhY3QgbmV3bHkgY3JlYXRlZCBkYXRhOiBuZXcgY29sdW1uKHMpIGFyZSBjcmVhdGVkXG5mdW5jdGlvbiBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbkFyZ3MsIGFyZ3NBZnRlcldhc21DYWxsKSB7XG4gICAgLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbiAgICBjb25zdCB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwID0geyduZXdGbG9hdENvbHVtbnMnOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5fTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSBcbiAgICB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaChhcmcudHlwZSl7IC8vIFByb2Nlc3MgZWFjaCB0eXBlXG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4ocylcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgbmFtZTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWUgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gKDApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBhcmcubmFtZTtcblxuICAgICAgICAgICAgICAgIGFyZy5jb2x1bW4gPSB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lLFxuICAgICAgICAgICAgICAgICAgICBhcmdzQWZ0ZXJXYXNtQ2FsbFtpXS5hcnJheSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gW107XG4gICAgICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWVzID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrID0gMTsgayA8PSBsZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goKGspLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGVsc2UgbmFtZXMgPSBhcmcubmFtZXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lc1tqXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5c1tqXSkpO1xuXG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBjb2x1bW5zO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGkrKztcbiAgICB9XG59IC8vIGV4dHJhY3ROZXdseUNyZWF0ZWREYXRhXG5cbi8vIEdldCBvdXRwdXQgZGF0YTogb3ZlcmFsbCBvdXRwdXQgaXMgY3JlYXRlZFxuZnVuY3Rpb24gZ2V0T3V0cHV0KGZ1bmNTcGVjaWZpY2F0aW9uKSB7ICBcbiAgICBsZXQgb3V0cHV0ID0gZnVuY1NwZWNpZmljYXRpb24ub3V0cHV0O1xuICAgIFxuICAgIGNvbnN0IHR5cGVUb0RhdGFGaWVsZE1hcCA9IHsnbmV3RmxvYXRDb2x1bW5zJzogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiAnY29sdW1uJ307XG5cbiAgICBzd2l0Y2gob3V0cHV0LnR5cGUpIHtcblxuICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MVU1OOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW47XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFRBQkxFX09GX0NPTFVNTlM6XG4gICAgICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW5zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT0JKRUNUUzpcbiAgICAgICAgICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1c2ggZGF0YSBvZiB0aGUgcmVxdWlyZWQgYXJndW1lbnRzXG4gICAgICAgICAgICBmb3IobGV0IG5hbWUgb2Ygb3V0cHV0LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHNbbmFtZV07XG4gICAgICAgICAgICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ1t0eXBlVG9EYXRhRmllbGRNYXBbYXJnLnR5cGVdXSk7XG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICByZXR1cm4gYXJyYXlUb1JldHVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbn0gLy8gZ2V0T3V0cHV0XG5cbi8vIENsZWFyIG5ld2x5IGNyZWF0ZWQgZGF0YSBmaWVsZHMgKG5ldyBjb2x1bW4ocykpXG5mdW5jdGlvbiBjbGVhck5ld2x5Q3JlYXRlZERhdGEoZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7IFxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6XG4gICAgICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICAgICAgY2FzZSBET1VCTEVfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuY29sdW1uID0gbnVsbDsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufSAvLyBjbGVhck5ld2x5Q3JlYXRlZERhdGFcblxuLy8gVEhFIE1BSU4gRlVOQ1RJT046IGEgd3JhcHBlciBmb3IgQysrLWZ1bmN0aW9uIGNhbGxcbmV4cG9ydCBmdW5jdGlvbiBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgY3BwRnVuY05hbWUsIHJldHVyblR5cGUpIHtcbiAgICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGFycmF5cyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIHB1dCBkYXRhIChqdXN0IGNvbHVtbihzKSkgdG8gYWxsb2NhdGVkIGJ1ZmZlcnNcbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBDKystZnVuY3Rpb25cbiAgICBsZXQgcGFyYW1zID0gZ2V0QXJyT2ZXYXNtUGFyYW1zKGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygncGFyYW1zOicpO1xuICAgIC8vY29uc29sZS5sb2cocGFyYW1zKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzJyB0eXBlcyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgbGV0IHR5cGVzID0gZ2V0QXJyT2ZXYXNtVHlwZXMoYXJncyk7XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygndHlwZXM6Jyk7XG4gICAgLy9jb25zb2xlLmxvZyh0eXBlcyk7XG5cbiAgICAvLyBjYWxsIHdhc20tZnVuY3Rpb25cbiAgICBsZXQgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNwcEZ1bmNOYW1lLCByZXR1cm5UeXBlLCB0eXBlcywgcGFyYW1zKTtcbiAgICBcbiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7XG5cbiAgICAvLyBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgKGp1c3QgY29sdW1uKHMpKVxuICAgIGdldERhdGFGcm9tQnVmZmVyKG1vZHVsZSwgYXJncyk7ICAgICAgICBcblxuICAgIC8vIGNsZWFyIG1lbW9yeSB0aGF0IHdhcyBwcmV2aW91c2VseSBhbGxvY2F0ZWRcbiAgICBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygnZG9uZScpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0IHRoZSByZXF1aXJlZCBvdXRwdXQuXG4vLyBJdCB0YWtlcyBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZGF0YSBjb21wdXRlZFxuLy8gYW5kIGV4dHJhY3RzIHRoZSByZXF1aXJlZCByZXN1bHRzLlxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3VsdChmdW5jU3BlY2lmaWNhdGlvbiwgZGF0YUZyb21XZWJXb3JrZXIpIHtcbiAgICBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMuX2NhbGxSZXN1bHQgPSBkYXRhRnJvbVdlYldvcmtlci5jYWxsUmVzdWx0OyAgXG5cbiAgICBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMsIGRhdGFGcm9tV2ViV29ya2VyLmFyZ3MpOyAgICBcblxuICAgIGxldCBvdXRQdXQgPSBnZXRPdXRwdXQoZnVuY1NwZWNpZmljYXRpb24pO1xuXG4gICAgLy8gQmVsb3csIHdlIHJlbW92ZSBuZXdseSBjcmVhdGVkIGNvbHVtbihzKSwgd2hpY2ggYXJlIGNyZWF0ZWQgYXQgdGhlIGV4dHJhY3Rpb24tc3RlcC5cbiAgICAvLyBJdCBpcyBlc3BlY2lhbGx5IHJlcXVpcmVkLCB3aGVuIG11bHRpcGxlIGNhbGwgb2Ygd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VyLlxuICAgIGNsZWFyTmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG91dFB1dDtcbn0iXSwibmFtZXMiOlsiX3NjcmlwdERpciIsImV4cG9ydEVEQSIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInVuZGVmaW5lZCIsInJlYWR5UHJvbWlzZVJlc29sdmUiLCJyZWFkeVByb21pc2VSZWplY3QiLCJNb2R1bGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRCaW5hcnkiLCJtb2R1bGVPdmVycmlkZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJhcmd1bWVudHNfIiwiRU5WSVJPTk1FTlRfSVNfV0VCIiwid2luZG93IiwiRU5WSVJPTk1FTlRfSVNfV09SS0VSIiwiaW1wb3J0U2NyaXB0cyIsInNjcmlwdERpcmVjdG9yeSIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJzZWxmIiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInN1YnN0ciIsInJlcGxhY2UiLCJsYXN0SW5kZXhPZiIsInVybCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInJlc3BvbnNlVHlwZSIsInNlbmQiLCJVaW50OEFycmF5IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiYmluZCIsIndhc21CaW5hcnkiLCJ3YXNtTWVtb3J5IiwiZXJyIiwid2FybiIsIldlYkFzc2VtYmx5IiwiYWJvcnQiLCJidWZmZXIiLCJIRUFQOCIsIkhFQVBVOCIsIkhFQVAzMiIsIkhFQVBVMzIiLCJBQk9SVCIsIlVURjhEZWNvZGVyIiwiVGV4dERlY29kZXIiLCJVVEY4VG9TdHJpbmciLCJwdHIiLCJtYXhCeXRlc1RvUmVhZCIsImhlYXBPckFycmF5IiwiaWR4IiwiZW5kSWR4IiwiZW5kUHRyIiwiZGVjb2RlIiwic3ViYXJyYXkiLCJzdHIiLCJ1MCIsInUxIiwidTIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaCIsIlVURjhBcnJheVRvU3RyaW5nIiwidXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MiLCJidWYiLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJfX0FUUFJFUlVOX18iLCJfX0FUSU5JVF9fIiwiX19BVFBPU1RSVU5fXyIsInJ1bkRlcGVuZGVuY2llcyIsInJ1bkRlcGVuZGVuY3lXYXRjaGVyIiwiZGVwZW5kZW5jaWVzRnVsZmlsbGVkIiwid2hhdCIsImUiLCJSdW50aW1lRXJyb3IiLCJ3YXNtQmluYXJ5RmlsZSIsInBhdGgiLCJpc0RhdGFVUkkiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJnZXRCaW5hcnkiLCJmaWxlIiwiY2FsbFJ1bnRpbWVDYWxsYmFja3MiLCJjYWxsYmFja3MiLCJsZW5ndGgiLCJzaGlmdCIsIkV4Y2VwdGlvbkluZm8iLCJleGNQdHIiLCJ0aGlzIiwic2V0X3R5cGUiLCJ0eXBlIiwiZ2V0X3R5cGUiLCJzZXRfZGVzdHJ1Y3RvciIsImRlc3RydWN0b3IiLCJnZXRfZGVzdHJ1Y3RvciIsInNldF9yZWZjb3VudCIsInJlZmNvdW50Iiwic2V0X2NhdWdodCIsImNhdWdodCIsImdldF9jYXVnaHQiLCJzZXRfcmV0aHJvd24iLCJyZXRocm93biIsImdldF9yZXRocm93biIsImluaXQiLCJzZXRfYWRqdXN0ZWRfcHRyIiwiYWRkX3JlZiIsInZhbHVlIiwicmVsZWFzZV9yZWYiLCJwcmV2IiwiYWRqdXN0ZWRQdHIiLCJnZXRfYWRqdXN0ZWRfcHRyIiwiZ2V0X2V4Y2VwdGlvbl9wdHIiLCJfX19jeGFfaXNfcG9pbnRlcl90eXBlIiwiYWRqdXN0ZWQiLCJlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyIiwic2l6ZSIsImdyb3ciLCJieXRlTGVuZ3RoIiwiZ2V0Q0Z1bmMiLCJpZGVudCIsImNjYWxsIiwicmV0dXJuVHlwZSIsImFyZ1R5cGVzIiwiYXJncyIsIm9wdHMiLCJ0b0MiLCJyZXQiLCJsZW4iLCJvdXRQdHIiLCJtYXhCeXRlc1RvV3JpdGUiLCJoZWFwIiwib3V0SWR4IiwiaSIsInUiLCJjaGFyQ29kZUF0Iiwic3RyaW5nVG9VVEY4QXJyYXkiLCJzdHJpbmdUb1VURjgiLCJzdGFja0FsbG9jIiwiYXJyIiwiYXJyYXkiLCJzZXQiLCJ3cml0ZUFycmF5VG9NZW1vcnkiLCJmdW5jIiwiY0FyZ3MiLCJzdGFjayIsImNvbnZlcnRlciIsInN0YWNrU2F2ZSIsImFwcGx5Iiwic3RhY2tSZXN0b3JlIiwiQm9vbGVhbiIsImNvbnZlcnRSZXR1cm5WYWx1ZSIsIm9uRG9uZSIsImNhbGxlZFJ1biIsImFzbUxpYnJhcnlBcmciLCJjb25kaXRpb24iLCJsaW5lIiwiZGVzdCIsIm51bSIsImNvcHlXaXRoaW4iLCJyZXF1ZXN0ZWRTaXplIiwieCIsIm9sZFNpemUiLCJtYXhIZWFwU2l6ZSIsImN1dERvd24iLCJvdmVyR3Jvd25IZWFwU2l6ZSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJpbmZvIiwicmVjZWl2ZUluc3RhbmNlIiwiaW5zdGFuY2UiLCJtb2R1bGUiLCJjYiIsImV4cG9ydHMiLCJ1bnNoaWZ0IiwiaWQiLCJjbGVhckludGVydmFsIiwiY2FsbGJhY2siLCJyZW1vdmVSdW5EZXBlbmRlbmN5IiwicmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQiLCJyZXN1bHQiLCJpbnN0YW50aWF0ZUFycmF5QnVmZmVyIiwicmVjZWl2ZXIiLCJmZXRjaCIsInRoZW4iLCJVUkwiLCJjYXRjaCIsImJpbmFyeSIsImluc3RhbnRpYXRlIiwicmVhc29uIiwiaW5zdGFudGlhdGVTdHJlYW1pbmciLCJjcmVhdGVXYXNtIiwiYXJndW1lbnRzIiwicnVuIiwiZG9SdW4iLCJwb3N0UnVuIiwicHJlUnVuIiwic2V0VGltZW91dCIsIm51bWVyaWNBcmdzIiwiZXZlcnkiLCJydW5DYWxsZXIiLCJwb3AiLCJyZWFkeSIsImRlZmluZSIsIk5VTV9UWVBFIiwiRkxPQVRfQ09MVU1OX1RZUEUiLCJJTlRfQ09MVU1OX1RZUEUiLCJGTE9BVF9DT0xVTU5TX1RZUEUiLCJORVdfRkxPQVRfQ09MVU1OU19UWVBFIiwiSU5UX0NPTFVNTlNfVFlQRSIsIk5FV19JTlRfQ09MVU1OU19UWVBFIiwiTkVXX0ZMT0FUX0NPTFVNTl9UWVBFIiwiTkVXX0lOVF9DT0xVTU5fVFlQRSIsIklOVF9UWVBFIiwiRE9VQkxFX1RZUEUiLCJOVU1CRVIiLCJoZWFwTWFwIiwidHlwZU1hcCIsInNoaWZ0TWFwIiwiY3BwV3JhcHBlciIsImNwcEZ1bmNOYW1lIiwiaW5wdXRzIiwiYXJnIiwiZGF0YSIsIl9tYWxsb2MiLCJudW1PZlJvd3MiLCJCWVRFU19QRVJfRUxFTUVOVCIsIm51bU9mQ29sdW1ucyIsImFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyIiwibnVtT2ZCeXRlcyIsImFycmF5cyIsInB1dERhdGFUb0J1ZmZlciIsInBhcmFtcyIsInB1c2giLCJnZXRBcnJPZldhc21QYXJhbXMiLCJ0eXBlcyIsImdldEFyck9mV2FzbVR5cGVzIiwibnVtT2ZDb2xzIiwiaiIsImdldERhdGFGcm9tQnVmZmVyIiwiX2ZyZWUiLCJjbGVhck1lbW9yeUZvckJ1ZmZlciJdLCJzb3VyY2VSb290IjoiIn0=
1
+ "use strict";(self.webpackChunkeda=self.webpackChunkeda||[]).push([[902],{6845:(t,n,e)=>{e.d(n,{P:()=>a}),t=e.hmd(t);var r,a=(r="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(t){var n,a,o=void 0!==(t=t||{})?t:{};o.ready=new Promise((function(t,e){n=t,a=e}));var s,i=Object.assign({},o),u=[],c="object"==typeof window,f="function"==typeof importScripts,l=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(c||f)&&(f?l=self.location.href:"undefined"!=typeof document&&document.currentScript&&(l=document.currentScript.src),r&&(l=r),l=0!==l.indexOf("blob:")?l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):"",f&&(s=t=>{var n=new XMLHttpRequest;return n.open("GET",t,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)})),o.print||console.log.bind(console);var p,m,h=o.printErr||console.warn.bind(console);Object.assign(o,i),i=null,o.arguments&&(u=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(p=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&F("no native wasm support detected");var d,y,_,w,b,A=!1,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function C(t,n){return t?function(t,n,e){for(var r=n+e,a=n;t[a]&&!(a>=r);)++a;if(a-n>16&&t.buffer&&g)return g.decode(t.subarray(n,a));for(var o="";n<a;){var s=t[n++];if(128&s){var i=63&t[n++];if(192!=(224&s)){var u=63&t[n++];if((s=224==(240&s)?(15&s)<<12|i<<6|u:(7&s)<<18|i<<12|u<<6|63&t[n++])<65536)o+=String.fromCharCode(s);else{var c=s-65536;o+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else o+=String.fromCharCode((31&s)<<6|i)}else o+=String.fromCharCode(s)}return o}(_,t,n):""}function v(t){d=t,o.HEAP8=y=new Int8Array(t),o.HEAP16=new Int16Array(t),o.HEAP32=w=new Int32Array(t),o.HEAPU8=_=new Uint8Array(t),o.HEAPU16=new Uint16Array(t),o.HEAPU32=b=new Uint32Array(t),o.HEAPF32=new Float32Array(t),o.HEAPF64=new Float64Array(t)}o.INITIAL_MEMORY;var E=[],R=[],S=[],P=0,k=null,I=null;function F(t){o.onAbort&&o.onAbort(t),h(t="Aborted("+t+")"),A=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw a(n),n}var L,x;function M(t){return t.startsWith("data:application/octet-stream;base64,")}function O(t){try{if(t==L&&p)return new Uint8Array(p);if(s)return s(t);throw"both async and sync fetching of the wasm failed"}catch(t){F(t)}}function T(t){for(;t.length>0;)t.shift()(o)}function H(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){b[this.ptr+4>>2]=t},this.get_type=function(){return b[this.ptr+4>>2]},this.set_destructor=function(t){b[this.ptr+8>>2]=t},this.get_destructor=function(){return b[this.ptr+8>>2]},this.set_refcount=function(t){w[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,y[this.ptr+12>>0]=t},this.get_caught=function(){return 0!=y[this.ptr+12>>0]},this.set_rethrown=function(t){t=t?1:0,y[this.ptr+13>>0]=t},this.get_rethrown=function(){return 0!=y[this.ptr+13>>0]},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=w[this.ptr>>2];w[this.ptr>>2]=t+1},this.release_ref=function(){var t=w[this.ptr>>2];return w[this.ptr>>2]=t-1,1===t},this.set_adjusted_ptr=function(t){b[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return b[this.ptr+16>>2]},this.get_exception_ptr=function(){if(V(this.get_type()))return b[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function D(t){try{return m.grow(t-d.byteLength+65535>>>16),v(m.buffer),1}catch(t){}}function j(t){return o["_"+t]}function B(t,n,e,r,a){var o={string:t=>{var n=0;if(null!=t&&0!==t){var e=1+(t.length<<2);!function(t,n,e){!function(t,n,e,r){if(!(r>0))return 0;for(var a=e+r-1,o=0;o<t.length;++o){var s=t.charCodeAt(o);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++o)),s<=127){if(e>=a)break;n[e++]=s}else if(s<=2047){if(e+1>=a)break;n[e++]=192|s>>6,n[e++]=128|63&s}else if(s<=65535){if(e+2>=a)break;n[e++]=224|s>>12,n[e++]=128|s>>6&63,n[e++]=128|63&s}else{if(e+3>=a)break;n[e++]=240|s>>18,n[e++]=128|s>>12&63,n[e++]=128|s>>6&63,n[e++]=128|63&s}}n[e]=0}(t,_,n,e)}(t,n=q(e),e)}return n},array:t=>{var n=q(t.length);return function(t,n){y.set(t,n)}(t,n),n}},s=j(t),i=[],u=0;if(r)for(var c=0;c<r.length;c++){var f=o[e[c]];f?(0===u&&(u=z()),i[c]=f(r[c])):i[c]=r[c]}var l=s.apply(null,i);return function(t){return 0!==u&&N(u),function(t){return"string"===n?C(t):"boolean"===n?Boolean(t):t}(t)}(l)}M(L="EDA.wasm")||(x=L,L=o.locateFile?o.locateFile(x,l):l+x);var W,U={a:function(t,n,e,r){F("Assertion failed: "+C(t)+", at: "+[n?C(n):"unknown filename",e,r?C(r):"unknown function"])},b:function(t,n,e){throw new H(t).init(n,e),t},d:function(t,n,e){_.copyWithin(t,n,n+e)},c:function(t){var n,e=_.length,r=2147483648;if((t>>>=0)>r)return!1;for(var a=1;a<=4;a*=2){var o=e*(1+.2/a);if(o=Math.min(o,t+100663296),D(Math.min(r,(n=Math.max(t,o))+(65536-n%65536)%65536)))return!0}return!1}},z=(function(){var t={a:U};function n(t,n){var e,r=t.exports;o.asm=r,v((m=o.asm.e).buffer),o.asm.i,e=o.asm.f,R.unshift(e),function(t){if(P--,o.monitorRunDependencies&&o.monitorRunDependencies(P),0==P&&(null!==k&&(clearInterval(k),k=null),I)){var n=I;I=null,n()}}()}function r(t){n(t.instance)}function s(n){return(p||!c&&!f||"function"!=typeof fetch?Promise.resolve().then((function(){return O(L)})):fetch(new URL(e(1328),e.b)).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+L+"'";return t.arrayBuffer()})).catch((function(){return O(L)}))).then((function(n){return WebAssembly.instantiate(n,t)})).then((function(t){return t})).then(n,(function(t){h("failed to asynchronously prepare wasm: "+t),F(t)}))}if(P++,o.monitorRunDependencies&&o.monitorRunDependencies(P),o.instantiateWasm)try{return o.instantiateWasm(t,n)}catch(t){h("Module.instantiateWasm callback failed with error: "+t),a(t)}(p||"function"!=typeof WebAssembly.instantiateStreaming||M(L)||"function"!=typeof fetch?s(r):fetch(new URL(e(1328),e.b)).then((function(n){return WebAssembly.instantiateStreaming(n,t).then(r,(function(t){return h("wasm streaming compile failed: "+t),h("falling back to ArrayBuffer instantiation"),s(r)}))}))).catch(a)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.f).apply(null,arguments)},o._principalComponentAnalysis=function(){return(o._principalComponentAnalysis=o.asm.g).apply(null,arguments)},o._error=function(){return(o._error=o.asm.h).apply(null,arguments)},o._free=function(){return(o._free=o.asm.j).apply(null,arguments)},o._malloc=function(){return(o._malloc=o.asm.k).apply(null,arguments)},o._partialLeastSquareRegression=function(){return(o._partialLeastSquareRegression=o.asm.l).apply(null,arguments)},o._generateDataset=function(){return(o._generateDataset=o.asm.m).apply(null,arguments)},o._normalizeDataset=function(){return(o._normalizeDataset=o.asm.n).apply(null,arguments)},o._trainLSSVM=function(){return(o._trainLSSVM=o.asm.o).apply(null,arguments)},o._predictByLSSVM=function(){return(o._predictByLSSVM=o.asm.p).apply(null,arguments)},o._trainAndAnalyzeLSSVM=function(){return(o._trainAndAnalyzeLSSVM=o.asm.q).apply(null,arguments)},o._fitLinearRegressionParamsWithDataNormalizing=function(){return(o._fitLinearRegressionParamsWithDataNormalizing=o.asm.r).apply(null,arguments)},o._fitLinearRegressionParams=function(){return(o._fitLinearRegressionParams=o.asm.s).apply(null,arguments)},o.stackSave=function(){return(z=o.stackSave=o.asm.t).apply(null,arguments)}),N=o.stackRestore=function(){return(N=o.stackRestore=o.asm.u).apply(null,arguments)},q=o.stackAlloc=function(){return(q=o.stackAlloc=o.asm.v).apply(null,arguments)},V=o.___cxa_is_pointer_type=function(){return(V=o.___cxa_is_pointer_type=o.asm.w).apply(null,arguments)};function Y(t){function e(){W||(W=!0,o.calledRun=!0,A||(T(R),n(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)t=o.postRun.shift(),S.unshift(t);var t;T(S)}()))}t=t||u,P>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)t=o.preRun.shift(),E.unshift(t);var t;T(E)}(),P>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(o.ccall=B,o.cwrap=function(t,n,e,r){var a=(e=e||[]).every((t=>"number"===t||"boolean"===t));return"string"!==n&&a&&!r?j(t):function(){return B(t,n,e,arguments)}},I=function t(){W||Y(),W||(I=t)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Y(),t.ready});"object"==typeof exports?t.exports=a:"function"==typeof define&&e.amdO?define([],(function(){return a})):"object"==typeof exports&&(exports.exportEDA=a)},2086:(t,n,e)=>{e.d(n,{Gz:()=>w});const r="num",a="floatColumn",o="intColumn",s="floatColumns",i="newFloatColumns",u="intColumns",c="newIntColumns",f="newFloatColumn",l="newIntColumn",p="int",m="double",h="number",d={intColumn:"HEAP32",floatColumn:"HEAPF32",floatColumns:"HEAPF32",newFloatColumns:"HEAPF32",intColumns:"HEAP32",newIntColumns:"HEAP32",newFloatColumn:"HEAPF32",newIntColumn:"HEAP32"},y={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array},_={intColumn:2,floatColumn:2,floatColumns:2,newFloatColumns:2,intColumns:2,newIntColumns:2,newFloatColumn:2,newIntColumn:2};function w(t,n,e,w){!function(t,n){for(const e of n){const n=e.type;switch(n){case r:case p:case m:break;case o:case a:case f:case l:e.data.buf=t._malloc(e.data.numOfRows*y[n].BYTES_PER_ELEMENT);break;case u:case c:case s:case i:e.data.buf=t._malloc(e.data.numOfRows*e.data.numOfColumns*y[n].BYTES_PER_ELEMENT)}}}(t,n),function(t,n){let e,i;for(const c of n){const n=c.type;switch(n){case r:case p:case m:break;case o:case a:e=_[n],i=t[d[n]],i.set(c.data.array,c.data.buf>>e);break;case u:case s:e=_[n],i=t[d[n]];let f=y[n].BYTES_PER_ELEMENT,l=c.data.buf,h=c.data.numOfColumns,w=c.data.numOfRows,b=c.data.arrays;for(let t=0;t<h;t++)i.set(b[t],l+t*w*f>>e)}}}(t,n);let b=function(t){let n=[];for(const e of t)switch(e.type){case r:case p:case m:n.push(e.data);break;case o:case a:case f:case l:n.push(e.data.buf),n.push(e.data.numOfRows);break;case u:case c:case s:case i:n.push(e.data.buf),n.push(e.data.numOfRows),n.push(e.data.numOfColumns)}return n}(n),A=function(t){let n=[];for(const e of t)switch(e.type){case r:case p:case m:n.push(h);break;case o:case a:case f:case l:n.push(h),n.push(h);break;case u:case c:case s:case i:n.push(h),n.push(h),n.push(h)}return n}(n),g=t.ccall(e,w,A,b);return function(t,n){let e,h,_,w,b;for(const A of n){const n=A.type;switch(n){case r:case p:case m:case o:case a:case s:case u:break;case f:case l:e=t[d[n]],h=A.data.numOfRows,w=y[n].BYTES_PER_ELEMENT,b=A.data.buf;let g=new y[n](h);for(let t=0;t<h;t++)g[t]=e[b/w+t];A.array=g;break;case c:case i:e=t[d[n]],h=A.data.numOfRows,_=A.data.numOfColumns,w=y[n].BYTES_PER_ELEMENT,b=A.data.buf;let C=[];for(let t=0;t<_;t++){let r=new y[n](h);for(let n=0;n<h;n++)r[n]=e[b/w+n+t*h];C.push(r)}A.arrays=C}}}(t,n),function(t,n){for(const e of n)switch(e.type){case r:case p:case m:break;case o:case a:case u:case c:case s:case i:case f:case l:t._free(e.data.buf)}}(t,n),g}},1328:(t,n,e)=>{t.exports=e.p+"05e5e0770f54f07e9474.wasm"}}]);
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQU1tRyxHQUFLNUcsRUFBS3hFLEVBQU0ySyxFQUFhUyxHQUV2Q2hCLEVBQUluRixNQUFRQSxFQUVaLE1BR0osS0FBS3VFLEVBQ0wsS0FBS0YsRUFDRDlFLEVBQU95QyxFQUFPNkMsRUFBUTlILElBQ3RCdUksRUFBWUgsRUFBSUMsS0FBS0UsVUFDckJZLEVBQVlmLEVBQUlDLEtBQUtJLGFBQ3JCRSxFQUFhWixFQUFRL0gsR0FBTXdJLGtCQUMzQnhLLEVBQU1vSyxFQUFJQyxLQUFLckssSUFDZixJQUFJNEssRUFBUyxHQUViLElBQUksSUFBSWxHLEVBQUksRUFBR0EsRUFBSXlHLEVBQVd6RyxJQUFLLENBQ2hDLElBQUlNLEVBQU0sSUFBSStFLEVBQVEvSCxHQUFNdUksR0FFNUIsSUFBSSxJQUFJYSxFQUFJLEVBQUdBLEVBQUliLEVBQVdhLElBQzNCcEcsRUFBSW9HLEdBQUs1RyxFQUFLeEUsRUFBTTJLLEVBQWFTLEVBQUkxRyxFQUFJNkYsR0FFNUNLLEVBQU9HLEtBQUsvRixFQUNmLENBRUFvRixFQUFJUSxPQUFTQSxFQVF6QixDQUNKLENBZ05JUyxDQUFrQnBFLEVBQVFoRCxHQTdNOUIsU0FBOEJnRCxFQUFRa0QsR0FDbEMsSUFBSSxNQUFNQyxLQUFPRCxFQUNiLE9BQU9DLEVBQUlwSSxNQUdQLEtBQUtrSCxFQUNMLEtBQUtTLEVBQ0wsS0FBS0MsRUFDRCxNQUdKLEtBQUtSLEVBQ0wsS0FBS0QsRUFDTCxLQUFLSSxFQUNMLEtBQUtDLEVBQ0wsS0FBS0gsRUFDTCxLQUFLQyxFQUNMLEtBQUtHLEVBQ0wsS0FBS0MsRUFDRHpDLEVBQU9xRSxNQUFNbEIsRUFBSUMsS0FBS3JLLEtBT3RDLENBc0xJdUwsQ0FBcUJ0RSxFQUFRaEQsR0FJdEJ5RCxDQUNYLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi93YXNtL0VEQUZvcldlYldvcmtlci5qcyIsIndlYnBhY2s6Ly9lZGEvLi93YXNtL2NhbGxXYXNtRm9yV2ViV29ya2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHZhciBleHBvcnRFREEgPSAoKCkgPT4ge1xuICB2YXIgX3NjcmlwdERpciA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCA/IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIDogdW5kZWZpbmVkO1xuICBcbiAgcmV0dXJuIChcbmZ1bmN0aW9uKGV4cG9ydEVEQSkge1xuICBleHBvcnRFREEgPSBleHBvcnRFREEgfHwge307XG5cbnZhciBNb2R1bGU9dHlwZW9mIGV4cG9ydEVEQSE9XCJ1bmRlZmluZWRcIj9leHBvcnRFREE6e307dmFyIHJlYWR5UHJvbWlzZVJlc29sdmUscmVhZHlQcm9taXNlUmVqZWN0O01vZHVsZVtcInJlYWR5XCJdPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtyZWFkeVByb21pc2VSZXNvbHZlPXJlc29sdmU7cmVhZHlQcm9taXNlUmVqZWN0PXJlamVjdH0pO3ZhciBtb2R1bGVPdmVycmlkZXM9T2JqZWN0LmFzc2lnbih7fSxNb2R1bGUpO3ZhciBhcmd1bWVudHNfPVtdO3ZhciB0aGlzUHJvZ3JhbT1cIi4vdGhpcy5wcm9ncmFtXCI7dmFyIHF1aXRfPShzdGF0dXMsdG9UaHJvdyk9Pnt0aHJvdyB0b1Rocm93fTt2YXIgRU5WSVJPTk1FTlRfSVNfV0VCPXR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCI7dmFyIEVOVklST05NRU5UX0lTX1dPUktFUj10eXBlb2YgaW1wb3J0U2NyaXB0cz09XCJmdW5jdGlvblwiO3ZhciBFTlZJUk9OTUVOVF9JU19OT0RFPXR5cGVvZiBwcm9jZXNzPT1cIm9iamVjdFwiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09XCJvYmplY3RcIiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZT09XCJzdHJpbmdcIjt2YXIgc2NyaXB0RGlyZWN0b3J5PVwiXCI7ZnVuY3Rpb24gbG9jYXRlRmlsZShwYXRoKXtpZihNb2R1bGVbXCJsb2NhdGVGaWxlXCJdKXtyZXR1cm4gTW9kdWxlW1wibG9jYXRlRmlsZVwiXShwYXRoLHNjcmlwdERpcmVjdG9yeSl9cmV0dXJuIHNjcmlwdERpcmVjdG9yeStwYXRofXZhciByZWFkXyxyZWFkQXN5bmMscmVhZEJpbmFyeSxzZXRXaW5kb3dUaXRsZTtpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtzY3JpcHREaXJlY3Rvcnk9c2VsZi5sb2NhdGlvbi5ocmVmfWVsc2UgaWYodHlwZW9mIGRvY3VtZW50IT1cInVuZGVmaW5lZFwiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0KXtzY3JpcHREaXJlY3Rvcnk9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmN9aWYoX3NjcmlwdERpcil7c2NyaXB0RGlyZWN0b3J5PV9zY3JpcHREaXJ9aWYoc2NyaXB0RGlyZWN0b3J5LmluZGV4T2YoXCJibG9iOlwiKSE9PTApe3NjcmlwdERpcmVjdG9yeT1zY3JpcHREaXJlY3Rvcnkuc3Vic3RyKDAsc2NyaXB0RGlyZWN0b3J5LnJlcGxhY2UoL1s/I10uKi8sXCJcIikubGFzdEluZGV4T2YoXCIvXCIpKzEpfWVsc2V7c2NyaXB0RGlyZWN0b3J5PVwiXCJ9e3JlYWRfPXVybD0+e3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKFwiR0VUXCIsdXJsLGZhbHNlKTt4aHIuc2VuZChudWxsKTtyZXR1cm4geGhyLnJlc3BvbnNlVGV4dH07aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtyZWFkQmluYXJ5PXVybD0+e3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKFwiR0VUXCIsdXJsLGZhbHNlKTt4aHIucmVzcG9uc2VUeXBlPVwiYXJyYXlidWZmZXJcIjt4aHIuc2VuZChudWxsKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeGhyLnJlc3BvbnNlKX19cmVhZEFzeW5jPSh1cmwsb25sb2FkLG9uZXJyb3IpPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oXCJHRVRcIix1cmwsdHJ1ZSk7eGhyLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCI7eGhyLm9ubG9hZD0oKT0+e2lmKHhoci5zdGF0dXM9PTIwMHx8eGhyLnN0YXR1cz09MCYmeGhyLnJlc3BvbnNlKXtvbmxvYWQoeGhyLnJlc3BvbnNlKTtyZXR1cm59b25lcnJvcigpfTt4aHIub25lcnJvcj1vbmVycm9yO3hoci5zZW5kKG51bGwpfX1zZXRXaW5kb3dUaXRsZT10aXRsZT0+ZG9jdW1lbnQudGl0bGU9dGl0bGV9ZWxzZXt9dmFyIG91dD1Nb2R1bGVbXCJwcmludFwiXXx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKTt2YXIgZXJyPU1vZHVsZVtcInByaW50RXJyXCJdfHxjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKE1vZHVsZSxtb2R1bGVPdmVycmlkZXMpO21vZHVsZU92ZXJyaWRlcz1udWxsO2lmKE1vZHVsZVtcImFyZ3VtZW50c1wiXSlhcmd1bWVudHNfPU1vZHVsZVtcImFyZ3VtZW50c1wiXTtpZihNb2R1bGVbXCJ0aGlzUHJvZ3JhbVwiXSl0aGlzUHJvZ3JhbT1Nb2R1bGVbXCJ0aGlzUHJvZ3JhbVwiXTtpZihNb2R1bGVbXCJxdWl0XCJdKXF1aXRfPU1vZHVsZVtcInF1aXRcIl07dmFyIHdhc21CaW5hcnk7aWYoTW9kdWxlW1wid2FzbUJpbmFyeVwiXSl3YXNtQmluYXJ5PU1vZHVsZVtcIndhc21CaW5hcnlcIl07dmFyIG5vRXhpdFJ1bnRpbWU9TW9kdWxlW1wibm9FeGl0UnVudGltZVwiXXx8dHJ1ZTtpZih0eXBlb2YgV2ViQXNzZW1ibHkhPVwib2JqZWN0XCIpe2Fib3J0KFwibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZFwiKX12YXIgd2FzbU1lbW9yeTt2YXIgQUJPUlQ9ZmFsc2U7dmFyIEVYSVRTVEFUVVM7dmFyIFVURjhEZWNvZGVyPXR5cGVvZiBUZXh0RGVjb2RlciE9XCJ1bmRlZmluZWRcIj9uZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpOnVuZGVmaW5lZDtmdW5jdGlvbiBVVEY4QXJyYXlUb1N0cmluZyhoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQpe3ZhciBlbmRJZHg9aWR4K21heEJ5dGVzVG9SZWFkO3ZhciBlbmRQdHI9aWR4O3doaWxlKGhlYXBPckFycmF5W2VuZFB0cl0mJiEoZW5kUHRyPj1lbmRJZHgpKSsrZW5kUHRyO2lmKGVuZFB0ci1pZHg+MTYmJmhlYXBPckFycmF5LmJ1ZmZlciYmVVRGOERlY29kZXIpe3JldHVybiBVVEY4RGVjb2Rlci5kZWNvZGUoaGVhcE9yQXJyYXkuc3ViYXJyYXkoaWR4LGVuZFB0cikpfXZhciBzdHI9XCJcIjt3aGlsZShpZHg8ZW5kUHRyKXt2YXIgdTA9aGVhcE9yQXJyYXlbaWR4KytdO2lmKCEodTAmMTI4KSl7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTtjb250aW51ZX12YXIgdTE9aGVhcE9yQXJyYXlbaWR4KytdJjYzO2lmKCh1MCYyMjQpPT0xOTIpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSgodTAmMzEpPDw2fHUxKTtjb250aW51ZX12YXIgdTI9aGVhcE9yQXJyYXlbaWR4KytdJjYzO2lmKCh1MCYyNDApPT0yMjQpe3UwPSh1MCYxNSk8PDEyfHUxPDw2fHUyfWVsc2V7dTA9KHUwJjcpPDwxOHx1MTw8MTJ8dTI8PDZ8aGVhcE9yQXJyYXlbaWR4KytdJjYzfWlmKHUwPDY1NTM2KXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodTApfWVsc2V7dmFyIGNoPXUwLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9fXJldHVybiBzdHJ9ZnVuY3Rpb24gVVRGOFRvU3RyaW5nKHB0cixtYXhCeXRlc1RvUmVhZCl7cmV0dXJuIHB0cj9VVEY4QXJyYXlUb1N0cmluZyhIRUFQVTgscHRyLG1heEJ5dGVzVG9SZWFkKTpcIlwifWZ1bmN0aW9uIHN0cmluZ1RvVVRGOEFycmF5KHN0cixoZWFwLG91dElkeCxtYXhCeXRlc1RvV3JpdGUpe2lmKCEobWF4Qnl0ZXNUb1dyaXRlPjApKXJldHVybiAwO3ZhciBzdGFydElkeD1vdXRJZHg7dmFyIGVuZElkeD1vdXRJZHgrbWF4Qnl0ZXNUb1dyaXRlLTE7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoOysraSl7dmFyIHU9c3RyLmNoYXJDb2RlQXQoaSk7aWYodT49NTUyOTYmJnU8PTU3MzQzKXt2YXIgdTE9c3RyLmNoYXJDb2RlQXQoKytpKTt1PTY1NTM2KygodSYxMDIzKTw8MTApfHUxJjEwMjN9aWYodTw9MTI3KXtpZihvdXRJZHg+PWVuZElkeClicmVhaztoZWFwW291dElkeCsrXT11fWVsc2UgaWYodTw9MjA0Nyl7aWYob3V0SWR4KzE+PWVuZElkeClicmVhaztoZWFwW291dElkeCsrXT0xOTJ8dT4+NjtoZWFwW291dElkeCsrXT0xMjh8dSY2M31lbHNlIGlmKHU8PTY1NTM1KXtpZihvdXRJZHgrMj49ZW5kSWR4KWJyZWFrO2hlYXBbb3V0SWR4KytdPTIyNHx1Pj4xMjtoZWFwW291dElkeCsrXT0xMjh8dT4+NiY2MztoZWFwW291dElkeCsrXT0xMjh8dSY2M31lbHNle2lmKG91dElkeCszPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MjQwfHU+PjE4O2hlYXBbb3V0SWR4KytdPTEyOHx1Pj4xMiY2MztoZWFwW291dElkeCsrXT0xMjh8dT4+NiY2MztoZWFwW291dElkeCsrXT0xMjh8dSY2M319aGVhcFtvdXRJZHhdPTA7cmV0dXJuIG91dElkeC1zdGFydElkeH1mdW5jdGlvbiBzdHJpbmdUb1VURjgoc3RyLG91dFB0cixtYXhCeXRlc1RvV3JpdGUpe3JldHVybiBzdHJpbmdUb1VURjhBcnJheShzdHIsSEVBUFU4LG91dFB0cixtYXhCeXRlc1RvV3JpdGUpfXZhciBidWZmZXIsSEVBUDgsSEVBUFU4LEhFQVAxNixIRUFQVTE2LEhFQVAzMixIRUFQVTMyLEhFQVBGMzIsSEVBUEY2NDtmdW5jdGlvbiB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyhidWYpe2J1ZmZlcj1idWY7TW9kdWxlW1wiSEVBUDhcIl09SEVBUDg9bmV3IEludDhBcnJheShidWYpO01vZHVsZVtcIkhFQVAxNlwiXT1IRUFQMTY9bmV3IEludDE2QXJyYXkoYnVmKTtNb2R1bGVbXCJIRUFQMzJcIl09SEVBUDMyPW5ldyBJbnQzMkFycmF5KGJ1Zik7TW9kdWxlW1wiSEVBUFU4XCJdPUhFQVBVOD1uZXcgVWludDhBcnJheShidWYpO01vZHVsZVtcIkhFQVBVMTZcIl09SEVBUFUxNj1uZXcgVWludDE2QXJyYXkoYnVmKTtNb2R1bGVbXCJIRUFQVTMyXCJdPUhFQVBVMzI9bmV3IFVpbnQzMkFycmF5KGJ1Zik7TW9kdWxlW1wiSEVBUEYzMlwiXT1IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmKTtNb2R1bGVbXCJIRUFQRjY0XCJdPUhFQVBGNjQ9bmV3IEZsb2F0NjRBcnJheShidWYpfXZhciBJTklUSUFMX01FTU9SWT1Nb2R1bGVbXCJJTklUSUFMX01FTU9SWVwiXXx8MjY4NDM1NDU2O3ZhciB3YXNtVGFibGU7dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVtcInByZVJ1blwiXSl7aWYodHlwZW9mIE1vZHVsZVtcInByZVJ1blwiXT09XCJmdW5jdGlvblwiKU1vZHVsZVtcInByZVJ1blwiXT1bTW9kdWxlW1wicHJlUnVuXCJdXTt3aGlsZShNb2R1bGVbXCJwcmVSdW5cIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbXCJwcmVSdW5cIl0uc2hpZnQoKSl9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQUkVSVU5fXyl9ZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKXtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlW1wicG9zdFJ1blwiXSl7aWYodHlwZW9mIE1vZHVsZVtcInBvc3RSdW5cIl09PVwiZnVuY3Rpb25cIilNb2R1bGVbXCJwb3N0UnVuXCJdPVtNb2R1bGVbXCJwb3N0UnVuXCJdXTt3aGlsZShNb2R1bGVbXCJwb3N0UnVuXCJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVtcInBvc3RSdW5cIl0uc2hpZnQoKSl9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pfWZ1bmN0aW9uIGFkZE9uUHJlUnVuKGNiKXtfX0FUUFJFUlVOX18udW5zaGlmdChjYil9ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfWZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYil7X19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKX12YXIgcnVuRGVwZW5kZW5jaWVzPTA7dmFyIHJ1bkRlcGVuZGVuY3lXYXRjaGVyPW51bGw7dmFyIGRlcGVuZGVuY2llc0Z1bGZpbGxlZD1udWxsO2Z1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koaWQpe3J1bkRlcGVuZGVuY2llcysrO2lmKE1vZHVsZVtcIm1vbml0b3JSdW5EZXBlbmRlbmNpZXNcIl0pe01vZHVsZVtcIm1vbml0b3JSdW5EZXBlbmRlbmNpZXNcIl0ocnVuRGVwZW5kZW5jaWVzKX19ZnVuY3Rpb24gcmVtb3ZlUnVuRGVwZW5kZW5jeShpZCl7cnVuRGVwZW5kZW5jaWVzLS07aWYoTW9kdWxlW1wibW9uaXRvclJ1bkRlcGVuZGVuY2llc1wiXSl7TW9kdWxlW1wibW9uaXRvclJ1bkRlcGVuZGVuY2llc1wiXShydW5EZXBlbmRlbmNpZXMpfWlmKHJ1bkRlcGVuZGVuY2llcz09MCl7aWYocnVuRGVwZW5kZW5jeVdhdGNoZXIhPT1udWxsKXtjbGVhckludGVydmFsKHJ1bkRlcGVuZGVuY3lXYXRjaGVyKTtydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsfWlmKGRlcGVuZGVuY2llc0Z1bGZpbGxlZCl7dmFyIGNhbGxiYWNrPWRlcGVuZGVuY2llc0Z1bGZpbGxlZDtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtjYWxsYmFjaygpfX19ZnVuY3Rpb24gYWJvcnQod2hhdCl7aWYoTW9kdWxlW1wib25BYm9ydFwiXSl7TW9kdWxlW1wib25BYm9ydFwiXSh3aGF0KX13aGF0PVwiQWJvcnRlZChcIit3aGF0K1wiKVwiO2Vycih3aGF0KTtBQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt3aGF0Kz1cIi4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby5cIjt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHdoYXQpO3JlYWR5UHJvbWlzZVJlamVjdChlKTt0aHJvdyBlfXZhciBkYXRhVVJJUHJlZml4PVwiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LFwiO2Z1bmN0aW9uIGlzRGF0YVVSSShmaWxlbmFtZSl7cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZGF0YVVSSVByZWZpeCl9dmFyIHdhc21CaW5hcnlGaWxlO3dhc21CaW5hcnlGaWxlPVwiRURBLndhc21cIjtpZighaXNEYXRhVVJJKHdhc21CaW5hcnlGaWxlKSl7d2FzbUJpbmFyeUZpbGU9bG9jYXRlRmlsZSh3YXNtQmluYXJ5RmlsZSl9ZnVuY3Rpb24gZ2V0QmluYXJ5KGZpbGUpe3RyeXtpZihmaWxlPT13YXNtQmluYXJ5RmlsZSYmd2FzbUJpbmFyeSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KHdhc21CaW5hcnkpfWlmKHJlYWRCaW5hcnkpe3JldHVybiByZWFkQmluYXJ5KGZpbGUpfXRocm93XCJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZFwifWNhdGNoKGVycil7YWJvcnQoZXJyKX19ZnVuY3Rpb24gZ2V0QmluYXJ5UHJvbWlzZSgpe2lmKCF3YXNtQmluYXJ5JiYoRU5WSVJPTk1FTlRfSVNfV0VCfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpKXtpZih0eXBlb2YgZmV0Y2g9PVwiZnVuY3Rpb25cIil7cmV0dXJuIGZldGNoKG5ldyBVUkwoJy4uL3dhc20vRURBLndhc20nLCBpbXBvcnQubWV0YS51cmwpKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtpZighcmVzcG9uc2VbXCJva1wiXSl7dGhyb3dcImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJ1wiK3dhc21CaW5hcnlGaWxlK1wiJ1wifXJldHVybiByZXNwb25zZVtcImFycmF5QnVmZmVyXCJdKCl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBnZXRCaW5hcnkod2FzbUJpbmFyeUZpbGUpfSl9fXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSl9KX1mdW5jdGlvbiBjcmVhdGVXYXNtKCl7dmFyIGluZm89e1wiYVwiOmFzbUxpYnJhcnlBcmd9O2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSxtb2R1bGUpe3ZhciBleHBvcnRzPWluc3RhbmNlLmV4cG9ydHM7TW9kdWxlW1wiYXNtXCJdPWV4cG9ydHM7d2FzbU1lbW9yeT1Nb2R1bGVbXCJhc21cIl1bXCJlXCJdO3VwZGF0ZUdsb2JhbEJ1ZmZlckFuZFZpZXdzKHdhc21NZW1vcnkuYnVmZmVyKTt3YXNtVGFibGU9TW9kdWxlW1wiYXNtXCJdW1wiaVwiXTthZGRPbkluaXQoTW9kdWxlW1wiYXNtXCJdW1wiZlwiXSk7cmVtb3ZlUnVuRGVwZW5kZW5jeShcIndhc20taW5zdGFudGlhdGVcIil9YWRkUnVuRGVwZW5kZW5jeShcIndhc20taW5zdGFudGlhdGVcIik7ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KXtyZWNlaXZlSW5zdGFuY2UocmVzdWx0W1wiaW5zdGFuY2VcIl0pfWZ1bmN0aW9uIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZXIpe3JldHVybiBnZXRCaW5hcnlQcm9taXNlKCkudGhlbihmdW5jdGlvbihiaW5hcnkpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShiaW5hcnksaW5mbyl9KS50aGVuKGZ1bmN0aW9uKGluc3RhbmNlKXtyZXR1cm4gaW5zdGFuY2V9KS50aGVuKHJlY2VpdmVyLGZ1bmN0aW9uKHJlYXNvbil7ZXJyKFwiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogXCIrcmVhc29uKTthYm9ydChyZWFzb24pfSl9ZnVuY3Rpb24gaW5zdGFudGlhdGVBc3luYygpe2lmKCF3YXNtQmluYXJ5JiZ0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PVwiZnVuY3Rpb25cIiYmIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkmJnR5cGVvZiBmZXRjaD09XCJmdW5jdGlvblwiKXtyZXR1cm4gZmV0Y2gobmV3IFVSTCgnLi4vd2FzbS9FREEud2FzbScsIGltcG9ydC5tZXRhLnVybCkpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe3ZhciByZXN1bHQ9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcG9uc2UsaW5mbyk7cmV0dXJuIHJlc3VsdC50aGVuKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0LGZ1bmN0aW9uKHJlYXNvbil7ZXJyKFwid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6IFwiK3JlYXNvbik7ZXJyKFwiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb25cIik7cmV0dXJuIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQpfSl9KX1lbHNle3JldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KX19aWYoTW9kdWxlW1wiaW5zdGFudGlhdGVXYXNtXCJdKXt0cnl7dmFyIGV4cG9ydHM9TW9kdWxlW1wiaW5zdGFudGlhdGVXYXNtXCJdKGluZm8scmVjZWl2ZUluc3RhbmNlKTtyZXR1cm4gZXhwb3J0c31jYXRjaChlKXtlcnIoXCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiBcIitlKTtyZWFkeVByb21pc2VSZWplY3QoZSl9fWluc3RhbnRpYXRlQXN5bmMoKS5jYXRjaChyZWFkeVByb21pc2VSZWplY3QpO3JldHVybnt9fWZ1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXtjYWxsYmFja3Muc2hpZnQoKShNb2R1bGUpfX1mdW5jdGlvbiBfX19hc3NlcnRfZmFpbChjb25kaXRpb24sZmlsZW5hbWUsbGluZSxmdW5jKXthYm9ydChcIkFzc2VydGlvbiBmYWlsZWQ6IFwiK1VURjhUb1N0cmluZyhjb25kaXRpb24pK1wiLCBhdDogXCIrW2ZpbGVuYW1lP1VURjhUb1N0cmluZyhmaWxlbmFtZSk6XCJ1bmtub3duIGZpbGVuYW1lXCIsbGluZSxmdW5jP1VURjhUb1N0cmluZyhmdW5jKTpcInVua25vd24gZnVuY3Rpb25cIl0pfWZ1bmN0aW9uIEV4Y2VwdGlvbkluZm8oZXhjUHRyKXt0aGlzLmV4Y1B0cj1leGNQdHI7dGhpcy5wdHI9ZXhjUHRyLTI0O3RoaXMuc2V0X3R5cGU9ZnVuY3Rpb24odHlwZSl7SEVBUFUzMlt0aGlzLnB0cis0Pj4yXT10eXBlfTt0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEhFQVBVMzJbdGhpcy5wdHIrND4+Ml19O3RoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oZGVzdHJ1Y3Rvcil7SEVBUFUzMlt0aGlzLnB0cis4Pj4yXT1kZXN0cnVjdG9yfTt0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIEhFQVBVMzJbdGhpcy5wdHIrOD4+Ml19O3RoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKHJlZmNvdW50KXtIRUFQMzJbdGhpcy5wdHI+PjJdPXJlZmNvdW50fTt0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oY2F1Z2h0KXtjYXVnaHQ9Y2F1Z2h0PzE6MDtIRUFQOFt0aGlzLnB0cisxMj4+MF09Y2F1Z2h0fTt0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTI+PjBdIT0wfTt0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihyZXRocm93bil7cmV0aHJvd249cmV0aHJvd24/MTowO0hFQVA4W3RoaXMucHRyKzEzPj4wXT1yZXRocm93bn07dGhpcy5nZXRfcmV0aHJvd249ZnVuY3Rpb24oKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTM+PjBdIT0wfTt0aGlzLmluaXQ9ZnVuY3Rpb24odHlwZSxkZXN0cnVjdG9yKXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCk7dGhpcy5zZXRfdHlwZSh0eXBlKTt0aGlzLnNldF9kZXN0cnVjdG9yKGRlc3RydWN0b3IpO3RoaXMuc2V0X3JlZmNvdW50KDApO3RoaXMuc2V0X2NhdWdodChmYWxzZSk7dGhpcy5zZXRfcmV0aHJvd24oZmFsc2UpfTt0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXt2YXIgdmFsdWU9SEVBUDMyW3RoaXMucHRyPj4yXTtIRUFQMzJbdGhpcy5wdHI+PjJdPXZhbHVlKzF9O3RoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgcHJldj1IRUFQMzJbdGhpcy5wdHI+PjJdO0hFQVAzMlt0aGlzLnB0cj4+Ml09cHJldi0xO3JldHVybiBwcmV2PT09MX07dGhpcy5zZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKGFkanVzdGVkUHRyKXtIRUFQVTMyW3RoaXMucHRyKzE2Pj4yXT1hZGp1c3RlZFB0cn07dGhpcy5nZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKCl7cmV0dXJuIEhFQVBVMzJbdGhpcy5wdHIrMTY+PjJdfTt0aGlzLmdldF9leGNlcHRpb25fcHRyPWZ1bmN0aW9uKCl7dmFyIGlzUG9pbnRlcj1fX19jeGFfaXNfcG9pbnRlcl90eXBlKHRoaXMuZ2V0X3R5cGUoKSk7aWYoaXNQb2ludGVyKXtyZXR1cm4gSEVBUFUzMlt0aGlzLmV4Y1B0cj4+Ml19dmFyIGFkanVzdGVkPXRoaXMuZ2V0X2FkanVzdGVkX3B0cigpO2lmKGFkanVzdGVkIT09MClyZXR1cm4gYWRqdXN0ZWQ7cmV0dXJuIHRoaXMuZXhjUHRyfX12YXIgZXhjZXB0aW9uTGFzdD0wO3ZhciB1bmNhdWdodEV4Y2VwdGlvbkNvdW50PTA7ZnVuY3Rpb24gX19fY3hhX3Rocm93KHB0cix0eXBlLGRlc3RydWN0b3Ipe3ZhciBpbmZvPW5ldyBFeGNlcHRpb25JbmZvKHB0cik7aW5mby5pbml0KHR5cGUsZGVzdHJ1Y3Rvcik7ZXhjZXB0aW9uTGFzdD1wdHI7dW5jYXVnaHRFeGNlcHRpb25Db3VudCsrO3Rocm93IHB0cn1mdW5jdGlvbiBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnKGRlc3Qsc3JjLG51bSl7SEVBUFU4LmNvcHlXaXRoaW4oZGVzdCxzcmMsc3JjK251bSl9ZnVuY3Rpb24gZ2V0SGVhcE1heCgpe3JldHVybiAyMTQ3NDgzNjQ4fWZ1bmN0aW9uIGVtc2NyaXB0ZW5fcmVhbGxvY19idWZmZXIoc2l6ZSl7dHJ5e3dhc21NZW1vcnkuZ3JvdyhzaXplLWJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpO3VwZGF0ZUdsb2JhbEJ1ZmZlckFuZFZpZXdzKHdhc21NZW1vcnkuYnVmZmVyKTtyZXR1cm4gMX1jYXRjaChlKXt9fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwKHJlcXVlc3RlZFNpemUpe3ZhciBvbGRTaXplPUhFQVBVOC5sZW5ndGg7cmVxdWVzdGVkU2l6ZT1yZXF1ZXN0ZWRTaXplPj4+MDt2YXIgbWF4SGVhcFNpemU9Z2V0SGVhcE1heCgpO2lmKHJlcXVlc3RlZFNpemU+bWF4SGVhcFNpemUpe3JldHVybiBmYWxzZX1sZXQgYWxpZ25VcD0oeCxtdWx0aXBsZSk9PngrKG11bHRpcGxlLXglbXVsdGlwbGUpJW11bHRpcGxlO2Zvcih2YXIgY3V0RG93bj0xO2N1dERvd248PTQ7Y3V0RG93bio9Mil7dmFyIG92ZXJHcm93bkhlYXBTaXplPW9sZFNpemUqKDErLjIvY3V0RG93bik7b3Zlckdyb3duSGVhcFNpemU9TWF0aC5taW4ob3Zlckdyb3duSGVhcFNpemUscmVxdWVzdGVkU2l6ZSsxMDA2NjMyOTYpO3ZhciBuZXdTaXplPU1hdGgubWluKG1heEhlYXBTaXplLGFsaWduVXAoTWF0aC5tYXgocmVxdWVzdGVkU2l6ZSxvdmVyR3Jvd25IZWFwU2l6ZSksNjU1MzYpKTt2YXIgcmVwbGFjZW1lbnQ9ZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlcihuZXdTaXplKTtpZihyZXBsYWNlbWVudCl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1mdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dmFyIGZ1bmM9TW9kdWxlW1wiX1wiK2lkZW50XTtyZXR1cm4gZnVuY31mdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksYnVmZmVyKXtIRUFQOC5zZXQoYXJyYXksYnVmZmVyKX1mdW5jdGlvbiBjY2FsbChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzLGFyZ3Msb3B0cyl7dmFyIHRvQz17XCJzdHJpbmdcIjpzdHI9Pnt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXt2YXIgbGVuPShzdHIubGVuZ3RoPDwyKSsxO3JldD1zdGFja0FsbG9jKGxlbik7c3RyaW5nVG9VVEY4KHN0cixyZXQsbGVuKX1yZXR1cm4gcmV0fSxcImFycmF5XCI6YXJyPT57dmFyIHJldD1zdGFja0FsbG9jKGFyci5sZW5ndGgpO3dyaXRlQXJyYXlUb01lbW9yeShhcnIscmV0KTtyZXR1cm4gcmV0fX07ZnVuY3Rpb24gY29udmVydFJldHVyblZhbHVlKHJldCl7aWYocmV0dXJuVHlwZT09PVwic3RyaW5nXCIpe3JldHVybiBVVEY4VG9TdHJpbmcocmV0KX1pZihyZXR1cm5UeXBlPT09XCJib29sZWFuXCIpcmV0dXJuIEJvb2xlYW4ocmV0KTtyZXR1cm4gcmV0fXZhciBmdW5jPWdldENGdW5jKGlkZW50KTt2YXIgY0FyZ3M9W107dmFyIHN0YWNrPTA7aWYoYXJncyl7Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3ZhciBjb252ZXJ0ZXI9dG9DW2FyZ1R5cGVzW2ldXTtpZihjb252ZXJ0ZXIpe2lmKHN0YWNrPT09MClzdGFjaz1zdGFja1NhdmUoKTtjQXJnc1tpXT1jb252ZXJ0ZXIoYXJnc1tpXSl9ZWxzZXtjQXJnc1tpXT1hcmdzW2ldfX19dmFyIHJldD1mdW5jLmFwcGx5KG51bGwsY0FyZ3MpO2Z1bmN0aW9uIG9uRG9uZShyZXQpe2lmKHN0YWNrIT09MClzdGFja1Jlc3RvcmUoc3RhY2spO3JldHVybiBjb252ZXJ0UmV0dXJuVmFsdWUocmV0KX1yZXQ9b25Eb25lKHJldCk7cmV0dXJuIHJldH1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzLG9wdHMpe2FyZ1R5cGVzPWFyZ1R5cGVzfHxbXTt2YXIgbnVtZXJpY0FyZ3M9YXJnVHlwZXMuZXZlcnkodHlwZT0+dHlwZT09PVwibnVtYmVyXCJ8fHR5cGU9PT1cImJvb2xlYW5cIik7dmFyIG51bWVyaWNSZXQ9cmV0dXJuVHlwZSE9PVwic3RyaW5nXCI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3MmJiFvcHRzKXtyZXR1cm4gZ2V0Q0Z1bmMoaWRlbnQpfXJldHVybiBmdW5jdGlvbigpe3JldHVybiBjY2FsbChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzLGFyZ3VtZW50cyxvcHRzKX19dmFyIGFzbUxpYnJhcnlBcmc9e1wiYVwiOl9fX2Fzc2VydF9mYWlsLFwiYlwiOl9fX2N4YV90aHJvdyxcImRcIjpfZW1zY3JpcHRlbl9tZW1jcHlfYmlnLFwiY1wiOl9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwfTt2YXIgYXNtPWNyZWF0ZVdhc20oKTt2YXIgX19fd2FzbV9jYWxsX2N0b3JzPU1vZHVsZVtcIl9fX3dhc21fY2FsbF9jdG9yc1wiXT1mdW5jdGlvbigpe3JldHVybihfX193YXNtX2NhbGxfY3RvcnM9TW9kdWxlW1wiX19fd2FzbV9jYWxsX2N0b3JzXCJdPU1vZHVsZVtcImFzbVwiXVtcImZcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9wcmluY2lwYWxDb21wb25lbnRBbmFseXNpcz1Nb2R1bGVbXCJfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzPU1vZHVsZVtcIl9wcmluY2lwYWxDb21wb25lbnRBbmFseXNpc1wiXT1Nb2R1bGVbXCJhc21cIl1bXCJnXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZXJyb3I9TW9kdWxlW1wiX2Vycm9yXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9lcnJvcj1Nb2R1bGVbXCJfZXJyb3JcIl09TW9kdWxlW1wiYXNtXCJdW1wiaFwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2ZyZWU9TW9kdWxlW1wiX2ZyZWVcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX2ZyZWU9TW9kdWxlW1wiX2ZyZWVcIl09TW9kdWxlW1wiYXNtXCJdW1wialwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX21hbGxvYz1Nb2R1bGVbXCJfbWFsbG9jXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9tYWxsb2M9TW9kdWxlW1wiX21hbGxvY1wiXT1Nb2R1bGVbXCJhc21cIl1bXCJrXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfcGFydGlhbExlYXN0U3F1YXJlUmVncmVzc2lvbj1Nb2R1bGVbXCJfcGFydGlhbExlYXN0U3F1YXJlUmVncmVzc2lvblwiXT1mdW5jdGlvbigpe3JldHVybihfcGFydGlhbExlYXN0U3F1YXJlUmVncmVzc2lvbj1Nb2R1bGVbXCJfcGFydGlhbExlYXN0U3F1YXJlUmVncmVzc2lvblwiXT1Nb2R1bGVbXCJhc21cIl1bXCJsXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZ2VuZXJhdGVEYXRhc2V0PU1vZHVsZVtcIl9nZW5lcmF0ZURhdGFzZXRcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX2dlbmVyYXRlRGF0YXNldD1Nb2R1bGVbXCJfZ2VuZXJhdGVEYXRhc2V0XCJdPU1vZHVsZVtcImFzbVwiXVtcIm1cIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9ub3JtYWxpemVEYXRhc2V0PU1vZHVsZVtcIl9ub3JtYWxpemVEYXRhc2V0XCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9ub3JtYWxpemVEYXRhc2V0PU1vZHVsZVtcIl9ub3JtYWxpemVEYXRhc2V0XCJdPU1vZHVsZVtcImFzbVwiXVtcIm5cIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF90cmFpbkxTU1ZNPU1vZHVsZVtcIl90cmFpbkxTU1ZNXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF90cmFpbkxTU1ZNPU1vZHVsZVtcIl90cmFpbkxTU1ZNXCJdPU1vZHVsZVtcImFzbVwiXVtcIm9cIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9wcmVkaWN0QnlMU1NWTT1Nb2R1bGVbXCJfcHJlZGljdEJ5TFNTVk1cIl09ZnVuY3Rpb24oKXtyZXR1cm4oX3ByZWRpY3RCeUxTU1ZNPU1vZHVsZVtcIl9wcmVkaWN0QnlMU1NWTVwiXT1Nb2R1bGVbXCJhc21cIl1bXCJwXCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfdHJhaW5BbmRBbmFseXplTFNTVk09TW9kdWxlW1wiX3RyYWluQW5kQW5hbHl6ZUxTU1ZNXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF90cmFpbkFuZEFuYWx5emVMU1NWTT1Nb2R1bGVbXCJfdHJhaW5BbmRBbmFseXplTFNTVk1cIl09TW9kdWxlW1wiYXNtXCJdW1wicVwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2ZpdExpbmVhclJlZ3Jlc3Npb25QYXJhbXNXaXRoRGF0YU5vcm1hbGl6aW5nPU1vZHVsZVtcIl9maXRMaW5lYXJSZWdyZXNzaW9uUGFyYW1zV2l0aERhdGFOb3JtYWxpemluZ1wiXT1mdW5jdGlvbigpe3JldHVybihfZml0TGluZWFyUmVncmVzc2lvblBhcmFtc1dpdGhEYXRhTm9ybWFsaXppbmc9TW9kdWxlW1wiX2ZpdExpbmVhclJlZ3Jlc3Npb25QYXJhbXNXaXRoRGF0YU5vcm1hbGl6aW5nXCJdPU1vZHVsZVtcImFzbVwiXVtcInJcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9maXRMaW5lYXJSZWdyZXNzaW9uUGFyYW1zPU1vZHVsZVtcIl9maXRMaW5lYXJSZWdyZXNzaW9uUGFyYW1zXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKF9maXRMaW5lYXJSZWdyZXNzaW9uUGFyYW1zPU1vZHVsZVtcIl9maXRMaW5lYXJSZWdyZXNzaW9uUGFyYW1zXCJdPU1vZHVsZVtcImFzbVwiXVtcInNcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIHN0YWNrU2F2ZT1Nb2R1bGVbXCJzdGFja1NhdmVcIl09ZnVuY3Rpb24oKXtyZXR1cm4oc3RhY2tTYXZlPU1vZHVsZVtcInN0YWNrU2F2ZVwiXT1Nb2R1bGVbXCJhc21cIl1bXCJ0XCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBzdGFja1Jlc3RvcmU9TW9kdWxlW1wic3RhY2tSZXN0b3JlXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKHN0YWNrUmVzdG9yZT1Nb2R1bGVbXCJzdGFja1Jlc3RvcmVcIl09TW9kdWxlW1wiYXNtXCJdW1widVwiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgc3RhY2tBbGxvYz1Nb2R1bGVbXCJzdGFja0FsbG9jXCJdPWZ1bmN0aW9uKCl7cmV0dXJuKHN0YWNrQWxsb2M9TW9kdWxlW1wic3RhY2tBbGxvY1wiXT1Nb2R1bGVbXCJhc21cIl1bXCJ2XCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX19jeGFfaXNfcG9pbnRlcl90eXBlPU1vZHVsZVtcIl9fX2N4YV9pc19wb2ludGVyX3R5cGVcIl09ZnVuY3Rpb24oKXtyZXR1cm4oX19fY3hhX2lzX3BvaW50ZXJfdHlwZT1Nb2R1bGVbXCJfX19jeGFfaXNfcG9pbnRlcl90eXBlXCJdPU1vZHVsZVtcImFzbVwiXVtcIndcIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlW1wiY2NhbGxcIl09Y2NhbGw7TW9kdWxlW1wiY3dyYXBcIl09Y3dyYXA7dmFyIGNhbGxlZFJ1bjtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIWNhbGxlZFJ1bilydW4oKTtpZighY2FsbGVkUnVuKWRlcGVuZGVuY2llc0Z1bGZpbGxlZD1ydW5DYWxsZXJ9O2Z1bmN0aW9uIHJ1bihhcmdzKXthcmdzPWFyZ3N8fGFyZ3VtZW50c187aWYocnVuRGVwZW5kZW5jaWVzPjApe3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7cmV0dXJufWZ1bmN0aW9uIGRvUnVuKCl7aWYoY2FsbGVkUnVuKXJldHVybjtjYWxsZWRSdW49dHJ1ZTtNb2R1bGVbXCJjYWxsZWRSdW5cIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlKE1vZHVsZSk7aWYoTW9kdWxlW1wib25SdW50aW1lSW5pdGlhbGl6ZWRcIl0pTW9kdWxlW1wib25SdW50aW1lSW5pdGlhbGl6ZWRcIl0oKTtwb3N0UnVuKCl9aWYoTW9kdWxlW1wic2V0U3RhdHVzXCJdKXtNb2R1bGVbXCJzZXRTdGF0dXNcIl0oXCJSdW5uaW5nLi4uXCIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TW9kdWxlW1wic2V0U3RhdHVzXCJdKFwiXCIpfSwxKTtkb1J1bigpfSwxKX1lbHNle2RvUnVuKCl9fWlmKE1vZHVsZVtcInByZUluaXRcIl0pe2lmKHR5cGVvZiBNb2R1bGVbXCJwcmVJbml0XCJdPT1cImZ1bmN0aW9uXCIpTW9kdWxlW1wicHJlSW5pdFwiXT1bTW9kdWxlW1wicHJlSW5pdFwiXV07d2hpbGUoTW9kdWxlW1wicHJlSW5pdFwiXS5sZW5ndGg+MCl7TW9kdWxlW1wicHJlSW5pdFwiXS5wb3AoKSgpfX1ydW4oKTtcblxuXG4gIHJldHVybiBleHBvcnRFREEucmVhZHlcbn1cbik7XG59KSgpO1xuaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JylcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRFREE7XG5lbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZVsnYW1kJ10pXG4gIGRlZmluZShbXSwgZnVuY3Rpb24oKSB7IHJldHVybiBleHBvcnRFREE7IH0pO1xuZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuICBleHBvcnRzW1wiZXhwb3J0RURBXCJdID0gZXhwb3J0RURBO1xuIiwiLy8gVXRpbGl0aWVzIGZvciBjYWxsaW5nIHdhc20tZnVuY3Rpb25zIHZpYSB3ZWJ3b3JrZXIuXG5cbi8vIFdlIHVzZSBhbiBhcHByb2FjaCB0aGF0IGlzIHdlbGwgZGVzY3JpYmVkIGhlcmU6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG4vLyBJdCBoYXMgYmVlbiBtb2RpZmllZCBmb3IgdXNhZ2UgaW4gREFUQUdST0suXG5cbi8vIENvbnN0YW50cyBmb3Igd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VycyBydW50aW1lIHN5c3RlbVxuY29uc3QgVFlQRSA9ICd0eXBlJztcbmNvbnN0IE5VTV9UWVBFID0gJ251bSc7XG5jb25zdCBGTE9BVF9DT0xVTU5fVFlQRSA9ICdmbG9hdENvbHVtbic7XG5jb25zdCBJTlRfQ09MVU1OX1RZUEUgPSAnaW50Q29sdW1uJztcbmNvbnN0IEZMT0FUX0NPTFVNTlNfVFlQRSA9ICdmbG9hdENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRSA9ICduZXdGbG9hdENvbHVtbnMnO1xuY29uc3QgSU5UX0NPTFVNTlNfVFlQRSA9ICdpbnRDb2x1bW5zJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OU19UWVBFID0gJ25ld0ludENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFID0gJ25ld0Zsb2F0Q29sdW1uJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OX1RZUEUgPSAnbmV3SW50Q29sdW1uJztcbmNvbnN0IENPTFVNTiA9ICdjb2x1bW4nO1xuY29uc3QgQ0FMTF9SRVNVTFQgPSAnX2NhbGxSZXN1bHQnO1xuY29uc3QgTlVNX09GX1JPV1MgPSAnbnVtT2ZSb3dzJztcbmNvbnN0IE5VTV9PRl9DT0xVTU5TID0gJ251bU9mQ29sdW1ucyc7XG5jb25zdCBSRUYgPSAncmVmJztcbmNvbnN0IFZBTFVFID0gJ3ZhbHVlJztcbmNvbnN0IFRBQkxFX09GX0NPTFVNTlMgPSAndGFibGVGcm9tQ29sdW1ucyc7XG5jb25zdCBPQkpFQ1RTID0gJ29iamVjdHMnO1xuY29uc3QgSU5UX1RZUEUgPSAnaW50JztcbmNvbnN0IERPVUJMRV9UWVBFID0gJ2RvdWJsZSc7XG5jb25zdCBOVU1CRVIgPSAnbnVtYmVyJztcblxuLy8gVHlwZS10by1oZWFwIGNvcnJlc3BvbmRlbmNlLlxuLy8gSXQgaXMgcmVxdWlyZWQgZm9yIEpTLW1vZHVsZSBnZW5lcmF0ZWQgYnkgRW1zY3JpcHRlbixcbi8vIGFuZCBpdCBpcyB1c2VkLCB3aGVuIHBhc3NpbmcgYXJyYXkgZGF0YSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG5jb25zdCBoZWFwTWFwID0ge1xuICAgICAgICAgICAgICAgICAnaW50Q29sdW1uJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbnMnOiBcIkhFQVBGMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IFwiSEVBUEYzMlwiLFxuICAgICAgICAgICAgICAgICAnaW50Q29sdW1ucyc6IFwiSEVBUDMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiBcIkhFQVAzMlwiXG4gICAgICAgICAgICAgICAgfTtcblxuLy8gVHlwZSBzaWduYXR1cmUgdG8gdHlwZWQgYXJyYXkgbWFwLlxuLy8gSXQgaXMgdXNlZCwgd2hlbiBtYW5pcHVsYXRpbmcgY29sdW1uKHMpLlxuY29uc3QgdHlwZU1hcCA9IHtcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbic6IEludDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbic6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiBJbnQzMkFycmF5LCAgXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogSW50MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogRmxvYXQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogSW50MzJBcnJheVxuICAgICAgICAgICAgICAgIH07IFxuXG4vLyBUeXBlLXRvLXNoaWZ0IG1hcC5cbi8vIEl0IGlzIHVzZWQsIHdoZW4gcGFzc2luZyBhcnJheSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3IFxuY29uc3Qgc2hpZnRNYXAgPSB7J2ludENvbHVtbic6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogMiwgXG4gICAgICAgICAgICAgICAgICAnZmxvYXRDb2x1bW5zJzogMiwgIFxuICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiAyLCAgXG4gICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6IDIsXG4gICAgICAgICAgICAgICAgICAnbmV3RmxvYXRDb2x1bW4nOiAyLFxuICAgICAgICAgICAgICAgICAgJ25ld0ludENvbHVtbic6IDJcbiAgICAgICAgICAgICAgICAgfTsgICAgICAgICBcblxuLy8gR2V0IGlucHV0IGZvciBDKystZnVuY3Rpb24uXG4vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHNwZWNpZmljYXRpb24gb2YgYXJndW1lbnRzIChhcmdzU3BlY2lmaWNhdGlvbikgJiBpbnB1dCBkYXRhIChpbnB1dFZhbHMpXG4vLyBhbmQgcmV0dXJucyBpbnB1dCB0aGF0IHdpbGwgYmUgZnVydGhlciB1c2VkIGluIGNwcC93YXNtLWZ1bmN0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGdldENwcElucHV0KGFyZ3NTcGVjaWZpY2F0aW9uLCBpbnB1dFZhbHMpIHtcbiAgICBsZXQgY3BwRnVuY0lucHV0ID0gW107XG4gICAgbGV0IHJlZjtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGNvbnN0IGtleSBpbiBhcmdzU3BlY2lmaWNhdGlvbikge1xuICAgICAgICBjb25zdCBhcmcgPSBhcmdzU3BlY2lmaWNhdGlvbltrZXldOyBcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PT0gQ0FMTF9SRVNVTFQpICAgICAgICAgICAgIFxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgLy8gaGVyZSwgd2UgY29uc2lkZXIgZWFjaCB0eXBlIG9mIGlucHV0XG4gICAgICAgIHN3aXRjaCh0eXBlKSB7ICAgICAgICAgICBcbiBcbiAgICAgICAgICAgIC8vIG51bWJlcnNcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmRhdGEgPSBpbnB1dFZhbHNbaV07XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcblxuICAgICAgICAgICAgICAgIGxldCBhcnJheTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgT0sgaWYgdHlwZSBvZiBjb2x1bW4gYW5kIHRhcmdldCB0eXBlIGNvaW5zaWRlXG4gICAgICAgICAgICAgICAgLy9hcnJheSA9IGlucHV0VmFsc1tpXS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgY29sID0gaW5wdXRWYWxzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gaGVyZSwgd2UgY2hlY2sgdHlwZXMgYW5kIHBlcmZvcm0gYW4gYXBwcm9wcmlhdGUgdHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgaWYoICggKGNvbC50eXBlID09PSBJTlRfVFlQRSkgJiYgKHR5cGUgPT09IElOVF9DT0xVTU5fVFlQRSkgKSBcbiAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgICAgIC8qaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gSU5UX0NPTFVNTl9UWVBFKSkgXG4gICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbC50eXBlID09ICdkb3VibGUnKSAmJiAodHlwZSA9PSBGTE9BVF9DT0xVTU5fVFlQRSkpKVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpOyovXG5cbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0eXBlc1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXknOiBhcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bU9mUm93cyc6IGFycmF5Lmxlbmd0aH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gbmV3IGNvbHVtbiBcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAwOyAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfUk9XU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIGlmIChhcmdzU3BlY2lmaWNhdGlvbltyZWZdLnR5cGUgPT09IE5VTV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGFbYXJnW05VTV9PRl9ST1dTXVtWQUxVRV1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyBvciBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBbXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIE9LIGlmIHR5cGUgb2YgY29sdW1ucyBhbmQgdGFyZ2V0IHR5cGUgY29pbnNpZGVcbiAgICAgICAgICAgICAgICAvL2ZvcihsZXQgY29sIG9mIGlucHV0VmFsc1tpXS50b0xpc3QoKSlcbiAgICAgICAgICAgICAgICAvLyAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBoZXJlLCB3ZSBjaGVjayB0eXBlcyBhbmQgcGVyZm9ybSBhbiBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICBmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICBpZiggKCAoY29sLnR5cGUgPT09IElOVF9UWVBFKSAmJiAodHlwZSA9PT0gSU5UX0NPTFVNTl9UWVBFKSApIFxuICAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgIGFycmF5cy5wdXNoKGNvbC5nZXRSYXdEYXRhKCkpO1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLypmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09IElOVF9DT0xVTU5fVFlQRSkpIFxuICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09IEZMT0FUX0NPTFVNTl9UWVBFKSkpXG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7Ki9cblxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXlzJzogYXJyYXlzLFxuICAgICAgICAgICAgICAgICAgICAnbnVtT2ZSb3dzJzogYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgJ251bU9mQ29sdW1ucyc6IGFycmF5cy5sZW5ndGh9O1xuXG4gICAgICAgICAgICAgICAgaSsrOyAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zIG9yIG5ldyBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgdmFsMSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHZhbDIgPSAwO1xuXG4gICAgICAgICAgICAgICAgcmVmID0gYXJnW05VTV9PRl9ST1dTXVtSRUZdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDEgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwxID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfUk9XU11bVkFMVUVdXTtcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfQ09MVU1OU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1JlZjonKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlZik7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDIgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwyID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfQ09MVU1OU11bVkFMVUVdXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsMSxcbiAgICAgICAgICAgICAgICAgICdudW1PZkNvbHVtbnMnOiB2YWwyfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICBcblxuICAgICAgICAgICAgZGVmYXVsdDogXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBUT0RPOiBzcGVjaWZ5IGJlaGF2aW91ciAgICAgICAgICAgXG4gICAgICAgICAgICB9IC8vIHN3aXRjaCAgICAgICAgXG5cbiAgICAgICAgY3BwRnVuY0lucHV0LnB1c2goYXJnKTtcbiAgICB9IC8vIGZvciBrZXlcblxuICAgIC8vY29uc29sZS5sb2coJ2NwcEZ1bmNJbnB1dDonKTtcbiAgICAvL2NvbnNvbGUubG9nKGNwcEZ1bmNJbnB1dCk7XG5cbiAgICByZXR1cm4gY3BwRnVuY0lucHV0O1xufSAvLyBnZXRDcHBJbnB1dFxuXG4vLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgZm9yIGFycmF5IGRhdGFcbmZ1bmN0aW9uIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSwgaW5wdXRzKSB7XG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHsgXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2godHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOiBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuZGF0YS5idWYgPSBtb2R1bGUuX21hbGxvYyhhcmcuZGF0YS5udW1PZlJvd3MgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOiAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTogLy8gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIGNvbHVtbnMgdGhhdCBhcmUgY3JlYXRlZFxuICAgICAgICAgICAgICAgIGFyZy5kYXRhLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKGFyZy5kYXRhLm51bU9mUm93cyAqIGFyZy5kYXRhLm51bU9mQ29sdW1ucyBcbiAgICAgICAgICAgICAgICAgICAgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gVE9ETzogcHJvY2VzcyBvdGhlciBjYXNlcyBhbmQgbWlzdGFrZXNcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICB9ICBcbiAgICB9XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygnaW5wdXRzIGFmdGVyIG1lbW9yeSBhbGxvY2F0aW9uOicpO1xuICAgIC8vY29uc29sZS5sb2coaW5wdXRzKTtcbn0gLy8gYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXJcblxuLy8gR2V0IGFycmF5IG9mIHZhbHVlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVBhcmFtcyhpbnB1dHMpIHtcbiAgICBsZXQgcGFyYW1zID0gW107XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcblxuICAgICAgICAgICAgLy8gbnVtYmVyc1xuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1uICYgbmV3IGNvbHVtblxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEuYnVmKTsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6IFxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhLmJ1Zik7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChhcmcuZGF0YS5udW1PZkNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn0gLy8gZ2V0QXJyT2ZXYXNtUGFyYW1zXG5cbi8vIEdldCBhcnJheSBvZiB0eXBlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVR5cGVzKGlucHV0cykge1xuICAgIGxldCB0eXBlcyA9IFtdO1xuXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgc3dpdGNoIChhcmcudHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufSAvLyBnZXRBcnJPZldhc21UeXBlc1xuXG4vLyBQdXQgYXJyYXkgZGF0YSB0byBidWZmZXJcbmZ1bmN0aW9uIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGxldCBzaGlmdDtcbiAgICBsZXQgaGVhcDsgICAgXG4gICAgXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNoaWZ0ID0gc2hpZnRNYXBbdHlwZV07XG4gICAgICAgICAgICAgICAgaGVhcCA9IG1vZHVsZVtoZWFwTWFwW3R5cGVdXTsgIFxuICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFyZy5kYXRhLmFycmF5LCBhcmcuZGF0YS5idWYgPj4gc2hpZnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICAgICAgICAgIGxldCBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQ29sdW1ucyA9IGFyZy5kYXRhLm51bU9mQ29sdW1ucztcbiAgICAgICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBhcmcuZGF0YS5hcnJheXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2x1bW5zOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFycmF5c1tpXSwgKGJ1ZiArIGkgKiBudW1PZlJvd3MgKiBudW1PZkJ5dGVzKSA+PiBzaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uKHMpXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn0gLy8gcHV0RGF0YVRvQnVmZmVyXG5cbi8vIEdldCBhcnJheSBkYXRhIGZyb20gYnVmZmVyLlxuZnVuY3Rpb24gZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlLCBpbnB1dHMpIHtcblxuICAgIGxldCBoZWFwO1xuICAgIGxldCBudW1PZlJvd3M7XG4gICAgbGV0IG51bU9mQ29scztcbiAgICBsZXQgbnVtT2ZCeXRlczsgICAgXG4gICAgbGV0IGJ1ZjtcblxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHsgLy8gUHJvY2VzcyBlYWNoIHR5cGUgb2YgaW5wdXRcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIGNvbHVtbihzKVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTogICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UOyAgICBcbiAgICAgICAgICAgICAgICBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqXTtcblxuICAgICAgICAgICAgICAgIGFyZy5hcnJheSA9IGFycmF5O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOiBcbiAgICAgICAgICAgICAgICBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgICAgIG51bU9mUm93cyA9IGFyZy5kYXRhLm51bU9mUm93cztcbiAgICAgICAgICAgICAgICBudW1PZkNvbHMgPSBhcmcuZGF0YS5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICAgICAgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgIFxuICAgICAgICAgICAgICAgIGJ1ZiA9IGFyZy5kYXRhLmJ1ZjtcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXlzID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgICBhcnJbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goYXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcmcuYXJyYXlzID0gYXJyYXlzO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSAgICAgICAgICAgIFxufSAvLyBnZXREYXRhRnJvbUJ1ZmZlclxuXG4vLyBDbGVhciBtZW1vcnkgYWxsb2NhdGVkIGZvciBhcnJheSBkYXRhXG5mdW5jdGlvbiBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSBcbiAgICAgICAgc3dpdGNoKGFyZy50eXBlKSB7IC8vIHByb2Nlc3MgZWFjaCB0eXBlIG9mIGlucHV0XG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBlYWNoIG5vbi1udW1iZXIgY2FzZVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIG1vZHVsZS5fZnJlZShhcmcuZGF0YS5idWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgIH0gICAgXG59IC8vIGNsZWFyTWVtb3J5Rm9yQnVmZmVyXG5cbi8vIEV4dHJhY3QgbmV3bHkgY3JlYXRlZCBkYXRhOiBuZXcgY29sdW1uKHMpIGFyZSBjcmVhdGVkXG5mdW5jdGlvbiBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbkFyZ3MsIGFyZ3NBZnRlcldhc21DYWxsKSB7XG4gICAgLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbiAgICBjb25zdCB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwID0geyduZXdGbG9hdENvbHVtbnMnOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5fTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSBcbiAgICB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaChhcmcudHlwZSl7IC8vIFByb2Nlc3MgZWFjaCB0eXBlXG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4ocylcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgbmFtZTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWUgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gKDApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBhcmcubmFtZTtcblxuICAgICAgICAgICAgICAgIGFyZy5jb2x1bW4gPSB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lLFxuICAgICAgICAgICAgICAgICAgICBhcmdzQWZ0ZXJXYXNtQ2FsbFtpXS5hcnJheSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gW107XG4gICAgICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWVzID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrID0gMTsgayA8PSBsZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goKGspLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGVsc2UgbmFtZXMgPSBhcmcubmFtZXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lc1tqXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5c1tqXSkpO1xuXG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBjb2x1bW5zO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGkrKztcbiAgICB9XG59IC8vIGV4dHJhY3ROZXdseUNyZWF0ZWREYXRhXG5cbi8vIEdldCBvdXRwdXQgZGF0YTogb3ZlcmFsbCBvdXRwdXQgaXMgY3JlYXRlZFxuZnVuY3Rpb24gZ2V0T3V0cHV0KGZ1bmNTcGVjaWZpY2F0aW9uKSB7ICBcbiAgICBsZXQgb3V0cHV0ID0gZnVuY1NwZWNpZmljYXRpb24ub3V0cHV0O1xuICAgIFxuICAgIGNvbnN0IHR5cGVUb0RhdGFGaWVsZE1hcCA9IHsnbmV3RmxvYXRDb2x1bW5zJzogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiAnY29sdW1uJ307XG5cbiAgICBzd2l0Y2gob3V0cHV0LnR5cGUpIHtcblxuICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MVU1OOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW47XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFRBQkxFX09GX0NPTFVNTlM6XG4gICAgICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW5zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT0JKRUNUUzpcbiAgICAgICAgICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1c2ggZGF0YSBvZiB0aGUgcmVxdWlyZWQgYXJndW1lbnRzXG4gICAgICAgICAgICBmb3IobGV0IG5hbWUgb2Ygb3V0cHV0LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHNbbmFtZV07XG4gICAgICAgICAgICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ1t0eXBlVG9EYXRhRmllbGRNYXBbYXJnLnR5cGVdXSk7XG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICByZXR1cm4gYXJyYXlUb1JldHVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbn0gLy8gZ2V0T3V0cHV0XG5cbi8vIENsZWFyIG5ld2x5IGNyZWF0ZWQgZGF0YSBmaWVsZHMgKG5ldyBjb2x1bW4ocykpXG5mdW5jdGlvbiBjbGVhck5ld2x5Q3JlYXRlZERhdGEoZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7IFxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6XG4gICAgICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICAgICAgY2FzZSBET1VCTEVfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuY29sdW1uID0gbnVsbDsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufSAvLyBjbGVhck5ld2x5Q3JlYXRlZERhdGFcblxuLy8gVEhFIE1BSU4gRlVOQ1RJT046IGEgd3JhcHBlciBmb3IgQysrLWZ1bmN0aW9uIGNhbGxcbmV4cG9ydCBmdW5jdGlvbiBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgY3BwRnVuY05hbWUsIHJldHVyblR5cGUpIHtcbiAgICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGFycmF5cyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIHB1dCBkYXRhIChqdXN0IGNvbHVtbihzKSkgdG8gYWxsb2NhdGVkIGJ1ZmZlcnNcbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBDKystZnVuY3Rpb25cbiAgICBsZXQgcGFyYW1zID0gZ2V0QXJyT2ZXYXNtUGFyYW1zKGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygncGFyYW1zOicpO1xuICAgIC8vY29uc29sZS5sb2cocGFyYW1zKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzJyB0eXBlcyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgbGV0IHR5cGVzID0gZ2V0QXJyT2ZXYXNtVHlwZXMoYXJncyk7XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygndHlwZXM6Jyk7XG4gICAgLy9jb25zb2xlLmxvZyh0eXBlcyk7XG5cbiAgICAvLyBjYWxsIHdhc20tZnVuY3Rpb25cbiAgICBsZXQgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNwcEZ1bmNOYW1lLCByZXR1cm5UeXBlLCB0eXBlcywgcGFyYW1zKTtcbiAgICBcbiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7XG5cbiAgICAvLyBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgKGp1c3QgY29sdW1uKHMpKVxuICAgIGdldERhdGFGcm9tQnVmZmVyKG1vZHVsZSwgYXJncyk7ICAgICAgICBcblxuICAgIC8vIGNsZWFyIG1lbW9yeSB0aGF0IHdhcyBwcmV2aW91c2VseSBhbGxvY2F0ZWRcbiAgICBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygnZG9uZScpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0IHRoZSByZXF1aXJlZCBvdXRwdXQuXG4vLyBJdCB0YWtlcyBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZGF0YSBjb21wdXRlZFxuLy8gYW5kIGV4dHJhY3RzIHRoZSByZXF1aXJlZCByZXN1bHRzLlxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3VsdChmdW5jU3BlY2lmaWNhdGlvbiwgZGF0YUZyb21XZWJXb3JrZXIpIHtcbiAgICBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMuX2NhbGxSZXN1bHQgPSBkYXRhRnJvbVdlYldvcmtlci5jYWxsUmVzdWx0OyAgXG5cbiAgICBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMsIGRhdGFGcm9tV2ViV29ya2VyLmFyZ3MpOyAgICBcblxuICAgIGxldCBvdXRQdXQgPSBnZXRPdXRwdXQoZnVuY1NwZWNpZmljYXRpb24pO1xuXG4gICAgLy8gQmVsb3csIHdlIHJlbW92ZSBuZXdseSBjcmVhdGVkIGNvbHVtbihzKSwgd2hpY2ggYXJlIGNyZWF0ZWQgYXQgdGhlIGV4dHJhY3Rpb24tc3RlcC5cbiAgICAvLyBJdCBpcyBlc3BlY2lhbGx5IHJlcXVpcmVkLCB3aGVuIG11bHRpcGxlIGNhbGwgb2Ygd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VyLlxuICAgIGNsZWFyTmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG91dFB1dDtcbn0iXSwibmFtZXMiOlsiX3NjcmlwdERpciIsImV4cG9ydEVEQSIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInVuZGVmaW5lZCIsInJlYWR5UHJvbWlzZVJlc29sdmUiLCJyZWFkeVByb21pc2VSZWplY3QiLCJNb2R1bGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRCaW5hcnkiLCJtb2R1bGVPdmVycmlkZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJhcmd1bWVudHNfIiwiRU5WSVJPTk1FTlRfSVNfV0VCIiwid2luZG93IiwiRU5WSVJPTk1FTlRfSVNfV09SS0VSIiwiaW1wb3J0U2NyaXB0cyIsInNjcmlwdERpcmVjdG9yeSIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJzZWxmIiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInN1YnN0ciIsInJlcGxhY2UiLCJsYXN0SW5kZXhPZiIsInVybCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInJlc3BvbnNlVHlwZSIsInNlbmQiLCJVaW50OEFycmF5IiwicmVzcG9uc2UiLCJjb25zb2xlIiwibG9nIiwiYmluZCIsIndhc21CaW5hcnkiLCJ3YXNtTWVtb3J5IiwiZXJyIiwid2FybiIsIldlYkFzc2VtYmx5IiwiYWJvcnQiLCJidWZmZXIiLCJIRUFQOCIsIkhFQVBVOCIsIkhFQVAzMiIsIkhFQVBVMzIiLCJBQk9SVCIsIlVURjhEZWNvZGVyIiwiVGV4dERlY29kZXIiLCJVVEY4VG9TdHJpbmciLCJwdHIiLCJtYXhCeXRlc1RvUmVhZCIsImhlYXBPckFycmF5IiwiaWR4IiwiZW5kSWR4IiwiZW5kUHRyIiwiZGVjb2RlIiwic3ViYXJyYXkiLCJzdHIiLCJ1MCIsInUxIiwidTIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaCIsIlVURjhBcnJheVRvU3RyaW5nIiwidXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MiLCJidWYiLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJfX0FUUFJFUlVOX18iLCJfX0FUSU5JVF9fIiwiX19BVFBPU1RSVU5fXyIsInJ1bkRlcGVuZGVuY2llcyIsInJ1bkRlcGVuZGVuY3lXYXRjaGVyIiwiZGVwZW5kZW5jaWVzRnVsZmlsbGVkIiwid2hhdCIsImUiLCJSdW50aW1lRXJyb3IiLCJ3YXNtQmluYXJ5RmlsZSIsInBhdGgiLCJpc0RhdGFVUkkiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJnZXRCaW5hcnkiLCJmaWxlIiwiY2FsbFJ1bnRpbWVDYWxsYmFja3MiLCJjYWxsYmFja3MiLCJsZW5ndGgiLCJzaGlmdCIsIkV4Y2VwdGlvbkluZm8iLCJleGNQdHIiLCJ0aGlzIiwic2V0X3R5cGUiLCJ0eXBlIiwiZ2V0X3R5cGUiLCJzZXRfZGVzdHJ1Y3RvciIsImRlc3RydWN0b3IiLCJnZXRfZGVzdHJ1Y3RvciIsInNldF9yZWZjb3VudCIsInJlZmNvdW50Iiwic2V0X2NhdWdodCIsImNhdWdodCIsImdldF9jYXVnaHQiLCJzZXRfcmV0aHJvd24iLCJyZXRocm93biIsImdldF9yZXRocm93biIsImluaXQiLCJzZXRfYWRqdXN0ZWRfcHRyIiwiYWRkX3JlZiIsInZhbHVlIiwicmVsZWFzZV9yZWYiLCJwcmV2IiwiYWRqdXN0ZWRQdHIiLCJnZXRfYWRqdXN0ZWRfcHRyIiwiZ2V0X2V4Y2VwdGlvbl9wdHIiLCJfX19jeGFfaXNfcG9pbnRlcl90eXBlIiwiYWRqdXN0ZWQiLCJlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyIiwic2l6ZSIsImdyb3ciLCJieXRlTGVuZ3RoIiwiZ2V0Q0Z1bmMiLCJpZGVudCIsImNjYWxsIiwicmV0dXJuVHlwZSIsImFyZ1R5cGVzIiwiYXJncyIsIm9wdHMiLCJ0b0MiLCJyZXQiLCJsZW4iLCJvdXRQdHIiLCJtYXhCeXRlc1RvV3JpdGUiLCJoZWFwIiwib3V0SWR4IiwiaSIsInUiLCJjaGFyQ29kZUF0Iiwic3RyaW5nVG9VVEY4QXJyYXkiLCJzdHJpbmdUb1VURjgiLCJzdGFja0FsbG9jIiwiYXJyIiwiYXJyYXkiLCJzZXQiLCJ3cml0ZUFycmF5VG9NZW1vcnkiLCJmdW5jIiwiY0FyZ3MiLCJzdGFjayIsImNvbnZlcnRlciIsInN0YWNrU2F2ZSIsImFwcGx5Iiwic3RhY2tSZXN0b3JlIiwiQm9vbGVhbiIsImNvbnZlcnRSZXR1cm5WYWx1ZSIsIm9uRG9uZSIsImNhbGxlZFJ1biIsImFzbUxpYnJhcnlBcmciLCJjb25kaXRpb24iLCJsaW5lIiwiZGVzdCIsIm51bSIsImNvcHlXaXRoaW4iLCJyZXF1ZXN0ZWRTaXplIiwieCIsIm9sZFNpemUiLCJtYXhIZWFwU2l6ZSIsImN1dERvd24iLCJvdmVyR3Jvd25IZWFwU2l6ZSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJpbmZvIiwicmVjZWl2ZUluc3RhbmNlIiwiaW5zdGFuY2UiLCJtb2R1bGUiLCJjYiIsImV4cG9ydHMiLCJ1bnNoaWZ0IiwiaWQiLCJjbGVhckludGVydmFsIiwiY2FsbGJhY2siLCJyZW1vdmVSdW5EZXBlbmRlbmN5IiwicmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQiLCJyZXN1bHQiLCJpbnN0YW50aWF0ZUFycmF5QnVmZmVyIiwicmVjZWl2ZXIiLCJmZXRjaCIsInRoZW4iLCJVUkwiLCJjYXRjaCIsImJpbmFyeSIsImluc3RhbnRpYXRlIiwicmVhc29uIiwiaW5zdGFudGlhdGVTdHJlYW1pbmciLCJjcmVhdGVXYXNtIiwiYXJndW1lbnRzIiwicnVuIiwiZG9SdW4iLCJwb3N0UnVuIiwicHJlUnVuIiwic2V0VGltZW91dCIsIm51bWVyaWNBcmdzIiwiZXZlcnkiLCJydW5DYWxsZXIiLCJwb3AiLCJyZWFkeSIsImRlZmluZSIsIk5VTV9UWVBFIiwiRkxPQVRfQ09MVU1OX1RZUEUiLCJJTlRfQ09MVU1OX1RZUEUiLCJGTE9BVF9DT0xVTU5TX1RZUEUiLCJORVdfRkxPQVRfQ09MVU1OU19UWVBFIiwiSU5UX0NPTFVNTlNfVFlQRSIsIk5FV19JTlRfQ09MVU1OU19UWVBFIiwiTkVXX0ZMT0FUX0NPTFVNTl9UWVBFIiwiTkVXX0lOVF9DT0xVTU5fVFlQRSIsIklOVF9UWVBFIiwiRE9VQkxFX1RZUEUiLCJOVU1CRVIiLCJoZWFwTWFwIiwidHlwZU1hcCIsInNoaWZ0TWFwIiwiY3BwV3JhcHBlciIsImNwcEZ1bmNOYW1lIiwiaW5wdXRzIiwiYXJnIiwiZGF0YSIsIl9tYWxsb2MiLCJudW1PZlJvd3MiLCJCWVRFU19QRVJfRUxFTUVOVCIsIm51bU9mQ29sdW1ucyIsImFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyIiwibnVtT2ZCeXRlcyIsImFycmF5cyIsInB1dERhdGFUb0J1ZmZlciIsInBhcmFtcyIsInB1c2giLCJnZXRBcnJPZldhc21QYXJhbXMiLCJ0eXBlcyIsImdldEFyck9mV2FzbVR5cGVzIiwibnVtT2ZDb2xzIiwiaiIsImdldERhdGFGcm9tQnVmZmVyIiwiX2ZyZWUiLCJjbGVhck1lbW9yeUZvckJ1ZmZlciJdLCJzb3VyY2VSb290IjoiIn0=